From 6f1899b1a65fd6faa253fd1dc3624c323653f366 Mon Sep 17 00:00:00 2001 From: OmniaX-Dev Date: Tue, 31 Mar 2026 00:05:59 +0200 Subject: [PATCH 1/6] Restructured the ogfx module --- CMakeLists.txt | 23 +++-- extra/res/test.png | Bin 257325 -> 0 bytes extra/testMidiFile.mid | Bin 12799 -> 0 bytes other/build.nr | 2 +- other/create_release.sh | 11 ++- src/ogfx/Image.cpp | 34 ------- src/ogfx/{ => gui}/RawTextInput.cpp | 24 ++++- src/ogfx/{ => gui}/RawTextInput.hpp | 2 +- src/ogfx/{ => gui}/WindowBase.cpp | 26 +++++- src/ogfx/{ => gui}/WindowBase.hpp | 3 +- .../{ => gui}/WindowBaseOutputHandler.cpp | 24 ++++- .../{ => gui}/WindowBaseOutputHandler.hpp | 2 +- src/ogfx/ogfx.hpp | 35 +++++++ src/ogfx/{ => render}/BasicRenderer.cpp | 23 ++++- src/ogfx/{ => render}/BasicRenderer.hpp | 6 +- src/ogfx/{ => render}/FontUtils.cpp | 20 ++++ src/ogfx/{ => render}/FontUtils.hpp | 2 +- src/ogfx/{ => render}/PixelRenderer.cpp | 24 ++++- src/ogfx/{ => render}/PixelRenderer.hpp | 2 +- src/ogfx/resources/Image.cpp | 53 +++++++++++ src/ogfx/{ => resources}/Image.hpp | 2 +- src/ogfx/{ => utils}/Animation.cpp | 22 ++++- src/ogfx/{ => utils}/Animation.hpp | 22 ++++- src/ogfx/{ => utils}/SDLInclude.hpp | 3 + src/ostd/data/Bitfields.hpp | 1 + src/ostd/data/Types.hpp | 1 + src/ostd/utils/Async.hpp | 1 + src/ostd/utils/PathFinder.hpp | 1 + src/test.cpp | 87 +----------------- 29 files changed, 301 insertions(+), 155 deletions(-) delete mode 100644 extra/res/test.png delete mode 100644 extra/testMidiFile.mid delete mode 100644 src/ogfx/Image.cpp rename src/ogfx/{ => gui}/RawTextInput.cpp (91%) rename src/ogfx/{ => gui}/RawTextInput.hpp (99%) rename src/ogfx/{ => gui}/WindowBase.cpp (88%) rename src/ogfx/{ => gui}/WindowBase.hpp (98%) rename src/ogfx/{ => gui}/WindowBaseOutputHandler.cpp (93%) rename src/ogfx/{ => gui}/WindowBaseOutputHandler.hpp (99%) create mode 100644 src/ogfx/ogfx.hpp rename src/ogfx/{ => render}/BasicRenderer.cpp (88%) rename src/ogfx/{ => render}/BasicRenderer.hpp (96%) rename src/ogfx/{ => render}/FontUtils.cpp (87%) rename src/ogfx/{ => render}/FontUtils.hpp (98%) rename src/ogfx/{ => render}/PixelRenderer.cpp (86%) rename src/ogfx/{ => render}/PixelRenderer.hpp (98%) create mode 100644 src/ogfx/resources/Image.cpp rename src/ogfx/{ => resources}/Image.hpp (97%) rename src/ogfx/{ => utils}/Animation.cpp (69%) rename src/ogfx/{ => utils}/Animation.hpp (73%) rename src/ogfx/{ => utils}/SDLInclude.hpp (92%) diff --git a/CMakeLists.txt b/CMakeLists.txt index d1bfa6c..3650794 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,14 +79,21 @@ list(APPEND OSTD_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/ostd/utils/Time.cpp ) list(APPEND OGFX_SOURCE_FILES - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/FontUtils.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/WindowBase.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/BasicRenderer.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/RawTextInput.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/Image.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/WindowBaseOutputHandler.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/PixelRenderer.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/Animation.cpp + # gui + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/RawTextInput.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowBase.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowBaseOutputHandler.cpp + + # render + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/render/BasicRenderer.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/render/FontUtils.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/render/PixelRenderer.cpp + + # resources + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/resources/Image.cpp + + # utils + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/utils/Animation.cpp ) list(APPEND TEST_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/test.cpp diff --git a/extra/res/test.png b/extra/res/test.png deleted file mode 100644 index ad258d3509ce6408d40042f122f04a6a5ec6496c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257325 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
a?9$#3Gr|jRifCApy%nuW37k`X8vYRl%m3 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 t$*h)&e`En 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≷u7wAtB@Wf3ne8)zB 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�q`LVayGgB-M&y^U}+z%`w$cqwPi1U}sITtIO}JhU;aL5Zy$ z6o@w)Luu!qpeuZ>Z?uWZfNNt61tBV+SMD^>)#WXegmD#-6K_~o9s1#1&tfzo&wrG! zb-z0&|CT9%8GEIe(*F0Kl>|f@taNrjiuF%VP+G0^&ob??8IoWXTkAkLS~WT4D+Y~NoG zw-t6yR^yY!Q}FThr%W0=uH1l>G+2hBenVT52v1k=M&5@I2Mf4&(e9n6!EI#W41Xh! zCV1SVW9u9bYYI=o(n0UiNa-1l&rfd`L@ai`e_%2L2!rWYKw+DL&5u{#3vC%6kS+Ob zkUru&1@Powf-Y>+-$N0kfF>p=nryxcI|Wt9d@s~>!{*t^I3|_p#)1z)8(d*?PuX!? z`4%g{=rj`!4v2Fyt*P#%=op^CiH0Nit@8u>Up2x=aSQPr^93JYsI_fd?%m&zH?LYD zT~?MtcJ04yPP56ZTl_SHDq3Mxo-iT|-kV#zV(m?(A^bM%c8 z2UWc27O>&xf37fma!G`q8u7Lc;TQg1{D!+e9VFnHS9F}vgka4; z$d%QkaToJuz3e?91>T3v<%oV(+!FAj547Sr-c6Uei+x5Ba zo5R|^yIeE-_mwO()5jL4Y%>m`k^8NF2?WO9)uVh9%-9w7H!qJ#qI{R}El_SsAg_N` zU}ngU+hix{3pZ|GPz&hB(68cz-mGD|>tNq(*pXLBmzhKk?Rg)UY!~}&ESPx#mRA+P zk&N7_q6wIwI1Hm~^!U3?-6v{#?+`c`$!Fo^F8-v~5$(0IX zO-vQ^#*1)lUtW@S0@tI}Xrnk*`8q7w|0l>eC}>l7EFn^@KpWj~+Ub1lHFK6w1^9~Z zY(D8+n%klezH9%@aPaB8L=0XxDMzlOD$08Q#~Zp%S{izO$}Z>ZJcluuh-Aba_hPV= z5{Ep-b!f~r$Hm(I!fqvagR>KNwPcjzj2NoiBGW3`<2}b=zgN6vvdeU3A+TJ zrG3DduID0MBVWg(Ikr2kOgx^sogVrA?oBBftVq@FZPjBcn-5G9Y_KZzTWq?i+tgm+Kl->kVh+B2)-UIi;g)haz-c;JlH ze-up%?GhYB%+v6gGdMM?`HTby_(Z==xWzbhl3(K>R7iPMW;Y)5HjP>No#=;}$GXf_ zbpBdty$5(5Te4X^#(NX)2cKp4*>b?f2;#53#DrMZpSU*TU!?3*25= zDn6Q@h~58N%(lMldb{&BV!!VEvu~soO_Z36GH|%Y zOD?NZ!`bp6l>S^`_Rxv5T#0#aGW>-nSn23#!$Q&Bz!Pyp?|$p#e`Mg3KcgT1VO8ol zwrOK3VNegESOzCmKl+Zpm&KK~Gv_0&W04dQ=i}ljJJrieQJbuCPM^ts>;nq+l)}3{ zqC?&lb&_;PbZ){K$W-;4gcK7(Np`J7oG%Ds_SNj7e^4DQ%O&#LIg35}CuT87sDjwm zU*O(#jcR>tGI2s3r=Z4;A%ch9O1N(-NF>de4)XqF;4RMUv&Iauk8uJ=sj7iet3(qP zY|dRxdaU%eo;j{d6UsBMRr>&$CklsTyU*g41~2?ff9;mEx52+JpxboH=Hum^f|M}Q zV_%J6#b}bGBtl%D4a<@yN%b*EG06+GrIui7d+QJv%Tku3yu_h0zLhAo=RQoh^NSTT zI;v$MzK!Sy7$X*Q=kOzQ68feDi8MGeyA8NAMB`W8fBqCtq!lA>Yibm)6^Y@LN>(j% zXwdICeC+i8m1q3+=LPF#R`AoWFl&j^&-SYWAn#>06tS1q z;RMyS*CDnkpsf!xI0Y6Ia;s2R>iZUOr|$9FvlaUaRICgx=2LoTeorH!|C~v2y;gTI ztjKD+uI;?1AL%O!VH(ZTp^q%#W&vf`nWc&Wx#6R7Xu48?MsZ zzv6s(B1pUKMWRw+fbuU8!krQKJ?263B!(Y;jZcDWHa`znz}!9iR!Q*w8>&Pk?6D12 zPQT+)M1B$Z6ux#|KKAqz)=s{18;`Y9BJ?z+619BfQg$&20%5qWP8cPbx! z)_SzkBt+YA@I`t~ma4S~9&T*L6u;WcR&U!Ebzv6GrA>~^&L~ssd`itUzxI{yYv1~; zdqpWr(@Nm)D=gZTQR^UBYUYSA`WBpL-X`kEwU>n?%vufGg&@dIss#V=^f+HNZEV~L zN$BO8=mk^v-Y>mDVwY;Ual!|g=%hCGthdXu2bQM4L$|M%nTD;^j`+cOfJb#5*suW- zhk{MI2CPc7{wl{2V}s@bZ(p=b(`!05wWY%RH+6nE;H7?^&P#~@=f%11MQk{8@bZ73 zdJzGac_W&coL3W`>tbhkP3auZfY|aSci{tdQcI#Fd87~Ayr~@yBObTTKYY7{x693A z{BO=QqCl9IN)Oy#`gN!0Pxl7_?pksT;Z7KaxrC$Teq`I|VbEoJyp#i6<0fWOoDjI- z=R~xTs4>Ao`D2N)d515Z>64DVe4bA)#d5of4d;Svqv1g+JoLYa9QxVS{{P&KJ{AK1 z4Q+V`)UsvG=<30N2Nb zjl(=IOeq}X;Anb~1Jed&h^d*mAngwG@U;e;rgSOIml9J^50TKTw$d3%+;m>`6ZpL} zATNI}zvej^oeVt)d6HL7Pds z1H5PhH?gUkgh`^%MfH%Ia-;OQ4Q>#zsiZM?Lv;5Bju3pG+mm)25q$5ICqp#E|ATSr zk$wh7vHW~=Cqf>`ceOaae-I0e^R?da;y7dfVJF^KkyoCwR)oxCy)==iDm=yCx>RjB zSJ~FBwJuxZj3mPIrPupgxn(uCV46vkOXnYCcFw6mNTpoAP zJ#?=i(aRMWNVeO#i^iIpydD^#s)}AV-GQInwD99OjHM0x}L(Z|1C>v=r{rrmm(6if7 zntH{&?uULvqsWRcm(apiR10;>q6c}4u*&3?cqlw(8vdS2WOQ{dVCd#-rw}i`C}c0p zw6;RxnvMy4e&!9i5HEFgJPR6WFyt=OziY7?Ln*J4Xg zprt$-e+A~baQfQiVD2lr2_9JfygnthrGwNw zBXdZAe1#}qd1hIbWjH9f`xYjWlnJJKFITedKp4!o67qM%1o>1LQo$qX=ds%_@6`n^ zMzXO6C7U8m;f~}Gj{IVmdH2tWPdZ0G*oZZ8WY>I8y7ThwWQ(!6K77+wPr#J5g0nMF z3X!Up4nDfV{bUjv#KQ#7!#|w{t*|wd&_=2x+rTqQ^2*8=gw0hJF@OA-sv@MaMPlVy z`x8xYUWuGy+u~T1VxIdjt9+Yic^>25apB!jJ1E91N-<#J^tEx;<$lC`baL$TDyO6f zsYGqxBchEFb<1=@ zlOdcB;aR~t#X8YO9i%`q%X3M0a+^uEpGk+|UTT6N0A6jtVPomQ!_WCB->suH(4CQ_ ze@i&CEZVl^OL;v8V7NEc9?w)kY@R_AHqhrkIpU9Rn}a>zo`WsSFcS$;`oZFK_xi6( zQ!!c({Ev*=y-!Z|zSM(X4jy!37?Kkv1XY9M9l(7?6MVMQHcB^P1<4U5>T$}^+I<0Y zj9}ve_e*Et@Co@^14iXYgrRYgcY4>+Q?cthr-%6SXx9Uqk1{B9c+n2e8YuO*x>I$E zSLR;R+;*_9OW&kJm!C5?>(A;KKAvB_`?2*u3)IW6@`O~OBE<2yio3#c6Iu7%q^!_` zEMN{1oKK^k4F6;T80-rtisyHl5y(x}Efc%y(|WVcCrrrCACkMzqWy zfsfWqWG)sQjBfJ#Zit=*?gUmp3J3+b*4Y z5S`Z+Gmc>8vHLXreha{A=etGW5Qcl>|cy{xw-($tLik;Wfc-IP3BzZq`iknKii z@ELsL3t8+#FoKZ{A8d^<0JHQD$##V0TO>FU&ND{8(c^{Smuh4{6u&?D=5Kxx#Iz2R z&J_XlK+b!bIiqD#1R>GZ8B@r$Gx!dQ4XVdu+u28<)_omX6U6UJPlVU*1F`U^PqX)Z z)%$Q1Ix1Gsl5^5uO1wI+rNW%~0$#J#2{H!ZkdrwnM`D564Lf%0ProT)*E|_7rngK*8zg#7Lh_Q#QWm17rb1dO< zESc$r>owS+RH#KI?spPDHXoE4P0=O(cnhR=)WzXDeGs0RZA_Vm z6+YUFy!kR``WJfYssR}$1z`_sRy(!+JrsaXVI;6(wU{{R92!)e1lrX_1&p|B?LXw? zF@QzO6_(h)Vgc<&46D7*sXodEOle9L+Er(5%jE^Jh%h5P%c@%7S$>6?>DVJXW@gz} zU4ykl{AXfNH;PRK-z$$Mj0`$HqZ^vV#Vc8Ij z$iT#k#{Y$AHgp+l3`KCoce4&APpN}FOd=Fm4c3bn?kFH4vaA^UWI*C=Byk*{iym=7H{M`gJ*9-Lg&0xb$9gEgXG=|oF2HdcUMUye_ zsvNeVbIcwLO8Rd&JUXJ|HR{9)eYv%R>2*bHrI~z$z%URHk1_9101jn9Oa{PyrVZ>_ zidikv3UL@ZoLU0Gk>Vs+;dKYjpS;1v$ScXy4`!uNQ;}sq0ERdhczpo`_k6<7px8c< z7^71nUQ_VMvtaITM=uNE_zV>PgYjRle0sl*6}EW>g<`H_ik1KnfU*8r8(0VVtgm~? zu#bL|c@JUio@p#UBu}W`_USAsGbX_B1aIvzT~*Q7Sz8*<9y~%jaKRdiMd9GD+yp-g ziNXyM6%aN`)WOLGALWS#cO~*61~5Q0zn)uRU~_j;67gu1u)@K0pYHq)5GH;!jAo{yA8p}oBFU<2u#{y z$NtybUKs6PJUm7GdqFb)CfzVvp3t$jiMK-%VO{V@w4V_R7&cGa(qV=*z`dG+F`aYq zD02Ld8@}KN7%2CKZo;)~wR_zSt0g$4L#^n6gCY@^X7TkgE&qkT%#UXPsq+@XWocu) zx~d8Ho+4C?;;YJ4QM*Ux=9aZ)LT#t;Z{W416j&8ptZEH-z;Kqcg0(8`5+g1n=Gf(? zHgAlBtFCxq+_KCe_T2P~L|<+NMDS?4MX<#>R=Lx3?vvSLiBMcsGenrI&h#WJ_|I6} zN-2BsUjq80Y(LA7mPu#TL;N6%1?wWU{{p#F7XBHUy`f{r4NHibER{r_!{WG&?n$dA z(Oi)A_MpIHh2FS>ABCRi$m=i9ui=l_b1mS#V z9@y!CDJ|Bj?b3M6eXO3nPB&!fTVOBmqznQIp0w!g+MmQ!%up zR+VA-J!4Hk@yPX*hU#a*-DR8Nt7Iv``%?MqFpuEk{O@jHxh*|cn27Es18ZIzp z`5|`sN>V!^fLu(gQLy#6x42TSb{;Ee%*6@i-e`G07amr*7Ewu8zYf;M#ZXzL3(5a6 z8ByDPnF8jr&;7p2zUwcrLxKfJO7Va4Fki2w72UMil7t)+`ajW0qe)j_wt{K>SJFdF zw{SnGBrl)ZAG{-PCDOgiWv2;L^_TqC)a8L}Tm|POLY0#$8l4yUB41o?#^HqXDIZ52 zXtD6&&RicSC;%F%?6%+&K}v{d$&OV>#N^MXd96Lsz9F&x6*p0Ba(3ALmL)Cn@NT|T z#f~1ck{)v^yhC{U2g(*#DU7^f_Q3iF!3Vyfx9am17MFSb+D6b6dJfErWg*hxMH)VM zckq}H_+qwW!9wN^2b4)==C(`Ah#IW^=e2-zdXHYeammNXq|*n4q0$xLM71;XiA zLe=9+Z`#J?9Jw%;4Md@Cl1W&HIYAdp6Fhlr^ zWCB+u*nC{l{gKY(>#%ndMKGiHe!|ZlCfrZ^D7%)d0-4)LDO2lXXt61it6eZEGn~+r^L6m||{e$tZhfWAL)UeGf$893H*_ig| zXJ2wj_dYIrW0j=(jaW3-O-VJr0?q1eLa?zzyw(9eleZCX3d-ssoN>m5DSCzX?Ibm^ zRP80T{TykiK9+{(-MyXDwX2)7(>t?Yx4^C(f9L%-{Dd!kuo7-}9*8dvls+nf@cJX7 zd>bp_Fddu~x1{2AZmp| zg4tE=(jYBcc9gB*tmE*NME+n9oWXctxB2z>r6Zey9H^r`U6kW|&VJD;w=N?H3@&Qm z56|vCo69F`oRxaZ&xf3C44^ec%;Yo^d5Lg-QLtNl?{UCfJ9v92&5?X-_!+veLZ+?Y zmiyNAV3L{phGz64#5ftmTr~A&XK>&{1c!=y3zRyac8asST5#DosU7u`bdh4via`s< z(nNdcnGexZKU?-ib;DGepj7MLN_fFlxjjd5`wQuYF^|zs$Hg=X$(oFh zrM5d5Zr*JEEvoRWgUzj7%<(Kd&%VQR6mCJ%-WKNb`*7s6N;ty#5Y>~FTBjjE>+DmQ z-7y10q8G?Yqz4SY#NwkKYC1n-{^8oiHk}e5a=3?J|Et)+Yvil@3lyzHaI%_4awf}Lzsgb{tKsGT+5 zS1#ip6_xj?X!njiW_Ms{KOE_Qwi!jJC9GrK>0}H)k39)|dmcN*Tj+Bo97AX4h;ZjQmf-M+)cwm7@fRMZ1tyf1}x`-kV5!Df#WFTCj zxq_7MS$FgBQ2hjpI^D`+voYJ^Y(5aHJi(`ru83&6S9rbjL+qG0WT?usCiX@cV-C!} zHXlvQGi5YtLVim1w)9moo*@}dJ-T?g!1_r(CNDl5n9a}Ym@N-q7N*bn?zLh>SnPo_ z(*3a{xNb~Wny0=E3CjDXX=i)jCbd#H`wKxnu5=t;XnM+4swbW#>;tc z!^KCx1zXG-Al-!r9XFvvRU>Orln9u%9BUBrw2Ck&p~pM9=n&jbH+AqWxMWrzU45DP zC^r5SVv$p=rD{VG|VOHeun$N86FC{ zdPQ)QD}t+UaZlbH6F&V(ip7ir-uy9G{;K0GaWgzW!)mqbPBl$K$cvp(j^7Y{CJ-?W zpX_6_#_xy0Hk~TSE4io%{BL-0TA>YLNt$w^!DQ8Q%Fs4U9KTnByY;J6nxWW({Iz@j z=t|-uo{JY3yZ0M`#HW#`u6_!xkKOuw@?m+_n z3%S#`2jZ-d2sDF96}=v{ko^VsYYeMr2^Rk8kE>y$Wi3u~Fwn!56{B=zmQ+XN4Cqlh zBEJ9r(8@(vp40bRCl^@yJjC?(vVvX@s``br87^nn@|Ztn2Tu>>9*&Z9iyVM@wzhT- z9n4(``}gdFd=&9q&%-L$zS|Su1uy>bI2fQ-Aft4x#Q4xIz-S8)$Gq;)bCJfgux|mq2BNu#g?6u9G|o`i;14k{{l!M^M>(2ao%$-2OEPuVZpwTtTy@OfGwRP`W|g@r7UYi}6hodqw5wuorJ z1a3y;--el?aijDC1H_P7F5(*T1MeQF3u$R?z9cOUg?_pDBoPYgreC+>>n|^R$O1AD zPErDeSGY`e7}6S$r~v1J`ZOc+5220&{u3*D7cDcQI3wJ@I0kUXaJZF zw9j&pF@TrTEXQNs8+tSrrFnjqKV`^mu6s}z*E)1M13dOjsyJjycQv&7sbxHr=dKfp zq|R|*d7gj+Ls`U)$81M#*QANXh$W-F<|9T>c4+^q-|8DZN6Qp&SHDLz2pb_;t zd*nM;8)*0IEA8&6owx?50TS&|ysyS2X@*oL-&8SsqbXeDV7)B^D+#jx!DSsVfrL}U zMYkk|fD5cnDY5~?fyJE>*K3)}po#Hgvwbf1d98*t>AApMyBau+Xo@|W*#oepMj zysM65tTyOmH6!ss2@7aA807j3B`Yxx+nlG)wc~@*kp{z3Ai|gPyTYrhCGXco^Rt(~ z<2eQ8pu>XMpb+-SRq(z#uew$$d}Y3oX#eZ0_hzUl7Sk46@YJwyKCmf}-Q=Xh7$N-8 z=h%Zmb`EG3j`lgUo5u-p`alY(jJNbo_95F9q{bTr<@7;-Dd3cF4=wOc=%X75I#44K zYtUi|jbxzr16JjU#xH{qWH9MH>`m40t}Gz7iafG;SDWpi=Zj%KLQfpWf_uo=ky@5} zV3Gd~${<1k)qmlZIEHQTc@N#kh<=s-E^J9QNmtVMd06_jvHAxP4&5SM)Z8yPQFC~7 z@A@5EJIFrwpjQw+Mw}I3!X`??a7Qd7EMALXxT%<^G5AVl|Eg70c4!Z&`XN-mF1nsE z7u0lM;j8O@&kJW~sp!>%tA2v`m7OJIb06L?ev}A92!EYpU*L%3k0#f{80RUBgAD^8 z;Q|`MN23TFbmcYZYB00L1Y@4j^gB>XuCKJ4R91`oDL)ZIDA=9)sr)oxl!obMa!_Kl zLGYmdwxafD)7d4_F zx8-Fz5NB{4q2q-j2gKH=MbLE7(M=0pcqOapFgzVjk&uRZcOW#q93CDxW0vsuA08z3 zL&wAtn&Y-0&V#A5>ecHX&20_u9(+6Ha{7J-?1FS~B%R){K1bECa6*9VP^a$5z*mOQ zHfgIc$l)F(tsSpsL@zJOi|61-#xlFx5>_3Q?T2U5>=-@KSNjwd8YFHkSOg!TCY0c= z^>x35O=y^-31=7(uW!yD{n?|vgN4&#_MRn0Qck3s!_G9KaBqeqdn%UFeBROP=9Se@ ziN|6Mw*12`Qx-H=k$VhZNR=4fRM?P;Dd8=b_>WyRC+Iwt%Coy6ZVUPET~}H9Ou0OJ zTd#*u9THH3>Z>~TJe{+e1J#0rp)5R2D{d3sheB{P+pEN^lDXQg5Y)gi=N68d#iz} zuM4E7NvVPVGQ)3*>j%D6E=^30L#UNfK#)W!y zmor^RQX>3b&0HokpqNlk3aGP(!HTjG8^o6Cj-2Gy^R9O*28La`ZEC-w{(J?yM=6lJ zVxO*lQPP&=p4^GY_&3}7f9Aj* ztYW(VU8SSO1h?*+LbwK;F?h)QzlJ2#wz-5&MK$VTq$J`otewyco`Fs>)7?Vfcpqb? z>%7VThq&kk&z4A^z5~ll*Toq(A0r79MQ2j+C(r$z8|Q>(LmL~a*3$W5cV~9vzKdPi zztwI>BkaNE5m9@i;vLpYHhPj!C|~^o9P4;l@HlihCkx14igq?gdo|%fme5F>EiU>W zp3cLc>ObD&XWF}vdF(wZdmb}XMwvxMlw^k}<5(dLt0?5qva=)M9HUSfsf>(sNKwW) zsB;cyeDC*nACG(g0O#R+&*%I8yvOVPdY)F4{Loibr@;*ymxs_~`}{6I+>iClY@dte7ud`-aQ@FOy@dV8%$K{4nKZwg17b z#b!MOwW`p3h8n{O6W)+`^9bqgVj3@D6n@945nV z7si%-Gved-VTnCqzTmeB(d7bcG02LJ=b!2!ik$eFwe>?d(2Ts2B>)NtP$Hoh=5RFVRVJ$c7x*p>2Q@p)0YP6^S*YmOdmNb2U z=0)v(4FNuasi6#L$__qmXoB#@04Fby3>rLE)B%n_;-hZIi6TJt%s=2{(23${QCac4 zCqQ-pNuL%k9h~l3uIYHN#=9AVu>Co+(_54y=B7i>0Mo%jQ;L4vutE7t1xO9IKT3O5 z9Ra0;OFKYTCkyDHsNi?)-AI&lG#9-W~8=5#%IkVB_{ zB+w{I3ifG!isgj#GzOc0CwVE@YOU1ysIQmF=HYTsn$dI#obfiGK^SKtn)*C7b66h; zjXEH_q<`21qB)jPD*exw3Eu{hkVt{k7o3mrlzX=+w_yFM&q1oaT>F%9PlbL%N+%@+ zmivj3^8n<*qxpyNhQ7472|L4N zl4rCFT_`Qpl~H!gEiU;kqzSyGGf}57K9-g16VXj~1Ld_Z#;~}cFEvMj=Yw(3Fj+`f zCjMl{d7?Q-LdGTrfuW} z)KA8%?f$KHQA>ad2COt>ifLxPr$F<@GU7AZPGFJ^D2_rW-+4Y&mk#I+QgG=qi(H^I zOe1#vax`j3I}j=_2Y-J7 zlI_msdOYGtv%7Ee=|Q#W-`YES&O}k4!6o3>Qg9rUb1+CQ@&}8ixLuOc3fL(yA6|~Q z2hL@W{l*%NqU+Xh- zE+_Z%;H7sutXdzP)Z+T=udKTtqGOygt4+gh99y%7-MHGxWCz&n^bCqu-(k!Pz}!2~L)&TF7r0 z_)(VM@={mU+DQdwKlJC-BKLIAf^y~z^3w%KNO$T%?fF0`35$doxHK{o5fQJ+G1<}0 zbVZSyr*?C+kW;8Z-M^${!+-Dx3_7@IuY8pWb|&;2{w${k;g_Co!iaqM`kM95UK~H) zSNVn+kH!nBG1o;m=-MOwuA&yAKfp+IKoaL=Ee^2&MPA#4`JS9KNJ4V9gSt1IDa<#5iZ)0j_iv6 z|6LAVR`NansWp2Ksk(oF6)k``5dgeZRjYp^^k@qZuQ0Kh{6*zhIIkE5j&Ye{b!IOw z0gIgJK!$?go}m6;*`$xq!mobBo0c(`Y)<;XqKbm>4cwLA&p~edf%M!PEaeR|dsn(^ zL}67My8ZOuAjy9YJ)R2h;<2;&0n|mn;5Ryg4is+seY;`hbFKXEup|=lYZ(q6 zIQhd5Op8HVuP0C>kZsQzOiC3?3KunBEwP96;Llw{Yz#@&L8M<^+5Pz|=tmE0 zSZ-#)P^cF*u-BVoDtrKS=a*yA<#`>RaJsa1M8T@`61OZvXT5j)B!ACanML5-0vwZ8 zM-I{8Q9QDK2(+%x7T{Z@`SJ9m{9-f=P{Kv*#n*wrhhcua6B_^}Sfqcx zY?cI3t&CS>pGqe7ZVxhdp$>zm`&rykBRFfJ-?hBO-^8P2LC>`857{LNs|f#6Eyz4w zwB}hbYU6__$AZQejr?;8&=iM^CAuDe<=aXohRYI{*TUyxYtfuD-ZI>kU2$&L8Ei7z z`6Dg%4l~}`1*ghyN)ZC2KnMj`D@EU~0ukeTV511fi*Dt&>=qu%OL*nRKb_-k7~^~D z9Mdn?4QLu*pCpGWKT=Q%5#$S-IH%`%iL*L z>;+XA(b_(;i$J&`3ug_9vYtZ64f4Y==bth6s;kuT@JvsZ5guOkvZX7#E;XQd{WF-NH5+EI(|V>Fom#I{kORk##v zA5t`Ha+*3n4#_qw$K29c4K-D!i>?U4=htAViOra4midW*+%Z;S?p_GrTGkC3w+GZT z^WXDg2r)FtCtS2a;OU7gB!jsoYSf}lu(RNrZ4oOebM}nL6xzW4=5_Jce&K7*oS`52 zrb|2%79zfdRlQ{I^%3wFzO&ILUZ1*`@a5IYQ49)|CsVcyvn(gbayI8-Ozs-&OcWrx zgsqMgOIif~XAR9p+TqxK=m$cHGP3MR{WJ_%hI%Jy{LVAByZ~YMVpKdGd@4dGRbBr? z?|M~`@UfCCy>xqRxS_mQhZ3@1UQ8j8b!x2Ks)6MV&DFuZAS;pSN>wC z_x)I?+ZW`>YczKmHp6u$1M%bd5)Q}>8W&$0JcCG15Sh#`ggoJ2B4{j;HVpr^{fZQM z9kCdQ$&Bn)2Orq3^%fxS1vj@)Ue{~jMsC{q1@h9w*S_k;{K*suXWIgL4dF{!{AB1w zuv56^Nz_SULrv8IZL2Zk^5C^SPdb^r8wKw0*g6m-ts@bZD9&$1* zzH?_FV(REaI3fz*V+S}5Z}cYYEm=+OK+uuV;C|B+P;-2yBR+VbAHWD&(N1Z=rlHq( zG8l)9?J6t|?5Nhs$Ly|1SRPaxraoo{*RPL^8q#sMPv$ym)C@oPB$n3e93V@2aRXw~ zbzC;{1=ud(7ezB|`YXnV(lMO^45m&4^7Vch6XVzqWC&QDxql=1|NMb$|G*M%hgQI7 zYrJdv^CZia%a17kc=kmmMkwsj_X4F7%Ic0eEw6`z=%AXDr14uB0IG_6)oc@K)`cn# z0Q_9Yeqb7?2m%LuGqx}}aORP|G0Hvd&z9YiRP0>wBn!mB{1zLc$sBVvCo);Y$ z364HU;$^ylQ8i(Z<>?Q+gaWdggdl%i{^#(jDy%*{Jp*$?lmVEz-&2?I!F*7F)5Krn zGAHV{U`HET>ui8=$ya8KO|(o^;Q9ME+9Ufiw3_pl7w%;WTx$i!GwLvxU3Tc|2*|4d zz%Y%8xkLYHGQ})r#v88lJzR{}H>Iyh#R5HfZGrrhteIwJQ^6y1x1ZobsKiOuy{C{I zZpg2w`wMpd+uo(jw$SejtKP-GkB{#P_E2zfeOjGoS=KobsbQG>l_69=WeflV0x6$i zFh?`J=wKk|*KKQ!tCwPUzZY-Kdz3ER+qiu9{FR4!pFdc1Vv)@`@B<~04_8I4r(^q| z!`l~n0s<2PN(8>{OD!$v^{ks23Zz(M_$%ukZf~n30vf$Dr2giZ=XAO|$8u9t6R1&f zYF9P5do4(0gu917q5acN`NoX`EOlhr3yUR){iFLL@(a)VgR zEPu+qVX^x4LS{T)Ge$x(ycu29C(%a<4fEGVO+sa75_y~g4Sf=uyBr*&KdY+b7 z&!JGu7Z*u0hNzVLd+Wvj^2cLj|`wlMe$PVw&y$@snSN$gXqv5GipUDf#%rAaF z7reX;_yhyJ28_W}OVg3nae6NWWFKdZ=3x%4r+$O4g{8-St1Ezga8Zns&bw4dF~Sdv zNRAXqx}aDDS#d~b=$%~<=&c%_O!3zIRB}WEqR-e71s4i4=J<>Ebrwk^0Y=*m!9>tB z_vs)eBbC|qC5Z34*F6gM#dVD~Ah{KA)fl?LKppZLq6g67UeCvB)g4n9Wv!dQH8`DQ z+e`)fqab=^GAo5`7LZ2(EItZO{dd#*v|cox)p#fP@QlAzob5Ya*Y87?f4qH~qK>L- zr5rfi0KbHX5}M`6$=(1<@kKWtW706$pfT5-4hX&JKMuJE&TR$Om4*f3y#TBccc@GG zIuV2fy&8^1g@A&_^`#^4Z~E_M2+#H{(fLxjAn&8|0iAN_X;#x+{{>GKp?x?-cof4G z?eJfNUI%2eYrHYJpGvT6X7cas3yfzKGw5bqw!X4#E~%*Bmz3?UOdJJgXiw}i)NPC` zzzOs8W73&ujoW9yhd9QNu!>%vSD`SFqbZjJaxj_6z^TK}qz1Hm?qjH0#*kkuV3X+? z6LhZl1*h~+gd`i@@YWa5?mdT`6ZB;6!lJy6yyo$|9U=yw@(_R~j?6r+eq3AoYP=!0 zfoFSx=e?MryUL6S|C`tETDLr*?nfZKb=~F#>i%3WZ&HouVXYKS5Jh2FZ{Bb8FH!A! z(=CDT8OFhUZhzRI(@N>v6FYLIHu^6KX_aCcpH9`RG7;>3r@Wrmd&L6C3@BE1R`g8j zdI^UBQxYZW#;e=oLMFksvoQ*_%G?KDzW{-c77AdtWwzJkSw3PYM~NfOJX#AKG(oxVV6a#ghm$ zIUG9wB-NV79r%R*g}F5d*sU^9#3h>eH#C0$P{)u8C|BClqj96adGp|sw(6v8w(r`x z2B-)F!;j^jb*_*hQ-!B9a+4skS>hhqT~HKwwAbEPTH_3s6IsXRbPYX`X+2Pj@NfpKVx<@paMP<^+afy?ol)Q(C{edN#8*C$+%45v5bUmOXi zaTy36`lClf`IH=pr%V(*cLTC5uS1U1Anw)(HQz-hiVNTD>)m6N(?y90bEbJQ>&Yxq9?hyfi>lIMUZD|d{?KAk`R=6=p| zoZ9Sz|BS$!?0FmxHp*q@`I~1D{Q@dtPVYpMIJ%8$eZA__zQkdlh+g~a0sDmMw&CPZrB4J zydZ_1Ax=C`J>5383el)9swRYk8IypO^);D6xJar{9S*}bhs8WCCP>~T8R;_tR63?! zHZ#k2ZEtWcMdpb|+sBmue2ZS&8wAib*e^ePhb)ATy6y(B-J$l4vO5U*C!{h(3;F@@ zFkxMm-$3Y*F77l;|2!B|>z?Drvmf;mgc6K;?yU=SWY^VJbAZpM!~xihjj16g8Y{pr z-tOnEXX}}rd-;CsdTMc%O(1keAw9$Bk6eQ+CupT<*bM0U4wo6y zfTn~{IND?u0PcPOF!Bx~#haLR%eZwOHA@WgTn@jBWMQ6nUJ!i{?tmEw>jOkT$j*b5 zKZRAI0|7wXJng?&B(TejA^&UKrIJ7ijQv5(p?(^{Qe>CCu;PB>hj$vOsb*D{xk8B? z6clkw3kE3BcOcOBbXr2<1baSdnvA0ypykEC70pp&kQ)~iUMkN8As;jiD(y;7Sn zpx|Guc6-B#?TV!7%+Isk|E}g#>SZzt7`et<-n`iz2;@$SK?~9TSt?Me+A4Kz?2K{Z$4OSb7&w`7c zH#rY}pcOO~R)vlLvM=vKc{(O8GSJtTFGOxDZyn zKshEAhR0Mxh%KcH_Anc#;@0$pDgC57ag3ho{JNyn&WW9WHf{jdF)qW=rVs>x2Gata zI>to5uU|g^z*j(|3B70?#uVrW_{lrEjDgeqJIWQ|ola9|LV($<`75t2QwJNE45LG+ z+1eU7{mnz-#eQv#~;Lh&te(}QbW25kX+`0A*hIsfQ zhTYCT3uYv7^gY0}hEdFHZXyEyw`&pOg^o^tTObl4%F0t!M7enQBaNKjwk4`Z3~hHU z;;xb&XeA6-P{7rQC(bhaJN&aFqC4W>e*t<~{U8s1PihVzRw63hJ=|q}x7{Ca2-Y>- zLQa#-W`jb1e$>7>eI|AfBHsL4e+<=ZQ`u-%)E@unRp_ZSe2}F(PR9$L0;6~02@1Yc zM+5`I4ccK@&7R-i<#uP~agz0pcPU>E`Q;+U0u;0=*gZO7id)RljPt<91jk5OT5u^4 z-&_$N#esp)0r_!=2^Wj|SW?$xEzdLLzn4@kcB_u1B)AC(tEHseYak%{ zmeQdq!d5gOOMvBkWIf`O04jPM&zc`+1xG)&u`3Pgy+6HREVNxXrYV{TXs3W1`*?nzdF7Hs@HXK^bS4f+h1*%n4{iUG#Dt~TpRDmzHuUwtsdnqo~ zIU?y07i011Ye3U*6-Z}dkl0Y(1B}4h$xOY=yp*t8CydICe(k(b-8FkzkmJf(U|tiF96vIMR-AYTGIYiJyf7OpJum6@a9WZu3u~Ea{jA| zy!gC!3~jAFB^%Ne{v&Yy^vMT2BSuC~c_sw%_1B3}=dm9r>3|=R=KT?qdmMPV&-7~% z*i=%LFxWO!m8oEl5~5T0AYNa}*bUuBSZ%uOl{SMz$^t%WMH&`nnUlp#e!e=!V=h^r z6W=D#;50&3pR55&lQM~f$g2G}^>w&aA_cSERey%vX+B+#boSOAk8SMl>84x?-JjBEvYX(baIH zkX6i~@|jViL`iXg@d{jJc1DbCfLD;zbZXw2PXX3Azp4XLCmDX4>fMIRJR&zjIb{g= z*-epR$^o>EZB)fL049SZmDQWfSFL{YI3RdW(ZucfluX=haYe||T%_>D1=(7h`pxg19K<+S+$C;vB$;D z9*5KHkO1dZtqMa4He-jmM;EamfOdhWvnGAAj>D0@B~~|}p+ZwlKY2*kC8CgZ-(kTf z^kY29Jub%-EkJ7{l7;l?IItn@oPZJZyF)%-x;YFu+{9*IJ2-S(>Qnrg5EI7?<2$hy zq&StMo!N`gttfq-*0kwn%riuPwV~;GGNCRt*#0=t93;0+8NulM%{w4N5Dk8!rmulC zB~Cz|z6S!QF8psWQsTLG|NCEKdef6>($%Vs8f12(g)J0S#MGXOih9dRPY#L!-~Lhx zu*d!lW7_~V04qyPcfji>LCd$EuzcRqsK*r!~*m=RjET0O=_7uX_RDu*`EBa5># z(Zf}*>YOU~Zc%RO`aa`UVD7}w{zEXF1qJ=C5F)=M!}+Xjg}};{nhhKeVN*X0&~bzK zWjhPhh*O~@OX z+YX~?0yCPT43gsbr*6QTwy)mhTdA%R-49IK2{YeVX+F_^(9dR+eE(g_>)}s#1q%jo zS!K)AuD-!F@r2J!av2QgD5c2dJrA>KftE&nC;Aut{9CZ{4$Z#AO^r}IQ_zyZ8z$mmOW{^1GT)eT zxP~Io(Jl_VLg=@R7Q{I#J`3rs-j~$<&~}z)K(AB(ICiDuKokK~tn6{IZVRx)?X?EQ zdT#&w6{+%A_jb1QK-CY6sdz8+)mczu9n3SD@{kBmO4TEJf(GqF8*@XUdvFSiu+rhp zE$arVTh?VB51GYeP>P(1++K2T(lZukIOLLV!I#u&tgRyZ!rLsFd1u%3U&)(HY&V6O zI!JXDKcEVm`??F}3k)KYI!q}nTf~<6t%=Kn=HU@vwB}f-W1CdYi-xzSRz$2~vvX6< z75qHTU}A~g8ILSD^Zro)y(d77ie%S45;HR?TdWYIldqGMxbCsi2~B@io;V0Tyo|Xv7j@a63zd#pRF|TXPnD%Dqdu1JD@zJ5sQC zzW$f_9412-A9L)Q|DG3n*t49|LN?a03AR??+|_-iokBLc>N=o52ar_uJ7IKZA0=NN zzV@h2`@wH)JZsI=HG96A(-#~TZqF7dOwMJbhD+1&iiHfC2?83Pa*8|D=p&0E#wqEL zk|V$}7MQ)vzcqW*E9s3*FjAT)LTXgCPP&unmk5Y0voXi33|Czh0Dz5xK_Vg0M5est zdw|y*&+jFARW`FCdzf36jXen6`gJD;{1uIaUZdm_f-hi-X>{&!2qt~2>2Xs1IK)Z; zCH^;5N2*E23(z?ndVUzIiqZ84CS1sS$_gx0zjE_Rzc-lw9v;MKyOPmg0?CBK^4HIB z+(hB_%(+eoNig^wwjf8z1ES=My?IGs8^hrZ zNE3iyFv{MxaW5$s(xOLF2b8-+&8u>8lD-5z1v)Dy07sA^cY>1{yEHBxr=v`+jj`}+ zN6Qq{L1oZm!pe`Cue>sJw4yy_@G{G1unLF)!C5W(K`pFT0giw{Y$6kaBD!1PlNUkyyjeI+wbAEPuLTGuw*H0ytSk-*kF%5r80)nN8`pP|rQs4td(rzM2t;qsGy zIQT94sq2PnIQ1+W&td*IMl{ zb|!tRINCYrpdDzJ5SRG87OvUMRS+DdM4kNJ;XJA&!E^J8+Sy|Jls~o{0T?j;XYrMh z*mw^*;wZ^(bY`JiO1P2@d>jOAv6vFDHu1m8H(yvU%E$HKkXXFJ%hT}{)E9SD5F?NJ zHo;WT(Y>_S#0~o3y*S-m4WnTcBbGMLGs;T7rALe>OT|B@YIe8m{uGs3H$Z*A3u>X} z4+r&G=~y;M5Mh+c8{!%_j#$<7W6sEtGlvk6lU~7?lZEJFTA2(Tb3c=SiZ&Z~L$ugv zF$`};UwU)sNZYLk2vb?D-<~H@C;oP$Z!t0U*Dzw95B`a&ZMIwZSnnK>E##du9}X3< z-zF*Bvj{JrZl*GsdK6Y9F>kIXkByOyJk0F{OUnS>nO}79I32Nft3u{;0;=ViCN2N= zeW>zT*ocg(fW+6Cp+nd_P6VZneO&CPDN;B_fzxfcBYSgP+IL;@QqJz*_)oG&k2>xu zJQ1++E|gJ*YhuKv4gf=NUJ6DsUiUfDAT35=e@94o5wPP}_7h~xTiKnsc+X|X`mDdy z?4`0SG&YMlUo{n!WURn>847vJ7v1!8r`L$<^n{Gc(OY?rz73A85Mz$N&^cVkhNe7` ziniV!?8fINRA_QX-UM)p$=7*9M9tFls;zabDfU7t*023!99nNoRcLhovuU+ZMueuu zrH$j4z;%7VtPnB-cDRSe0wo!M$!JRWBYqk5=~%GWgX{;m6z}hDFZf@x5GCuMDzp^g zx!Vp<+2@jr3mZM7*8y;(kE?|EkH%eMB3}b0e^`z9PVV#Yp%BZA_3CCj$Fr8_b%FiJ z^e`NHp&VVrph0xRF!wr9E>^EIIu69rQvjzzbkj0UFOE$>ZmvrVb7+E8qxQ2^{@ z^AdO&ITkVk+}YLFHRSInRG<2ZLH7fEs-t1}H5wl-@s_crglwkGaLOS~XwVQ3lKCJj zed)d9*>!o2Blfu3tg*o?TZWkSYG6;7 zy6Dy4nA>#aTXAb#b>ryjG#$~AxhA-_RpjctQ(cbChRT}^u!MAHZ@R1 zXjp|&tR^V+b0F;*!C==I?{4F}1N+w`ydqQXC*~^#fA_NU_1{W>pz-G?I$O+Z zkS-NjI`hV4S8>|I>gCP6W;TXN($P@*H+&f`W?9!Wmihq#-qt+dMm{(Ng0w&f1- z`LW+K7dvD5%*0!nx=)yE`NX#wF*tW->1t#}Hwz`pK@I*+@BF+!pEQhi=7>I#k9#Nw z{xl6;cYA?k9}pb2aZp>p^!^FNuhQ8~r&Gr5$g&ZG*=0rnWZcPqph+->ScU5d@Y>6k zg9qWTR;t4Ds%?m82GC394`H){`w z964e3;&eM7^jMcQz{7XpBM0StJxTcH6O+G5P5vW<$QFoc$u#MTJJNr;6qUH^%*>uK**{}jNmvGvrVGgHr^f&HRjX$IrI{I0|_A0aQC(p`|hx3=J zN7XJ^KK-ZD0PSpH6K%OZ6FqXgkpx(l0aX=&JFi@JKmS!m5B1VciJPL+=&!SazN*au zp0j{w0KglP8K0eN)=)N}JBK;Z57Z}^eOf!8vBxwy3{A>ddwZP6smoqzHRd$2xr+w? z4)yd}31vFcs7)<1;G2lfLi-;->^KL^PxeK+17A3HFIYB%3iniR+QMN)Uq{LhZ`yf+ z;ar|gC-KfQ@*AMjrH#pgxbr1W#2Y$q{*X4y+=@@XjF{aUw#2k0s~@~cU;D>5y;w#o z7f$TB@cElx)b&INCUl}A(rm^`0c=b0)T%$ISzl2K1N0fGcOs?<&~!4tDjAqu!FV}e z_8|lC26fS8yT5h&C>38H+lA%YJ(CJhzBJTiVqFB`h~!6B3_9+_xWO>F5<#WUlWr$UfQeP$^xyJvuF2gr35x9u_;N1H z$siiTx+h`v5F}izB;wvB@0*RD*}Ry1MNNS0F^_G8&+PP^{{|edt5*u)pzCh}i9GuZ zvx+s%Ih>)RkIT(8p?sW;{~zPAry;U}&Ca2t$#pzSnOiY-lU{VF)_$b*Bkh4`+=*`N z$HTGVQw=Y{*)Cl^E<*Y$uK+2xjcN3~EX83@S<63?t2xxZ$)b5A1bZk(OW zoEe=})VzPGp>g^pjsu8*5q$e&!Um}tJJf;8%?(NWwxN^2vm=h6o>Qnh9cUuEyS6LO z5%=|m1g^J4b`19l~$lEk*6&fhYf;{2Vi*KjB%;!1OzfR{#<#pv)4a_+H-3&RCt zV#bm$pJr5@gk<8_?r=wSmn`Q1;+7V#_wV0aPb;Gp;!D3-_GInZbI(vo|0O<3cn9Q0?^1(DmYRiXgV!ksz%`=WuYI5-sI4QfcfiEjYkPyEY$ zIo0I9mvCRtKg>Hbgtz%5!N?GT&0olKXcQ)g^K!jnh*2hPm;UN9%Ujv3>KJ}L6477V z9`Jxvzznt*8Bt5e;#sIbGp`r-Wh6vQ4?F!(HOHm}rG&j4Kvc|Amjg8iZ{zGYES`K% zX=F~Cwx=KbqNn}M9$BRR!Gb#oCgXA%(7%!?zjZd< zC$3a@Azu?(&dEMY!FA*PrrjB(Og~E=qW<*Pj|$Y!X}G_oFbv_$H=x*|@m`U(qRmuQ zGTOH7E0>pbNzLqVH|rCn1YAfyv6uV27=x#4H*cTFQPv=?_3)#{xH`0m@xKlvX&VnO zhE38uY0QOXBi+#bqe>7%j;jlOrYym`qvLn}RZZT#DO&!%y2GRF`N!5qq0KpI>#tt4x*|#{lvSCrGTg=U|y(sqtN8Q;G`ptOV(*Mesj!DG>Rq4P= zLsc#@OCZ z^Ames&-iytm+Zi%V1koh9mJwsF_!X3?sh3PAHjf7H%$8~s^|RaZY>8KYdOOSZ|^mE z+RFv4QZS;7wjcse7+^g8dEV`BTdLmcyQqLR5&fNoWamPZhs%q{ek(o}Fn{sebvO{= ztZfMYR3J$NF$*)z|FUPRL2ci?VZB+(V2(ZF4YLA{(bv7f7hJQ!ao{~blAHeQU^*RS za6KC23F=I1ka5{-XK$lrg)HtegQI_G_rG2f9PGWl!FCbDP3Bc9UzpLFo?>rK)?%0p z9T?f7_mXLsJZyB?F#~RLH+fm!mc!DG=mvqdlev7>9V{LY03#`dUNOg+Je)1V|I<9h(Hu%4qe7awN`<&Qp8=ISrjpkKaNU^LSGXH>GBb!wJe zQv01Ges@Oq8@wXVthAmi?0y+NG;?Abuh4C6Y53(AQ^3LS%TM!K=HA7~vN0~BGX7@h zX8(yVvm+5Mu#IXCE}u;B@;{k9{eTw%?;DzQZqcJU;hdL!$-%Y(QlS@LrpXU4`*qJHG?hWtKdvP zZnvQ8OZDAQX@|c0b~c~>KJ=a8)t2kJBNXg%Pb_NfxH>DecEdTR{|9K|a~!R)6THT% zCqGOeVQo+A-9gRa54uhu5A#Qv4SW}0*SIW|Njf9DEKH4YP4-~T&ke3vie&Wg6Sf?8 zejRQ67T|RVvb<&8)sdf+qvnr7Y<3D6y2woW()74yF?Y&{ioYFys+RqOs=>_Pr}-DR z*LTS!NbvPryS1C*>1DHDuamp39I1zn?sr;@>YCZjsOrSu$)Xo8?70o5g&^62jR_JS zMlT#Ord7-3MYE^Pt%Qi83d61`*$Ni$w6!?I<34NhK6|y^%*%+>Q@RQav#^Nkerti3 zGiN`gDSN@C1B&MG#?6t&{ey<4pWGp<&3xZuEoQX>R6R5B_>r zj*o^q{R-v^wav;s%Ku~f8P8XlW9R5?hA`)l*dH1=;c#1xRTf0kCY!c>Zv4J?wBdxZ z6T91TP{5CpfOy=HIJh`Gw#yj|v(Y*iTxg*m&N`<5luJ4|d+|@Q z0=@C(6q{+Er`-MpTlYn{er%dJAPx3otc(eM%WrDGlP}NV zjwrm601afe0;itz-0K(xp-o1`9rMw`>DnPuv+>Y05hQYJ3H8X?0t&R(?{=;Y!ct2D z)T=1m;(? z<$aNe+y~q%L~YDJykTSaiISTXJMO5-I@h|!DT#0T9QTj`oSULK7C5)xwy1TeZjgbH z)03(WRATLKFK4nron77OcDjdFK}x#*Z_eVj*)&2Vou%G@)Het#ndU0yyy+^SYe9E@ zqi+3>r9?8x$YjAP^3)%wJbCuqZ#3@Y_L=IhfwL^G>9iSLgW6h{#j%rJ_?Q^oIicGKy$pCdtVG^l!4$98^s@{`_-~$`s;&3po==ESYJTr4uU9btsyCb|DwdM?1L_P~By&cgOvw_5ozrKKzPKp84_XoU;V#Y;8RlGg z-HDc5i~7?nM1QKugL^Bv{-=&_y2O3tN@1yoWo>Ze=>5JK^M!YXEw;Z;LyD%X@)pDU zFs0M~L5V-(#>|s5*~hk~1g4vIKQqS@kzIT-cq7gDg4UUbZynn^bNxdFBfcD56oNL{D<=qNFUN`7_&l?YiegWX@#DT& zhiT9W<&q$4urNgqUBCGNB=`E;SEy56rj>PonGsViWQa!v$6*)$xZ5Yf<;5vMI*LFQ z-rOnU;4pph!J-YYF7A;9GMQ;P$r)t6&~zkiaQ^!C)}j#0_WMk5^cZo!>*UNOnx*Sk zsetSlVKCsw8-XvVPts>G}7IGV1pFG^PsZnc!MEc>e2 zZu{C#zRX}W-{Ljkk(L_wGa>PI3#n6@G@j%8LEW(ra~sA2FQ2A7YD>>$F~zV5Vl6Z&MHpjQs{IQ89!CutVJSyD8olkb8G*%}SY2ljt^;eKt<3CpzKG?!&+ns; z73TL45&Imx;^NY0K2_HDvbXMcCF4Glwu6B+1>5^VtRg1@Hn~c%9J$i{RNadJ3cEgk z74$81JO6O}TpR6;0Wq+b9kVgT`Hz)xXMfY^UrCcH4X49}uNU{)`7$3oN zIbn_7BX&1Ojk1}~DingMcLjK=9=Y=VTH4>5(<19!ib}1o)GIBe*r%1QK>O*meGl1~ z9MXnMTogyOBqBDPsd^2vd87QP2$s9+^u$bE%4Hv-&eK0xTon_+f6L9m9CruE3K(y{ z-Ih@vbqbcmF%LZWOH&TfS!XXs7)NQ=HZ0?8GZ<%AiCQaU3_E5fye{iW^p|z{@0*n&Y|%lNd6!{9HYPwB~ohk#s_zvc&5I$drHP>SoYx!JjYgx*xJ{m&Q)_zs+)*sDEv zfDT!A`o^uVy{+6(rS(~4Gfgju71ADMU@sl_yK@-P9E9hYzDPlpx(U9q zwNCK_%^t-6WS@uI2vz;*g~cH?{3raB2!Pz2O+OfyK$nLQdz!vGhxg2+v@l$%8v^wl zMJmg$Y?6!%)`bp957K)Jp(+3^^^FZ^}Qh~)*`MTP#kDh~Ra z%-%Me9lVsNPJI#cwf(KkOM{<^$0)9`Z1(Sx%CCdaGhxcl^)T1UHUJ6Q!<-SqKQLEX zPc)9bZdAzxkPgp!hf15RF_>uwR&(8m-k&bDv*|5ZBIZuFfQI0Huewe94NYq)2LH1{ z2nX5;rm>PmL!{yJR5%tRO*p4RHu9`1A2;#^O<#ruHq z9qEYf;n^cI z56O=-d1*`IyI@f3IL3Nyv2nUcl4V`U^+RphtWaq7<<&|q^T=-};ye`@9^5T40#nJM5Ti#8;O zQ!r1`f9R8qpZdo?*~D>~B-m1LoaoZ}H6vL(9g~rDm#vd9e-qDX{)(bGS%tH|j!x@z z4Wf%c9#x)vfA;i1{W7-D^1s{QYS)u~fD6U%YSRAzsx)@2OoS1f?w7%wS?|G}Vx>32({%sN zD;Ry?gtggft=}1;P80xzvH*dr>=PCHl!>{Y&Ws777CEgDq>glKkqS~e6=Bjpl$P)(E}xY$3VZO2r^i`}>*cL6GJjU&ik3kT+c~gWLhqiN?o&O&(xg@yi=Fo(AaFh5m?Fxxx|Hdpc)ROmb5#m> zr~_j93SfYJA^1gjb$%ZVSLeQyPQ4n#t+%s`h>?3qU6861DI?r zoba);CQmX zj8Oc}?mQnYkC-A9$Jib&DeuO+mo~+o9Yvu@JBnkHbm?eLk9aXLY|wKdu>J#Ea`Ug` zX+Q|aa}L;e5%qcda1GPcPYlBKa`$-XnT7+ZuW zL{iAUD>7rrzAJ>xC?RFZ5+O$PLb62Jm$5|IMRxN%&(8V2KcCn8{0HZ{&M$MhTrbHa6RPRVQ5edzS!@NC}8Hy0WXD=a_Gt3*-KwptnYhGL~>=sT?U!`9=@R5jEDuxDl^zNQZ__H8_Ii*)zTS3lsLJ_%{bu z=XO&PD0sD{ia45dS&;nA%)J}&D3c;)1gn-@e)i=`VX>OgV}3I9=g5aInN*UQisM9G z%Efy-4g2G+U!8npb{og}?}}JfUf5z0LP!n2pJeVb$@uWD8>q4jaqMNM{pNnnysHQP zL-ZG)#gM>i)5B2G{q}LK-l!kWXoEcTv(I~N$Y!N+Le66CH^Wx*u(q@G)z=oQ&!33L zfUzPJ<%}Omcs!(I{G@30?EE}Y^$=mIy2@EbQuf#HDu8@x4kBV)@v=em90fHxiO2|( z!qBYDFb}p9rQ_LBpf{1t=&}3WDL@1ftr8!PsjbGO+JatXo;KnB|BczLH zXnN4V6+LJiGRRn6phy9eEWVh(=%!V_l6~hj$dp$6OBfzB*kC(cFxZ=jF{e`7}!OB z^fVN9+#GPg%`|=8=8fHSf7 zPL2g?<9@b!y~ni1{heQHqenG1xZfI3$%OSb?L?$TI2N+RhAURj`Vgutmy5(6u4R6i z6+eUtXSH5w4=S|I?K%qKeU#5P#PAZ4$s^U&R$&vWQ3wAKP<{eNF*&^+a?_3T-9>}Z zsIK*fH}n)bMw$xFy8|j-Yzg!(l7fI@jOn0gN zbhL~KIMEex@Ipc(yRY7rUX8-F^FpplZH+w#Rpmn`?^u5oPI1Zm#9sb8t3%q1H;?XW zC-hh~3Ls!OzNkjd2+?(~-@dzVN9zrM2>&WW*qg)h;8NDY7ab%xMJgNdHqF#g+F<=1 zxO!g0FN`kr-T=b!mtLiiqaOGv68zia;$3tFZ4$l-K4mtJZ6ziH9>~i^O9sj84oxtL zZrA95^@?9{16d}R!YC^B;(^s;>SbFH@==av+WpYdWgzvHU7zG*an>0?`p1LqUj zwY0bAVeHEs4paQAEPffa?$_uIRe%}J?P^axPR?St3Ua7pmTGby+M<|-wDfEMoXQkHi&aN?|=JxHE#~Ip&!r1eb0|8Dax99U`Sy>_7B%Y^?1g< zu9iyZ(_oeh?y3yc9VFG($k+_qNs6lb1FgW0&m)aN*Lhl%J>2BP8qN5PVN?HThpq4~ z!QeS=YB3$haj1_tI)M|8J>NmeZhf3Pe}FL$DmBMxl_W$h*84`H+qU$N`!%F4^F^& zz0GjX=eW&%I!}I3euf~VCT(#sJa48Z*=b_^IO8??F80!S;j?Adt!9o3_*uonqbm1n zUzvnXRIS3%$DFs5F2cy~`BzOuWoNj5ES)*sbqExUG0V_Vge%y+G9{Oo z=EV=UkBcR$uN(u^K?k;+m}gP(rXb24cjs_JqxMuE-t3buNP3h1zMU%AvVV3thX45Z zX>O=f*SOYeXkgPAE+rGN|I}un`*8HFrmYCMsTQz(DxIm5clq}Mh}LP-*IDG&+*~O5 zFu&ZeLA*Fe7e&$HH`|VC%CviNuJr67921`de;;{|OyKVb%#z=qwPq1*)Wc*k+({C5 zzM0N6qH5h`)1&-Gzbgu|#AZ*-o)h{UZ~C=JU>O$G-V<0nrA=~cgpi=TFz(_7yO+ea z`aQ3#wSkM_RVpk)f7q5&SK&3#sSu}QEp6w%SgL@nHS`#D6B8W~I0pi`+(ahTymMb- zohrriB0pIoh{-e~*tf9w^mictB|bbWJ{(e(iN+*F zg)(yMG#RYo8Tn>~9oz4o`7UN*J134lgz2=T)B@_icC$qfZ3MM&spyYL`Qlo=Rf7zs zFH;KVoWam);7`Vb38?kqh}c+&VYGe&dB;xBmzi(Wo%fZ+p!UR!4l3TlrThH)+WA{P zgcql6Yj<~^xQ}hI9Uki6pbys}dCL4iQp)SDG)$XBQul4k+G(L*r6qz)+`_pg<$E}R zR0tN5g(xUWCDB)JvaIh6v!MpwkK1!yMS@b&Bxj!Wtzac5A_P|e4D6^gl{J>?JknBM z3`^PrgvW8Tz*``s=>&LZ)~8*5`j;)n1}| zoNKc(tqPJBey_I{a2>EdoTP5k&2Q>?crLx8Evc*ZtEly$WBd$pg@kc{ava!R`uXMR3l~BK9gTcLSNVx&x09MMx$1*s`~_bG#(ng? zO>q?Q+_TLjt1Zjt0osw72%+W8S`(*#fs<#j{!VOH zAMNL?bNy)c-%q-$q*eHcCJq?&+F|3EdWZ1LJIOrXURnxGR(*XlOr;9giI}qkmwWrT zSH>wBknRhuhnnSpB-A%yq~_+Wm#i0U$MhoSk%@AAI#2JU+^tL1Z*lfyfe1uM;jyrX z$ry5&13J>|;u(}mhbm^tGdgym<@sFhWbsqS(#>^qRF&>{n{53+ZpS5k;7a>1*Xue& zqYl+mRF$eEWD*=Q38JJZBfYOUSvr$82sR#g=rQIJ5tT}``)1J*pndc;r1)db?HucweAh(dj}5^VUL1D zc!wUJ()%@~uh+(gq&D5J-4K5tStw+5G`@em!9SHcX%t(MLlX;5HD5Ph+1I?qbw?;p zz>LM?r@CMF^!PqKz4_=4r#8ivmhu-yB{W~*vuN6NXPx^s9244HBW!#lOws-5 zcFPB|4q>y`Jf!$3fqc0YJ9%Y~l)Bw_1tZ=m45><<*?VMx7nXHBt{ME@^CX{yRO*N; ztbk7v^&dSj%dJ&+-?yvrZ1P#}DSN!T%acuh=$6b(TQXzWH&-S6oeoEkZH1Q(KkM9~ zqP~s~HOawixU+ zziTjNIK3Vc_j#XZcf<4?#h2fl&PE{^ zOWD_!p+Rh0ob%y+S8ts}-WAF0zYTlP~d#yhr!v>edL4Zv?}ry(Tsbo+se7#q2j-64|^dNI#U)?Nw}g zuYNkjvQDY&f>YeY=EcXTGRsw_E0m4&04G9ivQw5S?a=P&p4Php@6oZdv1c8e(UBZ) z$6J^uam;)HESDaB@r1mN8gIY!6c>3i;Ap~ptiB!>?Z1fGBF)MR!DScueIeDRv#e}n zPQk-YG)-u?>*88|+XfBZz;91F#!$*(O^f$7z$=bK)&a+V1mWv|4w^gX?4{>tK|kPh zb|m`6npWm1eFlSb|E^fhuJLY!~WRY>ZKRw;jssy2g~(fV2wcn{?2+^W~QY~5}pY)2`Y zXMN0jfhN;P(J3!b|NO^Gop)@u7bF`*od8OniZocCi&>V^F({p6&4{+Y%j3Ye;M79{ z<=mL?RP1APTQvR8Hm?3Y{|>67=Ihiy6`LRw4q42o11AKK=FJq5@A*Ay?i31tPZ0SD zAAA1v^12@bCC={(1f-~gvHJx`7EO1GM}fM}l}<$Or_`>6`hxs1e7*2bj6YtR(~z`H z1j*@{P=%rGdreZ2nD2wvx#2B+6*5M!c#CLHEz=#D`6g(kj`*8=bnY*AZ)fsm+jA=N zDyZW}F95cg_U{LpH`86Jh@N~Q5E5?Y0J&pRH&s*)JS;!LMUjEq;VrTAzgCouD53vo zLYlb!db}wh5SrkrwM^}_-hP*YCj*;b?*`r9n6 z*e1wbRLH4(%oaG>A_t)y`uSo=ij8?)OX64(f76BwF7k(2cVm zJWz|NZV2C>8RJPltKoa4;TG`jsny%3Z(gLVv3nAlq5kO8T5g>K5Esbq=}N_ul6m)k zo4K9Kb|~O1mWGWiO6kXAJN4}1+dT!Z?XW!ouAFI@#@OJkPepE|9;#c=U>GU|$712q zf?GJAOiTlc!M-!a);~IGVBvkr)Uh8g)fsnS$1cJ?ks49|Rd5Gx{RLo*HgSwY-CKd7 zUYI1W=cC6I##)3R(&W_Ckv$|4lm+l#G`_6=AgHPYpuY6OuT;*M zKW}exKPf9#pY7t(q0d`lPKSW}ASg;Q>8^1s`X4Aai>I9I=dr-0t#|l0HP}a9FTTGi z0Tr|VGYfi~<}COHX}JSs#_I$s(VVr6e%!E?Ia^YKfgI$46Ij-w3Zm2Wi)$S}rMv_0 z9B*>dm0en=&4*Ga>?y(Iw)IF>k)XV1Uh6MyCWk0{&H`xtmI8TOmGO zI}9Xf8by5sF2-!l%Fqx6Ua&0Cjz{EW-jA4xRpkBOxntGIT;sAYdBgIat5lq{mVu@w z#KCfCy9Li&V%NzHxiM#xL2LVQv}BMyy=z}ch6^Q-wZ}q-2SivPRiHrK0+S~o>B9P- zQHcRb7CzmiV!uVr?zng5Dy&~O={2%nTh$e24RE3k+DsDgNeAj7h)yh=@pt_koP^Vb zk=w+e{Qo%@{&u<}`Yxp9f|*Fm@SV#f31M4D1_Ar$9%me&a)#V&ujKG|E+_ApAP?Sg z|4%Re{z^B71yZV)6IlfE_(ss)qCYxJlWBhdeFn{@wS8WRcQ>M5G!zzn*om4OHe=9} zw|x=ojpwMJ_@7b!+XX{qBS?WPI<2Dzf0=d;6iPOBfLcCgur2n0_TahlIGtp*vr$g( z`3Y>Hql!-c~Q5H!}r&Xl|^_+>0dg(Y8ZCvx+^mEmf5Ho699ikyN(la^Gd?JVup2PN&e2=*D zmsXXgWm?Ywe;4}iu6Cvq;Utw|eZlxFs2c73@>cc1p477)dLNjSej%0(kWAp>8yXImHu;G4WW2;(`%e0i}(AAO-So59^3vcy}NZ zAOif~uh}YslhPM5VUah78$li9l%HOt$!->yd@bg`T7v?=mW#>~Rc1j@{{6at_xWFs z{rBYm|6lq4%xHXl^o)|J#pKCBBQ; z|2n98z)S56btDi-3rYbV#gA&N%&nL^^DAB_!Xy8+N_7~{3qdZU$`1x&P`?FY1S`Qs z0+s_#Jj_QNOg5@EPVBy0Z$1BYVeOR6LTyC*UrQ0v&2+?!a@9drd5Ohb;?>Dz6!`K8 zRgzA-g@rIt8m7K?PEybK3@x8b2AjZ&YC)7g3+&%((67IY%Bd6c2d5Zget8h^r=8=T z0dE!);zj-i7Ra?91KJOp!E^LM&TEigb?)Bao!L?Up2!B5n8ytN?m>L5HrUlDc>rVz zaikXrN9lxW#rR%`sYdDK>d|19a+&b&UQ-%g$C7Z2?LY@g2jR26pnKG~!b07b8-rof ziT{5+Z&;TF^TL4o22cyKmV&%ObS#kCbj0U>7^v=Q0A|S>ZJS6k8bU+4C=e5Up%NLy zXj_U=iy6Gx8a5D7rAqbhMK;fC0duOWZf_F`gxJ#wOo4pGvUeei&QZYSz|J2uum)#z zRJaWuaSFk`_Zg_9 z=2s1{TKW!}sm8PiX3%Wmb9m4lN-Ll`Q~db$LW&j%rBBpx(pVE$AY}g~Ai-)ir-$#Ma))v_2ezwn<_v~k&@WN=&(L>b zi-@?-4zWF!t0!Wy)Zli3D^ZbESs;KVsMTr+F^NO@)7|eob-I<$<9TqCKe>1CYFK>@L6rotZoco-V=VE(g}Pv?>SvNE5!Bhi(U;+NSw^jM$M)lcOW0LR;;2jo^gmmEo=C>U zBKz0Y-s5+cg$gv5x9SDwuSDLy_m{9i2%_hVHDYg6Mr3c!7+-MH1l6V-ov2AyP!jpR z(S!@5XGk_py`!*)QX8kkg8mLrQx_XAGZF_iqK!eIh4cr>3!MzLe{!StaSFS0Jn=J* zo+8b^g+ug@vK7>+HpPs%haM<4MKxZ)c;NrDT2M1m%Dv{$a(2Q^5?A1PLhqdYeZ1VV z_^YdHFD?*Y%9R?5uRzWUENKBLAM%4GjZ02vOKvqE+cq*0-{a!(Dh)CUVxc3>*BOT= zL_#yvQeyB|F1u{w*mP;{z~QBXbeB@nL<;2NH>u;T=p;IQ@u?-})*hUxHPK`c2nVCw z{4u_2F}{r7&+dF^HEpgr@YQ8PP+quFlPbYr{HqjpAVilY^DxfRW{~1b|&c58*#vulAinPV3igADT z8K8y&f!~BrXXx|F|8qqn;Ty zs!OZ&$!Q17VkvDM3Nk{yofyX=83yUcD6BWA-W5og8(<;-XD6I}2wGuG&=WEEj2~R=jr7jqKQ*vB9ZKV@Ms= zS!AJx_+Ba!kgcS9(5B~Oym9RRO)UM_kbv*ia6w`sWL6j!F>nT?RK=6UVKMA*=p+)B z=;sO+kyvGV;xltueOtiUKRGuV=G!l9I3eNhK{`KzxAFaWe&N9{)hKx$OtJ>H7AMeo zC~(Z_9G-EScusQBC+qWp;N=5P=<(zzyD=Mem)Bl>OX)cp6WdB?h8eMK5r`f&y$agA zRQGdGh6Ei~JRipt#@8pO2`WK*kQ{{%qvcS1@{GNMNp0KPa#@eZI6~i>HdN2?3Zty( zM(opBogcumK+Kgv#!JyvrN1Ua8OtmU(uH7r!`$R%=nbr2e@v*2^SSVMem8jpMc#5Y zXtrqY3FyftOaf`uxHh14eh&vGv^v_=jsT6xwx~$w+=PS__E#&j-(vyhoJy`A3(F6>c?x zz1Aywgy&QnQSKEy;C0J86gcnW05d(Jfbso|*x%V=KebZ$p9P)YBFoRkGQhX*3|OR}CJErnDW*5GX-;om_8Vtx`H;*7kwYJ5 zrDW7G$v8mvGav`7#rT_coFw0Q0M0>5YYRI_(hDKGm(5VPjOU2<=2^U@Q+;v z1Yoo{xYK1lhE0u)3n{3K$S(j&YNa*dfo2Pr@PJa@}WKIpyNql5^yLbgU7jq3<%wfqIkm%yh9Ht-Sw=@AUS#AJxKjlKEs9{E$cksQP_N#Sm0TBM@_0P4nKPnyqUYw9Exlf=h zKmm)4^@moNiZMcF1{i3>J5H*C(7$~Ndd_VIoFqBJE2CGgx{Q3H$nE-#2#M5yv1|nNj_QIz zeA~;^Z9r`iXz)F(Z+CvAmB{QSX(((2Nmec{)rih6u@i_<>wb`3u&wBZDPjEnW@wpt z``zU<`rQLIYyex?MN$(~3S;bbW)n2AkZF=lCa+agPG?HrjrpRgqdpz7i{ow5X+w=_ zp=&s6q3W}=m3gBZ$1Q4|oEhr1{6wt(_~m|VeL+_59Fo6wPG052RLQDi!x4 zO8(cSGc!W`@f)$~Be8eD44oJ4oaGzGEC;Y^zm&IRdbO7LrJPj z%Q5_&vwzISzWTD~om?FdkXdDhh13FflTVd;e9S_`I38P5Dn8tF1y+=w;_{e&>rbo(p!<6CAuTyeWzi&? z?Erk0*>UKzwGSJbAi!Sz`Jd-lFfZN65Aw`=foBnCEwC&`(!w6Mu|uA?0n(Yw=|OZD z<8yjepZMGW9}85~We@127J;#Rkq0i$F%NNK^}v|xU>kbO3>!Jl>ipJTW)A84SKwBk~96HB)yrV3{hqrIdZ*$S&ap3pASqr;s4{Uo>@=pNS+fim6V<2X`WAu*wLCBti4#y#Pa%*$>-gNmKyZsT)$n19XWByMCJM?^X~GJNwz zXvYN}>>syP(BB2vK_DQY(@9>N4Tom&y-gjvepDcRa{)$V31Z;f6HU5_6tsJ44va~2DC=VM9Y6b3POx#+CpRleln{eZ2f9)Ez`w$lSnxyML&TUUmm8$d!cEMp3C$5mZ;WCCkZ3KpGvCI)6S?yj_mlD-$J&M|y7Uf#rF@uZ)Rb`zVjj(l`N{h8ZssHF+?$poqOn zxOZL@KI@x6*Hy?HV0C@=ZbVRl^mIbTCRwUIn;s(XG+6*oo&@?RuQy!lKyAo>GR_{m z9!|0#@ne+x0HIjwT6VwWpvw3r;HAo3J;etw`cZI7$37XS0T$^(@OQr$yr3j1adGux zruI~%SEu`2>?wznwD4g7tLtjMK#WJcLSHb~ZrHgs>B*=5Jj*>kAWJtlUz-9I=@7VH zKGIO{RCofg>`|^??a7T7gX~_#To)I-X9;zhcm}9I&yKQx6TlIFsD>#Ej1dL#8VA5+ zoy218yJi&6uzE;Nrm(-#hiVbel3}5uozEP z6hHq4>6BCuNwvaJ-jsd&{5|Ca1u~Uk_I7{_yPR|}0gd0JzG0v=h+O*%r%3wMcgdv! zI$zwViz`GwNMs}D$1b$t>z(qN=7e9ZC@t)&Q>_n+)s)tGteR%X@!8Wj`PS+TZEU4K z7lZ^%tzYt?p?Xc3{%B`M@5xAxiUh?|){K+Iy<4xuivQVhS-v*iW*D)_P(jbZ_GNgD zd9uT@@^wT0X_qyH+kL;DjAm-_bdnSnXw*Fhq$;3lR+mV7vsSX0WYsYsdU!sq7P#&T zjI4J!Xi2!|i-i4oFypSeb6M&u=hTfe-CD|@0UtGha7Tyfb|Nf94Apq$H;G0nVsOdn z#R&APG}}o7{(x;Qe%W#6WA&{5#Fen@)r6YbK>1pHNksuu$dRMPJKN+uZEv;XSrC5`uAcyWpiXn#La@qR-tPUm7KBZo(=>*M_DBo#A3=8Bt&k047L#3LPKR0b zzRtHBN*nlm12QhP;8a#QGP%Oly$sc^Mk>9S7CZ) zgvrNdyW!VE&CY8IYXRt$+!DFG)ZtlX zxTlrya5gF;sS@HOxOBq%o@AfzS*lCHO$Ke(JII*lwPyQ=sWUV52X6xxR?sF{Q_KT2 zV=st+;@T|egx1~sW-m)lIrWf4b!lI{p;A+&Um&1zfO~}OG1_R=Ozi%YY70cr?C)Oe z%s4;)AR(+ZmXJ{-MG!-t3=9|gxI#7#?mQ(FOx9Y;Xhw7dZ7BVcG5tLroy1)1yoW0+ z>Ivwy74LD5;zces{8FzrUE%jAMmewWA6I6PO?7nM;ex@iBsG7d8~yWo4p(gSYZEj5 zyn;*^wPka(&>@L?$>KAPXwyX49%^0zCq=@0y#_)G+i z{Fo{t2vOU*=2B6&3-R5k1MFmdpCm#Q?f>tm)!<|T%^TAA7O$7c{b4~IbJ|0E3l~3( zRVmn!A-GA#B`@VynvQoif8ZK*`L8U8UW3K&0OJ&u_qQl-g=od41RBlWwP|~h6oaUh zrf$59A^uFHr{v7JO3zJ&(u|rG@JX9bm5(y{<8HoD?O6?i*E`NL91iu&1iD>|Ljaua zn~ud}Q!T3|-KxiF1#FJJj6b|PMFZpu21sFndIWlzum`Qi>inCFU7(F|@df$9GlI)87ool0+qWv_GKU58U#7X1$>!82$UVurVxF;^QOs)lI$IVv{aLikOwrZ*cyh;$~`zG9uG}Itn+^J74KMQ{^0lZh_P@ zgpVZ?GE_?I4}(uUqz)WQiA4y6?M#=A5Te{nYEZk)gh$IGEyw+`!PCqr1gE-NddJmA zwLW`5V!=xgd@1t~lSMTz?%u{E;mj-Aj4W9oJBb=cebA#BWJc5N(1_5EQDKX99$5+&gqt?$d^VPKE+^XOLk6N!;CgM*u&0cp>B-L7mK`W zqI$oEu3YdPNk5u0lDG=82XT|)@Kg_4GB=#dh(RQp!KJdAeHhk3>Xuio|FedhIc*%b z7ZkW#LVm)aK{s^sD#g?9;6tZBH#R#_Tx;Q8bOct=t&Pnsy*nG<$N__u`siNo*IouUcTf z3dtBP&azE)-G8vUOzW%Tn`H$ZaSQHlU1hrJnjZfN0f>|}E>SNA=A1ccW0=e*@`qHl z1B&cP*WCL1#QT$~-1%xh?;(XIWFL<;D3JCd?5IknD4+c`PMVpgr&7v!I_*N}qJ%4` zBv&SW)Z^8nkyc-Fp8vUMEYm4i;iHb93deJ;IBf+`H(qecDr~l1raEUXi@}oQFyLYl zC=nD`KZhq5Yx}e5^}c^Y{Pmc_&1tS>c#H62?{1|y(zck%@O(^diS#qpLBSL~HF*bp zg)M6%c(vlawi?Wv7_nd1@C6j%8RU`+V-Cq!*bDQndKhq3hEqe3v{yF3s8=)?!Y~Q z;fDL~rxtYFED{KdlXnRlMf4n)5BfSlcthfUHj>)*p+kYh20eig1iQmfT3m)%rYE-N zp<_0TQC-59z8|>A$uLEH3iT0>s$Whlo~J&3iCyYdeV`2Lf9@HrBIoa`t2@3h`d+Ih zue&^m0GJ&RP940v5C7oUvf$n3kl7LV46tMM$(E>bKQmUcztKrxfQw$HL&p)soi++K znn8_(sPqLB-U3+HS>tcpAqg&;66V<tWY*Vh_K%XI*SlOJ3K<^< z9|!q<|8QR^yzysjW=;0}gv5lzz)H8_qd=70Mc-#LN>7O;cEgVu*!-RVORlqeWPqtZ zf#XDaUw~`1p7L6L;kSbGwSn!CyY?GbGt4;Jd=gb7Jm3A$7x{Dl8^!U(IJa7z^fh~^ z`J+9cnNz9|($?_HJZyx5i~6)B6=*G9Z?E%=!m{1&6Re9oN3HwB~#R;4*N zw4nAEZN)Ti1v)e)en*`qpFc1LULuRn!6ex%%_hjmdU?sK9<|oWV*_tTet6wOJV1=6 zaE3NxhcMTNf|`?&WS&qDrtgnE^jAWZ%dBBO7D8M5v~bOj^L570AV|Y_%gEv;DRbwG z%mz;RumOe7$uyeh)J$(OQI6A^g`n5{W8!}M^Y~{l?WyFf6E3(Hat$fF_EF?dKPZe| zK4jrlk~WNZeffJY*9x+U;TVMWKg$+{+-Cv3;<}kgx!-5s0aQ&J`Rfwnn4HC)y9yPI3tuV~G#KMcp~P=vO8k^vfdgG!c-tu}h=4)VYu z(7G+Fvbtn0YC$bfM`K)ny`c}zPkZom4VO`g4Y}rJk@H2sx@Tk1 zY1+XEGUC=(HuQirG3%ANNB)CXb2;4_czhAnt^BGj%6KiO=beaK8-X9&p~CHUgUIjc z8_~z~jLMU7Ot8%@O%1k)OOr;wb#+(`*s85q!Er5jBw0Pq-n0;k+W)NDS357aVu_^q zEXYVyD48CgvIs$P+^C_wCt@y@Q;7C#D2y-`@zR19HO>^1*WqoM(75k(=KQVQ^jJt&9Hf!2goamhW_N**HT ziLcXZctkv!6cS4Kfw9U!n<2{YlCL!}1eM4;2oa`3GMZPlkZ>$_ksXLoE-!!ceMfO5(%75Pa9@n>o8X6! z)@bM#3Lkm17LCuu-!@GC636(bWwAWG3RH~zXF5&NKVtu<=CY!*+U|LCYuxwxorc@; z8W$QgV{-Q`W%y`v7-(hM+mnrvYz1i2Icvq5Z|&!>dvDopMKftO2Oi*zK;#egrXSui ztm-Vi@)}&X?B2W4#dzJh7i-<)AM&8oJ0W2_4t>%0cOIU zLp|^biMGSs$~cx&PagiJAB#{M?Cpn7!hKeK&G~)5fO*)|a5H+4u&hRl^I2hpRy%Go zhsiCtFW}(i6)|nEo&(HVvF2sz;d;y?Use|&Xyx~;aDGFBnhU_Lbn!L&0?mOOMq~*{ z3IocPI|+n`I`}xMTC1P%pgZ>dwW)WfcLx9Aa(bpJadVKn+UQZb&xqPMrN;t>DWDzI zCO?aU{faRiB=;wI3*?ptb4MaLpqOEBcy_W4%r<{t;D(IhV;xNmGdAC{jFKJ^j} z7ObA14+sNmc!xU~ng6hVe6|2PUEXTox~UoelFF8HTebvwFQK5weMLCY-hh<%n!1{) zfV(hFek2EBb;IsQmt>}GE{H6=t@ng48y*TWjw{KZ3y&+$2&Cn@&}~++9vYcxp@c2m zfT?`EZY0I$j;XKfiJO(ktE2c6Nl+)#omWnb0Y^JCQbatOP;oYNMX7NC3D&b(xRzM7j$O z%$AY?Pr@|$&Av~KT7I#~b|-rY@BA@H|KBcjD*g3?mgxi~cx1ZNdp1aw{*486FfwaD zEbG93Cp;=lE5=fjxe=xlA+^vCQ(2)UUw1Y3X5tQ^e);qMY>6I8PNc)G=(*uIh3@Zi zKyH{n_P4eemI1lp9PS35rzumnhFM|LW{X1$8}E@}9HYj*jT=rE8aEX2;e1#;8Eq8& z7FEFyIgp&etuNy1APFJDcLNx)=c5ebl9WY=nBajY7CEnO9Km|_d=1Q>#QxSSifmbx zzoc&dq@5iODZ<9orF}i9 z{NDAKpA{>A|KTot%dQb^%W98`xfuD^^-%p8@a;_X;*A%}Si$%>KEA64=~zFFm(fGn zXzkAXItg0MCC}arSZBU$G4a5pBJGtA8;s;GDcXOUEgIfsl&QHXV4l9w;z=~N@tr_W z)h+_HdOum%sq6(M7qRMBcz;8K!3&UkD`uo$AusydH*WrZZlq?(E65KRq8=3b{Sdjo z{A|}SY4_yepigu;5F)y@fBC4tZ%_8Qb^){V2tM%3p_c9^2&+{^UpvTe&-f#XD9;Y} z%tCKkHobF8d5m6;*WGh{vcz%H#`?DmVe9ZK-qp82O;qT4aIP7Jpfe2O!%)3sH8V~PT^8syp?bqO9M4i% z597{KBF3Yw4oNhyrN5buHcX9@QMv{6%0up@MtE1%YCo64l6=JI4z51KEOddE@wJD6 zVli98sE^W@8jq>h9j~tlZaYX;8BTcT!y-(T-pH+7`)Y}F zs)UUL!kz=-)wbt-<6tlQiZzs+<%wbH3#wDu>7K3n5o?0h4a*=xuqbh)vAsd9_=iJ4 zPn(jgCiX*DGaOoDCRnT&5G6tD`zQ($fac5m1bonS#dDg)-g>4AtD{MhLnHvOpr$Vt zqkJM138J;Hw*H29*m~^DhH?TSb_b!8`PxAe@+%QK&fJ~p(wm%RG?z$5^&GpV8rOxQXksHE9-%CxZxR&B6WAGL{3T zh~NUWxwM{qfjcKtS2S2)@fdFVvMBimKIXvB6%)$@d&AmdNK<-|4fC|<9+6CVm02v8ulD6^s=R=+NTg8tA>f zqNoFis9+wm2+_ekwXunvxX&0p1!pgI@x^RDoz5Uu5W&Q8?oavy9 zrl`aNzY&$Urah#%(BnKb>%A3PmePdgG!=XhRME#_S*be2@5kGo@ap34Am-lAyR4y) z%B>3YWlEYk)uD(90K{FO!?fXDYbEJ z0O}m*M?J;_ycMl`#h4ky?C31ec$vyx;)1e%v@T~sZFM|;N={;i=kcdI6=Z5Aj$tc@ zZ^n>I`oXfM&~{-Jk8mdsF!HHnm70fgg^pvwz;YKRYdQJuuQeRq%VWD$SC5N-QQOrF z?v5<`U8>&a`$#dBerr1MOF;?k6A!Is=z;#eEFE3HJm7~qMx83l3~#; z_ml%`Gj=YY(`wG92tR8Vt!D6JrXBeDk2c<`WP|$khmSk87+!6gvdqsn;zZnLU9oQs z#$G5%#)BGAg)qo`UAOtZINy=i(zhU_x{GgBe(WEQa{J|bZH(M*%R#3G^IM5PyL|L1 z#fSaF5>-pgsbjJDN)ns7r0Vn*{Wt7M`Vv@HDK0ScMBci}EWLl<^bM8pVXfi+#nN@h zQ}zGfq_RIMBO@X6+LCcaNo9nr#6?ARk8uCewZf^5n?2>a#R;d+X+OIGLWwLsC=Tg;g|j!1y^oA8 z1>8fWT()NabRtjtb?ZXx0N(xE6*PetV`&-S5yjZj5cQ)ByRl{iVUL)TrgY8bsPp5drpZFl`?AFb!@Hr|X&{Dy&`yAisR zt^$PWtad4ftX`2k1vwIi;I1V4AhG0_Y2mjge+!Wq)rEdEniyLu<-4@tw|;05;i#Xzog3&V@1 z``QLDQnkh9C!R2k({b%^3SM7}q{V6~^l0U3f$-U^lPWz+{6kMVbUs%ZtQ~)OtQ2x*lL>>8#%fPNvHkDQT zTae=pp8l5if8edUSL7c7g15{4vO6b)xAIpkye5-|TYt`XE^Q5d*n8!;wPFt&4b2lG z>fLlTx203E*x$Ymc$(BXJ=^VJ4pTvh!4+y4q zbn|_>c!f*0zu4jkhDPvXY{zl9<`!J#{(;fStyBTEv1+M^t-zma^Rn zE*Nr*#uL7jJ=0L>#f4~K*YgoprV^))Ap5lY6Qxib`yGWJqhMaVRrrFkO5Fiu+VjKb z5=m)@{-udAb{tbw>fW2IB)BJr3+UEmyEIEG4GIpLeKLWXX=>hx%6WY4Wx7Jv;T?-u zl3&)bpW2i3hHlkY5_ASlXC_ zH_U4rTar&tynHEmA*Uuvf9$5;^thwa_ByH-HdU$j)r%TDHNxl(&i%4}mI^j>s$S0` z{6LsltCG$0zI)%BJ_|EHd9N1&rA%`-*XGwA56c)Z}s7~*k#D4eer3xTualxESK!JynCRg&)jT&NMYO@mwy#7 zRk>ce*4*2ZOzjbU@?R_TJc>h0HqqPz4P+24(d8-hwTlj{{SBV+Dt~~?oFckb5Lp#6 z=SCGeK$9}2hVL7ox-oUb3fjZCW0B=cSd4FuhgtedbNo6I%838{YR~Bc zggEZS$HUZbymAu#`Z*ms6_?MrSx*Ysxw$^$*f}K#f9iI{;#2djT*S+*Z`epAxnkE>r9f{w_Hi zAg_~-Wt_$tvxBe42l){SshAxhayXPJavZn*zV-u}S2%-ncxOA2+R%L zM4_Q&(t6^Deq((Fqza{tP1g0hj2-r*3|bHiAk8|JA4W?%VFYoM2HTHN`bv8>7!r?V; z?19TGPUVBYwg=wD?Pb$d_VqUD4cN9{^;z_-{EbbS4?YiX3Zs@5IZtwhpZ)jvt z>n$aB7+9`_*GMvQP8_kZNTN?fZPJ~gwDl*<^hk<$fY*Ud>*$4P9lgIz(j+ACTY|BX z?v?7RE{mu(X23DL5MVWqnkjp^7n#x)+?!-yao!*1%}8tWO`)Eb*8Vk%J3a-AfI|jx zPc`5*926GcGmffBg)o;ZhC4BI;a7dJm6M*oxa(%y%|2I12_0!6!TS>0Etg>W<0Y-% z7PS11Pwh-x2xEEIt{!*aVtAK(l5Q8aZ_KfwHPh22r5yf4N+gSX?JM=m*75BpsD6># zfxEr<_30?HvCNSM!--$#R~mXAGu288ZgkoYEZ+$vT|WdMp?c{HmYn%}KT$HD{0U!( zQMt&1*UJGHe^?L6g`D|^gMq?!|FK@n7G!A!- zdyzDA<}ubG2yOH56RF(II7u)-d;kXvEkCDcOVV}i^VCQ${1*<}iU&s$VjU8Vl!%lw zP-YJtH>>J)xfLa7Mw#bKSp0j`b7JR{LukoW5L7w>Gc>j$a8J5BowPpxt)LP zw~J2GK;*1C&3}{IfEIjmLB6D)iRxUYp0;f*+C4QKur;d{_8)lQ8~72mRWG}yayV`L z)`IN)WT{_|GcWeCko3Au@R%hGi*MiUkqlVlY^xrdj#Z0CJNG>f9Q| z6W9!4h5ZDzp9tf45L_eOiMcg!=e%O&O`K7qvT~7aBY-ujvHs zt9I1hzwn?G=@L>-a6-ZDU0f$o3)M?u(2%+$W_C6PQe>;FjyJp2ei+#(VucHJ)+V#% zK@(czr+yDgunEk(1#e^a*o}w2lKu(@7yTMl&wgV6%zdFHL}V)}@3Dmj(n=#DZ3tA2 z`4hwc-Y$vtjPX5^;O5M$x)kgK*;S=Qi_mqp7W*sPpFTbj96GoYPgp?IpzFVW|GkN^2XXKgxFtn>&WLnXd;NX(eS|NTqTqf62}4=N$}wsLF{JI zolbngb-rsG3%6ktb|~F_MSajx(k)+(aJci2^e9D9%^$YBA7NOievP)f@OU0%ijTf+ z`HMmi2d3Bw??lPRaGiu8pW*)V6=&<+Lo1k$z|1c_tgFxS~lHK z=-+*qjYL;J-dWe!oJ!#!7%(W!UxM#QH={oGj$9CZITaK_WwZXXaP?r}r_R2J%wxxA zrva^j6=xu9l+e8>4rzxTLwRmJJpfW4m|W zwByrH{!h60fBPbSO#HyV&0rmcQVO{DrxBgptt)w2dpYAAPs>=evstZFEp`OF9GLyz)bZ_gRPGfpKJEi%0{)cXd;LbYTfeb_qfUf)AL zrU-^}v<18RYU!QZasI5bcZ51_|A2Y>=tbpnI~mV-@aD9}pQmG;PrXwREg`pFC6z5C z+cBECY9R$&pAU=F9WOk*w_AxJ=U{m(2R4s{QeivxuXLL7q%zOE*LYIQc?7x_Y`O{o z(7m{c=r=xZodMtFV0F z;e`>;_hZp2j;5D22ar7jNz~ckLC+ePwhjmR+*TpCTvUh;XH01z-B2oK zqA=)Qe?uXCDII}V;~EPv$KungDa@d$6X|AetK(GReofX^wqVUPFreX^MeZ!jR05Gvl7P>4NU4Qr*kd|J!svu1syAfy_xFoD{Xa&tP;mlQ z`cmKre|2+Qk0$5z9#&y`sx;GXI?x-GBje$C?Szey z02?ZING1Lrq1TmdujxIgV4+q$1RmexW1B68^(L1c6yDE74r$y;iNut|#n>AYLf=YS zzI5~(V-EF_ZId}xelgpm$%f=Ntz_v*RVG(pfO#ENEQ~V9ukp4=kG!oF59UizS|A)B zfTRvTdaPS4#mv~YSo{P0a-?n8M2M&i*1JhaNIb4Q=k?M#QK36M=IC72-iIwSZgded zE8B6~dyq>4uJWthH;a0N@rxVE@EiSDBtk^Z8SX4}fH(3ELb@}yw?}rEP2e}-L^FC4 zQ#eO3Pp{o<4+n5fCPatOj&&Q-(jTda05*tKNBrX`bY z`_cnylr#AqE}P5Az@DHWJW6g|O_6ZZhOC7|uP4yzI;xlx)r27CR%;8(%*i&8dsUR} z$|#YKwk#Uye@0cx4fk5-CQHDwDMn)CSzfJC_bq*6pcb~m)D@Vmwu;C82l5anZAA~< zxq9%o`eOaW?*4fH$h9&*l+b?&gb4KtO|jbq#}W8(A-5-)<1SJ!`dGOKI$YU_--<`%9^*d$*Ipv8b4B#tSHvlQ*TB&h zE?prYLG_~pp>UR((1W65!Y(=rpS(}wegg3LVr-oggFe6Qbx#|bd}O6w0pyk$NdeyLpi?HgfD$+j{k$2rR^F`U<8 zF*uUmp`|VOiPt8QuEi|2xEAJ-kbnX$#tFTiow4?G2}Rf27gQrC7@Y)$4`!<^rl>6@ z5?7r0+Wv=(%}13dDi@pkxF#+d&WXBY)7n#8_M|31ojN==dq9K6XMppRHN&~t?UyNQ z*RrWEAL{FIQwIDbfF2!=9hg>|-|rBHV`gDhiDq-ko%_dN!8*`Lso3mD`XV>1?pmO& zY&@pD{fTYfAi8!mc?%T#cE?5huqQqynz{Zq`}#*Th6csx_85%e7u=Z-VcLG#$ApH@ zX_py>_wy&{-Gr!+3I)0Lep3zXIUiUEm;fmy6{c(??sx(-KHed&_PJ7fvCe;}4o?}M z(aRj7?GjkdXSjK_d*29bO9NrP=pT1o;{3bK@$YM=Lk2KSiy7B1t))|x2bZ`C%#X5*PUMco0;x0&kp70 zH^yn0XAO&hF@XcHo@fX`_P#;b9LAt$iYSK>ea1AIokwTp_(-;NlkROQbP=g#5}i3d zP>j13+s;PGp9wjT=c_}<0|^pt`b9XLSYTRAa`pHAFQ0NYx#&Pk1F!WqvMVKdJ9}@c z&5lu6>@cWMJOD|{(le8`%!mJFH~wIjvF%D~QF!&vu-{j zs`5l-Tu+-DU6`sQx0QUYo*uZrGi0{Ef;a>W<`DUHzd_jKU7-s-I{T(k{e*iBRPLE( zF2GavmuvYQw>U<8J0{r4#ZeOIH)69!+DHx-GI`R>86+;ByBNUFfA`0>M zC9ugWODYwRpDDJ#s32mL`oiWqb(J+FL#b=lPtEPLZriQ+Eaq@kqGcg=1>*$}Ia6?S zh8SMrw*f{Qc43nh)uVQ?xB}pe@o4-y@E&SbbdVZD{~8SSjPrEsvaHKp*#CM&t|_#T zK?4b^l?;GfQYUM&M5}Ci&&>Vwb;q%=FYU`*x;#93Wc1H2S5<6LDS!LYQ0fOp1=Htzsm@m9$mosQ1iFI&}gmnve!{W z@L(rO>Q|TFD(@lpI!VtcZnJT|XX~NICr_!2+9}`EqocZ5#m|myOLHO9U{l4;`MXAR z{}0%wZf$~bOkX9mxI-}QW{huO1)a=-f1iGG@BKjd7MTHWWQq5!;+X5Ve1f0|JldWg zFR@Co25wD2z6Of%O#`8TcvWYMSP*o*N`?;JzQU*DKtm%V@7@j2z^2}*fAJQh-v?Oj z6?SF`F5LpQX?!y@fgjpm&EO6$t|JK$KiJ#kBTWFiDL2T%w2K=T`FrP`I^EHu5JG1n zLnC9^(Fn(NPkt?zUeDyg*?+SBBVZ*d+ z&nQekF^s9%9Z$LTgTSroOtA2u`pWXG9hFiPQ z|D|{eu7>X#CkfabMKSiAEIq$)zv>QeB` zlpdGu^P-nbJ`EdBRW5r&mX3Q>lpf@ln0P-fN(}#gY=VZe;?luX$o_KNf{G$39t`-( zI*9z$!(I5|<@8DOs6GytUCA}ti%d`?q|tj6oU;E1Lu82ee~3B?dZ{U70Q=I$rxGpl%yiQ+#K!-h>tdf!pe zl9SX{viXeh%N&_c?+bAXay92f{Nt+bYxn={B7{fs!1VGd?qjZwVcIf>+M16yZDkv> zLkeAgfUeKs#d=lzfj|9Y%Oi?zz>xNn7u7EpW)C323pxE?bv~}}L5@9c199=-_RIGm zN_dwSVp-7YuU)Pjq$MMu0I7)0V^V~vh5`w^{K?@;iFoh6+H|)Bq5s|DH>^V$dagWo z+gO!N&EN?sCXiCTct!Gth~_=clmIKVJhCi~q+1{yc*gF75KB`T%t?x}Lg>{(A`n70 zAEY0n$(udg)<}8TGh!C(6^yfx_o@Kp_LI7TY(z~1CnmNG2SS&|C$lozQ$%xd)eX&- zN%N|{@p>Cza+aVP{@OQjR(7@Nw=I{)u0%Q~u}PyRZZ)aOuPPbql;1SG7>j zejJsi%X|SLcc`l0&x8uJa$D%oks2&&Q?t9@0o(A`;T}M#4r`~L!!vG=nq)R5%S$QNWu_cN z102?%0_|fAr8zM`>DE<`ps1O@e3*H$7wkv?a(|q2vlL(wydwI-=rgIc0&Oy;T&c0Z z!g7@g#xY)f6OMkv1q*IrN7q1M;D*<>9`Yk&A#<2X2)_B43*UqWN7)Mbn%;wjuyYb$ zaAHT&Lu={=Y>!8->}*TL<6Ztr^E5pzm*vYSwWt+xlA6kXy?*0nfXd!MOwEjEXLr5j zFHkuie>sz`=El~*&eAccG6;HI_lj!(7bKJcity%81qKCry<(zuB`Uk8c1WjZ(|kpr zHnLEZzk;?A3XDpW<&!n4JUglzOHti=2k9{j!btGXEGwT84Xw(nHcVs8abvMzvwChp z$ZWwwN8Y=oDuQ?gbMEcm!jh_$^(KrkRu0)WKJf<}bj<@wzU0+zb$-a_ZYfOtH7%if zZNmVfT#`RQE|9%5Qqr)R6U8a@Ap;rA zsGNYOaHYd0{jrn}N_$gf_@y%KrO7dk_y_@sdb_^sHz`ryP4*(Qtb#CtwZN5uR= zBoZugS1?+>-D&t$`#!Yw1pP?2Igb}`JNUzU>J+qzIFA#%8#HE2nEdyf4MC1>1fh<$ z%*~;Wdt{zPI;Z|i4Tdn1a`Zx|TKV{NyGaZ*@_F?|{M>xKFWD!?Non9NFQ9q&>v=WM z>PDm6z(3I-+#r5}Lb}5qP!FKtMDo-Io>}_~ON|0E9naEU$xE#A^v%3@z+eoaYEEXr zt%{5V5AL!5M_qiZOlq$5ZWwkl0B(#AA+o4N=WlF_1h|2*hoNz0SSe%vJqF>X9e(}(5IP|V?i&g*?Smt`pq6f657<*5=l zaP4rp9UIj%LpwExzf%Es8;sc+uFVQ^u~mKdg7n+fx{QkF+un8Ce#UU>B*Wy^qWmAh zTgT9CgHRUOq4yOj+1Xm(fSRj_>nT5~hmD>DhUhAnpGMF}DXJj}9Q&nuRx1(X^k=H} z>sf%azuRwZYYfH(8)&2V;LNBx%S&erdSBBYT~a`%<14+9E?ZyP%u+Ir;tbD^8riy8hB@nhG*63 zNEAllFIkv`BXkPAF{_)4A)!ju->=hwKYq0YtR~>^uYt)J(W|-`a~v(5`|K{@pu||Y zIt>1RbfE79WJQhR3I!WMIKzw6uTMXMvVF4R4diN4PnK>K#c*0*Ocbhj6Y?R4ccpEW zvX1(mNu0t9r9<2TQibMT)C9b18Oj9Zt|NPNnJO{Ll(M)rf%`JEJsLp29rg*f8Xj%Z zhutJ=-(TnU%su!ut>=+aM9M69v)B{-aZ%ec(S(I%3oiGth9hDiX&9P~R>WCD@1#)U z`c&od<1%HpxQzvP7*```Yj^$!nPjoYcFZ_TlYX)GT~6?mP&f<|@+{1s5XNK(xj1Z1+uq`_JEoJK7 zMA$cCu-rciEHjGCoFW-S&wbE%pXfxf8-TjZ_yIfVfhgX?J7_IiRC<)KZUpc%y`q_> z@@F`Rm1|Y`vXc!z)$a0QbY4ascC`xi z)cqnYNG;!Q>Bb0q@Z}t7fy5r2II==K`&A$MhJtu0?zBfnaLoZP>ypI9%7+P#3tmKZ z=QoalF%Xo55%JmZnIs{6`a05oW&`AwGYrh6LSoXMVDx|sH2?158KkWgrnN(+F!qpr zpJ|;vdR~KtuprI{wU;F+qGScS%(}&5w%++EH&Bs+nQ!7G)3J0$AI4Z8rJAUV^~;XE zp%rD&^-FcDKve0rU$HL+EVS7XlS-%K^9FW1?jA_LKr~H}LDX4kQ@G%HMr|_OvcHX$6u7rv`#N~LSHqbZ7O!U7wvGf z1MHFlSczUeceVFZ%kbrkZC@{a2jQ{%TEdin{ExbEy$4cPXYg3WGm+P5V*eG`{_w$Y zqVNf8y<`Zx*s-4%>U{XneGG^2ma%I$OmNo-=6L_k?(*2%@Hu#|>vh9hkCXRp}7(UY+|~d*)N~ocZ4s+4#0}nLCcUJNwr;gO5sj4l;MBFaxJ3{zG-G z3?{o|hJ(iD^vlqV3o`G(oPmz^a_c`W0@d4?w$7h=>d`M6vJ*vpkH7fLjpkPavo@NK zC5YF3IGo7^zA2NHUB3K& zig_5!>>vYBDtd7V;Vk0LOk~*-pM1o62J8z11DGT3ZWTe-#q;m#*Zv5`IKhgKsOouW zJ8^9-b7O2a?8bw!PRJ(XUdS8xPC5P2#iU+My|>!;YnqMY=8|@2#bw#@)q)f}YK4^~ zUNQ#?=NAnU%-VJIbyJ$+zQA0q9ovPZ&J)2e!BUTYHK=DPTE^|C{y9k@;sX;@`7(?L z37C-m48h_9SoZ*ha`vX1Y9Z?m|2j!7_L8C&;St8>q6PaTx%GiXw z@KhIj#9b$83@gNFAMe6z@0^b@!V|X+_=jEODQD^J-+WQBQA=()R)>QJzi4U9x093} z@G8zue5LTmxo6*RyiI|?tc3vK8QcEzY(Hehwx#HoieRKMn!y- z_XoM>hx>|VpWp4h-udIgk0x1|+SSL~t|#rc2imV1GaSRWN+6c|_bant_$b?TdL+Qo z5I3z!NIsn2BXKVRbEQMy*fzaKLTdYbSHq2XFZ5|**3G${U|6wX7FAZa6B>jCjfIC)}wy70Xs09V#}A5nx(N1%$=1dmOZA2H5jz44wQKk^B*Ae;Yqt z51w660exU2l4vmU6D`PcXInX5*)i;@BbKy}Li(-mj0lUvb}-#v#A3^NUH!Kg^cP1= zK8ns5bX0Kvj2(JUOGodI7_jC7N|Yjv#hq>DnsEq9D9O5n3i<8BwQQe@*Q5WTz@8jH z@Z{=75IqUUxqI>Top}b}{SGx~6w>F7-{#!FuYxc!3kGglZZ-T6_JqXjFDH4!{#Dx0 zDZ_#~v&u6?)1M;Fe%*`!{mV;O9tjw09ZWEKV-}-g*hF-NfI%RbA2XHWP ze(qFt4p1N_d*&37K|Mf?T+O@tHJ^I<;0k2@|J4D$!!?LUPJ_&ymuz>ME(Dt6lcqk0 zfu7*9c^jNiVT8FF5@gZ0(qnJ_U&OtCKhIJZOkxguJR(Jlss$CR3FPJ}GCxW^OeBX^g;+YaUpy zLa92orHw^pvic;Decz|uq}Wt#RAm+0VPXLM5&kCG5f1zKOI{Sodspp(5yQJwf;`5@ z3Siy`>WU8wY_sW3eVSlY2f*pj_8!~v-3M(EBl%8wtdL5+RF9-VX`_A zmE+5G9SDboO72*9etpwr`+EMP5Fu#8H7ZQg`CE@XOl>Opn8y$Na-5FKa&Ep8Fg3T4 zu9tQDPU;_0hmzwOz!A8uY9G{XJ3C#$?F=Vv;45Rop#E@L&w>O~d0^P?vKY#zMpa?j z;4sf!=)LxfL10WwrF!*lAD|A1uIQ$mFTc;3Aqi`9A2>gK9JIVCDEQ^#bk9$Mh$Ro{ zN`$l7_!}HF5e8O|8Iv|2RF&T6yS%ya!KGFKtqXuig7k)=b#L%YrPNKxD zhTX~b;%rX`u49o`2dJyYWz)7;(v&gq-VXJ#c*+X=zz9oF3ALXH){0;mFHTnPB4@C>PzxoCV%k zT5&3U{lNFQGd2HbW9s(Q2J0`B6+k{MY5^y1Yo|wTFw74#y`p{yVP6`^?rmc~ysogr z!m{>g6dBBA;V;A@Wec;76g;!+4U=EWTLehOMFL`P@3QlWo>n?w{C!go-{arU0G zRg8eJG$LnhOqi0Z@`I?sqsw&S8^TVM!~(A$L_aRmBMAzrwE3LztT)DLGxozhq!729 z2xgd&NaCg=oXoZH(tw^+&FTN1`ER<#nX6=vKJAqTFN;4fr~!R=RoO#tE59H0wXa<% z&X`44$oUL1k8CD{BG9XaGP z$gB$Xm2n3gwlVv()@|t3a48mS;s5()pXgS@_|6N~U3|KjAv{l>v>!0}(eg_V3ynd#!)sccB{ zfT4lNl{V#??@;HO8rTjeL88#v`H?1UtOq#z3{Up~42B0!8VlaKu%PeEK@f(k%>wcW%W^S$DFn0;#D>|`5aw!`ikU$4kEA#kQCUC$;}7do zzHwRG0Eii1AOsS0o^+_9zcXmrQg1?Eg;3&0Mw*V1v zL!rg&w-gTcQ5=Y1X2hn35p1t}5YoPcMetTaWk2g#O+q5uN-_>Ely&}yK}Fc<)Q;qI zoe=-z&y3mCUfLbr9nPPG9%TvBUZmLYe=Nw{tG?Zaj9P##+}x6fAY^q=$TWJznDCMP zzs5B<$I>ymB)c3<2p+{p#2X2Tf#(f=zokk5L$uqK0)E3?DE9E6 zp0FECSu}RTr4GQH!T;gbGnTEd_H(x%1#g=(Ra4j9#QM`0<4E;JjHBhlm#ugR%^?S$V@h=S=iRD8FD>=Vqbm-;Y5mj9l@ z@y>|-7;WqM-$&JF14JoOzTlL6v3Fd|+I(vX$=oy0BG`~ zLNhyWXu$kqJnZDnd%UJ=0iQIJj8)H{)!XHDy)w3MxlUL`bZ_4Z7HQZndfnA_7fxX8 zbE>SSBe13MD(pyOfIOC9zI-s;A1fJM?R%x}<&gB+GlmFMuR%5}lZD8(g2BNj7U?=A zWQh#^pOY>-Ctc5%oXKF$f@#z-${6gA^g%}168(TECFms`NrSm4|M_I70BTmec6Reb z80?5JWeDM~bcZU2l_%Odzww zChj?1F&A!Ho;%w;Pn;`B`5mDv>-doxOdi&eaK2{-)Zzl<$+Y|xO5`*I4rq2_!jQ?i+p1bH-5owOsKOmxHANe znoB%E{2OUtMFwW4>2(;ingz@yQQL@hPQkym1Ni4}yy2(V5M=us+TjF*9PQ4-76|#I z?t=!WCxyy&g`lHKf_GK$1A%G$wRr!T z1o|u}RkPUzQcKKjY#y^W`+Bg|DlGVLxsm`s-biR&}aDu{3XZF&h*f)A>^yg>c zeHjENk5YaK)wR0=Dg?+9I|er{N)$vXFttgn0?4jY=d!`acMOk;glZ}-C>^))*c*sh z&>e5QW2SR??oMX+jZ?e=Snh-SW+z)gzAPoJDuhhwVvjN%we3Z5>M3F^MVuUNZ}`AV z&o42;P$RJY*v~}n33VisdU^S&h#Y0AL^p-k=~OW@BKBt^p(zJ=Tq>rNFM*g?KjWr| z_~wcAsMakwX+v+9Xx`KR#>&l90+}H>BPs%DTA)78dYOJx8oBbN(}M)n;R0%qH5)0+ z=R*!~hL0$PtKG8Xu~akwo}9*oX2DJ@35tO|Y5KGqW?bY45H=P=DCOQV`K_%5s4Z9F zDVg9*uS3U|>*sJOx8wbbT1ZpAt*(f;4f|;toV6{N3d+FLzIek&lfbJx(T;!c2)}ol zPY=|OJ5eqt*Ti6_dYqKKe-^}N{x!9#IgiUl`pTt>SNjYr^6vsdOp6G{o z8b>$ksRld238V<1A_e)R5fadegt}jZ+<`-(u>v%BQk-kj5X4Day(I!8K}LdMp~`4% zO0T;Cz)j~ATDzJH*pXZc%irS!9HvIj1h2#Mq$rA2j7BM;$<@Hr*E1w0{|O1~X-hUY z{{(^rc!hMwr-OAfXse^@3Y={C8DvrNdjglk9%JGGxpB=pe?1SclX>P zyzFZg*hS4hP7ims$lNHE1pE)T{W>pQXuaxF$R-_k4IiGT&|q@T%{L2h-fQS^Z-6dw z?yBXnAR*-pW?Eb*xEkJ(VxH!SRViQ^4LJwAcr52O3A+klp|YAym}Gc|fW71jhA3ku z511@pp@nvGvSGhq*g*n)NVk3&x>N67Og3C5lR84GsLKjV{CV|215IcNt$2aJA^~VG zVBo=AJ198piw#mU5fEiXh)jjHxb{i;GDl_iYyR*K{{H>+AZYVfri^V#X|;bEL=6(Y z57KyyQ2P6zNbDz0N#MiYoZ$C?{y}h>PflPw+`aL>Kv~D=`i8Pt+G_?tuATKIW2G?# zgvdc9Ym*{Vi6$v7i+Us}-;Y9B+|$U}jM-*4e{#TcLq0ZP)D0YI4D!pzwwGWjM({>X zURJuIHv?Q%!2UU`;o>I#ZObrAqP19mN-r8_x-mm|DQ~?0SUBLnB-pkZA8DC*y7*k| z7Uu};6TfKxOAb}0XhsqA#?Wq=VWH5Th^AZn{lUq4`l&Y&a{w6?UGDry|G(pOwV;hy z&EoT2xW^SCMUHK>GLAn%$B(QYi6_PWz;9T=i%sZ(t=5`P9sYw)P*q^d)s)-M^=^jc z8v*{y-HZ}57n5U7L!S5TBAk|-OPETocS$hE{23SyIPJzlk}p`0g6bt7VfhR?@6Rse zuh~x~ib8%Eh&qz6_b9A6<&UU%a_@g=UoDVQLO@3 zIEY1y|8+C^FeI=1er(Ila8@Rohr|z2Jl22?au{LY(^c!UFp{yH+q*qcuP)B=@CY5OA2K-Z+r0URg-;bM-{uaqb!$$}nDnW+&0`|LR} z=6!faC>H4J*phScv}=M#%v3On7&Qi|C%<Pg+LBp`{UC zTuPpS3jcx=>w@7V55SCZIw@|bgpCaM|JaTlNIKv4i+EXvCf@lZtbtNF|av%N;aCV_685WcYCm;bHqdYIU zyBPw~6!ec*!EnMRSh?n70sKBrznI!&SMgaeHkLCRP-~_ma3n5qrd)%5cv_GUz~jUH zuAev!u?%(hF6DE_;runwhqH7l_;vWZ(YQFrX$R>H*psVh0vlrB0(>L5+^w3&mpg?S zu@IN-u-;3vK5Nk&4tz^~(TGi9e`Y?$nLAxi-o3LieifM$g7fzW2apX`7APMp=xJjY z)kUKuHf<9x=0a6buluhW`^qb`_HW-qdhwG^Z7c*t+by|D>EZmeYWTb;Uj`Ew@Px`U zU|Fa5{Th$wnu})OVGwlsDSLzF#}DkY9NzaG%$|In=)$OwxS9<4$lMO@`9*Urj|#2a zaHR*tBA@BuV%E=|1DbNE>F?a9OH^9DSS@PmOP`d=|DA5(X2_&-x zNJ!r*;vjShUK^J{yvBu@KvT0}H9k>c3-3^1OkxHXrqN1ik9=|MyWFf`I4s8onxv52 zeEFYlhG3$Gvz@%}*s*}#1WAA)2awS?Dq2PnRD6?CYxBc#e^Ozu=}AIa`;aCfm)i5o z@gwcSj`Qz}e^1ZT%xTpLMe2ILwG}kI?x&u0xX5jf`NZmU?2Uvx+5`AenhBH`pAFYu zeX+D&X81)2B5830*)TFgF^2K&=|Mm#@}or*AHi4^6DGsWBX;S*J7$DSI6c9>3U~*B z?Un}B$Qrml1x^djV0O_?qkPl8#Dljbpl@eKR1tzhgvJ_ytcZD+g2neqv~ zP{KfBIsR?DK|SG7{lq;37GYa(oGy9Vv^_EtyjMVL3kL+-7ke0J_e0-Eg4LX1^CddP z>T&=%uq&hqWRe6-ZQ3&~UIMjm3PEe&szFbBp1t2zP9*Am1}A0NWUt6rF!E5Ut*_M2 z;L!(dgWe;EgY62Qz7;>G~)^z@x{}OtFu|n8~ z!asnr0_vk{8?Km;?%?3mWb0OPHjgpt<31Sj`?K}-4c9+OO}s%SQcl)4^>L>Bb*^KO$c;x!2ELSQT@|0zIvw4e>R21w#VXn4^avT4Hcy zzRlo|Q-t&;{DO(=&DuR^iIR0DEtAg~)E;{DiX9^@fc-J##1Ir>&lo~`JY>&9(&G9< zH@(6H2dp_O`K9IA9VCv@U7mk9o{co}^HOXYzpLig4!ET&tyn`tMoEfDMNEeyI%5V5 zX}Hw%Z>l4u71Yv2F`l7&KjZtX<%870NEKA zXltU$1f?4%tAK)dMG|7uqK{@e3nudN%ER8C!zLd_^1%pvo!Wu>zJ6DSYwf!@6?OnO z3t*z%NB6(3Yiw#gMF_&HcH5J4>#ZQqz(*RCdwO32{0~wC6Ol*NVYqiwv-)qqNX#M* zv#88`J$JuH&2QEQAl|1g9OJWr!g6)sp0^CmNGuEcfN4~YJ3grznz$;s1^R9pj*N}K zWc=8Q*$~h?nNnu`q%^HCD<5I`93Y3_EbT&=xN>=$RgDlE3!RkZ^Xn zZh<5_vhoyESVDmsN3b@n>nsrj1P=BW(*0$np-$D$2HPO4YX|u=tKZ#$6yLZN6;5`k`2)^%mI+7ogQ!#Lrk^}sT>?nYy&5UPxXO+Gr2P`z-_&|&ixH@$c zR_ii5vHSz*{0uv@Dy@@pwoI=OA6143#I4=oM`@TNFDw&S0dC3!m=2}34N00o5Akdt z;XnrF*5}6Cg+K=?=TD%b(zBA|8DjpS%>yR3wu#xP zmKpjGn!d+W!Stys0~VPc1eUMZ3!xF|H&b6R!-wPmnSRoa!)I8pl{MuXL#`= z7VHJf73T{vN$?xcwo`Kzudoh?!p{!@jVz>)hAaEFsexTbN3+{Bkej|s+)PqKF05>5Alj(O`9VMEy zf=vElS>Ln=5^Wyc^&FOzPk&u?YMt|VJ=`mmZ6)zh)r&>phhM;fd+l^?b%t-^-wl~9 zk@49c+^h{xAG1!po_Y={4kIjVcDrUFatf~$MdatcgxD~&@|bTC``d2uV!XW`PDWA zNu&yT^_jRAU>@B)M{7sCQ9|~PlJps2AOB9Rf6Pj&2KN1)vl){<*x+PfaH4_hdF}VNT}=NP7Vs2QHnLzLS?v~0QNp<~N~V!hSAt0x<)uLm zzd=zbIZt?3W{Bk8*1ss8@|`wn~EjF5R{C!G`of8zgcG^)h!@UPx|Ug6criK5z`Y7UME znuT))pK_R}B99%)*zyYgPtM$l?KA8QxLaDeE(m3Ky4@+TnM=Yb#c__Zw#50A&x2YA z(QYOXYw-rhA>MC1^}L&CypSm_deq=u78Y2GrN%Rd(M7)~@r*zx;desH( zDbBaB;*{WbkK}FU9>Z)ciC@=`By40yx4+b!d2aVgltWBk-W~S*gM=E&C1f8S2eVd{ z*M<3L!*8oDbaIH|EQQ2LXJyQ5(C;e>{Q<-mKxIA7cFoi*HEFb(6vY2t4l2(==s%0Q zEM2v3z-y3IW|d(GMPI6hFOHBFmv2g6M(?my{bp8l$e{I@*Z2h` zH+D(O>-Q3yxMq_tN6&X0z0qdkRQB~j#SEbj;NWq^Ig?#85XL%jjw*Jge9>V!^Cz(? zC5AX)9bpYUXDe9#@~HYN1|@RTl0!tvT5fF|qFyIQ>}~KKgkme-bhj+&_z4WhAq(iYh42Qy)EtI9yo9#NUWEzCCeXk|q=OvZOc~-w)=xp*WNAf@%49 zAZXmKz)~FD^$p)`yf7UuvJsj%H>UX^5|O!A<-3WKo&=4(Q!~Wr@s1aE{Mq7-o)VI4 z%V)ffQ@$1-{4GlQ8PdohPAMVE5yMJ1Eo%JQ7JhVW0j_?oEGuRKIt!!LvNK-O8lnGj zc>==kKi}ZWl#*NOw&b>e$M-p=MyeDA^?+b6=u((Ce9O+azwJKe3RjGC-XHn%H+wscVnN( zwh*1(2~l82#E7}V_eWi@#zI4PTbSpbXW}o~B+vQrEGpc<6!N{uY(V36Q24E_`h+yq zEvxrCkHfC?7IuR#?D(ql?*BX_+!p|J?O=FW4U<} ze(#tjt%T51!|?+8D4H5%cw_-^ydT(336jLQ4oy0|iRB8G%)+QUA!&VI*_dY7IyQoL zglp?S3P0;+Qtx!nkI8wQtx4nS%+F^PxZZ*xy^Ur5U{t5fSM<-6f<2!%?pBWT!?A_b z2W9Ke#hvBTU6?t(2H_w>o@|t#2uz4 zJ+cqL1hfm)+@x&Tdh>?d+!^1;7fwp7Ms~Kj^aWfIA7w4yxu}ZBtH9z9KmW$<#UA+Z z8nn7X0(#osiz4E!!P&N}7(9VJWaz_#-{xg1Y;x>>04|sP1lSj^DdI>HWgJ#1WA%<)@&Z(Oo><#C}g zgXElDX@K;N+(k*&v0z)A2cXU`TQ6n*OOY0NqAmLE=U+9V+^jRI%uU{nP@c#p z_>YZc$6MFM#lG_m?B%_?;EXK0(yaUh-unL}?m5rxJ|0BI_nfh&{CJ@_F)CiPHl=d3 zX*Muj+ZCj@eme*Jnf`4V$geHdW$bDcJ~dY?JAWQK&AeKsN1#6C3!S-`4(UT$~AC%2T{P2a+gU#H#fS;v-B2|L@iK8;C>i28j7V z{f1|E>J2k?{idLhb%C(CM|+@bnELquN`_|IUkgISU4Q&j8}H=`C0AWV(>zyj6R{k} ziOON3PKac;fic0?3QN=vGbdf5A9t*~T(~fA@uv&U!J%P>3yR(GBa(sq*E&^@g=%*Z z7&pXSUy=Rruj-6Wci zG#rGR*x)EXMQAy?oBdc(<~sO7uL*(cSF|rs?rhb?sCnduq3|9x`^`BB`mD77Q0%$D za+V>ZE&emIbN+himv=?>EXAda)n`dog5NLo zhhBkT0r)F(I^UMxIuhus{55o?%9VM#wldM$cL1$&dHb4i9V?p~&=C+p7tQ#KV%%;TlncJ2Y?%HeB=E zm-!eN)VY!~c7C9aSdzM#0`7#`O4q zhx^S^5qMZc_?_bkfs5i-){$yb63Svq9+WSVJkMCV4u8uono@aYO|#-s>?{dfS{6Ol zj=q`a*n{7N?uKU0zJB{d5^R>-D|@M^{p6cY-9YPmddVA8hDc+aA(;o3Hi+dE&OU(L+oNsrJ8@ zWXad){%k4zieay!QDynlK8z=N7oN-*QmD;)a!Q=ug;=#e$G1lL4b8_p; z`M%xm5aQhK;1FFfcUvu9CEPS?G}5@hu6s%t7e!8M^PI=FE;XU3tj5fa2&VGoF-fx` zDdCfky&^6b%J)V-FjjlQ@sAUCvFUiIWcYV%?1PTs=tVPS?m{q@2tJIpiPYb+nW74m zhDRDqZ(~~(N8Ue3A;jFI==yGaYGo7DG{Skka&DXwfXNGQ!&e_aIKen=VkW9Wf>Y7x zxI5G>(wH8gYxSQH%DRM-Ly*`97eDZ9H7Bm|&3(Tt6ElH#1b;j%01>uiPBR*xs|dK% z;q0Uvfn?e~|9xzM9VaGxEJ9d$fuf8~Eqcb|w&h3xm#Y6s>N=Ht;c9F~IoK=pL z!4ALM_R!Jq6JzfZ=$l}7w1UC}DoMUC{_?8BI8Ul_Zz$v1&{xPuddbsi(GT7tTsst$ z+vO{&t$!HzHeRm$kWn6nPQ$X5&s2;Z*pR5reue=Lim4 zi=eFKb7bC7Yk&KR($pMZxa@r}?$d6zdHGJg4eParZa4W8Elz;c=(XkHYrTrF+XcCF z+Y5@BEO*_!zVTy-0?s2Zt?S?X^AH|Wc2oueN$VSz9wdTno9?T>WV2cy!b1eL-IfTd z{;BILn}yOQJm9IEfqe=oP8izDuUg+;R)tShZZ0g@!kF=Gl&DtFWkE(YYxV$5q7B_| z2oFcId9T^)_{v$eE6>laML2rr4LZ`w5DV3PS-H*x$ z(tMB!q#p={z;;;sufO7stgaC{g@SjwJL?ZJ88J8>uzzhcZUT2py~zvT?yAA#hW$DJ z=8K_5n}z({Br=AbL{YC$h$DM)HuSb3WZmefC1)~#PKx9(1l%cmDB8aXW;|0R$}*|th@-? zRrOcQIhWB0#i3&<^_WD(i6Fz6BtiF{p!NEjxzOBe8;uE3$k@j5BFRc=?)85X8-gvr zVBNN)DaoAQ@Tk}o!DBGJ4qJY216zJ6@$IK!t2}AS@=%i0A*CuL1y8bu^v!q=c=mA@ z-Og^{ZGVc$uGT#6%cNrbP%7a4Q^JRI_90(U5_^vQp-NXz)O#uMkv1RcOm&`fje(Ma zn4*MIVA-$t7foq!i8GrAOMjDCd@QgtLPFJdC+|=2?l|eOm!!k1Or!?36ZS5=qNF&h zO#8x-`7WgETUYXC>$?x8yknxiasmw$6hk{`a9nuK%PCljQ%iFA zXA6EQy(-xN(S329ii7mU`jA?!4LM=Eh7pmUny7YPMmCgDw9}m%|E3rD`hlb&OvnqM z8395cDfX8NI*c3gozmvJs~nqc_99b}Y!9ssVKrK#avw1Z8SD7p#0Y+tTm(_!HFr4d ztd={9l2vgI&pE94-UMeR$o~o$OMsU?%mceP_r#5kR8KZZYUnf9oO`shA0Z(UWTyu?{g)1F5G^Qt)xuj*ZV;fsz4Q| zTSKzR!63K+9!0i#Q{Gd>_k&W)4SHGo-*+yr8KO{-N+U{lVR24n>D#m1(PxvqoP3OR z(=5?nLu2@zw^JwRDj^GWT!qy1DzEiWo%ebB2H-I|c1T^@4LbRV?yZkUWDnmPjpK)$ z^emm&g2yFC8?E2fd^k~HaV_sG?j*cqvEvp&Xyxw4z~T3SCTUfV=SJzl*YN21`iUz3 zB&&Ua{E)bp4b>I;9>9C;l?{?CnL?gF#eWA9_ob9+AYdY>tteio3W_U0kiVjbh~vWG zwu!&Q@(6V}R{4RwMUT}RHl1GmKzo%MizL$#G$BcMxWjyuqO9S#hPA zR)`s0Tb8K)AV9X>pkF)2oHUO(@(?clSb5PUO_}w%RvL%zS#UuXJ>GB9686m036nKp z*1i{w(jUV#062|JVZ{wsceO^D_OFN?N*ZObF7F?3i1`{8eNR%J=}c=7rp1kld!ot0 zirMZ{ti^XH!@hHMhkMZ;l+_^qSFG+cpxBK(gW>gAP^F(K1#kLO4$9aaCegMoHU;-a zb_L=ep*uc9(gSC22T{#`n5kuh71sko))1dwNRKk&VEh5t93HetF*9d(&Ya`M&nCsg zE88@WifBG4WZ#eCQqe6dekiRhTj}eCSF`#biG}RfUS!Izc0o#IO6w`7K9YL5b6x*o zMGduz;eKl_gk_JnM{UmPKiQ4*oBpB`IJH%r9yOtQ*IB^bgXi~ytmpYVRXgVVXd5J*QU)1^axXbFM?Q`du z2(m16_6;en3Oth9sy*5KZ z;^(Pz=b=!f;*(WFyWGo8ZED$wantD{D36_9mi;i{PV9+w;&mzhjekA52xZ5;vMzn? zMfCSd{ti*-oSMYrQebJ-t4s(r&I0SYF ziYl7jGA;x6OWD7Kp>miQG7kcCUTLhm|CDc=0}=e1s+Rymf)@JWlcN`;RdG^DTG16s zZ^dtv+@3yZZS=-u0qS_?;nO}nbpKg+k*$gc^63?qy5=49`(YA4lEti4_(IRPPwGgn z)q$?b_4Ca+>;9H%<)}&pru|iG7%%27(et9a$qyOCcSu1w)-y+yPP55bU!^-BV zbVI1nWv{VmQ}dY{q^K>0%X>~ZF>5hnNwp{S?%NshVFaMazUUqq2l& zXUfs|p`S#x^BjAe9RAo(V$KF}vHE)v+N@TBl&tM^lOIYg%SyZFkzK)tl`ZIzjEHGD z7AO?ZR7Ii>mfk(vW<7^flh)04@kHuQYLa^OxFFjZyTU}Ht! zy29?Z))W_?uUz?M!s}B1lFq1h0Z9Zg)+eSJ71t{)ujTD&Lq6zyAbn3oHJlS}AGF zEbPre2mJU735>MAK#3;)`yMHW*PXFRmda4tW~>~7bgA)D54oGqZEyGIkoyO@AWiG1 za3$eM<|iYOV3jhf74!p1Vum0M#i8LD>KWO=4)`OWNM^V6Dc4^SXIU>6N)85bpn?eK ztj5257)*Y(9i1~z=YnD>&%c#&?^A<56`~YHPo&KecYPq<5QTW^!RtVqbo-COfwRNi;w&VMyVwl;zmxC`Bvv`S5{-cc&~C!PBm8AY<@r#wy7Bqd7;9)!Yo zUc}!^*#4@GfG$fctmB8KMIoz4+zptqglS;sxK5p))BME?jeB&|?!Gh)Igx8*fhATD;WG zdjG2~1Qu$WB3f*@Vf$mo;sxcze|AE{xoDai0LreTht%&mqv z8MYs~(m=f~s_V#Q^uNkU&ICGa`v6-6ot36UXKpO=#J5YF;L{6e+#r6OcgCIv z7ge-8z|MVI*l0D&z3dmth`h(c;9vqNK7nWgUmA!qqRGDtW)|t`YC*d3<8-cph_rE{ z!PaC-@`e&ZyiKWjzGW=5pu9s32Mmpx)3-ALgM zGBDNqph#+OnNf2<8z5q8oEZc;`a!$p19U|9;+LHI7r;qj_A$H>`(5FYwm4yhT*?~9 zedXl7a-*(y@nWM}G^78T@w%Du77YL531Y!epxc;cVJ^fM$GhPO(ist`e9sp?QtNr~ zWGTx^WF?wOXdOa6XXUeolHb32;;L&0UMnzh;f0UjV!cx#7d#)Q3kJOvx=)XXO-4At z`W+Y@2Zq>t=54G(*Xb7*4$r^cQ*P~Rioj>1_kCv@*>40haYIBnQsU(HhQ4yKor1i< zq4tQq>xR5}M&-&VRZ-MeXx~ObXKvGiNVQ{_phtebpL{&E&<8USy|BY1tp1QHGl?APNXUEYk` z=2wAoVj+xgp0y($9uv}^10D)9LKZy;`!%f%#I1ohRh9X}8$|3;xqLv`Qc&3iUBmxF zq(tR_sY8f?v^rq10IZH~LS%)czFApFo?`gJf7BxNMFImz!+YS}Oa_z4Nj-Z~2ll<@ zBUwa3+3c8~W(2O-?^k5{5sGkp7r$mFG!!mRsBKz!y?k(an_gjAz@{E&5_PWNW04ek z4P3Dasv*wvkph2JOBaF{$6)4B*`CM%XNgfMb!M;x{v^VHtHK0EnW!SpHYNNt5rvwj zfkHQahcyZ2Ef}x~0uY5mMEhTrbS1eCT>AzubIU zIF@8S&=8o+5bMZ@o`Pcxo5@c*4nrxsEzkH2s@NqNT=f+Oxt--~4xxn|#0aHw;pc$c zs39aefDrfXdv@WAV)tcu2Y=Rc)McOdXk+LkQOD6$k&k?xpL0MgsKVd$dmHC#a3I4S z%F4V~R|e+}et2^KkZ}pn%@DMM5_782La@Yw43X`~@kPC5LNvK;KaDpKPb!c8xj ztz*9)8z)|S)BuM@17d?=MDZH+#lVy;vSST*=_Kuzz|M_9j)J6>OnRCUR+QTf*zexL z@!Yp-IeB=qAo4fSxgr2q{|48&LfRy>*Lt|JLc3mAt9^KaJPA1nlJa_46G)PlH8lT? zQ*xC_eA6EPDm2n%+K;?JPW7C0dTBFhrn65`rHWD%?n*NgOsF3!X{c0dzWzbP$abbE zfRyEmPpjB`{_AIY$h7y2ssq+aeTuR9s-{YZ69#tgxl9n{@lK5`rSa zTu&J|Gl%0}Ud3sKr!I7Gk_{A!HWp!Ws?wiBOuFTIm+CYaiq=byAP-cq`~Cg`Yd`ptcyGbS4qDp-0uSb`36qD* z1or4%bep_uC;tj)94|i6pgCN|0lxay-&iHmo1Ah$FTb*_J@>LW#OR1XED!$m$i%TD z?fH=U+n+ZFfu*Q7h?GG9t-izy@XDy>fsY3&&rx#pT2F`BX=s=q$&AwChQp4l=euy| zu8RM|ffRTXtH~e9G`4_eSA01@z4@<>-zEbl+!!8Y!OjT>p@DFuzqRI5$t@iL=q{_@ zMD9`UDfXUL^_CuD0R}3%!FCIk8lVlK2A0q&kZQ~?keK`JXS=Jk=oU^GT5w)A(^)xp z=6ooB*Xtw1_Z<~{p;g_SV7~V%%8dcdbrYu4Ob0Pg0gvUNf3;lG_;W*-Otm<9C&@$>CK7e&{?PpiqVNOup&U>4UnHpyL9s!6Im3PT zKNaY2EYD*kX;gLuP1A=B*tZ2YVrHSi^g5Vsum;CPN&FD3rDP!tMQ*Oz{8B#W8v{Wk z$lAixWjmrs|M-m?YF&oR0>LZ;H%jf}j*61f8cxD}@WS?$Va9{Ep}#+~cS2_$#42^! z!{AOSDVW&cBd1-?0J5ea*o>E6y4zbW=8uE;T;P6*QC`Z=yV?`RNRlK5;^qAgs}lEl zZwAI*>Xh3VcBBKKt2hU2mw)TksAGJ+VE~>Og_(ZsbaP9U9cTCL+OKat5bZAkkDICA z4$!0-+aR`N#A9#vr(49CtdAbDswx0fql!JxVkYCH>)eTz>M@hvwU@$k$zl{2ejH zp{_ImA1g=`-nM@`tG*e$qOhMLC%~av@X!z+Qh2z!4B3m9DL2kYbW&BIKlRBeq_(J>$R@z02?dP(Ia9Gk4BnVA z1tTbupOlu*r~N0QrO`#V@1b1&qRDdv!K?-!hQ#c50xY}s@MdoyF9qX8o&kIYz)b^^ zqSQT8f*Ru6X!T~2q0rrh(y+GAAczSKlS{;~|E1~+fp@8B8nWn{@K0bffOCTen_d#w z;QR?Db)1@HKs>P>Tv$(?3^lk7^QjMROg|FvWSn|4^Nx7KjuQ;q0zQKENenOF*Z~wy za$Wm=r76c|C)9|4AkO2yJK5l3kMiV;sc`@sH0}CH?EFaFFocX75N~0}09k&Zu%Yle zBTBlobX54s-NVooar7^nx3Yy&LcV{AA&vxj#zR*`@G!eY&kjOM${r!3y(iF2To>XV z+@;O~UvGyHaQn6n{e8i%d@`<77{b2IeT1TkB4M?*BEyi*e%~9Q(1m9Fk+@a`PPg2E z*^$uUMi_Lb*9la1aqg!aDP-3+Z3R2hy2pujyCHR0B3Aa{I5GPMQG4Y23xHAsy{bzfgR~(5au085)N`>{#^wXv)S*KlaJPg|?n|5PJHyXqs|wCL~;l0`{1(sc6`6U=+yC5M$4`JI#UNX+j1#u3!tjs>}|( zV7u>eJwhhg`jg!Sjg&EMQm^_2@OT4v_~Yk_Fm74lH-IWyYP*|bAIPtG^7C0IedsrL z$G0m}{nr@Wq!u5V6!5ykO%vAwhT`js#jFN(zKe)F+)T9$2kTF`vTD1Agq z{HztbVi~8g9BaOTD_B{r;*?Y@13O-tvm&I;yak0Da3eevABJx+9u@I;+yuKnvUyg< zl%5c&&z}XXGDcP!#kK}3>Y+vgE%z3SXno==Y(@3@~qGP{b# zr~PgM^Ga}lGugqZl?zPX!0pFLWv)vp5Xn&rg_M{u0k5JCQcWkxLT$i2qD%Ebpbud$r! z75^;g?ult2BiJ*SwL!dw>K?fUk+$7d0sjdwG6gb<5bdI+DodP`%#z5@I8@g8LXi2G z+hDerjWhmQ=?n$V-*VtGKnS_IAeg_~LQA^0iKl#tuA|WwqsuO%M4ob>&ynolsLiht zB+5aCB4GHTD0a)W&d>ubl#Ys)%Z3Kj{vHAAlU5vq<+b>rwVw+W2Jdz1m10QR&f2KX z9HC*s6Ho?CoYXSXz-62&D~yZ+I=ov{ZZzKVzqms_TfyAlo6~bBF3);8nPNI$D$F=? zySQG!f15~VfH2+>zDls-G$7BrRXYZPfF26%{f^r^=Ms0uS3}thW{MrS)w0&*bavZc zB%f&4y=GsSy}omA=Mfbq^}{F7Q#QOh*Kr}Behc@6{YgEmYBh|z;z3o2f#HAKvxhuV zK~x~5_4$fBX_Jm%*4|=q4nGHh$4+`|;Lfuc=BVyeATZz`*=K5==t}Ezxl>J&yDIz~ z^xQpzbR=-kQ6rl;6+6uW*366k?9bVNUJm&;AH@54qw@NkzKw*GktDl?+h2Ec!-A|A zouFHvYrQ_U5ekTXc=ii*;`u7nx=0oA8)x$KX04=za67w&!a21Q8B&~2Trfus7v_U~ zh`ZC>oJn5s7p`hRE+YleN*#>)(z4R!xOK^m!V;Uum3OEaJR?N(I)LZwW4MPBbqGVd zEuxty`GkNJb;b26vOBbZJYB*U0BIeMb6a1;W)WRKuGSrOH9}-b>k~ZDdL%i{1XTlK6vT-VVNT##}g4W#ZuTN=&a7aH>4@SMWQisNqBy z$P0&T^>gK|_OMRxUZn57dA%M;p_)U4^DYGP(qQO`tkt*J1Gj|m>NCry+2FOAf{s_% znsLZ>@X11Awb{ai&oaGOozyjcPd2xKpvWw-tAPC>IMsx)l8Rlz6ChGM;&$tcJ7>@-W0bWKRDk{Z9XzR*GnHItDxzhr`(n@ius2@)}&s5#qH& zeC4kzC;-%TP6(^?-#T;<>c~%DpRKk*i`W)+{>2l@qk{!_kZE_4_&z7Zv^s zd5uTVBx@oq(MU3n%6je8P9xrI2_(r((}a zk&>gX?H2AfyX%f=9^(!>Gr@&)==*@xyMep{gk7S@>Qj4!!2+Lj3&*~K_>x1<@5gF^ z;v1VK@tgJ+LEAD>b(ww@Nlq0S2u(@<`fQUx)=-2WK!Y<4?ajBaW{B_uWNLDyrc``xy?gXY; zAP_mVLa*}NK9mF*WGf%UO7@=HihK^gj|`x||K!^E22QxWB|a9XHqir4d?z}GX}c(M zaONzxCQc%QSikz@JQA9x-uT4f`2&ov5oe}qH9>hSdLUFmHqQ-s_Rvmz2u z0Lr0)*nW8jh$!TkGP~kBK|cRxYJPmbQ7W(&br0X?GaXXTWeeHUI3?%qLNL03N3>$^ zfb>407`#he#^;MXA9i>TKwja2m&(QPeoG%Ztrv7+;9%V#*N7MnVM%_!5^0x*(-}wV z@@*&>VUsd@&;|vM@b8=5@a&TRN=4sO?JXQbAkBM`T+iXiC_`RvZ)^q54xoy$SX>FR zA*sifKGzQ0ntkDnp$pClhoLYoz>3xNDQa6QX-P9_=|L=0c24Rj8#&xyUbzx1{*+pL z{Di#~i{QvA`B-vai7Db*@z-#G9eQ+z@Dfbh%tBj-4h6pc_|PXf=R8cmnQRu-_qfha z3oYoLF0qdKFJ$YgJQ_M3Cen~q;uf*(l(L-JOFbF8_73Vebvf38aligE?Epvex@78@ z{KKl%P|BKDo@~jTyYyr>!4P4vcNutI_z|(SAw7Wf+wI+5^3xrKDM0i;6!tyqy-Prb z^w#^jtZD+!)^#`-3H^aWU}_AQnxf{|r8{B1KQ;hbwdPBlzR%4{8ofER8KT@CW3+t} z>`DuSkKwSW^v3=&QvY-bvJ$*9WnWPVHQ_@K%VMDUeDD&_uH7IUhXfnhB2Q}C$KMmO z|CV?Wy^PXBM* zftwLt;vc-Vz-`l6!2bhWzXTpb5+M(QNWy{qGm?xxQ;!wV3moWJ^ym#ScNQYk6Bla}OEB>lG$!*hZdR;^= zBPJ1kV&)=NoKs(@;*X~9h0n`)vmgGUAJE`GZ_38ev0D}LZz`Nvi_h6ze$+$4?PQcT zC=DAS^1Z`-XEL)Islm!0j#=NULVIh&zvB>54te+>g^BC9=qjmhl6%GNCIH&C088hX z^Ns|MKYFQEKzig^#)1!ue@QEUy9ok(-)gneJO)O-pP5{&sLFNb;F1&qR68=#Jpf|W*36qVpqpkPuW$!ePcIhu96Q z{m4s@r*r9;y2`hEh?rOVFg2ekAwRpI_DflMji7&=*}%N$Yyq{eOzJagc^wTN?Bk&3 z+YPvxT`x@Q07^7#43HXWMjqTXLj4kV8`PQNq%q+v9@9)a=jv>_}t_{Wuk?o+FeZyRoQ|n%k@Ua5; z==>_NaAwd3I^!?ZKR(vD3H*3R)Ub%}Orl*5C{!+67XMSizs5PaPKAl(znQ%wQ&HXH zU9$S%`*wv^XtYu*U8e_aoRc8&9uy4R|8N_bHILgML36XqKz#A=;^}MJlBLw_^q$4! zaU!ge*R6 z2`yPl_^DS9(E*?J05x8i{gideQk28<29iDA+;gKz%mGv@oHGh=vRJ1Mg3T2|%9s!N z6V+N{khr_HLbU6!hUZlk4z7byJJGLdb=#0n@|!ZeBd8Lt+9qU`me0N|dPmLu+_T?( z?JzbO7;HYj&>Qhn5^407Yb#EtrFps{3k2VqE_utkr}7c(q2ww(+om3!pzM6pks;=efxxSzFZ7*q42C)y^Yh6R?Lz$LrDt6peD3bVan{c(K>^9ir z1WE)uR_Hp4GL$`)SJ%MMO-X}6(q41c*yy=T;<48>PuJ{8CrKiaAKQ3mKWz~9x9`)> zb$V?_YyIT>DK#nK28utI&doBbG>>H;yVaz1g<--suGCDaz=kbRX{eQ80Aj9Mf;OUPg{v~{4@XSo$@LY5}iTc`oq{q2A{ zu>bs`qTtF`&@Wn0G9H26BFcY{OZTb-!B%V{ev7*J5eIiHwumw|&c8CW0qT`ZZ^Xd6 z>6VNSrgmXpb1>l-bPgfLL54mgtP(ss8r*3b$g1>U6QM02IEUlW<3x>)P!hrZ;(l4s zfcbS1I(Ce#8ey3_{S4FGg-ybxU^t>?oA!aw+{ZQ*&&$5OeW^|jzO@ShYneC0 zEbs=l^s@m!H~fX;d)Y7nl`9*U@7n~GX$;y|M-SzO?oF; z2lqSh7K$=W|WCOF3<-|WzHt(+j zIOiG#LPZ@V_j4u}_%ynWTtU@(zxFsVeGYg>E{eh`PF?c0h% ziYv-w#R2uynnT1Mexf-3J)<%X*RoLiqyv5Y-8Qa|Mdz})6`xKtZE-+cWDz3X2zYy# zyq0+G{V9rNWN0B!zQRzM1axc?*psvb1hA}>UocDp<$i;Et={IU z_8uFE?2HeLM7YP0*8WhG7pEK2NwOK8!$MHIuF~!T5csB*sP-YY>vkJ8__5SLzJ=?J zZ^RAGVk?v3!asazE0X-4DwiRT)Fk#NZ8GgX;IPz5GZ$j;#7hmm!aI*1%p-e>5PC>& zkvS^&c@{1~&|T-w1iLto5v)9NvNq&>N?%boIN(@gi+uGIC+9AIO%{mf>6<|;6X znz!O8B(u8yfWYt6%B0^FEF9)DZg+s$SZ~$!8fSNf=b|C z;N&+7d$Jcpe&G~3KN!rIrSYPa_X^BMoa=kwHiTey9am!ALdoS*Oox7rECXyR@#K2- zAoaJ3l@8+EQc#?ovs7YDdDt%`29)M360BLZ0yjPLjh}9TBlt>1uQwY<=u)9)Va2;)(8E%^RdL%o%O7jIv8F!qszF+ zQm`xr@k(GC(97B;S-}1sChuyz_x?zJRo){Uxd&v+(W1S9&}Cka>w6iA(wGvhW8Z<` z)2J6NtHSzQ_ComIG39+J%z6Rx9bGP(7+$^AGvU;i`*7OizlNge>61PaJ&qnF@Nd=j z;Yyv77C*NEot~}!Z$w*Gm&)>&+{LS+Su7(2;hWsnvSKvRQ1%GQefx-J9n;Jg7-@`u z76)+Qfsq7X1-5`0FUkd!If7X!V^LBAD+bdJo-rOGZ2GD$9VJN^b5Rsangj}4)wj54 zO^UPBz?)+V-ph$u3*P_Y3TJdB8y5sm$Qoq%hw%sbpKOX$ogY^?1=>c5imTK* zLC-Nl1mY7L?wr+wbHJ%acCW(eV6b-V7gvbJZR(XLt~N)7vLca~**|Z; zH@*#M$i~Nt@Si%1ibM;MN`u&85YKW&FuETap45rp{PI41lSQ7gdM*q`ohr^5Qtx7PKlF@({D&jD*D z--lX>gUQ3jTx&^@&)>+UmhQ3Ijla45mZiVIjN>Dd>Sag>p%8j zNhoeruh{+oL*`|iD+cmh7Mw1ty3Nyp(1*OuE;AMtMTe&a_wtadk3+e|-%`LJH?uY! zyToZ{ATMQwW8DYOkpob=+-XlGyU|O@DhlU-*-8foL;L*I5aUdhArgq!Gn+EQ`LEz-VcycDBr*LVvnYqKll8WEy}%B zYeS^wu6pyM@%MY6fvnA-Pqno>zUk+Ot=K=a)LI960|dcv4v(lq0eLp2&RihA7se`& zf+w;058U@3mZjr61%A0E=jX!p-C3;(G)AY%Bx{f%SOItrbA)8-&HebIPs!-+Vc=FZ z@F}~Gz`eRufRrDwpBM!(jzIfkt(P@+J6#Jz?XlM2DQnte&9NCiaR2<8!Vesi%uzVF z(lv5TkUY7V=DB@`)msNH-UKk$y~KNss?nybEpT0%SkpT}?>`HY(KL!aHTb0bz*-M|HdtX$Np<9kt2CuWD52V-)RMVb}%ZT zfYV`sCrVzXn>ESpT#-whq-@6AcUf%dX1(~6iSpYus+zo)zaLr^Wxyk_(+ISAa!1*; z^Yi=Ger)HI@_zX_&S9H3(7Q!bA=<@goeeycbrjut5^o={uZ4jykiGOTMbeO>QI5P1 zU9oJyA4@%^JTmvO4RpcNFH{>f2UM{hOv9(a^^qV6;&KusKjKnaLQ^mkwL4dG!zyYnJ)P^d52K560Eo|} zWH7Tboa~TX6qJ;0X?M7&w*kVRq#0H6>Bw+Q)cK>yNkjS5bi!jhD)(%c|BC06=K9`E zYQlTm>7%Q}yDP->NJQ%>^?}Nxb6jis`yP+jLdQ;%R_GVBsagJ?pM&Sc&+_$_tAuEB z7)aQbUD6F%AZWJtHOPW(oV-}oE;1t3ne;(~Hlq9Q%<#w#(C9hZKRybNKcT9XT5Zdz zV{ceM>*E_GNt7$+LynTS$;3d(BSboggkzl6M>~PvrV4EMfr=kx=?F|SUc+G|*WfZg z-#T9`__1BeJ43hx)jV$xZ^rF@#T*mU0(LJp!@6nt>PBIzmwO&pis=kXZv~y{m|PQg zA(`+SCt*f))S_Zdi__`7e@gPl&))_FMUaVKU3}xi{4qUBi0!0ah!k?>WX>T6av10P z4J3^`c(>7o2NrltS|J2pei!NOn%i~Iu5wHvZ3aAZ2SpwGOMB0~4TzI3_)>n0=<@Dz z&N^N930S^fH%fdVu!kZ$5dS4xuH$(-wbYzUIh*r+VgNdE8l`{hw}SZ#)_tEjB;H2< zqT2Cy13Df4dNxStO!u5El#=+rYlb!50*A~vM^F>=I&l{6(`;#0gvzuM6+N-&lu`=0YvWg8I;;O2)e2HSI1- zn-z9>7ErKAF6Nr;lKjubW7j${@oCM$32C~|O0d-`@dUd266E*>#|9G2V_vLN_7#zYH}$uxFveRf zM{}KMKs#wk#FxE%T=bnb``6Bu#jZz?ady(aJ$!Htf8@>$yho1hyM}K9ByEo0%3`?G zF?id-v4Zdv5uu|WyVg~DnhCmJIT_nMMLU?RFp~! z?%1-HtthI|N+`6c$P5XkA}NxLWu$Dw*k;U~dw%!(d%gV4%Q^Qv&vV|}0aEB?f`}_# z`sOoTRvL>Ol;NOb-s;poZMi0yp59=39Jqs!7(xIKE4^=_$Tw+K4lN>jH*V z)5FApRNji?7=-YHb)*$+(YaS}x>gwB22awk)g#~73|nlO8aS5M=?SZkJS$8w8j$PZ z4td3|WRP{io5g(rhj}uMs4xLFYZ|itY+UzNQGRt-T-~2JtcAn;O8n0c%l2f*@Lbd7r!k z3Uv070tF#17LwK5g%Wg}@UmA=-|lx}OCOM)kl0;oj8yJQ;C?vIc@L?WjkB^&5z&;r z$Omm~iumott=Y2KMTW0d8$RB*!P%>!qw$~N&sQP?4wIQ5d!lUIOW{VqI@PTT}rN$=BN(`z?1OhhXCoU@&f(35s-gBWw4m zfmcd0+D2hU*!gFco{Ijt?Ub|weS}b!fQ#>3KD3CEb zFVCtJ8HNeiFUTt2yTKct&PwRV_-U`?raD-R=j|c2GizPd_An*WE^FUOi%cbdhW!#ZA zC%Cic6oP|JX{{z_bbP(^#p@|PQYFwT=bmS_ji|3>L~}!K$oS)pAt?g+u`a)wmlW^d z>Um-ln5kNdYss!63sv7k`&6={X;mv**G`<87E-ojL=5JE28Chc4l7jK656P^>coH0 zpM5`uLAepeXY1X7PMx}t$uXmwIIR*>>gI3gMcP@3ft&cdKXq)6<;7>kOOkM1Ojk`U zwIF6528gvR&|1;lhT-R#tBAY7N=(jVEiE_5oS>tM3%R*G;m9xRLw+P{-H=na4)%Dw zBI#QHV6aKZjX8=3hN)1;O`Ggq_XwLnhWG}Hp!UF8%aItmfZM12^$s6AiIFHh|90r_ zHAp#B)z6c;#{OGNL#=JWDbsUQhpG)`#EMQQKZg9~>#bznotU6654*5@x`^iG#b$@8 zof#Cfu|F7p#gpy5HFVl^?0IgBVM;hWdZ&S<225~%8P&4p#K$|}iwH%Sm@*J~ zIvs6XYo9?vdd8VrEVX@enkzwiDnrKuihpBFPdgI_QXwYfkCZ5s9Sc|LaEIOT3xxPlRR;F zj^TOC5ZD?lKq@McD7Lk)1qj-+BbLDS)^IenE}PK$To=1`+C~r= zAKvIXuv#y2K?$hAQU8=$HH+I@UNud7+2awn`q))#Zsx$^-G>+jaje#7_h*216|$es z7GC8smgOUH+3evxVVKfumwkb9rf^TFzEV4LqcV269a0_ElhjkGt2;2m1=*t>qygne zO3fpqSCX>Do=4-4r~UK{Qxo)8`V@lFL%**Hf$Nu>zIEa@)-!->f^iJRY7YLf8Zh4ntwGIM@OPVO7Ik${HQ*uje^ZFIA^*{emBw^?je z0bj}#`ep)MhsD%_Ov;Fu(FIU|q~%XAJ4Ml*jmtl~?2f3UEe`mkqLAX)5rZ!_2neu1 zw18A1-2IQDBk^5@Y-@;cx3k4)VS}Bryw^IGe+{U;b2lCA2msKUUmAXA|bo zdR`*4Ua9i_%%ZJIi*JKq*iSIc;LSU>a;P5}x3oBIz(u{DTXyjKAFgGjh&}g*v4Uhk z&3%0<8`DSNxM5n@C?%BelLo8ivd#SpZqtK(%cqw8qcQ-K0u!U*DTZf4m|o6MM>q)DJ?*@{g~%L zJg~e}ltEIUk4JsbsLs+WUT%Y}L!#vk(R=w{Ip&zHrEBe#31pcG3TKdFcPffhO`8Gk zBT(?{+Jdlg0*WOFyGo0Xfxhpb3(*5RMZe~FLy@Ny)1bNNAFeF6@(`aN_?3HAEiOcb zPeVWIy)v)8L>p#Z5XkuRyBk+|kX1f%!mAIMs58Co)lVFd6v-zNLKF72ZO6XU$KVg( z1cFgnzeQ`N%$ygUf+1iG$(R_+Ccyo;xTkd%nD-!cd2gsFx}SJczml`Q>gJH9To+8s z{cpH(JHAe}^Q$^|NOywwdvkn@;-}^5PTl_-FV0=kq6^AiG(Bk=u7-P)Zc?}nysQf@ z1?ZG^{vRLxNBWj54OLt)=L-oQ>qw#ASY9gOn8r)$W|9>%H5=nN~(yf=#d z;9%)0)+;@W$Zo71<&4j|vduwz~kaLu<7rj)dj$OA3Qq4)iL+mv9fJ+ zZ+?5lR#{HYRd1$KqoJtLcmeBf~2bFun<^09V;Ppg%v z&p+^2X@v#dV=b2r;XRYR4W#9))@VGFh;$Z^`-UL#B;Xb}v`E`apPpH~#z(@kYM`ay z|LKH`Y>uOPBRlNXJXVVvMc;X&;vYCrhF}d+(2}e*$j(=DSb-<8(86FwpRY{2xIK4H z>F$D9`YCMUIrvI{RUM={!uJ(K+2(q5t>;A#h~Anpp!?1Ow(NWM5&~T6S#dW`+r43` z@sEm<^J#4LUzYP?M((=1tJEXVdB3RiWQ`%>&ReWk>zs}j%>M}e7g9LHdQ9tL2#t?o zmi|IpvSq70hdENtQs;_1F$au#=S~jv6ND1=rXL~7M$uh-C?Kxh#2Yc+HYkzqLGB2^ zjRSDCC?yz#6+z2d0l#69F$*4KNlM(CWI5Y$1@f*?uFCaEj3Dxhw4OA(iOs@F(uN_? zX#Q6DyC2tao=%6TETVJxQ?t*&+KZh7w|rnP-iN=xXZs)z2=AeFx=4oUBxaq<+}`S} z*IeUxB7sBsOZfSUhb;3$AV_Y6HYMrFd&sT4#AnN4w(AASdW-|TIziL-`?m-t&p!b3 z>%{4GoHbP_(s^%`o>oh3;wGp~vaxL}uIx!$U1)B*>s_nmDquds zP&xOH{{+R+aiWrXV6!NRw%dTujyu1qkDd32%SE}etrk=E{tFVhY|smrr>CDzHbQH3 zTg?ot(A=NpJS{=CX~qBYgT*6k{QXdzTCKnAic*rFwHDR~w?LLhA3^}V7}&vo!9kxj z{JQ6a#2|#(8+R*VQoR>B?S%|?as&LAGU`D;JdRTV9vJI*nO4JWOxO_3-J6pzsL*HN zg~5cC!+|1 z_AKJ^|MjdDNx~huA^UO{{`YA{oDwmlzefZ#zwZ)^GF(NAyN_WCou+AqZJ2rZW>PZa zRyHVbnuEwgz8}~DR8Yq}ZMOmQ2x)1U8m&D1b&-+C0Iv@8T?zZiXBaG38i~1nmCHV1 z4K}=xgf(0*o04=qV6)SggiW!aHpRp)(Xlm1wb;cq=5H~{k7^Ut|B7Ho63V2?VEz;< z3d7G!mVaRyO~66FD%XiJ&x}f6K%&dxmNwv?23VZMUqw(2CY$MfVegiKU)I?4E{`Vm zv%wiIL}l}Hd5BcCLO_8K_%z|Y0|Vx*qR9D8c{ zDg(15rv~)ZK&1ilLR2CL)#`#>aN%`?Rgvf!bGP_wFWTT6__KSpXy!l) zN;PdPQ%VjzCwB`n1OcMq$omA7h3Ao!yv6`ehq*vkG@O`y`LQDS!T94bZGm%4eA z^AAHr-2ib9y}FT9Hy7@ej<6mH*=Ggdhu?#d7j-4}dXv+Q>kB)THj=*<-FuXvOkKW^ z%zJ&3F_3~4&i`rPGc5TVURKW3%DjY7L7!MNRVdpNcW0Cz<%e83>w(O4wntknu*Z4e zH>R%dyVAz)W@2%`$`TqYMWQRLxK{kAG!Gk6rQYtme@J2s8g81mV94l+xKxWCdu`KNTY?HE{*BmTL5hPAFRUTWXkCn0Sp zwO-hzSKst=jTKq|hQHG9Gjy6AM(@)hBa-+*>0*K5jRJ$$w-a!D%VG{U_wHi@PsB6_ zlr3rBGw4)&HOH6P0Jhj2s}-~idMJg$citu*?Cmx<+iiG)C7WZrN_}R>>m!O^! z)GcIPqm={$%aQRfo~qS7x*{${K#7IWJ8&e=3*r--4F^n4Vd+xYKdi$%IBO3O1d&*i zcdmiHx7RTgFSKI>PYkN2L5%jKnE&<&G~Y_e-HsMiSo13UlZ^CMLB&p)I`aG}65{WefYU4{nzsN``}Fi&MV2nZ5==nJ814 z0B_zC$g}<2%DU^xqpX6sAG3Vt1^oBycRBJVy(eFfm#Y1(WL8~Vl?)r0EqxaPnKDMe z+}?uO!`OVu)1fkmGoB|!f^gLOgYm2E@XeS zE;E>%eMuN;H$|We2akli4xo`d9R(v_Rf-V@u*70tCvaBj8kymbfi+ZUn*+mDNac^r-okp7Ja1A|$=os(vwjHp zZ5~cyB-C;j(7m0!c#uU94vEt)Qy(A@W?B+r)S1n+t9 zx5#GV-4DGu5cUDuiSR#iD|w)jj&NH?xR#d|ndrPZ_tR9ap;p$L$>kUZK7D6osfrD8 zvWk#ZF0M2`k94WDT4JLK_LOuLzNORuYfkyPNn9^;D?RpndRKJBNL1&)q68Q*J}iDA z`;mP}y#V@*jzT*Gz(uX0+5O_<*?xz#R?iaKG zeNGi@^6qK-E-GL-<4-bGUT0>@Ug=`VGcKvT-i zCkix=;!5AWJC&kmSvUMh#$y)bX9I0P@1-T6VzennYe1QP$O+EeZxuVt^1}7uT2ERs z@kQT}-iCnOcNe5m*+=|8?a!s{&-pTLar(&o_LsW%sg`mvQu^%jOWf$*X7%Nl3gPNm zuuY{gIS(XCZL!#UPRc~SXtV5f`8TEG*GDwaZ|NRN{?y{$U)b9p{(HV!p=|5?@3%}- zoB^_PJ|zy7Ua;xOcXFLJoacOGt)qxz$pfSDZQ?_$FfE7TY%7%mNk-q3>f8*~S2h@O z+!OeUnpL>Y#f>Ps_n_(5{;)=15aQ(eW%y*3u(pjuAI4 zXxo)CA8?kPZ;zV$m|LZ9{xkeN?MKDE+-J?a@KwrxX8^})CvdHT{RwSV>Vcv)-GfiL zf!V+~P+XGNqOAjzWH)8uo1ok9(lZy?2i15UEpaC6$JL{xQ@pcOlr8Q~nUdSyMtSSC zQQzl|DjNhgv3)MZCVd#rI%RY-LBO?VUc~H;Kf;;R4VQT{E%6POKKwpT$K`0S0M2xl zK=R)>XSfQ}kthe_6-}?Jv1Q&nS^W@;-iP`$nR7~h*RL_>SUHF53<5;EUf;C*SZV6n zotv<C_=f3?*=^H-?ZK65 z^;n`|OJ+LF57rBRksE<7D~z;2JJuR9y=`-z-1elS3e&i=DW}85$vmKFjoPegs7L?_ zp<@iEQ-h?Zi!3HF32SD~XjT)1X6^5E{c&AP%);ov73>+QB^&g!f7&FDY6YR9oU=b8 ztd0%(IL0tPgX8T$Np5>wFgm)^{bp{R?UkFP`xq|NP#2-3zN~8QX|F1=b0c9!tqVP_ z7gx16q3G7WHa4amn+qK1$ap`?{54D1Un!0A$1X3Psl|P}&GnpYIa_(F_w6oSK;c+3 z>(3S=EosyUV!vuBap3)D*8!bzPW#Tmn1%LawBNh8SXIR0mi^fxyqxzrYZbC<#6g;H z%V@OBpwHR+1_KF{Hn9nsl#hIep4;8Rb_>atW);h=S2OQ8Ly0 zul59}i&@6Gqn11gkjF98H{$*A(>#XlS-+bgI%op8hanLSoeWS%Azw0{-nqqh;JLzp zkuoR5Dt;j?CjO@i=L5%q5U^Bjp?$6WtWF_lr-FOQp=%zDxLZw7eNeEXeM%$|78`L) z(lFL&>Oc0qC=^6dA?iY3g_FPNqguFKPJBpfYlp60ayuS3>8)j&tb-M$0I3)ms zj^3C|D13DIbU_~LI{vh6>KngMRk}IWS8pSeg^wl_!VSdYQ|sPz-;;tr+4GM@UaYSi zM7KjPQ%YM?tLRh1spf5dOJ9`#)tIHhICwUs#K?!I9OhYf&R^GK<0XA!mZ7H)cae#Sd5_ z{}cykZe67&kKIhm13Dm!*?NdRPpBD!p3CW#l6C~D=guzD6@+{1EAs<)!wze@4CTf2 z`K8-eqk>3dvb!Wh)+bByDN8rXmu7paBu)Ybi9#EuXc%-=7h<@cKK|)jnGfdUx;?3n z7inJ&I&@?(PwpU#eUO*NOja%a%vb&@GAQ4!v^BB#@A?@C#{>Iy0Zm54{|MY&?vtu; zwUq7#+=+)7VyaL4PG(VWK|5Gyja?{3D&?P1r!9iEB5EHN!W9qI%O4oZiPsq?Obib`E40kAIe1QM)_pZ+wQDUIS6`Dmcpz4H=f;+ zOHQA4>t?;(?656HYJ1#Y?9(IJkVE}+xE1yX?jGIjEkQ5H>Ck}6G3@5Hbr(H;|A{xo z{F7)&H$IlX%$5p8%p1CVmEpbR+x;l?_y-D1Z_x{*n>Mpf3pDHySFluf9F9mFMejxM z*FUU0C`;xjE)zp4-9in()Z&sNZFl>5Z^y6n)afDUMehGXFkfF8pwMN{+iJ?$-oCaJ zx^}>{b@anaN_e0+`6K%|kG3B8i54@uFnrF!_=Y6ES=26L&;+8=Bxmg9PSi?2RLs8` zQcUd9IUwO9f1iDDjg;0bv~Wcls^v~BaK&2@vF+ZqlR99HUOANUwj@e$Mvh%Sq` zAAoxjdbkZ8$UAYvir1~}8=ew2#E%qD5-@foUc1K@vUI~tPX zcjaZvYIsQU%gaTL=E5gF3AUI^gytdnB#U+#a-^o;mu03hXLJk8geA;@{g~VcCt1Ns zLD0@3ma4tgVzS3i!rBqp^hXsjnCoQW!}6tFyGU@FTY@DMRi)oGWY#gHsJuN5QPErCPLLkP z8983d%NzPDdv$&9)}Mr2?~=GNlp@bytAN#NAX!m%qpKOh{o2S5ScIp{vsL_~zN(1;SjI4eueKX**FFepE~99=!-CJ$x!N8$T5o11s0kHuCB}sL zJ6(CV^7*&7^qZ(x>qbxh=#l+#pXQ-ugvx%IRB9)Tvg^-JDuzxnP-oTVty7X!GZ#%* zX>yB%evAeV^ZLSRoCL~5Na68=}&34QbJv_+>@2hkvKzwr9xsdv)b5OqXaERT;g$Gr$YwltRLSNr4 z+eNp`?!s@?$WbbI$J@*1q!9VroDGVhHaOx#O!i{9OMiiSrtwhL?->uVM$N&3(5vzKBa;>i?Ccyf(~!GN`S5>UL#c~;{u zdzmm`%9EIH$5I?o>A5OaVGkZs5C~g@?zNPil1e8ySi+d9s#fi7Vy_2wD8@F*gR(e1 zzig!zs(K0Mus6TDr0f_n*9Qz|NtOuG7JxNdrK-ssK8E`PIY(3r6)25k`V8L?YU|Sl zxBHowr+syk*sTF^s!}oU;QG~dSStc5L?x!>*n5`Rzin-7JwP4%h^{-oTt1qFtSNnW~o9BEDE{Uu6DAvIoPOP4oU15}Sng`5Hq%Hau z%4@LRnCIyiaRwX|B*bN=M?2w&T5@jti-TLkJ!DpJ{HK@syUR;Lt4@mCD;ef+NwH!_ z4)=&3@)?8exGbo2+}vJ7N7%~*6l1i#^Bw(EF~g8TO#B)5CcPf7GvBOFI33TJsZ8gr z^utdjmX0(&C2GAKHSL^se!yA}{}-B~(Xy#G_H@*h@O670uUse=0iQ3}7fN>0UMY8$ z>Xxv|hSPVO#H*|DPKJ@j-khFOe#OwzyL0Kq#iqFG$~?@{unK&Er1<47;eKX}}|>r=rp zs^rzQ<>{bB)xYHKA!v_jK~Lbx zpjO3lDr=jS)|p+Yv7g`WhHEayWrt>(mwX>Rqwdjw57ryVpayCTvAPh=r^{B}@nj_@ z$pM3{Yq|f8)eyy-PdAJ^gu=&XaE@7^KdFh<`|2bzD(v17EOn zMpR^+YV<+?NsUeYQ#^hzSZw80_3Wrt;qKaOv6B8gq|k>gR58Y%SJZexA1`wltf0{5=>T0D_!}0 zWKevb>MlnP+$($*8gUBS|NCgpDf%j|9O3E`Y?XAr+{%UgVOA@f zk2e#;RN81;9C1Zpmdz^HKWMLpWOU)gQc!T;>hrg#|4gx#Bd=)>GdLFh2X1K{WongT z#R)Q)w)@HCMh5y(($-?FjQP6~V^roh*~K3|U_5>)OwVt6h!)kB0a;mq0y3aD&I4t* zzOqi#O=IeE3?uq1nS~8#m`* zx|+epo7iCGA@&Y72)_>R7~xk|O)PRguo2vQNEsg9!%-m&LxpCJZ(d}VhJgt!MZ`4*OPKovo%rOO z@?t_9DUbQvB6GAZYo6AOU}G{)LSapDi7rO5w<7emFvUH{KV#3 z`^ujm|M`CzRnP_8clAnY;QTCG2{XgOYd_MgB3#7IunDU7^#dZeC??0;*c z+de&ZaQUHGu-cos_Z~L;TB4csH{GMESFvY~D71nosCgBAGFjaldq<;Os~8B z{nJ=k1=nX~9)ZRd$Mu0T#{WMDQ>jMomKd~q%YEz62!1aAKsT3J;zyX+rW|?GN(cTv zG;k12)m|UA#bOtv&l{63{T~3qR`@6{0oUX^ecQ3)LyQT*5GAvXedYKG&rj@Y-Iro^ zm()*`(;VgaXAI75c)H?Pa(?3P|L)!=g>Y`aCg$?U4mLU2LylKrS$h{Z4 z$4)cVh5nW@i8Wck*A-0gvlQ5x>0;McbH3Z&Swb0Z-gyf(E4Bn2%7ID@5Y3}^i&=r$ z%r|xiT`@fbf9vI~XM4AvaKcZ!2`;V2W(_Jb&jZ4-h9{vL;-jE;7M8q-?RRMF$FG!X z4vH8sL*LyC+_jOko2E~7nJ`+kZ4iv!90G}To6&wRg>!EQu{dV}M+A~@;(c{NbhvTb z3i>iFEE-Pp0VmGZ!iFkoh083U*Yz1nW-qH9a|{VzX{FEvZk{A&=3wm9!+Ju^&zkc^ zsC$r&9wo|8>1oe?@yDvsGZ7ehI|HkXPK?k!3{X5{Us@=au30Z_;fO6s0#ask zn-ZNBNnn#GO7qoe^}tUNof@(wMStDA!jlc8gz2Bv? zX<1Zy0n2N=C2qBknVm-PC9-|KHwDf`)6jdyR> zj67DFa3b?kpzkd#sUXg4X3zZx^>%+8?eF^SVzk7B=ap!etOO5^%2u3(*W)FpgBwWJ+CSww!lGXL=rQF! zN?QCDDGk;Gt_F)OQy6S}{4_JfQTwUoqrt5D{@qjEb+qGKm(H|do6I0<Ry#14ObfB8c@e5121QDulm9&BIFFzm71 zfc?zYw3GWU74P?gwm#(4=^y@~AH~qBB=Eob?P`SWZxci7CPe>#$o=drKR*2e$?L*C z>9uG-{`!R< zbzSLF5Z3?j=MMrdbd|{AyRNkQF?i?$=CG>8jW>7OFlD%kHq7dTani@){F#VX&l0G* zgR5VcCEYGNjkoTQ^}|sAwI|bzVy=K+WN-i;Zv`c(+|lInIHGj(sg9H9|LoS&Z>Xsz zY^z$E-Oh}n60VeLo?Ed^>igyYIB#=tZhg{;f90lij_5a0t_bx+w&4e0V~@!lR)x^- z10VfGHKyudv5NoB7$VAd5zOKZW%l9f&J74@QW=9MHY;0MrCU_#5j@abdloj)RUTpys8Uol>b z2zRPfF5h7HGV>@17uruAUSE8@{?Z5R| z0*9`YMyq%&6yCuPu)XksyHvK_c^5*~#+nbW4Ya{uDJ9$8dxS0`RkOpxgm7Yqd}L>q zA&h&!G1pj1Pm(Qcxli-)YMyO2Icr-+(-F~d-`gEt!Tbc{+7^Iu8rtYpKag=rE7JA$ zSCW=J`#4^MxMOheV?RJ4tzaU#<+RYD?quMgnLY1R;H#DpL-O#61#Kh z3i+R{_kHl(aj6BJBXH}<*ozAJ3JzD<$AN2(BrpEFhTLWV1cg#7(B(;;=beLUnleHjk;yBDLT)J_oTaAp|^8@O& z&&9ISsEh$WKnud5co+_?T(LO_2jB8Rhqg)GlQJiA4e#1aVW8TDkwLVjcyD7WfG;Hd+y(xgx?1Hgly>{ zKD}QYj*32skK*S3CiY)@)eq6oE>_EbJjvxErD&vR?fO&o!8{& z8ItFRp$Yja3&dY~tMVW%Cz9CrQjznp9K}(>(7lF^ilYAI(GnG^2%SP!F6xi)!W_qa zd51hYr2dkcs-b%h-&h!xh%(Kzdu{`lb!AFRs03$OT*p&E^-<={uW-v-9n~Bd9ruy7 z2ZRyY;;nCXnt%wbh^Ublk;=GFk$sRx2cee*{e(WzPkNu zrfe4VmHp$j?w;Tw&l{<3pFSo=LGdz>fy6CrC?eg1P12Kik=8SQ=RUDX2eGL@!A~-d zI{A*8v;#cRnZOi5u2W0CL6)42cH6H`{gn^Z3c>sUA(6zuDYn(agjF5n(%g&`LwVjM zjDFZt+X8_+Cyl-46@F`@J=2?gQcp4?|M!O|F&S!68ULTToPov~cuhjQ<#ZH~3B?TN zBoB1z1zZD;arIL7D$j@FtS{fCMU=uFzrs~gH_KnJSaO(|JDOtf-7*V4(ea+Ui{>mF zhT)C;JfM29f?co@WBGuranFczob`42Bit(MBT=MeplRM)kJDp*;OukJz3w8TckU$1 zbzxcRw59VzmWs%hq#wJc(UNb_l4I~LL!=%0}J;Rr-Z#jGS9 ztk>70#~ZB3i(jrAsaPqehkKGnuDHKb=7s!sC3RRcapKv|xERH&X_yryJrr9Hc8_Lc zk(=DUxLa6JjpJu_>>F78l#5NNR(DZPvT)X?n>*$w8Qe_mNjUB0w@%Z~rVu+?OmNe~ ze85y-S9QtrdLj(0@rS(G2a4p_%NBzp2V1%c-+})0{F@h|!NvSt?CWSup)GwLGUJz| zLzng`*vV&KpcEwDwS2WN!QUWo=1SoX_@Fn_M12 z^mwrw@gF0JnXUqwYFxB3c2hYWE@P4&2-+PLvP%jK;o*IOH;*DGk1iSJ zAT>9Ht_c6YQCJBb)w0NqzNePobbJSeM%CM5h-!z=`{`Y~tP`j}725o*D9$<~a=(mm zA7PjcMAb~ptve?tUY02iAFM2+9GE*ZtPTc=YJ?*{u0l z`xo)D>>la|#@F!;+X>Ux0~P9xRB>yLs!gSbqv zX}csA_Z?`KB5y^uE~%yQMve+|gyl((TU{~V={4K%t1CWGZ_B^BvyRDbAB{hwnQE>o zul%C&fuOos{J4$QOuLQOkBp0KXy*?fPlaB>4wwD_q9}H_p2C7P^|B2yD)Abqi+H~w zt|ZLXdm&%du_2W3L-#}kwce7h5$Q?0VuLStTj^)4i_!BO++#I{9!PhEp@^GD6P2F| zKWXy^j~B&F%)hm)t|v8d*V`bc$6AIV53(+HFJXG;QRq1Cio03EiK0rgjBGS!s@v`M zXvFH{Lz`bZZ*B0VXUx^4LKTw7tkpZ-u{}N~*QNp^Z#W1pAIYjeyAeszHo*CLaZFzW zOV7S=I2fU1$i%-1^OqX_`PjG%{blfMxsyV}b&cWx3Cp__1P@WlNq!F*!5Q2GE^zl` zl9Vk_8ma%Ep^GK9CdkTg~kaLe>cabGk?F&D)9(%2g32anJ~OcYMwUy2)=*!U(c(M+_l!Ii56 z-pK`PVct4+)0JNlzhTZ1`&{*@8e?>wWzFk~aq5IjU|>VGBtI*RyRn`?wZ&}7QE!1% z2BBYnpf)@F6P~;s`Ds=Wbb)x_^+@}4LS4f(nXccMjA9u#8|nqTy29Ej?dMK0Ycb0j zuPGKLtSMra1u2t@H4C#2EM$-h#7`Xs1&;>zP&@e+M=?*XMGlS1ERT&NqO2vGVZJmc zq--|GW^Pm{evLk2uwRe)YahN@3ulwgUG*JY^QhR5qn^N7tv$V5O>aFz{}P${2z@A; z2Wkt2kLgoc@4@CrNC0em-)ebMmY;-;`-WM4SniV8ajHzSCp|U(&^(kp28vn@BEP3f ztmo0tM5r7~E*E?41nL7@KlFcHS$r*$c+*i**~nTvCEb%4z;K2Z7l|AuwiP^G@n2i< z;p@49$8uEcRA2us$TY&J3s?LVUGx*`Rv6NH=V?aY0r9jXi!=U9J$6Gq#scqZitA8^ zUsqF)ZCtx8YES#iU1|gGiyc4S*7(V=RimG|Clk8O$xWpy^rph@Pot&fEU&7C*XDb* z^e(ei-;M8RkthugG3Fb&$`cuM&3wXLEe}ha+uXKO+Fp7ab871!3< zw&oYB?xeCwwv&l3wB9}aZtWB7xiRT$CL>I3(UqR|;NMD`)p3Mpt*~l=9WcG&I;PEgBj>dS+tCxdsWF*?gKFw>HrCu4=9A%sCqxTxN zuDikFur)_3hq-%-EvI62zg2SCL&8}1MXLNy3#piR%Qk(h3-;ziq((sd;cBu}i{^XM zVT#;L4Jw*w0WUJ36@&YgF+TW161LtbXO%UsZb-fQbd{HVL2uO`esa_G9Q^8R zS!(bB%%S*$nc479k7)jr+iS{)OA3%3e}yxzP^$b*me~GoarMBqG|F=V-KJv&+S2-} zwKRg3N!9gq>&a-l&5&oY|21u7-q84@B^CEaaf8^CFSXyOk0Y?QfFBDN8@WMxPqpdC z9iOMw6F<+L_y6y5a6|NYBInY z*^IvlM_s4tQI)=7G(fpvyUoA~Yg|QI@ihH2$1O>|RJ$qglWg`bwrKr4bSLo=H=thq zv&S$c81g#GG=C(mIMQtyw6?PdTp=G*$&LalWM;V)$y%zKky*OG*0oKT-;ODF4Ezp$ zv>Q)i+MYi`Hxu-%9C$LsGQMAis=qvL^0CrYQun#0lS_g}v=((geR4E@5Y^LEx_$)F zzvbndpXjVcv`vpfZA%#qwIFv2vnGd;Kc%#Lg8N?FP@7jpw8Q=4n%m(QMDiME$0^BZ z$C5dfy^QC#kE9D5B~8~1g&|uNt&gK`o!|lkrlO7~Y>HBf|H64!>2q&$N#J6&p*rHN zvFI?^$jz(QzeMoLmeRxK5UwY^Kl@|*c&$sDFs|JDUa_kyv|2Eq;7Ht;bg-~Z5^GJL z9%5X3^9EzMIpO=J{0LSOciYTVYv<;`AF7h`U%3r zFxh=_4N;`~jP+6x-O#VM0Ir`J&i@?7GgR|2!8M-6dmSHMbr#4=D14N6u{4w8F#nWrD( z`2Q{WA+RIY`QI*?!T%-uWfM8+EB-tGYA&U9g#BCYB&FTYY&xQKG)hU0R@5=+fMr=K zU2s3@(uGkyt?ZwiLw_r?)jgeAdpjxUc`qDO{+XX~Ctw@Idi`!Y+|@eFPtAvqZy$ud zs6%KrjTUOBxj_8%+#YWfxGnN)D6v1}$@93rqqF0w_v>!&?4Y?IA+<^dU|~?e)=y@S z%#VjK@0lAc;FYl>GRn*u8vYPdtcOzzOTsizL2hCEq?Tmz*v2X6xnLW~^BD+@DzPw; z%ymMzvlN@q7`vHKk0eLjJ~TA3(lt!}lz#DHYn;v&aue-@@ltj6!)l0fh)sSi?haeC zq}d~x!u?}=%>$dQ@cCix*X7M8iuL>xKQqbncFZztkc4)~8qeP@f4^#K!E>IT+5|oP zy!fq8YN~C%*t3ygfXvHxL; zM`qEryz*fRpT^!X-pQ}#|0P_Kk@4h&>B7s4r&@YgS9>UiwH3!$BT#d!T$~f`U&>|L zbMa3bEod}wQS^SX4_!Rc08)9GncFl+IEl^%rQ}F-uRM1&DCx?kOD-5gi_Xoo-k5H^ zCJ=uUdy&3GQJGqZ9pG*iJg!maB8o znQK_ui=ybhWqMu-9|x4|R;$Omh7tx`mRuDt&F_9zwJy76LOq_Wca%*ulz0gipS_WkY#tjwC!=whsbYg4 z9gz3G-^MYp!N1VVUfFpma68i7%)RCa^WTjyERm3b*~t**@Ry+M_~cZLK%G>ks~+Ci z1PNZiBb)bN+psne>*FyA(?sh1L2|rbJ(ZDXraZRrri%=8HX2>dQ~|t164e5 zy;D7kmKWE8_HFdX8D>=ft{jD00vgD;As6P9OyfE_BPvj#)TubfV_l#|JEk544}(rB zvIf~T+1^N@;Wu!ov`}ZMP)sKJ-aHy#qnk7heN<$QZcp0yAD+5f*ewsWs}6Uv-I3d` z`r0IKS1c;tBe!a&Gxz#QS?20tw(Q~04p^^Pm zy#KN!^?1`NY1712=d!gE@_|VnvgSP{50Z9)15PRopi5Ct-X^vGFbcW{B><;Z74QPYyJ zr!pQH#7Fink6JNc8Z9K3L_GskQNFvnCyECQK2YB zp_Gcu5QcZj9<4K$qKFw;hFPxf)#rQP_g`@T`1z?HdRz~4o!7Y>=W)D_=gaM=%SUrj zK-KY2yhk_byi}vp9M~^InpQsd}Xa)7#SRv#U8>wN^_}sNjHOJ zlRstcL?5#EK%S88BM0RHlRcQz0`EU>YZxL$g3^r73~*@fb!Cwh;Qj;TBUpIcsj8!h z>!0=0FIR6vN3F*%g^yIe;d}k+D%>O*+8M?W^}rDlm4ULlf)5LsNn5G+^K0D%gZHtB zw|gq#kNXB|alGFdBOAA_bU709_Y8dIwrP zFnBTjaMvK1T|Dm3tNxPt5fV;=tN9A>yR2x96nqNu9LT5;M}sBYVRcAU6M_R)dxHKu zKKe(72|m_SVpqud)^cErU0VtNKHgDq2eA!ima!f3Chb8rq|8hOnxL$&QVLygK-*x2 z8Y-hY2laF=@j8C|pbJrJ*I!jpNT^ak_TDc)Q#X7J&-xM)4Vu?_li$(wJ&+z(ZDQ}| zZ?^(lqQ&fA>N#NDzm=YwYIR8}=HM-Z+_s3S;e>aC5Le^WX}szIWWDpyi3(1oTNV%? z+E&ztg&#egV%Y!jfrxgpp$`x$z=I61o2&JSql3e_S?E+DG%VIExO@rfo1s}&0d3|K zenNh~FBx%>AtjQZ5-?l8LAteW4~oZLZ`_-o6P;#g@@;|LmtZXhR$`m4BgTNMF1*mC zaMNJvB^m2b2kbA&q6%_uhILB8VcsKQ z!J=T`V08I2l)KcQktA0tu3Fh2yEC@S z3O=NFEt@9uFrDLo))KNg#d!egYGlt+%_N#GiCC5A9H%1xTW`-6W~(yM+goo!3EQ(UQ9cST!t z;k_X6!QS`{D#Fxc?86p^S^=NC^P4G zYkLUIYFR>M2@nskE8^S zI*(?2B+p6$N2>{z5$TJ=d|~+R^WF^d?IeK~qj#jPyNx#514ukvExEAoAR0W+>Tp&r zFo-U~6ew)TPS%A#6JawvUan5a98B>$C(N996*uKK(l~VyLdR-`Eg6>tdVi{0GnA&e zov^XO+(hRc$*7U$jpwOUIlQXO#(w|~^OrXnrcGeny(l1BhJ1Up@vfIoE%Sz-@bwTn zwub)+`12S;3ppRiQ8TtQPAi3)g0w}05oIu16?+?&01|$Kf(Cn#5dkTC_6ZRhn5{N^ zdB;C*OL2 zS|RmYiE-$EB7vk6+x?4MXjlJ|EY2bWeA^jCJ0~@{JV~aK3V|mq1NWCm)g1q;B@#f` zb{5%P4oMKEWmnd4N#(l!`S9D-CZJbCB*$4MhZhOt{i_rtrdl)JF#<{T`lVa$=N7^wP8NuBmd(OP}Zz5z8+Is9h)@y8AQN1=FI0g0sL*#{0ZPt%C zn)dzIk>tdtlRo-DglA-E2o1e8|FqU?$r_*`0?fx8k$AK(2XJs=S7Zl3N^bBh^k01G zu~Xc%^-<%AgXRhu#T$kW*wP`jCO6nSQA$6-xlIJL?AW5-h?RWVH8_=3<;i<60Bl;0 z+I{o>r0BH$y!+pJo_%?55z9HWI3@Wtn) z|Gf&-$)SMPvo{u(l}J7&sBD)ayTi=-FJBy-n%59fOb<@jq6amYWF>;C>YYQMB|`X@ zOg@m&|D2Kvj@MBfv?~4NoBT4(&8rul9^vhAzc^HN)PQb}yx%H(vzu zGEv1bJ#S?Bl5{wEnz5A<-5;~78Kc>(!F~QeKYX{V_R`gZ>F$iVc-#%fm*TDL=U}e} zh#{lZaW`$&aj7^zsL9qYk%hljxWdB8u`ou=zjjk<<@DdU*ar~vkd-;BAk%>y#1e8D-e@L z4h4A?d2^RDLz{~3fADI8igYeRCFwNWk5}k4I`!@F#=Q1-WpHX`zMcB_!2ka9zeDi< z_bj*)KUHAt@EuJ7d%~Cg0$hczF*uopX3p~Lhl#r}jvyvv zYTo)>+49w)GzQo6*5$>23(c~bq^Q<72SC9T?-tsH7Ou&dZVZ=6!6Om3`m!zUW2MFnGu;=pZqP&a>Iq&dn$zXox;flMo zTxcff>rn(a3WpQ)*x=@*o(njg9hzZG%}b)We^%@!Ha=b3NHd3F1uxv^Ab_>t5_syX z1y+HZ%A2=5#&1o4t^%e{KtmL_#AT^%Gx#rI{FpZ-E2I|t`EWu^mnvir^4|QQQ%+*? zkJ(zr;M)!MM0~Le`R=w8BnyhS2rl4VeOf+5>O|&@U`SW+I3DX7Zf`kty#`sJ!%?^; z;W@+gOxMo}lyqQ)fc)Fx`=4TplRrs@P;W!9P9atb+j}d89dtduzzw{gg@2@UyzK0xIhGS!*){n6(cYT2DSbxkJbV1RE?$0;AZMERU z<%dx3#JaQIk>A>zL;`tn4+ot?I?xXKAPsip6}lem7<@9@AkyNSi`y zqrnKgRV8^-u2~~@vkXos=Mi^($gFu;I1T|{*z~Qk4o8GXgTu1&*l8ILaS%*ApJc zp&a5V<)3-)a?7jLaII|h!PJ_BiRBp~oZ_*FD`28!EgN{|*x7)C!| z35;ojikczV1vL~pJ-^QxGgC>FzjWk0A>R$LPmT!&)GW6H+;FYur0-V3dtLrua=90L z$peTL>i&!5n!mKIWcO)oBZ#<6m3vOIv}e-Qf^lJs$2Nc#39>)W4+N-RUlJt!`{rP5 z!h}NA@%woV^TX2`#IVGvjkQB}T_70bD>+37XtF~=OFE(|a1^PP&*C_>er>|H2N2Nz z0ey4jco&rr4xu)f9q*1n$UQ{UU^Gp@q2_OlH2LEXKzAi11d^M6Da~O>3`(bAk9QeY z5IFL()6^45s=3L@&!52}mE$Jeun>#;79SgNKVxLFIv?4KCXJ#&qP@6`=5tcUS!%CQ z?*;3Uzt%vhj7n+%cTNTYX_$T7+7BpkCwdcU;jlZlODVylb&!#X9fFp$)Rhc0kq(t zW}+Pkryc`81_=U=%N=`R^7T~<^7Z!^30&TA)L25Cbg&TB0(Rm&WEeK@(dL?iw4ftqX}x?&68FOXe^=)>x28sKO0c!g}@h6-(X*$vG-8iGHw zcx25kCCUN)W!3t=&**}o;6~Ii6|4wYQ&@B8E)qCYnP^GvgawTv$xI1-!Lw~M#6d_( z{%|c-?SNp`*JH~+B^|Z;BR3yzDTA{2{5gSCu2KZV5(B#ywmYD#{^x#g&WrE8LJYn9 zHDasKo>wX>M>VaDdB42dMKH6GxGlmgM9L>uA8IXV#0my~iG!EQ`|z)t-NSw+k)%5- zhN<(eGf8Pn(4%nw6T$tUfTJ{JVH$G`qLKIR;)q>Uc^o)G_&mN@9oz^UloMpx)PfGM z^WV~$S2&^$p{jcx;2w)4<-$>?mw;5>s|pcW=qUtLA33eUlu1#m2L@EI|I!f0of4@2 zZwF;~1wMh@+4||CV}l z_yuipltz{$eF8g;ciGbVwF?x{*GO~kW&B5-boo)~v?Z*yZssyAm7!_%LXRvDyRoMz z2x3G=dG90;=MJI|=7rGu39eq6xQ+N>yy)zAL^ogCoJX(Y7(1(^xKoJW<)e<(S|rDH zAGJU1$o!0j4mwA~x_GAgn^pZ{k=HlwRCaHg_Y z7iiTNsP>+Kl%(#3#D4I~0YtZ@gV&c!3dKBzk$|4h!|xveiYZ)DHK=b8aR*DGIPb#A z^jIzQGGq=7d`7odtI(c`tbj9A)(y>Xs+E!vC;_s)Z>V2;r;RJ81(lvJ0lF1|7iX|O zDw@U-kVKkOPId!fM@`9e!8cG-d6DckG3c}90U5@tJCqeqn9D&EAlLH9F%zGj*^RbT zK2uotySq-(n*{(ZUr41+Y*dFZZOW~kqbTbJI%J-T1dG;JNX_|Ot+G!WWx>$qjGvOf zR(g^&L6c=piG?w?Thj(0zVfqI$TOzLXH#0%rzbJOPr+8ac3$bW4ZR-H{roO^4hzFAO0a8e!-@7|d17;Rw&mn{V;O!p)KHVS9 z+*cK6pl9NR-5&8nFQgiXHmN`-QMNj!MdRXi$F6pQk&cE+?6OpEO`#4))eM2ZD#txM z+E~Gnx=0g3YBA`)0T&RcqUAul(2R*fvJMtaKw7~h;AE9O+*?PB$mwG$yc~UoUhq;wy2#avU!=I;3UB zs63U5tB9{2|2a3Jf2BygZp0Z>`I18uakwfWs3M$r5E_KA(h%J?CNRC;_z~h;v*r9e zM*5)O)inxtEgE2piM=4Jkh`LC;Etcn6Ouzjls zG_3A|YWI+`c$^o^lfiDo=myozO1-o}H%P3?P4V`$hiNhQ(`?t<(!qg*B=UaL&Fm80 z3o6{ge_Y7{;zW6O53s_Qvlk1iarPI~95@hA3ND3<{%4N!-mPqXTghid`IN(>F(XZz zUEP(*RreWzRe^EnD5U>7_7c=8?IcaaLpUI9r&~WH24S_NE}}qmj@lIJ zF91$*4(sHFkaG?I#|CJ!GVnlOGny*2;Ii|HM$DJXQKN(9D;1XalfmQH=y=z1^96V+Q8DwoO|UFQ2cNtxjTy*6wT4Y<)7C7DEN2+YYE$rTPnl~hILmz zgSDyTt}K4Q>=NF6lcejwi{}%wtdc2q_3)7;X}8_-u@2{H*;At4Y%XbI{zvA+@FD`Q z&}X=j0<^cUqRS8@>RDlXU}#7k;;uk=0P+jPWwC-!KcmFQQrxx%;ZUWD^=(dW0NoD0 zBx~p+;!hzvBh`Ghm=IBzHr&v;Xa`I!Fugpb`99Dxyh{Iy-(M=wzKrj|_E5*g^Lhjl zo|G~|1e=z2-_yz3rs!qykX%~44V)D=4jlS7iDAX} zi4B7A(n9|wV`nGQM|G??O?k*@UG?+@uqa?kD2mX>O+YlojLia38_9HZC z8(t3ujRY-PC?5LO!RkC>2GS%4#N#ME=&q7>u*IXBm{Z4pyGMRJHO=7Hu?$`2J9O6> z)RZEqCHC7C6d+Cv!2dI?%Q`1;6`v+a2dMxz1|}RmxnI|(2VXY!bb*2#MTEsmajbHz zxOP=X>~`kY2t)#o8IdbDn&Po#*cbIdpBL&$9SUVv-iO8#|I@yMiX0AOx&$fKAZ<;i zD^;Q25$De3QGQ~MCJ#6)8q>O$TTFisMiPUx6I5I3xw~J%{Y7WZEwx)W@&2-@o}qrI zT`(#Ab*XI|Bu5yScOD_@rab0U7R-_k@(P_Pq>bv;nCF{u^V1qdy1mP1`xDwuGA+h| z!)7e~v&f{IC@|kqOp$BG#B-Z2TrSXlnM~2h2K?2Bmbe!;mtWjZiz?0rwWb=^CL; z5;wM|NG%=J#G`TiR$_XyKz^mg<}pj+r^^w%o)4)P7%{^2R;OHHUu)C)k7{;5suF8L zj=0dyppJV5`HKfU)1(a=WeWYr7h2i)I7uujBUVk5b~Ev@0(>lL=kEwBYg^d%5{dM5kkUg^4yiEk_sHE(<4f-j}nXLiW=ni@or_h4G zv~%4t2fRRlYH>_1+yA@Nwk7y&0b?k;=94ZEwYYp>5z~gos<%V2CI|60E9r;vxj0H# zqM`dr<@MPZX;L%jTZ%R8k2(Fd;7z$VI@G&WduV_6(p)L1n#WNn0` zV0bPDIZbk(CJkqi)Yta;aL=V*n7wme(nO@_oHPn4U1XX?&SUfan}d`8oDncMq?Vji z-|dJCRm!o1e8?e0f;5vODg#*S3*Nab(eGCl@Q#kAZ0?TSI`1<}59v6?yV_SH)u^AKF(+C1@jvcwCEfa>{t6g>5Uo9dJt8p zaIbYNYCTvV0s5-3g^JtobOB66U{JB_17l-s^3wO0^PAg9BkHuR%MK3w7!lah4LRWO z;x2LNV1xCIZxa8$25SvU)55Fp_HI4y6KfO9)Nl$7*A@__PeEk=-}8G5niY*cKU9?< z=OqQ6hD2wg?Xp%#`(S_ejsZ)+vXYY0ZLq3L)SV`2;skHi&%Yft=lwpXV6Lf{VgLz= zWT+KGP0wOgafqEFJ%fQIskYLwh)9~D_1g>C;td>0*~~6)e$=8D*ar>E2YL|Gc;S5D z%wKBl*W8{x6A06h#+$LoCQ&p)YT>#U7Wt(IIL#=`7)A|E(od1q6LBK3P)`u+ZsoxF zyioZjg)UJ)7*@u4zJf2@$~;yg`1s>akL~$Ke_s8Zi&>b>SIS?Qy!Z znh5*WWmkg@&>b8^ehnE}z{~}K67!t2ELNjhHUL(k$CvIYJ%l=xb`w?7j4vp3JCPKi zN=!zXY2>B)kAto$hEd&u(}rIDvsFN4WQ`!)l%`RXsu(RXzX1`>B8e7p<35v=Lr9%< zfUEv`{6#hHW6Sf@^OD_>K+P83`|D8)Qb)cO(`Xs;=PTrirUUt#n-;UYlp+OMApAxW zYW_YDOF4<-Opp=YZBiaQkZk>!y-OqA-m6_DAk9MhFhSk7npm%*2E!rvYb3oOv{3($JYA@%JbU8P_HY$hPk7FTCR!v3_1$Jp>44W(D?e@dB z1o~;WCZZVKv*BzE`z@V-RU{9fyTUgw9P1;SwVK8keRI{2Bi-Wq{iy8$%!^VQ))z83 zbCWR>%=*#7DCw0(DC6U=r)Xcq(Qra%7B`JO9p9xXe5MVc`5^piEv-fHems}T zC+|26+p;#f1w#0=t^tZw>{f>hc-h_`)QbO6ySp?T+w9m2f^6hs4ttVeRfO5V)R5am zol8@V^5P3uC%Z<^47w-9JaR(ZBCEt^s-(J>aE-qyyq7MSAtrYyV%JOaI2a4vl%<`5 zPzS1usvVff;He-tGie)LkN8(r(uMAUsUk@0Db$P4MXCP4KTo%Ch!;X)kF-?-*{lk3 znDJL;xjuHowVt?Ry-iwhL^frB!lC;=asHiVGtNKnh#q?aEvn_j_yKd($Z0d|zGVpz z@{ye!rGom47fZd6&m+xj0;JFgRY-3iQ8~#@k-0)e3eyZYNemr!`1!SA?hDvE)|p_$ zernHzL;$h@3BjNyA4m5$68AOT`fuT#L;i6|1v(S!%rkbLCMqWN^ilVteK{*mUKT4| z84L+&$atR)_8~MF#O}eGoK6siv2fOvD-?^vN@whmE#il&w!%6*gI?SA3#H&m{0DO@F{^;^T2KK!Faf`8|IDlw&jhyiPL>&}FGurm- zp}K(OL_$q)Cl>K~%_-j#agc^tRYH*s6aVz}5XK4Z+VB5>Ma-J5!QyYiKLL47;3W9K z7j>dx`q&wjS&ge)_YDXyu>l&gMjeMV8F9n*GAg2z+|CQdO=KY~gIYYt`8aCDHZdB$w>JCe97uZ`3oXjHif;XQv{y!_a`$|DWZCxf`=gM#K1Z{abgQ1=rVus1OY zhY!oH0G8%3$vn{6$dgtb1<~dtdn$JW+d;~=j2!;d@$=k-7WG{2j>IPRd7Z|n`G`Q( z-<9RnSQ@Mf>RwqPHNm=A^@ipLl>Wb%{P!lv!g~N%D426!Ym4;YvtBX+dr9A3vWUJ0 z-^tT_m3Bk+bfI&4&}x(mZw29eXajDg|vhJ7@f3Lo#d{;{su4ULbzvR9tr;Nd)bPW&8CQU*=^R_1E7h<}MTgJDipR zm77x>t*H(@q$ApYIq;zVfaFcp$dT?c>6@hQw!Yrf&#$FT&ckZc!`rFqvHb4H`EXyW7CNm}wLZsGiQZ(hUXllwfDb}m@4@~Y>l%LaJKU6lAAKBU!+gBGO@=AEEQC zy|FgbV2zk>1Jr4bknZWad;W&zz~AsDrY204=d>un-`xaz#q;_v=Q0YQN4yK_;LE=? zW3|HPIza8Ek^?8#9QvY$z`F9&F%8jX{OxbEW(^>_c|kdgYFf@&SRcXoZfboh%om7l zvCq$r5Fcb?Y>6-36{<9bwyH$zm`E4&zE%TaHHz0Kg z5LH3^gJk^;Hi2&9W6S}CQ!AN=sEdEU4JZ$3cfAhelkA`4E8%58y+{sK{Fc}yK;$4G z9D!mUYzh_vZql`y?!<7L!v+nC6r&=7}F^DWp7@fscMhFv3nKmI^xiFgH_BJ04}uL8+ki3*bu z+cQ5Hp-uRC_Y`&J9dys<2Y+(O?4~ zKvDL7+Uxw}^DwKcYE&;zvihVHZIe{TA@kIe@;e~Kq=v1);#|PjTfpw~>h!L!O?^J_ z`ivZZ?|LO|LCy%`=gph2XCKxQ^2!*q*aDoTo*dXb@3H0S{kEkJ>iqx-zn}~cXjjEi zK7xDO>)^(RkKP>@-R`>F`I1-IRRVrn_Q4OSH4iJll#t3AV(RAc>1IqdmqQ2E{Ho1r z_L7KVIak%RSvPpp^jpHvkln(jUu!Z5`ve~#)QnjOms~)AnuuzRUS*X-cGMo&uDK$8 zK5T@W4`|%ct$TMl>%^I2H%U4~>+Y7i@N|rP2+@#qvW`tsEEQakpvGIlKRkqHjoN{- z%tQJgE4<;%gI;%1_7A4o@N81R2K@JI=rm@g!Ku3nOkbY;xc>m}STp07GuE;6x`D-Z zm#m^&6uzNWut@B~xhe4N9M6j=ol_d17Wa)|dVzM+6~-UsAx$5R>nQ<1W!FL;NR076 zk;@)Dk1Ub3ZepLZe}9t6xSE+%cvmAD`_Z02UJeJ(hES6usi3|J;w3D%q%Vj&dZ0o^ zmbGz~Hy2!TS8_uU4@W}4Yx|6V>f{SH6Z`-XO{UNB6Of66@LLBKD^)kC`}dOC-|qUw zc(8^S_%DFH!Sy)r2cVnD^S|dlRG}l(reo61npnbJBWxx=tD@mYUpM#F6DZoi8)qEs zS;7mD!aj4WhY4R6>JxeYUviv6IjKi-2{0X&`m$v@Rd|;nmd*>edxEsKaa_aGBgike zcipB6&87EV`cQXdHM*|Is?KfHAwtYtG%=;CuQL?vV$>WU7qL>p^U4u_0aW*%zmf^d zL%PAqpqQol6iiYG>X2)i)9^U zRVm_7t`R3H`AN^KkDu3xyC&(Hmp~_%6z>{x7Ly)~qaNI?q1Lh}>naE*tZm4ZlipQr zE#GHJiA0k2{fa+nF4&JDA+=kM|j)gbF4NQSPQU`Uj{IasDJkK;mrseRv0Z^N)w11ZnPBK zaa*E4#6?_tKDtei%Y? zHy_;kBC%PTv5JR+%-HG5H*ZW8%7<8obz+9GKjWQ>j(;n7j<7++@{VySFdk;uuEk9v zVUMu+&m-a{-(AG7t@FYB%g7iA6@|X!@UqHvYQx*DRQTleHI0w48H989Sn= zV5R6hYD)N_$jRB8?`3hPagX28<)sA=uv^ym+VCF%3!h)Y_XLAO6g%TtmnHAwbelVR z$VjwU`#~kuLVew?Q&UfeDXnLLx+zhbLTB~c$yP9(qmtm;G1%6baniVt-~~~-O;X>S zc?X&s=bEn!K4M(RdMJ2={6!K4+o;STLlrMzH8z){J%{={mECe>@~7qMpk1LJWkbcR z`k^wm{CTa$&iDoK`?6=48_5UuoC+Vf`e+6hY``_xH*!;G954e-9*++*tcpmd#DJlb zpM`S;@%o&?haA5ise-@ZsUDcj+A!yP3qcfZBJ4S_%Ax#mJL|5`y$m4*lXmjU{o$1T z;sM@{RfuH(AqO=hh1>!gTl;0;@ zQz@A3$;GVEefaIkk>37VuXc&Xb>^o8z3*|hz5|_yf4+OPO4Kx{x*YLXI9Be+V}vpD z>j-HO5g;fQzXj&x{k7LeA2q%lzG)`+Uzo~)kLAD6zm@!8>(*HCi1IouFiibX+6&xm zUU(qOF1!v5SFDd=XuZST|%lNYZPc0 zKj!=YN)(rsx3P5}ijX%k*Hdlfi$JM~JFSKjzB|o!oG4L={7v*07(4K-^_mNAkm`ds z&A#`HNztY0=m{WP?yo-VWg2JV*B7;IUxu$kdcZrnfsgtv_)25gEvU!(l%0Llr-*#e zYe~$A5SS;?8TSaTo8OOJ5ZAAfgR`B`-vQBcNLET3XvvWLFuWb9wEcveL8xIvShtGc zFrRehD|CPV@8z7ODNmV=>+?z54~&X$#K&q?xrN~Fl!aF~%;GqA4fh7e1QD;&$FXs4F&VI|ewKO4v3@K<@p;t9)AF%UvV+wyJHm zf_*POTl!NZw^=|aK(K&*e@Xg|ZtbFWom}i^G>ds>0vY^QYfVGXhkEZC2`UU_gf1gB$p7i(6US22D1>Hqwj< zk<+ykez|gNA#d#hC3lb9P`*WnKEiw9hJI)0SBts@qL~q-oxGT{*uOn?_+cO8UjASj zNFA(F-tBpUDPELzwJG5=rSE-9>CWgbmXA3;9^^f2)?RsFw3Q5Y==kDiGA6>^9@=yw zZ7vN3jak`nu+2 zQY8B&zj~cD0vJ2H1=`Z74dO3c&X3BZCQ0}CJVTt$aru>GE%c-IDmghT>&IM6^;Y;h z>H)_!#x{101;7%w%6JVZ-P!dogyan$)u=eMSW5&G0-cL{_|_%3oYVT@fVS(Cj4KEwCvO3rQ>piE z(1OLSyxUJTzd<#f#u#>Zuf~g>r->8`tl0G5$uHii=&Y#h;fRf)x9cRDv5 zr%Ng{<15BkR7(U&uh<>a@VH{E?EmP75#8G*NMJ zLprRRuL~RP9ij^o6~O*e&`U=_e8>7T?HdFfgbs*I8cMb33=u3L;wv$72KYODXA2d* zd4s8UJ5xv&}s(Xvn+Z=>hZG+Goe)4#SBbv<}<(#rovaEOzT>d|DT5Qa}3W3&-~ zpo0nsE48O%`Y5N^`6*iN-nF~;BqXC#0*XQisxU+2r|K84fY#lbb%IJ?o|nojcwY-2 zH}>MH`Hn7^8FUPNbQQ_6#&+oicL}?L{y;;*`mE-u2kgds>GQxh@-w4w4!>C#8wC4Z zG~ZY!9qXcX-p_peV5%9+(BT@o3@+8H>?0g+8f*bt#v6whbdL|mh#NX?^R=*j#eF}3xVX_BSv5P|?4Y7tSfF!=P@B4UJ-UVv^+bJE&M zyPP~CY+?Z9lo0QCE^w8LNc+q;N3(x3j@k_l;16zLoTBX-AAT?@5q%-PDg7qiS~tgA zstSb_E9GliaG$!so6ewB-B8m9X*z%OUTS0hiWcE4IQ$1IDOjkLFdHv?f<_reEm{iV zoe1L{}5Aac-93$@y$iMOZtd zJk~se77HuCwnLd+c!Bs*s;U?bNN@lP85C`McgmHNB;-X^dC^B#=5?|V?}mnMnW&_V zidY_hW$BQg$Nmpw6--LPDv@f@!J~IdW21cQ-3E`i4YTmO$^~?S;8~BJU7ItOwl6lr zQ|UZ(4v-l$wtl%B4^l)yU`*PJVE@vV*og;8xxWD$3%iz|pE5U`FW#7P0(?lXG8-u!GQELSBHu11!$kJO7HB(K?^Iucy`S^WOF$C_pTSoTWSU=lC#hC zv}w3)?^`Ba8rwwMv0GLt&^lMRDy&926bsbfe zjwscYE$uc~$0sr7ob$3~D(@|CklS%GufK9X$d7qA(=5Pe?55#FNN1{$5yN5U@>CeI zE!|JVH!3vEH{+(Xsbp)fBp)=`G zpX151zvVqp^VBvEZW>F&e4oW|MAr%Lk?@b&?2(7)YsX49EP$AF9j5&D>OBHs_}QRY zax762*YHk*%;?|n`*Bk>HN3$&k?{y9%;tvV5^tIGl{AHqMI_}r@Jexledl62`9X$R zG1|O}b9h3h)EzMnFwi+68vA{$?s%53J-x&azc=8|f846WsXBERo1{(lIbcttJc{66cx{$muYB_Ih1(3P+FUqVqy!PeHaJNWN z3YTS*rekLFlSsL%(DwZ(Z>1L0O3ZhTYlj6%2<~h@a*g~zeliEQ# zw7EgFFPgfXR?{b<4~yF@DELNUt`iF6+`I+9`4StlQ~r42_S~_~3ZJB+MXk6v(_o3SarYytiZ`yJoxm?gBf|Gp^O+2I=48 zDh@wYVgQV67pT;%zQNXlR4ToylwmP^FMxRX?Y{k=T*bhHoaQvl>D@=oA7&ai5LfvQ zPfffu$+oxU+hfm(8$qDcN;3dutnh*PR^FrPP;0XX*d@i;uyH4l^*W$!5nJ3~pHpN0 zVO}Q~yeFoU64XQlaAvk?wz3+viVYh|Ur7?2<)g8+h!| zT7twIgKp}Qc)jcahDjgS!wF5hi`7+(k2T681WIdeR`Nf1MND)`@T>#JtR<|8#AgIV zo(h|hZAh*~8jbKXgpNN!EFDnVBq4Z$I0j~k>y!3oER~ZvLyZJGiUIuHhj<+UTR^=3 z#$OExi$u#|GvW!HI0602?emde@9j~j6mH+GCDy)IAa}<)EiX6J zk#w`EtoE+Noe>$o0cpqD+b319s@CuZotmxX=tQ2BT#;M{h0BFz!E;zVVJz^)f;T+9 z4CB1i&ARAve3!IMlE+&<|uJ%&KjjPd<_G9H^liLbd2q+vZF)UfW9&OV^oz3O+>41iL~NpTz_Thy*rX zXvXYYU0c|bgJ#vJDyaK`D_TA=`yO%G!e8RJqOIfh zE;V%hj0te5Yo?;IJ>~IblZiNnM4r^g>VCi4pI9T-@xj4{1GA-WM|^9fXJqn+ zuGbw1en|0_PJ#)2#G%t)0@^g4Gq7^azbkfzFkIb#gjLH1@)iK{9`HZbj3`a%Gkqyf zR`Gf7@J8I^kRlLw@xJB&f2D;eq~f6$yxc0R2!#5yPfXp^fQPLZ$hFRRBfM1Xx+jym z5AbX(xN*mc`Q^}dj+7$oZURhf1}67gtM?UIF@rFgWKoW?F_kNhP#n^|z@l`pG4rcMU2XLaslp1_Pu|wCSjuuVn;H4c#Uf0ZF}0KW|1`?jOKYho#=M{ zcIfqPlTUP6`}y4k4A*zJVB^9^WW>y;Y)=(CPhM$;PmQ77ro#K5kJ#RV`wPqYTAq#7 zyesJR2x10X8D6o4jD+s9@1xr|C29lrDVVLajOa0d2o;Kk35OUl3C$~vh|M2P_yQ|B`j@bGeupE1A&)-g?;lX|VA29jIqxI( zjB0EQ?WgIV)i4r-t!SwVx4|?HXy^>?574+E)H70y_-14dD>!c4WuX>uMq-wObP^~| zg$%F(@f_gHG#-TYm!nSS1M1j+jm{r!Zw>uCwerA8u~=1K(@4L=7>7FqYQT|^>AH2W zw5i-o#qa=q%Dpk2myqDm7_|?%JLRV9?mjNkM9pBt^xmMWyhxH`0XEW2+RmSHZr$EH zukhnd$Bjl{8-=wGHRZa^&hp1{#|4=fli&csb@RjT3Ka>0nWv1FN5rVl%UxOAz_Rt> zcOmK5bbU{peyd29;o()S`uZuL{cju}CguOKF`4Xz_1Wm@6C zpxQ+wG3LhLEaPDJGCsq927vtr_MibZTFVikX~|Nem$Ieb4BAm^%p=Ad?6;kMqguZ8 zSVe-YA`%7TQP;j`-g2~_87aKlrz0cE-d_UyLE0m{KcC}TeNZA&wdCV-ohk0%g}QCFJwU~%Hd2mT6m?=)Vgm}Sg|`)tr!a#96+*d%+5+0 z6k~(S8v?#q+pxlOZUpZJY4H6r;(FF^M26ZNl zQKY6{7h#%a2geKTeJ`u52n-f+Z`E=R-_c)bOFgM9mK0Nmq-|AJWcUjQhk93B)_>G} zKRA23Lho7&j#08P9sVkvRJ0*d!GG^4CmvOGis^A9k2km<@`pmuuX*GfcvgQ6&}%|` zP20l!B{AqE#x4k%XAIfQECtm)epx4sYv#9v?=6tvp?@-qR$Hq%e&b$ZIWl_!6sogs z*FLFy#9HfY*MzYsNj)F7Z4wWJH|^EJ*S+sA5+xMp=LxPe=jajkQ|9`mC#(8Y^m4Dm z(C7S2&OUb){sraX2kWv&VlhFkSv!D}eanDQH=y>gXSe#Mmn;x*`g(frq+DRI;_>bn zgv+U6$r(z{j2MSITv4uvV2um{!XB^PuCbj(vs+}^!-ZCum@EF3RXRVy%AfkkzqJUc zDsZ=WC49sEGb-A?I`srICt&3U!Svz1E8LQH#(xXXZtW;t;^URF^g(aOW#R_k;H}Q? z{NKihweRe+UD|v6rA{+d3Q-&skMeSZJL`}6s{Kd|#+vVQhBCMfRQ!|ygzmCgILh5R4Xrby1WrEJ;y z8U&=-oaKTKVI|L7yO;=Ay~UlzQam~h$#g?qhi0G}7nUN@V_)4Riy)t$^S^-dCF3*V zkWm-c+9s9?9dyqco|3U!#Idliv)4KqHTFd$pV2(`Lwc^Sk539~x?9sfhj2eSOElz& zdVfZ)wLepsJ6wKZ`P%tFjTOweK^el79#%4cVrrdAC7wkr?0aGRTzNz99>5VF#gL{&QQ)()3uwCUbPhTfeS8FXqM^t@w&WA7ro}3hO*L5YZ%QfETQ{%9aV)&zu|L&M3o^yryzYWqQcmO! zCX00K30xnPvkfK`CH()-C)&AV%#tEjpIPjGTm@ABb3RP~xw+igJR^4kx!j%+Dg{#C zc7=$m*A)}*e})}k2d3Wys61I%fZEA$%=D8RW{1!ru{et!c=z7wvhyaox6&p4A7+Z* zcGOA9)+hbZb;;@TqF#n?ajT-di7nqcW`9b#r~kOc2RxJo6BVXb5aLLs%2ZFQ_#hRc zGwrYRff)6vPenLU$v@^lqPN6#SX_Fio4KSo%@+@Edrw{NX2iDSUc#%p#1Tc;KI$Va z`Y7_IJUeegiXej32E;=HoLEK0`+7XCl=~e=A*2$sxc?d1-Sjuh3+4O?*j7U(%appo z^h5r;@eD3ka2mQ7jr|L}-aQ~vX~cV;;2;W3r8oTr{7(2i?#{_-G5vS+TdBa`!EidVseZM(+rFpb}VE6rM#9W9IEyR9Lepzg56^l;WaSIoN3$j~ImOTj0w~ zX=OW?%!8kyIWpD{$MVkB?CMc8M4Y*X?RA&0I1Hol7l0Pb0V}q@o;v=@m4DK|gnBBA z-TS}E)kS_I%ldTVgQMF1fh|0xoagS19ua;LB%l04pkeFIY&4r6)|3$#%B>JbC0Ze- z_iSn`*K=-W<5p*#nUhg~%u6@Pg12YFCdd3!unJX|9>^B3=kz4967=H;*{^1b7$E$& zra0w_Cx1Xvc~CBl|Nfb2cD$1$w#V9ddQiJ=4RZHdZd?(MdHhG8d}J1K_zW$_aGXX_ z_@b^e`HS#`dT@15J%Fl%RHysji|H@i9G$&*06ON8X;7zW#+iDT=OaR9U83)m)8=hcmbo@f91iz0;)bHN( zLO2(d)VrF0L73&7P?|p*@(VO9GCJ`C8Dp`X&0EPyAm+ywu zwCg4gPx}-4MHWsqe%@%cX=^h%K`zJ3-#Mq_s{GHN9PMv?Mq7m$*J`xQ#;sba|C!)F zTODtrr*qWmdt_=c^DFMkbKXY|Ws|;@oMau%RM)9O^6!tHP1ojmzb$askG)EE{c#6E z2_qz#kmETw<&~ae`vf8jwY+rMp+c23l0}gV^G#Rr=(i!OW^H&Zr{eTN*M2$Lx;y#k zk?{$~E9%7Bs7(8m%jx1aly9k(y!+BHNk#e#W|;MJnSC81+0fB=f)w7*JQI_mQJr~A zxqHn_JF@c<99rJ5q7V8Cm)7PSW*y^rBmHz#tJI=d+TH(|F^HloBsUVABMY(pTwgOh z4pVY{YP)2v-O=a(!HvL{Tc+4iWUB^|+tacNN1o9UnvB+SHIWVXh??W_<*3?EKAgWL z6{QmzuJ2^A5Wj;xa>Q$Y)W^;_yIk4QHtDxeN~*Xj`6Tg(z}GPG#mexD_yb!9qF7Tb ztSt=0zp;I5JE)v&K2=x)#g8iLG9%zIr2v*?Vskl1=dYvck7$uxBLBL^sDnWCAGI{) zfae}To2hgQSDPHSW>dp#iejNHciEhnc!^X!D@Lo16AtE1uZFXU0 zyB^bknEj2DEOFYqbNf&7TFe=v@(iu^T5RSK=i96fQ}wvbkAmx;4*d4yYv!};QNj#L zwOsDP9;~df7pYzq@Ks#qSbxv+L1NQf^ZUF%pI7Uge&K0G^drb}{|9F2WEdWCHWfaDuU{5pC+aN{~Z+(t}W3x3gfoGK)e+9(!v zXO1w_fA|xmS&))jom{S>j6+V79Q#va1IHal-dvYH{-Znm#^2|I=ki-(V8Uf`%O7G4 zVwJY#0h-%AM<@HJ!c-92s;GY2_wnRz$u9X0uLZ-nB>#?$QmzEvb3V_iy%j*g7BQfvfDheHUq`he8rduC}$f6zTF>E+g|H666zI$Q~$ZMZpXhAh* z!q57nsJ@w*X|Lu@ZtLo4rCbrUp8>eOh2%k8u-;aIzOv65Y)$VY9H;+SQ3pNlee)#k z=~osO&0Wb+_k^nvm10pL>(>Qy)0-8HF{$f?ciZad&*Z8VEwbLOR^5wI@aa-a#@eF( zW}~&g-yJ{;vpm<>GM!q+!OoWZP|zc%cLuAHb)0cl4a)}_kmK=bM)hDP3p%%CV*+`b zfqRPNgOd0&(i(Y8ZOyH%rBDBmubJoYbBX*&m(5?HHyz$NOKJKzB0 zlT_>XwP!EtB=-MGKDFf&`kU)EP~}dp{@m=ZiWv|ei`5=bq4AX7Z0MYw_xeq6aX(k( z7WYv6rcabt-P#)JBSm?gkkN;|16}voG5uu;&h-!^f$_v${+JV4#2xvJeo)JKw;pq@ z;HKl`@|BP{|EkZ8C|*UcEnhVC;V1`>XR0$QfHjwbmQImZHWo3q)7@PCHn`c%Bi!g4 zM<9b$i5)+4`;kL_D649oYA9161eHj1!WZF%5c{DsMF52ex|uSi|U%Yg08AF}291>VzuqkpPOZtRb#nzQ~u)m=4LaSFB+RKG}9 z;w)2g!igil79Dwk*dpniu@OOxI>;zVmyllvVz>js{v~L{~gBG zNW&avvjkiIuGIE)mf{IRbUuf4+Nk(x<*(nbMIoy zBZy0~DdkY!ZPuy^9+@6^=v3-|k}LBA$667T4gS-hPWy!$$j}M7vK{kk2dVP7kDN~k zwhwl^OPSDfg42uz*)ISOczd5ZZM$E|O`z;RDd?Lq`u$LGS~Q0brNV6hJ%)d%^fs@# zahlX9i{NBpF`uE;*)1!a`=KxxfoQ3`)aREK;9=dldRz#Yo%w4HoF-E zRTKlYOA(xsmqf;mg%NPJXwLfVUN;(I)T!<9trxWJv^LoE2UIrIw z{%>g51oCQ!N*yKYkLQTn>58DU`n%|-$#wG7nB+hVuP^+@pbUfUT zL{2MUYgG=RyDx^kY!SPZS-cYnQZ=?_pSR|X(i!*KZKDLZ@oFzPG*8T^Y@4lJZ4z@w zkshm)y;bqL(j-N9aPFZ$tnrRmV)e$3ZT{H>_|&0o{91U*bjin%U?LONS99+h=%T_P zOz#WpDg7V5ULx7;Y75KU1Xxek_@yxq^!*mH9Q!=pHW^)7Md_Y}t-=58yDUW@qyIi_ zW|;`^;EQnY#c2Br@F5)D5`~>JFyrepq(Un=*|{Ap(o1VG1qLEgKZ0+j_{TU*pJ$qR z&f9%NZ((^6Yv-<5-6mNpu?N0oh9S*rcc_XT92H!Snl(zu=nGOlkIpKG+=t(wToRgG zKrw6Y32oXs9*B~Sl2~Xqa7X8L{!$qY6vNHE1h8y8UY} z<2liYLLVb{XQg$LK=+JH+?i7j>!T$!i9?&X>w28aXut82y6hAEs^LVU#E|3xWE>VZ zREy+X8DK2F(CcqundZKb3>C;0}n&+yh?NS_9+ z)-ka|mK)UZt!VC&k9h&is%^20?&TH*JN`w%r|l9w+V41pU#Vv}*vt;8J_h{Dkvz?L zMacbnhjTJa-7xDmO5=wsg#+?xkm`7J9O?&d*PuUB&3@@!h{%C!C`v}5a2?u4lsJcN zOimqSd3Mi5zhL_vjsdTQ?p@=J|9e#bp%88KWz%A4!PDTiNB0dbTNHHt)-c$U7=~Vr z4f{7*oXND3mJ2tQ(dP{&-#RQ}#w8i}-dXt2&lbapRK^-_&EYF4Gh(HmUo7E{g`+O> zA=gfwlgpQTo=6$^wg3E{fs-k8u3*_)<2CSf$1J0s>N3WtdRN24$j696Upw@}6wrv; z>g``?!BVkfUih6bX%xP#E_nZWoa&0ZxW2U*GFM5sRCRT$Q@8_$Rlr5?c@xxE170JmXmQZ(G56`Bt}2Vbh4sA8Tk`Z>3zbOd zSpMkOJ?V+~YKo4uA@c371kNQy@gKdDYTd?lDGhWmDYKqGd|-(~#yw%L7Hb&6q{MC_ zvRR!O)Wh_~Ny`nPLqU3=ks3I-Z9VeejlN;NztJIJr4ajo57*`1Q5*W|mlJ#2318$0 z@}H8CvMEK?=q_8bncv^2#H;=mQnw+uCdH}#)aw72^4ZN0bY~*1=W73O+|XahscBM9 zZI*yhk87-KZxNtjR~}k+Q^l&*U|9$O=E^E8HUH%BkNoYjK7yhqV>whjElonv=l@vn ziKQH*5iB_O#Pp%ajxavf*vkt7>*7n&9x^ve@G%toq9sHO9?d%0MzU5V;~viB@l-Lh zwn$o#zZDz%JB3cACsMQEudmW@eeY2-o|vNzNBr+5Sl%hK&5Gh&N*iAlwx5wp+f2B2 z50X#(kGEf?iTgaFg4^fOL(7?gFPBmeO$j=O9OR+iZOj!IpXdQN)H?-dTbWADjjF_( z))8jls-Vq|k16(CJB{MVMFS2VVa8e&lO6lvf8Lh)h%`vS09=HN#C{x7@CT32{7(8^iMNzLvOPzQ zl!dRD%&0Zgac-H*Uz4U$#WjI8Cne~`fnJF7_FwtV7ZiaLv8OBp8vy9&+5=CN@N(Mg zO3SUBo~*{oGiGa)kPF`S6_=4U%JGf)B@J4!SLwgyJ5Ky%4A+?>o$jOnkz6tbe<4&p zfaT_CvSpHnL?X*~_cR+_n(p`ZkM`sc44QVe?9E=Dl#pa;5aCv&N@HZADHq1}s1o1J zfL0%u!V(5=d86mR*hkLu7x`pU%qk7|`jrW(Mw?In@WEx30R<~vq&*6Bj8PhGE1HkM zF%@SZ9!I(j&%f4Q9Z_@kPBPRUZ}NDlP8gLvl<6u487upyA$#Sm+Ks(DE-teQ62d@_hoCA!}2{|U@Yl^A6dLtV?vLB=;~z+`t0+#!@o)R$Aod# z=)PMt$dk#;5r3`tbm8rh8qlJn<=ZPW!VpgNBck0>gu9+&M^>&$mv$>LE$jCqUJLKn z7-^2Mdlxl-8-TTB?~@YD2N!r^G~-DKRidv!rD#;@lJ9rJTRN6JtaIWyB&%;Y(Ev>> z^#j5H(gO+hAX{PDe-SDW?1i-ae&hwTo~hm14jf#P9nAg8k3pP1Rk8!Uf0 z0rHQgk=m9413ns6(;4%v(^aSiBa@Ls3=>BE(HBmR*oca$lJB)~d}6PTqy+FXA9l6z z<_iY!{+xj%5fi%N&>D@xR|kDE{Q{k&?@?h*kjCd`knlLkzhCdl(->@R6sI0D7OqRn zi6Z#F3J2iW|6!!d@8x1_Yxoc-UPc5Vc$P)Q-1>#M%+rDk-jg=m@YuR ztoeqrX#vB_PID9|Va65ObVU4;SQL-8=s!^yAuhAcXl)d327ObF6KyM~4>h5<>Y_f# z`t6P`Zf4a)yI4C#cUe&Xkp+iH5;EOizSS&?eR}vUMS2}T8alo=<$=QxP3T~}F(;+n zLVNWI{;Q+fi(m)B!vHhW!~^{KcCu4HBkJGD!PCpQUxV@kK2xLGAyfF?dhW?)!_csSuPy9KX}qm@haIX7o*rBd$?K&-<(2b2!IckKjYR+) z79L~9ssXMUSz&rxA5`X2Z+f@}q=xX-ByYFR?G+Z^NItz(&kQW3r?dRe(BrE#b15mF zIUA2y?|Ff5?GaVV6lXpL0`Dc#nZe?}i!5I5Ff{_X942DJN-WdFrDnKS65VquvCe(14|0qb!&3kvznfn@CRt z0Z*6G0FIpmhcyEu3se2r)zM9tcTDo{ym!~p<;jraCMYurX(TFnBJnzhR_o@;%u9%+ z>4Q8^Zn~X3_pm?y3Ewd+d2VflmhlN#P3wgYhkzeZRA|l?bX%Oe=_Ef$cdNAvCGH+? zZx_{cKX_tt@kAYCVAGTnc23igXI6&6DHbpQ%c1>(2^$m`v zRf{keU8-HWl84ig{d2zx zBj2L`;y7PwjM62u6c4i)RIK16SBF@yc_d~a4A0Xn^5R##+B&5OxU>O0EPlT-*d~

8|b7>>Ah*W1K&}!MlRscsV!sT;z1CFRH)|**ek~5Zh5=YCa+wKPB=u zo`v$79K*RDEO`F-CK3PFXlw zz7W!&F&ewrDf?D12lxq&&Fj2672}w;M_h5M0P(PYY0`x}Fs=099g z#WSKZ^^o%=WbUp#GqTD3jNEaFI%Hm8{DR5t01Ezgwkvu*` zby{!s5N8(@^5DSL%Z`f|;y&y|W(xa$e2Q8!kai-~rer7ln5DT5g@CKyhkr{h{X2l) znUfi_`(n)okkbUW0LxlWQgF-UXbyy)w?Sw!Uva)o`Rm8$^_t4PI~CSqFLG<{vytH~ zSSo%_+mOdy=|~f=W02FIvm5X^NG+qpQQhfKy+^brRO>>Nf5G~NL6T2im>yn)+4_@e zWlC>DZPc%adOEQwO>lMpOkje7`NI<4>=-UO_t#GGUf$EqW@6`UN66kS)r(Tf zu>(UR=IsgMnaiX6n!q)B);$2`2OgST71X}MM9_e<=l2}~Dy-N2iyNc)rLq}OIb$!q zAn@tqtivMsJ^xenxg^dmXGxviGsG|PLK#2bsRu*OH-t8S<_&ybU2SJ1NR*M5i<6B6 z=s@l?;H0x8cj_dB(F`iziJ+A!22~8NIE9*Busn^P}>ECVf_UZE_+n?GLU9hnW(N z6Sc=uC4xjX>nkVqx@b2DiF`#kb90`tXfebEcID>?ziB#JJ8t|oJJXPcy>oe=Lx;{# zhPAGoXFe-Wbqw2^#TMbldoH22#<_m$;$6>)>3GEbvnWXgPguN>(B$@}z5I?*^c{GE zSAF{bUBv#B1fkZ=$UB$iPF-3uI>e-uyvhrZsIqZ6ezWU%2tt_%h^*eb7}w79en1MJBt;<4`2Ia98by3hYo|WG=@Tv zY|}-}YmVXSNcY1(s?9l#nrP2#9RoB{iwY`v_*$FHF%rM;Dub7TC-5|g)0y2sePak! zkduN=>trCy%qIdEwE#Hg&fb$5P@^S<4agIbGYqMo)Gf7AZkxsYM`jv?KVL$cB{(c& zlYCqdzg@&OA! zzg-NIig8_kw;G&WGGLxVw|+L_Y49CyJwWY0oadjmVF$x#@ik37kbrhPs17k6@y7XB z&bjbhR`Cefg*7?HLv&UP7Ze#uQOk3;sa%{<+%6#b8<^bMN6=F=P z2CN9S^*n5sW_xxsoRnrfZjVO%(@ii8to`e)jKDfrMSey$@mkC*o{0O>*GZI{KlyK~ zXs0d0evPo*zde^sUMI1ljlmK?@FlQQi*wlKExatjyJ+?kKR=5VvbiF8v!iE85v;$? z(uG)K(8;Xjy+%*tg*|5ZW&iO4;PB%gT=UrU-lf;sGuG52U!8=YS*x%MmBm*<5 z-|`hF_oW$==broKpEPJa+4mFw??}Mr)|UVgxUgcXHw+wY0%jz%si%Z~tCTNF>Vb_8 zGN7Q>crg9e7svKS$If7Sti&v3)p`YzPjj)$CEZD__7rgt2ph=T`P8mh~U`E52r=v#3YZp{IYLJChS> ztcM2!m`pfvlQGfQ{=*+vPXP7(CEa41&VV?4xnIdpp4Rd7Isqc7U@du6SM!#;@&Uk~m;6+L7WeZmE;4y~&w2iBEQd6ROD2fvvdnOCN*+0Ht zC2*6G(KXE%w1jopXypA&3Ri**V)AB9O7HIc-*9`zB+`qiNMnr^=0bT^sASa#T;}s< z*Q4!-su9fPQz7j)B){QR^f?BtTQY5Ke}ZPxwv%t=yQH~Jn;lLheKw>lM^C&$|4Ed#@Lipj9-Xqh9%L%_buNt2O zVa)E1oC)IEPdlenK+bFyNO_3Vm|Fi^tjIw7tcah(s+;`|qQj=8Af1bI8vwK<L>{Rp#G*6`iU)|AEa>gF#-A7_L)PfCuocCdW*cq_wspamB>rEdq zdU}x>O& zxk#8Z(3i9=itL!_s|jX14N`LkiF43%mapLDApef)_FJrkg{#SzWr{fLt{T1lZv+Y= z-M`a_ELPg}(>!9kG#3b!K3?m_%1!-lNcgPJ@bA#cZrrwte;&6_cvMg8I=F91#;+tA zrvaQ%QkdTBL>}5be*B#gB7s}Pv`M(_6|!IUHp#h5(3wO?>t4Hz>4^z|;r7w+N`|wp znWFh&q_8qHN|b|8I@hYgTkoe1va!|85A#G@$C>_O-&eVO^s@Vt-_R&*?M4QiS!*B^ z5Sg;VpO!)|a6OWOJeqFx$yDJD6e$U2*}EECG}4Wz=hl{On$2aWnBKL`fGRYyt-!azJF@5;YvFAPi5(cN+7*zgA{eqCX&Pl_H7sTEWkLd5|4q7V_wY zbVI~rITK0I2c{JtKm<62r7_%OUSl`tt0o*I;Ox>(K5Nnm_OTVkd?-jO;pF&5yt`~# z63%zSus(&Dir01#dF_eP(l*6&*57@S{39{P!$XWg`A zWpVR_6r>+&aEn+=o?eGYf!Tn%nmPe5KpDE50F<&woa+>gCiZyYxVc8~XW22ZZVqs; zcxhda9HY;;hvFO22=M;4&MgPTZyr3~Cll}}PZ8or|9ir)8H7~`IdJX%cJ4>ibIaJ? zkv@|td1s+zBojzG2U#G;9@xWqTTNmuY@`P{Mj#1EkMA% z15QE;X{&@AF)L03-|Pn=xUV3~vIj5G0j@s4o0t3S=HkseTxf0Xuy$@C4L^a`2JeO? zX5Tdol{UHN=yyP_q88ojcqQGo7y3*|OJ-ID_0m0(K@}s)QY(rB}z}atzaQ(Zq z`^HMMs~XIWtgEkghAA9rck!*mwVakb&>+M8s;|W3c-%iGX`sl#xNwrLB7OH^N(1 zBRbdk#7R=P-FUcqI4_7#MNEpMOIF_Cbne}_rqw8>boD3>l)Bvyd_OU;kLlp84C)>L z6Rs*x?N50Ci*Q#Bw!Mje$FAslUmtB zigNNGK|T*%h9=i2PQW?0BKL2TqGD9Ztju$Fc;$+BYz9JFUbjt=1lv-RfDJm+J1}%@ ze;0`tF+fk4UwoU4glBEZvM0g#w?Thl2e89>qu6DGGTYWiyQFvE?$@eZTg8vafI6t< z;2X{=(h!jqW(OJxEanOLj-6EA%F_boW>@R`x&y86VjFg;X@gLMKSDu1WF!5i#VNGm z<7}@dQkx4S)RIB#Ut$}bh+g0|cp5{GOt}j!!^*Q}_AVlsef71`IuIOD*P3OJ>4%nVc%>{$`o0^zcy=q%KdfPH>x z6G)pTX|IE*yVxQ6mTuoFSDZ#AQ1bd7&E8g#xBPML^WcN@nD zd!p*6eeON=9zftkak|J(3$1TMq@ysSn>DnfTO*8U+9KRp0SZekN*WJiB&!-&LQ`A0 zAFK@Vn@^0HR8!$Fvg9OkL3raS`Am8a*&%1BoK?ZcWSh7nrLqy4HBG2ab-XA()F9Jh z{dV9RROK#UVcmYbj?UocZgmrer051cvpRK5z-2}8{hFK{ewD^=f?8}0 zjhbj|OAq9_=5WRT(E-F$sqt=rhc4X%VQ4~cP&Z&zb9dZl_u5<6cN?`B=xYLlNtJe* zh^upXVA>%1t#cFVYc|+k1-;CqmplLt>kCXY9$H&rYh!EqNF@QA&|}s|%z*({8il1LfM?(oCewvO zpYO&e;&tQrco#T*So#ORlMXct6_WbgFRK-{c1XeQ8~*n^`EcN&q3@)`n=F5hEowy< zn-iuS(Jsg9yo2tuK3dZEbezFNVm+a(2>J*+?FHVu8xdvjuf~rgZo{6|mg+XsBEEAU z4o|t>B^&8sqAW}B>cT13TtT~T57ZA1upTUTFceF`2*;(!&%qOSNpm?}Y}p-l!|1AM z)9yqnPl2r8t~r>1))Nq(G9f48UEZ9o+Zxnzlz4dmuA$OlQQ=zre`>#9y^H&%8qgSr z#Om{}3$3sR{sK>#pF-f?)FKof3NCg~FRiggKPn!joB83F=gx#68kW5=(Vz8_W6}^o zqEo5bc*iE=R@^%c2TXYpw$>95pF^{(?iuqcl!9mohZKVk_R4cJAWswB7A6C^0{I`> z+on9nTDsu*^^sRq5ielh;X~Y|1)v<=U|z#L?;(e1xqart)qcHQBcUIP%P<`K!ass2 zeu9n^r!8tR8GfmNxEW-azOyIO1LP(B@sG4hmC^m~vbG&D@HojQ ztqNU3YNpY>9{>lhDoZ=nvvPkXC!!}B4=UlKNZCEmV-ZL(UECP?M3cl~2nV#g8GJ|M zNb{%rG&Z8{cmAs^>mo_TF@#=&4>(Y`4d?>b4@E~rdCDq7qn=}1wQYoV;oUI8jjY1U zLnh#u0RL^ko4qAXEN$#_3j`Z2Ifw@+qv)mNhM|pUEfXce6z1H`xYU^wO)8qmlE>Q@ z)S7&e0>4a(ns#Cx&clbf<~F3B1Hf5%CDTaFfA8HbhypJxTEOAR=hIPWF_LxT_{tUi z!62zJra_(19L;3BBzW5S+xEd1bgl2d@rjNS#K$3|eA3)qd-8i7L&euS8ZXe#u-<|H z8h=1)DgnZAF;8~pV1qffo&8Zc7&* zkMU;5W>tG2=PunhfS=cHk{j~({_G%a>y1^+FvLd>8@(EHxnq-RXCii|IerF(2eS_I zkUbF@;vW!iL5i%)a#$S%1N-d6kmkM|_@1jx2%oeSK$c1g*hzk|8_SglMg5~5lon`o zSc~LdXH{FQjT z_5^t)5#y2`MnJ#Ews=5QyNyFE_)>8PTutq;P9j}j@+M>)R8G%Fu=xAi4p!_XNDZSy z3VEeR$OiFkJsHFVN5?L>1DE{7= z9nc?-!1qCgiINoD&QXcmay}ifv(c^kKuNMrq}z(e%iZ6H=vxE^g87O;%2yd%CqvWJ;Yx!@6xR@#O+Vz=)^BP2pz=V!1WTH8JR^g!`}|L z@^92`9-Ns4n zlTRtZ(tC|JR#uaw(L@wMBz&PU#j5uB2kY0>e<#v%5k-jmXte;mI$}44&`BSR-sF(4 ziSAjWJtY1ksMSG3K7fxCfbDmB0AP9{x7pQ!i{Y|+$5tBuPqF!4&RSKBvexX))2;sf z1^3+jYONqp%qBY(>`;z#lM$*aE3e3pJIyfq&dlymxFH$YX1z!#Yu;oW)n7ZPxAp9Y zzuRndU+?KwE>qxl|EO{GMMCGMjDP?h{j?qAzRf<;>e!N{RWg9+g{$Kze1#H%OQI)P zL>2N+UCvu!nPFy0uFyOU>kI4#>j&tSA?9qwh|)j#?jEi|z(vuzB3!T^g#B^hUzI*W zB^Qv|{{wqT2U^<8`2}&r7k#3Ik>D?-ew}5@27^x%%CqEI=_3i@+Mn(}iXD^TdsBAW4}eSb10ki? zbBiik2N;0O%&gCfo2)GgDNku#5r>&X!?SG7Ya3CP{%NVLoL%c}|q3%4#YcOBtNUcLXvz17Ya{*4fq;tv#4r3(zH=E-jn zQW6q)9#)2$PAaq(frL`fSt$nf5Ud|3I?$jqo!g)Kpg;H@g);D8hy%HxSJnMT9rTko z#FozU11ixxmdr2WzAe~hYZQQr(mAsGz|CaWKcyeL3$Ap|ud3{T&-=IvxgL)us6cLs zOO04%!b!24;Qoabt@bCcg+29T=#JU*r^|5#)zfd)RD$AjiL8fdkAX{Nz|vk`8$m;q zRMoN>ebQoMpEf&D=rz_fV9yhP>smKh3`JkPpH&S5c{qAp>-HRd1)|BbB5pss#Ne+%gw6n=dmh8sWev}U&;pqbeumSt8*e$j~ zNh!el4twxjpxZ)59!|Exlu3mKX36=At~42w{8j&sYu;j^oKFwLT6)|m*1KoeCBO1! zN}W-7@rsG60p}>xaL2EZ5o~yTgIdNidDKTRXMWjAe#4o7{cm=aRQZn(OO{LY02A2Q zoq-zVI{fvr%TltRP2Xe#53lAJzROYt6;aM0{2~I>SE0A%)+KZqKnXtI4>}c~wA=r$ zo;ii$IbH4^sAb96sD08FKKu<|eJqw|VY0Et53Xy*tvT7DkZ<{Ofu0Z2Y-~+8_Q&js z=^FbGf(fNu#@_K`QmJ@#9EUw3d~-hdqXx+kg>D}2)a21CT;o4>%pp%C$)xVzs z6$!@?QdmQS)RL(^Bd4!ewM--O2DOi5!P$*9%*M*N;Lh?x&J{&c;?QX<#|mdYlq<5e z%1?t@7W}_L2`8$<;TAuPy}iYf`&M~4{WUfiF02X}b2JbaCMx?YT(j@=Z!rAMg^E;* zsZ6xE@1lnTzoJDE_wYq)PjzG57X?MN&tFR^Q(2Y-IIR)HEvUwCOtAX(!IZ5}p3G#P zt61L*g)1|ZFbL!;N@9crPL9R00?yi&QO?&ByQJBH9s<&6@NJ$pIYbRb(ZI(XK6 za2Naa`>OCd`_m+#LJIc#y&4R6^@}O7{?mk#q#GLmH#}J^NA^JKH1LV|dSpFbs`977 z#u$1EuVVe-xVP$d{6B`;8mD6Y>kn5c&>xO$&IY}c?}a)F5Bcy?SNORvTsLw^94&92 z`)j!_ecY~4OKW*vS8;fO&6c?1FwBVNuy1u@$_^31cy+197hQ}L*8SKP z?R`1&c7zVic{kORFtN2XGmew->XJkrBIRZed{LSd&D@PWp~H5{)M^+=*`mm3wi*Sl za`^)0X^;Ki?rd;$Lpi#5g?-XP_^bice0DR?h~4DHd0k)A zIF=A1qz_;%kD&RTdi$=frQZ zhmW?Y1OIWr5N$f^+G1Wi(n7b^y>70Z`Vx^lSE9BOsRUm4&`&_^KYejz$oa;iS^#Iw zS-m-dtH0a->yA){C|m#B<@2}x2I`iE?W-9 zAuvfYH@{t4%N-UWJNfYXx=Ax)Rq?~5i<;@hDi7WH4lfcYC%Phw%A#e8!RH;*SXG1t zp0Sz{3vvk^`=OC*Iigd;T@rV8<>*1mpN1|dgOz+6D*FV)5@GKdd<$;b+y9I$r30Gf z6Li~cJ{=W7-QqwJi1mCWxA5CL+-$1?cZHS{+&JlfQ@H|Wx zd7DZ}_MlH17i4pUBW<=7mvY|Qe*lg(gH~H4-?+NRLy!Exlg!#6D3qN>BN>76$}B0Q zF#lfD3$r(#S6%f2AJ!m^ksT#TCf=@tSI@)q;4g?d0{_FbpeVuOkX3>NB(UqO$5>5S zrt%+Rdre?}{d*BO2L3W;uHtt-*$#=&!f&%ZR1g!h$+v)$NX5RFv6!xxMHKne6{(=Y zRqx|Fp9FBPz)8gKsex5U5W~ZD@2Hj)N5HKG$dAT9bpY>CivHgBW`BixT%Gz<+U4-#5xB<86Spp^*eEZXmZ5qJ0At1Z6+;4RWfTd`Qg{fQM z? z_r&vGw&+JFlzbOzF9nmxpCP_sgmVxya+3yyk5LB;StQ;W=sjcRMDi+^5|rnj@@E}e zijd3KT0&d#8B65dRrP-=a|&0RIm(i8=2bN}b;QrjnvDJz`yuCzB`%ZYUW?;-H(<#! z+Mi2`t-NEmh;0GuJKvFz0@iO>*Ag*7Spyht%!prf@4_#`}$3=9S~dUXjqdumbtHIC7;iSw@o4ka+O5Ad5{=gjgHEF zm%T-4SVP9s*;M>5tk&kWJ#1F$GxZTc=V(`rn1EKH3$n6^q0F6G%eDN9pjP3WW$brR zyo)tEuLL@F>&oIRU<;m;pRt{e<>KXX137rtkk8T-ja^eN;}zoy#8scrZ{5idz6tkn zXe(0$eSP9ze;Kc0zA5(Ui0GZuPNdj>N^QkhEHamLmvyi&7;x@_3m@!F8kUSeHK9V! zedJF@p_-J|NxYN+Gp*r|JoySVwz-v79mbb6afd%#x*sxz4kDX4y8)5AlLXpPcqWTd1B35tQF-zFDC;60R#36u>Tp?Mz`_CurjYM!7 z3!T|aI8zOC)+R|@uYoFh#s66P@^~n}_x)!!jD26T@B5x8W~@&-&f_wwzm>Z9xn*u z#)n}_TOR*w26(VD{h@jfV>k*h=$OTqe zE5Q7sFOUoK2H^rIM%>VI2Y>8)2;(NvCoF!N6t6j$mPXpYC0zKkjZ^j5 zNv|*oaY}D^GHdb0&p?zi-0PKal_;r&@$AI6oDB3p_VCJ_yCtKh?m2xC(`RaQ`h0S@ zMFuX1nwUz3TP$Es5OGLG<-tCVK@U+*kMz6oF(!!1tWbNvngSV;u!It`IE2B zfXKSGC9X_#Km@9hZ>P7CVSwFE>clP5mjsBj$c9r z&OYf2-nouk|EXZIBCgrJLTJbn_Mg(S`!$Y27PoNkDQ`$8@xU!BVH@V81Nt7 z5(hsB_IJ{7c89ocyZP=N!AL*GE~p04$S?%|HL8_+%Q$WSK-{336SzSXbpiEI7w})+ zpEem;s6baddalk5`8o!ze^FKq9dEFVgF@pV+af}F?2*U*KDrcoUU;Wg!S}4F(Qh`F zgSC3X6Ei_HSP8J^adxi2mCCkfChm z=I5}o41zKVBxh>76-PA0!D|W0f~f^u?HOQwt9JMrGXQst5rbr+MTQT^96qco;x_@6 zFJTq`Ah9$^J^~7PkFr5-3sw8BZu!5jL7K`Z3B^I!*&eX~=9wvo+YuHo8|3?sK+pE8 zxQS!iAzvv6(@_uC5+2%%cdVN~&2wI->pvWLL*i1O>DRE)Lb~6*j@p#9sv<}1r1D>+ zGoRWWfCidr4NkD3DNB~p!KLkg3vUj(52|{76WSrhV9%4W=*$82KduMX^%`R&IcN3W zt9{Pyg~d@y;-@L#4R(wCAsyh7PSYK{KsB?)_1Nv|H9( zY43uTDjP7VocgHE!{D&E@Ktxaw5qo|Wt11M+{p_pd=%=5d34GvZcf<{cQ0j(zqIV1 zN?W9Vq*E5{$K!GJ-mpfgEu8emosnwrd#u;w@98w;iMoRRwa8QD2d(uy87^BX=$Uy_ z9(ej!Q<&l*jv>ta-jQ7h;TL5+g^epztfA)SofDkTL?w<_r8upldWHK}D_Z58tUpdE zip{0gJcGW8e6cfdfbs!YxBf*0wtRi@I5FqVw$W3L@};T#PmGF3yC$K`qZ-YE+h*ye z*sjmd{&<(hPrM~^Z$h^>zSaMjJ8dV&GOuaCOnjkWG+n+J#G@^BA}O>k3dyk`OG`lPv4{Z7rOtY;lj%2ObLShXe;ipt}@v3EHflarpZ z>gry;X&!!YW>GuDu;$S9J90+CBRFyGdxwo;C)OqbR~e^EVCE497AQ zt3@ts5G%f7d+ZNGcR%Je1^Jx|Ws5MKir(g;`6@MVdC%{O$vKR@53|I7VpCP`Sea~`g7J1gUZ}epKk5s+bg6%> z?O$EyALoY`f65cuqiPA=-cWA%w-EahRqqKkbT{F7A89`q87B+uUu8JOmF0ZueanwA z3Hm}awEi!80aB*9o?rSUTVw~LqtHdCtiNp^i{2rf@R#h-^9T8ftOKpgz=?uSU5qYU zDuZ+aY7#d^-&@JqvsOUJW5}=Hl8ybjn)08gSI;l) z%r51>*6dp_e}l7K{lhJGkNQAugt#T%f+p>z9EV1(p|=P~ZikJYbK8oRXD7Gd3`fJ( z=jgV8L0%)3>`tNzw5a1Kf*S)77X1>SJ|Zqcvi+6x$^J;?p&qh& zCWFimaj~1)bS7Uo|08$Gn5B<7%b)^}f8fQ7eg#7OnLYV@h}EfguZQfAV>v;;m3i^E zf}2i0hIFCzE#JL+m&?|Kbo^vJkJg4T@|cr#F>xQ9@QcRUy}ZC@;;IQUP|{%L3)3&v zQR5@|zw|pdePgox%hw@qZWrc72Iiq+AxC13Z#jF2_kPEzXho7#!U-p@BCPcwG*!4Y z{U~nFck0EI933|d{$gC%DE<$z_~?7NxbWuV!Yy1{6mO4EmRWl(Tex5UI?q|Pa2pJ8 zbMVK^F2{c-Mfr3LzYKbuLbMHt@dE8qzxyQx+uAYHDR!?fE`x4vmeWIZl<6O`JF1qE zZ$Ab1>XB64stUZOdA)vrGF%3y6$jRIDyd_J4;^zr)8Er)x0#!VLG@#2Ry#+5d=2bg z#nFyIb$CZVD{K}H`d}jnba=DH_l`oS8#v=fA4GR3%tnbd2i-p1{~51AULDc@1m|!y zG8CsU(I5S#XCHj?EumI@A!l(uLpG7-934bG_c~_OX5PLmI2cTKu-xh@cdow$7Pm#* zu7aY*^51IAI6X9NN%V5}Lal?hwNDXvp#qIzM3N)EIBo9kzL-03Iu&T;fj+DM!W0sO z3+d3Cdyx19^)Z|9ZRrKVBxLU8x$%*@_$F7`?k2gZND+`bj;Y4oV)lEsg~wa7h8_9@V7s zB+Dq)(Av?{%nW?QVZgBl8oohOUUh=nFm@1k>adDRZd7-n{O5F}od}&0k|=(riK)H~`S`PvxxkU{RIp`iLhwn<174$0_UN|l8F{PTb8yxFZ^cC#@zoScB{Vb9l7F=&d+ zB$V~C^G^AVtiBUcYty=mz(*8C-;w~|3MO$>M5E8KGYHxL?DwUB|8kt~U4~xytU(dI zKe9-`cr0=TD+pCOZHwJBR zxC4xw(2JccWX`|Y0;8fYuj2X~zS8>Lo~y6*|3^94s0p8xycZP2NR0B(nDU>f$9JJ; z_=0nckft*zbwK4v+{46slKhaO$PGQ}G5*35y4XLHOMX$mSWiOruys~bJ(xQ7g~ith z91m*ceRK|=wu$|ybz_l~nQ&U?95VQa>Vw}h55Ly?%)PB#euNhN+6~xRCZv$ePyZWt zmuu-vTXi9ruaX9-KN}`o?JN|bwqDAz4(Diw2z4pAPvCEE$u`c9|BEc=!(%xke*~ZE z$I-&`z$Qd5-`KX;kFii6D+YMQ!!0ypR}={}W!$u5QEX{eexR=Y!6kQWP|s&3z7y)M=TGu;)OeQ3H|K6o+n>qq?A?8Vyhf>u6JU}DaGm6w zM57PyKBla#Lc^oqnkPrp0^Z^$387FNqp8+^lRdnYdy!I}>E9(D?f=ex5!tVGCmuel zfhSbPXDLVUm+@#Ke+n@(;lZW_elj)f4knj9SmNfm;@98v#!$OT6&uJfS!9HPX=&TC zU!~fbLcbxZt8|}`hg>;Tpbi?7!Vrtz3ORd%J6zmw*^MvX*byJV1d4sd(?f$wn^g0C z!oayVqr|Ok++)qxwVF353a^31ny(lN>JrZbp$Vv=l3IEozy-_zOw;LxFmHDa%5 zM|b9BxZK?wK;!gZ8z4*i#S-s;H8($J$-ks6=r;BM#kNPy{I%}~-Am$j ze>vd6HCR7rbggZlKE1)>)=AD{(7!lSqe#4?1%#Tvdzy-fw^Tm3I8nd@{l|>f3xXji~x$Jd%32AK%^5?O{YB54;H?R=-WU>2{M4X zmC`WbS^_~+bu;2K&-Dcvz2|)Ut#<1cKE!J|fC5kblQ}br#P*q+Ynw$MPY)0^(WNt1 zyW=rgnVE9us^A{rzG17bF;AgXH^0p67wiY=4v*KN)Bo+^s`r)fTadIRhCjQDyFeq@ zE>N*rxuw{h!fWr&Rn1@noD6i%OJudbGT{-JL}Qc(690obx*#{G|D@a{soHOoWz7b*TE}CjjY*YHSEaUbkd|D_7mV(@Tl6Ljo-v!91 z1Cow|c)5ux-HxG4vYI&0WWj5TfX9y@{q@!tb~)^2IYjMWEseDLGSH=Y)|a4%=>)k4yKpy?7WAG{g1eQrTd6Xop=h(W3f z_>?c9-Sc<%dz8yhCK6~WGQ@-=XpCi<5Mmtrq3&t31Qf~53d)7v#zpRs|!&>I6Dc@0sQifFfj=6W&rMh zTMlwNo_hm7iDLU~x>@h?=Z>2S(50pm+FW!Q=%`G%kqS+q;Mw(YG3`Amsp9?3pr8rqMQzrn_}COAZ8_Fb_X%Rz5H` zptubn`m~Tq*@&PIr(8$WJeR?JG)Vy1TMIvHtR$HHk*fSshp(0~=zOEIp$xb`)7t8& z<*8Znzgtf%lGe{Dd^|&&A5r0$5@TTHj~4_l0piK7{4-#@6|qlj6=@V%^Nv0El~D|m7btHQt0 zcjMb0dK-rlhR8B&8-@eWubQf{#4IQr&iu9#GqN~cP)B>m@?2?z_r5p$`fKeFqI|mz zr3S7!Mdt8qPS(SG7KOhfB-B7Rw6Yh}T;B$LjhIA8Uy$qwu+r*-GCClp;HR2k4V54= zC;pGDE(umifTt&*PF7=4PZgJ1hI^xiI$v0W$umt&%QHDq7QHQdd2BrjH13n?PiZ{b z(Hj+dTtcKfTlq<8-+sREyk7ZPM#G_%V-gCJpoiED;Tr5|&Y<1b=p?Bb-TAi{^_}oA z!CT+<)^BQc%9_d|C-lIg#P@<3D18kKLFJB}_5|kmC?a>E_Geqgjp`Dp!ABi~n!E+q zWf0p;7XOJTKbWMwkM(=BTIZ4PyS|>AmgED3J;87j46$|p za-4svg^zL-g^|?b&iev6p3DanXFF$2L?NM)EU-8P;uX3|*@Dh4g13L>-!?@K+F}RsCc&Pf#PhR)3>LLS6Djz7(*P z^nz~-Z+3fHl@o2}knrnJ;Vf8%+9Ckl5(>~gTW$#hC^3}y?y07>{V3v^3xl6_0jl-0 z7XE(m_@kwK(J;FQ)fYU+-oX2I%F>^CG4|n#fxZzSDV5v660(qdeiuLj0l;kUkDF-#s<`80W)f`^dz(=YeiwbR8E9qR+X4} zGt`GyZY^IYXkzT2EVJ&uxxLn}M_KUJJ3UvnyeWIF+kJ|j?+Xg86gEfS0(qH(L zGO%N)M(i)#4Ew8htq!tl0qjLyLvF*g8-m{*TO@bLr#-=u;&p2eAXXBc3?_t`8qC~c zNMhfS9zYNR`sa&p<(@AcM%A#-wq|(O*>kAZ0Kn%h0M25%&k$ z_F;WD2V2#WQ8wl))sV-v`vmy?ITdG9hd)E*hgB=;@9mrx1|`H356Rm1v> z@LX_d<51B0gPwE66%O?kLCE}MmiM*mC+Hce44XzhuwfZu{7o|yUTCch1;_1RpM&-`8$h zS~scD5wIv2J6$0H`}qm1x^KGt(frKscX-4^`jXHzZIZ$alZ0Zo&%_QGb5j&I9yEN19#GQ(N!E>DD&XLf+Cl>BHYX4oU$cQ-`t)xCY_h#< zBvG3Oj4K^**ahv9zx#bZ4LNNyHx@3Fqdcq=Gg}q=C;|Tg{l&NKU1~1Hd^3Pi%OxJQ z%Qfrq$Afottsw1Jw&gdL-#H@j)|gGCkRxIyb9X6(f+G3Nl`D0~5sz=U0s&47(P3{_ zKOW`y@Uj>z!(V%)4A)_lY8)gL&mxxJ9-El)0$NXwCqS3iAn&w}yx%L>V4^;vG26ki zd^a0uKwL@lXHp0ERsR0uq=s%(an?#Dzr1ouhzGCPm{yMsiO-e+&axk2*DpqNzJQts z4nA3|BoJztH0&rCqLmy_J4Z%fwj9p@Bhu_$=5=4}Z-^=vt3frlC!ojhp#L7tmuY)d z&4kWjc-x7r@@{zr4A?T$fznH|;;>5l7Jnub=*{9QBB$~n9u>^ON}2GiFWBX9n_i46_`6Z2Gn@b4y$? z09-+7mi3pLF|{Zj{z_=$IniJd$~Q&e|K@vN=*aN`o%u+c!(dMZ zsyA9t;;=I#*t~D>d{kn>PYsOyBN-RQsDrD_=}(kj6p?omae9@ry4Ln>7c*W#;1SQdGZodKZ|ZEV&dKYhu_n0 zkcmCYSWOO#%>HE`%X3$S5b|kgi4dU5k#k|{hKQ$ zH~7*Wt{4z&ccIz@U|e@3@=-YRLV{c;fpMPi)_FLZC5M@xsM-wz!7Sf!E9dN)WCSMW z=pI|@{Fc@XGtb~ky$^6A@3_=Z@OiRRpzSN{b)Ryj>jB`i#Lq`(tOXl9fYzPc z0`Cbc!H3;QVi(k@VkNniG{tjM@ceXwHS%2jMGh=}{i2^O2@*XE{5NYj3D~9SQfWrP zfZJKn^lLnqrCl3`BuzGY^EO-;=`?W*IU^@=QUfu7pihq`^s2^nMrJ6Dhp+cue_l2b z`{nvbZ*z4ZLPHrusb-x(*cYSmL+yP4v!>oM$WzOp12W9ucDm9*0+S@IR}QfCvT=Fp ztEmj`u&el6bPucY0@Xkx!i{J+!1A1y&zXpjJ==9pWm`D)8ZR`#3)#dGtdaj2BMXbs zL>HYa!Iazb0|*Wwo;neX{PpL;VH{Wf*E%3p!8hfm*ijI#``*jxOCwUk4tQ(IMY7uR zxSAeUtdLJ{I(V+#x`>K{e6Jq8`I6dtq zZ7iUoa6Ugv^JT@h_j%?g|L)t{e4J*lJ1=*<^3r>6A(8B5JhBeK?J2TXcd)(jTuBzu z@fA?iAb@=o#+lbvk0$S%T*u5A%?AT1X8{92=)~y85hMt`&|vr#+plckt{9zVq~hvm z2FfR8gIjdm_}DC+{9LlUU|is;#5aZO|2!R4?HF6d;!FSW|y{jDUOjz0CQe=))PB%weS?(@1DAIya+x^@KA%PW39W*HUc0}_IjH-(9>9od8< zyVh|==M)ds{~9xM^QtPFO>dr9W_B~&Kjyi=);1Sa19Fp)L{9IB z&7Qm3QjqSGEQqn2>_NO9$hc^+N9ZKG=qR2_%n(Kx)LB};eS{tuP6EzanoJWigqb(P z*S5kge&07!5vaJHHd4Z^3^3e>M_6_c{s3092D13E9_aPyjX!>!>z50D&E(b#Y?WEU z<0f28Z>m0YSIN)vSCMi>Tsl{!axH7#Did8sSP4Abc(mu6$Z8ssCF^fS5KaUtT~nIx zIblb+dCFZX1qPIDJ}q#28lF(VP^mUr2;uJ^%4)suDtkw^9?epR-KED{7$l=-%f;Kp z+u;w+pNu;KQy8C7J8&Uq3ppVddu!w^J<%bcbd!H`6Sh-mwb&y?pDU>&PQT@e8Ai)s8-w{WHHK;GQosn)MY^36kU@$T?Jgv?{BQ zp-9CixX@aPLNY9fB7xY(HwR;~_&9w;FJlVbLrp?{kCb&NYCEFd^m3May&as$w}vPDMfgUa$JM;hQXQTk|Ah_Y1Hu6vDM4c;)_0D`nT@@83GV)lK zVrvu}bCAoQraXoj3pKwSoy~msoZwlo zxUgIW<>_$2o}uK@0E)78g3{Yu=YN)%$-9Shl|GzCw4S5!Tt#0c!t4&tc*tM_`gP7p ziDzcq_^KmnKrDH8*bl+PRjZK@vXbt=UlojKN;o|YYOYk+A&L(i+zAGSlnRUt@=XuuX=TkRJa zMx>b)0Ya6G>+x-zqkTI>_nU<*a!GJ=yl#(c?=F@dA zm>|(|6{Z&3(!C0TMaJ;?F<%WhnT4;-D<%pL+q;bTincijr}Ztk)Ow!ZQTEoi3YsIw z(L7Z45~s>pwg!;E4M0x{A;KJtfM22kuoc0L7m-192w)_yJrT7(eJ*~l;QV#Q5u2Tg zaT4jR*5$edB&AVTqTaH|9tg&A>LHd-f6W|5NOaJ8m&daUfgZ*O!;l9GtDysQT1B=# zVV3OReYHfc*de$V-xXE_b|owCAU)aU2$n0+djtmy@BWYtF*gbfo0QDE&fUq7Au{ls zQDmxNIsqo~LV~u)3&;1Qr}b9y$0R_;KnwfTM6HiaZ^yIm9kYr&APg92ye;%eHXzEE zIu`0kEn$GxgIZ8s1OuZ0DI=i7T+}mwgRY#gIIFH~Wq}}B?%yWv-xW-QW=jhk%pg0a z8kZB`jeQlMfX3KOVC#aYHE5C!F(ymo6vDpW67+Q_L@@CH*yQsZORSP+**y>16Z70$ z8AuNH7jOTFKaAJ)JCf&z;B)0_sR(~R3-x};z+X+x*JTQ2i01u3Xq2Q4Gn2#dLCae# zvc!bc5toxsbv<*$fDAFmK}}J71fnD(=`)iBn^#Z%x=eJ7Y=I)B;i zOLoPjGg3}5bv-}w$KdftiCWqTFJ0w-P&ZyUD|fs<1#p+y^R@vU7KQc<5@x|Eu&=|7 zazKLLlKJkr1{tgKuPdK=b*h)ttWR6j|P z?U>q0K}h$g{d5`wQHd12hY|Gz= zR8TVoTlv=7hvL^@A|T$@^{b+gI(UMCSL!Kl2}&?ewNM(A9<1<4l&LDSxUjz=!|nMJ zIQE?v^91pPMD<_B%?c<%VUS3F`iM_7blUHZb22XFE5VRuPKxO4;@Pll>?4cY>W@*- zt_i!Dc29zTN08CUD~AWDOH!M$n#z*AOnc#3kl?|h{OG(*Sps*4!|auviDtu3m;R#c zIV5HH3`y7SDe}r*=(%CPfb#$>f=jqfRAOD;c@N%uGInm1J0%&pGtCFTKJWrhb>%`o ztdDK*Dt17*wWj9sDxKRO9UC5D6GyFND%W`tO81N7Lb0O?;354fBT+%5Ms2!aQ2b!U zWq~l_EjCsoECj{&OgNX{zw)Mp!4*TXN+8y`zC|QIjzAoowr#dQ+$c`_Y*|t6htB0a zVIlN>D>2ktpwnmSE4@WuFrgVru#bQy`h zhm6V6Q(Sb|pZ#&{1A>nODo-u6y$ha9Q4vbTuXNxU@Fpsmt>f@VDl4m;iCa49g4Qe` zY^+f0C9H)B>9eecI6f}qW=P(>T^itASb}zS49R%urmT)K5uTCG%Cs!eFR|!N`^;}{ z_C`n^;-j{m4{aZc>%zfpz%}!J82MKncQY2Ywo>T?rLW!(ix&0xMB>l*w~C)6)O>kB z(E^wwG}WcJ@l0aw-@i8Vo0Obi)mNRE)l-ZZxJ^Xcr+XC^_2DExcZPHCWDTddt)uub zv1w5-@NGXee>daalWnN-^c+EETD&IOhp%O0CuAprkZq+1uB06-D85o^=kUJg+8ds{ zt)!V<#btvSl}i=j_2%m6t2bw(e5%;5_qPPD%5En{T+yU^5|T}rayd=D7!?iN%)J(j zWY*+plpc{sH1CD!?fqh3bbZV1dhsPk=Qn87n32~8xN>C}o>b?evLF9RMtaucwWh}@ zolkUXWI_mwbkKShiX7Sbj*f-*1OuCXuX0i+8 zZN4Dner(}W{Th$Nmy8#TFS?$4%>e> zut;8ZHTJAF8B{8ep;+*dEbj@KoWM#3{M-ny_N~Lb!=Deg-MEBSVU|O?QlGOK$8hd= zU4GtI7}Heoh3g18V$4l!LB?<Y8J(69iX|Gy<7zqzg*4MG=B`(p z45|N;6#5DA=mPPwbM3tl^>eJMGDx4(my(nYJ`T9Y?3M5J-q71Ea~aL; z{bZmKWST#G$o%g4>}=XSXTk6JY^wnyuXQEh0&Z>}CBaH1;X1|l_qeur*sI;Q-RB6H z1VDQG!YAEAi{vQXd#J>8Ztab{bMLO1t#pO2kDW#2DjvQ6+q4>zY)uqNAUHT~v$iIl z@#`KXmUe(T@_@zgTl-z&+|xGQFx}OSd#fwM6@r^xMq@0fg}oK8Na!)=P#4Ey!=B3V z)$H(_{Sk?IL&hV=SD9)s%k82Ra6dMcb=7>%O_*e&!oF_b*pK$)7TUU}AvBQ4%L22R zlKipxhhY+9Ki+Bgzs+6JxBWif4~fZ9zb~M0#lG)|_xuE}TcTVtU+QeDgm~JOo6mi^ zvOGH1D{Fpx_Snk{fo0?5=UjhyPjR^D^kgI=O2!SE@Sth z%sr?%9V+OM5n{WQVGAU$e|LHQ#gql8Q6r5X+@5;j#Q3RSSMXm;4T)Sm-CeknEJ})< z*zAnj?AU!uKl+^KWOuP{O@Hk%rv+cQ?a)hSF7M|2c6PME!OTK|aWy*tU(9!eXUyru z>p~OcU*`shIA^4NTxa@6{l%_A&VCc7$CA-(o2Rd*`q)kPZ8`tfPG*(7{OEo0mj}sy z>BJ3|WXmBU=T$`Um0N2<77xQ7CUw)>1JhEk2X$~XNC){ z^kjwi@brij2XcRfeFFq6S=qHV(`#{x;sPa-kpACowD8gB@fcB|3cfR z&3kaWGF}gEEHzIj)Fp@!qh0t1EolOpNb`3|&}Kl|pz-x@+`zu>1zwX=tfvygw4f8w zft)7e@3U4f76gf^Elb~6^^f7SwNct?qaO*w#$@oXgfaMrjFVDCANLn?Va3$kAGPf_ z`|sSge)!A9x|L0m=3R5ozh*Q)FvU%-I#hxm%A_-vN)=P(`Ot1X&?~0h*=QSCxoBkBvUMWkpQ~7Xc z5WV@mz3Xk~os_xhlX*=p3POOxg#qQ&!MQ7_gew93y6Wyw&*u!eJkEEP{a<#w$||%#$V6nwG%B#TZh6eN z8mNIAya=&((>6mWPbRlR^Q44<;UQGBf0b?)a6EXk1Z2lLzFS%q-(0{G> zeluMOoFaY93o*;T3GgLd z0BZ}shTY^rbsyKA+4>&C(4zE_4dWNJ>IRLgCxCGq7@8_#Q1?TWwBu0Vol$0II zhcamgf&D~fYMWA60_J|ch3Ctpt!W~i98V?0O!L&d+?=dm?6@f0*9RPUwaM-PnFlsLB{>m_iEo zx|K|VGf2t{Ncbjb5~rWe1%)R-Rylyn&oJ~P;W7|#acsW14{M^r@Z31Mmb~(k%pytS zH8}`knkAbskzo?pmuVKa`dfUpKjK}#VJ-P*Ov@)=ZkljA07=<(j#1z_(L3?31EOkf zZG}zdkb;KCXKQiTjh81n>Rk{2%^b|rU z)j*{vhnL$Mfqxf%839W_Z`(U^$nqGZN>qF}Aj`nlrbg!c>ZR6t{KxrU?rQr%{)Eve z_G!rqc#icZoqT00f8hOQ4!oV&Ne7Y1s6L}FhL=^QLS|gvYU~%MI85ME@2S> zRDfGK5qF)2qD)ly?e3Z&Z=J)>NqA~~0&kgMId1`e6gRJoKENcC+io;l9#8atb|;=< zzvVM6DgmPAc@5q}S1LVOe2Bq}oL8mFQH>4~hxyNeib6(!Z^I%O+W4{ml}gZFFy!-| z+JqHD7q1?xDVh-bReE~JkKw*Og2KMKdf^zg`^j0Ds(pQ65BWPiZ)xCsBO_Yt@{ffV zKnaDtLc0*7<_5qPE-T(L6wEH7ur1VeDAGW7w4@e?;L+Fsv4I!H3($BQES%u6$QXQT zbVK zMh)9?K23z!U!9S2>>4TW4T zD_k*tYvUGo_Y;Pw)(M>uCszDVHpn0(OiCWN{G;TN7wrNpWgTn?oT`wSUzxp=%q`)j zpj2VZMLem@fPp4W;)L!_habSb0x2q3%DV!1ipuZX&kzG{#ww!6-W+Tg8+{lf z%Jl%ZPV=IaUP$o$VUTm#HX!ckP)=t$?f4SPL;5t=m@;WzKyDg>1f${_v}XuEmZFtDt9pE$Mpo;$ zcaU-!eQ@O?7I+3NTg(xZterdvyfCFC_Y&CDyOG#+q%$FH7HZ}1v+=BmD5r_^6{;Q{ z<$`ib!^QZS$KD$;)o8qv0}?(1+h_^{d|0vp_E*#fMQII5rL$*ZKi<6L#C@GVm7$t* zMy;4`9o-YRm77v^43662KvbfVgE4eDS*ziZCrn3 zdKKZSr<1EAS;W6YbrOv~lM~(`1kK#BA{xl<9baN|^3CUz{ge!O)~-9$8QC$Q!|?;Z zhGZ$R)rb53JJalvtK$z|Nx|8$wCtxoY7a2?CgRiRBd!j@<7VjiO}6o8T=2qxK3>zr z!xhetY_h;1YqhIJlT@^VCMP6)()9i6NaTUXBeX;}j8J6CU&Zhcf6wFo-+F;EnKU}t zoQnGlt&ZO?h2I-2)&>f|o30e{0BxEWB4ZVTV@k!pwu^n{cn`p51I!flJvF?!YLfY! zD|n@vb-bE{<_xhORxDjKC*rXbwu>$?oI%7rD2rpDaEokVF=LtqY?=`55CMxw2{T!% zC8Jp@d;of!Npdxob8of1T1`koQps3&iP-Vd#Csn-4K+A;o5N*Ov-C7TMXU6)?@|_H z*Ew1I8CYW204LisG_r`v_~VnrIS-Ybi)P;oT=C!KHq_iEutd%!AmGt84=yb6frT@y zP>EK+`NwitRuQ=ZCB#$N2KUd--gtnlMr0sw+^-(|tKRWT$Xt$?&_M|BNe>62M2Qor zXeN7LJn9o!7!zH>9#Pp?XGOe0y~m6tx}5>wqGy3YlFHxPt1(ov0MIbYDj^zJW67-n zUA1c|5Cb0d=&a>l%i+^%7Imck2FZ+6D0YufqtFAi8h;Bge{+2(=|FwL8pk#C3=ocT z*W(8mFc$o9TT3jDoyB%tZRpd6gkmPrnY-2%^l*Xo-F#|1wd%WKMJ=+K`(ak&NLRKmJZL zz@Rq)b4fy|P}d~xa3}S^uB!vep@%;Mtd?4q7*ZcK({R`iItJ|Z;oO2%MT<3mW*ZsO*x9bVVAjYKa84B_2ZO%4OGXxew^R$93 zvSRt7UR=;1lt!}TTu8Kh<^o?kW_T)?H=(U*p64`@BvU9*2<4EmI5~&=p!fj38csTm zZ@7~k$6%8$Ns(TMdD)!v&3dE9J4nn(*A+`KbE6)+JRKm>=Y*aXkM(o817z{N_+k(B zIe=0E3iKqQsCZRw!u6Hq+a#@R&69qxk$bxU8kfoQ`+CbWmn>jY68H_QZb+uAFcTGI zrW9xI^g)RcMGaV60CiZB@hBf*NH0jo6;A2u2e-}k=^AW=Zq_!kSRzhq7V%Rb8#c>W zcKfobZ(671!Lc@S9%CmuFZ6oRqgyoVxk5`5N`&9a_2!v#XBkIyfSskdN44;a32CbB z=-fbRQYTPx`W(4C5>h1fJ3#El|16mI7}zaE z*mh%3FnXJiD?f@w^u;q#8WK1QAU4XJw3O8>bcp}>99gt0Pmm}5w!qbkPYdr#6eG~Jj^V0OE)Rnay?UPdk<{S zn2d+Gw>Gc&11YY)Kx615o3E2`r>OghiWH&(w>{ux`0Bnp)kQJ`_#TBg{2;PVuCBb{ zE z?`{lQIM@X#Ot=QeUHm-w1XD<>V$JS=7}jLvSU3zTGGSxRKQ5t;`*uSBLe(& z-z>OS`(C&KOY4)>VPJ6uLPU0V^$e`)3i;(O|7L6H2z0RwEJ7wgC7$mdc!eHQYHZ$| zSfck%rBUTRLqLRH8As=op=$&&BY9*d5RvoPxIN1Tb&b*FKzKWFA|6BMBJK`jTK<+& zTcD>OSRvkMAhE42Q!8=h@F{IEKpCj|FkD+9mbF&hVqlY@vpnaR3!U4EQ5)*d<^z6#scm)YLG_5YYD1>Rr!ky!*l^a??X zB|u5sda-Q<7687Ju+osf(Q$7HoUht({uXwo6ymcrJuxGxa&*#!h3$7_>6^2B%!cp%yp@85Gh;{gAqPLCh@k-Uz{SWj@r5bP*9Jyli*cDKpzome>}NK$mE;~r zPmcTCzPtT=-1h?497>4dasc8UM#)1|Skfv-zWI2J&XuPHAmg#V8!*yyx|ppFHr+`^ zX#0|}8zr&+&ZVzoN(+SwvDxaJB7Ry+A3kTp6F4_vH+-5(6z^x@Vv}*P97B8L>(0&_ zc%nk4hB!h%huUf?et_QxG?#nF{7M8a7WzJt257l91Gk`Cih7Ea1zQ}+zYOmaMg`bm z3WcT`W>6<6zRfIXUPO=ztW2GfEj0+M&%<4Q{7%f>s&A4y9?HuCL=75W#DI-p9qUNy zI4tN3i|M+u2kRs7dW`Z{(KfQ;Njggd{-p%l8`}qO9|y&=N<)GquU|M;CEhtf6&*au zGbpsmUl_h79)z$ZybDO^x`?PsYGDE5gUTwu4SS^@HwPhv$MNA9mU{2B#h%po)CkVGi#RbuZ0PGMa3)&q;Z*U1q2>ZUAzbTqI9h-c%=cYUJ-wLbwf zf(3M1n*~&8GBj8g>Mq7bd31b#@`C5QuvfuiWdR-Eh&N0C{S!gWPrRZ9{0TG8JQ zgs$N_)xbPeJ?q}d9tpZ9r@+!k1d~Wu1DuJ<;0A=h0TbE}zJ8N1I^L{=QU)$fxH6Y9 z*%BCSfbwP`_3%F*cYf{j7wX>aWR#UgWZMBo5~RC_IIpO@(GGS=;64H6W;oA)%M|X1 zHO9dUyrZ1Qa$a8!j_asFh4A|w?j>a%Wniw3CD5L7t`)b@AC9Zu&g36K2x9VuGR0CL zg4y9}gi5goVoKmj(E%u=`zA5O>pc4?I7VVv(Z>pa2UTF$v@zR9mmx_vdL3iQpiU9! z+)5i>{ii%n{m*XxRTwq;0XK!e;9J-yDAh*>>GX$Et zM6KPW7+jeQki)l=4U7Qe=WwlDF6;Q71W-O3K3XgdJd8?w$dw9yOI#q&3sOp4Y3h2g z_h(R4!BviZ;IRRM3b;{34QRffI4paj7;3@w&$S(CZ(K{r?+@~S;8!QYl|3|JQ~D4O zIba|!{u8ilF=?A{lWQGz#h@)RO%A(MG7|H}Y0!4yiBkd>j1BN|i(SvxLQ;NYcn?}l zi|9QQN%>p=q>NsiW}^1?Q1}lg&^S@nPn6t?oNN6<8MSRR344SjLeeO3Eet6QR9>?( zT?+ThzJbEHKoZ*IjxDf53b^q}(fel5IRn8e`J=%0Qp9-lF5XBGI}U5TOFj4{9SA<9 zS?7TrDK|Z`HWR=LK6hmie#jh0E#&iusv=Vo0?T8tlYz*$m^tykC1tJT(kY&l4)EAQ z7};a3_<19y*mVmK!-|$p#NAI+RDqj_tTk3Jj=%zBU}b^CgyP$QRBIA*nLD}WN^qRa zcE1qTNRuS8W}5=LW?Vwa8+m+r?9VVS=z^-+QX9DAq zlh3!8&ybBqotV9FpE_i@KuA0@R1KTQ@EsM?^s)1aIr_9{eBziv13mq4TrjBmGU>}?JjUgwEd4Yp7SckY zU~zeWmX~BuA~@-tN$yxlaf+5>$|tye!&RvpWH0!r^BKISf1l zP-!(t89bV332uqA`5Uix?|A%z!PKxH6IlC5iasbZUM3O!xi8ywL z)keYv)!6GXWxm98`sk~>)DKT_s82ve3~L`Q`vB!|^3*cij|~Z|0<(X)Rv)ItA^7=u zsfk-hID`|!0`$Z9pnu$LqWo1L`Rvik;$~}0a6w5*+BI10Plhs4F`*^LVIvP{y^nX8 zHxuoFYv1OtQF*B82|N&D(S>U9ZamH52ZElhX)JDWn0xfL0@^(xaDZRa8pyLIp%NV_ zbv8gqIpjH?`3N!SNXGwAx%?aUGE#8{6d;DMJN_ zgbwoCQ|Qxds1!i^wj5RqFWT@xuNPoT3ayuyg~^sMXM^oR=d@w=$|*qW zl?&TFLa`W=7qTEX?rl90ijTZp(reYB2;FWQ#QpG9pzn$NArbfT^|QfOG;80?4QKV^ zn2+x#fc8J1eV!^^MfD`Tu=`VAXAK#Y&^sd6q*W2UX|OOOlrxmt_=HUU{ghQe^jhLR zu$;oVTYGqDVG4X7x%J~jf%Wp72qBG?$K?)AFoiDwsN<*JtB@J1IlmimSxgx928FH; zH<|&t+<-4EB<>lp24D!<IlESyu)FMpjp%b zri_;on1PGbiA#R&)!>)NWe-Yx4J!Qd@7uG~So@m_^y&}55Ab{B-yPl}NH8X-T2&!J zSfEN?TL|EWO*;B5$07U><3vxL~8d% zKk`sBA((tK^)yf)y;4$`^+@szur)IIrjpF2hE zdwOh$b)(zJT4#Wz6v18oAP&FdggKU0!#h_%vD6dB{+6^-$gI0Kg+dY`4|xGB6UBov zf4)K|UTI2K(eIMi&XP;AEwBN{6y_F5B4%v~{G2gQb=9Xvcv9*Kv9dD85dY7el9MV2 zIf-@rLA&@G=bfdLRW*VVtkC5N=4&%_%R%gHC2G`T7EuGn0xi~xhpdz#0GG*nRmo3c zjRP0EQ^P(bIE7{g^pSmoJe2p!oXemU6d27>fpxN}&2#RF2?7Wn&3;Yk?+PV@YtpPb}4TQU-FmVWC#&93L*hl|q&{xUl^08uY;99NKjEE4R-^+3>) zm5EQ2$dxFT(@KO&Ux6=6I!R}byShD$dRnnfmzR?>lT9r3Cp3n(AxiTr39kt_M0&rym z-yt{u7VLYAz}iE{yk7-~{cPQs029chuGh77&Va03l=+&U@A=*zL=~`7K0{8Zvci*@ zbuj6%>h)<>DiguF@7ED5v*9>cb_hb>EDty`3^6UK7GC#1WYDZ}Rm~|fQMz<*9?+R8 zNQfj9s-$-1D|Q;=qu>BkM%*4kZl&Gm72g=S49Wd)Xk9xp{GrBoqcu9C0cbaak@%~E z{}j|@J>Ms0pmX2^!76V1rR)B+6jzU_WE=#?X)n;SMxi9J0`)Z5(yS${@Z0FIfJ-4K zeFu~*N;3hfDhbpXE9yELYaeODJlmrLt}YMf0pDLUQ0=yFSVLdxY;*=QrD^2%(>bAV z=7s7u(9X}fZ?Nh;NBJQcjRZ8n3jRL&YMRE%am)7JOZ2Dk)@?92)A@Z3ehiSSs#Ns! zBS=>ed7kiHF$sgG4b~w)XR0oP{$7cSCj_C-+B<>!11H)>PKsf)5R)~VZN-5= z0~4{z{X|s-!T{q)&MB>&oVVKL`gn>?FbRRW+4j?{{@eP(uFi2)?Q7P-jK8( zn@EAG(D!q;s9KtwvWY-@Q(pY&?G;c))%w$2WyrNIJItTECnMfBUdXl%!b*TTzDWUy zH7K`RGYc4ty6un09?6hDt&2RqFFjlEx*m@b90&8~K6>aKs&B#xt#5uXGXtgEL9pQ` z`x^qR`l9KZwST`BCE<$QHD=k~HOX$)+_!p%YsI?|{%&;xtYuUXCw~-+^lk6lpQx4E zhjPx9hG;TW_%NYQ_qx;U?N|;4z$znmC!{E~Q|dP%6fw;Ado1X}fpqLzh2v<@;w$M` zdvOJN!-vivAdfWcl#h>}VV|-gy6F{h3Nj#P;Wo3WUlXD?#JuQ_W;@9R%0qHitzm{e zrW^QgHngzo(|`Zda>RA}FCfbp*i@50mgi>Brro)#C2hERRKqw=DwAF-?p*&H&UVAr z-H970Lxv+tB4oCI2N@`?)hm$%;Vh^1+uK0n=3NfKb&%KVV7U)wiLNG;+0HkrQKACu zI7nOlNx+?mihO8l5ZT`WJ?*^o!+9CpF>^T0FONG4yMK0aOL6c9*^Y-`VW^(D zOCA&yQ`ZE`G4H`JTGLw-tTKFC;j@^-1_;&L*>Kw2jk!nu7Qc~F)YN_je7(gVHuJgS z0N>+1(5-^lzVVnl1>QNJXD;ppI8&N?A9E@o-(ZSye4rS_D!*Y1sKzMY+h#eUhi0eAoPOtO9XGQ2B!VMz81-#LU5P&h-Mt zGc?0RWd*w9DQrAm^XFbwDG7Cp4N2kHMt!%`MpB?DM)9PuM#jo=3VKjWgD!wx>twws z9&`}gl?GY;L@0D50HswB`f-rn+hgks)vNl1y6xj5$SuAtN<(MC3K@4a)(lp_w_6G;T zx4%{$n3qTc1%?kR)vp?eLk+xdfP6II#1!M2lmu3$jm2-fNKKWEr)e$FGAUd}lN^ z{<-+bWgRSbq*Y$K;Vz=t2F2f{q!B+E3r5g^<>}(ytYb+`6J~Rd>2#s}V)HI&VqNI1 za}Gf@+Erm~jTQ1%2dkAnY*)WIKAFFh1u-se5e?AQx}@|k6;kIWMvph^XmBk5ust|J z4zvj#*Jqxd`oJwk5RKW|LUnfC8=$Y6d~TYDy6ct+Nc7v`UrPgb$vd1nuha=+PLZg! z+$YQ`;wdw+lUf&oBD3Crn?+5dg3JQJZdLQVp#Sd>oVrc<;2sb4iUDIl24YPP2-uDE zVA;xi(-14m$f>v{p8zHg7V9X;B4ceK5Qh6?)x)|Q0#^p^A37%eF-+O?q6&W0IeHs1 zB2JG%;#uJ#IGLNc+cgWETJEh`y1VuQ(-J(S8!M9g7Mj|x9&GDI)J~HBZ+e7JBVkox z-UfkBS-mE*8?AF(lTDHp?_bE!m#3$EkUEP`KeNdKk)V$sB!>HOt$lZ)zipTpJ2%`UxmxL~`!nmq&B4(#i$KJ$<0RIdm0FZzkb z;JhY?2~P#b`0Ab08t3(udQSAQRQvVcmBZcz&o{@Uh;`N&aL|5d*OWr&uq_RT2+G7E zj>%#XKi8WsD{Fw;;PArVsLTV%w2r3q*mn=5?_|;rx*{VG7pcypbD&+&voHoG%BX-K zBhIL+0A-kEf5UJp-$!U_@H77el4gaT9^T#`Jy9FHr0_&1hHy2-|7yzz|Hmgl*Iw37 z%I3TL42siZ*?Hr~j^9%2pQUMciZM zssXM#iu2e-f7hM7h&mbCXd=*Cgj8zXAQ}^_YeYXvri4WYD5U;2rcCx}*x25SiJtPG z^XmD)4Sr78E@DXm?L**I<~A`m_${MeTQ+knu&zC*U>ZBaVQ*D%Fc}E$5Ilq$Ja+oD z3JE*-Taz~i96TpR!O!1W0G^@|B#oW*K$j^+3#youqZq2}&Qyz5F34raLHwqyfMig? zaIIXN@R+qZ|63GY*nvg#H0?#9a%*$}oD}Z{L@+OKX@u^jX-2a|4zr(A413Gc8P9}! z&S3%jz}o4pkHpp{_u*pnf_L=py?n zOu~{ctkTKMkq^9GX;&|7h!&IeM>_l+4Ec^7zAlTkH+Q7Us36x;izxlM;)IXvn|070 z{dSvP!3$$I8?$a!Xmv4@W71ZlZ$2-4InaKFH2H~xkZ>lN4VWJUC^-q&dbFVHf%op2 zeCieqFlm3;Pwa#)FZjaBvi-;4=f|Ek`ESZFQ}gFm>2n_Zjq|^HPDqt?VSa#`t>C?g zeWg8E$mSHz5?&TsHDj{@eZXYG4k)ii_xYI}*%6Mv4+#eO57UExC56211^4n>zW9>o z!G|{D#-YFi>xYdGzp#*W|uBdGK~gum3(yZ`10q-Bu8f9mYhbuQNx=*moY?p(^Jo@sXLE5 zBuh2^CXnmR5I`eg`eNCQBjzlDv?132n{LeRXa>B5b+f&T4jC zrsfzsc6+RbdQ+CIsH?B12VY)f-bn z{>=R3CI?ABPXU`9={)}0G+u6(MN%=$lD;=S!;&r99y{r2O#RFA>v~fzseO8e`#0oP zG@t#&xp(Rn>sR4}g>mp*Mi$pVoK=)C1{CfC8eBsWnHnbC$4}a@8WhLFp<5PoSR?eSakDn6WlD33tu)Hs4{3X5B zYs^-ozxd`^p$v3dPmxO5$B#RtUY|0X!Q04~aHPc;2L55H))ueMH*(?shj!`c0>8yR z_|*wN*8D4%HI{dbSgzvNF3>zT@#s#-Oy56b+rC>XhT=BqF+>H<6jxIm9g(XpgaI8? zZsbxK)&YOi(6eW=lgtL8&odC^A0!1C_A&3;EZxL~l^p7Zsk&C8(Ey#p=Gz_hO! z;Jj-eBWJ-Z$&&(q?#TmFVJiFLgyTa?!feyvKa%!Nv;{cPHnk_Q(#R4>Ax4!ttvlqS zj$JkyJ{953_)KhC< zxP<|G>#EQr&g0ljhL7zA6$p9w<8ym=e+~S67v$7XJv(tcWUK+ky&s&(1Lb_uxjw1G zXYeUTfAu6b^4;TYj{@OWMbEB~KHSNs->)no#G5teg6GJKt^_ znu8Y%+mF1%F6mON<5gMR9x# zj?eoOzN|{!wWh=QpJ@f9o03pyG;U{8>^HgbR$5kL-Ab4RWeP>6Dq4v#^pyT$BipS2A4(i=jg0uMZ z$ZR?$YL+6Lhpuc^%~sbP@t55p%BCArjD@H%?BS_=G2e!C52(VlTWXntLM5P4+G z@sG^L;d{C6qJ1I@Fuf^BGB>8Msr~LshtIH+G7&;HCwnm_x89&xR6WJVdFxgDY5a2V zjT0$0!>D%9^ywk72a?oXKlAko=P%bf-G+A-U#lHoy?l~RgrHrkr_s>ENF#Qy$2oWR zgYMM1HJpD8W%`r|?d}YovvlC-L%Vdv4cFI>dGB>^LctMfw~(vG35 z>CYRpO!qz6jS{sYL2I)p2I1u6^8$~~o?r1}!VOHasT>|Mr-75-$dLF+tqE*VEUR4a zo+%jq=Fbz2wx&3Kpk@9HVb}K~6UUDd5Z^_z;OIV40XPbrI0F7g7E$0L zzg+Wxh+BI+DN5UaOIj?>DXX1YuCy?v1+S|$E_}>@f=&c}?0v9Q5;?W=B#IZScjL$H zdq)9ub*xb$C8{2F)o*wNzV`(c7*S~Er@g>?m3Cv~4`5_ja*G?l3-?FJa zFsJvXcJ?avJ(eIeHcK@h!_M26>bA(38T5)=6_Lef(0ng?f=>eX!#2R-V@zudmJLb2 z=TOV>%3bUk;TvI!)H?i7GDkOgnWHn~9 zm_VyMS$h+rPjo`tV(^11R!+rnB`#YXdE&+B+OHO#-p)E%o_E9qh0oBPbcthxEH4#f z4Xz%$G!tVM!al z!mY#wUa$q2tl(^C889yEMkk*{c#fi-3fj9uj6RO3{{#!0%F`V`E1P{ zZB2HYT9^IjcR_{reCV!AYQ*@ryRJZKzvh!mi?1T)H)Am_Tuz5;5&N{ZZqA3dP&)oc z#`atoPP`1BCG#Dw@)N&{>F5+e%3wx^s}^-KMJeSX(Wot@@5hDu5(Z-rPO@+}d=e{X zU$cDD%aDe8>|g3567zwE?{wf@>E$KnHaIkK}k3d7+4$>&EQt`h0|=n=LfRDt-}4 zq5qAj^kP~j$2gWbwbhd!F_=n72(4C}*qq0-$O{jIc;cyHl{2YsfZU|WLb1x(G#*RL{T3Wf%kUgWf?m2uQm4_PfiEv{`7l?xlL+jSdBv~<{Wz7i2oXY zxBOvS9@{E?^)?0txpt8Oy}s_!87A;foE#9e*j`l2K4(8w1KR=@g5Qffp+<%j_b%>F5)4^<>5_fnp%7is z<)*c!eO<8W_B`ZMeYT|N?KP>Ixa3%o$JKu!pbPDEXB}AQ4mIU=gkisbUFupI{y}>h`0@b!QZ#qHyIk7#6P#ee zuky&h+}QHCE|A0r+x6a^Oy+~Vxx=CwCT>fR$YJp6;~}K(a`1p`_9sJxuu zJ}uJIsp>(<%ly+X4ULo!jPzWaJvHnUVY=k{gOncLRaKp`%8mOwR5^&jjgSSl3UF8g z`(?JCsKd7=_qrCGx4XP9{ia@nU6HY-uU?D>Ei85+TkNnvn^erE?aV(#lr-hhz%NjB za&++7#Q-q1KNP?gOuk{?zvTQ#e-fXg^xivQxn;rROdmIuoFG%evQis~A4M~szj3So z54TIC4QqBV)mgyXX^%4gg7IH6tw(Y zyQYG-Z*tpPqbAq6(>kWMV6UA|(ZlAOgz0oZ@|cH0Bw4jnKLD?g~CRLVhaJ-3*+BRP7z)rz~@5Vk7>32&*6XsI6WdZy}#= z^K9K^2gw<=0OnOpS`v`WaLv+&!F0j9{G?=5nyI*oET?SiQddHR0(`L4p5ccmZi6im4Ks6%^JJ7XD&91JyP`?ckCnUgR8 z5PMQg?LH@1Hissb8c4j~k%PDQ#3A@$(UQ&o9(5T*2E&ol{T%KFD*Vl9g@^&L5p^ZO z;9D^+);>_JC+Ywa>|hn3)HLxkyt}OCCG7MlrPRwPhYhc(ydOXrN~}wnO}0>3j+y}9 zWzxX65K^tVLy3^@)Mzd{uDmxHGYc{f90pg8Xr<7a97|@&_L*>kfHHD69ms8cVd#RV z&Z}HvC>xL@q)Wro?%tskka%5=-MvFrfFCPEYj;W7D5_bt8dDXVF;;LU=xjlz0w!(@ zWFW4jOLnH@B%V=W3^be?dnIhhjH5qd73+^`qg6E2+OP@`4AsnGJ{NFQXI(*?c$&N7 zPu_xOlwL{l5FyeBAG3AYm+V{V?7+Lwr|+pa&$vP=t~A8&IxjKOM@{tgvwsd~-bF_C z?>b~Mr(n8c+sGm_Ae0ds#(rOaq@jngjEC;Hs^xp0D29bqI>~_O`y3?` zzt{L{=#j4Yc;#hJKQDazJ-BFf^(+`S7hb;!D%ZRO;U!HC?mdS}|1eOvpLMcLKS=xF zDH7@U$cC$o-C*KPyeA@{-bQHQb-dXt0?{(RQxa$=7nl{?x-CYSkhBpgqUKsB*-kSF7;2N&m=9EF?WW*%QiJWiI9yvjGJ^oEGjkeb=geN1?@V!gD!AlL!Nwd+Z z+0(1YPCCsC3HZYGoPRP{k~r!>_0E4=sKedl?KA)$+zaZcT*ry1}}daeY6rqpHGr^=RXrt_5;fdZeHc)3Sts4tx=HaQ$Hk+BOzJ? z;l3{H$E2d^uQ2@$mTm*xx07RWf#UWrsVt2A((?Y-n;NU43(40Wz8PVAlxTOwF>0qq z^n&w_LjLC9hMrQxb{sEqTfz|xO~YsZ{_tcL>^%?ce!GdE-#$L>u72pA30Z%AW%#v= z6ur3TDaoqYtbATV^yTPPzG^DC# z^tM2k;V5d!{`0gd)b!#vpldF?t$6|~H54sQJcF zW^-s9&CLTh@ruhP|FUkl*v<@z6$APc#$Zk}5Pe$Jl+TM{@1#arL-o&QZU4puIM=D@j%IGKydnIt`(q!A7a2VSf`NOt@Dct>cA> zKIhaZB(2Q1@JTd}-4s#%I@o@j(L5p4@W*?7rYhe@?OG~Ku{TL|D&ptmF<|*l{0%ZZ zCx7*tIJFf1nIuG7)MEYjtXj#gJD3h~MOXtyo}nyFgKEfAH^NcwaLC!fj*D8hYDKK^ zf2huF$%jl`)$A5yKD?|YAhjWwExSNlW3Nb=@N-_y^30KuutaEo?Oi$>Xy6{No)S#| z=H#pR&fg%-;z8$}M#-9{c{3zCWes^`i%*ZhW`j^RioXp4Cthr%n?^%&UQZr{Jihdd zV|hCKDw2|{@-ik4*h2eNtfe9;v&2~0gf{cP-rC^IGvg%PN|>ns0jcVT0G(s1VI(0$=cg3-W%v)*2~ckj9L>?T zR@hq|5c>FB5;S}u4dkjyNIIuDY-y3$YZ0yz#K6BTSB}!>0Nq z3CvwvxJ8e^r8)e_I8$xZdhgY>;2~(2bU<|C?Y_Lxn4ij8TYj&nj?uzGjuN;Gh&+EA z%7oQ3B!aLuGQSI(Oq9@ZV~YKE$jd77aNdN^Qa@jg;rjQ%N8^mzuz}H>bJ$C_etz0O zb`(h7gm|ZQnXU^LC)O$=A{jSg&*5P1yuK5WE^Oa>74mBhPk?6kzxWm$@$1N`>|NID zfI8Ew95h7dE>&Ia0&Uvhgk1+tY|2u5%84LHyKc=rv2L^{=BitXJ_ng5zlmI8;&C` z6#WxDaZk>SzE$yMe{|!em?E@Yn1O|{5Ck&QTpBby2gL%fbCMQNxo$IyIhTB78Mey3 zClN2p47{=nFl(*w!R;T&xg9YwBn8-TrEbWXM=F~WzG8u0SLbP<~Kxq30nV1_*vUWwyi>BV8@JY#iX$?UqQ6EQB6xE{m5?VNJo)f!OEo8$9 zutj}<`as?L!*r#G_e+-lNQgjb@N>68iT|8RVnVc03H)}ZtAKrEp#jqxVXr9?$pTz4 zsul6i-EH`3Mkl?TNBs)~I)XCik9fImH2pf>XAT7)$FDlLz_=eVcsZnvr!Om}Fc5v# zbQ|O(@7#S;9<$!Tu1)b*ooaE)D&P!4jDNCc?L3OUE4#jM;_~Uef`q5fSIOL7$_oX*~r{RZ(=PivdtWC)uQO62xQQ~G7X3^)8m_*qCO z0GI{AM(YRf&Y{t#9Tm1uJ6|75^h;KpXsR9_-kw}wNjt}2dAVg_^m%tB5e<4&;zw5< zLve%~lK;2F=#CBETu)j?-HVH&u$!-~Y|Z!7V%KzI*FZ=pMC{-Xe`fkO$|XyoRNDGW z&?23-2jvo%_L~wkuD-Oq?=c6Z8&+cYEErsHQ}SU`x}5I~rJoqPM+sys3Z7}JWE7h7 zDWhE8XyQ#(TC_1J5DR7NFiqRtp}+>CqKUXo8?;p9ti%0}C*XBo#EtB(6yFySt`r5#^r&oaFhcA7k|HA(2R*(!Wsi5v`C|bDMxm#6 zYFe*fAt`I2;#CGF4HKL+DIQqfh3GZlMD(LfqjJ3}45dlb-E^I#MdomFOoRV2q1W?2 zWFUxC0hM2DL_}GV)n z;V(Yu%LOwJ|Lwa&Hm>z?uEHr;xa$TUB(+g06;HlKA^~fOhBWmD5HqFWdUv*6G}}L{?34oM?w}|^fuS5EEphbBbf!%8#f$87JUJEK+nzq%4MWRKzKVAKE+4WvQg-og@paX` zo4O01!XCZcVgR@vq6iUdhS}&44`Yg_4SFpWD~y~B7N-~tOk|WW^qXEL86jg}JgnM# z$w)v;y`f6-XTDW0?Ex=?l9apnb5v_2aRAW4vTS9zM0V)=0^I7*N5p^YNX8zj+tmLJ zBK`Y%_&x`Pl=I@p-_U+>r?}JmZ>s5RA4mNDg?|U9s!Gz871k$F72t!F{gdZ!!6BL^ zV43^$Su4^Ke&nMD)m5Hr=>m>~2xt*j;l-?6U?s@-k-dHk#=&R}r(1E5tRQ&{=7%6v zmIqFS1--kb#lTm{MOczq3*VH)+|T?Vx0VyJ!bbac(n0KE-=XsVjR}p@mnoJ5dh@r- zt2ds`UHokWyniE372M6LS@I4UZpz7mSpjYsRi+>^#ql@u_8ow%S3RloruT9(rJP9B zh(s-BgFnR$hVmIzVAn6GZT3R3XGk2yc|e2g+jVO3VUjttI7be2_{QqCC)wnIf=emM zIe~Ad|KGCQ?YOBLXyf{=M%sJl@^`?jz@gj0$*_YQ@7DYEkF^&ZDkfy?-9Y*ItR-VP zXN)N)&r6QP6REe&ZVwuWmYINK2YiS$xN|)Bp;`NC7{SL7=gLA~J}PwQ)4zV%=Y_tj z!oi>=qf^7Vpv-^!=6}COHm0|dq5IjE0$6)F4wj*`N~9NeG!}nq3%{TC0f{A3?CsVX z7o#EgQ{8a?nm9>}YY|#`oA{y=O?#gVvC_O6FJ)D_dPm;A8O6n>LwO5% z0Fp&+Sv5ra{=;w%3H-koLhF0{o-v4cPC56aAG!)|F&_5iz6cw#ntau|XX2(t!fzyY zAv6u7y%b$cE+#FwwwZVkXNR4P{X2X>E$2r+g2vpUzF#u@pD{v=snal0Vh9dP^Epa# zGuv#G>Knsy#;O_UXyB?&8dDTyQ3cM_TSiJ{qH@fVt|dsgfEVl1Wat$xg3R{%r$jhn z_tO845F=%RqzJ-nVfN^<=CcGuPs}3?k*Ugx&JL>(pAi-rgiD&iTUBFNK<~kL=d6Gg(!hTg4tk$UXbL0s2&@t~#^HgOmgYeoE6}FgA=6g_b6BZFf`l55Vhboa z3~Das4`5o9J>XDRi$BjG1KSV&zr7E+2pdnCD94GmFc{aW7xsGz)F9cCx!ka@NpKxy zUwVZSxO?JWf-ix%f!C7l-ou0 zyx?1hb*jOFKF-`=6R9?XaG@^D3vNDN)sxoO9(Ne0mMAh^gLB&RY?qe`rNd? zFYJ56abN7PpYKm__+R+lFMjv?=PgR-K6FH*kXB~y%-nmewNp-=99S%t8u(XH^*`m* zyK{?W=Kos$QPr9_-MhMee|S5znhHk4Ltf{cEyJ{`}SgESEZ&>~< zux$ybfA6P})?z!3O#STxwbtqTN`p3xt$Y8Wjk2voM2-3YW-kxW#-mKRrVi0MiJG-D zjAF0E45{YQkCoIj5_rb46y~un2IZTcN%Pv4{6 zd!BM5-J+u(jgkv2uC$g$X0;oE)s`YS*>d5-9n28ajV`KBmj4^A%%;2%hKN~4KJRX?P zhp}?n$)1viz`Oe|G&WK^5=T;jp;t?87uVf`V<*}gjalpQlG+`(>=Q4@7I!d6qhb)p zSS=Av%+uJ6vEd%|;@AvFQ~u-fwAZowW(NLW9Z(;_G|*MS4tSUrSSxcun%FC?E^zfU zL-~=3h^<+%k~og6k#K68H1eu;s^lJi!fz`B7IIGQvz^IlJ^%c-N-WrZ{=0@U!#=-N z1GKFnzwL38a_-5%@C*N-wv7YohCiC;l;X8H6*5BYo`J+1k#X``>wW%Ey~Xy+hh@r4 zMR_MV#)-@>bEsADYfn>DnP~`)P4mMY-a-8(4&L%I2mjrIYHHW;?Dcw z^2DyFyP-mw(M1zXYsK#ChdIjHQpl!dF?*sp(BgeB6=w#~U?=Y&Di(v&C_cqU9$uRm zn^^kMK^?A-u~|K2!kl5pXIR?2wGWNzb9jE6^rQSAuPJXM9gFoHs7ZSZr$k)L9wT{) zzy38(o%4exnzl_NK5f^;A=B8YYTn4^pWAd@sz7rCj8!|pj8v#YiC-5qG~ht(hg`FE zibJZ3a%6(r*BF|bEq3E|f5C4;-q4Y;x#ZkOoH{hhd4LS!k<5J)P4qt;;AA>Rg~>jq zD~uEC9aM4ZVa(*TgmBlX?CP&*!uscVXm}PUWSPc>Nd?zk*o5&4Z@K*a42_R8<5<2} zx^6Gv>;-UqhrFcLi8INe-I~kLUt#OPuh$ff9k6}cXUy)9cC__0NVx%zI71dt9n44E zy+qM4_wmtd&YG~)<2GKH2t^U|jsA9dr@}V)N9E;RzYn5F+f{Soi zz8Qq8LE5ob?Nq*WQCTDtSePje$d@na@???6%jcssWUcm%M`gh;v}Yi$WJvf%I(>Ob zR`qtO@WqpIK*nMCUU^X;!Aj=9j7up6Kh9H$^C5c|JKYB(>aW>T?F~v5SE=Y5M3Z)I zM7ze~nH81>oU0Sm96YeEa2{iJ=QGE-Q<(yo@IthGa$nMQLxSXN0|x*nzS zk_WTbhqBs4r9~G;^8F-@GdEbu6@S9u706a2Iv2R{YaBmp6~AenXrHWb2Op#?IiPa1 z_!;I!PR&shR8eZ(^M;x9RJ{(nugC(8@q zrkdyyU-ShghD7fKB-bj+^-jm)nux_jN8p{0yCCziW37?OO0m`)Y!sI8fi8!t+ylld zGi3TCT=Dlb;e80Qd^lihQ=+>#v7$FGpOFgof_zs_ztc5OBM$67hSypSX=JD=(9@N2 zZSk%8W+~-v1wNA_{*GLx(vwsfeq6OX2e5KdP6y;WO}bzZ`?Yza)jwWQ#$M&O>3+=Y zlAr$NhXD0EYB=kwfP-A)z!^#S)BW7>gWa5Sn%Z4+iCOX$Coi=cbJ9s{zjz#m4BpJU zOSkiYbR;rMeEQcp4O&MPuflh}^!6A{IQZ!k4=L7rq)*Z1@iVMU6;$f%Ym!~$2A~=O zmRh`=H-(7Ap6QV&&rk4GoieZiLvBsR=9} zox>R)q4Min%zY=F@)5~Xxg`n_Brf?qvC?HbIdeI>%xDZ!d60a>%POg*iU5Pi@5%*a z2)ix{aN`QFiexuCssyKXn8WE1dr3Bfhxb)9?hgs}SK?@6a8k42VCoQZLqt%?bX+R@ zwOgO56smRi>SJa^G&go%7LTEvyhqd88fK5kSG0B?qoT8kXI`Lw01{XG(MF!%d~7zS z*o~!AKXpuUv4}Bg!gOKB`=_6DezF!h^%$N{YYf_dnx<&5pPynDN3>PE7;lRme@2^m z{`ko(u$EQooYb}>i&}$;LPFTNtN9|ke@s%w+O;lq!<^EXIXBMH+uv_!XylG-pGO^f zTPbbKqFrL)4i9L`RmkJ@4gGtHd!_)E03eUJUnFM=ya{}TN7VaknizR(5L~@DneU;D zZC3Fla3ZZ=GyB?=@cv3U)(>dHVK{JNtFTQIcC9Vs@WwooT=yzYynQ?lsm29&Z7k5Z zRRb!sU3eGI|5aD*K<&tgG_IQrKqXNibWa~Cn%HKC^`DTuEhzhRLPe$v^>smtn#U;6 zEv|jw)F*Q*ETolsCXG^PUIbJU#-5)~K1r>BvfjN5vg zrEmgOog1i?XPm*o7g#wU)l{gx!NC*qQaC29^2JLo_f)3RA?k2+%Yna6&sXfYz8|B^ zf|Z}vZZN}>DgNpqMT5Z-^ZJ4L4PptZ51Z66+YJ+_2v`QO{Lx2a%wP1G$BvH=O>k(O zyaUc3e>Kh=J#EsUn*+p7%)gBVcS&C?`xK&j6L2vqK(N8SoVz z+AGme&>nw!X?(odXRYzPB4=27tF?PnZO<3f`1pyoM5QU?8cP>IsL}A6?Dly3?tGov zdyIA$e6n`qRf{e1iV>sI1e6RZ95e^e98{X+tu_srgJ>yiRiDxn&AnuudI-eK0#YBL z6nb5py#bABjlkcAP=MIDb-h~h6&6jLA?jh6h}UqKFilWb?}L;L#ZZvMaAbvCKvwBT zhxgwoO4Nv{J}wGJR#eF#@{V#JezjBE-gtRRvo!fuyEK6yVcBkgh0HNcei4e<+>PGr zUoE&OC%pE1t3*lr2q;ef?k;y_OQ!GLCPo)s*=e-x81wM!c@yb=o$|}IbMwp02oMS; zPip6`jJN!Y!aJ(0SBa~&eBT^i8JnTptX7A)STp}2B)%h6%ITxW1l^|grD1vXWjLuT z*skuIxKCA-nXCl;a}5++Z${T2wA(lOB7_ zd5zLB<%Oj5iYcQ3kEz?{ydFPMgnVo#*)K7@6JQh}@r=w!al-*bvQi9_Zr;}Kn}F@{ z9exwlYm}Av+XtE2#d;HWh{m_N!Yh93Op4q>T@ zThPmFw-CWxPGcjhr@_lw;ifnP%CB-!b}V>C&0kef#2BUMm-1R0UbtI8SuM1fUX7*= z`T1iDqS5$FV5!nOr$?WEq!t>1L?)t2d*HS>NF$!E*i2Pmq0vNa0l{LFGVNDkuV7@hndV___Uips|>ztj2%=V z@t4UwEFCn|=Z{Y$f*lsFt59aW_mw!l-y7O|^igp^m$7(o7`)MJP$W~BJ20+kgd^2h zJTVU8c9LGWKZQ@yImuG1os?4zWOs!JEo03S^LVPil29EM*kR3%*-fOJk?&~dfrD&N zA7+}x={~N}aAENhxa|%>T%PoXPcCU>;{LN4gDRkqot`035|L%2)}xjR2ZTebq7j!i zf}=;IKC-H}QLnvKaBnWT3hyDHSHcPDpz&EaL`z>lu_>O4khQ}%_63OSBozjw22X9`X*$n|R5-DcKhLP<6n6Ea(o@-vT zb^i(&xtp`spkeI|M)6hgHp6{;D6@z=Ix84MfLa54*o8f6qILvRhIzWg7-u6Ze(gN2Bw_AZwoqOb*AQ z^*EX*Z!c3{ z@(&d>Fy)9ixfH+4_Zka0vI>K#bUUOHZP9MHf`}|9Dp9qMi6Qa;$PzyhQ zqAmbK|9wmS3mwcD$zvw1pZH_==vnC1v3QY-#bl~KB zy(~>9z+8E(0H$2Q^ZE{EvgCCl`!AZP;tuE;@7a79JMHWV2h3PFgParx1WEI2&aAVGc6))Kp zQYm1^Z?L>aW|aeA;Z87h8zcLQ zw-d_;q&=i21&Q>-*;>Ke2jWtWwK@6bk}i*Glk)T%m)%*Odjg~@OO+^u4zyiKxuX)P65`qc`gu?jK0>)YA~D4a$Q+Wg%@Lo=&riU+Cl z0rJLol#6o*Ivm@W{uQt9B-helxs34bsc?z50eZoXN3!LsW;D}PR=>fiBx#^YH%a5w z3vG_B%x&Xj#8{!id|yIn1^=fTuUu;>DkJbk6LAnvaqc}F719o>@J{%o^~Mk3!g3FN zALun?Tf`nj0jLPtqtuxe2r(|esb-DlC=T#*u}b%)pkKf(dHGm z^@}m#fWOZUV`+be$_qvhuL4*y#@R_Qq5o79{_=8cuqUU ze7G`r`cTffd(<)39206laT}&8RezKOfSdAsj2X}v_T@)BdTQbmFcZ%gt=BjHHGV|GaJ-6XEFBdkih2gUy|uDq-q&k@=-a&T zooF-OFU2I4<}@&{wusFfbPy^Zn3)n&V|8ezH==62(5!eIr|eWGVssU9!3MZ?@2Th) z&`c-n^*S(wFxtE1)+FinzFbg_7^U(9r|zSsoof98q!o z6;isnh<1dkj4g+3AP;5u*0BHaXiCUWXHFzdScj^5YxIM8;4` zp9W&99f7CP5zgGAO<>_@s5|U_$@{G$uWe$nu`7H)n$cE{zkV2_Q)^X`L{&UlzH3Gc zp1LG|9i}`m`)c+rNCEKUtYD)2h{XHj`2tX|$Scmn3OtGFl~Oz z2WrnO#Me7OyyVPfRzl(Z(*{CiAf6*Llwmr<%N?=QCjmi|Nm$pSOw#BGpM8w&8MhSq z2V-bD%)Dk8qvW3%qv5k@6eClyY#~U|Y)x>njbE&cCv8CY>u~Ul)blru@uRu$Nh=b8 zA_XP09$6Y`Bt9VoUUG9r#+-<;hq<4+GmnI@ngvwK1WlLfL;Tx`FUZp~FH)@Jwg8Tt5{Z#wZrAHE_nb z!gNFcDk|<7UMjgs3htD_NGj+k>*R`wO1@DAY2{Sg0+;xYMvAN)JFa(w<=D*Thze}K zorY)n#hG5z736yKAvgrYiopAUD(VX#kJ89kvD?Jc+No#ab#$Iw;z;7_^Jl7FjXfJA z22lcf9XdumS-kEyB@f8h2>pc(RKR`Xv z4%t)vC0e?#1JeNr@gVBg8z7zJ(e@^%-kW=13Da4dF=Nh~aCr7kyDqVPNT#Y@LD}(I z%tEn6yCzw->7HQL%lFv<@VmYGj**;}SFDpP}A53we5>a1qAb@&t^sJq-UN6{I zuV@TuKfq}t$ALrgjxGg2&&9S1(2MP<6@B#qwjVEj8>TS@EWW@|x0usFoZZC^h>yx! zh4OG@7#Ke=Qgx9oCp42AsL#zdO`r+sKFInLfrSobo7CY%LbEP|1py7uZ^~IEUE6<) z12@p(3oO>B)?Y-#5IZTM1tUJgt7Ld>+e?+yFixH6chH;Rp~a9YpOZMXCpwcG zKy=QuGNaU9ft&tk2$JNYKWjE7%&z3FRuVBlDD!}FUrm_}H?Qbca8CV@ZJYR&M`(xccJe|+kY~L-u*2Yo6aGC3 zdew*Wq)xH2RZX2}Le7&)hXbmfBlZ_XS_2wV>?_e{EbnVmRE~VZN`!#92>X?)7yJmz zC&UTo5>S>t$m=he{A`KYzn2$F4Rq2kq&wyPG*#l{t-REPm1V6B;sGtw6!8OVya_R@ z5R56xP1g!zO9}&)dQPG%9Ya`9S3^I+j1RA4?n~3k4Os^IKMQsc^b!Q(b|F%3guS9N zO9D!wz2wWE%hziz)yy8MVFjsC7@|tv&-%Q<5Hu^4gF$Gk><882TN+p1h~8Jhg$lu? zGr-!Lf_LytK-Jm!v_5O@7&MfWA@`DAvNIscWC6QXpbhNi6jTiGHm$y#LTk1$2?L1ym7`hH3B9q0$p zj%}i$Kmd7aITn(9=qurnIL=*>A-c8&d1C!o>sZ?=npfUZLr0dIQmchF6SxUvfRU!F zjM0o!%qNc5a6h^4v8%>1j7$;f5E9pWep=viY93oYvRNg3D-_l5< zJ{g_k!Knl9X=yEbKqjD-PR3(_Ax_jTmqxUH96P$A@zF!PlsDeQkG@i6p}@-#jl+tf z`5^7}P{|AFTfVe`i&H0kEKX4C?1U5{C9e;z0rUc_YN`EF5l|lyMeHE!($7mxk{gKr z4&}xM#Q7i^AWK->Y(^I(4Xyh!MZTmSUOzV1s{sWo^)1olBHN}}F?&dkqy)%`%u|?( zBmG>12lYUi5)THD_XqdmkDuTiH9Y^;QU`X2!C~uB$i(`Sg)+D5?V9!3;I1KsRD0D? zpYmh{^tR9p>GrvZ7l-av(3$G9KAAP!0yoHGuaSMQT4++Xn^0h_!?XtFBV&q63k_(J z)cAV4y_G*W$&BNIGOT|l5rf`Cmxg`G2cyTsuP{&R2M<0 zpJ18SC#}ar@KHlReOjmN=rnTa?eH80%;U_1gL2kpWN#F`8kEoww4pcqq2;WY5YWGN z8D)b^gZicx6X24yK-l3boRDR-4q+5som~G{)CkE_TqQ$jZj#$Hb`-W)>R7je(oY@&lZ-^OD( zagiZS%fqQ7 z@_8MNd;HL}Gb*UmOSW))Pwxi)8K9oox($((G7m&eUxjd!lE8%14o%$k#0G0^LEy-O z!K%%n@YBIYNB_FdOVP|=3bl!|VYAhKrFEk%qbU`?;BF{rd1=n$y#*K`>_)~+YBqrW zS1?~J;*Jv<1Q?%73!hk)&b8<;2FRIu%ass zy8AAOWSm66@qCBeRaj0F@PQpREM>ZA+}p$r7QVsj18odkTabZ~*Wg0>xG#kcX}w^h zQbNzdH}CJLW4U4{Z8mW%#!YE?s)8Lif3MkLhUiw##dv|H-fuwTL*GYRK+HD0_tkg{ zx>z*0(8-%0bErWP&=qovSIsd>x~b z3?%ix&#xY3DC3(%k*?$hgn&8HRJ5fJCB?^Tir(;?wKe3mt!%=}mz8q~0;s@s&vQS2 zl|_679r3(a*(#U{PlXQo$o^xFCT2@^&0)ct*w$Al;~Er1SAsJ@nC10}#AZa;A-nKG z1jxQ}P^_gPn}Zwg7wpZ-+eh&1_OuEZ=}>Gs=?>ozSzdS)+80kR66+VYYdEXqog9zP` zFDQTOyU-CFD&U6FMj=AI{X@v!;hS8OLO^llOEQJh7rw)ocTc+l_mixbOoDGzvJ~{m6w63N*m)CmjH|X9Clzse3#XuwH_My@PJal$0?&cs}oA#h(l6sW= z*|^?;XOHhplnU&*{Ew!JwwzMWnqJCo5F}`3c+^5IMcFoX6>b50afrSbcc_@DMw>lc z9DLIyZ4Ek%Eojffoju0s&}qGNSP~$mM6wOxF10uSshGji;UCS^CwGT(jb7htkKOnL z;Kc6BDDVz*f<}_-ICQDQgRyuwj;QcH3kkzMFX@eJ^+Gm)0e{laT7|a`9)Lu4NXVNJ ze2dWE2XZb(iy;qmMGjxV)?ZPd?WK1Dt9u8#mIEUgzlM4!pD2e65SV54~RX zJv4=XY;0(?bStfI;H|6I)T#`ai|(L1N5-{dypQmWiC(3OcQUmVRQnw_)ttMY<54scQy?0v_OX7U47Yr)R#`=-?sZ+8FJ2+d~tolA|Y8>X_i z7^je!D$UjEdw4bfK6~(RMl+lC`#v9j5L zydiG-PbjV5$5yV$VERTtAGH?l({C5u-D*rETU>l8RY4IcR6VbroMP9d9^K8hCszJ# zitg;RC~w0-rjDI`?8CvWL3p!Qvy-qYyT1?U`o^oce_9Anis*Haf9S#D_RHWk;p2JI zz5Z@hP-)570_+Ov78q&y)yCd)V-wD*J_C}Uf%DRo->lz=4Y3P;gN!$J+w+$XFW~8pAEn7p{^q~VP)DkyTT9pA_IdKg0hEfrRZxDZ zdMnp1?{uPIBQyLbQ1g7@6+Dj3A*rw^LrZ3hee%&HNU{+4EJ=Qw+0 zbkdxs2WPg7E}9-RB3bt$P9Krs+<~@1Gp?`j6@5Ij>7ltvT}Y4XCt243PT!DR?igH+ zj2(>3>=9(nTzDO4R`gn$p4R8Gvm5Z8`P{yy00w!9v&UKk%?V>Tv#q;mdQ#iSI^iqn zR4%Xe(aa1OG1_I({Alk)=j!_`gS^ZNIWz%2Uj$EOkA0*4w{Q-r|D@e zly!lEN#}QS*T5+<40(sMXF$z!OS3qWgr|tdBl2)8M?oGcVoiyVmKXLYi*kQVr zux6+NX@|C)b@4cNxeBYAgs*6oI19cBOr{fOHlYENhH{W~+~M?TG?D&PSbYnD(ifY)7Spo3E82US1mtROn033n_E2y?@qnh zIl14V>)c1Ywf8u%e%nho2L9=Ns#71w8$aR2OwtN5N$vg(vS-h40Vi^k$@Dah_5E`) z?$$1GY@hh!$N%GoTH9(wU$4ZN71&bPd%hPBTP04=4_3{K2y=_2y}wD&CY*Q9z@dsH z$vT%W%M7FL`TM}d#neL&*y&Jx&O1R3x;;}myh8i_YfPFV+rT5a$P7G7^X&b;2K89u zw1Y~BgvP|+DyJ3%W&Ota<^IOJK4akiy_BMixTsH*uTM3$ri~ML;M~S}sTPjb3jGF4!~Fz)hUY2gR2k4}-O_xe$OTMjqv5$g|8phOcaCz- z`p7)EPo7+{OPu&4OP$WB;&GN7q8e`bsa5HJx&?~cLveY@!~(7(~YG8*8`9@xM$^cA)|-R9c5S jojs -#include -#include - -namespace ogfx -{ - void Image::destroy(void) - { - SDL_DestroyTexture(m_sdl_texture); - m_loaded = false; - m_sdl_texture = nullptr; - m_width = 0; - m_height = 0; - } - - Image& Image::loadFromFile(const ostd::String& filePath, BasicRenderer2D& gfx) - { - if (!gfx.isInitialized()) - return *this; //TODO: Error - m_sdl_texture = IMG_LoadTexture(gfx.getWindow().getSDLRenderer(), filePath.c_str()); - if (!m_sdl_texture) - { - OX_ERROR("Failed to load Image: %s", IMG_GetError()); - return *this; - } - SDL_QueryTexture(m_sdl_texture, nullptr, nullptr, &m_width, &m_height); - m_loaded = true; - setTypeName("ogfx::Image"); - validate(); - return *this; - } -} diff --git a/src/ogfx/RawTextInput.cpp b/src/ogfx/gui/RawTextInput.cpp similarity index 91% rename from src/ogfx/RawTextInput.cpp rename to src/ogfx/gui/RawTextInput.cpp index 5c7b5d5..cb0661c 100644 --- a/src/ogfx/RawTextInput.cpp +++ b/src/ogfx/gui/RawTextInput.cpp @@ -1,6 +1,26 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "RawTextInput.hpp" -#include -#include +#include "../gui/WindowBase.hpp" +#include "../../io/Logger.hpp" namespace ogfx { diff --git a/src/ogfx/RawTextInput.hpp b/src/ogfx/gui/RawTextInput.hpp similarity index 99% rename from src/ogfx/RawTextInput.hpp rename to src/ogfx/gui/RawTextInput.hpp index 7908fd6..7a412e6 100644 --- a/src/ogfx/RawTextInput.hpp +++ b/src/ogfx/gui/RawTextInput.hpp @@ -20,7 +20,7 @@ #pragma once -#include +#include #include namespace ogfx diff --git a/src/ogfx/WindowBase.cpp b/src/ogfx/gui/WindowBase.cpp similarity index 88% rename from src/ogfx/WindowBase.cpp rename to src/ogfx/gui/WindowBase.cpp index 272fce5..fe811c1 100644 --- a/src/ogfx/WindowBase.cpp +++ b/src/ogfx/gui/WindowBase.cpp @@ -1,7 +1,25 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "WindowBase.hpp" -#include "../ostd/utils/Time.hpp" -#include -#include +#include "../../ostd/utils/Time.hpp" namespace ogfx { @@ -12,7 +30,7 @@ namespace ogfx SDL_FreeCursor(m_cursor_Arrow); SDL_DestroyRenderer(m_renderer); SDL_DestroyWindow(m_window); - // IMG_Quit(); + IMG_Quit(); SDL_Quit(); TTF_Quit(); } diff --git a/src/ogfx/WindowBase.hpp b/src/ogfx/gui/WindowBase.hpp similarity index 98% rename from src/ogfx/WindowBase.hpp rename to src/ogfx/gui/WindowBase.hpp index d1b3db2..c625a70 100644 --- a/src/ogfx/WindowBase.hpp +++ b/src/ogfx/gui/WindowBase.hpp @@ -20,8 +20,7 @@ #pragma once -#include -#include +#include #include #include #include diff --git a/src/ogfx/WindowBaseOutputHandler.cpp b/src/ogfx/gui/WindowBaseOutputHandler.cpp similarity index 93% rename from src/ogfx/WindowBaseOutputHandler.cpp rename to src/ogfx/gui/WindowBaseOutputHandler.cpp index 265db29..55aca03 100644 --- a/src/ogfx/WindowBaseOutputHandler.cpp +++ b/src/ogfx/gui/WindowBaseOutputHandler.cpp @@ -1,6 +1,26 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "WindowBaseOutputHandler.hpp" -#include "BasicRenderer.hpp" -#include "../string/TextStyleParser.hpp" +#include "../render/BasicRenderer.hpp" +#include "../../string/TextStyleParser.hpp" namespace ogfx { diff --git a/src/ogfx/WindowBaseOutputHandler.hpp b/src/ogfx/gui/WindowBaseOutputHandler.hpp similarity index 99% rename from src/ogfx/WindowBaseOutputHandler.hpp rename to src/ogfx/gui/WindowBaseOutputHandler.hpp index 4cb52d1..5bd98be 100644 --- a/src/ogfx/WindowBaseOutputHandler.hpp +++ b/src/ogfx/gui/WindowBaseOutputHandler.hpp @@ -22,7 +22,7 @@ #include #include -#include +#include namespace ogfx { diff --git a/src/ogfx/ogfx.hpp b/src/ogfx/ogfx.hpp new file mode 100644 index 0000000..c726c99 --- /dev/null +++ b/src/ogfx/ogfx.hpp @@ -0,0 +1,35 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include diff --git a/src/ogfx/BasicRenderer.cpp b/src/ogfx/render/BasicRenderer.cpp similarity index 88% rename from src/ogfx/BasicRenderer.cpp rename to src/ogfx/render/BasicRenderer.cpp index 40d5268..af579dd 100644 --- a/src/ogfx/BasicRenderer.cpp +++ b/src/ogfx/render/BasicRenderer.cpp @@ -1,6 +1,25 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "BasicRenderer.hpp" -#include "WindowBase.hpp" -#include +#include "../gui/WindowBase.hpp" namespace ogfx { diff --git a/src/ogfx/BasicRenderer.hpp b/src/ogfx/render/BasicRenderer.hpp similarity index 96% rename from src/ogfx/BasicRenderer.hpp rename to src/ogfx/render/BasicRenderer.hpp index 51b99b9..cbf9d8d 100644 --- a/src/ogfx/BasicRenderer.hpp +++ b/src/ogfx/render/BasicRenderer.hpp @@ -20,10 +20,10 @@ #pragma once -#include "Animation.hpp" -#include +#include +#include #include -#include +#include namespace ogfx { diff --git a/src/ogfx/FontUtils.cpp b/src/ogfx/render/FontUtils.cpp similarity index 87% rename from src/ogfx/FontUtils.cpp rename to src/ogfx/render/FontUtils.cpp index 1cb98b2..3e9e5a5 100644 --- a/src/ogfx/FontUtils.cpp +++ b/src/ogfx/render/FontUtils.cpp @@ -1,3 +1,23 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "FontUtils.hpp" namespace ogfx diff --git a/src/ogfx/FontUtils.hpp b/src/ogfx/render/FontUtils.hpp similarity index 98% rename from src/ogfx/FontUtils.hpp rename to src/ogfx/render/FontUtils.hpp index feff883..972198b 100644 --- a/src/ogfx/FontUtils.hpp +++ b/src/ogfx/render/FontUtils.hpp @@ -20,7 +20,7 @@ #pragma once -#include +#include #include #include diff --git a/src/ogfx/PixelRenderer.cpp b/src/ogfx/render/PixelRenderer.cpp similarity index 86% rename from src/ogfx/PixelRenderer.cpp rename to src/ogfx/render/PixelRenderer.cpp index 1f530a9..cb997ec 100644 --- a/src/ogfx/PixelRenderer.cpp +++ b/src/ogfx/render/PixelRenderer.cpp @@ -1,6 +1,26 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "PixelRenderer.hpp" -#include "WindowBase.hpp" -#include "../ostd/io/Memory.hpp" +#include "../gui/WindowBase.hpp" +#include "../../ostd/io/Memory.hpp" namespace ogfx { diff --git a/src/ogfx/PixelRenderer.hpp b/src/ogfx/render/PixelRenderer.hpp similarity index 98% rename from src/ogfx/PixelRenderer.hpp rename to src/ogfx/render/PixelRenderer.hpp index 23c6473..a80beb8 100644 --- a/src/ogfx/PixelRenderer.hpp +++ b/src/ogfx/render/PixelRenderer.hpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include namespace ogfx diff --git a/src/ogfx/resources/Image.cpp b/src/ogfx/resources/Image.cpp new file mode 100644 index 0000000..f7416a6 --- /dev/null +++ b/src/ogfx/resources/Image.cpp @@ -0,0 +1,53 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#include "Image.hpp" +#include "../../io/Logger.hpp" +#include "../render/BasicRenderer.hpp" +#include "../gui/WindowBase.hpp" + +namespace ogfx +{ + void Image::destroy(void) + { + SDL_DestroyTexture(m_sdl_texture); + m_loaded = false; + m_sdl_texture = nullptr; + m_width = 0; + m_height = 0; + } + + Image& Image::loadFromFile(const ostd::String& filePath, BasicRenderer2D& gfx) + { + if (!gfx.isInitialized()) + return *this; //TODO: Error + m_sdl_texture = IMG_LoadTexture(gfx.getWindow().getSDLRenderer(), filePath.c_str()); + if (!m_sdl_texture) + { + OX_ERROR("Failed to load Image: %s", IMG_GetError()); + return *this; + } + SDL_QueryTexture(m_sdl_texture, nullptr, nullptr, &m_width, &m_height); + m_loaded = true; + setTypeName("ogfx::Image"); + validate(); + return *this; + } +} diff --git a/src/ogfx/Image.hpp b/src/ogfx/resources/Image.hpp similarity index 97% rename from src/ogfx/Image.hpp rename to src/ogfx/resources/Image.hpp index ff95d87..d4fcbf3 100644 --- a/src/ogfx/Image.hpp +++ b/src/ogfx/resources/Image.hpp @@ -21,7 +21,7 @@ #pragma once #include -#include +#include #include namespace ogfx diff --git a/src/ogfx/Animation.cpp b/src/ogfx/utils/Animation.cpp similarity index 69% rename from src/ogfx/Animation.cpp rename to src/ogfx/utils/Animation.cpp index a9f734c..94064d2 100644 --- a/src/ogfx/Animation.cpp +++ b/src/ogfx/utils/Animation.cpp @@ -1,5 +1,25 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #include "Animation.hpp" -#include +#include "../../ostd/math/Random.hpp" namespace ogfx { diff --git a/src/ogfx/Animation.hpp b/src/ogfx/utils/Animation.hpp similarity index 73% rename from src/ogfx/Animation.hpp rename to src/ogfx/utils/Animation.hpp index 46a7e2e..f50a444 100644 --- a/src/ogfx/Animation.hpp +++ b/src/ogfx/utils/Animation.hpp @@ -1,8 +1,28 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + #pragma once #include #include -#include +#include namespace ogfx { diff --git a/src/ogfx/SDLInclude.hpp b/src/ogfx/utils/SDLInclude.hpp similarity index 92% rename from src/ogfx/SDLInclude.hpp rename to src/ogfx/utils/SDLInclude.hpp index fced569..c819932 100644 --- a/src/ogfx/SDLInclude.hpp +++ b/src/ogfx/utils/SDLInclude.hpp @@ -29,3 +29,6 @@ #include #include #include +#include +#include +#include diff --git a/src/ostd/data/Bitfields.hpp b/src/ostd/data/Bitfields.hpp index f95443b..d7eb3b9 100755 --- a/src/ostd/data/Bitfields.hpp +++ b/src/ostd/data/Bitfields.hpp @@ -21,6 +21,7 @@ #pragma once #include +#include #define get_bit(__bit_field, __bit_n ) __bit_field.bits.b##__bit_n #define set_bit(__bit_field, __bit_n ) __bit_field.bits.b##__bit_n = true diff --git a/src/ostd/data/Types.hpp b/src/ostd/data/Types.hpp index 4f60619..589878c 100755 --- a/src/ostd/data/Types.hpp +++ b/src/ostd/data/Types.hpp @@ -23,6 +23,7 @@ #include #include #include +#include namespace ostd { diff --git a/src/ostd/utils/Async.hpp b/src/ostd/utils/Async.hpp index 007bf23..924ac10 100644 --- a/src/ostd/utils/Async.hpp +++ b/src/ostd/utils/Async.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace ostd { diff --git a/src/ostd/utils/PathFinder.hpp b/src/ostd/utils/PathFinder.hpp index bd5305a..b629b4c 100755 --- a/src/ostd/utils/PathFinder.hpp +++ b/src/ostd/utils/PathFinder.hpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace ostd { diff --git a/src/test.cpp b/src/test.cpp index 6d0c520..6c102c8 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -18,16 +18,7 @@ along with OmniaFramework. If not, see . */ -// #include -// #include -// #include -// #include - -#include "Image.hpp" -#include "utils/Hash.hpp" -#include -#include -#include +#include ostd::ConsoleOutputHandler out; @@ -50,10 +41,6 @@ class Window : public ogfx::WindowBase m_textInput.setEventListener(m_sigHandler); // m_textInput.setCharacterFilter(m_numCharFilter); m_textInput.getTheme().extraPaddingTop = 3; - - m_testImg.loadFromFile("res/test.png", m_gfx); - out.p("Image loaded: ").p(STR_BOOL(m_testImg.isLoaded())).nl(); - out.p(" ").p(m_testImg.getSize().x).nl(); } inline void handleSignal(ostd::tSignal& signal) override @@ -85,7 +72,6 @@ class Window : public ogfx::WindowBase inline void onRender(void) override { m_textInput.render(m_gfx); - // m_gfx.drawImage(m_testImg, { 0, 0 });´ } inline void onFixedUpdate(double frameTime_s) override @@ -103,20 +89,10 @@ class Window : public ogfx::WindowBase ogfx::BasicRenderer2D m_gfx; ogfx::gui::RawTextInputEventListener m_sigHandler; ogfx::gui::RawTextInputNumberCharacterFilter m_numCharFilter; - - ogfx::Image m_testImg; }; -// void test2(const std::string& str) {} -// void test3(const ostd::String& str) {} -// void test4(const char* str) {} - int main(int argc, char** argv) { - out.p(STR_BOOL(ostd::Hash::md5("") == "d41d8cd98f00b204e9800998ecf8427e")).nl(); - out.p(STR_BOOL(ostd::Hash::md5("abc") == "900150983cd24fb0d6963f7d28e17f72")).nl(); - out.p(STR_BOOL(ostd::Hash::md5("message digest") == "f96b697d7cb7938d525a2f31aaf161d0")).nl(); - Window window; window.initialize(1280, 720, "OmniaFramework - Test Window"); window.setClearColor({ 0, 2 , 15 }); @@ -125,66 +101,5 @@ int main(int argc, char** argv) { window.update(); } - - - // out.fg(ostd::ConsoleColors::Red).p("Hello World!!").reset().nl(); - - // ostd::String str1, str2 = "Hello"; - // bool b = str1 == str2; - // const ostd::String str3 = "CIAO"; - // b = str2 == str1; - // b = str3 == "CICCIO"; - // // b = "ciao" == str2; - // str2 = str3; - // std::string str = "cc"; - // str1 = str; - // test2(str1); - // test3(str); - // str1 = str2 + str; - // str1 = str2 + "str"; - // str1 = str2 + str3; - // str1 = str2 + str1; - // test4(str1); - // test4(str3); - - // str1 += "ciao"; - // str1 += str; - // str1 += str1; - // str1 += str3; - // str1 += 'c'; - - // OX_FATAL(str2); - - // ostd::RegexRichString rgxrstr("Hello World"); - // rgxrstr.fg("Hello", "Blue"); - // std::cout << rgxrstr << "\n"; - - // out.nl().nl(); - // ostd::String test_str = "Hello World, my love"; - // ostd::String test_str_2 = "HEELO"; - // ostd::String test_str_3 = "0123456789"; - // out.p("==========\n"); - // test_str.fixedLength(10, ' ', ".........."); - // test_str_2.fixedLength(10); - // test_str_3.fixedLength(10); - // out.p(test_str).p("|").nl(); - // out.p(test_str_2).p("|").nl(); - // out.p(test_str_3).p("|").nl(); - - // ostd::KeyboardController keyboard; - // keyboard.disableCommandBuffer(); - - // out.p("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n"); - // out.p("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"); - // out.p("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); - // out.p(" "); - // out.p("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); - - // ostd::eKeys k = ostd::eKeys::NoKeyPressed; - // do - // { - // k = keyboard.waitForKeyPress(); - // } while (k != ostd::eKeys::Escape); - return 0; } From 2bec8e1b39d175cb38714d8e86afb290be4a890d Mon Sep 17 00:00:00 2001 From: OmniaX-Dev Date: Tue, 31 Mar 2026 02:31:51 +0200 Subject: [PATCH 2/6] Migrated SDL2 to SDL3 --- CMakeLists.txt | 10 +- README.md | 10 +- licences/sdl3_gfx-LICENCE.txt | 25 + other/build.nr | 2 +- other/create_release.sh | 22 +- src/ogfx/gui/GuiWindow.cpp | 211 + src/ogfx/gui/GuiWindow.hpp | 141 + src/ogfx/gui/WindowBase.cpp | 80 +- src/ogfx/gui/WindowBase.hpp | 63 +- src/ogfx/render/BasicRenderer.cpp | 12 +- src/ogfx/render/BasicRenderer.hpp | 2 +- src/ogfx/render/FontUtils.cpp | 42 +- src/ogfx/render/PixelRenderer.cpp | 5 +- src/ogfx/render/PixelRenderer.hpp | 2 +- src/ogfx/resources/Image.cpp | 4 +- src/ogfx/resources/Image.hpp | 8 +- src/ogfx/utils/Animation.hpp | 7 +- src/ogfx/utils/SDLInclude.hpp | 19 +- src/ogfx/vendor/sdl3_gfx/SDL3_framerate.c | 189 + src/ogfx/vendor/sdl3_gfx/SDL3_framerate.h | 100 + src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.c | 3794 +++++++++++++++++ src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.h | 241 ++ .../vendor/sdl3_gfx/SDL3_gfxPrimitives_font.h | 3106 ++++++++++++++ src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.c | 1617 +++++++ src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.h | 161 + src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.c | 1636 +++++++ src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.h | 123 + src/test.cpp | 20 +- 28 files changed, 11539 insertions(+), 113 deletions(-) create mode 100644 licences/sdl3_gfx-LICENCE.txt create mode 100644 src/ogfx/gui/GuiWindow.cpp create mode 100644 src/ogfx/gui/GuiWindow.hpp create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_framerate.c create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_framerate.h create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.c create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.h create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives_font.h create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.c create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.h create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.c create mode 100644 src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3650794..df306bc 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,6 +79,12 @@ list(APPEND OSTD_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/ostd/utils/Time.cpp ) list(APPEND OGFX_SOURCE_FILES + # sdl3_gfx + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.c + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.c + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.c + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.c + # gui ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/RawTextInput.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowBase.cpp @@ -131,7 +137,7 @@ endif() if (WIN32) target_link_libraries(${OMNIA_GFX_LIB} PUBLIC mingw32) target_link_libraries(${OMNIA_STD_LIB} PUBLIC mingw32) - target_link_libraries(${OMNIA_GFX_LIB} PUBLIC SDL2main SDL2 SDL2_gfx SDL2_ttf SDL2_image) + target_link_libraries(${OMNIA_GFX_LIB} PUBLIC SDL3 SDL3_ttf SDL3_image) endif (WIN32) target_link_libraries(${OMNIA_GFX_LIB} PUBLIC ${OMNIA_STD_LIB}) @@ -169,6 +175,6 @@ elseif (UNIX) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,'$ORIGIN',-rpath,/usr/lib,-rpath,/usr/local/lib") target_link_libraries(${OMNIA_STD_LIB} PUBLIC tinfo boost_regex) target_link_libraries(${OMNIA_GFX_LIB} PUBLIC xcb xcb-randr) - target_link_libraries(${OMNIA_GFX_LIB} PUBLIC SDL2main SDL2 SDL2_gfx SDL2_ttf SDL2_image) + target_link_libraries(${OMNIA_GFX_LIB} PUBLIC SDL3 SDL3_ttf SDL3_image) endif () #----------------------------------------------------------------------------------------- diff --git a/README.md b/README.md index 2c8e642..facc846 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Once you have the **MSYS2 UCRT64 terminal** open, run theese two commands to pre ```bash pacman -Syuu -pacman -S --needed base-devel mingw-w64-ucrt-x86_64-clang mingw-w64-ucrt-x86_64-gdb mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-make mingw-w64-ucrt-x86_64-boost mingw-w64-ucrt-x86_64-SDL2 mingw-w64-ucrt-x86_64-SDL2_mixer mingw-w64-ucrt-x86_64-SDL2_image mingw-w64-ucrt-x86_64-SDL2_ttf mingw-w64-ucrt-x86_64-SDL2_gfx +pacman -S --needed base-devel mingw-w64-ucrt-x86_64-clang mingw-w64-ucrt-x86_64-gdb mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-make mingw-w64-ucrt-x86_64-boost mingw-w64-ucrt-x86_64-SDL3 mingw-w64-ucrt-x86_64-SDL3_mixer mingw-w64-ucrt-x86_64-SDL3_image mingw-w64-ucrt-x86_64-SDL3_ttf ``` #### Step 3: build OmniaFramework @@ -86,21 +86,21 @@ Installs the library MSYS2's UCRT64 profile. - **Arch Linux** ```bash -sudo pacman -S --needed base-devel clang gdb cmake make boost sdl2 sdl2_mixer sdl2_image sdl2_ttf sdl2_gfx +sudo pacman -S --needed base-devel clang gdb cmake make boost sdl3 sdl3_mixer sdl3_image sdl3_ttf ``` - **Ubuntu** ```bash sudo apt update && sudo apt upgrade -sudo apt install build-essential dkms linux-headers-$(uname -r) clang gdb make cmake libssl-dev libboost-all-dev libsdl2-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-gfx-dev libxcb-randr0-dev +sudo apt install build-essential dkms linux-headers-$(uname -r) clang gdb make cmake libssl-dev libboost-all-dev libsdl3-dev libsdl3-mixer-dev libsdl3-image-dev libsdl3-ttf-dev libxcb-randr0-dev ``` - **Fedora** ```bash sudo dnf update -sudo dnf install gcc gcc-c++ make clang gdb cmake clang-tools-extra boost boost-devel SDL2 SDL2_image SDL2_mixer SDL2_ttf SDL2_gfx SDL2-devel SDL2_image-devel SDL2_mixer-devel SDL2_ttf-devel SDL2_gfx-devel +sudo dnf install gcc gcc-c++ make clang gdb cmake clang-tools-extra boost boost-devel SDL3 SDL3_image SDL3_mixer SDL3_ttf SDL3-devel SDL3_image-devel SDL3_mixer-devel SDL3_ttf-devel ``` > **NOTE**: For other Linux distros, you need to install the same dependencies through your package manager. @@ -145,7 +145,7 @@ eval "$(/usr/local/bin/brew shellenv)" ##### Step 3: Install dependencies ```bash -brew install git llvm gdb cmake make boost sdl2 sdl2_mixer sdl2_image sdl2_ttf sdl2_gfx pkg-config +brew install git llvm gdb cmake make boost sdl3 sdl3_mixer sdl3_image sdl3_ttf pkg-config ``` ##### Step 4: Build OmniaFramework diff --git a/licences/sdl3_gfx-LICENCE.txt b/licences/sdl3_gfx-LICENCE.txt new file mode 100644 index 0000000..341dfd2 --- /dev/null +++ b/licences/sdl3_gfx-LICENCE.txt @@ -0,0 +1,25 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.3.2, February 17th, 2026 + + Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ diff --git a/other/build.nr b/other/build.nr index 70477d2..b29009a 100644 --- a/other/build.nr +++ b/other/build.nr @@ -1 +1 @@ -2034 +2038 diff --git a/other/create_release.sh b/other/create_release.sh index 4ed4c7d..1cb7819 100755 --- a/other/create_release.sh +++ b/other/create_release.sh @@ -34,18 +34,16 @@ elif [[ "$(uname -s)" == MINGW64_NT* ]]; then cp $MSYS_ROOT/ucrt64/bin/SDL2_ttf.dll $RELEASE_DIR/lib cp $MSYS_ROOT/ucrt64/bin/libSDL2_gfx-1-0-0.dll $RELEASE_DIR/lib fi +cp -r ../licences $RELEASE_DIR +cp ../LICENSE $RELEASE_DIR/licences/OmniaFramework-LICENCE.txt -mkdir -p $RELEASE_DIR/include/ostd/vendor +# OSTD mkdir -p $RELEASE_DIR/include/ostd/vendor/midifile mkdir -p $RELEASE_DIR/include/ostd/data mkdir -p $RELEASE_DIR/include/ostd/io mkdir -p $RELEASE_DIR/include/ostd/math mkdir -p $RELEASE_DIR/include/ostd/string mkdir -p $RELEASE_DIR/include/ostd/utils -mkdir -p $RELEASE_DIR/include/ogfx/gui -mkdir -p $RELEASE_DIR/include/ogfx/render -mkdir -p $RELEASE_DIR/include/ogfx/resources -mkdir -p $RELEASE_DIR/include/ogfx/utils find ../src/ostd -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ostd \; find ../src/ostd/data -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ostd/data \; find ../src/ostd/io -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ostd/io \; @@ -54,11 +52,19 @@ find ../src/ostd/string -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/inclu find ../src/ostd/utils -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ostd/utils \; find ../src/ostd/vendor -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ostd/vendor \; find ../src/ostd/vendor/midifile -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ostd/vendor/midifile \; +cp -r ../src/ostd/vendor/nlohmann $RELEASE_DIR/include/ostd/vendor/ + + +# OGFX +mkdir -p $RELEASE_DIR/include/ogfx/vendor/sdl3_gfx +mkdir -p $RELEASE_DIR/include/ogfx/gui +mkdir -p $RELEASE_DIR/include/ogfx/render +mkdir -p $RELEASE_DIR/include/ogfx/resources +mkdir -p $RELEASE_DIR/include/ogfx/utils find ../src/ogfx -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx \; find ../src/ogfx/gui -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx/gui \; find ../src/ogfx/render -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx/render \; find ../src/ogfx/resources -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx/resources \; find ../src/ogfx/utils -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx/utils \; -cp -r ../src/ostd/vendor/nlohmann $RELEASE_DIR/include/ostd/vendor/ -cp -r ../licences $RELEASE_DIR -cp ../LICENSE $RELEASE_DIR/licences/OmniaFramework-LICENCE.txt +find ../src/ogfx/vendor -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx/vendor \; +find ../src/ogfx/vendor/sdl3_gfx -maxdepth 1 -name "*.h*" -exec cp {} $RELEASE_DIR/include/ogfx/vendor/sdl3_gfx \; diff --git a/src/ogfx/gui/GuiWindow.cpp b/src/ogfx/gui/GuiWindow.cpp new file mode 100644 index 0000000..a90b8fb --- /dev/null +++ b/src/ogfx/gui/GuiWindow.cpp @@ -0,0 +1,211 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#include "GuiWindow.hpp" + +namespace ogfx +{ + namespace gui + { + Window::~Window(void) + { + onDestroy(); + SDL_DestroyCursor(m_cursor_IBeam); + SDL_DestroyCursor(m_cursor_Arrow); + SDL_DestroyRenderer(m_renderer); + SDL_DestroyWindow(m_window); + SDL_Quit(); + TTF_Quit(); + } + + void Window::initialize(int32_t width, int32_t height, const ostd::String& windowTitle) + { + if (m_initialized) return; + m_windowWidth = width; + m_windowHeight = height; + m_title = windowTitle; + if (!SDL_Init(SDL_INIT_VIDEO)) + { + printf( "SDL could not initialize! Error: %s\n", SDL_GetError() ); + exit(ErrorCodes::SDLInitFailed); + } + m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOW_RESIZABLE); + setSize(m_windowWidth, m_windowHeight); + m_renderer = SDL_CreateRenderer(m_window, nullptr); + SDL_SetWindowMinimumSize(m_window, m_windowWidth, m_windowHeight); + SDL_SetWindowTitle(m_window, m_title.c_str()); + SDL_StartTextInput(m_window); + + m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_DEFAULT); + m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_TEXT); + + m_initialized = true; + m_running = true; + + setTypeName("ogfx::gui::Window"); + enableSignals(true); + validate(); + + onInitialize(); + } + + void Window::close(void) + { + m_running = false; + onClose(); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::RealTime, *this); + } + + int32_t Window::startMainLoop(void) + { + if (!m_initialized) return ErrorCodes::Uninitialized; + while (m_running) + { + __handle_events(); + SDL_SetRenderDrawColor(m_renderer, m_clearColor.r, m_clearColor.g, m_clearColor.b, m_clearColor.a); + SDL_RenderClear(m_renderer); + + SDL_RenderPresent(m_renderer); + } + return ErrorCodes::ExitSuccess; + } + + void Window::setSize(int32_t width, int32_t height) + { + if (!isInitialized()) return; + SDL_SetWindowSize(m_window, width, height); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime); + } + + void Window::setTitle(const ostd::String& title) + { + if (!isInitialized()) return; + m_title = title; + SDL_SetWindowTitle(m_window, m_title.c_str()); + } + + void Window::setCursor(eCursor cursor) + { + switch (cursor) + { + case eCursor::Arrow: + SDL_SetCursor(m_cursor_Arrow); + break; + case eCursor::IBeam: + SDL_SetCursor(m_cursor_IBeam); + break; + default: + SDL_SetCursor(m_cursor_Arrow); + break; + } + } + + void Window::enableResizable(bool enable) + { + SDL_SetWindowResizable(m_window, enable); + m_resizeable = enable; + } + + void Window::setIcon(const ostd::String& iconFilePath) + { + SDL_Surface* appIcon = IMG_Load(iconFilePath); + if (appIcon == nullptr) + { + //TODO: Error + return; + } + SDL_SetWindowIcon(m_window, appIcon); + SDL_DestroySurface(appIcon); + } + + void Window::__handle_events(void) + { + if (!m_initialized) return; + auto l_getMouseState = [this](void) -> MouseEventData { + float mx = 0, my = 0; + uint32_t btn = SDL_GetMouseState(&mx, &my); + MouseEventData::eButton button = MouseEventData::eButton::None; + switch (btn) + { + case SDL_BUTTON_MASK(1): button = MouseEventData::eButton::Left; break; + case SDL_BUTTON_MASK(2): button = MouseEventData::eButton::Middle; break; + case SDL_BUTTON_MASK(3): button = MouseEventData::eButton::Right; break; + default: button = MouseEventData::eButton::None; break; + } + MouseEventData mmd(*this, mx, my, button); + return mmd; + }; + SDL_Event event; + while (SDL_PollEvent(&event)) + { + if (event.type == SDL_EVENT_QUIT) + { + m_running = false; + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::Normal, *this); + } + else if (event.type == SDL_EVENT_WINDOW_RESIZED) + { + WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); + SDL_GetWindowSize(m_window, &m_windowWidth, &m_windowHeight); + wrd.new_width = m_windowWidth; + wrd.new_height = m_windowHeight; + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime, wrd); + } + else if (event.type == SDL_EVENT_MOUSE_MOTION) + { + MouseEventData mmd = l_getMouseState(); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseMoved, ostd::tSignalPriority::RealTime, mmd); + } + else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN) + { + MouseEventData mmd = l_getMouseState(); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MousePressed, ostd::tSignalPriority::RealTime, mmd); + } + else if (event.type == SDL_EVENT_MOUSE_BUTTON_UP) + { + MouseEventData mmd = l_getMouseState(); + switch (event.button.button) + { + case SDL_BUTTON_MASK(1): mmd.button = MouseEventData::eButton::Left; break; + case SDL_BUTTON_MASK(2): mmd.button = MouseEventData::eButton::Middle; break; + case SDL_BUTTON_MASK(3): mmd.button = MouseEventData::eButton::Right; break; + default: mmd.button = MouseEventData::eButton::None; break; + } + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseReleased, ostd::tSignalPriority::RealTime, mmd); + } + else if (event.type == SDL_EVENT_KEY_DOWN) + { + KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Pressed); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyPressed, ostd::tSignalPriority::RealTime, ked); + } + else if (event.type == SDL_EVENT_KEY_UP) + { + KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Released); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyReleased, ostd::tSignalPriority::RealTime, ked); + } + else if (event.type == SDL_EVENT_TEXT_INPUT) + { + KeyEventData ked(*this, 0, event.text.text[0], KeyEventData::eKeyEvent::Text); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::TextEntered, ostd::tSignalPriority::RealTime, ked); + } + } + } + } +} diff --git a/src/ogfx/gui/GuiWindow.hpp b/src/ogfx/gui/GuiWindow.hpp new file mode 100644 index 0000000..5c2a99d --- /dev/null +++ b/src/ogfx/gui/GuiWindow.hpp @@ -0,0 +1,141 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include +#include +#include +#include + +namespace ogfx +{ + namespace gui + { + class Window : public ostd::BaseObject + { + public: enum class eCursor { Arrow = 0, IBeam }; + public: struct ErrorCodes { + inline static constexpr uint16_t ExitSuccess { 0 }; + inline static constexpr uint16_t SDLInitFailed { 1 }; + inline static constexpr uint16_t SDLImageInitFailed { 2 }; + inline static constexpr uint16_t Uninitialized { 3 }; + }; + public: + inline Window(void) { } + ~Window(void); + inline Window(int32_t width, int32_t height, const ostd::String& windowTitle) { initialize(width, height, windowTitle); } + void initialize(int32_t width, int32_t height, const ostd::String& windowTitle); + void close(void); + int32_t startMainLoop(void); + void setSize(int32_t width, int32_t height); + void setTitle(const ostd::String& title); + void setCursor(eCursor cursor); + void enableResizable(bool enable = true); + void setIcon(const ostd::String& iconFilePath); + + inline virtual void onInitialize(void) { } + inline virtual void onDestroy(void) { } + inline virtual void onClose(void) { } + + inline bool isInitialized(void) const { return m_initialized; } + inline bool isRunning(void) const { return m_running; } + inline bool isVisible(void) const { return m_visible; } + inline bool isResizeable(void) const { return m_resizeable; } + inline void hide(void) { SDL_HideWindow(m_window); m_visible = false; } + inline void show(void) { SDL_ShowWindow(m_window); m_visible = true; } + inline ostd::String getTitle(void) const { return m_title; } + inline int32_t getWindowWidth(void) const { return m_windowWidth; } + inline int32_t getWindowHeight(void) const { return m_windowHeight; } + inline ostd::Color getClearColor(void) const { return m_clearColor; } + inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } + inline SDL_Renderer* getSDLRenderer(void) const { return m_renderer; } + private: + void __handle_events(void); + + protected: + SDL_Window* m_window { nullptr }; + SDL_Renderer* m_renderer { nullptr }; + + private: + ostd::Color m_clearColor { 10, 10, 10, 255 }; + + int32_t m_windowWidth { 0 }; + int32_t m_windowHeight { 0 }; + ostd::String m_title { "" }; + + bool m_running { false }; + bool m_initialized { false }; + bool m_visible { true }; + bool m_resizeable { true }; + + SDL_Cursor* m_cursor_IBeam { nullptr }; + SDL_Cursor* m_cursor_Arrow { nullptr }; + }; + class WindowResizedData : public ostd::BaseObject + { + public: + inline WindowResizedData(Window& parent, int32_t _oldx, int32_t _oldy, int32_t _newx, int32_t _newy) : parentWindow(parent), old_width(_oldx), old_height(_oldy), new_width(_newx), new_height(_newy) + { + setTypeName("ogfx::gui::WindowResizedData"); + validate(); + } + + public: + int32_t new_width; + int32_t new_height; + int32_t old_width; + int32_t old_height; + Window& parentWindow; + }; + class MouseEventData : public ostd::BaseObject + { + public: enum class eButton { None = 0, Left, Middle, Right }; + public: + inline MouseEventData(Window& parent, int32_t mousex, int32_t mousey, eButton btn) : parentWindow(parent), position_x(mousex), position_y(mousey), button(btn) + { + setTypeName("ogfx::gui::MouseEventData"); + validate(); + } + + public: + int32_t position_x; + int32_t position_y; + eButton button; + Window& parentWindow; + }; + class KeyEventData : public ostd::BaseObject + { + public: enum class eKeyEvent { Pressed = 0, Released, Text }; + public: + inline KeyEventData(Window& parent, int32_t key, char _text, eKeyEvent evt) : parentWindow(parent), keyCode(key), text(_text), eventType(evt) + { + setTypeName("ogfx::gui::KeyEventData"); + validate(); + } + + public: + int32_t keyCode; + char text; + eKeyEvent eventType; + Window& parentWindow; + }; + } +} diff --git a/src/ogfx/gui/WindowBase.cpp b/src/ogfx/gui/WindowBase.cpp index fe811c1..f170428 100644 --- a/src/ogfx/gui/WindowBase.cpp +++ b/src/ogfx/gui/WindowBase.cpp @@ -20,17 +20,19 @@ #include "WindowBase.hpp" #include "../../ostd/utils/Time.hpp" +#include +#include +#include namespace ogfx { WindowBase::~WindowBase(void) { onDestroy(); - SDL_FreeCursor(m_cursor_IBeam); - SDL_FreeCursor(m_cursor_Arrow); + SDL_DestroyCursor(m_cursor_IBeam); + SDL_DestroyCursor(m_cursor_Arrow); SDL_DestroyRenderer(m_renderer); SDL_DestroyWindow(m_window); - IMG_Quit(); SDL_Quit(); TTF_Quit(); } @@ -41,25 +43,20 @@ namespace ogfx m_windowWidth = width; m_windowHeight = height; m_title = windowTitle; - if (SDL_Init(SDL_INIT_VIDEO) != 0) + if (!SDL_Init(SDL_INIT_VIDEO)) { printf( "SDL could not initialize! Error: %s\n", SDL_GetError() ); exit(1); } - int imgFlags = IMG_INIT_PNG; - if (!(IMG_Init(imgFlags) & imgFlags)) - { - printf( "SDL_image could not initialize! SDL_image Error: %s\n", IMG_GetError() ); - exit(2); - } - m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, m_windowWidth, m_windowHeight, SDL_WINDOW_RESIZABLE); - SDL_SetWindowResizable(m_window, SDL_FALSE); - m_renderer = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_ACCELERATED); + m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOW_RESIZABLE); + SDL_SetWindowResizable(m_window, false); + m_renderer = SDL_CreateRenderer(m_window, nullptr); SDL_SetWindowMinimumSize(m_window, m_windowWidth, m_windowHeight); SDL_SetWindowTitle(m_window, m_title.c_str()); + SDL_StartTextInput(m_window); - m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_ARROW); - m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_IBEAM); + m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_DEFAULT); + m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_TEXT); m_initialized = true; m_running = true; @@ -76,9 +73,10 @@ namespace ogfx this->m_frameCount = 0; }); - setTypeName("dragon::WindowBase"); + setTypeName("ogfx::WindowBase"); enableSignals(true); validate(); + setSize(m_windowWidth, m_windowHeight); onInitialize(); } @@ -138,7 +136,7 @@ namespace ogfx void WindowBase::enableResizable(bool enable) { - SDL_SetWindowResizable(m_window, (enable ? SDL_TRUE : SDL_FALSE)); + SDL_SetWindowResizable(m_window, enable); } void WindowBase::setIcon(const ostd::String& iconFilePath) @@ -150,21 +148,21 @@ namespace ogfx return; } SDL_SetWindowIcon(m_window, appIcon); - SDL_FreeSurface(appIcon); + SDL_DestroySurface(appIcon); } void WindowBase::__handle_events(void) { if (!m_initialized) return; auto l_getMouseState = [this](void) -> MouseEventData { - int32_t mx = 0, my = 0; + float mx = 0, my = 0; uint32_t btn = SDL_GetMouseState(&mx, &my); MouseEventData::eButton button = MouseEventData::eButton::None; switch (btn) { - case SDL_BUTTON(1): button = MouseEventData::eButton::Left; break; - case SDL_BUTTON(2): button = MouseEventData::eButton::Middle; break; - case SDL_BUTTON(3): button = MouseEventData::eButton::Right; break; + case SDL_BUTTON_MASK(1): button = MouseEventData::eButton::Left; break; + case SDL_BUTTON_MASK(2): button = MouseEventData::eButton::Middle; break; + case SDL_BUTTON_MASK(3): button = MouseEventData::eButton::Right; break; default: button = MouseEventData::eButton::None; break; } MouseEventData mmd(*this, mx, my, button); @@ -173,22 +171,20 @@ namespace ogfx SDL_Event event; while (SDL_PollEvent(&event)) { - if (event.type == SDL_QUIT) + if (event.type == SDL_EVENT_QUIT) { m_running = false; ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::Normal, *this); } - else if (event.type == SDL_WINDOWEVENT) + else if (event.type == SDL_EVENT_WINDOW_RESIZED) { - if (event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) { - WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); - SDL_GetWindowSize(m_window, &m_windowWidth, &m_windowHeight); - wrd.new_width = m_windowWidth; - wrd.new_height = m_windowHeight; - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime, wrd); - } + WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); + SDL_GetWindowSize(m_window, &m_windowWidth, &m_windowHeight); + wrd.new_width = m_windowWidth; + wrd.new_height = m_windowHeight; + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime, wrd); } - else if (event.type == SDL_MOUSEMOTION) + else if (event.type == SDL_EVENT_MOUSE_MOTION) { MouseEventData mmd = l_getMouseState(); if (isMouseDragEventEnabled() && mmd.button != MouseEventData::eButton::None) @@ -196,34 +192,34 @@ namespace ogfx else ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseMoved, ostd::tSignalPriority::RealTime, mmd); } - else if (event.type == SDL_MOUSEBUTTONDOWN) + else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN) { MouseEventData mmd = l_getMouseState(); ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MousePressed, ostd::tSignalPriority::RealTime, mmd); } - else if (event.type == SDL_MOUSEBUTTONUP) + else if (event.type == SDL_EVENT_MOUSE_BUTTON_UP) { MouseEventData mmd = l_getMouseState(); switch (event.button.button) { - case SDL_BUTTON(1): mmd.button = MouseEventData::eButton::Left; break; - case SDL_BUTTON(2): mmd.button = MouseEventData::eButton::Middle; break; - case SDL_BUTTON(3): mmd.button = MouseEventData::eButton::Right; break; + case SDL_BUTTON_MASK(1): mmd.button = MouseEventData::eButton::Left; break; + case SDL_BUTTON_MASK(2): mmd.button = MouseEventData::eButton::Middle; break; + case SDL_BUTTON_MASK(3): mmd.button = MouseEventData::eButton::Right; break; default: mmd.button = MouseEventData::eButton::None; break; } ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseReleased, ostd::tSignalPriority::RealTime, mmd); } - else if (event.type == SDL_KEYDOWN) + else if (event.type == SDL_EVENT_KEY_DOWN) { - KeyEventData ked(*this, (int32_t)event.key.keysym.sym, 0, KeyEventData::eKeyEvent::Pressed); + KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Pressed); ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyPressed, ostd::tSignalPriority::RealTime, ked); } - else if (event.type == SDL_KEYUP) + else if (event.type == SDL_EVENT_KEY_UP) { - KeyEventData ked(*this, (int32_t)event.key.keysym.sym, 0, KeyEventData::eKeyEvent::Released); + KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Released); ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyReleased, ostd::tSignalPriority::RealTime, ked); } - else if (event.type == SDL_TEXTINPUT) + else if (event.type == SDL_EVENT_TEXT_INPUT) { KeyEventData ked(*this, 0, event.text.text[0], KeyEventData::eKeyEvent::Text); ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::TextEntered, ostd::tSignalPriority::RealTime, ked); diff --git a/src/ogfx/gui/WindowBase.hpp b/src/ogfx/gui/WindowBase.hpp index c625a70..5d02f70 100644 --- a/src/ogfx/gui/WindowBase.hpp +++ b/src/ogfx/gui/WindowBase.hpp @@ -27,6 +27,61 @@ namespace ogfx { + // class WindowCore : public ostd::BaseObject + // { + // public: enum class eCursor { Arrow = 0, IBeam }; + // public: + // inline WindowCore(void) { } + // virtual ~WindowCore(void); + // inline WindowCore(int32_t width, int32_t height, const ostd::String& windowTitle) { initialize(width, height, windowTitle); } + // void initialize(int32_t width, int32_t height, const ostd::String& windowTitle); + // void close(void); + // void update(void); + // void setSize(int32_t width, int32_t height); + // void setTitle(const ostd::String& title); + // void setCursor(eCursor cursor); + // void enableResizable(bool enable = true); + // void setIcon(const ostd::String& iconFilePath); + + // inline virtual void onWindowInitialize(void) { } + // inline virtual void onWindowDestroy(void) { } + // inline virtual void onWindowClose(void) { } + + // inline bool isInitialized(void) const { return m_initialized; } + // inline bool isRunning(void) const { return m_running; } + // inline bool isVisible(void) const { return m_visible; } + // inline void hide(void) { SDL_HideWindow(m_window); m_visible = false; } + // inline void show(void) { SDL_ShowWindow(m_window); m_visible = true; } + // inline ostd::String getTitle(void) const { return m_title; } + // inline int32_t getWindowWidth(void) const { return m_windowWidth; } + // inline int32_t getWindowHeight(void) const { return m_windowHeight; } + // inline ostd::Color getClearColor(void) const { return m_clearColor; } + // inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } + // inline SDL_Renderer* getSDLRenderer(void) { return m_renderer; } + // private: + // void __handle_events(void); + + // protected: + // ostd::ConsoleOutputHandler out; + + // SDL_Window* m_window { nullptr }; + // SDL_Renderer* m_renderer { nullptr }; + // bool m_refreshScreen { true }; + + // private: + // ostd::Color m_clearColor { 10, 10, 10, 255 }; + + // int32_t m_windowWidth { 0 }; + // int32_t m_windowHeight { 0 }; + // ostd::String m_title { "" }; + + // bool m_running { false }; + // bool m_initialized { false }; + // bool m_visible { true }; + + // SDL_Cursor* m_cursor_IBeam { nullptr }; + // SDL_Cursor* m_cursor_Arrow { nullptr }; + // }; class WindowBase : public ostd::BaseObject { public: enum class eCursor { Arrow = 0, IBeam }; @@ -63,7 +118,7 @@ namespace ogfx inline void enableMouseDragEvent(bool enable = true) { m_deagEventEnabled = enable; } inline ostd::Color getClearColor(void) const { return m_clearColor; } inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } - inline SDL_Renderer* getSDLRenderer(void) const { return m_renderer; } + inline SDL_Renderer* getSDLRenderer(void) { return m_renderer; } private: void __handle_events(void); @@ -116,15 +171,15 @@ namespace ogfx { public: enum class eButton { None = 0, Left, Middle, Right }; public: - inline MouseEventData(WindowBase& parent, int32_t mousex, int32_t mousey, eButton btn) : parentWindow(parent), position_x(mousex), position_y(mousey), button(btn) + inline MouseEventData(WindowBase& parent, float mousex, float mousey, eButton btn) : parentWindow(parent), position_x(mousex), position_y(mousey), button(btn) { setTypeName("ogfx::MouseEventData"); validate(); } public: - int32_t position_x; - int32_t position_y; + float position_x; + float position_y; eButton button; WindowBase& parentWindow; }; diff --git a/src/ogfx/render/BasicRenderer.cpp b/src/ogfx/render/BasicRenderer.cpp index af579dd..71e65d0 100644 --- a/src/ogfx/render/BasicRenderer.cpp +++ b/src/ogfx/render/BasicRenderer.cpp @@ -42,27 +42,27 @@ namespace ogfx m_ttfr.setFontSize(fontSize); } - void BasicRenderer2D::drawImage(const ogfx::Image& image, const ostd::Vec2& position, const ostd::Rectangle& rect) + void BasicRenderer2D::drawImage(ogfx::Image& image, const ostd::Vec2& position, const ostd::Rectangle& rect) { if (!m_initialized) return; if (!image.isLoaded()) return; - SDL_Rect texr; + SDL_FRect texr; texr.x = position.x; texr.y = position.y; texr.w = image.getSize().x; texr.h = image.getSize().y; - SDL_Rect srcRect; + SDL_FRect srcRect; srcRect.x = rect.x; srcRect.y = rect.y; srcRect.w = rect.w; srcRect.h = rect.w; if (srcRect.x == 0 && srcRect.y == 0 && srcRect.w == 0 && srcRect.h == 0) - SDL_RenderCopy(m_window->getSDLRenderer(), image.getSDLTexture(), nullptr, &texr); + SDL_RenderTexture(m_window->getSDLRenderer(), image.getSDLTexture(), nullptr, &texr); else { texr.w = srcRect.w; texr.h = srcRect.h; - SDL_RenderCopy(m_window->getSDLRenderer(), image.getSDLTexture(), &srcRect, &texr); + SDL_RenderTexture(m_window->getSDLRenderer(), image.getSDLTexture(), &srcRect, &texr); } } @@ -70,7 +70,7 @@ namespace ogfx { if (!m_initialized) return; if (!anim.hasImage()) return; - const auto& img = anim.getSpriteSheet(); + Image img = anim.getSpriteSheet(); if (!img.isLoaded() || !img.isValid()) return; drawImage(img, position, anim.getFrameRect()); } diff --git a/src/ogfx/render/BasicRenderer.hpp b/src/ogfx/render/BasicRenderer.hpp index cbf9d8d..1018382 100644 --- a/src/ogfx/render/BasicRenderer.hpp +++ b/src/ogfx/render/BasicRenderer.hpp @@ -41,7 +41,7 @@ namespace ogfx void setFont(const ostd::String& fontFilePath); void setFontSize(int32_t fontSize); - void drawImage(const ogfx::Image& image, const ostd::Vec2& position, const ostd::Rectangle& rect = { 0, 0, 0, 0 }); + void drawImage(ogfx::Image& image, const ostd::Vec2& position, const ostd::Rectangle& rect = { 0, 0, 0, 0 }); void drawAnimation(const Animation& anim, const ostd::Vec2& position); void drawString(const ostd::String& str, const ostd::Vec2& position, const ostd::Color& color, int32_t fontSize = 0); diff --git a/src/ogfx/render/FontUtils.cpp b/src/ogfx/render/FontUtils.cpp index 3e9e5a5..ed811af 100644 --- a/src/ogfx/render/FontUtils.cpp +++ b/src/ogfx/render/FontUtils.cpp @@ -19,6 +19,8 @@ */ #include "FontUtils.hpp" +#include +#include namespace ogfx { @@ -50,7 +52,7 @@ namespace ogfx return; } setFontSize(fontSize); - SDL_Surface* surf = TTF_RenderText_Blended(m_font, message.c_str(), { color.r, color.g, color.b, color.a }); + SDL_Surface* surf = TTF_RenderText_Blended(m_font, message.c_str(), message.len(), { color.r, color.g, color.b, color.a }); if (surf == nullptr) { set_error_state(tErrors::TTFRenderTextBlendedFail); @@ -64,17 +66,17 @@ namespace ogfx print_ttf_error("SDL_CreateTextureFromSurface"); return; } - SDL_FreeSurface(surf); + SDL_DestroySurface(surf); - int32_t w = 0, h = 0; - SDL_QueryTexture(texture, NULL, NULL, &w, &h); + float w = 0, h = 0; + SDL_GetTextureSize(texture, &w, &h); - SDL_Rect dst; + SDL_FRect dst; dst.x = x; dst.y = y; dst.w = w; dst.h = h; - SDL_RenderCopy(m_renderer, texture, NULL, &dst); + SDL_RenderTexture(m_renderer, texture, NULL, &dst); SDL_DestroyTexture(texture); } @@ -101,7 +103,7 @@ namespace ogfx return; } setFontSize(fontSize); - SDL_Surface* surf = TTF_RenderText_Blended(m_font, message.c_str(), { color.r, color.g, color.b, color.a }); + SDL_Surface* surf = TTF_RenderText_Blended(m_font, message.c_str(), message.len(), { color.r, color.g, color.b, color.a }); if (surf == nullptr) { set_error_state(tErrors::TTFRenderTextBlendedFail); @@ -115,17 +117,17 @@ namespace ogfx print_ttf_error("SDL_CreateTextureFromSurface"); return; } - SDL_FreeSurface(surf); + SDL_DestroySurface(surf); - int32_t w = 0, h = 0; - SDL_QueryTexture(texture, NULL, NULL, &w, &h); + float w = 0, h = 0; + SDL_GetTextureSize(texture, &w, &h); - SDL_Rect dst; + SDL_FRect dst; dst.x = center_x - (w / 2); dst.y = center_y - (h / 2); dst.w = w; dst.h = h; - SDL_RenderCopy(m_renderer, texture, NULL, &dst); + SDL_RenderTexture(m_renderer, texture, NULL, &dst); SDL_DestroyTexture(texture); } @@ -152,7 +154,7 @@ namespace ogfx return { 0, 0 }; } setFontSize(fontSize); - SDL_Surface* surf = TTF_RenderText_Blended(m_font, message.c_str(), { 0, 0, 0, 255 }); + SDL_Surface* surf = TTF_RenderText_Blended(m_font, message.c_str(), message.len(), { 0, 0, 0, 255 }); if (surf == nullptr) { set_error_state(tErrors::TTFRenderTextBlendedFail); @@ -166,19 +168,19 @@ namespace ogfx print_ttf_error("SDL_CreateTextureFromSurface"); return { 0, 0 }; } - SDL_FreeSurface(surf); + SDL_DestroySurface(surf); - int32_t w = 0, h = 0; - SDL_QueryTexture(texture, NULL, NULL, &w, &h); + float w = 0, h = 0; + SDL_GetTextureSize(texture, &w, &h); SDL_DestroyTexture(texture); - return { w, h }; + return { static_cast(w), static_cast(h) }; } int32_t TTFRenderer::init(SDL_Renderer* renderer) { if (TTFRenderer::m_initialized) return set_error_state(tErrors::NoError); if (renderer == nullptr) return set_error_state(tErrors::NullRenderer); - if (TTF_Init() != 0) + if (!TTF_Init()) { print_ttf_error("TTF_Init"); SDL_Quit(); @@ -233,6 +235,6 @@ namespace ogfx void TTFRenderer::print_ttf_error(const ostd::String& funcName) { - m_out.fg(ostd::ConsoleColors::Red).p(funcName).p("(...) failed: ").p(ostd::String(TTF_GetError())).reset().nl(); + m_out.fg(ostd::ConsoleColors::Red).p(funcName).p("(...) failed: ").p(ostd::String(SDL_GetError())).reset().nl(); } -} \ No newline at end of file +} diff --git a/src/ogfx/render/PixelRenderer.cpp b/src/ogfx/render/PixelRenderer.cpp index cb997ec..3ef2e90 100644 --- a/src/ogfx/render/PixelRenderer.cpp +++ b/src/ogfx/render/PixelRenderer.cpp @@ -21,6 +21,7 @@ #include "PixelRenderer.hpp" #include "../gui/WindowBase.hpp" #include "../../ostd/io/Memory.hpp" +#include namespace ogfx { @@ -171,8 +172,8 @@ namespace ogfx void PixelRenderer::displayBuffer(void) { if (isInvalid()) return; - SDL_Rect rect { 0, 0, m_windowWidth, m_windowHeight }; - SDL_RenderCopy(m_parent->getSDLRenderer(), m_texture, NULL, &rect); + SDL_FRect rect { 0, 0, static_cast(m_windowWidth), static_cast(m_windowHeight) }; + SDL_RenderTexture(m_parent->getSDLRenderer(), m_texture, NULL, &rect); } void PixelRenderer::clear(const ostd::Color& color) diff --git a/src/ogfx/render/PixelRenderer.hpp b/src/ogfx/render/PixelRenderer.hpp index a80beb8..b68d846 100644 --- a/src/ogfx/render/PixelRenderer.hpp +++ b/src/ogfx/render/PixelRenderer.hpp @@ -73,7 +73,7 @@ namespace ogfx } inline ~Font(void) { - SDL_FreeSurface(m_fontSurface); + SDL_DestroySurface(m_fontSurface); } public: diff --git a/src/ogfx/resources/Image.cpp b/src/ogfx/resources/Image.cpp index f7416a6..b1a6775 100644 --- a/src/ogfx/resources/Image.cpp +++ b/src/ogfx/resources/Image.cpp @@ -41,10 +41,10 @@ namespace ogfx m_sdl_texture = IMG_LoadTexture(gfx.getWindow().getSDLRenderer(), filePath.c_str()); if (!m_sdl_texture) { - OX_ERROR("Failed to load Image: %s", IMG_GetError()); + OX_ERROR("Failed to load Image: %s", SDL_GetError()); return *this; } - SDL_QueryTexture(m_sdl_texture, nullptr, nullptr, &m_width, &m_height); + SDL_GetTextureSize(m_sdl_texture, &m_width, &m_height); m_loaded = true; setTypeName("ogfx::Image"); validate(); diff --git a/src/ogfx/resources/Image.hpp b/src/ogfx/resources/Image.hpp index d4fcbf3..bc55a0b 100644 --- a/src/ogfx/resources/Image.hpp +++ b/src/ogfx/resources/Image.hpp @@ -35,14 +35,14 @@ namespace ogfx inline ~Image(void) { destroy(); } void destroy(void); Image& loadFromFile(const ostd::String& filePath, BasicRenderer2D& gfx); - inline ostd::IPoint getSize(void) const { return { m_width, m_height }; } + inline ostd::Vec2 getSize(void) const { return { m_width, m_height }; } inline bool isLoaded(void) const { return m_loaded; } - inline SDL_Texture* getSDLTexture(void) const { return m_sdl_texture; } + inline SDL_Texture* getSDLTexture(void) { return m_sdl_texture; } private: SDL_Texture* m_sdl_texture { nullptr }; - int32_t m_width { 0 }; - int32_t m_height { 0 }; + float m_width { 0 }; + float m_height { 0 }; bool m_loaded { false }; }; } diff --git a/src/ogfx/utils/Animation.hpp b/src/ogfx/utils/Animation.hpp index f50a444..fa7413d 100644 --- a/src/ogfx/utils/Animation.hpp +++ b/src/ogfx/utils/Animation.hpp @@ -78,7 +78,7 @@ namespace ogfx inline void setColumnOffset(int32_t o) { m_column_offset = o; } inline void setRowOffset(int32_t o) { m_row_offset = o; } inline void setStill(bool s) { m_still = s; } - inline void setSpriteSheet(const Image& img) { m_spriteSheet = &img; } + inline void setSpriteSheet(Image& img) { m_spriteSheet = &img; } inline int32_t getFrameNumber(void) const { return m_frames; } inline int32_t getColumnNumber(void) const { return m_columns; } @@ -89,11 +89,12 @@ namespace ogfx inline bool isStill(void) const { return m_still; } inline ostd::Rectangle getFrameRect(void) const { return m_frame_rect; } inline const Image& getSpriteSheet(void) const { return (m_spriteSheet != nullptr ? *m_spriteSheet : InvalidImage); } + inline Image& getSpriteSheet(void) { return (m_spriteSheet != nullptr ? *m_spriteSheet : InvalidImage); } inline bool hasImage(void) const { return m_spriteSheet != nullptr; } private: - const Image* m_spriteSheet { nullptr }; - inline static const Image InvalidImage; + Image* m_spriteSheet { nullptr }; + inline static Image InvalidImage; int32_t m_frames; int32_t m_rows; diff --git a/src/ogfx/utils/SDLInclude.hpp b/src/ogfx/utils/SDLInclude.hpp index c819932..cfac199 100644 --- a/src/ogfx/utils/SDLInclude.hpp +++ b/src/ogfx/utils/SDLInclude.hpp @@ -20,15 +20,12 @@ #pragma once -#ifdef _WIN32 -#define SDL_MAIN_HANDLED -#undef __linux__ -#endif +#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.c b/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.c new file mode 100644 index 0000000..5bff7e2 --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.c @@ -0,0 +1,189 @@ +/* + +SDL3_framerate.c: framerate manager + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#include "SDL3_framerate.h" + +/*! +\brief Internal wrapper to SDL_GetTicks that ensures a non-zero return value. + +\return The tick count. +*/ +Uint64 _getTicks() +{ + Uint64 ticks = SDL_GetTicks(); + + /* + * Since baseticks!=0 is used to track initialization + * we need to ensure that the tick count is always >0 + * since SDL_GetTicks may not have incremented yet and + * return 0 depending on the timing of the calls. + */ + if (ticks == 0) { + return 1; + } else { + return ticks; + } +} + +/*! +\brief Initialize the framerate manager. + +Initialize the framerate manager, set default framerate of 30Hz and +reset delay interpolation. + +\param manager Pointer to the framerate manager. +*/ +void SDL_initFramerate(FPSmanager * manager) +{ + /* + * Store some sane values + */ + manager->framecount = 0; + manager->rate = FPS_DEFAULT; + manager->rateticks = (1000.0f / (float) FPS_DEFAULT); + manager->baseticks = _getTicks(); + manager->lastticks = manager->baseticks; + +} + +/*! +\brief Set the framerate in Hz + +Sets a new framerate for the manager and reset delay interpolation. +Rate values must be between FPS_LOWER_LIMIT and FPS_UPPER_LIMIT inclusive to be accepted. + +\param manager Pointer to the framerate manager. +\param rate The new framerate in Hz (frames per second). + +\return 0 for sucess and -1 for error. +*/ +int SDL_setFramerate(FPSmanager * manager, Uint32 rate) +{ + if ((rate >= FPS_LOWER_LIMIT) && (rate <= FPS_UPPER_LIMIT)) { + manager->framecount = 0; + manager->rate = rate; + manager->rateticks = (1000.0f / (float) rate); + return (0); + } else { + return (-1); + } +} + +/*! +\brief Return the current target framerate in Hz + +Get the currently set framerate of the manager. + +\param manager Pointer to the framerate manager. + +\return Current framerate in Hz or -1 for error. +*/ +int SDL_getFramerate(FPSmanager * manager) +{ + if (manager == NULL) { + return (-1); + } else { + return ((int)manager->rate); + } +} + +/*! +\brief Return the current framecount. + +Get the current framecount from the framerate manager. +A frame is counted each time SDL_framerateDelay is called. + +\param manager Pointer to the framerate manager. + +\return Current frame count or -1 for error. +*/ +int SDL_getFramecount(FPSmanager * manager) +{ + if (manager == NULL) { + return (-1); + } else { + return ((int)manager->framecount); + } +} + +/*! +\brief Delay execution to maintain a constant framerate and calculate fps. + +Generate a delay to accomodate currently set framerate. Call once in the +graphics/rendering loop. If the computer cannot keep up with the rate (i.e. +drawing too slow), the delay is zero and the delay interpolation is reset. + +\param manager Pointer to the framerate manager. + +\return The time that passed since the last call to the function in ms. May return 0. +*/ +Uint64 SDL_framerateDelay(FPSmanager * manager) +{ + Uint64 current_ticks; + Uint64 target_ticks; + Uint64 the_delay; + Uint64 time_passed = 0; + + /* + * No manager, no delay + */ + if (manager == NULL) { + return 0; + } + + /* + * Initialize uninitialized manager + */ + if (manager->baseticks == 0) { + SDL_initFramerate(manager); + } + + /* + * Next frame + */ + manager->framecount++; + + /* + * Get/calc ticks + */ + current_ticks = _getTicks(); + time_passed = current_ticks - manager->lastticks; + manager->lastticks = current_ticks; + target_ticks = manager->baseticks + (Uint64) ((float) manager->framecount * manager->rateticks); + + if (current_ticks <= target_ticks) { + the_delay = target_ticks - current_ticks; + SDL_Delay(the_delay); + } else { + manager->framecount = 0; + manager->baseticks = _getTicks(); + } + + return time_passed; +} diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.h b/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.h new file mode 100644 index 0000000..43bf8fc --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_framerate.h @@ -0,0 +1,100 @@ +/* + +SDL3_framerate.h: framerate manager + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#ifndef _SDL3_framerate_h +#define _SDL3_framerate_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + /* --- */ + +#include + + /* --------- Definitions */ + + /*! + \brief Highest possible rate supported by framerate controller in Hz (1/s). + */ +#define FPS_UPPER_LIMIT 200 + + /*! + \brief Lowest possible rate supported by framerate controller in Hz (1/s). + */ +#define FPS_LOWER_LIMIT 1 + + /*! + \brief Default rate of framerate controller in Hz (1/s). + */ +#define FPS_DEFAULT 30 + + /*! + \brief Structure holding the state and timing information of the framerate controller. + */ + typedef struct { + Uint32 framecount; + float rateticks; + Uint64 baseticks; + Uint64 lastticks; + Uint32 rate; + } FPSmanager; + + /* ---- Function Prototypes */ + +#ifdef _MSC_VER +# if defined(DLL_EXPORT) && !defined(LIBSDL3_GFX_DLL_IMPORT) +# define SDL3_FRAMERATE_SCOPE __declspec(dllexport) +# else +# ifdef LIBSDL3_GFX_DLL_IMPORT +# define SDL3_FRAMERATE_SCOPE __declspec(dllimport) +# endif +# endif +#endif +#ifndef SDL3_FRAMERATE_SCOPE +# define SDL3_FRAMERATE_SCOPE extern +#endif + + /* Functions return 0 or value for sucess and -1 for error */ + + SDL3_FRAMERATE_SCOPE void SDL_initFramerate(FPSmanager * manager); + SDL3_FRAMERATE_SCOPE int SDL_setFramerate(FPSmanager * manager, Uint32 rate); + SDL3_FRAMERATE_SCOPE int SDL_getFramerate(FPSmanager * manager); + SDL3_FRAMERATE_SCOPE int SDL_getFramecount(FPSmanager * manager); + SDL3_FRAMERATE_SCOPE Uint64 SDL_framerateDelay(FPSmanager * manager); + + /* --- */ + + /* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL3_framerate_h */ diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.c b/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.c new file mode 100644 index 0000000..1726d24 --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.c @@ -0,0 +1,3794 @@ +/* + +SDL3_gfxPrimitives.c: graphics primitives for SDL3 renderers + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#include +#include +#include +#include + +#include "SDL3_gfxPrimitives.h" +#include "SDL3_rotozoom.h" +#include "SDL3_gfxPrimitives_font.h" + +/* ---- Pixel */ + +/*! +\brief Draw pixel in currently set color. + +\param renderer The renderer to draw on. +\param x X (horizontal) coordinate of the pixel. +\param y Y (vertical) coordinate of the pixel. + +\returns Returns true on success, false on failure. +*/ +bool pixel(SDL_Renderer *renderer, float x, float y) +{ + return SDL_RenderPoint(renderer, x, y); +} + +/*! +\brief Draw pixel with blending enabled if a<255. + +\param renderer The renderer to draw on. +\param x X (horizontal) coordinate of the pixel. +\param y Y (vertical) coordinate of the pixel. +\param color The color value of the pixel to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool pixelColor(SDL_Renderer * renderer, float x, float y, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return pixelRGBA(renderer, x, y, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw pixel with blending enabled if a<255. + +\param renderer The renderer to draw on. +\param x X (horizontal) coordinate of the pixel. +\param y Y (vertical) coordinate of the pixel. +\param r The red color value of the pixel to draw. +\param g The green color value of the pixel to draw. +\param b The blue color value of the pixel to draw. +\param a The alpha value of the pixel to draw. + +\returns Returns true on success, false on failure. +*/ +bool pixelRGBA(SDL_Renderer * renderer, float x, float y, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + result &= SDL_RenderPoint(renderer, x, y); + return result; +} + +/*! +\brief Draw pixel with blending enabled and using alpha weight on color. + +\param renderer The renderer to draw on. +\param x The horizontal coordinate of the pixel. +\param y The vertical position of the pixel. +\param r The red color value of the pixel to draw. +\param g The green color value of the pixel to draw. +\param b The blue color value of the pixel to draw. +\param a The alpha value of the pixel to draw. +\param weight The weight multiplied into the alpha value of the pixel. + +\returns Returns true on success, false on failure. +*/ +bool pixelRGBAWeight(SDL_Renderer * renderer, float x, float y, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Uint32 weight) +{ + /* + * Modify Alpha by weight + */ + Uint32 ax = a; + ax = ((ax * weight) >> 8); + if (ax > 255) { + a = 255; + } else { + a = (Uint8)(ax & 0x000000ff); + } + + return pixelRGBA(renderer, x, y, r, g, b, a); +} + +/* ---- Hline */ + +/*! +\brief Draw horizontal line in currently set color + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. left) of the line. +\param x2 X coordinate of the second point (i.e. right) of the line. +\param y Y coordinate of the points of the line. + +\returns Returns true on success, false on failure. +*/ +bool hline(SDL_Renderer * renderer, float x1, float x2, float y) +{ + return SDL_RenderLine(renderer, x1, y, x2, y);; +} + + +/*! +\brief Draw horizontal line with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. left) of the line. +\param x2 X coordinate of the second point (i.e. right) of the line. +\param y Y coordinate of the points of the line. +\param color The color value of the line to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool hlineColor(SDL_Renderer * renderer, float x1, float x2, float y, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return hlineRGBA(renderer, x1, x2, y, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw horizontal line with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. left) of the line. +\param x2 X coordinate of the second point (i.e. right) of the line. +\param y Y coordinate of the points of the line. +\param r The red value of the line to draw. +\param g The green value of the line to draw. +\param b The blue value of the line to draw. +\param a The alpha value of the line to draw. + +\returns Returns true on success, false on failure. +*/ +bool hlineRGBA(SDL_Renderer * renderer, float x1, float x2, float y, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + result &= SDL_RenderLine(renderer, x1, y, x2, y); + return result; +} + +/* ---- Vline */ + +/*! +\brief Draw vertical line in currently set color + +\param renderer The renderer to draw on. +\param x X coordinate of points of the line. +\param y1 Y coordinate of the first point (i.e. top) of the line. +\param y2 Y coordinate of the second point (i.e. bottom) of the line. + +\returns Returns true on success, false on failure. +*/ +bool vline(SDL_Renderer * renderer, float x, float y1, float y2) +{ + return SDL_RenderLine(renderer, x, y1, x, y2);; +} + +/*! +\brief Draw vertical line with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the points of the line. +\param y1 Y coordinate of the first point (i.e. top) of the line. +\param y2 Y coordinate of the second point (i.e. bottom) of the line. +\param color The color value of the line to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool vlineColor(SDL_Renderer * renderer, float x, float y1, float y2, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return vlineRGBA(renderer, x, y1, y2, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw vertical line with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the points of the line. +\param y1 Y coordinate of the first point (i.e. top) of the line. +\param y2 Y coordinate of the second point (i.e. bottom) of the line. +\param r The red value of the line to draw. +\param g The green value of the line to draw. +\param b The blue value of the line to draw. +\param a The alpha value of the line to draw. + +\returns Returns true on success, false on failure. +*/ +bool vlineRGBA(SDL_Renderer * renderer, float x, float y1, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + result &= SDL_RenderLine(renderer, x, y1, x, y2); + return result; +} + +/* ---- Rectangle */ + +/*! +\brief Draw rectangle with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the rectangle. +\param y1 Y coordinate of the first point (i.e. top right) of the rectangle. +\param x2 X coordinate of the second point (i.e. bottom left) of the rectangle. +\param y2 Y coordinate of the second point (i.e. bottom left) of the rectangle. +\param color The color value of the rectangle to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool rectangleColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return rectangleRGBA(renderer, x1, y1, x2, y2, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw rectangle with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the rectangle. +\param y1 Y coordinate of the first point (i.e. top right) of the rectangle. +\param x2 X coordinate of the second point (i.e. bottom left) of the rectangle. +\param y2 Y coordinate of the second point (i.e. bottom left) of the rectangle. +\param r The red value of the rectangle to draw. +\param g The green value of the rectangle to draw. +\param b The blue value of the rectangle to draw. +\param a The alpha value of the rectangle to draw. + +\returns Returns true on success, false on failure. +*/ +bool rectangleRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result; + float tmp; + SDL_FRect rect; + + /* + * Test for special cases of straight lines or single point + */ + if (x1 == x2) { + if (y1 == y2) { + return (pixelRGBA(renderer, x1, y1, r, g, b, a)); + } else { + return (vlineRGBA(renderer, x1, y1, y2, r, g, b, a)); + } + } else { + if (y1 == y2) { + return (hlineRGBA(renderer, x1, x2, y1, r, g, b, a)); + } + } + + /* + * Swap x1, x2 if required + */ + if (x1 > x2) { + tmp = x1; + x1 = x2; + x2 = tmp; + } + + /* + * Swap y1, y2 if required + */ + if (y1 > y2) { + tmp = y1; + y1 = y2; + y2 = tmp; + } + + /* + * Create destination rect + */ + rect.x = x1; + rect.y = y1; + rect.w = x2 - x1; + rect.h = y2 - y1; + + /* + * Draw + */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + result &= SDL_RenderRect(renderer, &rect); + return result; +} + +/* ---- Rounded Rectangle */ + +/*! +\brief Draw rounded-corner rectangle with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the rectangle. +\param y1 Y coordinate of the first point (i.e. top right) of the rectangle. +\param x2 X coordinate of the second point (i.e. bottom left) of the rectangle. +\param y2 Y coordinate of the second point (i.e. bottom left) of the rectangle. +\param rad The radius of the corner arc. +\param color The color value of the rectangle to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool roundedRectangleColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float rad, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return roundedRectangleRGBA(renderer, x1, y1, x2, y2, rad, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw rounded-corner rectangle with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the rectangle. +\param y1 Y coordinate of the first point (i.e. top right) of the rectangle. +\param x2 X coordinate of the second point (i.e. bottom left) of the rectangle. +\param y2 Y coordinate of the second point (i.e. bottom left) of the rectangle. +\param rad The radius of the corner arc. +\param r The red value of the rectangle to draw. +\param g The green value of the rectangle to draw. +\param b The blue value of the rectangle to draw. +\param a The alpha value of the rectangle to draw. + +\returns Returns true on success, false on failure. +*/ +bool roundedRectangleRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + Sint32 result = 0; + float tmp; + float w, h; + float xx1, xx2; + float yy1, yy2; + + /* + * Check renderer + */ + if (renderer == NULL) + { + return false; + } + + /* + * Check radius vor valid range + */ + if (rad < 0) { + return false; + } + + /* + * Special case - no rounding + */ + if (rad <= 1) { + return rectangleRGBA(renderer, x1, y1, x2, y2, r, g, b, a); + } + + /* + * Test for special cases of straight lines or single point + */ + if (x1 == x2) { + if (y1 == y2) { + return (pixelRGBA(renderer, x1, y1, r, g, b, a)); + } else { + return (vlineRGBA(renderer, x1, y1, y2, r, g, b, a)); + } + } else { + if (y1 == y2) { + return (hlineRGBA(renderer, x1, x2, y1, r, g, b, a)); + } + } + + /* + * Swap x1, x2 if required + */ + if (x1 > x2) { + tmp = x1; + x1 = x2; + x2 = tmp; + } + + /* + * Swap y1, y2 if required + */ + if (y1 > y2) { + tmp = y1; + y1 = y2; + y2 = tmp; + } + + /* + * Calculate width&height + */ + w = x2 - x1; + h = y2 - y1; + + /* + * Maybe adjust radius + */ + if ((rad * 2) > w) + { + rad = (Sint32) w / 2; + } + if ((rad * 2) > h) + { + rad = (Sint32) h / 2; + } + + /* + * Draw corners + */ + xx1 = x1 + rad; + xx2 = x2 - rad; + yy1 = y1 + rad; + yy2 = y2 - rad; + result &= arcRGBA(renderer, xx1, yy1, rad, 180, 270, r, g, b, a); + result &= arcRGBA(renderer, xx2, yy1, rad, 270, 360, r, g, b, a); + result &= arcRGBA(renderer, xx1, yy2, rad, 90, 180, r, g, b, a); + result &= arcRGBA(renderer, xx2, yy2, rad, 0, 90, r, g, b, a); + + /* + * Draw lines + */ + if (xx1 <= xx2) { + result &= hlineRGBA(renderer, xx1, xx2, y1, r, g, b, a); + result &= hlineRGBA(renderer, xx1, xx2, y2, r, g, b, a); + } + if (yy1 <= yy2) { + result &= vlineRGBA(renderer, x1, yy1, yy2, r, g, b, a); + result &= vlineRGBA(renderer, x2, yy1, yy2, r, g, b, a); + } + + return result; +} + +/* ---- Rounded Box */ + +/*! +\brief Draw rounded-corner box (filled rectangle) with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the box. +\param y1 Y coordinate of the first point (i.e. top right) of the box. +\param x2 X coordinate of the second point (i.e. bottom left) of the box. +\param y2 Y coordinate of the second point (i.e. bottom left) of the box. +\param rad The radius of the corner arcs of the box. +\param color The color value of the box to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool roundedBoxColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float rad, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return roundedBoxRGBA(renderer, x1, y1, x2, y2, rad, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw rounded-corner box (filled rectangle) with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the box. +\param y1 Y coordinate of the first point (i.e. top right) of the box. +\param x2 X coordinate of the second point (i.e. bottom left) of the box. +\param y2 Y coordinate of the second point (i.e. bottom left) of the box. +\param rad The radius of the corner arcs of the box. +\param r The red value of the box to draw. +\param g The green value of the box to draw. +\param b The blue value of the box to draw. +\param a The alpha value of the box to draw. + +\returns Returns true on success, false on failure. +*/ +bool roundedBoxRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, + float y2, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result; + float w, h, r2, tmp; + float cx = 0; + float cy = rad; + float ocx = (float) 0xffff; + float ocy = (float) 0xffff; + float df = 1 - rad; + float d_e = 3; + float d_se = -2 * rad + 5; + float xpcx, xmcx, xpcy, xmcy; + float ypcy, ymcy, ypcx, ymcx; + float x, y, dx, dy; + + /* + * Check destination renderer + */ + if (renderer == NULL) + { + return false; + } + + /* + * Check radius vor valid range + */ + if (rad < 0) { + return false; + } + + /* + * Special case - no rounding + */ + if (rad <= 1) { + return boxRGBA(renderer, x1, y1, x2, y2, r, g, b, a); + } + + /* + * Test for special cases of straight lines or single point + */ + if (x1 == x2) { + if (y1 == y2) { + return (pixelRGBA(renderer, x1, y1, r, g, b, a)); + } else { + return (vlineRGBA(renderer, x1, y1, y2, r, g, b, a)); + } + } else { + if (y1 == y2) { + return (hlineRGBA(renderer, x1, x2, y1, r, g, b, a)); + } + } + + /* + * Swap x1, x2 if required + */ + if (x1 > x2) { + tmp = x1; + x1 = x2; + x2 = tmp; + } + + /* + * Swap y1, y2 if required + */ + if (y1 > y2) { + tmp = y1; + y1 = y2; + y2 = tmp; + } + + /* + * Calculate width&height + */ + w = x2 - x1 + 1; + h = y2 - y1 + 1; + + /* + * Maybe adjust radius + */ + r2 = rad + rad; + if (r2 > w) + { + rad = (Sint32) w / 2; + r2 = rad + rad; + } + if (r2 > h) + { + rad = (Sint32) h / 2; + } + + /* Setup filled circle drawing for corners */ + x = x1 + rad; + y = y1 + rad; + dx = x2 - x1 - rad - rad; + dy = y2 - y1 - rad - rad; + + /* + * Set color + */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + + /* + * Draw corners + */ + do { + xpcx = x + cx; + xmcx = x - cx; + xpcy = x + cy; + xmcy = x - cy; + if (ocy != cy) { + if (cy > 0) { + ypcy = y + cy; + ymcy = y - cy; + result &= hline(renderer, xmcx, xpcx + dx, ypcy + dy); + result &= hline(renderer, xmcx, xpcx + dx, ymcy); + } else { + result &= hline(renderer, xmcx, xpcx + dx, y); + } + ocy = cy; + } + if (ocx != cx) { + if (cx != cy) { + if (cx > 0) { + ypcx = y + cx; + ymcx = y - cx; + result &= hline(renderer, xmcy, xpcy + dx, ymcx); + result &= hline(renderer, xmcy, xpcy + dx, ypcx + dy); + } else { + result &= hline(renderer, xmcy, xpcy + dx, y); + } + } + ocx = cx; + } + + /* + * Update + */ + if (df < 0) { + df += d_e; + d_e += 2; + d_se += 2; + } else { + df += d_se; + d_e += 2; + d_se += 4; + cy--; + } + cx++; + } while (cx <= cy); + + /* Inside */ + if (dx > 0 && dy > 0) { + result &= boxRGBA(renderer, x1, y1 + rad + 1, x2, y2 - rad, r, g, b, a); + } + + return (result); +} + +/* ---- Box */ + +/*! +\brief Draw box (filled rectangle) with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the box. +\param y1 Y coordinate of the first point (i.e. top right) of the box. +\param x2 X coordinate of the second point (i.e. bottom left) of the box. +\param y2 Y coordinate of the second point (i.e. bottom left) of the box. +\param color The color value of the box to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool boxColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return boxRGBA(renderer, x1, y1, x2, y2, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw box (filled rectangle) with blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. top right) of the box. +\param y1 Y coordinate of the first point (i.e. top right) of the box. +\param x2 X coordinate of the second point (i.e. bottom left) of the box. +\param y2 Y coordinate of the second point (i.e. bottom left) of the box. +\param r The red value of the box to draw. +\param g The green value of the box to draw. +\param b The blue value of the box to draw. +\param a The alpha value of the box to draw. + +\returns Returns true on success, false on failure. +*/ +bool boxRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result; + float tmp; + SDL_FRect rect; + + /* + * Test for special cases of straight lines or single point + */ + if (x1 == x2) { + if (y1 == y2) { + return (pixelRGBA(renderer, x1, y1, r, g, b, a)); + } else { + return (vlineRGBA(renderer, x1, y1, y2, r, g, b, a)); + } + } else { + if (y1 == y2) { + return (hlineRGBA(renderer, x1, x2, y1, r, g, b, a)); + } + } + + /* + * Swap x1, x2 if required + */ + if (x1 > x2) { + tmp = x1; + x1 = x2; + x2 = tmp; + } + + /* + * Swap y1, y2 if required + */ + if (y1 > y2) { + tmp = y1; + y1 = y2; + y2 = tmp; + } + + /* + * Create destination rect + */ + rect.x = x1; + rect.y = y1; + rect.w = x2 - x1 + 1; + rect.h = y2 - y1 + 1; + + /* + * Draw + */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + result &= SDL_RenderFillRect(renderer, &rect); + return result; +} + +/* ----- Line */ + +/*! +\brief Draw line with alpha blending using the currently set color. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the line. +\param y1 Y coordinate of the first point of the line. +\param x2 X coordinate of the second point of the line. +\param y2 Y coordinate of the second point of the line. + +\returns Returns true on success, false on failure. +*/ +bool line(SDL_Renderer * renderer, float x1, float y1, float x2, float y2) +{ + /* + * Draw + */ + return SDL_RenderLine(renderer, x1, y1, x2, y2); +} + +/*! +\brief Draw line with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the line. +\param y1 Y coordinate of the first point of the line. +\param x2 X coordinate of the second point of the line. +\param y2 Y coordinate of the seond point of the line. +\param color The color value of the line to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool lineColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return lineRGBA(renderer, x1, y1, x2, y2, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw line with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the line. +\param y1 Y coordinate of the first point of the line. +\param x2 X coordinate of the second point of the line. +\param y2 Y coordinate of the second point of the line. +\param r The red value of the line to draw. +\param g The green value of the line to draw. +\param b The blue value of the line to draw. +\param a The alpha value of the line to draw. + +\returns Returns true on success, false on failure. +*/ +bool lineRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + /* + * Draw + */ + bool result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + result &= SDL_RenderLine(renderer, x1, y1, x2, y2); + return result; +} + +/* ---- AA Line */ + +#define AAlevels 256 +#define AAbits 8 + +/*! +\brief Internal function to draw anti-aliased line with alpha blending and endpoint control. + +This implementation of the Wu antialiasing code is based on Mike Abrash's +DDJ article which was reprinted as Chapter 42 of his Graphics Programming +Black Book, but has been optimized to work with SDL and utilizes 32-bit +fixed-point arithmetic by A. Schiffler. The endpoint control allows the +supression to draw the last pixel useful for rendering continous aa-lines +with alpha<255. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the aa-line. +\param y1 Y coordinate of the first point of the aa-line. +\param x2 X coordinate of the second point of the aa-line. +\param y2 Y coordinate of the second point of the aa-line. +\param r The red value of the aa-line to draw. +\param g The green value of the aa-line to draw. +\param b The blue value of the aa-line to draw. +\param a The alpha value of the aa-line to draw. +\param draw_endpoint Flag indicating if the endpoint should be drawn; draw if non-zero. + +\returns Returns true on success, false on failure. +*/ +bool _aalineRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a, bool draw_endpoint) +{ + float xx0, yy0, xx1, yy1; + bool result; + Uint32 intshift, erracc, erradj; + Uint32 erracctmp, wgt; + Sint32 dx, dy, tmp, xdir, y0p1, x0pxdir; + + /* + * Keep on working with 32bit numbers + */ + xx0 = x1; + yy0 = y1; + xx1 = x2; + yy1 = y2; + + /* + * Reorder points to make dy positive + */ + if (yy0 > yy1) { + tmp = yy0; + yy0 = yy1; + yy1 = tmp; + tmp = xx0; + xx0 = xx1; + xx1 = tmp; + } + + /* + * Calculate distance + */ + dx = xx1 - xx0; + dy = yy1 - yy0; + + /* + * Adjust for negative dx and set xdir + */ + if (dx >= 0) { + xdir = 1; + } else { + xdir = -1; + dx = (-dx); + } + + /* + * Check for special cases + */ + if (dx == 0) { + /* + * Vertical line + */ + if (draw_endpoint) + { + return (vlineRGBA(renderer, x1, y1, y2, r, g, b, a)); + } else { + if (dy > 0) { + return (vlineRGBA(renderer, x1, yy0, yy0+dy, r, g, b, a)); + } else { + return (pixelRGBA(renderer, x1, y1, r, g, b, a)); + } + } + } else if (dy == 0) { + /* + * Horizontal line + */ + if (draw_endpoint) + { + return (hlineRGBA(renderer, x1, x2, y1, r, g, b, a)); + } else { + if (dx > 0) { + return (hlineRGBA(renderer, xx0, xx0+(xdir*dx), y1, r, g, b, a)); + } else { + return (pixelRGBA(renderer, x1, y1, r, g, b, a)); + } + } + } else if ((dx == dy) && (draw_endpoint)) { + /* + * Diagonal line (with endpoint) + */ + return (lineRGBA(renderer, x1, y1, x2, y2, r, g, b, a)); + } + + + /* + * Line is not horizontal, vertical or diagonal (with endpoint) + */ + result = true; + + /* + * Zero accumulator + */ + erracc = 0; + + /* + * # of bits by which to shift erracc to get intensity level + */ + intshift = 32 - AAbits; + + /* + * Draw the initial pixel in the foreground color + */ + result &= pixelRGBA(renderer, x1, y1, r, g, b, a); + + /* + * x-major or y-major? + */ + if (dy > dx) { + + /* + * y-major. Calculate 16-bit fixed point fractional part of a pixel that + * X advances every time Y advances 1 pixel, truncating the result so that + * we won't overrun the endpoint along the X axis + */ + /* + * Not-so-portable version: erradj = ((Uint64)dx << 32) / (Uint64)dy; + */ + erradj = ((dx << 16) / dy) << 16; + + /* + * draw all pixels other than the first and last + */ + x0pxdir = xx0 + xdir; + while (--dy) { + erracctmp = erracc; + erracc += erradj; + if (erracc <= erracctmp) { + /* + * rollover in error accumulator, x coord advances + */ + xx0 = x0pxdir; + x0pxdir += xdir; + } + yy0++; /* y-major so always advance Y */ + + /* + * the AAbits most significant bits of erracc give us the intensity + * weighting for this pixel, and the complement of the weighting for + * the paired pixel. + */ + wgt = (erracc >> intshift) & 255; + result &= pixelRGBAWeight (renderer, xx0, yy0, r, g, b, a, 255 - wgt); + result &= pixelRGBAWeight (renderer, x0pxdir, yy0, r, g, b, a, wgt); + } + + } else { + + /* + * x-major line. Calculate 16-bit fixed-point fractional part of a pixel + * that Y advances each time X advances 1 pixel, truncating the result so + * that we won't overrun the endpoint along the X axis. + */ + /* + * Not-so-portable version: erradj = ((Uint64)dy << 32) / (Uint64)dx; + */ + erradj = ((dy << 16) / dx) << 16; + + /* + * draw all pixels other than the first and last + */ + y0p1 = yy0 + 1; + while (--dx) { + + erracctmp = erracc; + erracc += erradj; + if (erracc <= erracctmp) { + /* + * Accumulator turned over, advance y + */ + yy0 = y0p1; + y0p1++; + } + xx0 += xdir; /* x-major so always advance X */ + /* + * the AAbits most significant bits of erracc give us the intensity + * weighting for this pixel, and the complement of the weighting for + * the paired pixel. + */ + wgt = (erracc >> intshift) & 255; + result &= pixelRGBAWeight (renderer, xx0, yy0, r, g, b, a, 255 - wgt); + result &= pixelRGBAWeight (renderer, xx0, y0p1, r, g, b, a, wgt); + } + } + + /* + * Do we have to draw the endpoint + */ + if (draw_endpoint) { + /* + * Draw final pixel, always exactly intersected by the line and doesn't + * need to be weighted. + */ + result &= pixelRGBA (renderer, x2, y2, r, g, b, a); + } + + return (result); +} + +/*! +\brief Draw anti-aliased line with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the aa-line. +\param y1 Y coordinate of the first point of the aa-line. +\param x2 X coordinate of the second point of the aa-line. +\param y2 Y coordinate of the second point of the aa-line. +\param color The color value of the aa-line to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool aalineColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return _aalineRGBA(renderer, x1, y1, x2, y2, c[0], c[1], c[2], c[3], true); +} + +/*! +\brief Draw anti-aliased line with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the aa-line. +\param y1 Y coordinate of the first point of the aa-line. +\param x2 X coordinate of the second point of the aa-line. +\param y2 Y coordinate of the second point of the aa-line. +\param r The red value of the aa-line to draw. +\param g The green value of the aa-line to draw. +\param b The blue value of the aa-line to draw. +\param a The alpha value of the aa-line to draw. + +\returns Returns true on success, false on failure. +*/ +bool aalineRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return _aalineRGBA(renderer, x1, y1, x2, y2, r, g, b, a, true); +} + +/* ----- Circle */ + +/*! +\brief Draw circle with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the circle. +\param y Y coordinate of the center of the circle. +\param rad Radius in pixels of the circle. +\param color The color value of the circle to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool circleColor(SDL_Renderer * renderer, float x, float y, float rad, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return ellipseRGBA(renderer, x, y, rad, rad, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw circle with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the circle. +\param y Y coordinate of the center of the circle. +\param rad Radius in pixels of the circle. +\param r The red value of the circle to draw. +\param g The green value of the circle to draw. +\param b The blue value of the circle to draw. +\param a The alpha value of the circle to draw. + +\returns Returns true on success, false on failure. +*/ +bool circleRGBA(SDL_Renderer * renderer, float x, float y, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return ellipseRGBA(renderer, x, y, rad, rad, r, g, b, a); +} + +/* ----- Arc */ + +/*! +\brief Arc with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the arc. +\param y Y coordinate of the center of the arc. +\param rad Radius in pixels of the arc. +\param start Starting radius in degrees of the arc. 0 degrees is down, increasing counterclockwise. +\param end Ending radius in degrees of the arc. 0 degrees is down, increasing counterclockwise. +\param color The color value of the arc to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool arcColor(SDL_Renderer * renderer, float x, float y, float rad, Sint32 start, Sint32 end, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return arcRGBA(renderer, x, y, rad, start, end, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Arc with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the arc. +\param y Y coordinate of the center of the arc. +\param rad Radius in pixels of the arc. +\param start Starting radius in degrees of the arc. 0 degrees is down, increasing counterclockwise. +\param end Ending radius in degrees of the arc. 0 degrees is down, increasing counterclockwise. +\param r The red value of the arc to draw. +\param g The green value of the arc to draw. +\param b The blue value of the arc to draw. +\param a The alpha value of the arc to draw. + +\returns Returns true on success, false on failure. +*/ +/* TODO: rewrite algorithm; arc endpoints are not always drawn */ +bool arcRGBA(SDL_Renderer * renderer, float x, float y, float rad, Sint32 start, Sint32 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result; + float cx = 0; + float cy = rad; + float df = 1 - rad; + float d_e = 3; + float d_se = -2 * rad + 5; + float xpcx, xmcx, xpcy, xmcy; + float ypcy, ymcy, ypcx, ymcx; + Uint8 drawoct; + Sint32 startoct, endoct, oct, stopval_start = 0, stopval_end = 0; + double dstart, dend, temp = 0.; + + /* + * Sanity check radius + */ + if (rad < 0) { + return (false); + } + + /* + * Special case for rad=0 - draw a point + */ + if (rad == 0) { + return (pixelRGBA(renderer, x, y, r, g, b, a)); + } + + /* + Octant labeling + + \ 5 | 6 / + \ | / + 4 \ | / 7 + \|/ + ------+------ +x + /|\ + 3 / | \ 0 + / | \ + / 2 | 1 \ + +y + + Initially reset bitmask to 0x00000000 + the set whether or not to keep drawing a given octant. + For example: 0x00111100 means we're drawing in octants 2-5 + */ + drawoct = 0; + + /* + * Fixup angles + */ + start %= 360; + end %= 360; + /* 0 <= start & end < 360; note that sometimes start > end - if so, arc goes back through 0. */ + while (start < 0) start += 360; + while (end < 0) end += 360; + start %= 360; + end %= 360; + + /* now, we find which octants we're drawing in. */ + startoct = start / 45; + endoct = end / 45; + oct = startoct - 1; + + /* stopval_start, stopval_end; what values of cx to stop at. */ + do { + oct = (oct + 1) % 8; + + if (oct == startoct) { + /* need to compute stopval_start for this octant. Look at picture above if this is unclear */ + dstart = (double)start; + switch (oct) + { + case 0: + case 3: + temp = sin(dstart * M_PI / 180.); + break; + case 1: + case 6: + temp = cos(dstart * M_PI / 180.); + break; + case 2: + case 5: + temp = -cos(dstart * M_PI / 180.); + break; + case 4: + case 7: + temp = -sin(dstart * M_PI / 180.); + break; + default: + break; + } + temp *= rad; + stopval_start = (int)temp; + + /* + This isn't arbitrary, but requires graph paper to explain well. + The basic idea is that we're always changing drawoct after we draw, so we + stop immediately after we render the last sensible pixel at x = ((int)temp). + and whether to draw in this octant initially + */ + if (oct % 2) drawoct |= (1 << oct); /* this is basically like saying drawoct[oct] = true, if drawoct were a bool array */ + else drawoct &= 255 - (1 << oct); /* this is basically like saying drawoct[oct] = false */ + } + if (oct == endoct) { + /* need to compute stopval_end for this octant */ + dend = (double)end; + switch (oct) + { + case 0: + case 3: + temp = sin(dend * M_PI / 180); + break; + case 1: + case 6: + temp = cos(dend * M_PI / 180); + break; + case 2: + case 5: + temp = -cos(dend * M_PI / 180); + break; + case 4: + case 7: + temp = -sin(dend * M_PI / 180); + break; + default: + break; + } + temp *= rad; + stopval_end = (int)temp; + + /* and whether to draw in this octant initially */ + if (startoct == endoct) { + /* note: we start drawing, stop, then start again in this case */ + /* otherwise: we only draw in this octant, so initialize it to false, it will get set back to true */ + if (start > end) { + /* unfortunately, if we're in the same octant and need to draw over the whole circle, */ + /* we need to set the rest to true, because the while loop will end at the bottom. */ + drawoct = 255; + } else { + drawoct &= 255 - (1 << oct); + } + } + else if (oct % 2) drawoct &= 255 - (1 << oct); + else drawoct |= (1 << oct); + } else if (oct != startoct) { /* already verified that it's != endoct */ + drawoct |= (1 << oct); /* draw this entire segment */ + } + } while (oct != endoct); + + /* so now we have what octants to draw and when to draw them. all that's left is the actual raster code. */ + + /* + * Set color + */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + + /* + * Draw arc + */ + do { + ypcy = y + cy; + ymcy = y - cy; + if (cx > 0) { + xpcx = x + cx; + xmcx = x - cx; + + /* always check if we're drawing a certain octant before adding a pixel to that octant. */ + if (drawoct & 4) result &= pixel(renderer, xmcx, ypcy); + if (drawoct & 2) result &= pixel(renderer, xpcx, ypcy); + if (drawoct & 32) result &= pixel(renderer, xmcx, ymcy); + if (drawoct & 64) result &= pixel(renderer, xpcx, ymcy); + } else { + if (drawoct & 96) result &= pixel(renderer, x, ymcy); + if (drawoct & 6) result &= pixel(renderer, x, ypcy); + } + + xpcy = x + cy; + xmcy = x - cy; + if (cx > 0 && cx != cy) { + ypcx = y + cx; + ymcx = y - cx; + if (drawoct & 8) result &= pixel(renderer, xmcy, ypcx); + if (drawoct & 1) result &= pixel(renderer, xpcy, ypcx); + if (drawoct & 16) result &= pixel(renderer, xmcy, ymcx); + if (drawoct & 128) result &= pixel(renderer, xpcy, ymcx); + } else if (cx == 0) { + if (drawoct & 24) result &= pixel(renderer, xmcy, y); + if (drawoct & 129) result &= pixel(renderer, xpcy, y); + } + + /* + * Update whether we're drawing an octant + */ + if (stopval_start == cx) { + /* works like an on-off switch. */ + /* This is just in case start & end are in the same octant. */ + if (drawoct & (1 << startoct)) drawoct &= 255 - (1 << startoct); + else drawoct |= (1 << startoct); + } + if (stopval_end == cx) { + if (drawoct & (1 << endoct)) drawoct &= 255 - (1 << endoct); + else drawoct |= (1 << endoct); + } + + /* + * Update pixels + */ + if (df < 0) { + df += d_e; + d_e += 2; + d_se += 2; + } else { + df += d_se; + d_e += 2; + d_se += 4; + cy--; + } + cx++; + } while (cx <= cy); + + return (result); +} + +/* ----- AA Circle */ + +/*! +\brief Draw anti-aliased circle with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the aa-circle. +\param y Y coordinate of the center of the aa-circle. +\param rad Radius in pixels of the aa-circle. +\param color The color value of the aa-circle to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool aacircleColor(SDL_Renderer * renderer, float x, float y, float rad, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return aaellipseRGBA(renderer, x, y, rad, rad, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw anti-aliased circle with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the aa-circle. +\param y Y coordinate of the center of the aa-circle. +\param rad Radius in pixels of the aa-circle. +\param r The red value of the aa-circle to draw. +\param g The green value of the aa-circle to draw. +\param b The blue value of the aa-circle to draw. +\param a The alpha value of the aa-circle to draw. + +\returns Returns true on success, false on failure. +*/ +bool aacircleRGBA(SDL_Renderer * renderer, float x, float y, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + /* + * Draw + */ + return aaellipseRGBA(renderer, x, y, rad, rad, r, g, b, a); +} + +/* ----- Ellipse */ + +/*! +\brief Internal function to draw pixels or lines in 4 quadrants. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the quadrant. +\param y Y coordinate of the center of the quadrant. +\param dx X offset in pixels of the corners of the quadrant. +\param dy Y offset in pixels of the corners of the quadrant. +\param f Flag indicating if the quadrant should be filled (1) or not (0). + +\returns Returns true on success, false on failure. +*/ +bool _drawQuadrants(SDL_Renderer * renderer, float x, float y, float dx, float dy, bool f) +{ + bool result = true; + float xpdx, xmdx; + float ypdy, ymdy; + + if (dx == 0) { + if (dy == 0) { + result &= pixel(renderer, x, y); + } else { + ypdy = y + dy; + ymdy = y - dy; + if (f) { + result &= vline(renderer, x, ymdy, ypdy); + } else { + result &= pixel(renderer, x, ypdy); + result &= pixel(renderer, x, ymdy); + } + } + } else { + xpdx = x + dx; + xmdx = x - dx; + ypdy = y + dy; + ymdy = y - dy; + if (f) { + result &= vline(renderer, xpdx, ymdy, ypdy); + result &= vline(renderer, xmdx, ymdy, ypdy); + } else { + result &= pixel(renderer, xpdx, ypdy); + result &= pixel(renderer, xmdx, ypdy); + result &= pixel(renderer, xpdx, ymdy); + result &= pixel(renderer, xmdx, ymdy); + } + } + + return result; +} + +/*! +\brief Internal function to draw ellipse or filled ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the ellipse. +\param y Y coordinate of the center of the ellipse. +\param rx Horizontal radius in pixels of the ellipse. +\param ry Vertical radius in pixels of the ellipse. +\param r The red value of the ellipse to draw. +\param g The green value of the ellipse to draw. +\param b The blue value of the ellipse to draw. +\param a The alpha value of the ellipse to draw. +\param f Flag indicating if the ellipse should be filled (1) or not (0). + +\returns Returns true on success, false on failure. +*/ +#define DEFAULT_ELLIPSE_OVERSCAN 4 +bool _ellipseRGBA(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a, bool f) +{ + bool result; + Sint32 rxi, ryi; + Sint32 rx2, ry2, rx22, ry22; + Sint32 error; + Sint32 curX, curY, curXp1, curYm1; + Sint32 scrX, scrY, oldX, oldY; + Sint32 deltaX, deltaY; + Sint32 ellipseOverscan; + + /* + * Sanity check radii + */ + if ((rx < 0) || (ry < 0)) { + return (false); + } + + /* + * Set color + */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + + /* + * Special cases for rx=0 and/or ry=0: draw a hline/vline/pixel + */ + if (rx == 0) { + if (ry == 0) { + return (pixel(renderer, x, y)); + } else { + return (vline(renderer, x, y - ry, y + ry)); + } + } else { + if (ry == 0) { + return (hline(renderer, x - rx, x + rx, y)); + } + } + + /* + * Special case for radii > 0 and < 1 + */ + if (rx > 0 && rx < 1) { + rx = 1.0f; + } + + if (ry > 0 && ry < 1) { + ry = 1.0f; + } + + /* + * Adjust overscan + */ + rxi = rx; + ryi = ry; + if (rxi >= 512 || ryi >= 512) + { + ellipseOverscan = DEFAULT_ELLIPSE_OVERSCAN / 4; + } + else if (rxi >= 256 || ryi >= 256) + { + ellipseOverscan = DEFAULT_ELLIPSE_OVERSCAN / 2; + } + else + { + ellipseOverscan = DEFAULT_ELLIPSE_OVERSCAN / 1; + } + + /* + * Top/bottom center points. + */ + oldX = scrX = 0; + oldY = scrY = ryi; + result &= _drawQuadrants(renderer, x, y, 0, ry, f); + + /* Midpoint ellipse algorithm with overdraw */ + rxi *= ellipseOverscan; + ryi *= ellipseOverscan; + rx2 = rxi * rxi; + rx22 = rx2 + rx2; + ry2 = ryi * ryi; + ry22 = ry2 + ry2; + curX = 0; + curY = ryi; + deltaX = 0; + deltaY = rx22 * curY; + + /* Points in segment 1 */ + error = ry2 - rx2 * ryi + rx2 / 4; + while (deltaX <= deltaY) + { + curX++; + deltaX += ry22; + + error += deltaX + ry2; + if (error >= 0) + { + curY--; + deltaY -= rx22; + error -= deltaY; + } + + scrX = curX / ellipseOverscan; + scrY = curY / ellipseOverscan; + if ((scrX != oldX && scrY == oldY) || (scrX != oldX && scrY != oldY)) { + result &= _drawQuadrants(renderer, x, y, scrX, scrY, f); + oldX = scrX; + oldY = scrY; + } + } + + /* Points in segment 2 */ + if (curY > 0) + { + curXp1 = curX + 1; + curYm1 = curY - 1; + error = ry2 * curX * curXp1 + ((ry2 + 3) / 4) + rx2 * curYm1 * curYm1 - rx2 * ry2; + while (curY > 0) + { + curY--; + deltaY -= rx22; + + error += rx2; + error -= deltaY; + + if (error <= 0) + { + curX++; + deltaX += ry22; + error += deltaX; + } + + scrX = curX / ellipseOverscan; + scrY = curY / ellipseOverscan; + if ((scrX != oldX && scrY == oldY) || (scrX != oldX && scrY != oldY)) { + oldY--; + for (;oldY >= scrY; oldY--) { + result &= _drawQuadrants(renderer, x, y, scrX, oldY, f); + /* prevent overdraw */ + if (f) { + oldY = scrY - 1; + } + } + oldX = scrX; + oldY = scrY; + } + } + + /* Remaining points in vertical */ + if (!f) { + oldY--; + for (;oldY >= 0; oldY--) { + result &= _drawQuadrants(renderer, x, y, scrX, oldY, f); + } + } + } + + return (result); +} + +/*! +\brief Draw ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the ellipse. +\param y Y coordinate of the center of the ellipse. +\param rx Horizontal radius in pixels of the ellipse. +\param ry Vertical radius in pixels of the ellipse. +\param color The color value of the ellipse to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool ellipseColor(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return _ellipseRGBA(renderer, x, y, rx, ry, c[0], c[1], c[2], c[3], false); +} + +/*! +\brief Draw ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the ellipse. +\param y Y coordinate of the center of the ellipse. +\param rx Horizontal radius in pixels of the ellipse. +\param ry Vertical radius in pixels of the ellipse. +\param r The red value of the ellipse to draw. +\param g The green value of the ellipse to draw. +\param b The blue value of the ellipse to draw. +\param a The alpha value of the ellipse to draw. + +\returns Returns true on success, false on failure. +*/ +bool ellipseRGBA(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return _ellipseRGBA(renderer, x, y, rx, ry, r, g, b, a, false); +} + +/* ----- Filled Circle */ + +/*! +\brief Draw filled circle with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the filled circle. +\param y Y coordinate of the center of the filled circle. +\param rad Radius in pixels of the filled circle. +\param color The color value of the filled circle to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool filledCircleColor(SDL_Renderer * renderer, float x, float y, float rad, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return filledEllipseRGBA(renderer, x, y, rad, rad, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw filled circle with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the filled circle. +\param y Y coordinate of the center of the filled circle. +\param rad Radius in pixels of the filled circle. +\param r The red value of the filled circle to draw. +\param g The green value of the filled circle to draw. +\param b The blue value of the filled circle to draw. +\param a The alpha value of the filled circle to draw. + +\returns Returns true on success, false on failure. +*/ +bool filledCircleRGBA(SDL_Renderer * renderer, float x, float y, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return _ellipseRGBA(renderer, x, y, rad, rad, r, g ,b, a, true); +} + + +/* ----- AA Ellipse */ + +/* Windows targets do not have lrint, so provide a local inline version */ +#if defined(_MSC_VER) && _MSC_VER < 1920 +/* Detect 64bit and use intrinsic version */ +#ifdef _M_X64 +#include +static __inline long + lrint(float f) +{ + return _mm_cvtss_si32(_mm_load_ss(&f)); +} +#elif defined(_M_IX86) +__inline long int + lrint (double flt) +{ + int intgr; + _asm + { + fld flt + fistp intgr + }; + return intgr; +} +#elif defined(_M_ARM) +#include +#pragma warning(push) +#pragma warning(disable: 4716) +__declspec(naked) long int + lrint (double flt) +{ + __emit(0xEC410B10); // fmdrr d0, r0, r1 + __emit(0xEEBD0B40); // ftosid s0, d0 + __emit(0xEE100A10); // fmrs r0, s0 + __emit(0xE12FFF1E); // bx lr +} +#pragma warning(pop) +#else +#error lrint needed for MSVC on non X86/AMD64/ARM targets. +#endif +#endif + +/*! +\brief Draw anti-aliased ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the aa-ellipse. +\param y Y coordinate of the center of the aa-ellipse. +\param rx Horizontal radius in pixels of the aa-ellipse. +\param ry Vertical radius in pixels of the aa-ellipse. +\param color The color value of the aa-ellipse to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool aaellipseColor(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return aaellipseRGBA(renderer, x, y, rx, ry, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw anti-aliased ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the aa-ellipse. +\param y Y coordinate of the center of the aa-ellipse. +\param rx Horizontal radius in pixels of the aa-ellipse. +\param ry Vertical radius in pixels of the aa-ellipse. +\param r The red value of the aa-ellipse to draw. +\param g The green value of the aa-ellipse to draw. +\param b The blue value of the aa-ellipse to draw. +\param a The alpha value of the aa-ellipse to draw. + +\returns Returns true on success, false on failure. +*/ +bool aaellipseRGBA(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result; + Sint32 i; + Sint32 a2, b2, ds, dt, dxt, t, s, d; + float xp, yp, xs, ys, dyt, od, xx, yy, xc2, yc2; + float cp; + double sab; + Uint8 weight, iweight; + + /* + * Sanity check radii + */ + if ((rx < 0) || (ry < 0)) { + return (false); + } + + /* + * Special cases for rx=0 and/or ry=0: draw a hline/vline/pixel + */ + if (rx == 0) { + if (ry == 0) { + return (pixelRGBA(renderer, x, y, r, g, b, a)); + } else { + return (vlineRGBA(renderer, x, y - ry, y + ry, r, g, b, a)); + } + } else { + if (ry == 0) { + return (hlineRGBA(renderer, x - rx, x + rx, y, r, g, b, a)); + } + } + + /* Variable setup */ + a2 = rx * rx; + b2 = ry * ry; + + ds = 2 * a2; + dt = 2 * b2; + + xc2 = 2 * x; + yc2 = 2 * y; + + sab = sqrt((double)(a2 + b2)); + od = (float)lrint(sab*0.01) + 1; /* introduce some overdraw */ + dxt = (float)lrint((double)a2 / sab) + od; + + t = 0; + s = -2 * a2 * ry; + d = 0; + + xp = x; + yp = y - ry; + + /* Draw */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + + /* "End points" */ + result &= pixelRGBA(renderer, xp, yp, r, g, b, a); + result &= pixelRGBA(renderer, xc2 - xp, yp, r, g, b, a); + result &= pixelRGBA(renderer, xp, yc2 - yp, r, g, b, a); + result &= pixelRGBA(renderer, xc2 - xp, yc2 - yp, r, g, b, a); + + for (i = 1; i <= dxt; i++) { + xp--; + d += t - b2; + + if (d >= 0) + ys = yp - 1; + else if ((d - s - a2) > 0) { + if ((2 * d - s - a2) >= 0) + ys = yp + 1; + else { + ys = yp; + yp++; + d -= s + a2; + s += ds; + } + } else { + yp++; + ys = yp + 1; + d -= s + a2; + s += ds; + } + + t -= dt; + + /* Calculate alpha */ + if (s != 0) { + cp = (float) abs(d) / (float) abs(s); + if (cp > 1.0) { + cp = 1.0; + } + } else { + cp = 1.0; + } + + /* Calculate weights */ + weight = (Uint8) (cp * 255); + iweight = 255 - weight; + + /* Upper half */ + xx = xc2 - xp; + result &= pixelRGBAWeight(renderer, xp, yp, r, g, b, a, iweight); + result &= pixelRGBAWeight(renderer, xx, yp, r, g, b, a, iweight); + + result &= pixelRGBAWeight(renderer, xp, ys, r, g, b, a, weight); + result &= pixelRGBAWeight(renderer, xx, ys, r, g, b, a, weight); + + /* Lower half */ + yy = yc2 - yp; + result &= pixelRGBAWeight(renderer, xp, yy, r, g, b, a, iweight); + result &= pixelRGBAWeight(renderer, xx, yy, r, g, b, a, iweight); + + yy = yc2 - ys; + result &= pixelRGBAWeight(renderer, xp, yy, r, g, b, a, weight); + result &= pixelRGBAWeight(renderer, xx, yy, r, g, b, a, weight); + } + + /* Replaces original approximation code dyt = abs(yp - yc); */ + dyt = (float)lrint((double)b2 / sab ) + od; + + for (i = 1; i <= dyt; i++) { + yp++; + d -= s + a2; + + if (d <= 0) + xs = xp + 1; + else if ((d + t - b2) < 0) { + if ((2 * d + t - b2) <= 0) + xs = xp - 1; + else { + xs = xp; + xp--; + d += t - b2; + t -= dt; + } + } else { + xp--; + xs = xp - 1; + d += t - b2; + t -= dt; + } + + s += ds; + + /* Calculate alpha */ + if (t != 0) { + cp = (float) abs(d) / (float) abs(t); + if (cp > 1.0) { + cp = 1.0; + } + } else { + cp = 1.0; + } + + /* Calculate weight */ + weight = (Uint8) (cp * 255); + iweight = 255 - weight; + + /* Left half */ + xx = xc2 - xp; + yy = yc2 - yp; + result &= pixelRGBAWeight(renderer, xp, yp, r, g, b, a, iweight); + result &= pixelRGBAWeight(renderer, xx, yp, r, g, b, a, iweight); + + result &= pixelRGBAWeight(renderer, xp, yy, r, g, b, a, iweight); + result &= pixelRGBAWeight(renderer, xx, yy, r, g, b, a, iweight); + + /* Right half */ + xx = xc2 - xs; + result &= pixelRGBAWeight(renderer, xs, yp, r, g, b, a, weight); + result &= pixelRGBAWeight(renderer, xx, yp, r, g, b, a, weight); + + result &= pixelRGBAWeight(renderer, xs, yy, r, g, b, a, weight); + result &= pixelRGBAWeight(renderer, xx, yy, r, g, b, a, weight); + } + + return (result); +} + +/* ---- Filled Ellipse */ + +/*! +\brief Draw filled ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the filled ellipse. +\param y Y coordinate of the center of the filled ellipse. +\param rx Horizontal radius in pixels of the filled ellipse. +\param ry Vertical radius in pixels of the filled ellipse. +\param color The color value of the filled ellipse to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool filledEllipseColor(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return _ellipseRGBA(renderer, x, y, rx, ry, c[0], c[1], c[2], c[3], true); +} + +/*! +\brief Draw filled ellipse with blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the filled ellipse. +\param y Y coordinate of the center of the filled ellipse. +\param rx Horizontal radius in pixels of the filled ellipse. +\param ry Vertical radius in pixels of the filled ellipse. +\param r The red value of the filled ellipse to draw. +\param g The green value of the filled ellipse to draw. +\param b The blue value of the filled ellipse to draw. +\param a The alpha value of the filled ellipse to draw. + +\returns Returns true on success, false on failure. +*/ +bool filledEllipseRGBA(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return _ellipseRGBA(renderer, x, y, rx, ry, r, g, b, a, true); +} + +/* ----- Pie */ + +/*! +\brief Internal float (low-speed) pie-calc implementation by drawing polygons. + +Note: Determines vertex array and uses polygon or filledPolygon drawing routines to render. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the pie. +\param y Y coordinate of the center of the pie. +\param rad Radius in pixels of the pie. +\param start Starting radius in degrees of the pie. +\param end Ending radius in degrees of the pie. +\param r The red value of the pie to draw. +\param g The green value of the pie to draw. +\param b The blue value of the pie to draw. +\param a The alpha value of the pie to draw. +\param filled Flag indicating if the pie should be filled (=1) or not (=0). + +\returns Returns true on success, false on failure. +*/ +/* TODO: rewrite algorithm; pie is not always accurate */ +bool _pieRGBA(SDL_Renderer * renderer, float x, float y, float rad, Sint32 start, Sint32 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a, bool filled) +{ + bool result; + double angle, start_angle, end_angle; + double deltaAngle; + double dr; + Sint32 numpoints, i; + float *vx, *vy; + + /* + * Sanity check radii + */ + if (rad < 0) { + return (false); + } + + /* + * Fixup angles + */ + start = start % 360; + end = end % 360; + + /* + * Special case for rad=0 - draw a point + */ + if (rad == 0) { + return (pixelRGBA(renderer, x, y, r, g, b, a)); + } + + /* + * Variable setup + */ + dr = (double) rad; + deltaAngle = 3.0 / dr; + start_angle = (double) start *(2.0 * M_PI / 360.0); + end_angle = (double) end *(2.0 * M_PI / 360.0); + if (start > end) { + end_angle += (2.0 * M_PI); + } + + /* We will always have at least 2 points */ + numpoints = 2; + + /* Count points (rather than calculating it) */ + angle = start_angle; + while (angle < end_angle) { + angle += deltaAngle; + numpoints++; + } + + /* Allocate combined vertex array */ + vx = vy = (float *) malloc(2 * sizeof(float) * numpoints); + if (vx == NULL) { + return (false); + } + + /* Update point to start of vy */ + vy += numpoints; + + /* Center */ + vx[0] = x; + vy[0] = y; + + /* First vertex */ + angle = start_angle; + vx[1] = x + (int) (dr * cos(angle)); + vy[1] = y + (int) (dr * sin(angle)); + + if (numpoints<3) + { + result = lineRGBA(renderer, vx[0], vy[0], vx[1], vy[1], r, g, b, a); + } + else + { + /* Calculate other vertices */ + i = 2; + angle = start_angle; + while (angle < end_angle) { + angle += deltaAngle; + if (angle>end_angle) + { + angle = end_angle; + } + vx[i] = x + (int) (dr * cos(angle)); + vy[i] = y + (int) (dr * sin(angle)); + i++; + } + + /* Draw */ + if (filled) { + result = filledPolygonRGBA(renderer, vx, vy, numpoints, r, g, b, a); + } else { + result = polygonRGBA(renderer, vx, vy, numpoints, r, g, b, a); + } + } + + /* Free combined vertex array */ + free(vx); + + return (result); +} + +/*! +\brief Draw pie (outline) with alpha blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the pie. +\param y Y coordinate of the center of the pie. +\param rad Radius in pixels of the pie. +\param start Starting radius in degrees of the pie. +\param end Ending radius in degrees of the pie. +\param color The color value of the pie to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool pieColor(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return _pieRGBA(renderer, x, y, rad, start, end, c[0], c[1], c[2], c[3], false); +} + +/*! +\brief Draw pie (outline) with alpha blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the pie. +\param y Y coordinate of the center of the pie. +\param rad Radius in pixels of the pie. +\param start Starting radius in degrees of the pie. +\param end Ending radius in degrees of the pie. +\param r The red value of the pie to draw. +\param g The green value of the pie to draw. +\param b The blue value of the pie to draw. +\param a The alpha value of the pie to draw. + +\returns Returns true on success, false on failure. +*/ +bool pieRGBA(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return _pieRGBA(renderer, x, y, rad, start, end, r, g, b, a, false); +} + +/*! +\brief Draw filled pie with alpha blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the filled pie. +\param y Y coordinate of the center of the filled pie. +\param rad Radius in pixels of the filled pie. +\param start Starting radius in degrees of the filled pie. +\param end Ending radius in degrees of the filled pie. +\param color The color value of the filled pie to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool filledPieColor(SDL_Renderer * renderer, float x, float y, float rad, Sint32 start, Sint32 end, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return _pieRGBA(renderer, x, y, rad, start, end, c[0], c[1], c[2], c[3], true); +} + +/*! +\brief Draw filled pie with alpha blending. + +\param renderer The renderer to draw on. +\param x X coordinate of the center of the filled pie. +\param y Y coordinate of the center of the filled pie. +\param rad Radius in pixels of the filled pie. +\param start Starting radius in degrees of the filled pie. +\param end Ending radius in degrees of the filled pie. +\param r The red value of the filled pie to draw. +\param g The green value of the filled pie to draw. +\param b The blue value of the filled pie to draw. +\param a The alpha value of the filled pie to draw. + +\returns Returns true on success, false on failure. +*/ +bool filledPieRGBA(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return _pieRGBA(renderer, x, y, rad, start, end, r, g, b, a, true); +} + +/* ------ Trigon */ + +/*! +\brief Draw trigon (triangle outline) with alpha blending. + +Note: Creates vertex array and uses polygon routine to render. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the trigon. +\param y1 Y coordinate of the first point of the trigon. +\param x2 X coordinate of the second point of the trigon. +\param y2 Y coordinate of the second point of the trigon. +\param x3 X coordinate of the third point of the trigon. +\param y3 Y coordinate of the third point of the trigon. +\param color The color value of the trigon to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool trigonColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, Uint32 color) +{ + float vx[3]; + float vy[3]; + + vx[0]=x1; + vx[1]=x2; + vx[2]=x3; + vy[0]=y1; + vy[1]=y2; + vy[2]=y3; + + return(polygonColor(renderer,vx,vy,3,color)); +} + +/*! +\brief Draw trigon (triangle outline) with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the trigon. +\param y1 Y coordinate of the first point of the trigon. +\param x2 X coordinate of the second point of the trigon. +\param y2 Y coordinate of the second point of the trigon. +\param x3 X coordinate of the third point of the trigon. +\param y3 Y coordinate of the third point of the trigon. +\param r The red value of the trigon to draw. +\param g The green value of the trigon to draw. +\param b The blue value of the trigon to draw. +\param a The alpha value of the trigon to draw. + +\returns Returns true on success, false on failure. +*/ +bool trigonRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, + Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + float vx[3]; + float vy[3]; + + vx[0]=x1; + vx[1]=x2; + vx[2]=x3; + vy[0]=y1; + vy[1]=y2; + vy[2]=y3; + + return(polygonRGBA(renderer,vx,vy,3,r,g,b,a)); +} + +/* ------ AA-Trigon */ + +/*! +\brief Draw anti-aliased trigon (triangle outline) with alpha blending. + +Note: Creates vertex array and uses aapolygon routine to render. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the aa-trigon. +\param y1 Y coordinate of the first point of the aa-trigon. +\param x2 X coordinate of the second point of the aa-trigon. +\param y2 Y coordinate of the second point of the aa-trigon. +\param x3 X coordinate of the third point of the aa-trigon. +\param y3 Y coordinate of the third point of the aa-trigon. +\param color The color value of the aa-trigon to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool aatrigonColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, Uint32 color) +{ + float vx[3]; + float vy[3]; + + vx[0]=x1; + vx[1]=x2; + vx[2]=x3; + vy[0]=y1; + vy[1]=y2; + vy[2]=y3; + + return(aapolygonColor(renderer,vx,vy,3,color)); +} + +/*! +\brief Draw anti-aliased trigon (triangle outline) with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the aa-trigon. +\param y1 Y coordinate of the first point of the aa-trigon. +\param x2 X coordinate of the second point of the aa-trigon. +\param y2 Y coordinate of the second point of the aa-trigon. +\param x3 X coordinate of the third point of the aa-trigon. +\param y3 Y coordinate of the third point of the aa-trigon. +\param r The red value of the aa-trigon to draw. +\param g The green value of the aa-trigon to draw. +\param b The blue value of the aa-trigon to draw. +\param a The alpha value of the aa-trigon to draw. + +\returns Returns true on success, false on failure. +*/ +bool aatrigonRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, + Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + float vx[3]; + float vy[3]; + + vx[0]=x1; + vx[1]=x2; + vx[2]=x3; + vy[0]=y1; + vy[1]=y2; + vy[2]=y3; + + return(aapolygonRGBA(renderer,vx,vy,3,r,g,b,a)); +} + +/* ------ Filled Trigon */ + +/*! +\brief Draw filled trigon (triangle) with alpha blending. + +Note: Creates vertex array and uses aapolygon routine to render. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the filled trigon. +\param y1 Y coordinate of the first point of the filled trigon. +\param x2 X coordinate of the second point of the filled trigon. +\param y2 Y coordinate of the second point of the filled trigon. +\param x3 X coordinate of the third point of the filled trigon. +\param y3 Y coordinate of the third point of the filled trigon. +\param color The color value of the filled trigon to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool filledTrigonColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, Uint32 color) +{ + float vx[3]; + float vy[3]; + + vx[0]=x1; + vx[1]=x2; + vx[2]=x3; + vy[0]=y1; + vy[1]=y2; + vy[2]=y3; + + return(filledPolygonColor(renderer,vx,vy,3,color)); +} + +/*! +\brief Draw filled trigon (triangle) with alpha blending. + +Note: Creates vertex array and uses aapolygon routine to render. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the filled trigon. +\param y1 Y coordinate of the first point of the filled trigon. +\param x2 X coordinate of the second point of the filled trigon. +\param y2 Y coordinate of the second point of the filled trigon. +\param x3 X coordinate of the third point of the filled trigon. +\param y3 Y coordinate of the third point of the filled trigon. +\param r The red value of the filled trigon to draw. +\param g The green value of the filled trigon to draw. +\param b The blue value of the filled trigon to draw. +\param a The alpha value of the filled trigon to draw. + +\returns Returns true on success, false on failure. +*/ +bool filledTrigonRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, + Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + float vx[3]; + float vy[3]; + + vx[0]=x1; + vx[1]=x2; + vx[2]=x3; + vy[0]=y1; + vy[1]=y2; + vy[2]=y3; + + return(filledPolygonRGBA(renderer,vx,vy,3,r,g,b,a)); +} + +/* ---- Polygon */ + +/*! +\brief Draw polygon with alpha blending. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the polygon. +\param vy Vertex array containing Y coordinates of the points of the polygon. +\param n Number of points in the vertex array. Minimum number is 3. +\param color The color value of the polygon to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool polygonColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return polygonRGBA(renderer, vx, vy, n, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw polygon with the currently set color and blend mode. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the polygon. +\param vy Vertex array containing Y coordinates of the points of the polygon. +\param n Number of points in the vertex array. Minimum number is 3. + +\returns Returns true on success, false on failure. +*/ +bool polygon(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n) +{ + /* + * Draw + */ + bool result = true; + Sint32 i, nn; + SDL_FPoint* points; + + /* + * Vertex array NULL check + */ + if (vx == NULL) { + return (false); + } + if (vy == NULL) { + return (false); + } + + /* + * Sanity check + */ + if (n < 3) { + return (false); + } + + /* + * Create array of points + */ + nn = n + 1; + points = (SDL_FPoint*)malloc(sizeof(SDL_FPoint) * nn); + if (points == NULL) + { + return false; + } + for (i=0; ib. +*/ +Sint32 _gfxPrimitivesCompareInt(const void *a, const void *b) +{ + return (*(const Sint32 *) a) - (*(const Sint32 *) b); +} + +/*! +\brief Global vertex array to use if optional parameters are not given in filledPolygonMT calls. + +Note: Used for non-multithreaded (default) operation of filledPolygonMT. +*/ +static Sint32 *gfxPrimitivesPolyIntsGlobal = NULL; + +/*! +\brief Flag indicating if global vertex array was already allocated. + +Note: Used for non-multithreaded (default) operation of filledPolygonMT. +*/ +static bool gfxPrimitivesPolyAllocatedGlobal = false; + +/*! +\brief Draw filled polygon with alpha blending (multi-threaded capable). + +Note: The last two parameters are optional; but are required for multithreaded operation. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the filled polygon. +\param vy Vertex array containing Y coordinates of the points of the filled polygon. +\param n Number of points in the vertex array. Minimum number is 3. +\param r The red value of the filled polygon to draw. +\param g The green value of the filled polygon to draw. +\param b The blue value of the filled polygon to draw. +\param a The alpha value of the filled polygon to draw. +\param polyInts Preallocated, temporary vertex array used for sorting vertices. Required for multithreaded operation; set to NULL otherwise. +\param polyAllocated Flag indicating if temporary vertex array was allocated. Required for multithreaded operation; set to NULL otherwise. + +\returns Returns true on success, false on failure. +*/ +bool filledPolygonRGBAMT(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint8 r, Uint8 g, Uint8 b, Uint8 a, Sint32 **polyInts, bool *polyAllocated) +{ + bool result; + Sint32 i; + Sint32 y, xa, xb; + Sint32 miny, maxy; + Sint32 x1, y1; + Sint32 x2, y2; + Sint32 ind1, ind2; + Sint32 ints; + Sint32 *gfxPrimitivesPolyInts = NULL; + Sint32 *gfxPrimitivesPolyIntsNew = NULL; + bool gfxPrimitivesPolyAllocated = false; + + /* + * Vertex array NULL check + */ + if (vx == NULL) { + return (false); + } + if (vy == NULL) { + return (false); + } + + /* + * Sanity check number of edges + */ + if (n < 3) { + return false; + } + + /* + * Map polygon cache + */ + if ((polyInts==NULL) || (polyAllocated==NULL)) { + /* Use global cache */ + gfxPrimitivesPolyInts = gfxPrimitivesPolyIntsGlobal; + gfxPrimitivesPolyAllocated = gfxPrimitivesPolyAllocatedGlobal; + } else { + /* Use local cache */ + gfxPrimitivesPolyInts = *polyInts; + gfxPrimitivesPolyAllocated = *polyAllocated; + } + + /* + * Allocate temp array, only grow array + */ + if (!gfxPrimitivesPolyAllocated) { + gfxPrimitivesPolyInts = (Sint32 *) malloc(sizeof(int) * n); + gfxPrimitivesPolyAllocated = n; + } else { + if (gfxPrimitivesPolyAllocated < n) { + gfxPrimitivesPolyIntsNew = (Sint32 *) realloc(gfxPrimitivesPolyInts, sizeof(int) * n); + if (!gfxPrimitivesPolyIntsNew) { + if (!gfxPrimitivesPolyInts) { + free(gfxPrimitivesPolyInts); + gfxPrimitivesPolyInts = NULL; + } + gfxPrimitivesPolyAllocated = 0; + } else { + gfxPrimitivesPolyInts = gfxPrimitivesPolyIntsNew; + gfxPrimitivesPolyAllocated = n; + } + } + } + + /* + * Check temp array + */ + if (gfxPrimitivesPolyInts==NULL) { + gfxPrimitivesPolyAllocated = 0; + } + + /* + * Update cache variables + */ + if ((polyInts==NULL) || (polyAllocated==NULL)) { + gfxPrimitivesPolyIntsGlobal = gfxPrimitivesPolyInts; + gfxPrimitivesPolyAllocatedGlobal = gfxPrimitivesPolyAllocated; + } else { + *polyInts = gfxPrimitivesPolyInts; + *polyAllocated = gfxPrimitivesPolyAllocated; + } + + /* + * Check temp array again + */ + if (gfxPrimitivesPolyInts==NULL) { + return false; + } + + /* + * Determine Y maxima + */ + miny = vy[0]; + maxy = vy[0]; + for (i = 1; (i < n); i++) { + if (vy[i] < miny) { + miny = vy[i]; + } else if (vy[i] > maxy) { + maxy = vy[i]; + } + } + + /* + * Draw, scanning y + */ + for (y = miny; (y <= maxy); y++) { + ints = 0; + for (i = 0; (i < n); i++) { + if (!i) { + ind1 = n - 1; + ind2 = 0; + } else { + ind1 = i - 1; + ind2 = i; + } + y1 = vy[ind1]; + y2 = vy[ind2]; + if (y1 < y2) { + x1 = vx[ind1]; + x2 = vx[ind2]; + } else if (y1 > y2) { + y2 = vy[ind1]; + y1 = vy[ind2]; + x2 = vx[ind1]; + x1 = vx[ind2]; + } else { + continue; + } + if ( ((y >= y1) && (y < y2)) || ((y == maxy) && (y > y1) && (y <= y2)) ) { + gfxPrimitivesPolyInts[ints++] = ((65536 * (y - y1)) / (y2 - y1)) * (x2 - x1) + (65536 * x1); + } + } + + qsort(gfxPrimitivesPolyInts, ints, sizeof(int), _gfxPrimitivesCompareInt); + + /* + * Set color + */ + result = true; + result &= SDL_SetRenderDrawBlendMode(renderer, (a == 255) ? SDL_BLENDMODE_NONE : SDL_BLENDMODE_BLEND); + result &= SDL_SetRenderDrawColor(renderer, r, g, b, a); + + for (i = 0; (i < ints); i += 2) { + xa = gfxPrimitivesPolyInts[i] + 1; + xa = (xa >> 16) + ((xa & 32768) >> 15); + xb = gfxPrimitivesPolyInts[i+1] - 1; + xb = (xb >> 16) + ((xb & 32768) >> 15); + result &= hline(renderer, xa, xb, y); + } + } + + return result; +} + +/*! +\brief Draw filled polygon with alpha blending. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the filled polygon. +\param vy Vertex array containing Y coordinates of the points of the filled polygon. +\param n Number of points in the vertex array. Minimum number is 3. +\param color The color value of the filled polygon to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool filledPolygonColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return filledPolygonRGBAMT(renderer, vx, vy, n, c[0], c[1], c[2], c[3], NULL, NULL); +} + +/*! +\brief Draw filled polygon with alpha blending. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the filled polygon. +\param vy Vertex array containing Y coordinates of the points of the filled polygon. +\param n Number of points in the vertex array. Minimum number is 3. +\param r The red value of the filled polygon to draw. +\param g The green value of the filled polygon to draw. +\param b The blue value of the filed polygon to draw. +\param a The alpha value of the filled polygon to draw. + +\returns Returns true on success, false on failure. +*/ +bool filledPolygonRGBA(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + return filledPolygonRGBAMT(renderer, vx, vy, n, r, g, b, a, NULL, NULL); +} + +/* ---- Textured Polygon */ + +/*! +\brief Internal function to draw a textured horizontal line. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point (i.e. left) of the line. +\param x2 X coordinate of the second point (i.e. right) of the line. +\param y Y coordinate of the points of the line. +\param texture The texture to retrieve color information from. +\param texture_w The width of the texture. +\param texture_h The height of the texture. +\param texture_dx The X offset for the texture lookup. +\param texture_dy The Y offset for the textured lookup. + +\returns Returns true on success, false on failure. +*/ +bool _HLineTextured(SDL_Renderer *renderer, float x1, float x2, float y, SDL_Texture *texture, Sint32 texture_w, Sint32 texture_h, Sint32 texture_dx, Sint32 texture_dy) +{ + float w; + float xtmp; + bool result = true; + Sint32 texture_x_walker; + Sint32 texture_y_start; + SDL_FRect source_rect,dst_rect; + Sint32 pixels_written,write_width; + + /* + * Swap x1, x2 if required to ensure x1<=x2 + */ + if (x1 > x2) { + xtmp = x1; + x1 = x2; + x2 = xtmp; + } + + /* + * Calculate width to draw + */ + w = x2 - x1 + 1; + + /* + * Determine where in the texture we start drawing + */ + texture_x_walker = ((int)x1 - texture_dx) % texture_w; + if (texture_x_walker < 0){ + texture_x_walker = texture_w + texture_x_walker ; + } + + texture_y_start = ((int)y + texture_dy) % texture_h; + if (texture_y_start < 0){ + texture_y_start = texture_h + texture_y_start; + } + + /* setup the source rectangle; we are only drawing one horizontal line */ + source_rect.y = texture_y_start; + source_rect.x = texture_x_walker; + source_rect.h = 1; + + /* we will draw to the current y */ + dst_rect.y = y; + dst_rect.h = 1; + + /* if there are enough pixels left in the current row of the texture */ + /* draw it all at once */ + if (w <= texture_w -texture_x_walker){ + source_rect.w = w; + source_rect.x = texture_x_walker; + dst_rect.x= x1; + dst_rect.w = source_rect.w; + result = SDL_RenderTexture(renderer, texture, &source_rect, &dst_rect); + } else { + /* we need to draw multiple times */ + /* draw the first segment */ + pixels_written = texture_w - texture_x_walker; + source_rect.w = pixels_written; + source_rect.x = texture_x_walker; + dst_rect.x= x1; + dst_rect.w = source_rect.w; + result &= SDL_RenderTexture(renderer, texture, &source_rect, &dst_rect); + write_width = texture_w; + + /* now draw the rest */ + /* set the source x to 0 */ + source_rect.x = 0; + while (pixels_written < w){ + if (write_width >= w - pixels_written) { + write_width = w - pixels_written; + } + source_rect.w = write_width; + dst_rect.x = x1 + pixels_written; + dst_rect.w = source_rect.w; + result &= SDL_RenderTexture(renderer, texture, &source_rect, &dst_rect); + pixels_written += write_width; + } + } + + return result; +} + +/*! +\brief Draws a polygon filled with the given texture (Multi-Threading Capable). + +\param renderer The renderer to draw on. +\param vx array of x vector components +\param vy array of x vector components +\param n the amount of vectors in the vx and vy array +\param texture the sdl surface to use to fill the polygon +\param texture_dx the offset of the texture relative to the screeen. If you move the polygon 10 pixels +to the left and want the texture to apear the same you need to increase the texture_dx value +\param texture_dy see texture_dx +\param polyInts Preallocated temp array storage for vertex sorting (used for multi-threaded operation) +\param polyAllocated Flag indicating oif the temp array was allocated (used for multi-threaded operation) + +\returns Returns true on success, false on failure. +*/ +bool texturedPolygonMT(SDL_Renderer *renderer, const float * vx, const float * vy, Sint32 n, + SDL_Surface * texture, Sint32 texture_dx, Sint32 texture_dy, Sint32 **polyInts, bool *polyAllocated) +{ + bool result; + Sint32 i; + Sint32 y, xa, xb; + Sint32 minx,maxx,miny, maxy; + Sint32 x1, y1; + Sint32 x2, y2; + Sint32 ind1, ind2; + Sint32 ints; + Sint32 *gfxPrimitivesPolyInts = NULL; + Sint32 *gfxPrimitivesPolyIntsTemp = NULL; + Sint32 gfxPrimitivesPolyAllocated = 0; + SDL_Texture *textureAsTexture = NULL; + + /* + * Sanity check number of edges + */ + if (n < 3) { + return false; + } + + /* + * Map polygon cache + */ + if ((polyInts==NULL) || (polyAllocated==NULL)) { + /* Use global cache */ + gfxPrimitivesPolyInts = gfxPrimitivesPolyIntsGlobal; + gfxPrimitivesPolyAllocated = gfxPrimitivesPolyAllocatedGlobal; + } else { + /* Use local cache */ + gfxPrimitivesPolyInts = *polyInts; + gfxPrimitivesPolyAllocated = *polyAllocated; + } + + /* + * Allocate temp array, only grow array + */ + if (!gfxPrimitivesPolyAllocated) { + gfxPrimitivesPolyInts = (Sint32 *) malloc(sizeof(int) * n); + gfxPrimitivesPolyAllocated = n; + } else { + if (gfxPrimitivesPolyAllocated < n) { + gfxPrimitivesPolyIntsTemp = (Sint32 *) realloc(gfxPrimitivesPolyInts, sizeof(int) * n); + if (gfxPrimitivesPolyIntsTemp == NULL) { + /* Realloc failed - keeps original memory block, but fails this operation */ + return(false); + } + gfxPrimitivesPolyInts = gfxPrimitivesPolyIntsTemp; + gfxPrimitivesPolyAllocated = n; + } + } + + /* + * Check temp array + */ + if (gfxPrimitivesPolyInts==NULL) { + gfxPrimitivesPolyAllocated = 0; + } + + /* + * Update cache variables + */ + if ((polyInts==NULL) || (polyAllocated==NULL)) { + gfxPrimitivesPolyIntsGlobal = gfxPrimitivesPolyInts; + gfxPrimitivesPolyAllocatedGlobal = gfxPrimitivesPolyAllocated; + } else { + *polyInts = gfxPrimitivesPolyInts; + *polyAllocated = gfxPrimitivesPolyAllocated; + } + + /* + * Check temp array again + */ + if (gfxPrimitivesPolyInts==NULL) { + return false; + } + + /* + * Determine X,Y minima,maxima + */ + miny = vy[0]; + maxy = vy[0]; + minx = vx[0]; + maxx = vx[0]; + for (i = 1; (i < n); i++) { + if (vy[i] < miny) { + miny = vy[i]; + } else if (vy[i] > maxy) { + maxy = vy[i]; + } + if (vx[i] < minx) { + minx = vx[i]; + } else if (vx[i] > maxx) { + maxx = vx[i]; + } + } + + /* Create texture for drawing */ + textureAsTexture = SDL_CreateTextureFromSurface(renderer, texture); + if (textureAsTexture == NULL) + { + return false; + } + SDL_SetTextureBlendMode(textureAsTexture, SDL_BLENDMODE_BLEND); + + /* + * Draw, scanning y + */ + result = true; + for (y = miny; (y <= maxy); y++) { + ints = 0; + for (i = 0; (i < n); i++) { + if (!i) { + ind1 = n - 1; + ind2 = 0; + } else { + ind1 = i - 1; + ind2 = i; + } + y1 = vy[ind1]; + y2 = vy[ind2]; + if (y1 < y2) { + x1 = vx[ind1]; + x2 = vx[ind2]; + } else if (y1 > y2) { + y2 = vy[ind1]; + y1 = vy[ind2]; + x2 = vx[ind1]; + x1 = vx[ind2]; + } else { + continue; + } + if ( ((y >= y1) && (y < y2)) || ((y == maxy) && (y > y1) && (y <= y2)) ) { + gfxPrimitivesPolyInts[ints++] = ((65536 * (y - y1)) / (y2 - y1)) * (x2 - x1) + (65536 * x1); + } + } + + qsort(gfxPrimitivesPolyInts, ints, sizeof(int), _gfxPrimitivesCompareInt); + + for (i = 0; (i < ints); i += 2) { + xa = gfxPrimitivesPolyInts[i] + 1; + xa = (xa >> 16) + ((xa & 32768) >> 15); + xb = gfxPrimitivesPolyInts[i+1] - 1; + xb = (xb >> 16) + ((xb & 32768) >> 15); + result &= _HLineTextured(renderer, xa, xb, y, textureAsTexture, texture->w, texture->h, texture_dx, texture_dy); + } + } + + SDL_DestroyTexture(textureAsTexture); + + return result; +} + +/*! +\brief Draws a polygon filled with the given texture. + +This standard version is calling multithreaded versions with NULL cache parameters. + +\param renderer The renderer to draw on. +\param vx array of x vector components +\param vy array of x vector components +\param n the amount of vectors in the vx and vy array +\param texture the sdl surface to use to fill the polygon +\param texture_dx the offset of the texture relative to the screeen. if you move the polygon 10 pixels +to the left and want the texture to apear the same you need to increase the texture_dx value +\param texture_dy see texture_dx + +\returns Returns true on success, false on failure. +*/ +bool texturedPolygon(SDL_Renderer *renderer, const float * vx, const float * vy, Sint32 n, SDL_Surface *texture, Sint32 texture_dx, Sint32 texture_dy) +{ + /* + * Draw + */ + return (texturedPolygonMT(renderer, vx, vy, n, texture, texture_dx, texture_dy, NULL, NULL)); +} + +/* ---- Character */ + +/*! +\brief Global cache for NxM pixel font textures created at runtime. +*/ +static SDL_Texture *gfxPrimitivesFont[256]; + +/*! +\brief Pointer to the current font data. Default is a 8x8 pixel internal font. +*/ +static const unsigned char *currentFontdata = gfxPrimitivesFontdata; + +/*! +\brief Width of the current font. Default is 8. +*/ +static Uint32 charWidth = 8; + +/*! +\brief Height of the current font. Default is 8. +*/ +static Uint32 charHeight = 8; + +/*! +\brief Width for rendering. Autocalculated. +*/ +static Uint32 charWidthLocal = 8; + +/*! +\brief Height for rendering. Autocalculated. +*/ +static Uint32 charHeightLocal = 8; + +/*! +\brief Pitch of the current font in bytes. Default is 1. +*/ +static Uint32 charPitch = 1; + +/*! +\brief Characters 90deg clockwise rotations. Default is 0. Max is 3. +*/ +static Uint32 charRotation = 0; + +/*! +\brief Character data size in bytes of the current font. Default is 8. +*/ +static Uint32 charSize = 8; + +/*! +\brief Sets or resets the current global font data. + +The font data array is organized in follows: +[fontdata] = [character 0][character 1]...[character 255] where +[character n] = [byte 1 row 1][byte 2 row 1]...[byte {pitch} row 1][byte 1 row 2] ...[byte {pitch} row height] where +[byte n] = [bit 0]...[bit 7] where +[bit n] = [0 for transparent pixel|1 for colored pixel] + +\param fontdata Pointer to array of font data. Set to NULL, to reset global font to the default 8x8 font. +\param cw Width of character in bytes. Ignored if fontdata==NULL. +\param ch Height of character in bytes. Ignored if fontdata==NULL. +*/ +void gfxPrimitivesSetFont(const void *fontdata, Uint32 cw, Uint32 ch) +{ + Sint32 i; + + if ((fontdata) && (cw) && (ch)) { + currentFontdata = (unsigned char *)fontdata; + charWidth = cw; + charHeight = ch; + } else { + currentFontdata = gfxPrimitivesFontdata; + charWidth = 8; + charHeight = 8; + } + + charPitch = (charWidth+7)/8; + charSize = charPitch * charHeight; + + /* Maybe flip width/height for rendering */ + if ((charRotation==1) || (charRotation==3)) + { + charWidthLocal = charHeight; + charHeightLocal = charWidth; + } + else + { + charWidthLocal = charWidth; + charHeightLocal = charHeight; + } + + /* Clear character cache */ + for (i = 0; i < 256; i++) { + if (gfxPrimitivesFont[i]) { + SDL_DestroyTexture(gfxPrimitivesFont[i]); + gfxPrimitivesFont[i] = NULL; + } + } +} + +/*! +\brief Sets current global font character rotation steps. + +Default is 0 (no rotation). 1 = 90deg clockwise. 2 = 180deg clockwise. 3 = 270deg clockwise. +Changing the rotation, will reset the character cache. + +\param rotation Number of 90deg clockwise steps to rotate +*/ +void gfxPrimitivesSetFontRotation(Uint32 rotation) +{ + Sint32 i; + + rotation = rotation & 3; + if (charRotation != rotation) + { + /* Store rotation */ + charRotation = rotation; + + /* Maybe flip width/height for rendering */ + if ((charRotation==1) || (charRotation==3)) + { + charWidthLocal = charHeight; + charHeightLocal = charWidth; + } + else + { + charWidthLocal = charWidth; + charHeightLocal = charHeight; + } + + /* Clear character cache */ + for (i = 0; i < 256; i++) { + if (gfxPrimitivesFont[i]) { + SDL_DestroyTexture(gfxPrimitivesFont[i]); + gfxPrimitivesFont[i] = NULL; + } + } + } +} + +/*! +\brief Draw a character of the currently set font. + +\param renderer The Renderer to draw on. +\param x X (horizontal) coordinate of the upper left corner of the character. +\param y Y (vertical) coordinate of the upper left corner of the character. +\param c The character to draw. +\param r The red value of the character to draw. +\param g The green value of the character to draw. +\param b The blue value of the character to draw. +\param a The alpha value of the character to draw. + +\returns Returns true on success, false on failure. +*/ +bool characterRGBA(SDL_Renderer *renderer, float x, float y, char c, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + SDL_FRect srect; + SDL_FRect drect; + bool result; + Uint32 ix, iy; + const unsigned char *charpos; + Uint8 *curpos; + Uint8 patt, mask; + Uint8 *linepos; + Uint32 pitch; + SDL_Surface *character; + SDL_Surface *rotatedCharacter; + Uint32 ci; + + /* + * Setup source rectangle + */ + srect.x = 0; + srect.y = 0; + srect.w = charWidthLocal; + srect.h = charHeightLocal; + + /* + * Setup destination rectangle + */ + drect.x = x; + drect.y = y; + drect.w = charWidthLocal; + drect.h = charHeightLocal; + + /* Character index in cache */ + ci = (unsigned char) c; + + /* + * Create new charWidth x charHeight bitmap surface if not already present. + * Might get rotated later. + */ + if (gfxPrimitivesFont[ci] == NULL) { + /* + * Redraw character into surface + */ + character = SDL_CreateSurface( + charWidth, charHeight, SDL_PIXELFORMAT_RGBA8888); + if (character == NULL) { + return (false); + } + + charpos = currentFontdata + ci * charSize; + linepos = (Uint8 *)character->pixels; + pitch = character->pitch; + + /* + * Drawing loop + */ + patt = 0; + for (iy = 0; iy < charHeight; iy++) { + mask = 0x00; + curpos = linepos; + for (ix = 0; ix < charWidth; ix++) { + if (!(mask >>= 1)) { + patt = *charpos++; + mask = 0x80; + } + if (patt & mask) { + *(Uint32 *)curpos = 0xffffffff; + } else { + *(Uint32 *)curpos = 0; + } + curpos += 4; + } + linepos += pitch; + } + + /* Maybe rotate and replace cached image */ + if (charRotation>0) + { + rotatedCharacter = rotateSurface90Degrees(character, charRotation); + SDL_DestroySurface(character); + character = rotatedCharacter; + } + + /* Convert temp surface into texture */ + gfxPrimitivesFont[ci] = SDL_CreateTextureFromSurface(renderer, character); + SDL_DestroySurface(character); + + /* + * Check pointer + */ + if (gfxPrimitivesFont[ci] == NULL) { + return (false); + } + } + + /* + * Set color + */ + result = true; + result &= SDL_SetTextureColorMod(gfxPrimitivesFont[ci], r, g, b); + result &= SDL_SetTextureAlphaMod(gfxPrimitivesFont[ci], a); + + /* + * Draw texture onto destination + */ + result &= SDL_RenderTexture(renderer, gfxPrimitivesFont[ci], &srect, &drect); + + return (result); +} + + +/*! +\brief Draw a character of the currently set font. + +\param renderer The renderer to draw on. +\param x X (horizontal) coordinate of the upper left corner of the character. +\param y Y (vertical) coordinate of the upper left corner of the character. +\param c The character to draw. +\param color The color value of the character to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool characterColor(SDL_Renderer * renderer, float x, float y, char c, Uint32 color) +{ + Uint8 *co = (Uint8 *)&color; + return characterRGBA(renderer, x, y, c, co[0], co[1], co[2], co[3]); +} + + +/*! +\brief Draw a string in the currently set font. + +The spacing between consequtive characters in the string is the fixed number of pixels +of the character width of the current global font. + +\param renderer The renderer to draw on. +\param x X (horizontal) coordinate of the upper left corner of the string. +\param y Y (vertical) coordinate of the upper left corner of the string. +\param s The string to draw. +\param color The color value of the string to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool stringColor(SDL_Renderer * renderer, float x, float y, const char *s, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return stringRGBA(renderer, x, y, s, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw a string in the currently set font. + +\param renderer The renderer to draw on. +\param x X (horizontal) coordinate of the upper left corner of the string. +\param y Y (vertical) coordinate of the upper left corner of the string. +\param s The string to draw. +\param r The red value of the string to draw. +\param g The green value of the string to draw. +\param b The blue value of the string to draw. +\param a The alpha value of the string to draw. + +\returns Returns true on success, false on failure. +*/ +bool stringRGBA(SDL_Renderer * renderer, float x, float y, const char *s, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result = true; + float curx = x; + float cury = y; + const char *curchar = s; + + while (*curchar && result) { + result &= characterRGBA(renderer, curx, cury, *curchar, r, g, b, a); + switch (charRotation) + { + case 0: + curx += charWidthLocal; + break; + case 2: + curx -= charWidthLocal; + break; + case 1: + cury += charHeightLocal; + break; + case 3: + cury -= charHeightLocal; + break; + } + curchar++; + } + + return (result); +} + +/* ---- Bezier curve */ + +/*! +\brief Internal function to calculate bezier interpolator of data array with ndata values at position 't'. + +\param data Array of values. +\param ndata Size of array. +\param t Position for which to calculate interpolated value. t should be between [0, ndata]. + +\returns Interpolated value at position t, value[0] when t<0, value[n-1] when t>n. +*/ +double _evaluateBezier (double *data, Sint32 ndata, double t) +{ + double mu, result; + Sint32 n,k,kn,nn,nkn; + double blend,muk,munk; + + /* Sanity check bounds */ + if (t<0.0) { + return(data[0]); + } + if (t>=(double)ndata) { + return(data[ndata-1]); + } + + /* Adjust t to the range 0.0 to 1.0 */ + mu=t/(double)ndata; + + /* Calculate interpolate */ + n=ndata-1; + result=0.0; + muk = 1; + munk = pow(1-mu,(double)n); + for (k=0;k<=n;k++) { + nn = n; + kn = k; + nkn = n - k; + blend = muk * munk; + muk *= mu; + munk /= (1-mu); + while (nn >= 1) { + blend *= nn; + nn--; + if (kn > 1) { + blend /= (double)kn; + kn--; + } + if (nkn > 1) { + blend /= (double)nkn; + nkn--; + } + } + result += data[k] * blend; + } + + return (result); +} + +/*! +\brief Draw a bezier curve with alpha blending. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the bezier curve. +\param vy Vertex array containing Y coordinates of the points of the bezier curve. +\param n Number of points in the vertex array. Minimum number is 3. +\param s Number of steps for the interpolation. Minimum number is 2. +\param color The color value of the bezier curve to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool bezierColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Sint32 s, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return bezierRGBA(renderer, vx, vy, n, s, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw a bezier curve with alpha blending. + +\param renderer The renderer to draw on. +\param vx Vertex array containing X coordinates of the points of the bezier curve. +\param vy Vertex array containing Y coordinates of the points of the bezier curve. +\param n Number of points in the vertex array. Minimum number is 3. +\param s Number of steps for the interpolation. Minimum number is 2. +\param r The red value of the bezier curve to draw. +\param g The green value of the bezier curve to draw. +\param b The blue value of the bezier curve to draw. +\param a The alpha value of the bezier curve to draw. + +\returns Returns true on success, false on failure. +*/ +bool bezierRGBA(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Sint32 s, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + bool result; + Sint32 i; + double *x, *y, t, stepsize; + float x1, y1, x2, y2; + + /* + * Sanity check + */ + if (n < 3) { + return (false); + } + if (s < 2) { + return (false); + } + + /* + * Variable setup + */ + stepsize=(double)1.0/(double)s; + + /* Transfer vertices into float arrays */ + if ((x=(double *)malloc(sizeof(double)*(n+1)))==NULL) { + return(false); + } + if ((y=(double *)malloc(sizeof(double)*(n+1)))==NULL) { + free(x); + return(false); + } + for (i=0; i0. +\param color The color value of the line to draw (0xRRGGBBAA). + +\returns Returns true on success, false on failure. +*/ +bool thickLineColor(SDL_Renderer *renderer, float x1, float y1, float x2, float y2, float width, Uint32 color) +{ + Uint8 *c = (Uint8 *)&color; + return thickLineRGBA(renderer, x1, y1, x2, y2, width, c[0], c[1], c[2], c[3]); +} + +/*! +\brief Draw a thick line with alpha blending. + +\param renderer The renderer to draw on. +\param x1 X coordinate of the first point of the line. +\param y1 Y coordinate of the first point of the line. +\param x2 X coordinate of the second point of the line. +\param y2 Y coordinate of the second point of the line. +\param width Width of the line in pixels. Must be >0. +\param r The red value of the character to draw. +\param g The green value of the character to draw. +\param b The blue value of the character to draw. +\param a The alpha value of the character to draw. + +\returns Returns true on success, false on failure. +*/ +bool thickLineRGBA(SDL_Renderer *renderer, float x1, float y1, float x2, float y2, float width, Uint8 r, Uint8 g, Uint8 b, Uint8 a) +{ + Sint32 wh; + double dx, dy, dx1, dy1, dx2, dy2; + double l, wl2, nx, ny, ang, adj; + float px[4], py[4]; + + if (renderer == NULL) { + return false; + } + + if (width < 1) { + return false; + } + + /* Special case: thick "point" */ + if ((x1 == x2) && (y1 == y2)) { + wh = width / 2; + return boxRGBA(renderer, x1 - wh, y1 - wh, x2 + width, y2 + width, r, g, b, a); + } + + /* Special case: width == 1 */ + if (width == 1) { + return lineRGBA(renderer, x1, y1, x2, y2, r, g, b, a); + } + + /* Calculate offsets for sides */ + dx = (double)(x2 - x1); + dy = (double)(y2 - y1); + l = SDL_sqrt(dx*dx + dy*dy); + ang = SDL_atan2(dx, dy); + adj = 0.1 + 0.9 * SDL_fabs(SDL_cos(2.0 * ang)); + wl2 = ((double)width - adj)/(2.0 * l); + nx = dx * wl2; + ny = dy * wl2; + + /* Build polygon */ + dx1 = (double)x1; + dy1 = (double)y1; + dx2 = (double)x2; + dy2 = (double)y2; + px[0] = (float)(dx1 + ny); + px[1] = (float)(dx1 - ny); + px[2] = (float)(dx2 - ny); + px[3] = (float)(dx2 + ny); + py[0] = (float)(dy1 - nx); + py[1] = (float)(dy1 + nx); + py[2] = (float)(dy2 + nx); + py[3] = (float)(dy2 - nx); + + /* Draw polygon */ + return filledPolygonRGBA(renderer, px, py, 4, r, g, b, a); +} diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.h b/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.h new file mode 100644 index 0000000..a8e9e47 --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives.h @@ -0,0 +1,241 @@ +/* + +SDL3_gfxPrimitives.h: graphics primitives for SDL + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#ifndef _SDL3_gfxPrimitives_h +#define _SDL3_gfxPrimitives_h + +#include +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + /* ----- Versioning */ + +#define SDL3_GFXPRIMITIVES_MAJOR 1 +#define SDL3_GFXPRIMITIVES_MINOR 0 +#define SDL3_GFXPRIMITIVES_MICRO 0 + + + /* ---- Function Prototypes */ + +#ifdef _MSC_VER +# if defined(DLL_EXPORT) && !defined(LIBSDL3_GFX_DLL_IMPORT) +# define SDL3_GFXPRIMITIVES_SCOPE __declspec(dllexport) +# else +# ifdef LIBSDL3_GFX_DLL_IMPORT +# define SDL3_GFXPRIMITIVES_SCOPE __declspec(dllimport) +# endif +# endif +#endif +#ifndef SDL3_GFXPRIMITIVES_SCOPE +# define SDL3_GFXPRIMITIVES_SCOPE extern +#endif + + /* Note: all ___Color routines expect the color to be in format 0xRRGGBBAA */ + + /* Pixel */ + + SDL3_GFXPRIMITIVES_SCOPE bool pixelColor(SDL_Renderer * renderer, float x, float y, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool pixelRGBA(SDL_Renderer * renderer, float x, float y, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Horizontal line */ + + SDL3_GFXPRIMITIVES_SCOPE bool hlineColor(SDL_Renderer * renderer, float x1, float x2, float y, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool hlineRGBA(SDL_Renderer * renderer, float x1, float x2, float y, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Vertical line */ + + SDL3_GFXPRIMITIVES_SCOPE bool vlineColor(SDL_Renderer * renderer, float x, float y1, float y2, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool vlineRGBA(SDL_Renderer * renderer, float x, float y1, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Rectangle */ + + SDL3_GFXPRIMITIVES_SCOPE bool rectangleColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool rectangleRGBA(SDL_Renderer * renderer, float x1, float y1, + float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Rounded-Corner Rectangle */ + + SDL3_GFXPRIMITIVES_SCOPE bool roundedRectangleColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float rad, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool roundedRectangleRGBA(SDL_Renderer * renderer, float x1, float y1, + float x2, float y2, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Filled rectangle (Box) */ + + SDL3_GFXPRIMITIVES_SCOPE bool boxColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool boxRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, + float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Rounded-Corner Filled rectangle (Box) */ + + SDL3_GFXPRIMITIVES_SCOPE bool roundedBoxColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float rad, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool roundedBoxRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, + float y2, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Line */ + + SDL3_GFXPRIMITIVES_SCOPE bool lineColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool lineRGBA(SDL_Renderer * renderer, float x1, float y1, + float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* AA Line */ + + SDL3_GFXPRIMITIVES_SCOPE bool aalineColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool aalineRGBA(SDL_Renderer * renderer, float x1, float y1, + float x2, float y2, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Thick Line */ + SDL3_GFXPRIMITIVES_SCOPE bool thickLineColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, + float width, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool thickLineRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, + float width, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Circle */ + + SDL3_GFXPRIMITIVES_SCOPE bool circleColor(SDL_Renderer * renderer, float x, float y, float rad, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool circleRGBA(SDL_Renderer * renderer, float x, float y, float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Arc */ + + SDL3_GFXPRIMITIVES_SCOPE bool arcColor(SDL_Renderer * renderer, float x, float y, float rad, Sint32 start, Sint32 end, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool arcRGBA(SDL_Renderer * renderer, float x, float y, float rad, Sint32 start, Sint32 end, + Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* AA Circle */ + + SDL3_GFXPRIMITIVES_SCOPE bool aacircleColor(SDL_Renderer * renderer, float x, float y, float rad, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool aacircleRGBA(SDL_Renderer * renderer, float x, float y, + float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Filled Circle */ + + SDL3_GFXPRIMITIVES_SCOPE bool filledCircleColor(SDL_Renderer * renderer, float x, float y, float r, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool filledCircleRGBA(SDL_Renderer * renderer, float x, float y, + float rad, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Ellipse */ + + SDL3_GFXPRIMITIVES_SCOPE bool ellipseColor(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool ellipseRGBA(SDL_Renderer * renderer, float x, float y, + float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* AA Ellipse */ + + SDL3_GFXPRIMITIVES_SCOPE bool aaellipseColor(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool aaellipseRGBA(SDL_Renderer * renderer, float x, float y, + float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Filled Ellipse */ + + SDL3_GFXPRIMITIVES_SCOPE bool filledEllipseColor(SDL_Renderer * renderer, float x, float y, float rx, float ry, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool filledEllipseRGBA(SDL_Renderer * renderer, float x, float y, + float rx, float ry, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Pie */ + + SDL3_GFXPRIMITIVES_SCOPE bool pieColor(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool pieRGBA(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Filled Pie */ + + SDL3_GFXPRIMITIVES_SCOPE bool filledPieColor(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool filledPieRGBA(SDL_Renderer * renderer, float x, float y, float rad, + Sint32 start, Sint32 end, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Trigon */ + + SDL3_GFXPRIMITIVES_SCOPE bool trigonColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool trigonRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, + Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* AA-Trigon */ + + SDL3_GFXPRIMITIVES_SCOPE bool aatrigonColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool aatrigonRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, + Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Filled Trigon */ + + SDL3_GFXPRIMITIVES_SCOPE bool filledTrigonColor(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool filledTrigonRGBA(SDL_Renderer * renderer, float x1, float y1, float x2, float y2, float x3, float y3, + Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Polygon */ + + SDL3_GFXPRIMITIVES_SCOPE bool polygonColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool polygonRGBA(SDL_Renderer * renderer, const float * vx, const float * vy, + Sint32 n, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* AA-Polygon */ + + SDL3_GFXPRIMITIVES_SCOPE bool aapolygonColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool aapolygonRGBA(SDL_Renderer * renderer, const float * vx, const float * vy, + Sint32 n, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Filled Polygon */ + + SDL3_GFXPRIMITIVES_SCOPE bool filledPolygonColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool filledPolygonRGBA(SDL_Renderer * renderer, const float * vx, + const float * vy, Sint32 n, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Textured Polygon */ + + SDL3_GFXPRIMITIVES_SCOPE bool texturedPolygon(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, SDL_Surface * texture,Sint32 texture_dx,Sint32 texture_dy); + + /* Bezier */ + + SDL3_GFXPRIMITIVES_SCOPE bool bezierColor(SDL_Renderer * renderer, const float * vx, const float * vy, Sint32 n, Sint32 s, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool bezierRGBA(SDL_Renderer * renderer, const float * vx, const float * vy, + Sint32 n, Sint32 s, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Characters/Strings */ + + SDL3_GFXPRIMITIVES_SCOPE void gfxPrimitivesSetFont(const void *fontdata, Uint32 cw, Uint32 ch); + SDL3_GFXPRIMITIVES_SCOPE void gfxPrimitivesSetFontRotation(Uint32 rotation); + SDL3_GFXPRIMITIVES_SCOPE bool characterColor(SDL_Renderer * renderer, float x, float y, char c, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool characterRGBA(SDL_Renderer * renderer, float x, float y, char c, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + SDL3_GFXPRIMITIVES_SCOPE bool stringColor(SDL_Renderer * renderer, float x, float y, const char *s, Uint32 color); + SDL3_GFXPRIMITIVES_SCOPE bool stringRGBA(SDL_Renderer * renderer, float x, float y, const char *s, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + + /* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL3_gfxPrimitives_h */ \ No newline at end of file diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives_font.h b/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives_font.h new file mode 100644 index 0000000..a5fc0f4 --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_gfxPrimitives_font.h @@ -0,0 +1,3106 @@ +/* + +SDL3_gfxPrimitives_font.h: 8x8 font definition + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#define GFX_FONTDATAMAX (8*256) + +static unsigned char gfxPrimitivesFontdata[GFX_FONTDATAMAX] = { + + /* + * 0 0x00 '^@' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 1 0x01 '^A' + */ + 0x7e, /* 01111110 */ + 0x81, /* 10000001 */ + 0xa5, /* 10100101 */ + 0x81, /* 10000001 */ + 0xbd, /* 10111101 */ + 0x99, /* 10011001 */ + 0x81, /* 10000001 */ + 0x7e, /* 01111110 */ + + /* + * 2 0x02 '^B' + */ + 0x7e, /* 01111110 */ + 0xff, /* 11111111 */ + 0xdb, /* 11011011 */ + 0xff, /* 11111111 */ + 0xc3, /* 11000011 */ + 0xe7, /* 11100111 */ + 0xff, /* 11111111 */ + 0x7e, /* 01111110 */ + + /* + * 3 0x03 '^C' + */ + 0x6c, /* 01101100 */ + 0xfe, /* 11111110 */ + 0xfe, /* 11111110 */ + 0xfe, /* 11111110 */ + 0x7c, /* 01111100 */ + 0x38, /* 00111000 */ + 0x10, /* 00010000 */ + 0x00, /* 00000000 */ + + /* + * 4 0x04 '^D' + */ + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + 0x7c, /* 01111100 */ + 0xfe, /* 11111110 */ + 0x7c, /* 01111100 */ + 0x38, /* 00111000 */ + 0x10, /* 00010000 */ + 0x00, /* 00000000 */ + + /* + * 5 0x05 '^E' + */ + 0x38, /* 00111000 */ + 0x7c, /* 01111100 */ + 0x38, /* 00111000 */ + 0xfe, /* 11111110 */ + 0xfe, /* 11111110 */ + 0xd6, /* 11010110 */ + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + + /* + * 6 0x06 '^F' + */ + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + 0x7c, /* 01111100 */ + 0xfe, /* 11111110 */ + 0xfe, /* 11111110 */ + 0x7c, /* 01111100 */ + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + + /* + * 7 0x07 '^G' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 8 0x08 '^H' + */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xe7, /* 11100111 */ + 0xc3, /* 11000011 */ + 0xc3, /* 11000011 */ + 0xe7, /* 11100111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + + /* + * 9 0x09 '^I' + */ + 0x00, /* 00000000 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x42, /* 01000010 */ + 0x42, /* 01000010 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 10 0x0a '^J' + */ + 0xff, /* 11111111 */ + 0xc3, /* 11000011 */ + 0x99, /* 10011001 */ + 0xbd, /* 10111101 */ + 0xbd, /* 10111101 */ + 0x99, /* 10011001 */ + 0xc3, /* 11000011 */ + 0xff, /* 11111111 */ + + /* + * 11 0x0b '^K' + */ + 0x0f, /* 00001111 */ + 0x07, /* 00000111 */ + 0x0f, /* 00001111 */ + 0x7d, /* 01111101 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x78, /* 01111000 */ + + /* + * 12 0x0c '^L' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + + /* + * 13 0x0d '^M' + */ + 0x3f, /* 00111111 */ + 0x33, /* 00110011 */ + 0x3f, /* 00111111 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x70, /* 01110000 */ + 0xf0, /* 11110000 */ + 0xe0, /* 11100000 */ + + /* + * 14 0x0e '^N' + */ + 0x7f, /* 01111111 */ + 0x63, /* 01100011 */ + 0x7f, /* 01111111 */ + 0x63, /* 01100011 */ + 0x63, /* 01100011 */ + 0x67, /* 01100111 */ + 0xe6, /* 11100110 */ + 0xc0, /* 11000000 */ + + /* + * 15 0x0f '^O' + */ + 0x18, /* 00011000 */ + 0xdb, /* 11011011 */ + 0x3c, /* 00111100 */ + 0xe7, /* 11100111 */ + 0xe7, /* 11100111 */ + 0x3c, /* 00111100 */ + 0xdb, /* 11011011 */ + 0x18, /* 00011000 */ + + /* + * 16 0x10 '^P' + */ + 0x80, /* 10000000 */ + 0xe0, /* 11100000 */ + 0xf8, /* 11111000 */ + 0xfe, /* 11111110 */ + 0xf8, /* 11111000 */ + 0xe0, /* 11100000 */ + 0x80, /* 10000000 */ + 0x00, /* 00000000 */ + + /* + * 17 0x11 '^Q' + */ + 0x02, /* 00000010 */ + 0x0e, /* 00001110 */ + 0x3e, /* 00111110 */ + 0xfe, /* 11111110 */ + 0x3e, /* 00111110 */ + 0x0e, /* 00001110 */ + 0x02, /* 00000010 */ + 0x00, /* 00000000 */ + + /* + * 18 0x12 '^R' + */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + + /* + * 19 0x13 '^S' + */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + + /* + * 20 0x14 '^T' + */ + 0x7f, /* 01111111 */ + 0xdb, /* 11011011 */ + 0xdb, /* 11011011 */ + 0x7b, /* 01111011 */ + 0x1b, /* 00011011 */ + 0x1b, /* 00011011 */ + 0x1b, /* 00011011 */ + 0x00, /* 00000000 */ + + /* + * 21 0x15 '^U' + */ + 0x3e, /* 00111110 */ + 0x61, /* 01100001 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x86, /* 10000110 */ + 0x7c, /* 01111100 */ + + /* + * 22 0x16 '^V' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x7e, /* 01111110 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 23 0x17 '^W' + */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0xff, /* 11111111 */ + + /* + * 24 0x18 '^X' + */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 25 0x19 '^Y' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 26 0x1a '^Z' + */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0xfe, /* 11111110 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 27 0x1b '^[' + */ + 0x00, /* 00000000 */ + 0x30, /* 00110000 */ + 0x60, /* 01100000 */ + 0xfe, /* 11111110 */ + 0x60, /* 01100000 */ + 0x30, /* 00110000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 28 0x1c '^\' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 29 0x1d '^]' + */ + 0x00, /* 00000000 */ + 0x24, /* 00100100 */ + 0x66, /* 01100110 */ + 0xff, /* 11111111 */ + 0x66, /* 01100110 */ + 0x24, /* 00100100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 30 0x1e '^^' + */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x7e, /* 01111110 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 31 0x1f '^_' + */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0x7e, /* 01111110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 32 0x20 ' ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 33 0x21 '!' + */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 34 0x22 '"' + */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x24, /* 00100100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 35 0x23 '#' + */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0xfe, /* 11111110 */ + 0x6c, /* 01101100 */ + 0xfe, /* 11111110 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x00, /* 00000000 */ + + /* + * 36 0x24 '$' + */ + 0x18, /* 00011000 */ + 0x3e, /* 00111110 */ + 0x60, /* 01100000 */ + 0x3c, /* 00111100 */ + 0x06, /* 00000110 */ + 0x7c, /* 01111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 37 0x25 '%' + */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0xcc, /* 11001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x66, /* 01100110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 38 0x26 '&' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 39 0x27 ''' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 40 0x28 '(' + */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x00, /* 00000000 */ + + /* + * 41 0x29 ')' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 42 0x2a '*' + */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0xff, /* 11111111 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 43 0x2b '+' + */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 44 0x2c ',' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + + /* + * 45 0x2d '-' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 46 0x2e '.' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 47 0x2f '/' + */ + 0x06, /* 00000110 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x60, /* 01100000 */ + 0xc0, /* 11000000 */ + 0x80, /* 10000000 */ + 0x00, /* 00000000 */ + + /* + * 48 0x30 '0' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xd6, /* 11010110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + + /* + * 49 0x31 '1' + */ + 0x18, /* 00011000 */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 50 0x32 '2' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0x06, /* 00000110 */ + 0x1c, /* 00011100 */ + 0x30, /* 00110000 */ + 0x66, /* 01100110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 51 0x33 '3' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0x06, /* 00000110 */ + 0x3c, /* 00111100 */ + 0x06, /* 00000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 52 0x34 '4' + */ + 0x1c, /* 00011100 */ + 0x3c, /* 00111100 */ + 0x6c, /* 01101100 */ + 0xcc, /* 11001100 */ + 0xfe, /* 11111110 */ + 0x0c, /* 00001100 */ + 0x1e, /* 00011110 */ + 0x00, /* 00000000 */ + + /* + * 53 0x35 '5' + */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xfc, /* 11111100 */ + 0x06, /* 00000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 54 0x36 '6' + */ + 0x38, /* 00111000 */ + 0x60, /* 01100000 */ + 0xc0, /* 11000000 */ + 0xfc, /* 11111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 55 0x37 '7' + */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x00, /* 00000000 */ + + /* + * 56 0x38 '8' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 57 0x39 '9' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7e, /* 01111110 */ + 0x06, /* 00000110 */ + 0x0c, /* 00001100 */ + 0x78, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 58 0x3a ':' + */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 59 0x3b ';' + */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + + /* + * 60 0x3c '<' + */ + 0x06, /* 00000110 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x06, /* 00000110 */ + 0x00, /* 00000000 */ + + /* + * 61 0x3d '=' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 62 0x3e '>' + */ + 0x60, /* 01100000 */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x60, /* 01100000 */ + 0x00, /* 00000000 */ + + /* + * 63 0x3f '?' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 64 0x40 '@' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xde, /* 11011110 */ + 0xde, /* 11011110 */ + 0xde, /* 11011110 */ + 0xc0, /* 11000000 */ + 0x78, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 65 0x41 'A' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 66 0x42 'B' + */ + 0xfc, /* 11111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x7c, /* 01111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0xfc, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 67 0x43 'C' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 68 0x44 'D' + */ + 0xf8, /* 11111000 */ + 0x6c, /* 01101100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x6c, /* 01101100 */ + 0xf8, /* 11111000 */ + 0x00, /* 00000000 */ + + /* + * 69 0x45 'E' + */ + 0xfe, /* 11111110 */ + 0x62, /* 01100010 */ + 0x68, /* 01101000 */ + 0x78, /* 01111000 */ + 0x68, /* 01101000 */ + 0x62, /* 01100010 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 70 0x46 'F' + */ + 0xfe, /* 11111110 */ + 0x62, /* 01100010 */ + 0x68, /* 01101000 */ + 0x78, /* 01111000 */ + 0x68, /* 01101000 */ + 0x60, /* 01100000 */ + 0xf0, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 71 0x47 'G' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xce, /* 11001110 */ + 0x66, /* 01100110 */ + 0x3a, /* 00111010 */ + 0x00, /* 00000000 */ + + /* + * 72 0x48 'H' + */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 73 0x49 'I' + */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 74 0x4a 'J' + */ + 0x1e, /* 00011110 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x78, /* 01111000 */ + 0x00, /* 00000000 */ + + /* + * 75 0x4b 'K' + */ + 0xe6, /* 11100110 */ + 0x66, /* 01100110 */ + 0x6c, /* 01101100 */ + 0x78, /* 01111000 */ + 0x6c, /* 01101100 */ + 0x66, /* 01100110 */ + 0xe6, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 76 0x4c 'L' + */ + 0xf0, /* 11110000 */ + 0x60, /* 01100000 */ + 0x60, /* 01100000 */ + 0x60, /* 01100000 */ + 0x62, /* 01100010 */ + 0x66, /* 01100110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 77 0x4d 'M' + */ + 0xc6, /* 11000110 */ + 0xee, /* 11101110 */ + 0xfe, /* 11111110 */ + 0xfe, /* 11111110 */ + 0xd6, /* 11010110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 78 0x4e 'N' + */ + 0xc6, /* 11000110 */ + 0xe6, /* 11100110 */ + 0xf6, /* 11110110 */ + 0xde, /* 11011110 */ + 0xce, /* 11001110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 79 0x4f 'O' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 80 0x50 'P' + */ + 0xfc, /* 11111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x7c, /* 01111100 */ + 0x60, /* 01100000 */ + 0x60, /* 01100000 */ + 0xf0, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 81 0x51 'Q' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xce, /* 11001110 */ + 0x7c, /* 01111100 */ + 0x0e, /* 00001110 */ + + /* + * 82 0x52 'R' + */ + 0xfc, /* 11111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x7c, /* 01111100 */ + 0x6c, /* 01101100 */ + 0x66, /* 01100110 */ + 0xe6, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 83 0x53 'S' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 84 0x54 'T' + */ + 0x7e, /* 01111110 */ + 0x7e, /* 01111110 */ + 0x5a, /* 01011010 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 85 0x55 'U' + */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 86 0x56 'V' + */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + + /* + * 87 0x57 'W' + */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xd6, /* 11010110 */ + 0xd6, /* 11010110 */ + 0xfe, /* 11111110 */ + 0x6c, /* 01101100 */ + 0x00, /* 00000000 */ + + /* + * 88 0x58 'X' + */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 89 0x59 'Y' + */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 90 0x5a 'Z' + */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0x8c, /* 10001100 */ + 0x18, /* 00011000 */ + 0x32, /* 00110010 */ + 0x66, /* 01100110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 91 0x5b '[' + */ + 0x3c, /* 00111100 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 92 0x5c '\' + */ + 0xc0, /* 11000000 */ + 0x60, /* 01100000 */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x06, /* 00000110 */ + 0x02, /* 00000010 */ + 0x00, /* 00000000 */ + + /* + * 93 0x5d ']' + */ + 0x3c, /* 00111100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 94 0x5e '^' + */ + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 95 0x5f '_' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + + /* + * 96 0x60 '`' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 97 0x61 'a' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 98 0x62 'b' + */ + 0xe0, /* 11100000 */ + 0x60, /* 01100000 */ + 0x7c, /* 01111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0xdc, /* 11011100 */ + 0x00, /* 00000000 */ + + /* + * 99 0x63 'c' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc0, /* 11000000 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 100 0x64 'd' + */ + 0x1c, /* 00011100 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 101 0x65 'e' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 102 0x66 'f' + */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x60, /* 01100000 */ + 0xf8, /* 11111000 */ + 0x60, /* 01100000 */ + 0x60, /* 01100000 */ + 0xf0, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 103 0x67 'g' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x76, /* 01110110 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x7c, /* 01111100 */ + 0x0c, /* 00001100 */ + 0xf8, /* 11111000 */ + + /* + * 104 0x68 'h' + */ + 0xe0, /* 11100000 */ + 0x60, /* 01100000 */ + 0x6c, /* 01101100 */ + 0x76, /* 01110110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0xe6, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 105 0x69 'i' + */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 106 0x6a 'j' + */ + 0x06, /* 00000110 */ + 0x00, /* 00000000 */ + 0x06, /* 00000110 */ + 0x06, /* 00000110 */ + 0x06, /* 00000110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + + /* + * 107 0x6b 'k' + */ + 0xe0, /* 11100000 */ + 0x60, /* 01100000 */ + 0x66, /* 01100110 */ + 0x6c, /* 01101100 */ + 0x78, /* 01111000 */ + 0x6c, /* 01101100 */ + 0xe6, /* 11100110 */ + 0x00, /* 00000000 */ + + /* + * 108 0x6c 'l' + */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 109 0x6d 'm' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xec, /* 11101100 */ + 0xfe, /* 11111110 */ + 0xd6, /* 11010110 */ + 0xd6, /* 11010110 */ + 0xd6, /* 11010110 */ + 0x00, /* 00000000 */ + + /* + * 110 0x6e 'n' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xdc, /* 11011100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + + /* + * 111 0x6f 'o' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 112 0x70 'p' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xdc, /* 11011100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x7c, /* 01111100 */ + 0x60, /* 01100000 */ + 0xf0, /* 11110000 */ + + /* + * 113 0x71 'q' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x76, /* 01110110 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x7c, /* 01111100 */ + 0x0c, /* 00001100 */ + 0x1e, /* 00011110 */ + + /* + * 114 0x72 'r' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xdc, /* 11011100 */ + 0x76, /* 01110110 */ + 0x60, /* 01100000 */ + 0x60, /* 01100000 */ + 0xf0, /* 11110000 */ + 0x00, /* 00000000 */ + + /* + * 115 0x73 's' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0xc0, /* 11000000 */ + 0x7c, /* 01111100 */ + 0x06, /* 00000110 */ + 0xfc, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 116 0x74 't' + */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0xfc, /* 11111100 */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x36, /* 00110110 */ + 0x1c, /* 00011100 */ + 0x00, /* 00000000 */ + + /* + * 117 0x75 'u' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 118 0x76 'v' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + + /* + * 119 0x77 'w' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0xd6, /* 11010110 */ + 0xd6, /* 11010110 */ + 0xfe, /* 11111110 */ + 0x6c, /* 01101100 */ + 0x00, /* 00000000 */ + + /* + * 120 0x78 'x' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 121 0x79 'y' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7e, /* 01111110 */ + 0x06, /* 00000110 */ + 0xfc, /* 11111100 */ + + /* + * 122 0x7a 'z' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x4c, /* 01001100 */ + 0x18, /* 00011000 */ + 0x32, /* 00110010 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 123 0x7b '{' + */ + 0x0e, /* 00001110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x70, /* 01110000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x0e, /* 00001110 */ + 0x00, /* 00000000 */ + + /* + * 124 0x7c '|' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 125 0x7d '}' + */ + 0x70, /* 01110000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x0e, /* 00001110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x70, /* 01110000 */ + 0x00, /* 00000000 */ + + /* + * 126 0x7e '~' + */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 127 0x7f '' + */ + 0x00, /* 00000000 */ + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 128 0x80 '€' + */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x0c, /* 00001100 */ + 0x78, /* 01111000 */ + + /* + * 129 0x81 '' + */ + 0xcc, /* 11001100 */ + 0x00, /* 00000000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 130 0x82 '‚' + */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 131 0x83 'ƒ' + */ + 0x7c, /* 01111100 */ + 0x82, /* 10000010 */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 132 0x84 '„' + */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 133 0x85 '…' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 134 0x86 '†' + */ + 0x30, /* 00110000 */ + 0x30, /* 00110000 */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 135 0x87 '‡' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0x7e, /* 01111110 */ + 0x0c, /* 00001100 */ + 0x38, /* 00111000 */ + + /* + * 136 0x88 'ˆ' + */ + 0x7c, /* 01111100 */ + 0x82, /* 10000010 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 137 0x89 '‰' + */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 138 0x8a 'Š' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 139 0x8b '‹' + */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 140 0x8c 'Œ' + */ + 0x7c, /* 01111100 */ + 0x82, /* 10000010 */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 141 0x8d '' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 142 0x8e 'Ž' + */ + 0xc6, /* 11000110 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 143 0x8f '' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 144 0x90 '' + */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0xf8, /* 11111000 */ + 0xc0, /* 11000000 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 145 0x91 '‘' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0xd8, /* 11011000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 146 0x92 '’' + */ + 0x3e, /* 00111110 */ + 0x6c, /* 01101100 */ + 0xcc, /* 11001100 */ + 0xfe, /* 11111110 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xce, /* 11001110 */ + 0x00, /* 00000000 */ + + /* + * 147 0x93 '“' + */ + 0x7c, /* 01111100 */ + 0x82, /* 10000010 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 148 0x94 '”' + */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 149 0x95 '•' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 150 0x96 '–' + */ + 0x78, /* 01111000 */ + 0x84, /* 10000100 */ + 0x00, /* 00000000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 151 0x97 '—' + */ + 0x60, /* 01100000 */ + 0x30, /* 00110000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 152 0x98 '˜' + */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7e, /* 01111110 */ + 0x06, /* 00000110 */ + 0xfc, /* 11111100 */ + + /* + * 153 0x99 '™' + */ + 0xc6, /* 11000110 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + + /* + * 154 0x9a 'š' + */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 155 0x9b '›' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 156 0x9c 'œ' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0x64, /* 01100100 */ + 0xf0, /* 11110000 */ + 0x60, /* 01100000 */ + 0x66, /* 01100110 */ + 0xfc, /* 11111100 */ + 0x00, /* 00000000 */ + + /* + * 157 0x9d '' + */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 158 0x9e 'ž' + */ + 0xf8, /* 11111000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xfa, /* 11111010 */ + 0xc6, /* 11000110 */ + 0xcf, /* 11001111 */ + 0xc6, /* 11000110 */ + 0xc7, /* 11000111 */ + + /* + * 159 0x9f 'Ÿ' + */ + 0x0e, /* 00001110 */ + 0x1b, /* 00011011 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0xd8, /* 11011000 */ + 0x70, /* 01110000 */ + 0x00, /* 00000000 */ + + /* + * 160 0xa0 ' ' + */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x7c, /* 01111100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 161 0xa1 '¡' + */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x38, /* 00111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 162 0xa2 '¢' + */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + + /* + * 163 0xa3 '£' + */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 164 0xa4 '¤' + */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0x00, /* 00000000 */ + 0xdc, /* 11011100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x00, /* 00000000 */ + + /* + * 165 0xa5 '¥' + */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0x00, /* 00000000 */ + 0xe6, /* 11100110 */ + 0xf6, /* 11110110 */ + 0xde, /* 11011110 */ + 0xce, /* 11001110 */ + 0x00, /* 00000000 */ + + /* + * 166 0xa6 '¦' + */ + 0x3c, /* 00111100 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x3e, /* 00111110 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 167 0xa7 '§' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 168 0xa8 '¨' + */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x63, /* 01100011 */ + 0x3e, /* 00111110 */ + 0x00, /* 00000000 */ + + /* + * 169 0xa9 '©' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 170 0xaa 'ª' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x06, /* 00000110 */ + 0x06, /* 00000110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 171 0xab '«' + */ + 0x63, /* 01100011 */ + 0xe6, /* 11100110 */ + 0x6c, /* 01101100 */ + 0x7e, /* 01111110 */ + 0x33, /* 00110011 */ + 0x66, /* 01100110 */ + 0xcc, /* 11001100 */ + 0x0f, /* 00001111 */ + + /* + * 172 0xac '¬' + */ + 0x63, /* 01100011 */ + 0xe6, /* 11100110 */ + 0x6c, /* 01101100 */ + 0x7a, /* 01111010 */ + 0x36, /* 00110110 */ + 0x6a, /* 01101010 */ + 0xdf, /* 11011111 */ + 0x06, /* 00000110 */ + + /* + * 173 0xad '­' + */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 174 0xae '®' + */ + 0x00, /* 00000000 */ + 0x33, /* 00110011 */ + 0x66, /* 01100110 */ + 0xcc, /* 11001100 */ + 0x66, /* 01100110 */ + 0x33, /* 00110011 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 175 0xaf '¯' + */ + 0x00, /* 00000000 */ + 0xcc, /* 11001100 */ + 0x66, /* 01100110 */ + 0x33, /* 00110011 */ + 0x66, /* 01100110 */ + 0xcc, /* 11001100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 176 0xb0 '°' + */ + 0x22, /* 00100010 */ + 0x88, /* 10001000 */ + 0x22, /* 00100010 */ + 0x88, /* 10001000 */ + 0x22, /* 00100010 */ + 0x88, /* 10001000 */ + 0x22, /* 00100010 */ + 0x88, /* 10001000 */ + + /* + * 177 0xb1 '±' + */ + 0x55, /* 01010101 */ + 0xaa, /* 10101010 */ + 0x55, /* 01010101 */ + 0xaa, /* 10101010 */ + 0x55, /* 01010101 */ + 0xaa, /* 10101010 */ + 0x55, /* 01010101 */ + 0xaa, /* 10101010 */ + + /* + * 178 0xb2 '²' + */ + 0x77, /* 01110111 */ + 0xdd, /* 11011101 */ + 0x77, /* 01110111 */ + 0xdd, /* 11011101 */ + 0x77, /* 01110111 */ + 0xdd, /* 11011101 */ + 0x77, /* 01110111 */ + 0xdd, /* 11011101 */ + + /* + * 179 0xb3 '³' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 180 0xb4 '´' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 181 0xb5 'µ' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 182 0xb6 '¶' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xf6, /* 11110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 183 0xb7 '·' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 184 0xb8 '¸' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 185 0xb9 '¹' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xf6, /* 11110110 */ + 0x06, /* 00000110 */ + 0xf6, /* 11110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 186 0xba 'º' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 187 0xbb '»' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x06, /* 00000110 */ + 0xf6, /* 11110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 188 0xbc '¼' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xf6, /* 11110110 */ + 0x06, /* 00000110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 189 0xbd '½' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 190 0xbe '¾' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 191 0xbf '¿' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xf8, /* 11111000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 192 0xc0 'À' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 193 0xc1 'Á' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 194 0xc2 'Â' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 195 0xc3 'Ã' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 196 0xc4 'Ä' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 197 0xc5 'Å' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xff, /* 11111111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 198 0xc6 'Æ' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 199 0xc7 'Ç' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x37, /* 00110111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 200 0xc8 'È' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x37, /* 00110111 */ + 0x30, /* 00110000 */ + 0x3f, /* 00111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 201 0xc9 'É' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 00111111 */ + 0x30, /* 00110000 */ + 0x37, /* 00110111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 202 0xca 'Ê' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xf7, /* 11110111 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 203 0xcb 'Ë' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0xf7, /* 11110111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 204 0xcc 'Ì' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x37, /* 00110111 */ + 0x30, /* 00110000 */ + 0x37, /* 00110111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 205 0xcd 'Í' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 206 0xce 'Î' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xf7, /* 11110111 */ + 0x00, /* 00000000 */ + 0xf7, /* 11110111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 207 0xcf 'Ï' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 208 0xd0 'Ð' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 209 0xd1 'Ñ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 210 0xd2 'Ò' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 211 0xd3 'Ó' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x3f, /* 00111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 212 0xd4 'Ô' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 213 0xd5 'Õ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 214 0xd6 'Ö' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3f, /* 00111111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 215 0xd7 '×' + */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0xff, /* 11111111 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + + /* + * 216 0xd8 'Ø' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xff, /* 11111111 */ + 0x18, /* 00011000 */ + 0xff, /* 11111111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 217 0xd9 'Ù' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xf8, /* 11111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 218 0xda 'Ú' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x1f, /* 00011111 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 219 0xdb 'Û' + */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + + /* + * 220 0xdc 'Ü' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + + /* + * 221 0xdd 'Ý' + */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + 0xf0, /* 11110000 */ + + /* + * 222 0xde 'Þ' + */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + 0x0f, /* 00001111 */ + + /* + * 223 0xdf 'ß' + */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0xff, /* 11111111 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 224 0xe0 'à' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0xc8, /* 11001000 */ + 0xdc, /* 11011100 */ + 0x76, /* 01110110 */ + 0x00, /* 00000000 */ + + /* + * 225 0xe1 'á' + */ + 0x78, /* 01111000 */ + 0xcc, /* 11001100 */ + 0xcc, /* 11001100 */ + 0xd8, /* 11011000 */ + 0xcc, /* 11001100 */ + 0xc6, /* 11000110 */ + 0xcc, /* 11001100 */ + 0x00, /* 00000000 */ + + /* + * 226 0xe2 'â' + */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0xc0, /* 11000000 */ + 0x00, /* 00000000 */ + + /* + * 227 0xe3 'ã' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x00, /* 00000000 */ + + /* + * 228 0xe4 'ä' + */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0x60, /* 01100000 */ + 0x30, /* 00110000 */ + 0x60, /* 01100000 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + + /* + * 229 0xe5 'å' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0xd8, /* 11011000 */ + 0xd8, /* 11011000 */ + 0xd8, /* 11011000 */ + 0x70, /* 01110000 */ + 0x00, /* 00000000 */ + + /* + * 230 0xe6 'æ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x7c, /* 01111100 */ + 0xc0, /* 11000000 */ + + /* + * 231 0xe7 'ç' + */ + 0x00, /* 00000000 */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + + /* + * 232 0xe8 'è' + */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x3c, /* 00111100 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + + /* + * 233 0xe9 'é' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + + /* + * 234 0xea 'ê' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0xee, /* 11101110 */ + 0x00, /* 00000000 */ + + /* + * 235 0xeb 'ë' + */ + 0x0e, /* 00001110 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x3e, /* 00111110 */ + 0x66, /* 01100110 */ + 0x66, /* 01100110 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + + /* + * 236 0xec 'ì' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0xdb, /* 11011011 */ + 0xdb, /* 11011011 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 237 0xed 'í' + */ + 0x06, /* 00000110 */ + 0x0c, /* 00001100 */ + 0x7e, /* 01111110 */ + 0xdb, /* 11011011 */ + 0xdb, /* 11011011 */ + 0x7e, /* 01111110 */ + 0x60, /* 01100000 */ + 0xc0, /* 11000000 */ + + /* + * 238 0xee 'î' + */ + 0x1e, /* 00011110 */ + 0x30, /* 00110000 */ + 0x60, /* 01100000 */ + 0x7e, /* 01111110 */ + 0x60, /* 01100000 */ + 0x30, /* 00110000 */ + 0x1e, /* 00011110 */ + 0x00, /* 00000000 */ + + /* + * 239 0xef 'ï' + */ + 0x00, /* 00000000 */ + 0x7c, /* 01111100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0x00, /* 00000000 */ + + /* + * 240 0xf0 'ð' + */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + 0xfe, /* 11111110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 241 0xf1 'ñ' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x7e, /* 01111110 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 242 0xf2 'ò' + */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 243 0xf3 'ó' + */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x18, /* 00011000 */ + 0x0c, /* 00001100 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + + /* + * 244 0xf4 'ô' + */ + 0x0e, /* 00001110 */ + 0x1b, /* 00011011 */ + 0x1b, /* 00011011 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + + /* + * 245 0xf5 'õ' + */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0xd8, /* 11011000 */ + 0xd8, /* 11011000 */ + 0x70, /* 01110000 */ + + /* + * 246 0xf6 'ö' + */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x7e, /* 01111110 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 247 0xf7 '÷' + */ + 0x00, /* 00000000 */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0x00, /* 00000000 */ + 0x76, /* 01110110 */ + 0xdc, /* 11011100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 248 0xf8 'ø' + */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0x6c, /* 01101100 */ + 0x38, /* 00111000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 249 0xf9 'ù' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 250 0xfa 'ú' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x18, /* 00011000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 251 0xfb 'û' + */ + 0x0f, /* 00001111 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0x0c, /* 00001100 */ + 0xec, /* 11101100 */ + 0x6c, /* 01101100 */ + 0x3c, /* 00111100 */ + 0x1c, /* 00011100 */ + + /* + * 252 0xfc 'ü' + */ + 0x6c, /* 01101100 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x36, /* 00110110 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 253 0xfd 'ý' + */ + 0x78, /* 01111000 */ + 0x0c, /* 00001100 */ + 0x18, /* 00011000 */ + 0x30, /* 00110000 */ + 0x7c, /* 01111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 254 0xfe 'þ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x3c, /* 00111100 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + + /* + * 255 0xff ' ' + */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + +}; diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.c b/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.c new file mode 100644 index 0000000..41d787e --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.c @@ -0,0 +1,1617 @@ +/* + +SDL3_imageFilter.c: byte-image "filter" routines + +Copyright (C) 2012-2014 Andreas Schiffler +Copyright (C) 2013 Sylvain Beucler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#include +#include +#include + +#include + +#include "SDL3_imageFilter.h" + +/* ------ Custom defines ----- */ + +/*! +\brief Swaps the byte order in a 32bit integer (LSB becomes MSB, etc.). +*/ +#define SWAP_32(x) (((x) >> 24) | (((x) & 0x00ff0000) >> 8) | (((x) & 0x0000ff00) << 8) | ((x) << 24)) + +#define MAX_BYTES_PER_PIXEL 16 +/* ------------------------------------------------------------------------------------ */ + +/*! +\brief Filter using Add: D = saturation255(S1 + S2) + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterAdd(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + result = (int) *cursrc1 + (int) *cursrc2; + if (result > 255) + result = 255; + *curdst = (unsigned char) result; + /* Advance pointers */ + cursrc1++; + cursrc2++; + curdst++; + } + + return true; +} + +/*! +\brief Filter using Mean: D = S1/2 + S2/2 + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMean(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + float tmp, fSrc1, fSrc2; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + fSrc1 = cursrc1[i] / 255.0f; + fSrc2 = cursrc2[i] / 255.0f; + tmp = fSrc1 / 2 + fSrc2 / 2; + curdst[i] = (unsigned char) (tmp * 255) ; + } + + return true; +} + +/*! +\brief Filter using Sub: D = saturation0(S1 - S2) + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterSub(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + result = (int) cursrc1[i] - (int) cursrc2[i]; + if (result < 0) + result = 0; + curdst[i] = (unsigned char) result; + } + return true; +} + +/*! +\brief Filter using AbsDiff: D = | S1 - S2 | + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterAbsDiff(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + result = abs((int) *cursrc1 - (int) *cursrc2); + *curdst = (unsigned char) result; + /* Advance pointers */ + cursrc1++; + cursrc2++; + curdst++; + } + + return true; +} + +/*! +\brief Filter using Mult: D = saturation255(S1 * S2) + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMult(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + float tmp, fSrc1, fSrc2; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + fSrc1 = cursrc1[i] / 255.0f; + fSrc2 = cursrc1[i] / 255.0f; + tmp = fSrc1 * fSrc2; + curdst[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/*! +\brief Filter using MultUnbound: D = S1 * S2 - No saturation + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMultUnbound(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart, tmp; + unsigned char *cursrc1, *cursrc2, *curdst; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + tmp = (unsigned int) cursrc1[i] * (unsigned int) cursrc2[i]; + curdst[i] = (unsigned char) tmp; + } + + return true; +} + +/*! +\brief Filter using MultInv: D = 255 - ((255 - S1) * (255 - S2)) + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMultInv(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + float tmp, fSrc1, fSrc2; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + fSrc1 = cursrc1[i] / 255.0f; + fSrc2 = cursrc2[i] / 255.0f; + tmp = 1.0f - ((1.0f - fSrc1) * (1.0f - fSrc2)); + curdst[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/*! +\brief Filter using MultDivby2: D = saturation255(S1/2 * S2) + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMultDivby2(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + int result; + float tmp, fSrc1, fSrc2; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + fSrc1 = cursrc1[i] / 255.0f; + fSrc2 = cursrc2[i] / 255.0f; + tmp = (fSrc1 * fSrc2) / 2.0f; + if (tmp > 1.0f) + tmp = 1.0f; + curdst[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/*! +\brief Filter using MultDivby4: D = saturation255(S1/2 * S2/2) + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMultDivby4(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + int result; + float tmp, fSrc1, fSrc2; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + fSrc1 = cursrc1[i] / 255.0f; + fSrc2 = cursrc2[i] / 255.0f; + tmp = (fSrc1 * fSrc2) / 4.0f; + if (tmp > 1.0f) + tmp = 1.0f; + curdst[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/*! +\brief Filter using BitAnd: D = S1 & S2 + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterBitAnd(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + *curdst = (*cursrc1) & (*cursrc2); + /* Advance pointers */ + cursrc1++; + cursrc2++; + curdst++; + } + + return true; +} + +/*! +\brief Filter using BitOr: D = S1 | S2 + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterBitOr(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + *curdst = *cursrc1 | *cursrc2; + /* Advance pointers */ + cursrc1++; + cursrc2++; + curdst++; + } + + return true; +} + +/*! +\brief Filter using Div: D = S1 / S2 + +\param Src1 Pointer to the start of the first source byte array (S1). +\param Src2 Pointer to the start of the second source byte array (S2). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterDiv(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *cursrc2, *curdst; + float tmp, fSrc1, fSrc2; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Src2 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + cursrc2 = Src2; + curdst = Dest; + + for (i = istart; i < length; i++) { + if (cursrc2[i] == 0) { + curdst[i] = 0; + } else { + fSrc1 = cursrc1[i] / 255.0f; + fSrc2 = cursrc2[i] / 255.0f; + tmp = cursrc1[i] / cursrc2[i]; + if (tmp > 1.0f) + tmp = 1.0f; + curdst[i] = (unsigned char) (tmp * 255); + } + } + + return true; +} + +/* ------------------------------------------------------------------------------------ */ + +/*! +\brief Filter using BitNegation: D = !S + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterBitNegation(unsigned char *Src1, unsigned char *Dest, unsigned int length) +{ + unsigned int i, istart; + unsigned char *cursrc1, *curdst; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdst = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + *curdst = ~(*cursrc1); + /* Advance pointers */ + cursrc1++; + curdst++; + } + + return true; +} + +/*! +\brief Filter using AddByte: D = saturation255(S + C) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param C Constant value to add (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterAddByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C) +{ + unsigned int i, istart; + int iC; + unsigned char *cursrc1, *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: C==0 */ + if (C == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* C routine to process image */ + iC = (int) C; + for (i = istart; i < length; i++) { + result = (int) *cursrc1 + iC; + if (result > 255) + result = 255; + *curdest = (unsigned char) result; + /* Advance pointers */ + cursrc1++; + curdest++; + } + return true; +} + +/*! +\brief Filter using AddUint: D = saturation255((S[i] + Cs[i % BPP]) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param bpp The bytes per unit length (BPP) +\param C Constant to add (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterAddUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned int bpp, unsigned int C) +{ + unsigned int i, j, istart; + int iC[MAX_BYTES_PER_PIXEL], k; + unsigned char *cursrc1; + unsigned char *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: C==0 */ + if (C == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process uint */ + for (k = bpp; k >= 0; k--) { + iC[k] = (int) ((C >> (8*(bpp - k))) & 0xff); + } + + /* Routine to process bytes */ + for (i = istart; i < length; i += bpp) { + for (j = 0; j < bpp; j++) { + if ((i+j) < length) { + result = cursrc1[i+j] + iC[j]; + if (result > 255){ + result = 255; + } + curdest[i+j] = (unsigned char) result; + } + } + } + return true; +} + +/*! +\brief Filter using AddByteToHalf: D = saturation255(S/2 + C) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param C Constant to add (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterAddByteToHalf(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C) +{ + unsigned int i, istart; + int iC; + unsigned char *cursrc1; + unsigned char *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + iC = (int) C; + for (i = istart; i < length; i++) { + result = (int) (*cursrc1 / 2) + iC; + if (result > 255) + result = 255; + *curdest = (unsigned char) result; + /* Advance pointers */ + cursrc1++; + curdest++; + } + + return true; +} + +/*! +\brief Filter using SubByte: D = saturation0(S - C) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. +\param C Constant to subtract (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterSubByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C) +{ + unsigned int i, istart; + int iC; + unsigned char *cursrc1; + unsigned char *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: C==0 */ + if (C == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + iC = (int) C; + for (i = istart; i < length; i++) { + result = (int) *cursrc1 - iC; + if (result < 0) + result = 0; + *curdest = (unsigned char) result; + /* Advance pointers */ + cursrc1++; + curdest++; + } + return true; +} + +/*! +\brief Filter using SubUint: D = saturation0(S[i] - Cs[i % BPP]) + +\param Src1 Pointer to the start of the source byte array (S1). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param bpp The bytes per unit length (BPP) +\param C Constant to subtract (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterSubUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned int bpp, unsigned int C) +{ + unsigned int i, j, istart; + int iC[MAX_BYTES_PER_PIXEL], k; + unsigned char *cursrc1; + unsigned char *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: C==0 */ + if (C == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process uint */ + for (k = bpp; k >= 0; k--) { + iC[k] = (int) ((C >> (8*(bpp - k))) & 0xff); + } + + /* Routine to process bytes */ + for (i = istart; i < length; i += bpp) { + for (j = 0; j < bpp; j++) { + if ((i+j) < length) { + result = cursrc1[i+j] - iC[j]; + if (result < 0){ + result = 0; + } + curdest[i+j] = (unsigned char) result; + } + } + } + + return true; +} + +/*! +\brief Filter using ShiftRightUint: D = saturation0((uint)S[i] >> N) + +\param Src1 Pointer to the start of the source byte array (S1). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param N Number of bit-positions to shift (N). Valid range is 0 to 8. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterShiftRightUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned int bpp, unsigned char N) +{ + unsigned int i,istart; + unsigned char *cursrc1, *curdest; + unsigned int *icursrc1, *icurdest; + int j, result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Check shift */ + if (N > 8) { + return false; + } + + /* Special case: N==0 */ + if (N == 0) { + memcpy(Src1, Dest, length); + return (0); + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i += bpp) { + if ((i + bpp) < length) { + result = 0; + for (j = bpp; j >= 0; j--) { + result |= (unsigned int) ((cursrc1[i + j] << (sizeof(unsigned int) * j))); + } + /* Do the actual uint shift */ + result = result >> N; + /* Pass the shifted value to each byte */ + for (j = 0; j < bpp; j++) { + curdest[i + j] = (result >> bpp) & 0xFF; + } + } + } + + return true; +} + +/*! +\brief Filter using MultByByte: D = saturation255(S * C) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. +\param C Constant to multiply with (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterMultByByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C) +{ + unsigned int i, istart; + unsigned char *cursrc1; + unsigned char *curdest; + int result; + float tmp, fSrc1, fC; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: C==1 */ + if (C == 1) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + fC = C / 255.0f; + for (i = istart; i < length; i++) { + fSrc1 = cursrc1[i] / 255.0f; + tmp = fSrc1 * fC; + if (tmp > 1.0f) + tmp = 1.0f; + curdest[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/*! +\brief Filter using ShiftRightAndMultByByte: D = saturation255((S >> N) * C) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param N Number of bit-positions to shift (N). Valid range is 0 to 8. +\param C Constant to multiply with (C). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterShiftRightAndMultByByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char N, + unsigned char C) +{ + unsigned int i, istart; + unsigned char *cursrc1; + unsigned char *curdest; + int result; + float tmp, fSrc1, fC; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Check shift */ + if (N > 8) { + return false; + } + + /* Special case: N==0 && C==1 */ + if ((N == 0) && (C == 1)) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + fC = C / 255.0f; + for (i = istart; i < length; i++) { + fSrc1 = (cursrc1[i] >> N) / 255.0f; + tmp = fSrc1 * fC; + if (tmp > 1.0f) + tmp = 1.0f; + curdest[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/*! +\brief Filter using ShiftRight: D = saturation0(S >> N) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. +\param N Number of bit-positions to shift (N). Valid range is 0 to 8. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterShiftRight(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char N) +{ + unsigned int i, istart; + unsigned char *cursrc1, *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Check shift */ + if (N > 8) { + return false; + } + + /* Special case: N==0 */ + if (N == 0) { + memcpy(Src1, Dest, length); + return (0); + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + result = ((int) cursrc1[i]) >> N; + if (result < 0) { + result = 0; + } + curdest[i] = (unsigned char) result; + } + + return true; +} + +/*! +\brief Filter using ShiftLeftByte: D = (S << N) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source arrays. +\param N Number of bit-positions to shift (N). Valid range is 0 to 8. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterShiftLeftByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char N) +{ + unsigned int i, istart; + unsigned char *cursrc1, *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + if (N > 8) { + return (-1); + } + + /* Special case: N==0 */ + if (N == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + result = ((int) *cursrc1 << N) & 0xff; + *curdest = (unsigned char) result; + /* Advance pointers */ + cursrc1++; + curdest++; + } + + return true; +} + +/*! +\brief Filter using ShiftLeftUint: D = ((uint)S << N) + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param N Number of bit-positions to shift (N). Valid range is 0 to 32. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterShiftLeftUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned int bpp, unsigned char N) +{ + unsigned int i, istart; + int j; + unsigned char *cursrc1, *curdest; + unsigned int *icursrc1, *icurdest; + unsigned int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + if (N > 32) { + return false; + } + + /* Special case: N==0 */ + if (N == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i += bpp) { + if ((i + bpp) < length) { + result = 0; + for (j = bpp; j >= 0; j--) { + result |= (int) ((cursrc1[i + j] << (sizeof(unsigned int) * j))); + } + /* Do the actual uint shift */ + result = result << N; + /* Pass the shifted value to each byte position */ + for (j = 0; j < bpp; j++) { + curdest[i + j] = (result >> bpp) & 0xFF; + } + } + } + + return true; +} + +/*! +\brief Filter ShiftLeft: D = saturation255(S << N) + +\param Src1 Pointer to the start of the source byte array (S1). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param N Number of bit-positions to shift (N). Valid range is 0 to 8. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterShiftLeft(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char N) +{ + unsigned int i, istart; + unsigned char *cursrc1, *curdest; + int result; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + if (N > 8) { + return false; + } + + /* Special case: N==0 */ + if (N == 0) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + result = ((int) cursrc1[i]) << N; + if (result > 255) { + result = 255; + } + curdest[i] = (unsigned char) result; + } + + return true; +} + +/*! +\brief Filter using BinarizeUsingThreshold: D = (S >= T) ? 255:0 + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param T The threshold boundary (inclusive). + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterBinarizeUsingThreshold(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char T) +{ + unsigned int i, istart; + unsigned char *cursrc1; + unsigned char *curdest; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: T==0 */ + if (T == 0) { + memset(Dest, 255, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* C routine to process image */ + for (i = istart; i < length; i++) { + *curdest = (unsigned char)(((unsigned char)*cursrc1 >= T) ? 255 : 0); + /* Advance pointers */ + cursrc1++; + curdest++; + } + + return true; +} + +/*! +\brief Filter using ClipToRange: D = (S >= Tmin) & (S <= Tmax) S:Tmin | Tmax + +\param Src1 Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param Tmin Lower (inclusive) boundary of the clipping range. +\param Tmax Upper (inclusive) boundary of the clipping range. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterClipToRange(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char Tmin, + unsigned char Tmax) +{ + unsigned int i, istart; + unsigned char *cursrc1; + unsigned char *curdest; + + /* Validate input parameters */ + if ((Src1 == NULL) || (Dest == NULL)) + return false; + if (length == 0) + return true; + + /* Special case: Tmin==0 && Tmax = 255 */ + if ((Tmin == 0) && (Tmax == 25)) { + memcpy(Src1, Dest, length); + return true; + } + + /* Setup to process whole image */ + istart = 0; + cursrc1 = Src1; + curdest = Dest; + + /* Routine to process image */ + for (i = istart; i < length; i++) { + if (*cursrc1 < Tmin) { + *curdest = Tmin; + } else if (*cursrc1 > Tmax) { + *curdest = Tmax; + } else { + *curdest = *cursrc1; + } + /* Advance pointers */ + cursrc1++; + curdest++; + } + + return true; +} + +/*! +\brief Filter using NormalizeLinear: D = saturation255((Nmax - Nmin)/(Cmax - Cmin)*(S - Cmin) + Nmin) + +\param Src Pointer to the start of the source byte array (S). +\param Dest Pointer to the start of the destination byte array (D). +\param length The number of bytes in the source array. +\param Cmin Normalization constant. +\param Cmax Normalization constant. +\param Nmin Normalization constant. +\param Nmax Normalization constant. + +\return Returns true for success or false for error. +*/ +bool SDL_imageFilterNormalizeLinear(unsigned char *Src, unsigned char *Dest, unsigned int length, int Cmin, int Cmax, int Nmin, + int Nmax) +{ + unsigned int i, istart; + unsigned char *cursrc; + unsigned char *curdest; + float dN, dC, factor, fCMin, fCMax; + float fNMin, fNMax, fSrc1, tmp; + + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL)) + return(-1); + if (length == 0) + return(0); + + /* Setup to process whole image */ + istart = 0; + cursrc = Src; + curdest = Dest; + + /* Routine to process image */ + fCMin = Cmin / 255.0f; + fCMax = Cmax / 255.0f; + fNMin = Nmin / 255.0f; + fNMax = Nmax / 255.0f; + + dC = fCMax - fCMin; + if (dC == 0) + return true; + dN = fNMax - fNMin; + factor = dN / dC; + for (i = istart; i < length; i++) { + fSrc1 = cursrc[i] / 255.0f; + tmp = (factor * (fSrc1 - fCMin)) + fNMin; + if (tmp > 1.0f) + tmp = 1.0f; + curdest[i] = (unsigned char) (tmp * 255); + } + + return true; +} + +/* ------------------------------------------------------------------------------------ */ + +/*! +\brief Filter using ConvolveKernel3x3Divide: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >2. +\param columns Number of columns in source/destination array. Must be >2. +\param Kernel The 2D convolution kernel of size 3x3. +\param Divisor The divisor of the convolution sum. Must be >0. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel3x3Divide(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char Divisor) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 3) || (rows < 3) || (Divisor == 0)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel5x5Divide: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >4. +\param columns Number of columns in source/destination array. Must be >4. +\param Kernel The 2D convolution kernel of size 5x5. +\param Divisor The divisor of the convolution sum. Must be >0. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel5x5Divide(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char Divisor) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 5) || (rows < 5) || (Divisor == 0)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel7x7Divide: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >6. +\param columns Number of columns in source/destination array. Must be >6. +\param Kernel The 2D convolution kernel of size 7x7. +\param Divisor The divisor of the convolution sum. Must be >0. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel7x7Divide(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char Divisor) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 7) || (rows < 7) || (Divisor == 0)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel9x9Divide: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >8. +\param columns Number of columns in source/destination array. Must be >8. +\param Kernel The 2D convolution kernel of size 9x9. +\param Divisor The divisor of the convolution sum. Must be >0. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel9x9Divide(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char Divisor) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 9) || (rows < 9) || (Divisor == 0)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel3x3ShiftRight: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >2. +\param columns Number of columns in source/destination array. Must be >2. +\param Kernel The 2D convolution kernel of size 3x3. +\param NRightShift The number of right bit shifts to apply to the convolution sum. Must be <7. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel3x3ShiftRight(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char NRightShift) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 3) || (rows < 3) || (NRightShift > 7)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel5x5ShiftRight: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >4. +\param columns Number of columns in source/destination array. Must be >4. +\param Kernel The 2D convolution kernel of size 5x5. +\param NRightShift The number of right bit shifts to apply to the convolution sum. Must be <7. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel5x5ShiftRight(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char NRightShift) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 5) || (rows < 5) || (NRightShift > 7)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel7x7ShiftRight: Dij = saturation0and255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >6. +\param columns Number of columns in source/destination array. Must be >6. +\param Kernel The 2D convolution kernel of size 7x7. +\param NRightShift The number of right bit shifts to apply to the convolution sum. Must be <7. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel7x7ShiftRight(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char NRightShift) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 7) || (rows < 7) || (NRightShift > 7)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using ConvolveKernel9x9ShiftRight: Dij = saturation255( ... ) + +\param Src The source 2D byte array to convolve. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >8. +\param columns Number of columns in source/destination array. Must be >8. +\param Kernel The 2D convolution kernel of size 9x9. +\param NRightShift The number of right bit shifts to apply to the convolution sum. Must be <7. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterConvolveKernel9x9ShiftRight(unsigned char *Src, unsigned char *Dest, int rows, int columns, + signed short *Kernel, unsigned char NRightShift) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL) || (Kernel == NULL)) + return false; + + if ((columns < 9) || (rows < 9) || (NRightShift > 7)) + return false; + + /* No implementation yet */ + return false; +} + +/* ------------------------------------------------------------------------------------ */ + +/*! +\brief Filter using SobelX: Dij = saturation255( ... ) + +\param Src The source 2D byte array to sobel-filter. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >2. +\param columns Number of columns in source/destination array. Must be >7. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterSobelX(unsigned char *Src, unsigned char *Dest, int rows, int columns) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL)) + return false; + + if ((columns < 8) || (rows < 3)) + return false; + + /* No implementation yet */ + return false; +} + +/*! +\brief Filter using SobelXShiftRight: Dij = saturation255( ... ) + +\param Src The source 2D byte array to sobel-filter. Should be different from destination. +\param Dest The destination 2D byte array to store the result in. Should be different from source. +\param rows Number of rows in source/destination array. Must be >2. +\param columns Number of columns in source/destination array. Must be >8. +\param NRightShift The number of right bit shifts to apply to the filter sum. Must be <7. + +Note: No implementation available for this function yet. + +\return Returns true if filter was applied, false otherwise. +*/ +bool SDL_imageFilterSobelXShiftRight(unsigned char *Src, unsigned char *Dest, int rows, int columns, + unsigned char NRightShift) +{ + /* Validate input parameters */ + if ((Src == NULL) || (Dest == NULL)) + return false; + if ((columns < 8) || (rows < 3) || (NRightShift > 7)) + return false; + + /* No implementation yet */ + return false; +} diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.h b/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.h new file mode 100644 index 0000000..44edca7 --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_imageFilter.h @@ -0,0 +1,161 @@ +/* + +SDL3_imageFilter.h: byte-image "filter" routines + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#ifndef _SDL3_imageFilter_h +#define _SDL3_imageFilter_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + /* ---- Function Prototypes */ + +#ifdef _MSC_VER +# if defined(DLL_EXPORT) && !defined(LIBSDL3_GFX_DLL_IMPORT) +# define SDL3_IMAGEFILTER_SCOPE __declspec(dllexport) +# else +# ifdef LIBSDL3_GFX_DLL_IMPORT +# define SDL3_IMAGEFILTER_SCOPE __declspec(dllimport) +# endif +# endif +#endif +#ifndef SDL3_IMAGEFILTER_SCOPE +# define SDL3_IMAGEFILTER_SCOPE extern +#endif + + /* Comments: */ + /* 1.) Convolution routines are not implemented at this time. */ + + // + // All routines return: + // true OK + // false Error (internal error, parameter error) + // + + // SDL_imageFilterAdd: D = saturation255(S1 + S2) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterAdd(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterMean: D = S1/2 + S2/2 + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMean(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterSub: D = saturation0(S1 - S2) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterSub(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterAbsDiff: D = | S1 - S2 | + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterAbsDiff(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterMult: D = saturation(S1 * S2) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMult(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterMultUnbound: D = S1 * S2 unbound + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMultUnbound(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterMultInv: D = 255 - ((255 - S1) * (255 - S2)) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMultInv(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterMultDivby2: D = saturation255(S1/2 * S2) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMultDivby2(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, + unsigned int length); + + // SDL_imageFilterMultDivby4: D = saturation255(S1/2 * S2/2) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMultDivby4(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, + unsigned int length); + + // SDL_imageFilterBitAnd: D = S1 & S2 + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterBitAnd(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterBitOr: D = S1 | S2 + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterBitOr(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterDiv: D = S1 / S2 + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterDiv(unsigned char *Src1, unsigned char *Src2, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterBitNegation: D = !S + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterBitNegation(unsigned char *Src1, unsigned char *Dest, unsigned int length); + + // SDL_imageFilterAddByte: D = saturation255(S + C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterAddByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C); + + // SDL_imageFilterAddUint: D = saturation255(S + (uint)C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterAddUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned int bpp, unsigned int C); + + // SDL_imageFilterAddByteToHalf: D = saturation255(S/2 + C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterAddByteToHalf(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned char C); + + // SDL_imageFilterSubByte: D = saturation0(S - C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterSubByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C); + + // SDL_imageFilterSubUint: D = saturation0(S - (uint)C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterSubUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned int bpp, unsigned int C); + + // SDL_imageFilterShiftRight: D = saturation0(S >> N) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterShiftRight(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char N); + + // SDL_imageFilterShiftRightUint: D = saturation0((uint)S >> N) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterShiftRightUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned int bpp, unsigned char N); + + // SDL_imageFilterMultByByte: D = saturation255(S * C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterMultByByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char C); + + // SDL_imageFilterShiftRightAndMultByByte: D = saturation255((S >> N) * C) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterShiftRightAndMultByByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned char N, unsigned char C); + + // SDL_imageFilterShiftLeftByte: D = (S << N) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterShiftLeftByte(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned char N); + + // SDL_imageFilterShiftLeftUint: D = ((uint)S << N) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterShiftLeftUint(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned int bpp, unsigned char N); + + // SDL_imageFilterShiftLeft: D = saturation255(S << N) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterShiftLeft(unsigned char *Src1, unsigned char *Dest, unsigned int length, unsigned char N); + + // SDL_imageFilterBinarizeUsingThreshold: D = S >= T ? 255:0 + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterBinarizeUsingThreshold(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned char T); + + // SDL_imageFilterClipToRange: D = (S >= Tmin) & (S <= Tmax) 255:0 + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterClipToRange(unsigned char *Src1, unsigned char *Dest, unsigned int length, + unsigned char Tmin, unsigned char Tmax); + + // SDL_imageFilterNormalizeLinear: D = saturation255((Nmax - Nmin)/(Cmax - Cmin)*(S - Cmin) + Nmin) + SDL3_IMAGEFILTER_SCOPE bool SDL_imageFilterNormalizeLinear(unsigned char *Src, unsigned char *Dest, unsigned int length, int Cmin, + int Cmax, int Nmin, int Nmax); + + /* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL3_imageFilter_h */ diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.c b/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.c new file mode 100644 index 0000000..0ba72ac --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.c @@ -0,0 +1,1636 @@ +/* + +SDL3_rotozoom.c: rotozoomer, zoomer and shrinker for 32bit or 8bit surfaces + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#ifdef WIN32 +#include +#endif + +#include +#include + +#include "SDL3_rotozoom.h" + +/*! +\brief Returns maximum of two numbers a and b. +*/ +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) + +/*! +\brief Number of guard rows added to destination surfaces. + +This is a simple but effective workaround for observed issues. +These rows allocate extra memory and are then hidden from the surface. +Rows are added to the end of destination surfaces when they are allocated. +This catches any potential overflows which seem to happen with +just the right src image dimensions and scale/rotation and can lead +to a situation where the program can segfault. +*/ +#define GUARD_ROWS (2) + +/*! +\brief Lower limit of absolute zoom factor or rotation degrees. +*/ +#define VALUE_LIMIT 0.001 + +/*! +\brief Returns colorkey info for a surface +*/ +Uint32 _colorkey(SDL_Surface *src) +{ + Uint32 key = 0; + SDL_GetSurfaceColorKey(src, &key); + return key; +} + + +/*! +\brief Internal 32 bit integer-factor averaging Shrinker. + +Shrinks 32 bit RGBA/ABGR 'src' surface to 'dst' surface. +Averages color and alpha values values of src pixels to calculate dst pixels. +Assumes src and dst surfaces are of 32 bit depth. +Assumes dst surface was allocated with the correct dimensions. + +\param src The surface to shrink (input). +\param dst The shrunken surface (output). +\param factorx The horizontal shrinking ratio. +\param factory The vertical shrinking ratio. + +\return 0 for success or -1 for error. +*/ +int _shrinkSurfaceRGBA(SDL_Surface * src, SDL_Surface * dst, int factorx, int factory) +{ + int x, y, dx, dy, dgap, ra, ga, ba, aa; + int n_average; + SDL_Color *sp, *osp, *oosp; + SDL_Color *dp; + + /* + * Averaging integer shrink + */ + + /* Precalculate division factor */ + n_average = factorx*factory; + + /* + * Scan destination + */ + sp = (SDL_Color *) src->pixels; + + dp = (SDL_Color *) dst->pixels; + dgap = dst->pitch - dst->w * 4; + + for (y = 0; y < dst->h; y++) { + + osp=sp; + for (x = 0; x < dst->w; x++) { + + /* Trace out source box and accumulate */ + oosp=sp; + ra=ga=ba=aa=0; + for (dy=0; dy < factory; dy++) { + for (dx=0; dx < factorx; dx++) { + ra += sp->r; + ga += sp->g; + ba += sp->b; + aa += sp->a; + + sp++; + } + /* src dx loop */ + sp = (SDL_Color *)((Uint8*)sp + (src->pitch - 4*factorx)); // next y + } + /* src dy loop */ + + /* next box-x */ + sp = (SDL_Color *)((Uint8*)oosp + 4*factorx); + + /* Store result in destination */ + dp->r = ra/n_average; + dp->g = ga/n_average; + dp->b = ba/n_average; + dp->a = aa/n_average; + + /* + * Advance destination pointer + */ + dp++; + } + /* dst x loop */ + + /* next box-y */ + sp = (SDL_Color *)((Uint8*)osp + src->pitch*factory); + + /* + * Advance destination pointers + */ + dp = (SDL_Color *) ((Uint8 *) dp + dgap); + } + /* dst y loop */ + + return (0); +} + +/*! +\brief Internal 8 bit integer-factor averaging shrinker. + +Shrinks 8bit Y 'src' surface to 'dst' surface. +Averages color (brightness) values values of src pixels to calculate dst pixels. +Assumes src and dst surfaces are of 8 bit depth. +Assumes dst surface was allocated with the correct dimensions. + +\param src The surface to shrink (input). +\param dst The shrunken surface (output). +\param factorx The horizontal shrinking ratio. +\param factory The vertical shrinking ratio. + +\return 0 for success or -1 for error. +*/ +int _shrinkSurfaceY(SDL_Surface * src, SDL_Surface * dst, int factorx, int factory) +{ + int x, y, dx, dy, dgap, a; + int n_average; + Uint8 *sp, *osp, *oosp; + Uint8 *dp; + + /* + * Averaging integer shrink + */ + + /* Precalculate division factor */ + n_average = factorx*factory; + + /* + * Scan destination + */ + sp = (Uint8 *) src->pixels; + + dp = (Uint8 *) dst->pixels; + dgap = dst->pitch - dst->w; + + for (y = 0; y < dst->h; y++) { + + osp=sp; + for (x = 0; x < dst->w; x++) { + + /* Trace out source box and accumulate */ + oosp=sp; + a=0; + for (dy=0; dy < factory; dy++) { + for (dx=0; dx < factorx; dx++) { + a += (*sp); + /* next x */ + sp++; + } + /* end src dx loop */ + /* next y */ + sp = (Uint8 *)((Uint8*)sp + (src->pitch - factorx)); + } + /* end src dy loop */ + + /* next box-x */ + sp = (Uint8 *)((Uint8*)oosp + factorx); + + /* Store result in destination */ + *dp = a/n_average; + + /* + * Advance destination pointer + */ + dp++; + } + /* end dst x loop */ + + /* next box-y */ + sp = (Uint8 *)((Uint8*)osp + src->pitch*factory); + + /* + * Advance destination pointers + */ + dp = (Uint8 *)((Uint8 *)dp + dgap); + } + /* end dst y loop */ + + return (0); +} + +/*! +\brief Internal 32 bit Zoomer with optional anti-aliasing by bilinear interpolation. + +Zooms 32 bit RGBA/ABGR 'src' surface to 'dst' surface. +Assumes src and dst surfaces are of 32 bit depth. +Assumes dst surface was allocated with the correct dimensions. + +\param src The surface to zoom (input). +\param dst The zoomed surface (output). +\param flipx Flag indicating if the image should be horizontally flipped. +\param flipy Flag indicating if the image should be vertically flipped. +\param smooth Antialiasing flag; set to SMOOTHING_ON to enable. + +\return 0 for success or -1 for error. +*/ +int _zoomSurfaceRGBA(SDL_Surface * src, SDL_Surface * dst, int flipx, int flipy, int smooth) +{ + int x, y, sx, sy, ssx, ssy, *sax, *say, *csax, *csay, *salast, csx, csy, ex, ey, cx, cy, sstep, sstepx, sstepy; + SDL_Color *c00, *c01, *c10, *c11; + SDL_Color *sp, *csp, *dp; + int spixelgap, spixelw, spixelh, dgap, t1, t2; + + /* + * Allocate memory for row/column increments + */ + if ((sax = (int *) malloc((dst->w + 1) * sizeof(Uint32))) == NULL) { + return (-1); + } + if ((say = (int *) malloc((dst->h + 1) * sizeof(Uint32))) == NULL) { + free(sax); + return (-1); + } + + /* + * Precalculate row increments + */ + spixelw = (src->w - 1); + spixelh = (src->h - 1); + if (smooth) { + sx = (int) (65536.0 * (float) spixelw / (float) (dst->w - 1)); + sy = (int) (65536.0 * (float) spixelh / (float) (dst->h - 1)); + } else { + sx = (int) (65536.0 * (float) (src->w) / (float) (dst->w)); + sy = (int) (65536.0 * (float) (src->h) / (float) (dst->h)); + } + + /* Maximum scaled source size */ + ssx = (src->w << 16) - 1; + ssy = (src->h << 16) - 1; + + /* Precalculate horizontal row increments */ + csx = 0; + csax = sax; + for (x = 0; x <= dst->w; x++) { + *csax = csx; + csax++; + csx += sx; + + /* Guard from overflows */ + if (csx > ssx) { + csx = ssx; + } + } + + /* Precalculate vertical row increments */ + csy = 0; + csay = say; + for (y = 0; y <= dst->h; y++) { + *csay = csy; + csay++; + csy += sy; + + /* Guard from overflows */ + if (csy > ssy) { + csy = ssy; + } + } + + sp = (SDL_Color *) src->pixels; + dp = (SDL_Color *) dst->pixels; + dgap = dst->pitch - dst->w * 4; + spixelgap = src->pitch/4; + + if (flipx) sp += spixelw; + if (flipy) sp += (spixelgap * spixelh); + + /* + * Switch between interpolating and non-interpolating code + */ + if (smooth) { + + /* + * Interpolating Zoom + */ + csay = say; + for (y = 0; y < dst->h; y++) { + csp = sp; + csax = sax; + for (x = 0; x < dst->w; x++) { + /* + * Setup color source pointers + */ + ex = (*csax & 0xffff); + ey = (*csay & 0xffff); + cx = (*csax >> 16); + cy = (*csay >> 16); + sstepx = cx < spixelw; + sstepy = cy < spixelh; + c00 = sp; + c01 = sp; + c10 = sp; + if (sstepy) { + if (flipy) { + c10 -= spixelgap; + } else { + c10 += spixelgap; + } + } + c11 = c10; + if (sstepx) { + if (flipx) { + c01--; + c11--; + } else { + c01++; + c11++; + } + } + + /* + * Draw and interpolate colors + */ + t1 = ((((c01->r - c00->r) * ex) >> 16) + c00->r) & 0xff; + t2 = ((((c11->r - c10->r) * ex) >> 16) + c10->r) & 0xff; + dp->r = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01->g - c00->g) * ex) >> 16) + c00->g) & 0xff; + t2 = ((((c11->g - c10->g) * ex) >> 16) + c10->g) & 0xff; + dp->g = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01->b - c00->b) * ex) >> 16) + c00->b) & 0xff; + t2 = ((((c11->b - c10->b) * ex) >> 16) + c10->b) & 0xff; + dp->b = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01->a - c00->a) * ex) >> 16) + c00->a) & 0xff; + t2 = ((((c11->a - c10->a) * ex) >> 16) + c10->a) & 0xff; + dp->a = (((t2 - t1) * ey) >> 16) + t1; + /* + * Advance source pointer x + */ + salast = csax; + csax++; + sstep = (*csax >> 16) - (*salast >> 16); + if (flipx) { + sp -= sstep; + } else { + sp += sstep; + } + + /* + * Advance destination pointer x + */ + dp++; + } + /* + * Advance source pointer y + */ + salast = csay; + csay++; + sstep = (*csay >> 16) - (*salast >> 16); + sstep *= spixelgap; + if (flipy) { + sp = csp - sstep; + } else { + sp = csp + sstep; + } + + /* + * Advance destination pointer y + */ + dp = (SDL_Color *) ((Uint8 *) dp + dgap); + } + } else { + /* + * Non-Interpolating Zoom + */ + csay = say; + for (y = 0; y < dst->h; y++) { + csp = sp; + csax = sax; + for (x = 0; x < dst->w; x++) { + /* + * Draw + */ + *dp = *sp; + + /* + * Advance source pointer x + */ + salast = csax; + csax++; + sstep = (*csax >> 16) - (*salast >> 16); + if (flipx) sstep = -sstep; + sp += sstep; + + /* + * Advance destination pointer x + */ + dp++; + } + /* + * Advance source pointer y + */ + salast = csay; + csay++; + sstep = (*csay >> 16) - (*salast >> 16); + sstep *= spixelgap; + if (flipy) sstep = -sstep; + sp = csp + sstep; + + /* + * Advance destination pointer y + */ + dp = (SDL_Color *) ((Uint8 *) dp + dgap); + } + } + + /* + * Remove temp arrays + */ + free(sax); + free(say); + + return (0); +} + +/*! + +\brief Internal 8 bit Zoomer without smoothing. + +Zooms 8bit palette/Y 'src' surface to 'dst' surface. +Assumes src and dst surfaces are of 8 bit depth. +Assumes dst surface was allocated with the correct dimensions. + +\param src The surface to zoom (input). +\param dst The zoomed surface (output). +\param flipx Flag indicating if the image should be horizontally flipped. +\param flipy Flag indicating if the image should be vertically flipped. + +\return 0 for success or -1 for error. +*/ +int _zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst, int flipx, int flipy) +{ + int x, y; + Uint32 *sax, *say, *csax, *csay; + int csx, csy; + Uint8 *sp, *dp, *csp; + int dgap; + + /* + * Allocate memory for row increments + */ + if ((sax = (Uint32 *) malloc((dst->w + 1) * sizeof(Uint32))) == NULL) { + return (-1); + } + if ((say = (Uint32 *) malloc((dst->h + 1) * sizeof(Uint32))) == NULL) { + free(sax); + return (-1); + } + + /* + * Pointer setup + */ + sp = csp = (Uint8 *) src->pixels; + dp = (Uint8 *) dst->pixels; + dgap = dst->pitch - dst->w; + + if (flipx) csp += (src->w-1); + if (flipy) csp = ( (Uint8*)csp + src->pitch*(src->h-1) ); + + /* + * Precalculate row increments + */ + csx = 0; + csax = sax; + for (x = 0; x < dst->w; x++) { + csx += src->w; + *csax = 0; + while (csx >= dst->w) { + csx -= dst->w; + (*csax)++; + } + (*csax) = (*csax) * (flipx ? -1 : 1); + csax++; + } + csy = 0; + csay = say; + for (y = 0; y < dst->h; y++) { + csy += src->h; + *csay = 0; + while (csy >= dst->h) { + csy -= dst->h; + (*csay)++; + } + (*csay) = (*csay) * (flipy ? -1 : 1); + csay++; + } + + /* + * Draw + */ + csay = say; + for (y = 0; y < dst->h; y++) { + csax = sax; + sp = csp; + for (x = 0; x < dst->w; x++) { + /* + * Draw + */ + *dp = *sp; + /* + * Advance source pointers + */ + sp += (*csax); + csax++; + /* + * Advance destination pointer + */ + dp++; + } + /* + * Advance source pointer (for row) + */ + csp += ((*csay) * src->pitch); + csay++; + + /* + * Advance destination pointers + */ + dp += dgap; + } + + /* + * Remove temp arrays + */ + free(sax); + free(say); + + return (0); +} + +/*! +\brief Internal 32 bit rotozoomer with optional anti-aliasing. + +Rotates and zooms 32 bit RGBA/ABGR 'src' surface to 'dst' surface based on the control +parameters by scanning the destination surface and applying optionally anti-aliasing +by bilinear interpolation. +Assumes src and dst surfaces are of 32 bit depth. +Assumes dst surface was allocated with the correct dimensions. + +\param src Source surface. +\param dst Destination surface. +\param cx Horizontal center coordinate. +\param cy Vertical center coordinate. +\param isin Integer version of sine of angle. +\param icos Integer version of cosine of angle. +\param flipx Flag indicating horizontal mirroring should be applied. +\param flipy Flag indicating vertical mirroring should be applied. +\param smooth Flag indicating anti-aliasing should be used. +*/ +void _transformSurfaceRGBA(SDL_Surface * src, SDL_Surface * dst, int cx, int cy, int isin, int icos, int flipx, int flipy, int smooth) +{ + int x, y, t1, t2, dx, dy, xd, yd, sdx, sdy, ax, ay, ex, ey, sw, sh; + SDL_Color c00, c01, c10, c11, cswap; + SDL_Color *pc, *sp; + int gap; + + /* + * Variable setup + */ + xd = ((src->w - dst->w) << 15); + yd = ((src->h - dst->h) << 15); + ax = (cx << 16) - (icos * cx); + ay = (cy << 16) - (isin * cx); + sw = src->w - 1; + sh = src->h - 1; + pc = (SDL_Color *) dst->pixels; + gap = dst->pitch - dst->w * 4; + + /* + * Switch between interpolating and non-interpolating code + */ + if (smooth) { + for (y = 0; y < dst->h; y++) { + dy = cy - y; + sdx = (ax + (isin * dy)) + xd; + sdy = (ay - (icos * dy)) + yd; + for (x = 0; x < dst->w; x++) { + dx = (sdx >> 16); + dy = (sdy >> 16); + if (flipx) dx = sw - dx; + if (flipy) dy = sh - dy; + if ((dx > -1) && (dy > -1) && (dx < (src->w-1)) && (dy < (src->h-1))) { + sp = (SDL_Color *)src->pixels;; + sp += ((src->pitch/4) * dy); + sp += dx; + c00 = *sp; + sp += 1; + c01 = *sp; + sp += (src->pitch/4); + c11 = *sp; + sp -= 1; + c10 = *sp; + if (flipx) { + cswap = c00; c00=c01; c01=cswap; + cswap = c10; c10=c11; c11=cswap; + } + if (flipy) { + cswap = c00; c00=c10; c10=cswap; + cswap = c01; c01=c11; c11=cswap; + } + /* + * Interpolate colors + */ + ex = (sdx & 0xffff); + ey = (sdy & 0xffff); + t1 = ((((c01.r - c00.r) * ex) >> 16) + c00.r) & 0xff; + t2 = ((((c11.r - c10.r) * ex) >> 16) + c10.r) & 0xff; + pc->r = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01.g - c00.g) * ex) >> 16) + c00.g) & 0xff; + t2 = ((((c11.g - c10.g) * ex) >> 16) + c10.g) & 0xff; + pc->g = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01.b - c00.b) * ex) >> 16) + c00.b) & 0xff; + t2 = ((((c11.b - c10.b) * ex) >> 16) + c10.b) & 0xff; + pc->b = (((t2 - t1) * ey) >> 16) + t1; + t1 = ((((c01.a - c00.a) * ex) >> 16) + c00.a) & 0xff; + t2 = ((((c11.a - c10.a) * ex) >> 16) + c10.a) & 0xff; + pc->a = (((t2 - t1) * ey) >> 16) + t1; + } + sdx += icos; + sdy += isin; + pc++; + } + pc = (SDL_Color *) ((Uint8 *) pc + gap); + } + } else { + for (y = 0; y < dst->h; y++) { + dy = cy - y; + sdx = (ax + (isin * dy)) + xd; + sdy = (ay - (icos * dy)) + yd; + for (x = 0; x < dst->w; x++) { + dx = (short) (sdx >> 16); + dy = (short) (sdy >> 16); + if (flipx) dx = (src->w-1)-dx; + if (flipy) dy = (src->h-1)-dy; + if ((dx >= 0) && (dy >= 0) && (dx < src->w) && (dy < src->h)) { + sp = (SDL_Color *) ((Uint8 *) src->pixels + src->pitch * dy); + sp += dx; + *pc = *sp; + } + sdx += icos; + sdy += isin; + pc++; + } + pc = (SDL_Color *) ((Uint8 *) pc + gap); + } + } +} + +/*! + +\brief Rotates and zooms 8 bit palette/Y 'src' surface to 'dst' surface without smoothing. + +Rotates and zooms 8 bit RGBA/ABGR 'src' surface to 'dst' surface based on the control +parameters by scanning the destination surface. +Assumes src and dst surfaces are of 8 bit depth. +Assumes dst surface was allocated with the correct dimensions. + +\param src Source surface. +\param dst Destination surface. +\param cx Horizontal center coordinate. +\param cy Vertical center coordinate. +\param isin Integer version of sine of angle. +\param icos Integer version of cosine of angle. +\param flipx Flag indicating horizontal mirroring should be applied. +\param flipy Flag indicating vertical mirroring should be applied. +*/ +void transformSurfaceY(SDL_Surface * src, SDL_Surface * dst, int cx, int cy, int isin, int icos, int flipx, int flipy) +{ + int x, y, dx, dy, xd, yd, sdx, sdy, ax, ay; + Uint8 *pc, *sp; + int gap; + + /* + * Variable setup + */ + xd = ((src->w - dst->w) << 15); + yd = ((src->h - dst->h) << 15); + ax = (cx << 16) - (icos * cx); + ay = (cy << 16) - (isin * cx); + pc = (Uint8 *) dst->pixels; + gap = dst->pitch - dst->w; + /* + * Clear surface to colorkey + */ + memset(pc, (int)(_colorkey(src) & 0xff), dst->pitch * dst->h); + /* + * Iterate through destination surface + */ + for (y = 0; y < dst->h; y++) { + dy = cy - y; + sdx = (ax + (isin * dy)) + xd; + sdy = (ay - (icos * dy)) + yd; + for (x = 0; x < dst->w; x++) { + dx = (short) (sdx >> 16); + dy = (short) (sdy >> 16); + if (flipx) dx = (src->w-1)-dx; + if (flipy) dy = (src->h-1)-dy; + if ((dx >= 0) && (dy >= 0) && (dx < src->w) && (dy < src->h)) { + sp = (Uint8 *) (src->pixels); + sp += (src->pitch * dy + dx); + *pc = *sp; + } + sdx += icos; + sdy += isin; + pc++; + } + pc += gap; + } +} + +/*! +\brief Rotates a 8/16/24/32 bit surface in increments of 90 degrees. + +Specialized 90 degree rotator which rotates a 'src' surface in 90 degree +increments clockwise returning a new surface. Faster than rotozoomer since +no scanning or interpolation takes place. Input surface must be 8/16/24/32 bit. +(code contributed by J. Schiller, improved by C. Allport and A. Schiffler) + +\param src Source surface to rotate. +\param numClockwiseTurns Number of clockwise 90 degree turns to apply to the source. + +\returns The new, rotated surface; or NULL for surfaces with incorrect input format. +*/ +SDL_Surface* rotateSurface90Degrees(SDL_Surface* src, int numClockwiseTurns) +{ + int row, col, newWidth, newHeight; + int bpp, bpr; + SDL_Surface* dst; + Uint8* srcBuf; + Uint8* dstBuf; + int normalizedClockwiseTurns; + const SDL_PixelFormatDetails* details; + + /* Has to be a valid surface pointer and be a Nbit surface where n is divisible by 8 */ + if (!src || + !src->format) { + SDL_SetError("NULL source surface or source surface format"); + return NULL; + } + + details = SDL_GetPixelFormatDetails(src->format); + if ((details->bits_per_pixel % 8) != 0) { + SDL_SetError("Invalid source surface bit depth"); + return NULL; + } + + /* normalize numClockwiseTurns */ + normalizedClockwiseTurns = (numClockwiseTurns % 4); + if (normalizedClockwiseTurns < 0) { + normalizedClockwiseTurns += 4; + } + + /* If turns are even, our new width/height will be the same as the source surface */ + if (normalizedClockwiseTurns % 2) { + newWidth = src->h; + newHeight = src->w; + } else { + newWidth = src->w; + newHeight = src->h; + } + + dst = SDL_CreateSurface(newWidth, newHeight, src->format); + if(!dst) { + SDL_SetError("Could not create destination surface"); + return NULL; + } + + if (SDL_MUSTLOCK(src)) { + SDL_LockSurface(src); + } + if (SDL_MUSTLOCK(dst)) { + SDL_LockSurface(dst); + } + + /* Calculate byte-per-pixel */ + bpp = details->bits_per_pixel / 8; + + switch(normalizedClockwiseTurns) { + case 0: /* Make a copy of the surface */ + { + /* Unfortunately SDL_BlitSurface cannot be used to make a copy of the surface + since it does not preserve alpha. */ + + if (src->pitch == dst->pitch) { + /* If the pitch is the same for both surfaces, the memory can be copied all at once. */ + memcpy(dst->pixels, src->pixels, (src->h * src->pitch)); + } + else + { + /* If the pitch differs, copy each row separately */ + srcBuf = (Uint8*)(src->pixels); + dstBuf = (Uint8*)(dst->pixels); + bpr = src->w * bpp; + for (row = 0; row < src->h; row++) { + memcpy(dstBuf, srcBuf, bpr); + srcBuf += src->pitch; + dstBuf += dst->pitch; + } + } + } + break; + + /* rotate clockwise */ + case 1: /* rotated 90 degrees clockwise */ + { + for (row = 0; row < src->h; ++row) { + srcBuf = (Uint8*)(src->pixels) + (row * src->pitch); + dstBuf = (Uint8*)(dst->pixels) + (dst->w - row - 1) * bpp; + for (col = 0; col < src->w; ++col) { + memcpy (dstBuf, srcBuf, bpp); + srcBuf += bpp; + dstBuf += dst->pitch; + } + } + } + break; + + case 2: /* rotated 180 degrees clockwise */ + { + for (row = 0; row < src->h; ++row) { + srcBuf = (Uint8*)(src->pixels) + (row * src->pitch); + dstBuf = (Uint8*)(dst->pixels) + ((dst->h - row - 1) * dst->pitch) + (dst->w - 1) * bpp; + for (col = 0; col < src->w; ++col) { + memcpy (dstBuf, srcBuf, bpp); + srcBuf += bpp; + dstBuf -= bpp; + } + } + } + break; + + case 3: /* rotated 270 degrees clockwise */ + { + for (row = 0; row < src->h; ++row) { + srcBuf = (Uint8*)(src->pixels) + (row * src->pitch); + dstBuf = (Uint8*)(dst->pixels) + (row * bpp) + ((dst->h - 1) * dst->pitch); + for (col = 0; col < src->w; ++col) { + memcpy (dstBuf, srcBuf, bpp); + srcBuf += bpp; + dstBuf -= dst->pitch; + } + } + } + break; + } + /* end switch */ + + if (SDL_MUSTLOCK(src)) { + SDL_UnlockSurface(src); + } + if (SDL_MUSTLOCK(dst)) { + SDL_UnlockSurface(dst); + } + + return dst; +} + + +/*! +\brief Internal target surface sizing function for rotozooms with trig result return. + +\param width The source surface width. +\param height The source surface height. +\param angle The angle to rotate in degrees. +\param zoomx The horizontal scaling factor. +\param zoomy The vertical scaling factor. +\param dstwidth The calculated width of the destination surface. +\param dstheight The calculated height of the destination surface. +\param canglezoom The sine of the angle adjusted by the zoom factor. +\param sanglezoom The cosine of the angle adjusted by the zoom factor. + +*/ +void _rotozoomSurfaceSizeTrig(int width, int height, double angle, double zoomx, double zoomy, + int *dstwidth, int *dstheight, + double *canglezoom, double *sanglezoom) +{ + double x, y, cx, cy, sx, sy; + double radangle; + int dstwidthhalf, dstheighthalf; + + /* + * Determine destination width and height by rotating a centered source box + */ + radangle = angle * (M_PI / 180.0); + *sanglezoom = sin(radangle); + *canglezoom = cos(radangle); + *sanglezoom *= zoomx; + *canglezoom *= zoomy; + x = (double)(width / 2); + y = (double)(height / 2); + cx = *canglezoom * x; + cy = *canglezoom * y; + sx = *sanglezoom * x; + sy = *sanglezoom * y; + + dstwidthhalf = MAX((int) + ceil(MAX(MAX(MAX(fabs(cx + sy), fabs(cx - sy)), fabs(-cx + sy)), fabs(-cx - sy))), 1); + dstheighthalf = MAX((int) + ceil(MAX(MAX(MAX(fabs(sx + cy), fabs(sx - cy)), fabs(-sx + cy)), fabs(-sx - cy))), 1); + *dstwidth = 2 * dstwidthhalf; + *dstheight = 2 * dstheighthalf; +} + +/*! +\brief Returns the size of the resulting target surface for a rotozoomSurfaceXY() call. + +\param width The source surface width. +\param height The source surface height. +\param angle The angle to rotate in degrees. +\param zoomx The horizontal scaling factor. +\param zoomy The vertical scaling factor. +\param dstwidth The calculated width of the rotozoomed destination surface. +\param dstheight The calculated height of the rotozoomed destination surface. +*/ +void rotozoomSurfaceSizeXY(int width, int height, double angle, double zoomx, double zoomy, int *dstwidth, int *dstheight) +{ + double dummy_sanglezoom, dummy_canglezoom; + + _rotozoomSurfaceSizeTrig(width, height, angle, zoomx, zoomy, dstwidth, dstheight, &dummy_sanglezoom, &dummy_canglezoom); +} + +/*! +\brief Returns the size of the resulting target surface for a rotozoomSurface() call. + +\param width The source surface width. +\param height The source surface height. +\param angle The angle to rotate in degrees. +\param zoom The scaling factor. +\param dstwidth The calculated width of the rotozoomed destination surface. +\param dstheight The calculated height of the rotozoomed destination surface. +*/ +void rotozoomSurfaceSize(int width, int height, double angle, double zoom, int *dstwidth, int *dstheight) +{ + double dummy_sanglezoom, dummy_canglezoom; + + _rotozoomSurfaceSizeTrig(width, height, angle, zoom, zoom, dstwidth, dstheight, &dummy_sanglezoom, &dummy_canglezoom); +} + +/*! +\brief Rotates and zooms a surface and optional anti-aliasing. + +Rotates and zoomes a 32bit or 8bit 'src' surface to newly created 'dst' surface. +'angle' is the rotation in degrees and 'zoom' a scaling factor. If 'smooth' is set +then the destination 32bit surface is anti-aliased. If the surface is not 8bit +or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly. + +\param src The surface to rotozoom. +\param angle The angle to rotate in degrees. +\param zoom The scaling factor. +\param smooth Antialiasing flag; set to SMOOTHING_ON to enable. + +\return The new rotozoomed surface. +*/ +SDL_Surface *rotozoomSurface(SDL_Surface * src, double angle, double zoom, int smooth) +{ + return rotozoomSurfaceXY(src, angle, zoom, zoom, smooth); +} + +/*! +\brief Rotates and zooms a surface with different horizontal and vertival scaling factors and optional anti-aliasing. + +Rotates and zooms a 32bit or 8bit 'src' surface to newly created 'dst' surface. +'angle' is the rotation in degrees, 'zoomx and 'zoomy' scaling factors. If 'smooth' is set +then the destination 32bit surface is anti-aliased. If the surface is not 8bit +or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly. + +\param src The surface to rotozoom. +\param angle The angle to rotate in degrees. +\param zoomx The horizontal scaling factor. +\param zoomy The vertical scaling factor. +\param smooth Antialiasing flag; set to SMOOTHING_ON to enable. + +\return The new rotozoomed surface. +*/ +SDL_Surface *rotozoomSurfaceXY(SDL_Surface * src, double angle, double zoomx, double zoomy, int smooth) +{ + SDL_Surface *rz_src; + SDL_Surface *rz_dst; + double zoominv; + double sanglezoom, canglezoom, sanglezoominv, canglezoominv; + int dstwidthhalf, dstwidth, dstheighthalf, dstheight; + int is32bit; + int i, src_converted; + int flipx,flipy; + const SDL_PixelFormatDetails* details; + SDL_Palette* pal_dst; + SDL_Palette* pal_src; + + /* + * Sanity check + */ + if (src == NULL) { + return (NULL); + } + + /* + * Determine if source surface is 32bit or 8bit + */ + details = SDL_GetPixelFormatDetails(src->format); + is32bit = (details->bits_per_pixel == 32); + if ((is32bit) || (details->bits_per_pixel == 8)) { + /* + * Use source surface 'as is' + */ + rz_src = src; + src_converted = 0; + } else { + /* + * New source surface is 32bit with a defined RGBA ordering + */ + rz_src = + SDL_CreateSurface(src->w, src->h, SDL_PIXELFORMAT_RGBA32); + + SDL_BlitSurface(src, NULL, rz_src, NULL); + + src_converted = 1; + is32bit = 1; + } + + /* + * Sanity check zoom factor + */ + flipx = (zoomx<0.0); + if (flipx) zoomx=-zoomx; + flipy = (zoomy<0.0); + if (flipy) zoomy=-zoomy; + if (zoomx < VALUE_LIMIT) zoomx = VALUE_LIMIT; + if (zoomy < VALUE_LIMIT) zoomy = VALUE_LIMIT; + zoominv = 65536.0 / (zoomx * zoomx); + + /* + * Check if we have a rotozoom or just a zoom + */ + if (fabs(angle) > VALUE_LIMIT) { + + /* + * Angle!=0: full rotozoom + */ + /* + * ----------------------- + */ + + /* Determine target size */ + _rotozoomSurfaceSizeTrig(rz_src->w, rz_src->h, angle, zoomx, zoomy, &dstwidth, &dstheight, &canglezoom, &sanglezoom); + + /* + * Calculate target factors from sin/cos and zoom + */ + sanglezoominv = sanglezoom; + canglezoominv = canglezoom; + sanglezoominv *= zoominv; + canglezoominv *= zoominv; + + /* Calculate half size */ + dstwidthhalf = dstwidth / 2; + dstheighthalf = dstheight / 2; + + /* + * Alloc space to completely contain the rotated surface + */ + rz_dst = NULL; + if (is32bit) { + /* + * Target surface is 32bit with source RGBA/ABGR ordering + */ + rz_dst = + SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, rz_src->format); + } else { + /* + * Target surface is 8bit + */ + rz_dst = SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, SDL_PIXELFORMAT_INDEX8); + pal_dst = SDL_CreateSurfacePalette(rz_dst); + } + + /* Check target */ + if (rz_dst == NULL) + return NULL; + + /* Adjust for guard rows */ + rz_dst->h = dstheight; + + /* + * Lock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_LockSurface(rz_src); + } + + /* + * Check which kind of surface we have + */ + if (is32bit) { + /* + * Call the 32bit transformation routine to do the rotation (using alpha) + */ + _transformSurfaceRGBA(rz_src, rz_dst, dstwidthhalf, dstheighthalf, + (int) (sanglezoominv), (int) (canglezoominv), + flipx, flipy, + smooth); + } else { + /* + * Copy palette and colorkey info + */ + pal_src = SDL_GetSurfacePalette(rz_src); + for (i = 0; i < pal_src->ncolors; i++) { + pal_dst->colors[i] = pal_src->colors[i]; + } + pal_dst->ncolors = pal_src->ncolors; + /* + * Call the 8bit transformation routine to do the rotation + */ + transformSurfaceY(rz_src, rz_dst, dstwidthhalf, dstheighthalf, + (int) (sanglezoominv), (int) (canglezoominv), + flipx, flipy); + } + /* + * Unlock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_UnlockSurface(rz_src); + } + + } else { + + /* + * Angle=0: Just a zoom + */ + /* + * -------------------- + */ + + /* + * Calculate target size + */ + zoomSurfaceSize(rz_src->w, rz_src->h, zoomx, zoomy, &dstwidth, &dstheight); + + /* + * Alloc space to completely contain the zoomed surface + */ + rz_dst = NULL; + if (is32bit) { + /* + * Target surface is 32bit with source RGBA/ABGR ordering + */ + rz_dst = + SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, rz_src->format); + } else { + /* + * Target surface is 8bit + */ + rz_dst = SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, SDL_PIXELFORMAT_INDEX8); + pal_dst = SDL_CreateSurfacePalette(rz_dst); + } + + /* Check target */ + if (rz_dst == NULL) + return NULL; + + /* Adjust for guard rows */ + rz_dst->h = dstheight; + + /* + * Lock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_LockSurface(rz_src); + } + + /* + * Check which kind of surface we have + */ + if (is32bit) { + /* + * Call the 32bit transformation routine to do the zooming (using alpha) + */ + _zoomSurfaceRGBA(rz_src, rz_dst, flipx, flipy, smooth); + + } else { + /* + * Copy palette and colorkey info + */ + pal_src = SDL_GetSurfacePalette(rz_src); + for (i = 0; i < pal_src->ncolors; i++) { + pal_dst->colors[i] = pal_src->colors[i]; + } + pal_dst->ncolors = pal_src->ncolors; + + /* + * Call the 8bit transformation routine to do the zooming + */ + _zoomSurfaceY(rz_src, rz_dst, flipx, flipy); + } + + /* + * Unlock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_UnlockSurface(rz_src); + } + } + + /* + * Cleanup temp surface + */ + if (src_converted) { + SDL_DestroySurface(rz_src); + } + + /* + * Return destination surface + */ + return (rz_dst); +} + +/*! +\brief Calculates the size of the target surface for a zoomSurface() call. + +The minimum size of the target surface is 1. The input factors can be positive or negative. + +\param width The width of the source surface to zoom. +\param height The height of the source surface to zoom. +\param zoomx The horizontal zoom factor. +\param zoomy The vertical zoom factor. +\param dstwidth Pointer to an integer to store the calculated width of the zoomed target surface. +\param dstheight Pointer to an integer to store the calculated height of the zoomed target surface. +*/ +void zoomSurfaceSize(int width, int height, double zoomx, double zoomy, int *dstwidth, int *dstheight) +{ + /* + * Make zoom factors positive + */ + int flipx, flipy; + flipx = (zoomx<0.0); + if (flipx) zoomx = -zoomx; + flipy = (zoomy<0.0); + if (flipy) zoomy = -zoomy; + + /* + * Sanity check zoom factors + */ + if (zoomx < VALUE_LIMIT) { + zoomx = VALUE_LIMIT; + } + if (zoomy < VALUE_LIMIT) { + zoomy = VALUE_LIMIT; + } + + /* + * Calculate target size + */ + *dstwidth = (int) floor(((double) width * zoomx) + 0.5); + *dstheight = (int) floor(((double) height * zoomy) + 0.5); + if (*dstwidth < 1) { + *dstwidth = 1; + } + if (*dstheight < 1) { + *dstheight = 1; + } +} + +/*! +\brief Zoom a surface by independent horizontal and vertical factors with optional smoothing. + +Zooms a 32bit or 8bit 'src' surface to newly created 'dst' surface. +'zoomx' and 'zoomy' are scaling factors for width and height. If 'smooth' is on +then the destination 32bit surface is anti-aliased. If the surface is not 8bit +or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly. +If zoom factors are negative, the image is flipped on the axes. + +\param src The surface to zoom. +\param zoomx The horizontal zoom factor. +\param zoomy The vertical zoom factor. +\param smooth Antialiasing flag; set to SMOOTHING_ON to enable. + +\return The new, zoomed surface. +*/ +SDL_Surface *zoomSurface(SDL_Surface * src, double zoomx, double zoomy, int smooth) +{ + SDL_Surface *rz_src; + SDL_Surface *rz_dst; + int dstwidth, dstheight; + int is32bit; + int i, src_converted; + int flipx, flipy; + const SDL_PixelFormatDetails* details; + SDL_Palette* pal_src; + SDL_Palette* pal_dst; + + /* + * Sanity check + */ + if (src == NULL) + return (NULL); + + /* + * Determine if source surface is 32bit or 8bit + */ + details = SDL_GetPixelFormatDetails(src->format); + is32bit = (details->bits_per_pixel == 32); + if ((is32bit) || (details->bits_per_pixel == 8)) { + /* + * Use source surface 'as is' + */ + rz_src = src; + src_converted = 0; + } else { + /* + * New source surface is 32bit with a defined RGBA ordering + */ + rz_src = + SDL_CreateSurface(src->w, src->h, SDL_PIXELFORMAT_RGBA32); + if (rz_src == NULL) { + return NULL; + } + SDL_BlitSurface(src, NULL, rz_src, NULL); + src_converted = 1; + is32bit = 1; + } + + flipx = (zoomx<0.0); + if (flipx) zoomx = -zoomx; + flipy = (zoomy<0.0); + if (flipy) zoomy = -zoomy; + + /* Get size if target */ + zoomSurfaceSize(rz_src->w, rz_src->h, zoomx, zoomy, &dstwidth, &dstheight); + + /* + * Alloc space to completely contain the zoomed surface + */ + rz_dst = NULL; + if (is32bit) { + /* + * Target surface is 32bit with source RGBA/ABGR ordering + */ + rz_dst = + SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, rz_src->format); + } else { + /* + * Target surface is 8bit + */ + rz_dst = SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, SDL_PIXELFORMAT_INDEX8); + pal_dst = SDL_CreateSurfacePalette(rz_dst); + } + + /* Check target */ + if (rz_dst == NULL) { + /* + * Cleanup temp surface + */ + if (src_converted) { + SDL_DestroySurface(rz_src); + } + return NULL; + } + + /* Adjust for guard rows */ + rz_dst->h = dstheight; + + /* + * Lock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_LockSurface(rz_src); + } + + /* + * Check which kind of surface we have + */ + if (is32bit) { + /* + * Call the 32bit transformation routine to do the zooming (using alpha) + */ + _zoomSurfaceRGBA(rz_src, rz_dst, flipx, flipy, smooth); + } else { + /* + * Copy palette and colorkey info + */ + pal_src = SDL_GetSurfacePalette(rz_src); + for (i = 0; i < pal_src->ncolors; i++) { + pal_dst->colors[i] = pal_src->colors[i]; + } + pal_dst->ncolors = pal_src->ncolors; + /* + * Call the 8bit transformation routine to do the zooming + */ + _zoomSurfaceY(rz_src, rz_dst, flipx, flipy); + } + /* + * Unlock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_UnlockSurface(rz_src); + } + + /* + * Cleanup temp surface + */ + if (src_converted) { + SDL_DestroySurface(rz_src); + } + + /* + * Return destination surface + */ + return (rz_dst); +} + +/*! +\brief Shrink a surface by an integer ratio using averaging. + +Shrinks a 32bit or 8bit 'src' surface to a newly created 'dst' surface. +'factorx' and 'factory' are the shrinking ratios (i.e. 2=1/2 the size, +3=1/3 the size, etc.) The destination surface is antialiased by averaging +the source box RGBA or Y information. If the surface is not 8bit +or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly. +The input surface is not modified. The output surface is newly allocated. + +\param src The surface to shrink. +\param factorx The horizontal shrinking ratio. +\param factory The vertical shrinking ratio. + +\return The new, shrunken surface. +*/ +/*@null@*/ +SDL_Surface *shrinkSurface(SDL_Surface *src, int factorx, int factory) +{ + int result; + SDL_Surface *rz_src; + SDL_Surface *rz_dst = NULL; + int dstwidth, dstheight; + int is32bit; + int i, src_converted; + int haveError = 0; + const SDL_PixelFormatDetails* details; + SDL_Palette* pal_src; + SDL_Palette* pal_dst; + + /* + * Sanity check + */ + if (src == NULL) { + return (NULL); + } + + /* + * Determine if source surface is 32bit or 8bit + */ + details = SDL_GetPixelFormatDetails(src->format); + is32bit = (details->bits_per_pixel == 32); + if ((is32bit) || (details->bits_per_pixel == 8)) { + /* + * Use source surface 'as is' + */ + rz_src = src; + src_converted = 0; + } else { + /* + * New source surface is 32bit with a defined RGBA ordering + */ + rz_src = SDL_CreateSurface(src->w, src->h, SDL_PIXELFORMAT_RGBA32); + if (rz_src==NULL) { + haveError = 1; + goto exitShrinkSurface; + } + + SDL_BlitSurface(src, NULL, rz_src, NULL); + src_converted = 1; + is32bit = 1; + } + + /* + * Lock the surface + */ + if (SDL_MUSTLOCK(rz_src)) { + if (!SDL_LockSurface(rz_src)) { + haveError = 1; + goto exitShrinkSurface; + } + } + + /* Get size for target */ + dstwidth=rz_src->w/factorx; + while (dstwidth*factorx>rz_src->w) { dstwidth--; } + dstheight=rz_src->h/factory; + while (dstheight*factory>rz_src->h) { dstheight--; } + + /* + * Alloc space to completely contain the shrunken surface + * (with added guard rows) + */ + if (is32bit==1) { + /* + * Target surface is 32bit with source RGBA/ABGR ordering + */ + rz_dst = + SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, rz_src->format); + } else { + /* + * Target surface is 8bit + */ + rz_dst = SDL_CreateSurface(dstwidth, dstheight + GUARD_ROWS, SDL_PIXELFORMAT_INDEX8); + pal_dst = SDL_CreateSurfacePalette(rz_dst); + } + + /* Check target */ + if (rz_dst == NULL) { + haveError = 1; + goto exitShrinkSurface; + } + + /* Adjust for guard rows */ + rz_dst->h = dstheight; + + /* + * Check which kind of surface we have + */ + if (is32bit==1) { + /* + * Call the 32bit transformation routine to do the shrinking (using alpha) + */ + result = _shrinkSurfaceRGBA(rz_src, rz_dst, factorx, factory); + if ((result!=0) || (rz_dst==NULL)) { + haveError = 1; + goto exitShrinkSurface; + } + } else { + /* + * Copy palette and colorkey info + */ + pal_src = SDL_GetSurfacePalette(rz_src); + for (i = 0; i < pal_src->ncolors; i++) { + pal_dst->colors[i] = pal_src->colors[i]; + } + pal_dst->ncolors = pal_src->ncolors; + /* + * Call the 8bit transformation routine to do the shrinking + */ + result = _shrinkSurfaceY(rz_src, rz_dst, factorx, factory); + if (result!=0) { + haveError = 1; + goto exitShrinkSurface; + } + } + +exitShrinkSurface: + if (rz_src!=NULL) { + /* + * Unlock source surface + */ + if (SDL_MUSTLOCK(rz_src)) { + SDL_UnlockSurface(rz_src); + } + + /* + * Cleanup temp surface + */ + if (src_converted==1) { + SDL_DestroySurface(rz_src); + } + } + + /* Check error state; maybe need to cleanup destination */ + if (haveError==1) { + if (rz_dst!=NULL) { + SDL_DestroySurface(rz_dst); + } + rz_dst=NULL; + } + + /* + * Return destination surface + */ + return (rz_dst); +} diff --git a/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.h b/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.h new file mode 100644 index 0000000..015e119 --- /dev/null +++ b/src/ogfx/vendor/sdl3_gfx/SDL3_rotozoom.h @@ -0,0 +1,123 @@ +/* + +SDL3_rotozoom.c: rotozoomer, zoomer and shrinker for 32bit or 8bit surfaces + +Copyright (C) 2012-2014 Andreas Schiffler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +Andreas Schiffler -- aschiffler at ferzkopp dot net + +*/ + +#ifndef _SDL3_rotozoom_h +#define _SDL3_rotozoom_h + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif + +#include + + /* ---- Defines */ + + /*! + \brief Disable anti-aliasing (no smoothing). + */ +#define SMOOTHING_OFF 0 + + /*! + \brief Enable anti-aliasing (smoothing). + */ +#define SMOOTHING_ON 1 + + /* ---- Function Prototypes */ + +#ifdef _MSC_VER +# if defined(DLL_EXPORT) && !defined(LIBSDL3_GFX_DLL_IMPORT) +# define SDL3_ROTOZOOM_SCOPE __declspec(dllexport) +# else +# ifdef LIBSDL3_GFX_DLL_IMPORT +# define SDL3_ROTOZOOM_SCOPE __declspec(dllimport) +# endif +# endif +#endif +#ifndef SDL3_ROTOZOOM_SCOPE +# define SDL3_ROTOZOOM_SCOPE extern +#endif + + /* + + Rotozoom functions + + */ + + SDL3_ROTOZOOM_SCOPE SDL_Surface *rotozoomSurface(SDL_Surface * src, double angle, double zoom, int smooth); + + SDL3_ROTOZOOM_SCOPE SDL_Surface *rotozoomSurfaceXY + (SDL_Surface * src, double angle, double zoomx, double zoomy, int smooth); + + + SDL3_ROTOZOOM_SCOPE void rotozoomSurfaceSize(int width, int height, double angle, double zoom, int *dstwidth, + int *dstheight); + + SDL3_ROTOZOOM_SCOPE void rotozoomSurfaceSizeXY + (int width, int height, double angle, double zoomx, double zoomy, + int *dstwidth, int *dstheight); + + /* + + Zooming functions + + */ + + SDL3_ROTOZOOM_SCOPE SDL_Surface *zoomSurface(SDL_Surface * src, double zoomx, double zoomy, int smooth); + + SDL3_ROTOZOOM_SCOPE void zoomSurfaceSize(int width, int height, double zoomx, double zoomy, int *dstwidth, int *dstheight); + + /* + + Shrinking functions + + */ + + SDL3_ROTOZOOM_SCOPE SDL_Surface *shrinkSurface(SDL_Surface * src, int factorx, int factory); + + /* + + Specialized rotation functions + + */ + + SDL3_ROTOZOOM_SCOPE SDL_Surface* rotateSurface90Degrees(SDL_Surface* src, int numClockwiseTurns); + + /* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL3_rotozoom_h */ diff --git a/src/test.cpp b/src/test.cpp index 6c102c8..97ee44d 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -18,6 +18,24 @@ along with OmniaFramework. If not, see . */ + + + +/* + * Label + * Button + * Panel / Container + * Checkbox + * Radio Button (Group) + * Text Input + * Horizontal Slider + * Image / Icon + * ScrollView + * ListBox + * ComboBox + * TreeView + */ + #include ostd::ConsoleOutputHandler out; @@ -94,7 +112,7 @@ class Window : public ogfx::WindowBase int main(int argc, char** argv) { Window window; - window.initialize(1280, 720, "OmniaFramework - Test Window"); + window.initialize(800, 600, "OmniaFramework - Test Window"); window.setClearColor({ 0, 2 , 15 }); while (window.isRunning()) From 1d071786d5b9ccd5b8a89f6330a9ac5f845f32e1 Mon Sep 17 00:00:00 2001 From: OmniaX-Dev Date: Tue, 31 Mar 2026 04:55:17 +0200 Subject: [PATCH 3/6] Reworked the ogfx Window subsystem --- CMakeLists.txt | 7 +- other/build.nr | 2 +- src/ogfx/gui/Events.hpp | 76 +++++ src/ogfx/gui/GuiWindow.cpp | 211 ------------ src/ogfx/gui/GuiWindow.hpp | 141 -------- src/ogfx/gui/RawTextInput.cpp | 6 +- src/ogfx/gui/RawTextInput.hpp | 4 +- src/ogfx/gui/Window.cpp | 321 ++++++++++++++++++ src/ogfx/gui/Window.hpp | 152 +++++++++ src/ogfx/gui/WindowBase.cpp | 229 ------------- src/ogfx/gui/WindowBase.hpp | 202 ----------- ...putHandler.cpp => WindowOutputHandler.cpp} | 130 +++---- ...putHandler.hpp => WindowOutputHandler.hpp} | 70 ++-- src/ogfx/ogfx.hpp | 4 +- src/ogfx/render/BasicRenderer.cpp | 4 +- src/ogfx/render/BasicRenderer.hpp | 9 +- src/ogfx/render/PixelRenderer.cpp | 4 +- src/ogfx/render/PixelRenderer.hpp | 6 +- src/ogfx/resources/Image.cpp | 2 +- src/ostd/io/IOHandlers.hpp | 2 +- src/{test.cpp => test/GraphicsWindowTest.cpp} | 24 +- src/test/GuiTest.cpp | 71 ++++ 22 files changed, 748 insertions(+), 929 deletions(-) create mode 100644 src/ogfx/gui/Events.hpp delete mode 100644 src/ogfx/gui/GuiWindow.cpp delete mode 100644 src/ogfx/gui/GuiWindow.hpp create mode 100644 src/ogfx/gui/Window.cpp create mode 100644 src/ogfx/gui/Window.hpp delete mode 100644 src/ogfx/gui/WindowBase.cpp delete mode 100644 src/ogfx/gui/WindowBase.hpp rename src/ogfx/gui/{WindowBaseOutputHandler.cpp => WindowOutputHandler.cpp} (63%) rename src/ogfx/gui/{WindowBaseOutputHandler.hpp => WindowOutputHandler.hpp} (57%) rename src/{test.cpp => test/GraphicsWindowTest.cpp} (90%) create mode 100644 src/test/GuiTest.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index df306bc..1681f2d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,8 +87,8 @@ list(APPEND OGFX_SOURCE_FILES # gui ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/RawTextInput.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowBase.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowBaseOutputHandler.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/Window.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowOutputHandler.cpp # render ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/render/BasicRenderer.cpp @@ -102,7 +102,8 @@ list(APPEND OGFX_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/utils/Animation.cpp ) list(APPEND TEST_SOURCE_FILES - ${CMAKE_CURRENT_LIST_DIR}/src/test.cpp + # ${CMAKE_CURRENT_LIST_DIR}/src/test/GraphicsWindowTest.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/test/GuiTest.cpp ) #----------------------------------------------------------------------------------------- diff --git a/other/build.nr b/other/build.nr index b29009a..6be8278 100644 --- a/other/build.nr +++ b/other/build.nr @@ -1 +1 @@ -2038 +2039 diff --git a/src/ogfx/gui/Events.hpp b/src/ogfx/gui/Events.hpp new file mode 100644 index 0000000..b2040d9 --- /dev/null +++ b/src/ogfx/gui/Events.hpp @@ -0,0 +1,76 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include + +namespace ogfx +{ + class WindowCore; + class WindowResizedData : public ostd::BaseObject + { + public: + inline WindowResizedData(WindowCore& parent, int32_t _oldx, int32_t _oldy, int32_t _newx, int32_t _newy) : parentWindow(parent), old_width(_oldx), old_height(_oldy), new_width(_newx), new_height(_newy) + { + setTypeName("ogfx::WindowResizedData"); + validate(); + } + + public: + int32_t new_width; + int32_t new_height; + int32_t old_width; + int32_t old_height; + WindowCore& parentWindow; + }; + class MouseEventData : public ostd::BaseObject + { + public: enum class eButton { None = 0, Left, Middle, Right }; + public: + inline MouseEventData(WindowCore& parent, float mousex, float mousey, eButton btn) : parentWindow(parent), position_x(mousex), position_y(mousey), button(btn) + { + setTypeName("ogfx::MouseEventData"); + validate(); + } + + public: + float position_x; + float position_y; + eButton button; + WindowCore& parentWindow; + }; + class KeyEventData : public ostd::BaseObject + { + public: enum class eKeyEvent { Pressed = 0, Released, Text }; + public: + inline KeyEventData(WindowCore& parent, int32_t key, char _text, eKeyEvent evt) : parentWindow(parent), keyCode(key), text(_text), eventType(evt) + { + setTypeName("ogfx::KeyEventData"); + validate(); + } + + public: + int32_t keyCode; + char text; + eKeyEvent eventType; + WindowCore& parentWindow; + }; +} diff --git a/src/ogfx/gui/GuiWindow.cpp b/src/ogfx/gui/GuiWindow.cpp deleted file mode 100644 index a90b8fb..0000000 --- a/src/ogfx/gui/GuiWindow.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - OmniaFramework - A collection of useful functionality - Copyright (C) 2025 OmniaX-Dev - - This file is part of OmniaFramework. - - OmniaFramework is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OmniaFramework is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OmniaFramework. If not, see . -*/ - -#include "GuiWindow.hpp" - -namespace ogfx -{ - namespace gui - { - Window::~Window(void) - { - onDestroy(); - SDL_DestroyCursor(m_cursor_IBeam); - SDL_DestroyCursor(m_cursor_Arrow); - SDL_DestroyRenderer(m_renderer); - SDL_DestroyWindow(m_window); - SDL_Quit(); - TTF_Quit(); - } - - void Window::initialize(int32_t width, int32_t height, const ostd::String& windowTitle) - { - if (m_initialized) return; - m_windowWidth = width; - m_windowHeight = height; - m_title = windowTitle; - if (!SDL_Init(SDL_INIT_VIDEO)) - { - printf( "SDL could not initialize! Error: %s\n", SDL_GetError() ); - exit(ErrorCodes::SDLInitFailed); - } - m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOW_RESIZABLE); - setSize(m_windowWidth, m_windowHeight); - m_renderer = SDL_CreateRenderer(m_window, nullptr); - SDL_SetWindowMinimumSize(m_window, m_windowWidth, m_windowHeight); - SDL_SetWindowTitle(m_window, m_title.c_str()); - SDL_StartTextInput(m_window); - - m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_DEFAULT); - m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_TEXT); - - m_initialized = true; - m_running = true; - - setTypeName("ogfx::gui::Window"); - enableSignals(true); - validate(); - - onInitialize(); - } - - void Window::close(void) - { - m_running = false; - onClose(); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::RealTime, *this); - } - - int32_t Window::startMainLoop(void) - { - if (!m_initialized) return ErrorCodes::Uninitialized; - while (m_running) - { - __handle_events(); - SDL_SetRenderDrawColor(m_renderer, m_clearColor.r, m_clearColor.g, m_clearColor.b, m_clearColor.a); - SDL_RenderClear(m_renderer); - - SDL_RenderPresent(m_renderer); - } - return ErrorCodes::ExitSuccess; - } - - void Window::setSize(int32_t width, int32_t height) - { - if (!isInitialized()) return; - SDL_SetWindowSize(m_window, width, height); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime); - } - - void Window::setTitle(const ostd::String& title) - { - if (!isInitialized()) return; - m_title = title; - SDL_SetWindowTitle(m_window, m_title.c_str()); - } - - void Window::setCursor(eCursor cursor) - { - switch (cursor) - { - case eCursor::Arrow: - SDL_SetCursor(m_cursor_Arrow); - break; - case eCursor::IBeam: - SDL_SetCursor(m_cursor_IBeam); - break; - default: - SDL_SetCursor(m_cursor_Arrow); - break; - } - } - - void Window::enableResizable(bool enable) - { - SDL_SetWindowResizable(m_window, enable); - m_resizeable = enable; - } - - void Window::setIcon(const ostd::String& iconFilePath) - { - SDL_Surface* appIcon = IMG_Load(iconFilePath); - if (appIcon == nullptr) - { - //TODO: Error - return; - } - SDL_SetWindowIcon(m_window, appIcon); - SDL_DestroySurface(appIcon); - } - - void Window::__handle_events(void) - { - if (!m_initialized) return; - auto l_getMouseState = [this](void) -> MouseEventData { - float mx = 0, my = 0; - uint32_t btn = SDL_GetMouseState(&mx, &my); - MouseEventData::eButton button = MouseEventData::eButton::None; - switch (btn) - { - case SDL_BUTTON_MASK(1): button = MouseEventData::eButton::Left; break; - case SDL_BUTTON_MASK(2): button = MouseEventData::eButton::Middle; break; - case SDL_BUTTON_MASK(3): button = MouseEventData::eButton::Right; break; - default: button = MouseEventData::eButton::None; break; - } - MouseEventData mmd(*this, mx, my, button); - return mmd; - }; - SDL_Event event; - while (SDL_PollEvent(&event)) - { - if (event.type == SDL_EVENT_QUIT) - { - m_running = false; - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::Normal, *this); - } - else if (event.type == SDL_EVENT_WINDOW_RESIZED) - { - WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); - SDL_GetWindowSize(m_window, &m_windowWidth, &m_windowHeight); - wrd.new_width = m_windowWidth; - wrd.new_height = m_windowHeight; - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime, wrd); - } - else if (event.type == SDL_EVENT_MOUSE_MOTION) - { - MouseEventData mmd = l_getMouseState(); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseMoved, ostd::tSignalPriority::RealTime, mmd); - } - else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN) - { - MouseEventData mmd = l_getMouseState(); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MousePressed, ostd::tSignalPriority::RealTime, mmd); - } - else if (event.type == SDL_EVENT_MOUSE_BUTTON_UP) - { - MouseEventData mmd = l_getMouseState(); - switch (event.button.button) - { - case SDL_BUTTON_MASK(1): mmd.button = MouseEventData::eButton::Left; break; - case SDL_BUTTON_MASK(2): mmd.button = MouseEventData::eButton::Middle; break; - case SDL_BUTTON_MASK(3): mmd.button = MouseEventData::eButton::Right; break; - default: mmd.button = MouseEventData::eButton::None; break; - } - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseReleased, ostd::tSignalPriority::RealTime, mmd); - } - else if (event.type == SDL_EVENT_KEY_DOWN) - { - KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Pressed); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyPressed, ostd::tSignalPriority::RealTime, ked); - } - else if (event.type == SDL_EVENT_KEY_UP) - { - KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Released); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyReleased, ostd::tSignalPriority::RealTime, ked); - } - else if (event.type == SDL_EVENT_TEXT_INPUT) - { - KeyEventData ked(*this, 0, event.text.text[0], KeyEventData::eKeyEvent::Text); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::TextEntered, ostd::tSignalPriority::RealTime, ked); - } - } - } - } -} diff --git a/src/ogfx/gui/GuiWindow.hpp b/src/ogfx/gui/GuiWindow.hpp deleted file mode 100644 index 5c2a99d..0000000 --- a/src/ogfx/gui/GuiWindow.hpp +++ /dev/null @@ -1,141 +0,0 @@ -/* - OmniaFramework - A collection of useful functionality - Copyright (C) 2025 OmniaX-Dev - - This file is part of OmniaFramework. - - OmniaFramework is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OmniaFramework is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OmniaFramework. If not, see . -*/ - -#pragma once - -#include -#include -#include -#include - -namespace ogfx -{ - namespace gui - { - class Window : public ostd::BaseObject - { - public: enum class eCursor { Arrow = 0, IBeam }; - public: struct ErrorCodes { - inline static constexpr uint16_t ExitSuccess { 0 }; - inline static constexpr uint16_t SDLInitFailed { 1 }; - inline static constexpr uint16_t SDLImageInitFailed { 2 }; - inline static constexpr uint16_t Uninitialized { 3 }; - }; - public: - inline Window(void) { } - ~Window(void); - inline Window(int32_t width, int32_t height, const ostd::String& windowTitle) { initialize(width, height, windowTitle); } - void initialize(int32_t width, int32_t height, const ostd::String& windowTitle); - void close(void); - int32_t startMainLoop(void); - void setSize(int32_t width, int32_t height); - void setTitle(const ostd::String& title); - void setCursor(eCursor cursor); - void enableResizable(bool enable = true); - void setIcon(const ostd::String& iconFilePath); - - inline virtual void onInitialize(void) { } - inline virtual void onDestroy(void) { } - inline virtual void onClose(void) { } - - inline bool isInitialized(void) const { return m_initialized; } - inline bool isRunning(void) const { return m_running; } - inline bool isVisible(void) const { return m_visible; } - inline bool isResizeable(void) const { return m_resizeable; } - inline void hide(void) { SDL_HideWindow(m_window); m_visible = false; } - inline void show(void) { SDL_ShowWindow(m_window); m_visible = true; } - inline ostd::String getTitle(void) const { return m_title; } - inline int32_t getWindowWidth(void) const { return m_windowWidth; } - inline int32_t getWindowHeight(void) const { return m_windowHeight; } - inline ostd::Color getClearColor(void) const { return m_clearColor; } - inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } - inline SDL_Renderer* getSDLRenderer(void) const { return m_renderer; } - private: - void __handle_events(void); - - protected: - SDL_Window* m_window { nullptr }; - SDL_Renderer* m_renderer { nullptr }; - - private: - ostd::Color m_clearColor { 10, 10, 10, 255 }; - - int32_t m_windowWidth { 0 }; - int32_t m_windowHeight { 0 }; - ostd::String m_title { "" }; - - bool m_running { false }; - bool m_initialized { false }; - bool m_visible { true }; - bool m_resizeable { true }; - - SDL_Cursor* m_cursor_IBeam { nullptr }; - SDL_Cursor* m_cursor_Arrow { nullptr }; - }; - class WindowResizedData : public ostd::BaseObject - { - public: - inline WindowResizedData(Window& parent, int32_t _oldx, int32_t _oldy, int32_t _newx, int32_t _newy) : parentWindow(parent), old_width(_oldx), old_height(_oldy), new_width(_newx), new_height(_newy) - { - setTypeName("ogfx::gui::WindowResizedData"); - validate(); - } - - public: - int32_t new_width; - int32_t new_height; - int32_t old_width; - int32_t old_height; - Window& parentWindow; - }; - class MouseEventData : public ostd::BaseObject - { - public: enum class eButton { None = 0, Left, Middle, Right }; - public: - inline MouseEventData(Window& parent, int32_t mousex, int32_t mousey, eButton btn) : parentWindow(parent), position_x(mousex), position_y(mousey), button(btn) - { - setTypeName("ogfx::gui::MouseEventData"); - validate(); - } - - public: - int32_t position_x; - int32_t position_y; - eButton button; - Window& parentWindow; - }; - class KeyEventData : public ostd::BaseObject - { - public: enum class eKeyEvent { Pressed = 0, Released, Text }; - public: - inline KeyEventData(Window& parent, int32_t key, char _text, eKeyEvent evt) : parentWindow(parent), keyCode(key), text(_text), eventType(evt) - { - setTypeName("ogfx::gui::KeyEventData"); - validate(); - } - - public: - int32_t keyCode; - char text; - eKeyEvent eventType; - Window& parentWindow; - }; - } -} diff --git a/src/ogfx/gui/RawTextInput.cpp b/src/ogfx/gui/RawTextInput.cpp index cb0661c..6b715e1 100644 --- a/src/ogfx/gui/RawTextInput.cpp +++ b/src/ogfx/gui/RawTextInput.cpp @@ -19,7 +19,7 @@ */ #include "RawTextInput.hpp" -#include "../gui/WindowBase.hpp" +#include "../gui/Window.hpp" #include "../../io/Logger.hpp" namespace ogfx @@ -292,13 +292,13 @@ namespace ogfx if (getParent().isMouseInside()) { if (!m_ibeamCursorSet) - window.setCursor(ogfx::WindowBase::eCursor::IBeam); + window.setCursor(ogfx::WindowCore::eCursor::IBeam); m_ibeamCursorSet = true; } else { if (m_ibeamCursorSet) - window.setCursor(ogfx::WindowBase::eCursor::Arrow); + window.setCursor(ogfx::WindowCore::eCursor::Arrow); m_ibeamCursorSet = false; } } diff --git a/src/ogfx/gui/RawTextInput.hpp b/src/ogfx/gui/RawTextInput.hpp index 7a412e6..0310201 100644 --- a/src/ogfx/gui/RawTextInput.hpp +++ b/src/ogfx/gui/RawTextInput.hpp @@ -170,11 +170,11 @@ namespace ogfx class RawTextInputEventListener : public RawTextInput::EventListener { public: - inline RawTextInputEventListener(ogfx::gui::RawTextInput& _parent, ogfx::WindowBase& _window) : ogfx::gui::RawTextInput::EventListener::EventListener(_parent), window(_window) { } + inline RawTextInputEventListener(ogfx::gui::RawTextInput& _parent, ogfx::WindowCore& _window) : ogfx::gui::RawTextInput::EventListener::EventListener(_parent), window(_window) { } void onSignalHandled(ostd::tSignal& signal) override; public: - ogfx::WindowBase& window; + ogfx::WindowCore& window; bool m_ibeamCursorSet { false }; }; class RawTextInputNumberCharacterFilter : public RawTextInput::CharacterFilter diff --git a/src/ogfx/gui/Window.cpp b/src/ogfx/gui/Window.cpp new file mode 100644 index 0000000..9aa2d75 --- /dev/null +++ b/src/ogfx/gui/Window.cpp @@ -0,0 +1,321 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#include "Window.hpp" +#include "../../ostd/utils/Time.hpp" +#include +#include +#include +#include + +namespace ogfx +{ + WindowCore::~WindowCore(void) + { + __on_window_destroy(); + SDL_DestroyCursor(m_cursor_IBeam); + SDL_DestroyCursor(m_cursor_Arrow); + SDL_DestroyRenderer(m_renderer); + SDL_DestroyWindow(m_window); + SDL_Quit(); + TTF_Quit(); + } + + void WindowCore::initialize(int32_t width, int32_t height, const ostd::String& title) + { + if (m_initialized) return; + m_windowWidth = width; + m_windowHeight = height; + m_title = title; + if (!SDL_Init(SDL_INIT_VIDEO)) + { + printf( "SDL could not initialize! Error: %s\n", SDL_GetError() ); + exit(1); + } + m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOW_RESIZABLE); + m_renderer = SDL_CreateRenderer(m_window, nullptr); + SDL_SetWindowMinimumSize(m_window, m_windowWidth, m_windowHeight); + SDL_SetWindowTitle(m_window, m_title.c_str()); + SDL_StartTextInput(m_window); + + m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_DEFAULT); + m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_TEXT); + + m_initialized = true; + m_running = true; + + setTypeName("ogfx::WindowCore"); + enableSignals(true); + validate(); + setSize(m_windowWidth, m_windowHeight); + + connectSignal(ostd::tBuiltinSignals::KeyPressed); + connectSignal(ostd::tBuiltinSignals::KeyReleased); + connectSignal(ostd::tBuiltinSignals::TextEntered); + connectSignal(ostd::tBuiltinSignals::MousePressed); + connectSignal(ostd::tBuiltinSignals::MouseReleased); + connectSignal(ostd::tBuiltinSignals::MouseMoved); + connectSignal(ostd::tBuiltinSignals::OnGuiEvent); + connectSignal(ostd::tBuiltinSignals::WindowClosed); + connectSignal(ostd::tBuiltinSignals::WindowResized); + + __on_window_init(width, height, title); + } + + void WindowCore::close(void) + { + __on_window_close(); + m_running = false; + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::Normal, *this); + } + + void WindowCore::setSize(int32_t width, int32_t height) + { + if (!isInitialized()) return; + SDL_SetWindowSize(m_window, width, height); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime); + } + + void WindowCore::setTitle(const ostd::String& title) + { + if (!isInitialized()) return; + m_title = title; + SDL_SetWindowTitle(m_window, m_title.c_str()); + } + + void WindowCore::setCursor(eCursor cursor) + { + switch (cursor) + { + case eCursor::Arrow: + SDL_SetCursor(m_cursor_Arrow); + break; + case eCursor::IBeam: + SDL_SetCursor(m_cursor_IBeam); + break; + default: + SDL_SetCursor(m_cursor_Arrow); + break; + } + } + + void WindowCore::enableResizable(bool enable) + { + SDL_SetWindowResizable(m_window, enable); + m_resizeable = enable; + } + + void WindowCore::setIcon(const ostd::String& iconFilePath) + { + SDL_Surface* appIcon = IMG_Load(iconFilePath); + if (appIcon == nullptr) + { + //TODO: Error + return; + } + SDL_SetWindowIcon(m_window, appIcon); + SDL_DestroySurface(appIcon); + } + + MouseEventData WindowCore::get_mouse_state(void) + { + float mx = 0, my = 0; + uint32_t btn = SDL_GetMouseState(&mx, &my); + MouseEventData::eButton button = MouseEventData::eButton::None; + switch (btn) + { + case SDL_BUTTON_MASK(1): button = MouseEventData::eButton::Left; break; + case SDL_BUTTON_MASK(2): button = MouseEventData::eButton::Middle; break; + case SDL_BUTTON_MASK(3): button = MouseEventData::eButton::Right; break; + default: button = MouseEventData::eButton::None; break; + } + MouseEventData mmd(*this, mx, my, button); + return mmd; + } + + void WindowCore::handle_events(void) + { + if (!isInitialized()) return; + SDL_Event event; + + if (isBlockingEventsEnabled()) + { + if (SDL_WaitEvent(&event)) + __handle_event(event); + } + else + { + while (SDL_PollEvent(&event)) + __handle_event(event); + } + } + + void WindowCore::__handle_event(SDL_Event& event) + { + if (event.type == SDL_EVENT_QUIT) + { + close(); + } + else if (event.type == SDL_EVENT_WINDOW_RESIZED) + { + WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); + SDL_GetWindowSize(m_window, &m_windowWidth, &m_windowHeight); + wrd.new_width = m_windowWidth; + wrd.new_height = m_windowHeight; + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime, wrd); + } + else if (event.type == SDL_EVENT_MOUSE_MOTION) + { + MouseEventData mmd = get_mouse_state(); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseMoved, ostd::tSignalPriority::RealTime, mmd); + } + else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN) + { + MouseEventData mmd = get_mouse_state(); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MousePressed, ostd::tSignalPriority::RealTime, mmd); + } + else if (event.type == SDL_EVENT_MOUSE_BUTTON_UP) + { + MouseEventData mmd = get_mouse_state(); + switch (event.button.button) + { + case SDL_BUTTON_MASK(1): mmd.button = MouseEventData::eButton::Left; break; + case SDL_BUTTON_MASK(2): mmd.button = MouseEventData::eButton::Middle; break; + case SDL_BUTTON_MASK(3): mmd.button = MouseEventData::eButton::Right; break; + default: mmd.button = MouseEventData::eButton::None; break; + } + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseReleased, ostd::tSignalPriority::RealTime, mmd); + } + else if (event.type == SDL_EVENT_KEY_DOWN) + { + KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Pressed); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyPressed, ostd::tSignalPriority::RealTime, ked); + } + else if (event.type == SDL_EVENT_KEY_UP) + { + KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Released); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyReleased, ostd::tSignalPriority::RealTime, ked); + } + else if (event.type == SDL_EVENT_TEXT_INPUT) + { + KeyEventData ked(*this, 0, event.text.text[0], KeyEventData::eKeyEvent::Text); + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::TextEntered, ostd::tSignalPriority::RealTime, ked); + } + __on_event(event); + } + + + + + void GraphicsWindow::__on_window_init(int32_t width, int32_t height, const ostd::String& title) + { + SDL_SetWindowResizable(m_window, false); + + m_fixedUpdateTImer.create(60.0, [this](double frameTime_s){ + this->onFixedUpdate(frameTime_s); + }); + + m_fpsUpdateTimer.create(1.0, [this](double frameTime_s){ + if (this->m_frameCount == 0) return; + if (this->m_frameTimeAcc == 0) return; + this->m_fps = (int32_t)(1.0f / (static_cast(this->m_frameTimeAcc) / static_cast(this->m_frameCount))); + this->m_frameTimeAcc = 0; + this->m_frameCount = 0; + }); + + setTypeName("ogfx::GraphicsWindow"); + onInitialize(); + } + + void GraphicsWindow::__on_window_close(void) + { + onClose(); + } + + void GraphicsWindow::__main_loop(void) + { + handle_events(); + SDL_SetRenderDrawColor(m_renderer, getClearColor().r, getClearColor().g, getClearColor().b, getClearColor().a); + if (m_refreshScreen) + SDL_RenderClear(m_renderer); + m_fixedUpdateTImer.update(); + onUpdate(); + onRender(); + SDL_RenderPresent(m_renderer); + m_frameTimeAcc += m_fpsUpdateClock.restart(ostd::eTimeUnits::Seconds); + m_frameCount++; + m_fpsUpdateTimer.update(); + } + + void GraphicsWindow::__on_event(SDL_Event& event) + { + onSDLEvent(event); + } + + void GraphicsWindow::__on_window_destroy(void) + { + onDestroy(); + } + + + + + namespace gui + { + void Window::__on_window_init(int32_t width, int32_t height, const ostd::String& title) + { + enableBlockingEvents(); + setTypeName("ogfx::gui::Window"); + onInitialize(); + } + + void Window::__on_window_close(void) + { + onClose(); + } + + void Window::__main_loop(void) + { + while (isRunning()) + { + handle_events(); + SDL_SetRenderDrawColor(m_renderer, getClearColor().r, getClearColor().g, getClearColor().b, getClearColor().a); + SDL_RenderClear(m_renderer); + + SDL_RenderPresent(m_renderer); + } + } + + void Window::__on_event(SDL_Event& event) + { + if (event.type == SDL_EVENT_KEY_UP) + { + if (event.key.key == SDLK_ESCAPE) + close(); + } + onSDLEvent(event); + } + + void Window::__on_window_destroy(void) + { + onDestroy(); + } + } +} diff --git a/src/ogfx/gui/Window.hpp b/src/ogfx/gui/Window.hpp new file mode 100644 index 0000000..ddfb5bc --- /dev/null +++ b/src/ogfx/gui/Window.hpp @@ -0,0 +1,152 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace ogfx +{ + class WindowCore : public ostd::BaseObject + { + public: enum class eCursor { Arrow = 0, IBeam }; + public: + inline WindowCore(void) { } + virtual ~WindowCore(void); + inline WindowCore(int32_t width, int32_t height, const ostd::String& title) { initialize(width, height, title); } + void initialize(int32_t width, int32_t height, const ostd::String& title); + inline void mainLoop(void) { if (isInitialized()) __main_loop(); } + void close(void); + void setSize(int32_t width, int32_t height); + void setTitle(const ostd::String& title); + void setCursor(eCursor cursor); + void enableResizable(bool enable = true); + void setIcon(const ostd::String& iconFilePath); + + inline bool isInitialized(void) const { return m_initialized; } + inline bool isRunning(void) const { return m_running; } + inline bool isVisible(void) const { return m_visible; } + inline bool isResizeable(void) const { return m_resizeable; } + inline void hide(void) { SDL_HideWindow(m_window); m_visible = false; } + inline void show(void) { SDL_ShowWindow(m_window); m_visible = true; } + inline ostd::String getTitle(void) const { return m_title; } + inline int32_t getWindowWidth(void) const { return m_windowWidth; } + inline int32_t getWindowHeight(void) const { return m_windowHeight; } + inline ostd::Color getClearColor(void) const { return m_clearColor; } + inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } + inline SDL_Renderer* getSDLRenderer(void) { return m_renderer; } + inline void enableBlockingEvents(bool enable = true) { m_blockingEvents = enable; } + inline bool isBlockingEventsEnabled(void) const { return m_blockingEvents; } + + protected: + MouseEventData get_mouse_state(void); + virtual void handle_events(void); + inline virtual void __on_event(SDL_Event& event) { } + inline virtual void __on_window_init(int32_t width, int32_t height, const ostd::String& title) { } + inline virtual void __on_window_destroy(void) { } + inline virtual void __on_window_close(void) { } + inline virtual void __main_loop(void) = 0; + + private: + void __handle_event(SDL_Event& event); + + protected: + SDL_Window* m_window { nullptr }; + SDL_Renderer* m_renderer { nullptr }; + + private: + ostd::Color m_clearColor { 10, 10, 10, 255 }; + + int32_t m_windowWidth { 0 }; + int32_t m_windowHeight { 0 }; + ostd::String m_title { "" }; + + bool m_running { false }; + bool m_initialized { false }; + bool m_visible { true }; + bool m_blockingEvents { false }; + bool m_resizeable { true }; + + SDL_Cursor* m_cursor_IBeam { nullptr }; + SDL_Cursor* m_cursor_Arrow { nullptr }; + }; + class GraphicsWindow : public WindowCore + { + public: enum class eCursor { Arrow = 0, IBeam }; + public: + inline GraphicsWindow(void) { } + inline GraphicsWindow(int32_t width, int32_t height, const ostd::String& title) { initialize(width, height, title); } + + inline virtual void onRender(void) { } + inline virtual void onUpdate(void) { } + inline virtual void onFixedUpdate(double frameTime_s) { } + inline virtual void onInitialize(void) { } + inline virtual void onDestroy(void) { } + inline virtual void onClose(void) { } + inline virtual void onSDLEvent(SDL_Event& event) { } + + inline int32_t getFPS(void) const { return m_fps; } + + protected: + void __on_window_init(int32_t width, int32_t height, const ostd::String& title) override; + void __on_event(SDL_Event& event) override; + void __on_window_destroy(void) override; + void __on_window_close(void) override; + void __main_loop(void) override; + + private: + int32_t m_fps { 0 }; + ostd::StepTimer m_fixedUpdateTImer; + ostd::StepTimer m_fpsUpdateTimer; + ostd::Timer m_fpsUpdateClock; + uint64_t m_frameTimeAcc { 0 }; + int32_t m_frameCount { 0 }; + bool m_refreshScreen { true }; + }; + namespace gui + { + class Window : public WindowCore + { + public: enum class eCursor { Arrow = 0, IBeam }; + public: + inline Window(void) { } + inline Window(int32_t width, int32_t height, const ostd::String& title) { initialize(width, height, title); } + + inline virtual void onInitialize(void) { } + inline virtual void onDestroy(void) { } + inline virtual void onClose(void) { } + inline virtual void onSDLEvent(SDL_Event& event) { } + + protected: + void __on_window_init(int32_t width, int32_t height, const ostd::String& title) override; + void __on_event(SDL_Event& event) override; + void __on_window_destroy(void) override; + void __on_window_close(void) override; + void __main_loop(void) override; + + private: + }; + } +} diff --git a/src/ogfx/gui/WindowBase.cpp b/src/ogfx/gui/WindowBase.cpp deleted file mode 100644 index f170428..0000000 --- a/src/ogfx/gui/WindowBase.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/* - OmniaFramework - A collection of useful functionality - Copyright (C) 2025 OmniaX-Dev - - This file is part of OmniaFramework. - - OmniaFramework is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OmniaFramework is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OmniaFramework. If not, see . -*/ - -#include "WindowBase.hpp" -#include "../../ostd/utils/Time.hpp" -#include -#include -#include - -namespace ogfx -{ - WindowBase::~WindowBase(void) - { - onDestroy(); - SDL_DestroyCursor(m_cursor_IBeam); - SDL_DestroyCursor(m_cursor_Arrow); - SDL_DestroyRenderer(m_renderer); - SDL_DestroyWindow(m_window); - SDL_Quit(); - TTF_Quit(); - } - - void WindowBase::initialize(int32_t width, int32_t height, const ostd::String& windowTitle) - { - if (m_initialized) return; - m_windowWidth = width; - m_windowHeight = height; - m_title = windowTitle; - if (!SDL_Init(SDL_INIT_VIDEO)) - { - printf( "SDL could not initialize! Error: %s\n", SDL_GetError() ); - exit(1); - } - m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOW_RESIZABLE); - SDL_SetWindowResizable(m_window, false); - m_renderer = SDL_CreateRenderer(m_window, nullptr); - SDL_SetWindowMinimumSize(m_window, m_windowWidth, m_windowHeight); - SDL_SetWindowTitle(m_window, m_title.c_str()); - SDL_StartTextInput(m_window); - - m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_DEFAULT); - m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_TEXT); - - m_initialized = true; - m_running = true; - - m_fixedUpdateTImer.create(60.0, [this](double frameTime_s){ - this->onFixedUpdate(frameTime_s); - }); - - m_fpsUpdateTimer.create(1.0, [this](double frameTime_s){ - if (this->m_frameCount == 0) return; - if (this->m_frameTimeAcc == 0) return; - this->m_fps = (int32_t)(1.0f / (static_cast(this->m_frameTimeAcc) / static_cast(this->m_frameCount))); - this->m_frameTimeAcc = 0; - this->m_frameCount = 0; - }); - - setTypeName("ogfx::WindowBase"); - enableSignals(true); - validate(); - setSize(m_windowWidth, m_windowHeight); - - onInitialize(); - } - - void WindowBase::close(void) - { - m_running = false; - onClose(); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::RealTime, *this); - } - - void WindowBase::update(void) - { - if (!m_initialized) return; - __handle_events(); - SDL_SetRenderDrawColor(m_renderer, m_clearColor.r, m_clearColor.g, m_clearColor.b, m_clearColor.a); - if (m_refreshScreen) - SDL_RenderClear(m_renderer); - m_fixedUpdateTImer.update(); - onUpdate(); - onRender(); - SDL_RenderPresent(m_renderer); - m_frameTimeAcc += m_fpsUpdateClock.restart(ostd::eTimeUnits::Seconds); - m_frameCount++; - m_fpsUpdateTimer.update(); - } - - void WindowBase::setSize(int32_t width, int32_t height) - { - if (!isInitialized()) return; - SDL_SetWindowSize(m_window, width, height); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime); - } - - void WindowBase::setTitle(const ostd::String& title) - { - if (!isInitialized()) return; - m_title = title; - SDL_SetWindowTitle(m_window, m_title.c_str()); - } - - void WindowBase::setCursor(eCursor cursor) - { - switch (cursor) - { - case eCursor::Arrow: - SDL_SetCursor(m_cursor_Arrow); - break; - case eCursor::IBeam: - SDL_SetCursor(m_cursor_IBeam); - break; - default: - SDL_SetCursor(m_cursor_Arrow); - break; - } - } - - void WindowBase::enableResizable(bool enable) - { - SDL_SetWindowResizable(m_window, enable); - } - - void WindowBase::setIcon(const ostd::String& iconFilePath) - { - SDL_Surface* appIcon = IMG_Load(iconFilePath); - if (appIcon == nullptr) - { - //TODO: Error - return; - } - SDL_SetWindowIcon(m_window, appIcon); - SDL_DestroySurface(appIcon); - } - - void WindowBase::__handle_events(void) - { - if (!m_initialized) return; - auto l_getMouseState = [this](void) -> MouseEventData { - float mx = 0, my = 0; - uint32_t btn = SDL_GetMouseState(&mx, &my); - MouseEventData::eButton button = MouseEventData::eButton::None; - switch (btn) - { - case SDL_BUTTON_MASK(1): button = MouseEventData::eButton::Left; break; - case SDL_BUTTON_MASK(2): button = MouseEventData::eButton::Middle; break; - case SDL_BUTTON_MASK(3): button = MouseEventData::eButton::Right; break; - default: button = MouseEventData::eButton::None; break; - } - MouseEventData mmd(*this, mx, my, button); - return mmd; - }; - SDL_Event event; - while (SDL_PollEvent(&event)) - { - if (event.type == SDL_EVENT_QUIT) - { - m_running = false; - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowClosed, ostd::tSignalPriority::Normal, *this); - } - else if (event.type == SDL_EVENT_WINDOW_RESIZED) - { - WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); - SDL_GetWindowSize(m_window, &m_windowWidth, &m_windowHeight); - wrd.new_width = m_windowWidth; - wrd.new_height = m_windowHeight; - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowResized, ostd::tSignalPriority::RealTime, wrd); - } - else if (event.type == SDL_EVENT_MOUSE_MOTION) - { - MouseEventData mmd = l_getMouseState(); - if (isMouseDragEventEnabled() && mmd.button != MouseEventData::eButton::None) - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseDragged, ostd::tSignalPriority::RealTime, mmd); - else - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseMoved, ostd::tSignalPriority::RealTime, mmd); - } - else if (event.type == SDL_EVENT_MOUSE_BUTTON_DOWN) - { - MouseEventData mmd = l_getMouseState(); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MousePressed, ostd::tSignalPriority::RealTime, mmd); - } - else if (event.type == SDL_EVENT_MOUSE_BUTTON_UP) - { - MouseEventData mmd = l_getMouseState(); - switch (event.button.button) - { - case SDL_BUTTON_MASK(1): mmd.button = MouseEventData::eButton::Left; break; - case SDL_BUTTON_MASK(2): mmd.button = MouseEventData::eButton::Middle; break; - case SDL_BUTTON_MASK(3): mmd.button = MouseEventData::eButton::Right; break; - default: mmd.button = MouseEventData::eButton::None; break; - } - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::MouseReleased, ostd::tSignalPriority::RealTime, mmd); - } - else if (event.type == SDL_EVENT_KEY_DOWN) - { - KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Pressed); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyPressed, ostd::tSignalPriority::RealTime, ked); - } - else if (event.type == SDL_EVENT_KEY_UP) - { - KeyEventData ked(*this, (int32_t)event.key.key, 0, KeyEventData::eKeyEvent::Released); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::KeyReleased, ostd::tSignalPriority::RealTime, ked); - } - else if (event.type == SDL_EVENT_TEXT_INPUT) - { - KeyEventData ked(*this, 0, event.text.text[0], KeyEventData::eKeyEvent::Text); - ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::TextEntered, ostd::tSignalPriority::RealTime, ked); - } - } - } -} diff --git a/src/ogfx/gui/WindowBase.hpp b/src/ogfx/gui/WindowBase.hpp deleted file mode 100644 index 5d02f70..0000000 --- a/src/ogfx/gui/WindowBase.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/* - OmniaFramework - A collection of useful functionality - Copyright (C) 2025 OmniaX-Dev - - This file is part of OmniaFramework. - - OmniaFramework is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OmniaFramework is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OmniaFramework. If not, see . -*/ - -#pragma once - -#include -#include -#include -#include - -namespace ogfx -{ - // class WindowCore : public ostd::BaseObject - // { - // public: enum class eCursor { Arrow = 0, IBeam }; - // public: - // inline WindowCore(void) { } - // virtual ~WindowCore(void); - // inline WindowCore(int32_t width, int32_t height, const ostd::String& windowTitle) { initialize(width, height, windowTitle); } - // void initialize(int32_t width, int32_t height, const ostd::String& windowTitle); - // void close(void); - // void update(void); - // void setSize(int32_t width, int32_t height); - // void setTitle(const ostd::String& title); - // void setCursor(eCursor cursor); - // void enableResizable(bool enable = true); - // void setIcon(const ostd::String& iconFilePath); - - // inline virtual void onWindowInitialize(void) { } - // inline virtual void onWindowDestroy(void) { } - // inline virtual void onWindowClose(void) { } - - // inline bool isInitialized(void) const { return m_initialized; } - // inline bool isRunning(void) const { return m_running; } - // inline bool isVisible(void) const { return m_visible; } - // inline void hide(void) { SDL_HideWindow(m_window); m_visible = false; } - // inline void show(void) { SDL_ShowWindow(m_window); m_visible = true; } - // inline ostd::String getTitle(void) const { return m_title; } - // inline int32_t getWindowWidth(void) const { return m_windowWidth; } - // inline int32_t getWindowHeight(void) const { return m_windowHeight; } - // inline ostd::Color getClearColor(void) const { return m_clearColor; } - // inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } - // inline SDL_Renderer* getSDLRenderer(void) { return m_renderer; } - // private: - // void __handle_events(void); - - // protected: - // ostd::ConsoleOutputHandler out; - - // SDL_Window* m_window { nullptr }; - // SDL_Renderer* m_renderer { nullptr }; - // bool m_refreshScreen { true }; - - // private: - // ostd::Color m_clearColor { 10, 10, 10, 255 }; - - // int32_t m_windowWidth { 0 }; - // int32_t m_windowHeight { 0 }; - // ostd::String m_title { "" }; - - // bool m_running { false }; - // bool m_initialized { false }; - // bool m_visible { true }; - - // SDL_Cursor* m_cursor_IBeam { nullptr }; - // SDL_Cursor* m_cursor_Arrow { nullptr }; - // }; - class WindowBase : public ostd::BaseObject - { - public: enum class eCursor { Arrow = 0, IBeam }; - public: - inline WindowBase(void) { } - ~WindowBase(void); - inline WindowBase(int32_t width, int32_t height, const ostd::String& windowTitle) { initialize(width, height, windowTitle); } - void initialize(int32_t width, int32_t height, const ostd::String& windowTitle); - void close(void); - void update(void); - void setSize(int32_t width, int32_t height); - void setTitle(const ostd::String& title); - void setCursor(eCursor cursor); - void enableResizable(bool enable = true); - void setIcon(const ostd::String& iconFilePath); - - inline virtual void onRender(void) { } - inline virtual void onUpdate(void) { } - inline virtual void onFixedUpdate(double frameTime_s) { } - inline virtual void onInitialize(void) { } - inline virtual void onDestroy(void) { } - inline virtual void onClose(void) { } - - inline bool isInitialized(void) const { return m_initialized; } - inline bool isRunning(void) const { return m_running; } - inline bool isVisible(void) const { return m_visible; } - inline void hide(void) { SDL_HideWindow(m_window); m_visible = false; } - inline void show(void) { SDL_ShowWindow(m_window); m_visible = true; } - inline ostd::String getTitle(void) const { return m_title; } - inline int32_t getFPS(void) const { return m_fps; } - inline int32_t getWindowWidth(void) const { return m_windowWidth; } - inline int32_t getWindowHeight(void) const { return m_windowHeight; } - inline bool isMouseDragEventEnabled(void) const { return m_deagEventEnabled; } - inline void enableMouseDragEvent(bool enable = true) { m_deagEventEnabled = enable; } - inline ostd::Color getClearColor(void) const { return m_clearColor; } - inline void setClearColor(const ostd::Color& color) { m_clearColor = color; } - inline SDL_Renderer* getSDLRenderer(void) { return m_renderer; } - private: - void __handle_events(void); - - protected: - ostd::ConsoleOutputHandler out; - - SDL_Window* m_window { nullptr }; - SDL_Renderer* m_renderer { nullptr }; - bool m_refreshScreen { true }; - - private: - ostd::Color m_clearColor { 10, 10, 10, 255 }; - - int32_t m_windowWidth { 0 }; - int32_t m_windowHeight { 0 }; - ostd::String m_title { "" }; - int32_t m_fps { 0 }; - - ostd::StepTimer m_fixedUpdateTImer; - ostd::StepTimer m_fpsUpdateTimer; - ostd::Timer m_fpsUpdateClock; - uint64_t m_frameTimeAcc { 0 }; - int32_t m_frameCount { 0 }; - - bool m_deagEventEnabled { false }; - bool m_running { false }; - bool m_initialized { false }; - bool m_visible { true }; - - SDL_Cursor* m_cursor_IBeam { nullptr }; - SDL_Cursor* m_cursor_Arrow { nullptr }; - }; - class WindowResizedData : public ostd::BaseObject - { - public: - inline WindowResizedData(WindowBase& parent, int32_t _oldx, int32_t _oldy, int32_t _newx, int32_t _newy) : parentWindow(parent), old_width(_oldx), old_height(_oldy), new_width(_newx), new_height(_newy) - { - setTypeName("ogfx::WindowResizedData"); - validate(); - } - - public: - int32_t new_width; - int32_t new_height; - int32_t old_width; - int32_t old_height; - WindowBase& parentWindow; - }; - class MouseEventData : public ostd::BaseObject - { - public: enum class eButton { None = 0, Left, Middle, Right }; - public: - inline MouseEventData(WindowBase& parent, float mousex, float mousey, eButton btn) : parentWindow(parent), position_x(mousex), position_y(mousey), button(btn) - { - setTypeName("ogfx::MouseEventData"); - validate(); - } - - public: - float position_x; - float position_y; - eButton button; - WindowBase& parentWindow; - }; - class KeyEventData : public ostd::BaseObject - { - public: enum class eKeyEvent { Pressed = 0, Released, Text }; - public: - inline KeyEventData(WindowBase& parent, int32_t key, char _text, eKeyEvent evt) : parentWindow(parent), keyCode(key), text(_text), eventType(evt) - { - setTypeName("ogfx::KeyEventData"); - validate(); - } - - public: - int32_t keyCode; - char text; - eKeyEvent eventType; - WindowBase& parentWindow; - }; -} diff --git a/src/ogfx/gui/WindowBaseOutputHandler.cpp b/src/ogfx/gui/WindowOutputHandler.cpp similarity index 63% rename from src/ogfx/gui/WindowBaseOutputHandler.cpp rename to src/ogfx/gui/WindowOutputHandler.cpp index 55aca03..dfc994a 100644 --- a/src/ogfx/gui/WindowBaseOutputHandler.cpp +++ b/src/ogfx/gui/WindowOutputHandler.cpp @@ -18,7 +18,7 @@ along with OmniaFramework. If not, see . */ -#include "WindowBaseOutputHandler.hpp" +#include "WindowOutputHandler.hpp" #include "../render/BasicRenderer.hpp" #include "../../string/TextStyleParser.hpp" @@ -26,25 +26,25 @@ namespace ogfx { using namespace ostd; - WindowBaseOutputHandler::WindowBaseOutputHandler(void) + GraphicsWindowOutputHandler::GraphicsWindowOutputHandler(void) { } - void WindowBaseOutputHandler::attachWindow(ogfx::WindowBase& window) + void GraphicsWindowOutputHandler::attachWindow(ogfx::GraphicsWindow& window) { if (m_window != nullptr) return; m_window = &window; m_renderer.init(window); } - void WindowBaseOutputHandler::setMonospaceFont(const String& filePath) + void GraphicsWindowOutputHandler::setMonospaceFont(const String& filePath) { m_renderer.setFont(filePath); m_renderer.setFontSize(m_fontSize); __update_char_size(); } - Vec2 WindowBaseOutputHandler::getStringSize(const String& str) + Vec2 GraphicsWindowOutputHandler::getStringSize(const String& str) { Vec2 size = { 0.0f, m_charSize.y }; if (str.len() == 0) return size; @@ -52,23 +52,23 @@ namespace ogfx return size; } - bool WindowBaseOutputHandler::isReady(void) + bool GraphicsWindowOutputHandler::isReady(void) { return m_window != nullptr && m_renderer.getTTFRenderer().hasOpenFont() && m_fontSize > 0; } - void WindowBaseOutputHandler::resetCursorPosition(void) + void GraphicsWindowOutputHandler::resetCursorPosition(void) { m_curosrPosition = { 0, 0 }; } - void WindowBaseOutputHandler::resetColors(void) + void GraphicsWindowOutputHandler::resetColors(void) { m_foregroundColor = m_defaultForegroundColor; m_backgroundColor = m_defaultBackgroundColor; } - void WindowBaseOutputHandler::beginFrame(void) + void GraphicsWindowOutputHandler::beginFrame(void) { resetColors(); resetCursorPosition(); @@ -77,37 +77,37 @@ namespace ogfx - void WindowBaseOutputHandler::setConsoleMaxCharacters(const IPoint& size) + void GraphicsWindowOutputHandler::setConsoleMaxCharacters(const IPoint& size) { m_consoleSize = size; } - void WindowBaseOutputHandler::setConsolePosition(const Vec2& pos) + void GraphicsWindowOutputHandler::setConsolePosition(const Vec2& pos) { m_consolePosition = pos; } - void WindowBaseOutputHandler::setWrapMode(eWrapMode wrapMode) + void GraphicsWindowOutputHandler::setWrapMode(eWrapMode wrapMode) { m_wrapMode = wrapMode; } - void WindowBaseOutputHandler::setPadding(const Rectangle& rect) + void GraphicsWindowOutputHandler::setPadding(const Rectangle& rect) { m_padding = rect; } - void WindowBaseOutputHandler::setDefaultBackgorundColor(const Color& color) + void GraphicsWindowOutputHandler::setDefaultBackgorundColor(const Color& color) { m_defaultBackgroundColor = color; } - void WindowBaseOutputHandler::setDefaultForegroundColor(const Color& color) + void GraphicsWindowOutputHandler::setDefaultForegroundColor(const Color& color) { m_defaultForegroundColor = color; } - void WindowBaseOutputHandler::setTabWidth(uint8_t tw) + void GraphicsWindowOutputHandler::setTabWidth(uint8_t tw) { m_tabWidth = tw; } @@ -115,19 +115,19 @@ namespace ogfx - void WindowBaseOutputHandler::setFontSize(int32_t fontSize) + void GraphicsWindowOutputHandler::setFontSize(int32_t fontSize) { m_fontSize = fontSize; m_renderer.setFontSize(m_fontSize); __update_char_size(); } - int32_t WindowBaseOutputHandler::getFontSize(void) + int32_t GraphicsWindowOutputHandler::getFontSize(void) { return m_fontSize; } - Vec2 WindowBaseOutputHandler::getCharacterSize(int32_t fontSize) + Vec2 GraphicsWindowOutputHandler::getCharacterSize(int32_t fontSize) { if (fontSize > 0) { @@ -137,37 +137,37 @@ namespace ogfx return m_charSize; } - Vec2 WindowBaseOutputHandler::getConsolePosition(void) + Vec2 GraphicsWindowOutputHandler::getConsolePosition(void) { return m_consolePosition; } - WindowBaseOutputHandler::eWrapMode WindowBaseOutputHandler::getWrapMode(void) + GraphicsWindowOutputHandler::eWrapMode GraphicsWindowOutputHandler::getWrapMode(void) { return m_wrapMode; } - Rectangle WindowBaseOutputHandler::getPadding(void) + Rectangle GraphicsWindowOutputHandler::getPadding(void) { return m_padding; } - Color WindowBaseOutputHandler::getDefaultBackgroundColor(void) + Color GraphicsWindowOutputHandler::getDefaultBackgroundColor(void) { return m_defaultBackgroundColor; } - Color WindowBaseOutputHandler::getDefaultForegroundColor(void) + Color GraphicsWindowOutputHandler::getDefaultForegroundColor(void) { return m_defaultForegroundColor; } - uint8_t WindowBaseOutputHandler::getTabWidth(void) + uint8_t GraphicsWindowOutputHandler::getTabWidth(void) { return m_tabWidth; } - Rectangle WindowBaseOutputHandler::getConsoleBounds(void) + Rectangle GraphicsWindowOutputHandler::getConsoleBounds(void) { float console_w = ((float)m_consoleSize.x * getCharacterSize().x) + getPadding().x + getPadding().w; float console_h = ((float)m_consoleSize.y * getCharacterSize().y) + getPadding().y + getPadding().h; @@ -177,54 +177,54 @@ namespace ogfx - WindowBaseOutputHandler& WindowBaseOutputHandler::bg(const Color& color) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::bg(const Color& color) { m_backgroundColor = color; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::bg(const ConsoleColors::tConsoleColor& color) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::bg(const ConsoleColors::tConsoleColor& color) { m_backgroundColor = color.fullColor; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::bg(const String& color) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::bg(const String& color) { m_backgroundColor = ConsoleColors::getFromName(color).fullColor; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::fg(const Color& color) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::fg(const Color& color) { m_foregroundColor = color; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::fg(const ConsoleColors::tConsoleColor& color) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::fg(const ConsoleColors::tConsoleColor& color) { m_foregroundColor = color.fullColor; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::fg(const String& color) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::fg(const String& color) { m_foregroundColor = ConsoleColors::getFromName(color).fullColor; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::pChar(char c) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::pChar(char c) { __print_string(ostd::String("").addChar(c)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::pStyled(const String& styled) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::pStyled(const String& styled) { return pStyled(TextStyleParser::parse(styled, { m_backgroundColor, "", true }, { m_foregroundColor, "", false })); } - WindowBaseOutputHandler& WindowBaseOutputHandler::pStyled(const TextStyleParser::tStyledString& styled) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::pStyled(const TextStyleParser::tStyledString& styled) { if (!styled.validate()) return *this; Color oldBgCol = m_backgroundColor; @@ -236,7 +236,7 @@ namespace ogfx return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::pStyled(TextStyleBuilder::IRichStringBase& styled) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::pStyled(TextStyleBuilder::IRichStringBase& styled) { auto oldBg = styled.getDefaultBackgroundColor(); auto oldFg = styled.getDefaultForegroundColor(); @@ -248,79 +248,79 @@ namespace ogfx return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::pObject(const BaseObject& bo) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::pObject(const BaseObject& bo) { __print_string(bo.toString()); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(const String& se) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(const String& se) { __print_string(se); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(uint8_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(uint8_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(int8_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(int8_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(uint16_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(uint16_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(int16_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(int16_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(uint32_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(uint32_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(int32_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(int32_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(uint64_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(uint64_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(int64_t i) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(int64_t i) { __print_string(ostd::String("").add(i)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(float f, uint8_t precision) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(float f, uint8_t precision) { __print_string(ostd::String("").add(f, precision)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::p(double f, uint8_t precision) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::p(double f, uint8_t precision) { __print_string(ostd::String("").add(f, precision)); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::nl(void) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::nl(void) { if (m_curosrPosition.y >= getConsoleSize().y) return *this; m_curosrPosition.y++; @@ -328,7 +328,7 @@ namespace ogfx return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::tab(void) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::tab(void) { if (m_curosrPosition.x == 0) { @@ -343,68 +343,68 @@ namespace ogfx return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::flush(void) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::flush(void) { return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::clear(void) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::clear(void) { return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::reset(void) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::reset(void) { resetColors(); return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::xy(IPoint position) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::xy(IPoint position) { m_curosrPosition = { (float)position.x, (float)position.y }; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::xy(int32_t x, int32_t y) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::xy(int32_t x, int32_t y) { m_curosrPosition = { (float)x, (float)y }; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::x(int32_t x) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::x(int32_t x) { m_curosrPosition.x = (float)x; return *this; } - WindowBaseOutputHandler& WindowBaseOutputHandler::y(int32_t y) + GraphicsWindowOutputHandler& GraphicsWindowOutputHandler::y(int32_t y) { m_curosrPosition.y = (float)y; return *this; } - IPoint WindowBaseOutputHandler::getCursorPosition(void) + IPoint GraphicsWindowOutputHandler::getCursorPosition(void) { return { (int32_t)std::round(m_curosrPosition.x), (int32_t)std::round(m_curosrPosition.y) }; } - void WindowBaseOutputHandler::getCursorPosition(int32_t& outX, int32_t& outY) + void GraphicsWindowOutputHandler::getCursorPosition(int32_t& outX, int32_t& outY) { outX = (int32_t)std::round(m_curosrPosition.x); outY = (int32_t)std::round(m_curosrPosition.y); } - int32_t WindowBaseOutputHandler::getCursorX(void) + int32_t GraphicsWindowOutputHandler::getCursorX(void) { return (int32_t)std::round(m_curosrPosition.x); } - int32_t WindowBaseOutputHandler::getCursorY(void) + int32_t GraphicsWindowOutputHandler::getCursorY(void) { return (int32_t)std::round(m_curosrPosition.y); } - void WindowBaseOutputHandler::getConsoleSize(int32_t& outColumns, int32_t& outRows) + void GraphicsWindowOutputHandler::getConsoleSize(int32_t& outColumns, int32_t& outRows) { int32_t console_rows = std::numeric_limits::max(); int32_t console_cols = std::numeric_limits::max(); @@ -414,7 +414,7 @@ namespace ogfx outRows = console_rows; } - IPoint WindowBaseOutputHandler::getConsoleSize(void) + IPoint GraphicsWindowOutputHandler::getConsoleSize(void) { int32_t console_rows = std::numeric_limits::max(); int32_t console_cols = std::numeric_limits::max(); @@ -423,13 +423,13 @@ namespace ogfx return { console_cols, console_rows }; } - void WindowBaseOutputHandler::__update_char_size(void) + void GraphicsWindowOutputHandler::__update_char_size(void) { auto size = m_renderer.getStringSize("A", m_fontSize); m_charSize = { (float)size.x, (float)size.y }; } - void WindowBaseOutputHandler::__print_string(const String& str) + void GraphicsWindowOutputHandler::__print_string(const String& str) { if (!isReady()) return; auto l_endOfConsole = [&](void) -> bool { diff --git a/src/ogfx/gui/WindowBaseOutputHandler.hpp b/src/ogfx/gui/WindowOutputHandler.hpp similarity index 57% rename from src/ogfx/gui/WindowBaseOutputHandler.hpp rename to src/ogfx/gui/WindowOutputHandler.hpp index 5bd98be..48813a5 100644 --- a/src/ogfx/gui/WindowBaseOutputHandler.hpp +++ b/src/ogfx/gui/WindowOutputHandler.hpp @@ -26,12 +26,12 @@ namespace ogfx { - class WindowBaseOutputHandler : public ostd::OutputHandlerBase + class GraphicsWindowOutputHandler : public ostd::OutputHandlerBase { public: enum class eWrapMode { TripleDots, NewLine }; public: - WindowBaseOutputHandler(void); - void attachWindow(WindowBase& window); + GraphicsWindowOutputHandler(void); + void attachWindow(GraphicsWindow& window); void setMonospaceFont(const ostd::String& filePath); ostd::Vec2 getStringSize(const ostd::String& str); bool isReady(void); @@ -58,41 +58,41 @@ namespace ogfx uint8_t getTabWidth(void); ostd::Rectangle getConsoleBounds(void); - WindowBaseOutputHandler& bg(const ostd::Color& color) override; - WindowBaseOutputHandler& bg(const ostd::ConsoleColors::tConsoleColor& color) override; - WindowBaseOutputHandler& bg(const ostd::String& color) override; - WindowBaseOutputHandler& fg(const ostd::Color& color) override; - WindowBaseOutputHandler& fg(const ostd::ConsoleColors::tConsoleColor& color) override; - WindowBaseOutputHandler& fg(const ostd::String& color) override; + GraphicsWindowOutputHandler& bg(const ostd::Color& color) override; + GraphicsWindowOutputHandler& bg(const ostd::ConsoleColors::tConsoleColor& color) override; + GraphicsWindowOutputHandler& bg(const ostd::String& color) override; + GraphicsWindowOutputHandler& fg(const ostd::Color& color) override; + GraphicsWindowOutputHandler& fg(const ostd::ConsoleColors::tConsoleColor& color) override; + GraphicsWindowOutputHandler& fg(const ostd::String& color) override; - WindowBaseOutputHandler& pChar(char c) override; - WindowBaseOutputHandler& pStyled(const ostd::String& styled) override; - WindowBaseOutputHandler& pStyled(const ostd::TextStyleParser::tStyledString& styled) override; - WindowBaseOutputHandler& pStyled(ostd::TextStyleBuilder::IRichStringBase& styled) override; - WindowBaseOutputHandler& pObject(const ostd::BaseObject& bo) override; + GraphicsWindowOutputHandler& pChar(char c) override; + GraphicsWindowOutputHandler& pStyled(const ostd::String& styled) override; + GraphicsWindowOutputHandler& pStyled(const ostd::TextStyleParser::tStyledString& styled) override; + GraphicsWindowOutputHandler& pStyled(ostd::TextStyleBuilder::IRichStringBase& styled) override; + GraphicsWindowOutputHandler& pObject(const ostd::BaseObject& bo) override; - WindowBaseOutputHandler& p(const ostd::String& se) override; - WindowBaseOutputHandler& p(uint8_t i) override; - WindowBaseOutputHandler& p(int8_t i) override; - WindowBaseOutputHandler& p(uint16_t i) override; - WindowBaseOutputHandler& p(int16_t i) override; - WindowBaseOutputHandler& p(uint32_t i) override; - WindowBaseOutputHandler& p(int32_t i) override; - WindowBaseOutputHandler& p(uint64_t i) override; - WindowBaseOutputHandler& p(int64_t i) override; - WindowBaseOutputHandler& p(float f, uint8_t precision = 0) override; - WindowBaseOutputHandler& p(double f, uint8_t precision = 0) override; + GraphicsWindowOutputHandler& p(const ostd::String& se) override; + GraphicsWindowOutputHandler& p(uint8_t i) override; + GraphicsWindowOutputHandler& p(int8_t i) override; + GraphicsWindowOutputHandler& p(uint16_t i) override; + GraphicsWindowOutputHandler& p(int16_t i) override; + GraphicsWindowOutputHandler& p(uint32_t i) override; + GraphicsWindowOutputHandler& p(int32_t i) override; + GraphicsWindowOutputHandler& p(uint64_t i) override; + GraphicsWindowOutputHandler& p(int64_t i) override; + GraphicsWindowOutputHandler& p(float f, uint8_t precision = 0) override; + GraphicsWindowOutputHandler& p(double f, uint8_t precision = 0) override; - WindowBaseOutputHandler& nl(void) override; - WindowBaseOutputHandler& tab(void) override; - WindowBaseOutputHandler& flush(void) override; - WindowBaseOutputHandler& clear(void) override; - WindowBaseOutputHandler& reset(void) override; + GraphicsWindowOutputHandler& nl(void) override; + GraphicsWindowOutputHandler& tab(void) override; + GraphicsWindowOutputHandler& flush(void) override; + GraphicsWindowOutputHandler& clear(void) override; + GraphicsWindowOutputHandler& reset(void) override; - WindowBaseOutputHandler& xy(ostd::IPoint position) override; - WindowBaseOutputHandler& xy(int32_t x, int32_t y) override; - WindowBaseOutputHandler& x(int32_t x) override; - WindowBaseOutputHandler& y(int32_t y) override; + GraphicsWindowOutputHandler& xy(ostd::IPoint position) override; + GraphicsWindowOutputHandler& xy(int32_t x, int32_t y) override; + GraphicsWindowOutputHandler& x(int32_t x) override; + GraphicsWindowOutputHandler& y(int32_t y) override; ostd::IPoint getCursorPosition(void) override; void getCursorPosition(int32_t& outX, int32_t& outY) override; @@ -113,7 +113,7 @@ namespace ogfx ostd::Color m_defaultForegroundColor { 0, 220, 0, 255 }; ostd::Vec2 m_curosrPosition; BasicRenderer2D m_renderer; - WindowBase* m_window { nullptr }; + GraphicsWindow* m_window { nullptr }; int32_t m_fontSize { 20 }; ostd::Vec2 m_charSize; ostd::IPoint m_consoleSize { 0, 0 }; diff --git a/src/ogfx/ogfx.hpp b/src/ogfx/ogfx.hpp index c726c99..d6d6612 100644 --- a/src/ogfx/ogfx.hpp +++ b/src/ogfx/ogfx.hpp @@ -23,8 +23,8 @@ #include #include -#include -#include +#include +#include #include #include diff --git a/src/ogfx/render/BasicRenderer.cpp b/src/ogfx/render/BasicRenderer.cpp index 71e65d0..9576aff 100644 --- a/src/ogfx/render/BasicRenderer.cpp +++ b/src/ogfx/render/BasicRenderer.cpp @@ -19,11 +19,11 @@ */ #include "BasicRenderer.hpp" -#include "../gui/WindowBase.hpp" +#include "../gui/Window.hpp" namespace ogfx { - void BasicRenderer2D::init(WindowBase& window) + void BasicRenderer2D::init(WindowCore& window) { m_window = &window; m_ttfr.init(window.getSDLRenderer()); diff --git a/src/ogfx/render/BasicRenderer.hpp b/src/ogfx/render/BasicRenderer.hpp index 1018382..38d6d78 100644 --- a/src/ogfx/render/BasicRenderer.hpp +++ b/src/ogfx/render/BasicRenderer.hpp @@ -20,6 +20,7 @@ #pragma once +#include "gui/Window.hpp" #include #include #include @@ -27,16 +28,16 @@ namespace ogfx { - class WindowBase; + class WindowCore; class BasicRenderer2D { public: BasicRenderer2D(void) = default; - void init(WindowBase& window); + void init(WindowCore& window); inline TTFRenderer& getTTFRenderer(void) { return m_ttfr; } inline ostd::IPoint getStringSize(const ostd::String str, int32_t fontSize = 0) { return m_ttfr.getStringDimensions(str, fontSize); } - inline WindowBase& getWindow(void) { return *m_window; } + inline WindowCore& getWindow(void) { return *m_window; } inline bool isInitialized(void) { return m_initialized; } void setFont(const ostd::String& fontFilePath); void setFontSize(int32_t fontSize); @@ -63,7 +64,7 @@ namespace ogfx private: TTFRenderer m_ttfr; - WindowBase* m_window { nullptr }; + WindowCore* m_window { nullptr }; bool m_initialized { false }; }; } diff --git a/src/ogfx/render/PixelRenderer.cpp b/src/ogfx/render/PixelRenderer.cpp index 3ef2e90..e28a80a 100644 --- a/src/ogfx/render/PixelRenderer.cpp +++ b/src/ogfx/render/PixelRenderer.cpp @@ -19,7 +19,7 @@ */ #include "PixelRenderer.hpp" -#include "../gui/WindowBase.hpp" +#include "../gui/Window.hpp" #include "../../ostd/io/Memory.hpp" #include @@ -132,7 +132,7 @@ namespace ogfx SDL_DestroyTexture(m_texture); } - void PixelRenderer::initialize(WindowBase& parent) + void PixelRenderer::initialize(WindowCore& parent) { if (isValid()) return; //TODO: Error if (!parent.isValid() || !parent.isInitialized()) diff --git a/src/ogfx/render/PixelRenderer.hpp b/src/ogfx/render/PixelRenderer.hpp index b68d846..d0ba46c 100644 --- a/src/ogfx/render/PixelRenderer.hpp +++ b/src/ogfx/render/PixelRenderer.hpp @@ -28,7 +28,7 @@ namespace ogfx { - class WindowBase; + class WindowCore; class PixelRenderer : public ostd::BaseObject { public: class TextRenderer @@ -83,7 +83,7 @@ namespace ogfx public: inline PixelRenderer(void) { invalidate(); } ~PixelRenderer(void); - void initialize(WindowBase& parent); + void initialize(WindowCore& parent); void handleSignal(ostd::tSignal& signal) override; void updateBuffer(void); void displayBuffer(void); @@ -94,7 +94,7 @@ namespace ogfx private: uint32_t* m_pixels { nullptr }; SDL_Texture* m_texture { nullptr }; - WindowBase* m_parent { nullptr }; + WindowCore* m_parent { nullptr }; int32_t m_windowWidth { 0 }; int32_t m_windowHeight { 0 }; }; diff --git a/src/ogfx/resources/Image.cpp b/src/ogfx/resources/Image.cpp index b1a6775..f05f635 100644 --- a/src/ogfx/resources/Image.cpp +++ b/src/ogfx/resources/Image.cpp @@ -21,7 +21,7 @@ #include "Image.hpp" #include "../../io/Logger.hpp" #include "../render/BasicRenderer.hpp" -#include "../gui/WindowBase.hpp" +#include "../gui/Window.hpp" namespace ogfx { diff --git a/src/ostd/io/IOHandlers.hpp b/src/ostd/io/IOHandlers.hpp index f1cd8ad..110cb25 100644 --- a/src/ostd/io/IOHandlers.hpp +++ b/src/ostd/io/IOHandlers.hpp @@ -27,7 +27,7 @@ namespace ogfx { - class WindowBase; + class WindowCore; class BasicRenderer2D; }; diff --git a/src/test.cpp b/src/test/GraphicsWindowTest.cpp similarity index 90% rename from src/test.cpp rename to src/test/GraphicsWindowTest.cpp index 97ee44d..0f083af 100644 --- a/src/test.cpp +++ b/src/test/GraphicsWindowTest.cpp @@ -18,36 +18,16 @@ along with OmniaFramework. If not, see . */ - - - -/* - * Label - * Button - * Panel / Container - * Checkbox - * Radio Button (Group) - * Text Input - * Horizontal Slider - * Image / Icon - * ScrollView - * ListBox - * ComboBox - * TreeView - */ - #include ostd::ConsoleOutputHandler out; -class Window : public ogfx::WindowBase +class Window : public ogfx::GraphicsWindow { public: inline Window(void) : m_sigHandler(m_textInput, *this) { } inline void onInitialize(void) override { - enableSignals(); - connectSignal(ostd::tBuiltinSignals::KeyReleased); connectSignal(ogfx::gui::RawTextInput::actionEventSignalID); m_gfx.init(*this); @@ -117,7 +97,7 @@ int main(int argc, char** argv) while (window.isRunning()) { - window.update(); + window.mainLoop(); } return 0; } diff --git a/src/test/GuiTest.cpp b/src/test/GuiTest.cpp new file mode 100644 index 0000000..baff5e7 --- /dev/null +++ b/src/test/GuiTest.cpp @@ -0,0 +1,71 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + + + + +/* + * Label + * Button + * Panel / Container + * Checkbox + * Radio Button (Group) + * Text Input + * Horizontal Slider + * Image / Icon + * ScrollView + * ListBox + * ComboBox + * TreeView + */ + +#include + +ostd::ConsoleOutputHandler out; + +class Window : public ogfx::gui::Window +{ + public: + inline Window(void) { } + inline void onInitialize(void) override + { + } + + inline void handleSignal(ostd::tSignal& signal) override + { + if (signal.ID == ostd::tBuiltinSignals::KeyReleased) + { + auto& evtData = (ogfx::KeyEventData&)signal.userData; + if (evtData.keyCode == SDLK_ESCAPE) + close(); + } + } + + private: +}; + +int main(int argc, char** argv) +{ + Window window; + window.initialize(800, 600, "OmniaFramework - Test Window"); + window.setClearColor({ 0, 0, 0 }); + window.mainLoop(); + return 0; +} From 23e69bfdfc3d654fa67d7904a4a64ff76a133659 Mon Sep 17 00:00:00 2001 From: OmniaX-Dev Date: Tue, 31 Mar 2026 07:32:37 +0200 Subject: [PATCH 4/6] Added possibility to load fonts from memory + added UbuntuMonoRegular as default embedded font --- CMakeLists.txt | 2 + build | 4 +- extra/res/ttf/Courier Prime.ttf | Bin 98156 -> 0 bytes extra/res/ttf/MonospaceTypewriter.ttf | Bin 38748 -> 0 bytes extra/res/ttf/NK57 Monospace Cd Rg.otf | Bin 50500 -> 0 bytes extra/res/ttf/Roboto-Regular.ttf | Bin 158604 -> 0 bytes extra/res/ttf/Roboto-Thin.ttf | Bin 122512 -> 0 bytes extra/res/ttf/UbuntuMono-R.ttf | Bin 205748 -> 0 bytes extra/res/ttf/cmunorm.ttf | Bin 210868 -> 0 bytes extra/res/ttf/digital7mono.ttf | Bin 34404 -> 0 bytes extra/res/ttf/joystix monospace.otf | Bin 37268 -> 0 bytes extra/res/ttf/monofonto rg.otf | Bin 57320 -> 0 bytes licences/SDL2_gfx-LICENCE.txt | 20 - ...DL2_image-LICENSE.txt => SDL3-LICENSE.txt} | 2 +- ...ttf-LICENSE.txt => SDL3_image-LICENSE.txt} | 2 +- ...{SDL2-LICENSE.txt => SDL3_ttf-LICENSE.txt} | 9 +- licences/Ubuntu-Font-LICENCE.txt | 96 + licences/midifile-LICENSE.txt | 23 + other/build.nr | 2 +- src/ogfx/gui/Widget.cpp | 29 + src/ogfx/gui/Widget.hpp | 36 + src/ogfx/gui/Window.cpp | 7 +- src/ogfx/gui/Window.hpp | 3 + src/ogfx/gui/WindowOutputHandler.cpp | 2 +- src/ogfx/gui/WindowOutputHandler.hpp | 5 +- src/ogfx/render/BasicRenderer.cpp | 7 + src/ogfx/render/BasicRenderer.hpp | 2 +- src/ogfx/render/FontUtils.cpp | 32 +- src/ogfx/render/FontUtils.hpp | 6 +- src/ogfx/resources/UbuntuMonoRegularTTF.cpp | 9536 +++++++++++++++++ src/ogfx/resources/UbuntuMonoRegularTTF.hpp | 29 + src/ostd/utils/Signals.hpp | 13 - 32 files changed, 9815 insertions(+), 52 deletions(-) delete mode 100644 extra/res/ttf/Courier Prime.ttf delete mode 100644 extra/res/ttf/MonospaceTypewriter.ttf delete mode 100644 extra/res/ttf/NK57 Monospace Cd Rg.otf delete mode 100644 extra/res/ttf/Roboto-Regular.ttf delete mode 100644 extra/res/ttf/Roboto-Thin.ttf delete mode 100644 extra/res/ttf/UbuntuMono-R.ttf delete mode 100644 extra/res/ttf/cmunorm.ttf delete mode 100644 extra/res/ttf/digital7mono.ttf delete mode 100644 extra/res/ttf/joystix monospace.otf delete mode 100644 extra/res/ttf/monofonto rg.otf delete mode 100644 licences/SDL2_gfx-LICENCE.txt rename licences/{SDL2_image-LICENSE.txt => SDL3-LICENSE.txt} (93%) rename licences/{SDL2_ttf-LICENSE.txt => SDL3_image-LICENSE.txt} (93%) rename licences/{SDL2-LICENSE.txt => SDL3_ttf-LICENSE.txt} (88%) create mode 100644 licences/Ubuntu-Font-LICENCE.txt create mode 100644 licences/midifile-LICENSE.txt create mode 100644 src/ogfx/gui/Widget.cpp create mode 100644 src/ogfx/gui/Widget.hpp create mode 100644 src/ogfx/resources/UbuntuMonoRegularTTF.cpp create mode 100644 src/ogfx/resources/UbuntuMonoRegularTTF.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1681f2d..bf793f7 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ list(APPEND OGFX_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/RawTextInput.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/Window.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowOutputHandler.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/Widget.cpp # render ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/render/BasicRenderer.cpp @@ -97,6 +98,7 @@ list(APPEND OGFX_SOURCE_FILES # resources ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/resources/Image.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/resources/UbuntuMonoRegularTTF.cpp # utils ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/utils/Animation.cpp diff --git a/build b/build index 9b05374..b64c3fb 100755 --- a/build +++ b/build @@ -21,7 +21,7 @@ if [[ "$1" == "debug" || "$1" == "release" ]]; then rm -rf bin cmake -B bin -S ./ -G "$MAKEFILE_TYPE" -DCMAKE_BUILD_TYPE=$BUILD_TYPE $MAKE_COMMAND -C bin $NJOBS --no-print-directory - cp -r extra/* bin/ + find extra -mindepth 1 -maxdepth 1 -exec cp -r {} bin/ \; build_number=$(cat other/build.nr) build_number=$((build_number + 1)) truncate -s 0 other/build.nr @@ -34,7 +34,7 @@ elif [[ "$1" == "install" ]]; then ./install_release.sh cd .. else - cp -r extra/* bin/ + find extra -mindepth 1 -maxdepth 1 -exec cp -r {} bin/ \; printf "\n\033[0;32mBuilding Changes...\n\n\033[0m" $MAKE_COMMAND -C bin $NJOBS --no-print-directory if [[ "$1" == "run" ]]; then diff --git a/extra/res/ttf/Courier Prime.ttf b/extra/res/ttf/Courier Prime.ttf deleted file mode 100644 index db4e6c14ca612e8784d08649f838fb61c140f7ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98156 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 diff --git a/extra/res/ttf/MonospaceTypewriter.ttf b/extra/res/ttf/MonospaceTypewriter.ttf deleted file mode 100644 index 29e9a6795d2b66abc6ff32b2addd1002cc1eaa5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38748 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ⅆ~oO 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

v%Q*Qgy;tdJj4ZONjTx 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

sDMz7$^SDZV4x`K*fov0l~+M89O^^Om^v{t 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 diff --git a/extra/res/ttf/Roboto-Thin.ttf b/extra/res/ttf/Roboto-Thin.ttf deleted file mode 100644 index 861d63adb6dee256c5d63879c323d27b5b0b047b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122512 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 diff --git a/extra/res/ttf/UbuntuMono-R.ttf b/extra/res/ttf/UbuntuMono-R.ttf deleted file mode 100644 index fdd309d716629f4e5339d5e5508225ed857a3ede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205748 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ăESk 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 G(fmJpf?fdt diff --git a/extra/res/ttf/cmunorm.ttf b/extra/res/ttf/cmunorm.ttf deleted file mode 100644 index 72cfd4221c09a64748969d5852486f062e427ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210868 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 z 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 Ttz>dm*FbJmlFADz1_A#IZy!O{ diff --git a/extra/res/ttf/digital7mono.ttf b/extra/res/ttf/digital7mono.ttf deleted file mode 100644 index a481b97b4f84fd4199360c511517a5cf22d2a664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34404 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 KWdi<#z5fSo7^(aK diff --git a/extra/res/ttf/monofonto rg.otf b/extra/res/ttf/monofonto rg.otf deleted file mode 100644 index bca1ad6a4d19b0354f182792c9112ee2b0416e31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57320 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 z zPTKqkU^xu@u`r>?LYkM$(=#zG9a!b!(X}4fzxe02(u(C0FDBnl5Eu{H zop%~fciwEC?z~@ly7M0BDHzz(oj0(jU|>&o-UB_|c|Z1a=l$5z!27DFV0=%5K*hit z+|$4t+|$4t+|wYCHV8D00$af~JO$VA6kNm8D6};4Ugl}Ebl|;f zuRzRK5YSf;&{q)9S0L>xkoFY>6ats05V$=31uFgm6@Q_nzon(XRtRdI0Rr0qp+kVs zAwXa&1U%0Gp?jckEl@B(pdeBpFOnfh7+A1CC0J+~EQlK{h#M>nS_qV02EL`2;9y?8 zu}Fqs-Xj5FVuoP82_Q_&5NyP30pZAM22F~qD2unBA(*!xAb}rmKR6Tk z1ql3jYeJ>KFF@cIAn@aD3)cjG0Ro2rfkPl(_6)&+!iWL|4!jpYrNALj;1DQ`i1!J& zCU6K8I0OnK3KTd53L^>>MieOU3l#VT3H*WtenA4iAi-2Y0>2=EUy#5rNElI&z%NMP z7bNft68HrP{CNK~1P2NHf&_lS0>5B^AMd+{VBU8D3H*Wue*BUTl>$HBui;GK7cB4# z7Wf4V{DOt?@jeeN1%4p{zYxP%-qA|=Bd_8RVLTz2zR?}WS=bm1tF$ROX=0X8hsnbw zOv&iZheSYFH-IoRKzMLQcTb^`k1bf2$CBF$qj)F7EQ#j)#Gx+yTFqv{oK;iuM>z0#=xrK0}nqCa{fW;r~b<-2FlG0OBFd?Hm zPuA$plLdw5nR1hg5(^88;O3wZHeK_L3_>G=FYK*OPfW;ybYOZ;dSPjK{kLhqGFyVtaob@g=r6;7CEG-3=!gTTy zrjr*RzKvdiM!sbh@3CHdq=rhLtlY`)RLM^^FFrOyr9g#`#zrqbssa**&xbIhx8U&J zg2Q|BcZo)CexU}$tJIsn`!ag-cVB>bn%3EM-lp zsb16oY7CV^6;K-?!+DJQo~oxBXb~-^ZD?1z2kk}op@-7L=tMe$E}$pT^XY|Q6eWtOknLNn*r3>^*r%vg98+9Z+*LeOJX4qz zAFW6$TPsJaj#ix^$LD1=$ZD)rrd6TUbgM5Qv$w{o0h=xb;}b+NE0;Sx>c|YrW8Vne{sBZPvRWXLri_N9)_x53QeAzd-eNy}KAVvEjj@rI<*V<~wV->|Qx^dDKg-OfC zI&!Lr!M!}s4o31@)!V+^q+`{CHJnJYT!Wl~o^v`*7v#=4Y5Qqd^p&}z`dsA@Z|}q* zk&%g)>*^{mpVJ|cgtPbID6TWt`4J~U_Q?JblAzA0vk#&;dmY=E;k?~6T&N^>+SHt! zl~c>hSFPHyW9q709XG&3!wrObhm$odIqO+hwXgrX_Vhh{^^nI=q# z+j>QdzUP$ORVk-@8i=fs^6^ci)Us-B4vIi|NY3S<5HtrV8zoKYW(m!zk<-bGsH2V( z(@q)LF)v%F8IceGKlH%O44ucPjeptKj#828jXrMZOdSQP4)U8{$uH3q9 z`wCOOb}`pmol};dl{0zs?pA0 zn^jx^C;gq<=)y_S4H!BnZPe48#;m8fE=}o3YVJ!T@5a6qvZh&ymxld23OQ>y!UGYM zGmS)C5OQYNj*ysV<4tQ0=r|?a?W=2}k<<~{o%`|8S=0W6?YhLRBiF`lmZhwpwQ{|~ z<`tWcYuTk5&gq6b(y``=s9ue%#-8TLunDCZxmtF&DRzC7BeLOsQ^)7znvxvHkHm)J@vaFbFz>iRQM2qitc_wrI4C;#BnO#(C6B`Y0NCgd0iy zO20ABqgeF^x*Li{ETi<%fZ>xGod=>l1GqiOW@n0POW$isr{2(4(TU643FT}V-Wy$MFpN&@*Y9NFvu7tO?`f6l z#y+6z`?T2?l+2>ChONA9g1|Pc`sT!wVWpEln>|^38|m(I3Eb=-r7OQ#xnjNJ)^(H8 zQYTHyFPyTfe6}t$jT*LLZ}ut2JI62H*RfTaeJI*?&m@iNhj@)j#&Vs9^yGB9r5bks zmn+t7aon(aTK?p@Wz&mvoIN*#LZ-SN^i8CoR&QIjeYXRgl9MvA(lYKp5yN-6t; zEA3y9HDN;fuICjD%h}OeQ@_qjcL<+W0#kBK+N6=wb+cAcTvytK^Q2zU4}Pz40gv-V zYU&8R;j1OfHao6gJZGwoT@VNQ;FM^tlv~mGmNE}TO71fnePezLS`#7WDw6*N4eV%6 z-{?n~{Wv=?teq6;&3;s)AC#17rO8SrR(WUFtnE|Rf=|&~bG|Olb6~*-HzFy!W7Vqi@|9C_*y4ut5;i7n z-FqBZIo;_P989NcP#U{2Nb_xFB2uIxjqMSb>tRT&f_0;z1S0Xpy^nBvm3?@8X^d9I z#>B6?h%0<9rb2&}J+yo4q+wMys6Vu~=(9hvq7Lp^x_O)KlC&TxXI7GjoXW7~8`X?zAo^kOnmY2gYC0uAqImp421y zA#$O%A6Zd(z~RA|(}TjI$9ZY*EL87Y2XxjHX6Kd_x=* zG`MkYZ*CHWI?&3tp$shNgMmIwX(>yhw4cT7%o2w6zAde*lybvvsqZ3hiu0B#XU1w+ zUbG4gJ9CkS-FTK^YZ+M9hiTXh&1FW_cMqdF#TJ{pzhiS(PTRhH#me&X=_~W{rcHyO z&GkiFkQ*w2rJLp)xg3h+k`ejp9lG>xMhWnBxc%_9nB7?1u)TydPc>`QhC2{R#!N(3 z37nOl8)F#oY`|aKnD02NgUAZOm1lQk?962vHdb>zNyFxAlrS}wTm;u0Mf}X5v8X#Y zmNkz?F#2ugx7cUR5Q89O!Q|*$Y_6OL_Z_+$Ct)b(G;HHM2*fitL)Fk4ZYUb!#|`0z z`k|q$Ik_QS&DnHf*kVm%7?);b5z1iPxO!JqPk~z5L=87!7xZ&LvnkG&_TzdEL_Ki{ zskwO&1ea2%Ef{LxeQqGd(%*lZ-fv*$#Nj$saa7*k!+0^|?3dk-K(r&$K6rw3I_1d! zsE1Wj^Rym0BT@AE0p&W>7A&Y7z~B)VqxVRTIv^$a7}+5wWG6-$ZP9({n(bSbY;mmK zl;20kqJ(1fs)Sr_E>ffE+;M6NjmpsR;YYY&ZZ}@N>oOpE?gPK z&ef3Y0S(g73&4bmv1d49$i$NTe27>lz`u*lDu_;5%y2Z4bA}Z<=&~jsR%aROP&i|H zjuv!a1!{Y9=q&rQW}(L1UxFMV8f2j%YOWdX7n{)_>Z!DG1ZSdpNzEg;e2U$%de!#w zRS@Y?neU5PSinyqO2a-!PSZ5(_7`gN2$WC#0$q@aGD=Z1H;8NILMZkvDx;ieBbPy; z3k6UjvWgVkQ1?K%wt3|?3CLn#mMi%+iPrNBrIkgV081XXYA)12nx3m z2^VaU`YNM(Z-ync69Y;%ptQzYKeOhWYCXehdq+{(B_&x%uer2p*S_-(%3|}p686x# zoyQ(IAiLn(TwBh5$N+qsvjC}Js7fG>vPxKFr_zUM*rO{~oH?dFe|mS-Er)kuHC$V8 zkBBYq3_C!hgd1H&f3so$f8?aJvV=q_HDXkSWh{nB$ku6W*~P_0Ul%yCQ>W(Um91iL z`=jJS!MPCvm>ujCmjkv`!{U=HD$hZOhl8F~mc4=EN$uEu!>H0-a% z4R*jK9U`Hc^Wi4`Fz&{0aBo_Hw)J1<&#i^Nt}l@*8=b%J5I<4vmS2Zu-;qUqVQu$e zkRRMK!Sc$6mu4guXu0Vq2HA0KDx_@UmePug4#-XVw4&m;R#}IJqxSvp+M)w@RM*i* z_8}r~UA#{smn--0ip^q}L*VVU>_iwJM;1fW!BG^YAXL5bu!q{qMiC98-)u zi`g3*6w6Bai40ys9!GYdVAKvK)qu7ziS{CCW0%HxQufHU6$ig{s13f%Im5Dq??=pU z(Kfg%Qc6`%@9m^+N>wlV5Od!nJHNNHa!ZO1CbCah; zbg_AN39If%d$I7W$gm}s;bw`gK|`Ly9V5gc#d-ce3#*7L-HE$PJ*3$S=GW@RFtZiR zGIr(#4ZHm7)yvj7u3t7i7vvkaYTBNw4j@X%P|j`!D;+#FZTwVl$|1$(FbIY4aM1&v zE!dpwh=?6oKf)qVUBXH{q~`gkj(Q?xZNEiqIdWYLeokNCnbxmQMq;Rr<*XiCBCDkF zm3hAT6-;kCq-TFbDjiFbpAiH}!zM~X?n9IjM1Y2zPZ04U_%#Xm;vP0#;;-sw6YzyT zeC!S>BVq*s-_#Q`2uL0gYYF&Lbw;U|x>u(Od^N|5K} z#3_QPCCHyt#191dOiY}|zobLH6vGcmkgxH#`|v{suso(Jc!&yiU5ewTh$C?FZZ&9jEeQAv z8AaX}Ng+MAUi33;dkhkf7EctL#HHe|#RtTK3~3E zz5%x1)i4C(%ov$|u*vRgW;JtwImSF;KEU=l6>OLbV<)iXY!!Qo{Yw$9NKlk2zEG@( z4Q~4sClu!tm#o~a23l>kI$%|4bzAAATx3mK53-(M)6-^v%{MmYHkvlxZ6>vu-R5YU z$8FxWX|$Ev8g2b-18rk%H`vyw+Nc6lvsJI`NISKio84f$6uVh=SMB~*w^4Uh4^$_q zbJerdOVm~Bk8SPS_GlZ_c68hPw#(aIviGx(v`?|0ZokETzy06sT-x<*7uhbc-DmA8 z+TCbBs(nuT;`Y6+b(D3~bqwe@zGHsJ z1s%&fp6?{<)UVTsPFbBMcUs=5qSJX7D;F0RKbK)HNiL->XIy*2_wsSB(_PoQe(U<9 z>+{a?&Ye3C>YUPfe&=&>E~JCxy|#O=UvZ_UiMz2y|TU5du{Y?=iSje*SpO7g7?qf z$S2&Vz~@fNZSmXV zcgF9g-|v0f_4Vx=+;>yo>b@uXUhRwe(fzFZ`ScsxFSptE6T?SO;< zhX$M-*k)kofrAG|4m1rc8@P1f>4A3!zVm1OyZR6DPxN2lU+MoMKprqEpfcb?pfpeu zm=Sn3NF3BYsAtgNp!A>xLA!!(1aZN-;K1N>A)*kMknoVHA&Wy!gghVQG-%SG$%FO} zdNo)&SUWg;@YKOa2mcl79vT^%8+s)4TIkau?n7n_`DVzLAt#1B9cmaFHnd>q;-TLS zeK@os%qFZ?*pRTSu+p%lVMoI1!rAbi;e)~_gy)1$5C0;3ZFp7qweV-*e@BEwjE^Xe zSRQdY;$B30~kHvH%a1llBPAmpMtY7MG%|DKtdXlm9vN9XvN@_lRNttPQ8`ibqt--KM?Hx8E$TzGC|VZn z7F`s5F#2}1d6dnl?xVa$4Iedn)S^)jMn{aU9Q|rcuQ4HGa>pzi^Zl5IW2Ixej*T3< zW$eS49x%+c!2WHb3_B*rl->Vt2)!ioF(F8~fWhA$NkLTjpIBi^)xUq4GaTRfgEnI6pssb$)q%RsMzitNC~H>+}CGiA=0XWpXk3 znnFzprpcxyrk$p}rmLpArst-Q1+oHtLEnP#g4BZ2g82pC6znKCRdBK3Sph1vEp#sQ zEDVIrT=3g(g>wrR7j7&(Sv0e_d$C9Hu;Rqx`NeCB_ZIIj{-O9m@%s{SNxKqnNu%KYcp;7wDZ%RO>aAW$n>!3;hY;hHTL;n&UsX}u_ePAyLF+Eux;Hc$ht>%t<;G$(z8<;Nqw$ci=waTdu0rFf z0rUiJJk^Un2<85C0+jpHlRT+=bUNoo1>oXszV3-p7N)6AvfwK zy&jSavD_?mH+nbf1}SQ#U-91_CAQVbZdXk;ypE8gcB&6(udDi{6v?m2@$`I#+fkZB)R@#gr{`)pmR`ciP7i)FP1ZxIoN^<*7~TJAFuo_B zQerzBZpv!_RE`8nZLk@rQ3Vm`FLZFIMz!(Ovc`~s8c?;uSlrb#A(LVWY2Fb#Ov%?&M6z_<~($ zkF7s?c(1O-f@nM#@KlQdmE54>zrTWKtZb-#*YJbdlj}Qy>(BLf;09E4{p-1Y+PlZ8 zK%`GW0jQ$`a@mIhZ$cXJQ@^k`;yVpX)i*h(y<8yY;=pxGXft-`RXV6I0D}qs?tACN^E@odfcTtZn(#n|! zm}}~p4A-Uj??`aQ84Wwt2D(xEF_L;lEB{~`l*c$_)jel1wBQqq>FyH8+)O3wb*5t!q@{0VJ0y7a*niOGJ|3e8>wa#b_>W zM)n@gb)APF@9!+!w&l3vg-vNAlV+q&O4D&=jr}Nd8%WoL(vZDcOl?25`qXI$#0Ea% z?BR)xnbLFpMh#4%Za{bp@ZJphD{~3jruH_E;aq8MdgDlVRfE3ay1|o5w>l};2$?*1 z`L~JUHc6E;G{_Hf+?|lp_6H`(npm#^Bk>6qiCU8&w48HtfP zRoSO!X4Q&^LlEVNI^1~)`AC<*2b?Tx{M@2E-AXi&LJL8gKzY_XbfAR%7I+6?!BS9x z8np|4OGeO24b)_Ml1}~B@!_t>14vEMr#PS>=wGH}p4D8J@ zgSL!5ny!m2%7`*JaE^C8kRIvpJVB1nGS0+q(jNVG%gJjFhzWeiIcgibO3qYF2nx=a z04%G2x=~SmMu(0`PV7nw56?;(GbZc6#f!TRoY3Leb>TP2(TF|`@mup!$a7xvL*lh- z7k;%)%lUIxD0pjwx}Xizv8TH)K6OAH2K>V5IZa<9=b%M)3)R;us$humg9c~B1HY=P zTIE|XMR#Phg)wwd#iP6CGPMh%+Q?m!%w*;vg9a35x#-?<@f6pdE5JVOq#=)Llqk6d zb*v%H*(kY+F-M|;D&f*898ipA6CxoB%BMj3&Jjs>gWaE^IiRYaG)0pl<8-RaV-riq z4|XU)(pA!Wjq28^re1hrK#~N>>ru!PM87B3Bj#*9qU*(IcLS~Ff_(aNUOMiglneUR z2N|>|1-v$$4jQ%(Np$Fp^u^)IUmxwB5UCw2-By&hJk!x9bzrAXdjsqC?pRsAPM7uw zHAqq05qG&x+LPS(>WZCtVPV;(jEvH4moBc`UIEGu(vav)TW1Dlkp$&DM9J@MAwz;( zkcy)b4WNRRF%c!GpXQwywjHAN@%>w>?>Hc3#4S#t<#HiUGJ#gTN1d)*fef+A3@>4> ztNUc+jn)oB$tURV_fGcFsXnaaPO3w)CPrvOQO-sBT6sdK4$qS&;SJ4IjcN>9)KD;( zQ6)jvS+z2T(W;huGs>|VoUTD#v73)GFBqgzF6hUQSK;&s4h-lAnDK)Vs}Y-Hzl2K4 z52MUtNRvjKqrpQ2{%9Hu5qSdt<3NNTP+LPo{n#Ier-ta&D*)MAw34tnz1zvuWM}4vR7SEr0TkP zB*&^%bv+wi)2iz)YPiUc3sEGkY*|ZOxqj+ru$KHCNg1G4=zAJPc73I)JI%$aQRLqX zxkx|Uw+SfJ^`w<%-(qwRLi$$?_G+}YJ?aT2bB{F7=d9F?^ZS|S zLl6AQ0IfEk?yDKb9A{L=^cq#!3Pw5eB6Iu}qbfrhW_;Y#%uFp>%_+e+Or=zHEOYD8 z($kJeUG*30uH%lrRPWndQC{hIVp|-1Qy&J_24C7U+hKj)(d65W4^(&+=}7aA}iGe10(}EkNXhS>>2P9*=@W})X^+h;URB^Y0+)5FV<$N=yxo$U?WNGR ztEN%%7>ZC(ZrsGE?)KKG4#jCycb{rfG$gzq7dwNnat7UimvXjP_pdlr~_VU)X)i;mK`TeZJ*~RORYE@5n;Mst0+n#ISrp@nTWDSkEoXXCdGmrIUYOc58oYrqN|#T#8(`y zEZhGRFxc?6gbtp$|B6oa?#ePGsd9Lda2Rs$sOmw<16$R=P3Z6vMu~53;jzegn?VuW zI5lMDv*9hmOcbV$-;{FfSUIxO@DCtYH5^-`dVvn(2an%Yp1HIPQ8LwaSWjY@)7w(w zwD3Ai^BD8+?gVIC5(L0IvPmWfNB>>*D=x z)2gSdlU5|fIpoeOm|m#u#VO4LVRjYKt9LKlxxwMPS^K8%gRxo{e|sMtyuY`Eyj6$7 z>%`EAQ}3IzZ`w}n>(?XCd3#g4auV0YImRYV%F5F9u8WL(-G!QwJvS}IA^Ds1HWie zv@mmD*ZfjrW+4KbvtPs5JbpnQHC%fsax=3O=SF*SD?HE&it9lmw??RO@IxNGI1f0w zA-mWA;TGHfXM5zsh(BQc69s>8Msn5C8E_-9Qhj#n zcgg#;;}3_e8@)@GxMli=Zymndx*1fujW|@EKTh`nHfDVh^&`hRa+2U6j*eNHz9CPi z+C{`>=0*oP3|f~|nXau$IZ{|%Bs-qJwg8?B^YSKYRT)I2Y15IpI*y<@<+2}!BP&P5 zT)B^w2WD4H*`ZVIm~psb>kmIWaH~?(Nn2(B+x;6hSAM14Fm=cDtVloC_c zTy5ssw3QhfWJ>c*)RR2-UL!_r?`zPUGR@2j2yW^Z|A5+Duw8rM)`dH0^sw`)reF=1 z8m_Kby=JRc^>N+W8Tnu8F433gWb7L57@C$IsN+1PfqT-g{7|v$@?vcmo&Uw;8KsV< zvNdo6hH~mp-+uYSwFl&HkCFXTF}h;TQ=6t{mS#BSnO5#D->|W2`}WzhR_UJproK1! zM6bb7d86{QcQU9AD>kp#?YL)4S(+|gx@1bul2pfD6JiF3RmRqx+P!|u8eM9QbZ&&2 zJM4)L!@SiqX#GrB@}!&xf)ImL8gmJk%U5_pg(p-f&laQoaC@t%5u3C3sLfUf(T6mwHu=Ga0rsMziG^|ZV-l(fieH`UyRx_N{%jWD8EIb2{q4Z#2d`l)IF=C zf6*RkJX_OH{;a9Irr{lTg7%CZ=>`VcetfV+zs&)pbLLr~pJ%z1PGW1u&9@ye4fz4Akg+OO^(;iEgS8&4wu|d@VwH?KvIc@dO zyP&Dca&_l9BtB=0h`XrmU6pnzTpQo?1Yd(2`nia`1y3#^kRd={!nhBar?-Wr!4^gQ ziR4aDZwtG5?W8WS)etFY)ugpZM*T^v4#B%&@cQYJo^-WYLLH-(sm%5grqxqaTgy{a zd;ApTil3rfykXl@TGJd~2A-UL0Byj-6R(gL=yB71SN?(OQ?*&#O9LxtOjB3k0=(zO z&9Ppdq75z0@r~j+^2Obm88V z{1)ot8=(*)RFKh!%MS}urfUVu-wH0D-$6}$72}1Hnf(WuLy}BYzxD4XbI$LMMAR!( zaRPDZLMuIweOKWG;x3AadWOi z(D;>`ra&l8uk>tzq1MQN9+qlK4Jmui&NJJ$L`__80c-R^58e*D=@@W?*iQF=|A|ns zXN8aX@KC?5h0k&@LSabE=lL=n|CX5VnqA~p_JdrJivMFQ-ZaxPQxPl>zF_Wj1#1Wv z*bOZ3G<<+@;fsJX!t_GXLCO%&-qM+-ofobojcSZbmhv%9`GH8|c3uE~{2csorIs&P zO)L1~`A-2Rgs{1VvR!&BnsU$VAKSS3sL?-LLz&}7fvloQc_iD8;D$7I5sy+&uzCl< z>V>YxA;3a3_U~Vhefd=qEhFVVq?~}1&b>wCzO1eVJl+$D=i?&r!ojXGAecq$aEv(G z?Gw9*S1=C1L)5^c0CdE(pQoJ2Qx>&jcQj(7i@1a%#dxw|{21{;y1gxsZhQ-*bBScJ zdCnc=sCU31wR`eD*LB&SFW-^f3)3T-cTO6)VaMpx=KD#PFFX?I7vC$j{60?q-e5K6X#+hrM5o95(dZgUs=k((e^n>Q+I@xYTq?^XvUR;!*>o?6_55i)3$O)9Pm)q0f9zGiL0~V)A5$M&z#IQ@ z2u3`nGvI5tfUiB%9B6N5hh?E&F8f438S6_0g5LwIxyX@k6s}BdK}8JAEWzzw~1l(-pgr&h_JOBr* zA+3#`JA1ViP}ETUjLmZrwtM`Za`mzWyfI7;T)`fL`TCAO#{5rGoV?}#_H`%aB8F$M zoP(9Xb6@^P?wU4F#i@!oSmtNYJ~Ed3Abaxh`A4Fv?2%$F7^)>AZ-yzgIu5<2v;;+K zf&^gnbdW#T(?+GLq{?(4WT37FO~@1fUQz`@RxS|wyXGGvRUHCj1IcP!A{NpNyvT;^ z?Y)AEK$K9a98fA6EDTi0$^1-CEOZh7%K82vQpiEYU2`%9SF=doU{H;tMH4Ox8DFrA z{>WdW<=joh#Awm9m!B--`N`taf(_~+QhAxmL+Y!9b`_a7$K*)@Yr;tlH(?X$^i)HL zV@17s`N}LJFHkxOlrV&vJeR{?RPwgloJe{X3uz`%;PN8v`L^nWzq zQsu(KWZcIP3p;iaO}^9mK`=awlQb(hNwW-sVaUzYje*nVI!>E1SXX>waFOyb3`}(h z18QKuJ9R_$h3)=Rc5ROsw<8rVq0)>iQhQO$&u{lIRPLEAOgSu)neBwYIx45lukzqf+8MSz%ymA*Pl>e9fy?(s zL%x?dP&TMQFvuT;^;xq10iJ?!XUSb z6RoD{!%0-qU>0VpESXL~R0uMO^f?-dSFn;^Den10K$Fdo|HAqzJYtJ~AfOLGqOwKsF7m97d4 zqvuDj_n>;Up0Hx9RGmt!KC@o-qT*96HF{w6j8-;D*H_0Ky=1I&6Gx0aq7A$K4 zb;0H`&=(Aggu-9}R#!36HHloR09alZ@bRL^{w(rGoFkEtw?2z(Bx9pBrNLe@ln({8 z-wN_K2On9Yr~_BFb#6 zH%;}Clau{T_c2dNlyZ7!Gq+l-4F9*c*GU`HSei8r1aFB3w$V$Lx;u%9JQif*iKYaWDwSxYGSU>qm`V0fy9=N zfqkuS`XqD;cnzqOCVUd1y~!$6DA@)pV^tkbUI0W2KZx%_6<19-9}6*!BlSeXOPg$p zALR2rnWJ!1mCv&a%Oz!w!Ssc>*yadlLEv1SCLfn!vgC>b$<*+hddif_wqR)-mjOkG zEFZ6pChr(9iEI@fLwChlW}c@E9S1jfos#pbd~c;vAob^L9T)rq$y|>oJKh!2|50M{ zHBqZ@IY>Y@U8@L60xfMrO-q0`23{9d&mRQ`Bd>59@^oeTJg#tsYGGt3I1U>CiwXIs$1T*JrfyvXux0DLHdxy?!g-pSrG$AZ)p3G*VyG;89#YTOktd5lRkusI7#5?j5 z3ko*XRD9B8DykLD=@=B9jtue0kd6%Qp?NcK(eQI27nr!bJpmIJ zaKj&RG-jCZ(0epEKNL)=AHPC4si{(@H0UqfAm8!L+qt37qssL#ROq$safw{MD2~Fk-nN_^fjNC1RNAHyg>DJbLCoM6yUnU8? z$L+sjHLCm$HiBK%H?A?yb02b!=N-L|k}?yooCmKn-uHUl5rf0KjkoL$57^z;{8P`S ztQ%`{wB_9sNlD4;tr}wl4gG4^g-+=)%74mfvbTU~vR{9C*Y5Q&8MHjuEuqL#(7veR z3$Fa+6V8IBfR+=lfhOcypKV*Q!J+lp_6o<|3zh!BuF8Q>hi5Q(LtV-@a!ER5sD}L& zZ!4*8yQmO?JnM~}p^gZb7pb+Jr*d7T+p;Z3 zwauslrv5K6FqC?Pku%N-JDd|4N(tnxw4mS=p#wP-NJd-&edvIc!z}m(4cu*+1v0A_ zS=j;Xo&#L#Cf8c>;D$TL;R?C`% z5wa9tE*$6sX-fSSqUk~gr?Oxa2sUW9Dn02IVelRr+`r$5 zgiMRF0*CQB1M|4vnha4{;6mg)#2`cu?G=arQclBM{m~uU&))Q)t6V#3_%F^7iri|Q z8-Y^1G$B(e^<@#wwe%;{+NM&JNfl|=q52n-};5>S&d|~0uuipBp%&!?zaaFsTrY0MB zk5kSi&?a>mr?Nv@F|fkbLJA2-{1`ZY?*#W5gTa1nz6Nlw|C zeCkBf=vsHhT7jec;OR$|qQD{Q1aiu#qdPcXA1XN#&4RUQ2&69|tPPt5X3HTj05_q^ zxpey?hdfatqL{q5CNabpC@nV9JEd^Yp_?3um5o4GbCO+jaE*JNI|)OtYlD z@)dl>?znL~Y1?V5>EQVo{{dFuD5>~N?`zBv63aG~%XHY<>qMZnTS!o!1|BL(VJI%& z{}BNJg`ZrHx#S4%PQ!d?fmJa-7umF@c`QtK{Vg?qYY$8cdFB_@`%DPz-Nb`AT!ASm z30Kp|Au}Mg^JWWq<~egCHP$6RK}t{Da^ghdgsxpjkMGlGbX+=cmTf{QBv9T6eFt@d zt-VSMnBG9`0PGxhJz>g(^NF&0(+gJVH+}v%G{^Mj7v^$6cy|yNtMap<&>IDAPR(*t zGuupp>~pudSO?g=YfCGzdSUw6V;7Jm{?<3aC)@tv`lUv-=$;jM7A z!-W@bN3FCrth7TL;v&%oKdlWA+Mo?D!1LSz&+`I2kK=WvDwp1TrQZsK*zZ}ye@nt? zGGE}7fZ&Fn3a~ym4(Yo`M<_u8eDBo_IdpQjfmYMKzQe~1tnR^lnF~t)2pxcr}nTv-Nx-tr}LGTWM5&)#dpEvk=Q!uZsy#)M%oh+yfp_8eS=t z$s6}r;7P;rHM{p5Gap_T=)c@bcB%STVvl|keMg|KtIVEFY3_9wM(_sm2Gapd620V@ zo-inkt2~CR17dXU*XGCiKaHvvXnj9YAHRCf<`nbI#)$V0o^@n-)s$`se9Vt8}SzK{o}&@Lpqsz zj*H!!yk%{g_4Ti<+k+gY51^Bu^L6-j5vE`fPKt--_|6Dfm$p<^|0+J50#^=z z@6>_sq=sY<`DhOjV1YU!@Knkwe(gfP%`aVh^5H^yRcZqCb4jqGu-4W1&I$51`8#yk zck1cF`X&^fB8vhMbQ1-79X~YBQP-t=9xHh0s8{>Nw`9C!cZQ#8t=+%`EB8|?= z0t=?JyFhKxWM2+ga#7kzdxYHMC*G*eYplKD^Cb#!k6Gw4o25!7H0AhLB{>%p{ky{~ zm=7bHRYlagJwZ9OS^dgdLGm#lx6%j*oFWO&Tgs*(N!5l z)l}xNn&P@*mp_9GJL%(IQE3SsJ?AMq<1TaupX|letM1scW#ZJ-_mmC!ju3@uf)6C* zMSWCZpQbYN)Fcm-!{asdCkj&978bG^g|yJBOr~ng3miSast4kI3Fths!XY@Hs1}ey zEZ+iN3C94y1}GoC9+0=K`Z8G=H6GLiZg!<*LDo~`jJ$s8>%C-SC8Xm?fwiryvca_f zlWf|t1yD;?0&H$SiV#dmpJfod(1;X{*GV$&#E6|$S`CAUnvGD)aW5D*S3YhWjH-l| z{HLIIg0fD^vXzD742>WN1gxzu@S^+3kVM6k$lz8QZb_tm1N(}Hla3ub+(#S;Pdfj} zJ=O&U{sf9M+}i?&uhM*FiuBGlg+ogJStS6qoC8$qKzj?K`4Mw6z(vGS;7@FzAq|RP z1I?m+2blCbFs@`PqcX8L)i~MDak)CW0UW6pP1jQp@&Kb$%cf_wn4*VQC?g9IjL9-} z#SvNAz$}x8*JH&!nnUQkuO3+@!9uw>>{2W-`<_y9kGlpcKKv=OY_PmF%w?mb!_%Wj zwfAUF)np(a&q?eY{V3lxTv@aG$Qp}UDD{$9FDg#Gz7|1#aQfhf9H87CZS|2sd-AnH zb-rg~nZ)zCeh$2g{@WzK!X#&4l3#tBUxQ|6GR_H$P#u&Uxh`U&+XX%-zWKHVC2-!}aI7^^9x=GYNcD|xVrk0HKQov-Pr z{7e6vy;3ZuB=4)NM9gK6&FeOug3ZpMxM=~v>50O#sJ17V-n@dng+I4W4I2&b1b=Q9 zA3oZ5@hpHhxUw*y_Cs)({2=E23|uQznW$Z`KcEtK)XDH8E30qo71Ftp2NRA}pw5#l z$L6e_8FpBPPNehd>M>TY*nosv9$8zDr#-ijFQw=;f^niY2{s%{qW#{R@{grqQ0yBHwyS za7h-#wK?v>MK*#pv_*4;P7dX~V>ysqIf-o^%C39RrJC3xM)EdgDwA@hX(0APqgHLS zQa+aPEknmi<43^x)7~%(y#SiohfIbrny2^QaV+eVIW2DUmRPIl$b{&)={wAc0*9;8 z->S!%))cP4Jux`GvAI9Y;e=HyqoNjB$q}wbz=8cBDmAlVL89aLY9*`&k!p}&dPA|? zj>N4+OC~ki-Zy2k)%3x4(vbFbJ(%H6Evh@sa(M3AUqcSdf2hN|!CF2xXzw+T%>6sh zSk`Ax5lk<9C+@v)DK7c^@vRdIUC6cFUE2(xwCff0)R|l$(QO4PC@fc+2*j(_)89ZB zor2Q`KV~?lVW!EM?G!rh8F|-o9-1y-g)iVRgkY3f6O?={Xo2)N{%ZQEz4C>Q+ zL|{VlM0id5EU{9};b*0i)rLEgrW-~l9-e;4OeGKEICZ0T_5TDiTjg80Elc5Qg3b^$ zQRN0@0qT-2WA!$hYAxs|Uq;c@*IO&Zj5+Yq<6Uy9<{Qsa;2W>587oLf$&jXQ!VvaT ztuyMQck>jJ1ZQ7ht)ZZ`XXROi$55{R08}m4%fb@rWaN?1eO4SY?MtTZ_i55(m`}HE z!!BfH?Z1!)#R;y<7!Kp^1_AXUNRNyLLGa%0mBslf?UC*3_dMvClcT(ca-4?xsuK0@{*UfWU z_Jl2i_DKLkPp-TPrB|Z$o6mmJoNW>ONQPM!@Ybt<2PNGV65SdGtB7o_ z{YoWIoJU*%c3wRZ>#}1SK0wnGs~yIc5kJUva1`A@zc1h*^kjd0RTKY9-Wi1BSQDTW z4ps&-UFN4JTdFt}zWml00Of=6lKQ0MYzJ|=MP`dZlS1$H)$0(gIto!3mqMtbdF4kg zbB8d3ipiOrIfH{6*t2LRG~+q9oiu2iU(Y^)iP@H?R1Ftywflzbq{I^z(+;RFAIlUL zrhEG&=0kR_{aZ}iG^dVnB*Z+A85aq!6CiioV2ved1Nkp}>KKFT*C0^Q zORr&MSH0_V=4y?iFoFH$uu@2kA5yQ;gpob0pb6(=->txY2qRAsMORQ~uY7*MN5%Pp z&6$b{LUF8Y&{dtANRaiYS$S8!%PoPGGDcf*>YeM|SJT4YbW!W`)Fq zD!>HADpLh!HDE|`|7m2CEar0OF9O@j{*o?n3m1$$H-W*Bt7XDL(0sCs`}Bg`+LN8> z3sn4SsmTod6-66NwxRIJa$lIl4u>)Gl-iL!riD(K;TXW81#GozQXEN}$bZpO#}~F= zSao5^y2Tq719Hr%sG-^R^BvyGFkOVM?uSz%z+R$n^|X!LhUPocNb7n@5nTfvY7f+KQcz zW6z$9J8&v1uBe_{+n{cnE2bz$IKKmnFnDA~>m-4R${YUH3Nr1sy4c!0XBDlJP+mb% zm`n{w)<$v0^fEU!gIc38lfx=h0o;CqAX$P~jN|-GNngccO<6UF)~eMrXi~U|A7#_t zToJ6LMV|lp_*;@cn|9GXaLkH<{9Q$zZmu>qROoQkkXxh(o<#fDh}1>sIO^b|r~4A`SW`H4ucKohXeFOF1896)XUhY{ZlfmnkF_3N zvT;+a<*VMDEz1zhR4kX`J_1yURbnc$hxb^cqNF~&h}O}TGbNe-Jl%SyhbU$J<5!A;Ut zVKVC+R&Q#L$dTcZ<7YdLWxw)$w^-VEcLO;syY86HHp1PYO2er8?N4pLQOqeB^b*KH zdP45@b3}dX__TrKZl+Qcn5pa z#h$XM9_!bG+wov9?ALMoEgfZYlFb+Q)Kwu~%;w~W+JvuGf_P(uk)Uq_@`aHgM$L}W zVI&y*nWMqeVI+v1*cVgT8CrYPulOzlpREp$_7fvrW{nKDR#mmKd7b=Xr;FUz6>f1` z4SvDfOa|jQ(KYd+JPzYW4t&eELIPRc@&cU7@`^frrr}|_W0=YsXf|b{aeWQDP$5*! zIOmOubJ)N3yfP>LqxeMm=@!*p;P^_+}}=!+6nQklaQ-3HtfGo@8IVkCG-5J4C&^BFl3 znYB#sMG$W@CAFBs1O=sIXB7GC!)p*`AczM^)J^C(efY@k=0Sm*HceMWS-WlpWtyql zBeG&OriJi7f@%BabVrzm3VC+;*Xxa4ve^ z&NJpiNud+gaxvWFz@L*Em|4|^npfvXK+sgnytV!5F7DO&m+67O3^I2czUR_(D>u@_ zk*}D-;Fa$4y-)UZ0}T%lrm@bG>xK7l964j!lt42x7(OH($lPGvaCaR!Exqoz9iPjmo0v%Qehqg=^IQW+-1M!;|4EZ5^uYte_6f3Z@jj3#T+nkTI-~n5} z=?lxztDwLg23}%iIenpX*esmbIAO@ZiDCV$6Zv-Is6OmT)AeW3NGAn6->X<5N zc;!Z9_tkJ$^(eO)0Io^~%qw~F6fWcg#YBNGy6DO{+0(JK`TjebL;Y3j=E`&yQe3D4 zI7wow$Zq%bI?m4G3OlQ&Yo4R3MQ-qY-lHTnr$C5&@kn)T$HH2B-C)fj*LCE05KdkE zi5B6S_cyel4W~p_#P);!t-ONY^L+3A_)sN5KBG|%Vt<1V{dfwl(OHcCPdSDk49xG- z>oBNMG_4OE=3a8oO|Mlt&YBfB2SBN3CzRoX#S_ zgE!z!j_TsimDc12a(5$h#JKjUgUK+blu6kXq-EMSeMd6i5mRv9l z+cA3K7zbr8C)=Vc8kj^II*NDrC}488W5>LQexO$Lg8S!YHP{_J-QhD1cc|FKBd{4pFvC-uX+N$rN4dZT z9p*X>WO5q?8p)=#;CASO>C4Nnlv1mL=_$Mb3Qlh%UB(msQFyrWbeN+4BG;F^%>9A0 z1#@NQajqtno@FT<(tY7u{Et{4#vVDp;-e$(91d+%z#AZ|GGF6YKLGdpy&Lz^H(@F} z&ANH?_v3qM)yd@e>z;eu|3|OxknCVRPs&lsa+AY8GzrVO7;KxMD`Q@89=f&`t%ZI; zpxRt4S&VDuCt*A%p(~IfRmo9$VBxCbjz0a6)dg3W0v{YM!Z&ZXxYY2(=tbpN6--_g zoO{}WS4wNky}Y3Y&5srTESO=%Q(fQ?L^h)evGNnXwE0|UbgnC~DxA(8sgm}bB(}BY zE*4p~uoFMNWPjZ)1=pnOHdKmh68GsB^**)XKE+|&SJ)*ZJ!VI}Qn_2)Roc0rQqgTn zQnq3FwyjGxn~x=qZ)DXtA1tG~=}bR1c<$^V3vJ{Mg0X)^5W8B|pj>-JUvhKcqR9~+ z!PBM(jUT%r2EN>NhRJa!XYDmV*tz|Ba@3LO@m9VJJ3^!-ihz4@I)o-*Qd_)}4+-1+ z7KTT9j18YY=3luVChfSkH!^ngN$Y&9PEjmeof_xygXSRtm-uEMp@|3q2U2Jhi7QS| zyymOXwqAP~^_iTmf@&|KOQN09ui^8+4X_>DfRn1s!!Ftb6J%pje=_UTcB1- zT${Wh#e8M=2=C?Ah3%v^5##%JH2VY|%9za^EpR-9+6WFxQYte20FYto!@^U0v5FeR zH3m7G6X11Rq-}($4)z?kjrq5nt%yS}e^t)*GvsXkfxRqs6ff!duB6n|U68XiWj`A@ z0sTJb9VZjML%{#%m=Ct<4*mT0pTq6fPv|mzOlj*18is3!bFy<3U4`c_QERG`5IJO_=iGoS_Hr620fTjZ(SuPi7-9JkD7%&Nn zg76UWqUk*-O1{iqzxwPEnmg%CHdpTaDaapMBN+Gd|>QAkRiO zm}_Es48~iW?~No+><80C%?XETUY-14=zRReyYN{+ z#!VcrYBUWj^jy#s$mW4SHqU5k%R(})^}&Sg%(b?}HkJ zC0J2H4U~||HrukQprX%(embxK+~$$zJhW!YS6>~bS*)L`g+jttXs>Yzd9Fu`rYsfl z%3pn@w&HtqqD|(CDE|0&6$|)ph~i@YT7!lFo41-gS3{v%382ml8qiGD8gsZVDqF90 z{~~1WJ0Nqv2#}r|8vsS1TJ}8IR{Cp2{|5ir%JEld^%)T*m5k!eb~jD@Cvt4wMcXHJ zv_Hd-0|$@6o`t!iF}}crjQ}Rh7nrbltWSQFHYew0?u!dUuoOZ;cz-eVEr5760y?W7 zAYQY6{d>5URKs{hkmnp+;QfHoYFuA7^#e+4*5ZQF(6T~6tN%t=iLeRzkJY?Sfz)aM zq1hxAtThYpY_0}`a7I8lZalDpg$_4r;csv6X4f@yH&X) zP?;wezyi4XTx=R`g{1Ma-iR6dS*;*M^_^pych(lD)_b?PNOfe>K$u)KT`ihsutDmu zz*^%2Wu!n-IaqOu=l8)e~GI=qj?mGf0&#(+x6xaXNY^@hr#_WUq%S5Q584M z&h@{|cWJ$ML1lF=xZ>U}+4R22LuuIu!nHl9wxO223uO7cNw$oYcLu>Tl2%Tjvp#Cw@V&^aSIv3$Bp-0XZO2ovWxWO zqp*+fvY%zuERnAaX8^(wH%IM+X~x&-+YHlq+0>UC*)?i`as*yZWaPuY$76bfWXL|o zVc`hPV1E54V8xfUvF{>sTN{i&%x(7YyyJLY=Z$QTa==UGbKs@a!5jq1V;&>MN;85r z_YcTUGYSXs|B-((jaMf_4Ks1*EKUIXlO#8KI0u4;l94oTuGnovSce(bOG3=z_+gp~hagxc{;=8yMc3NPHVs`(EO!36-4{dz4 z&TUuMXAQF7r!G7r*rE6+)iyRU>=gY^2T-L zjjL49IGx=`nvA*s=aS&U<5lFj3LO$6AvqNzx#$#MksV{ejj2pgc3)RWb9Jt{O(q5d zb{!B)sDsg$@7YFt&k9Ql>WgfVztw?XlTVw9g+?}$j_@nVr{K1_+aDH-+{h+GQC<9) z=2fz7!b*dx{O~Gnd%Xr2j%RkrQ_7BY`r?a`b&JHvma?lN&yaCukUtU>TIhIGR(Ohn zGX-VrQV$9ggR^2c&Wh*D^1A^5F-uPN0}z+nUsjM!4h09qKhxjF8Sz{hquPA`D?L9L zw8S_VP&hPE{A?(tG{xEAfwSTHN;TUI8Ak){&V_+IKNFsifBqDBF+$d8brT~i_VIK2 z+m^33>d>KYT`6o_5$s@{CoClS{>3nACO%wQ!#D7F%_!Xz^=&|x{A)m+3wk+2+roWi zjO!DzEJp3@CD~LPymBScR2f5By9%sD@sitVsIOs1Qk&IQ58s0K+GV2}claao5^7d> z+Y~xg8i7pi+^LdjUj7+%>hEf77#7M3PC$*t8#YCI6C_eyc+e`x6G!3E7;*PAu4_k{ z+I9=R48l}aw&N|sWc%^S-bLc+2cjSGM976iH1YdH*JULYvwWHL&L0H~N@uxXX0OZl zF`JiZw`!{1S>_X{#zCla;j-LWoxEB~D@OS;uRIgS;TqgjM#FP%Dvkn|mQhPQRi-A4 zuOb)Zy~mt=z0Ng^=aund51>3rJo`W#K_U;cwP{Hq*mLQ;@6n!{mH_T~Y6-$@Ik#9u z&v;p7ut=O+RN;+Cj|waBaG*v5iALm~yj@a4{IYeMtqW(&pE1KjZOit^e*{&7)Ir1c zBFaw2r1X*dEvB><-(n)QeJl(eHfHKDv*`@KOfN)El;PVzYFCI*1-88)HW=#rUAZZ3 zj9t7u#yZ=8uu*Dgu>G(u_OVlYHqs8GJj0H?D%@jVA+#iJA^+H2Uevug5 zD7$=P}!=5*gKa!Yw2 z4gsk3Y$OV)ZN~!h=6t_#2lG@Y>hJ?`sJgrVQ5MpVR1SZi{;a5a>d2%!%K`FzPyq7H zf~icJN@|}KY3+Bh%K!#x&b-;K~`HOv`YPL}@mf7?UD|`LAg-h32J4b{D{)%EI!)sd` z*>qcNRl&0M`?{O{3uHEy5O32gT7_X4PktaHrMjwAptj0a zuGcz01%03Vt?N_J^I5f2riQyw49iS~uY>~A292kJX+s${7n9SCudIUmPV=>hOKrw? zcis}QkTKyV>2=ve{;mqWV%?+b#b{5sm z0-UURp_4e%6E^Eh_X3A;Eco`N+qzi}EtPq<4YqmABB|eu%19th4=G*$0$`SZ9j03B zeCJ1485K$gAoXjT*H=no>mJ9BgnwN%tzzcc8if>O{ls%Vj0a?u=YGMR5Ualm3rN-q zcoI8;JLtVSPCCohJ<&=7OmjGumX+aaW!rF7l-?nW2I2{@S!%GYfpBj;P>r_5L02>~ zRDs0`L_x+A?6jA&P^hn7(+GWt;<)gS-UJ^oP`Hy zoE0%``plIH7E{<0$gKBEYzNHsPYSdHc(28_HqyB%DZV`?X>lG=QsMxy}jCwZkdRDALJ=4{CLS{vThtEI~qtZB(?xCX}3962Q zAF#6YlD+BP*H|&!S(Rdjk{dq7T9FJnlNJPLw;BXTb!BD8u}<(|)e5McR?MRMu-dJ< ztm30ZpTlS_AhM0%0ZPn;U^2bl9X)dQ>2I4__hWH$}azH;9_n%Ce;a16Yf z&uTlC3U3+n)PLQ-xWj`mJtS9|I~zAr_Dc$Uxr2(i0+G=MIx;={k-k@|0-)TS(pj4t z@C^8X1p<%OxCSjlj5WO26C1xXDQw$FfV4)2jSYmuyFHMs!j+k*M6Crg6D6a3ovZ}< zp!|oKxi_e47zwiCpbYy(CMA?^BS2D#ya{_C>wS1nR(f55Wlv8;rmCdAt$scCK9ZBW zk~>9KdWI6r5?nFA!=Bk^)l@s@LS%|0BjI!_HSIFHg z{=2XCn`N_F=uGxqjN-D;y#6SvHW}WfRM1q2`-@;1b+D z$o&{eFWvwqQIH3oknNu#OLo=cus?P8VD5ckbzT)&US^$vD`~R_nR`d=Day`C;S z7{AW-$y@Sx3-NCq<-PRh@Pl>w`iF;1w3t#7tJ%uEC8$>KZC$r{>wa_6#wk6mY&lHR zr($C05GH07{I)3-{)^wXC^(Fxq(seO+|)lHqrz>^{l(#hNR_nVpNi3^5*Yod-wi%F z{UWa_7<@b+cn7Yc$9uq^p-Wd&3m^_9d7kAte8Az`EYZ^ ze!W_@N$L4IZP&(l_~@B7{C9(K=I^ghy?&yjN3Q@2rJtk)tLLv;<3UoZYn98i_J-Ri z1p(Y*%_9DVZIwZxN$t-m{zYgY@Vc}`br<>p?^hP+*DmtBs#?^eoT zJ)EQA(r4X z=~mmfpKoLW&tdHJm^pWBKcQu?+0>%yUi!Jjp?+^x}c}zJ0omlAH)aUl{QCp z8U91gvm82yia$ZN7sAfzgM>lUV*rBa1_|TnoF3lfw&7_PuN%Vhy85PGzYA;NMeDf` zPe16d2wU;}nXm@mU*t3vRy@<+%JD(C17sU(Yc8#6rw6EfK9!&sR6@7p)ArZfUT=p| z`wK@7bTLqQ-!t47b{pH1Ps;EoLdxdxeXPvKz>2|1DeGcjuP+Rm z7qc{$T)xy8}PcVe~=u=ux5cr?oh&Xz=I)DPk>zBxF zm1?_3YBsmz?UVuyb8&pkLhc8Wc2``d%q^52N8nV%neN%sXtk0h6X0B4c^_fnp zIwX7CEVul5OL!YJ>TI0ihM=^Dh1uAyyBEmCTQw8=D>80tv zMMmO~xj|+jazR9dMNaWk#w zXS_6FsNOVYS3tk@oy=Y2fy;)k39xjjh|sg^S{{VBJ$p?1FELsQJl#b`H zVZy_Uz{uwG6qdy<-n`Z0W6K*1=rruiqGbG}nnMREv$-L4Q3$__QXPRlIPegM3UC`p zRh^t3LU|Oce3B4;^2D#nQSk)!aj1+R~P1Pi`Y3n#_=_NI_hl=v3r0Ie2WSAf!l@st&GPpTucARK&7+Q)q@}K zzv0Hl8yX`3wWHxdDtv2x{mMF18$&_V=Vay-WN1GcVV?&8=)?1K%Z$r`01Ltrh2xJW zsU{yl02_h(y&ApiaI^(ZOvy1-Pty!X!q@n>^C)g1t_~jV< z6pH5G9s$E#^Y#OPO)52c3UvW%&J^G&8sbxr+@1>FnuO(8TTFH^gN^A4E&=01?@6y-#|7OLLg?046RlQ@sD_&mJ_uaB6i@A|e}< zxk|P6vRYTkY}hh+<>u_(l=Y%Y}HSmF>dM@bHDNXE&(bJ%j{{BR#>lZ)u&JF z8`srLJ#5>hy$OT5b_*UfVnlFCT6#jtUh5r)THTs@dZsnY&Q81c{(ZOm@N>Tz(H~#w zvffg=zwF_Q1Lu^_P?pGKzeS--f~~*InK*aCJV!6Xt|dE{C9XKw{O$nKPucT_dz01O z;{pyjQnj1Ef#&x8qJrU0cq@JbUK(?r0D zmFCj!HT^nvnBH%c-}GabFReM2Y&GRXK6a=-tRAX!*kAw2AFH7t-jw%sA@TswI< z9NTsarG+PTuP#xMv#-wB(*&+s>eu@kTX=~UUJ+=~NkB4(Fvk(t2OZg|v(!pB%!LW`6)31%CM(Cvb@gUJEGWGxm3^DG=T*FA z=mvfB@q@>=Hjf^+WKF158SJn+cI(na^Y*yek+D`bl_4MwH-l@38#x{KA-4!WTvDl& z7l7@R&XxkDxRkYHh>bAgQpdlj{;SUC-`~hSedVs}Zx5-&<4%vBKQzT|q$PYo9hoRi z2oIV(#yoDqn(gs1vHQ1fojG%j_3;bo_JE^xJN6picf94+82yIT8&_{P@7z2s&>Co1 zF*RgqfVs}lft|YS9hh|j5uevu1MV8qnVn?XJ;Zy+$S#3veuehs){j^{W}V~sHM3W&@mRNf z?M@4txNTKr=tAoQ;livTJAN{ASlC-2!4!z-C|=P|GL6^El=CIAQ&k;+)}Z-&v+K+Nb0Zp z7Z%|S*HqSyX61B*FnGucE#nYm%#cyXI@IBKmHTs~s;C0ach{;_BrjQ?ZwDeVc?jt9 z$l+|ah4T)kpX{hq6w>c0vr|i-ifZ9@Q=?`2!qZDo?-W)*_vF-3$@nM^7Ro6pt`-t^gUPvq$W z@&-w^N$W+V`5WR+n`rD-KV?|dj8 zV8rSNJ5dU)(=Ru$6p9(rk&0AB6Z(dJMxIY7|FCjFI@U$ce1v1?1|0@%5ul%Gpn5DY z<#6Bgdg>zd?R;b)K;ePBgt`=6Z6qp~O?i&|yrc4kprmOXq!2f`YwR$W$`Rm!Rhh-HO4?-A1} z0yYIB*eq)kK)D|_V!|G4wBM*@qs*(DNV|{D3{A2w8n_Of!%Y>*(xqq71b8!#0^^!xo6_Xu-$k;%6rl;~A4ILH^E7Y3 zQ=KxB)sddEBL--L6o!wUjy$!s5@?jIGs6e-lc7fa$vDU@?DKdK_~Lo-lC5}tJa^E{ ze<01Sy&~CQgUl^B7Qc|1z&@4LZ}Lfa&VJSZA<#ewYv8el+P3F24WAKI^m6 z24;TGAf=!ZIiw@AMLE{ecGOU#ZOeuY+T4DDpO}#Tzvn&t-Ia!@K`ovj+FohtWZd>+ zaCEZrnXn)-YW_@f#X$obTJwh)dXEq4XE8mAsw@1qYSsMZ=D!Z5Jc7)`3Q2^CJRqD= zh5?QWSxr}X{n?|6;vj|Eg9%d8xbQSf5Y zC;*EkNcmaHs)9ksc5NzPpkSuCxe17shOE4vm2L7G1R@*B=@=Ipsi&=3EL3HgKT7LH=6;F_8EgpSc zne#IhTbM2;gKlKl#~{prEkqfvgc#T~Zd_2CEt4>ImEm8$vY!3TZWz>wC*`d!F55m% z=_lFxWyAOV7l>4Dh>>DmV~Ep${L|Z04qR0--LRfzt@-fYp66glUba5TLRA3yH7=lH zd0dpJChR*`%-?MAn>i)W!fJv&t_R;5`%Znb=Iz75`8-?4Bd9C$vat|?LrXg(cb5?Y z`wrC?5nP@8!LH_4zoTSO0217n^AN0qp3f5V9cce&k)BT%X&ZDrnbF0}5J#Y;hplH_cWO)Z&?K`p_X zv|h?za0lWy9+;kor#Bey$O~oiP}_Q2$#`VTz`uxxW-z|gUho{Z^XgE_a|0X6x?KR7 zQ9|TZk-r!7$G^7FJ9!HX#v^J6c_#Jcq5L|x@z|zg-K5&&VGF&jTtologv$BDX#Y7G zqo?dxjKNTfkWo}Spmf6TVM>wbEG5s$@TlZ@G^8atnA=fFgh<~UVFC4 zYemuMC7*>*)Xw{dS=cSU!Aqo6pU>2WHAVc^GYs!zJ}5}8jxVNxFbzle?0p^1L-hE9 zY@1i|>xi%sJQ2-VFJtCd0HT<)efbCp{g3YAjXBTh`yQX?lbV9nfC>D*p;|Y0i{B;^ zgImzzf{xjW!LysIQWMu7qN&5K(To{$h7y^Tk;x0Ht_tar^v zU*5I&ACjO4htR`=y7~Kg7atw4FC3RQqHSHzdXO@7 zGnAI11_K?JXtMyng#~o&&uX=eBzi|<7(SptR)kUtp0=O}iKYW2iVvPvhZ$i#N$E-< zHhl1)nigze5l7142VWvC`y#{cCV;4h^StR?ZGMtb9^&^#F}JeJo?QX{V2BOZ0_r2rie z{B4e+xzHxDxq!{j#qBT`ZFSF}PZ_$HtCV%kK0*G;;YEgb<;p)bty#0x{kLy#WxlW) z-#qO1aKppx_-_NgxkhJo$()fHpP7JvyPWHiWjeNhrxGRoCYp{HYesF1+SSNzcqSILPGeOaUs*E2V0Om7SE9^d?J$lDSpzj$)8b7 z_{2Ze>?l??9UmV9PB%gy2kEC;L zL6pc{T0{TwLzf#QBWj{qO_`{)O|t(BDa#!3{VV6l>Cc}Aqjf zb>klHYp?6g;QXX!n_8~ zo+N1*4K@?@)HR#Pt_d`eK1%JGUHi}dMrAR#rp$CS;BxNOaz}Q0liMRIjaK{+svw3R zuC2Bb3~PJ9-m-hG4pg3nAu>+rQy=V=t|YQ9PtLKjfIwBIIeKH-(MQ)|E9*?fj_OvW zoF|6^95^~QBsqCQe4>S_m*mezPQtU8kUi=%#1KuCZl_(k zA8QTTsP7aqcuXI2pTRpWhFF6_^-W{bI^H%LZ<9f5UJc#m*J|Tl^0u{*SdCVm01*$q zRUUHsYPUYpU>elwJ*$T5$4H|mhoJiS#H82+R39A3tLM)~PQtU81XPb_YV|FR3Fx@V@or(S*Vg6raKM2_Hp0I<06CRjxN=z$1P!T;Hsbv zdi5!J=~M`^*Xa5Zq>FWNu@H*{3OgxjMzRo zF7=GN-@aZwCdP!U30hL>e($D+F>^v9CQRyk+MQ~(kZzpq+@eMIF0EVlICtmHne#WS z#`B@iE+~U9>Q1J8P9q_mn>+W1cA@r<%&F|nIe3cP&e(_gA0w{BDCAR=cMx> zr&@n7ou!k*y^HM{Ht5v8S@TX;9zVKx^)7gTq8BOk;^#2k{50B*(z5alQiflnTKa^5 zVe1E(nSEUp%*1C^VXkZU`x_EdrXQTR)A}fTXR|o+(SzyBkRF}CntAs;O77ggxp(I) z2;VS2W&Ve}62M(=q~hQcLgIEz+ipH};mC8U!rI*GM2SF)C$cuJSQU@j7Y3Z#zGH2C zoMmPmzn<0SIT{zqwwfg`-ndMJQXx*uG2c{eJ*Y~Gz3)*NrOdXZkkO}F?r)&C~qtFsZ`E zVvFUKm24vni)N}N?(I}qA|yf-4tu#t2GhhvGx$sX>QVx)>>7k6Abd@Gd5T5`7T!>A zObS)nB61#vtj0Mi0!M2#@{*+djRuIkyv`!}vd$wbaOc3$!=?uMTVP|AVY8REEuTKL z{-_!)n_FqUAt`>tssyuf6X%d!Z&H~q=Q7WAAvor{iE!zSphwQyfg1_FVwwb_O6_L{ z!?}%mcmm4Yu4lc~?|rGbOk?;z4Gmo;>sb?n_gFpsg!KGZYh*vyL*mH;`3vLw45fC4 zZpk(Jbj^NAUS-L4RtblHW}A%T?*!t{vj%!xnI6mwk)(y8^crUEkOAYP$FW#WLR3kZ z$L%s0Q$zDw;sh+6H&jBn<}etYH>ycpSvaD{+4RN_p~@SKOFgB8#C~LzsrQu>HYNql z?A;zAt1IIitjv11A4FpYu`#Uo6+I8bJwe(g=DR!a_}f;x2$r6`)d$R;95vLe>~l~f zbhBhQn4xF-O)EAm+hsPELBRTz%A8d+W~IPJt~5Ls4;GDHcFoy2cKy;Fi=ADRd2XMj z-6mbJB6d1ElU+BvP`g=nTkQ_nU9!7wm#r(Uv+8>2hU=E-cInROZt4CgVlGm(NP{9B ziu5lss>rM&i;Ju)vaiUYBBzU7ERta_*t^=-vu|wQ%YLPOto=#*>-M+o@7jN||Kgx? zaCRu}P{E#)Wl)*-Q8 z=+EfS>o4mc=%46c>fZ`g1s|c8Fi@Bv%n;@ZYlIELRv}T?B^(wm2-k&s!c!qzcx7-j zmag(omx4yaSC(_b(-O{)hXTSmFOrsiymSHv9;Jq94H2hQQ`t|vA7zwP% zTcbDES{w`rI^IR6Y#JcQuIplKE<($h^mzys4U7onSbb06U z(O3lTDBX;uj9$j7|F^Pp0jjFb`{&=pDAA|4azy? zqSC6|Qtl`y^|U-;u~}40prx;+za`WXVHs_Svm{y4Epse$@3HjngY?Pv2=|A+Uw3D{ zFJIaDLp7&Hws(tI*6@%O1U&*ix5Z;@GQ@byYiL3<t~_LNGlHRA6$#XYY?FqoTt z+rXaHsBX@lxVVhusZ%`?qdJXVOl^3E9YeWKT@U74f1qS{6%s9dQ=C!J$z}VeXmP>9r2StwuG?9k z^WS1?LhX-qIJ&{-(>x$>ra~W9C$wxmdWi{stVif2^G{kh$jb-CvwJf84@^xMqmL4a zu{61t+4c-;<5emw)b&9u67B;Kr@tF5kj-nJfa>pih6*Ct4%Cz(7IsVW=!EG6w57j@ zEm&R6KM22~gr9{A<^Yit4nk5tMCQB0FVu`>sDa`(ubk9^ zg2hM}r`TzRdjCL3wsuvJ+3RlkO%>!o-h23W>Evs&qR%hh;+B(~)dJILH1!r)#R(yuIqEy|yAd3eB~g zH@OrY)9m(iR5&egu0jID-9E9xRB=PizltyUotU)mMU8A> z6CM5dZxj07pa}EHp%oMNC+l^IUuGPb-TCjSB@WoGI;X{Ggwpbdq$%VtE1mkt#2&7G z=QYeo|9dOs$>{c+N&{qb$YhypX=cU6+-6oLP|*-P)dQrs$0ersWn!zw$plcXs~DU6 zrr*JAiPu>v#;j#BOP2mQ<|vA8z1)M z(b?f38zIey#(NlgJI1eHLj;5$mWCsz%01BAg!a(es-M#yKyPFj7RXXMmyczfIZ6bkD0C`%t1wy@X~zPF}z1J=5T;Y z>#&OnY?^qk>Z8)C3N5X&D*q$ZE*5poGdQhI)2UVdH) zWUKhOM0dZkeIbq;fa1GvZeI>WS|yOZAeg;H$K+9W_-sWhWKRJDaZUQ5%e3LIiwbpf z7_?Ze;oNAV6UCf%Z;7Pd6=L^0OR30fmeG|!d(nb+Z$@1mRyvbp^ucxYj&)uA;fgYs*LuBVtQM3X5XW7DfgG80H`+y*R|rhyYqovcO84#CmYwsJ+AaBIz9ZiiubD|h5tDEEjGZMF8obI z#AEvC`taTYb&AFS*oWK_w%tgwSVe>=k_BV9_gyTKn7_FQ9`#su(Zw0bubA1PEL$)G zVM%GaOx*=Xwm|VbD>!c!2xI{9+1>zyKwV9eDNI$)?5S(v$Kno>n{wc9`iFDgnAt%x zed_w3N!HRN@|fKpKfLL~ZNwVUp*#q1@{+PTC(X~xn`xhCNJyKBGRtlxuW5mTFt zrB0s>Otl#f(JV5~2#D1$wVANa^kdB+od!%EZ~E#kn`HVP8jtf=z#%BQHNz$`-^rht z0UDjoF_yw|c~!lQ@n3g2L_->C1A3s@bYG!UAbQy8DTgD5Cr=G7)|y4qyi>783mqB7 zS@yV@+pg$r33M#0Bs1i@(M;H}{oVI=YUXC*2>uY2ct+w~KK}fIaeGb8#NGsT?6MmH z7uL#+K*=_k`EyEAvv3pYF(W`A7UBa&M6ZtQB4w!xFP?`a(_K1GDDb#%JV8hyj~yhD zyV}@F4-zA0;(xl>LI~y#ubof{*l49Ex&sRt_<7Hna~2mkG+YiuL|2-rw7A+N#X46e z>q^WxT&}_-+J{jmu@w?nqALUzu%t3R%5T8blriYNFj;y7q{BvP14^bFKq)5$b~4yJ zDTSa6y_?u(eouWs%Zf#jS`LRsklV{6$ZG@OPoNOjy0ORRB*eZZacXfb2Om>AxkmR+ z5EzU#!w-HHd;u?`6X;=1a#gS-q)8CXrMAc$*uR>HYx6r?3tZKL?eP(Q0}~Q)hunJ= z*u7avk?>e0>rt6DUr_1F@Kcvg5Br9%mu*f;-da7k-hKcGeKBkP#$7trEjdA=zx-rC zp}=#CU5%KZ%-;+jz`l3_f>PbKoh*XyvBL0BK3CB|=wIE683OY->?|A}Y%O2?o@a6|;#FF{sDK`iAH(mV?G>YK zi2Ey;?h4clk|`XOYB#=rNMpdg@Wj|nG&L;U01~#4bEQg+izn0%wv#c>B)kG-6fuc- z*s%u-580Wm?hfm7fBLN~EWz|UFI}S(TdF_(Y;#KV@T{a5EibrCBv^O&lX$ceT&&Ez zaXLADlJJu7w3T-Vrf)t}bj#Rx%jXMxw#Ma9tB5^w@&?ljQR~OOK8UXjQ%vcc%SY@x z(J@h@>&TbwLWnkGXcH?&5UBJF%96X#!PwYbPie^;o8pfjCu6A_m_(ei0>@YWf6(`q zk(+9#P&{T?aaK{;4s2t)Lecg|z6`K2Z3M6odm@JffOCk&LDA_8wp|=p)4l}nwVwER zqz}Vfy9V-`Xk<@2si`Zwb5IOgm3(~Rwa)Z|`i@FhTUxH-&&`$#_)53o*@heK$2TTj zW!N~On~v%sQbQCQZ6$R1$M6juP=|1Aa-Y0NcNg@*N*ZFVVZG+FUPY`Id1eVudXLz9 zfW`GP@&xl~k&G0!668m>b03;{xB z7GfY)?QF&<@~}SW^LkXGOc#hl&mPCyZp>jHvd67tWj(OKPXDz#8wrmGOzo4d8Dg6u kU9%Dk0t*|U$5n)@dy5_^zZnbGpL5vdM!G5EPHiIn7be9!RsaA1 diff --git a/licences/SDL2_gfx-LICENCE.txt b/licences/SDL2_gfx-LICENCE.txt deleted file mode 100644 index f8f90c2..0000000 --- a/licences/SDL2_gfx-LICENCE.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu diff --git a/licences/SDL2_image-LICENSE.txt b/licences/SDL3-LICENSE.txt similarity index 93% rename from licences/SDL2_image-LICENSE.txt rename to licences/SDL3-LICENSE.txt index 52d0ed3..acaf5b2 100644 --- a/licences/SDL2_image-LICENSE.txt +++ b/licences/SDL3-LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (C) 1997-2025 Sam Lantinga +Copyright (C) 1997-2026 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/licences/SDL2_ttf-LICENSE.txt b/licences/SDL3_image-LICENSE.txt similarity index 93% rename from licences/SDL2_ttf-LICENSE.txt rename to licences/SDL3_image-LICENSE.txt index 52d0ed3..acaf5b2 100644 --- a/licences/SDL2_ttf-LICENSE.txt +++ b/licences/SDL3_image-LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (C) 1997-2025 Sam Lantinga +Copyright (C) 1997-2026 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/licences/SDL2-LICENSE.txt b/licences/SDL3_ttf-LICENSE.txt similarity index 88% rename from licences/SDL2-LICENSE.txt rename to licences/SDL3_ttf-LICENSE.txt index 23abb73..acaf5b2 100644 --- a/licences/SDL2-LICENSE.txt +++ b/licences/SDL3_ttf-LICENSE.txt @@ -1,5 +1,5 @@ -Copyright (C) 1997-2025 Sam Lantinga - +Copyright (C) 1997-2026 Sam Lantinga + This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. @@ -7,12 +7,11 @@ arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - + 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be - appreciated but is not required. + appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. - diff --git a/licences/Ubuntu-Font-LICENCE.txt b/licences/Ubuntu-Font-LICENCE.txt new file mode 100644 index 0000000..6e722c8 --- /dev/null +++ b/licences/Ubuntu-Font-LICENCE.txt @@ -0,0 +1,96 @@ +------------------------------- +UBUNTU FONT LICENCE Version 1.0 +------------------------------- + +PREAMBLE +This licence allows the licensed fonts to be used, studied, modified and +redistributed freely. The fonts, including any derivative works, can be +bundled, embedded, and redistributed provided the terms of this licence +are met. The fonts and derivatives, however, cannot be released under +any other licence. The requirement for fonts to remain under this +licence does not require any document created using the fonts or their +derivatives to be published under this licence, as long as the primary +purpose of the document is not to be a vehicle for the distribution of +the fonts. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this licence and clearly marked as such. This may +include source files, build scripts and documentation. + +"Original Version" refers to the collection of Font Software components +as received under this licence. + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to +a new environment. + +"Copyright Holder(s)" refers to all individuals and companies who have a +copyright ownership of the Font Software. + +"Substantially Changed" refers to Modified Versions which can be easily +identified as dissimilar to the Font Software by users of the Font +Software comparing the Original Version with the Modified Version. + +To "Propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification and with or without charging +a redistribution fee), making available to the public, and in some +countries other activities as well. + +PERMISSION & CONDITIONS +This licence does not grant any rights under trademark law and all such +rights are reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of the Font Software, to propagate the Font Software, subject to +the below conditions: + +1) Each copy of the Font Software must contain the above copyright +notice and this licence. These can be included either as stand-alone +text files, human-readable headers or in the appropriate machine- +readable metadata fields within text or binary files as long as those +fields can be easily viewed by the user. + +2) The font name complies with the following: +(a) The Original Version must retain its name, unmodified. +(b) Modified Versions which are Substantially Changed must be renamed to +avoid use of the name of the Original Version or similar names entirely. +(c) Modified Versions which are not Substantially Changed must be +renamed to both (i) retain the name of the Original Version and (ii) add +additional naming elements to distinguish the Modified Version from the +Original Version. The name of such Modified Versions must be the name of +the Original Version, with "derivative X" where X represents the name of +the new work, appended to that name. + +3) The name(s) of the Copyright Holder(s) and any contributor to the +Font Software shall not be used to promote, endorse or advertise any +Modified Version, except (i) as required by this licence, (ii) to +acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with +their explicit written permission. + +4) The Font Software, modified or unmodified, in part or in whole, must +be distributed entirely under this licence, and must not be distributed +under any other licence. The requirement for fonts to remain under this +licence does not affect any document created using the Font Software, +except any version of the Font Software extracted from a document +created using the Font Software may only be distributed under this +licence. + +TERMINATION +This licence becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER +DEALINGS IN THE FONT SOFTWARE. diff --git a/licences/midifile-LICENSE.txt b/licences/midifile-LICENSE.txt new file mode 100644 index 0000000..cc3340a --- /dev/null +++ b/licences/midifile-LICENSE.txt @@ -0,0 +1,23 @@ +Copyright (c) 1999-2018, Craig Stuart Sapp +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/other/build.nr b/other/build.nr index 6be8278..a862943 100644 --- a/other/build.nr +++ b/other/build.nr @@ -1 +1 @@ -2039 +2040 diff --git a/src/ogfx/gui/Widget.cpp b/src/ogfx/gui/Widget.cpp new file mode 100644 index 0000000..f6ae4e3 --- /dev/null +++ b/src/ogfx/gui/Widget.cpp @@ -0,0 +1,29 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#include "Widget.hpp" + +namespace ogfx +{ + namespace gui + { + + } +} diff --git a/src/ogfx/gui/Widget.hpp b/src/ogfx/gui/Widget.hpp new file mode 100644 index 0000000..38b8d75 --- /dev/null +++ b/src/ogfx/gui/Widget.hpp @@ -0,0 +1,36 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include +#include + +namespace ogfx +{ + namespace gui + { + class Widget : public ostd::BaseObject, public ostd::Rectangle + { + public: + private: + }; + } +} diff --git a/src/ogfx/gui/Window.cpp b/src/ogfx/gui/Window.cpp index 9aa2d75..a8a920d 100644 --- a/src/ogfx/gui/Window.cpp +++ b/src/ogfx/gui/Window.cpp @@ -20,6 +20,8 @@ #include "Window.hpp" #include "../../ostd/utils/Time.hpp" +#include "io/IOHandlers.hpp" +#include "string/String.hpp" #include #include #include @@ -157,7 +159,7 @@ namespace ogfx if (isBlockingEventsEnabled()) { - if (SDL_WaitEvent(&event)) + if (SDL_WaitEventTimeout(&event, 16)) __handle_event(event); } else @@ -283,6 +285,7 @@ namespace ogfx { enableBlockingEvents(); setTypeName("ogfx::gui::Window"); + m_gfx.init(*this); onInitialize(); } @@ -298,7 +301,7 @@ namespace ogfx handle_events(); SDL_SetRenderDrawColor(m_renderer, getClearColor().r, getClearColor().g, getClearColor().b, getClearColor().a); SDL_RenderClear(m_renderer); - + m_gfx.drawString("Hello World", { 100, 100 }, { 255, 0, 0 }); SDL_RenderPresent(m_renderer); } } diff --git a/src/ogfx/gui/Window.hpp b/src/ogfx/gui/Window.hpp index ddfb5bc..1655661 100644 --- a/src/ogfx/gui/Window.hpp +++ b/src/ogfx/gui/Window.hpp @@ -26,6 +26,7 @@ #include #include #include +#include namespace ogfx { @@ -147,6 +148,8 @@ namespace ogfx void __main_loop(void) override; private: + ogfx::BasicRenderer2D m_gfx; + ostd::ConsoleOutputHandler m_out; }; } } diff --git a/src/ogfx/gui/WindowOutputHandler.cpp b/src/ogfx/gui/WindowOutputHandler.cpp index dfc994a..707f92f 100644 --- a/src/ogfx/gui/WindowOutputHandler.cpp +++ b/src/ogfx/gui/WindowOutputHandler.cpp @@ -30,7 +30,7 @@ namespace ogfx { } - void GraphicsWindowOutputHandler::attachWindow(ogfx::GraphicsWindow& window) + void GraphicsWindowOutputHandler::attachWindow(ogfx::WindowCore& window) { if (m_window != nullptr) return; m_window = &window; diff --git a/src/ogfx/gui/WindowOutputHandler.hpp b/src/ogfx/gui/WindowOutputHandler.hpp index 48813a5..8c6423f 100644 --- a/src/ogfx/gui/WindowOutputHandler.hpp +++ b/src/ogfx/gui/WindowOutputHandler.hpp @@ -26,12 +26,13 @@ namespace ogfx { + class WindowCore; class GraphicsWindowOutputHandler : public ostd::OutputHandlerBase { public: enum class eWrapMode { TripleDots, NewLine }; public: GraphicsWindowOutputHandler(void); - void attachWindow(GraphicsWindow& window); + void attachWindow(WindowCore& window); void setMonospaceFont(const ostd::String& filePath); ostd::Vec2 getStringSize(const ostd::String& str); bool isReady(void); @@ -113,7 +114,7 @@ namespace ogfx ostd::Color m_defaultForegroundColor { 0, 220, 0, 255 }; ostd::Vec2 m_curosrPosition; BasicRenderer2D m_renderer; - GraphicsWindow* m_window { nullptr }; + WindowCore* m_window { nullptr }; int32_t m_fontSize { 20 }; ostd::Vec2 m_charSize; ostd::IPoint m_consoleSize { 0, 0 }; diff --git a/src/ogfx/render/BasicRenderer.cpp b/src/ogfx/render/BasicRenderer.cpp index 9576aff..b78077f 100644 --- a/src/ogfx/render/BasicRenderer.cpp +++ b/src/ogfx/render/BasicRenderer.cpp @@ -28,6 +28,7 @@ namespace ogfx m_window = &window; m_ttfr.init(window.getSDLRenderer()); m_initialized = true; + setDefaultFont(); } void BasicRenderer2D::setFont(const ostd::String& fontFilePath) @@ -36,6 +37,12 @@ namespace ogfx m_ttfr.openFont(fontFilePath, m_ttfr.getFontSize()); } + void BasicRenderer2D::setDefaultFont(void) + { + if (!m_initialized) return; + m_ttfr.loadDefaultFont(m_ttfr.getFontSize()); + } + void BasicRenderer2D::setFontSize(int32_t fontSize) { if (!m_initialized) return; diff --git a/src/ogfx/render/BasicRenderer.hpp b/src/ogfx/render/BasicRenderer.hpp index 38d6d78..297c64f 100644 --- a/src/ogfx/render/BasicRenderer.hpp +++ b/src/ogfx/render/BasicRenderer.hpp @@ -20,7 +20,6 @@ #pragma once -#include "gui/Window.hpp" #include #include #include @@ -40,6 +39,7 @@ namespace ogfx inline WindowCore& getWindow(void) { return *m_window; } inline bool isInitialized(void) { return m_initialized; } void setFont(const ostd::String& fontFilePath); + void setDefaultFont(void); void setFontSize(int32_t fontSize); void drawImage(ogfx::Image& image, const ostd::Vec2& position, const ostd::Rectangle& rect = { 0, 0, 0, 0 }); diff --git a/src/ogfx/render/FontUtils.cpp b/src/ogfx/render/FontUtils.cpp index ed811af..cadb5b9 100644 --- a/src/ogfx/render/FontUtils.cpp +++ b/src/ogfx/render/FontUtils.cpp @@ -19,8 +19,7 @@ */ #include "FontUtils.hpp" -#include -#include +#include "../resources/UbuntuMonoRegularTTF.hpp" namespace ogfx { @@ -191,6 +190,11 @@ namespace ogfx return set_error_state(tErrors::NoError); } + int32_t TTFRenderer::loadDefaultFont(int32_t fontSize) + { + return openFont(ubuntu_mono_regular_ttf_data, ubuntu_mono_regular_ttf_size, fontSize); + } + void TTFRenderer::closeFont(void) { if (!TTFRenderer::m_initialized || !m_fontOpen) return; @@ -199,6 +203,7 @@ namespace ogfx m_font = nullptr; m_fontOpen = false; m_fontSize = DefaultFontSize; + m_fontFromMemory = false; set_error_state(tErrors::NoError); } @@ -217,6 +222,29 @@ namespace ogfx return set_error_state(tErrors::FailedToOpenFontFile); } m_fontOpen = true; + m_fontFromMemory = false; + return set_error_state(tErrors::NoError); + } + + int32_t TTFRenderer::openFont(const ostd::UByte resource_data[], uint32_t data_size, int32_t fontSize) + { + if (!TTFRenderer::m_initialized) return set_error_state(tErrors::Uninitialized); + if (data_size < 100) // Arbitrary 100 bytes + return set_error_state(tErrors::FailedToOpenFontFile); + if (m_fontOpen) closeFont(); + if (fontSize <= 0) + fontSize = m_fontSize; + else + m_fontSize = fontSize; + SDL_IOStream* rw = SDL_IOFromConstMem(resource_data, data_size); + m_font = TTF_OpenFontIO(rw, true, fontSize); + if (m_font == nullptr) + { + print_ttf_error("TTF_OpenFont"); + return set_error_state(tErrors::FailedToOpenFontFile); + } + m_fontOpen = true; + m_fontFromMemory = true; return set_error_state(tErrors::NoError); } diff --git a/src/ogfx/render/FontUtils.hpp b/src/ogfx/render/FontUtils.hpp index 972198b..a673007 100644 --- a/src/ogfx/render/FontUtils.hpp +++ b/src/ogfx/render/FontUtils.hpp @@ -40,14 +40,17 @@ namespace ogfx inline static constexpr int32_t TTFCreateTextureFromSurfaceFail = 7; inline static constexpr int32_t NullFont = 8; inline static constexpr int32_t NoFont = 9; + inline static constexpr int32_t FailedToOpenFontByteStrean = 10; }; public: TTFRenderer(void) = default; ~TTFRenderer(void); inline TTFRenderer(SDL_Renderer* renderer) { init(renderer); } int32_t init(SDL_Renderer* renderer); + int32_t loadDefaultFont(int32_t fontSize = 0); void closeFont(void); int32_t openFont(const ostd::String& fontPath, int32_t fontSize = 0); + int32_t openFont(const ostd::UByte resource_data[], uint32_t data_size, int32_t fontSize = 0); int32_t setFontSize(int32_t fontSize); void renderText(const ostd::String& message, int32_t x, int32_t y, const ostd::Color& color, int32_t fontSize = 0); void renderCenteredText(const ostd::String& message, int32_t center_x, int32_t center_y, const ostd::Color& color, int32_t fontSize = 0); @@ -55,7 +58,7 @@ namespace ogfx inline bool isInitialized(void) { return TTFRenderer::m_initialized; } inline bool hasOpenFont(void) { return m_fontOpen; } inline TTF_Font* getSDLFont(void) { return m_font; } - inline bool isValid(void) { return TTFRenderer::m_initialized && m_fontOpen && m_font != nullptr && m_renderer != nullptr; } + inline bool isValid(void) { return TTFRenderer::m_initialized && m_fontOpen && (m_font != nullptr || m_fontFromMemory) && m_renderer != nullptr; } inline int32_t geterrorState(void) { return m_errorState; } inline int32_t getFontSize(void) { return m_fontSize; } @@ -71,6 +74,7 @@ namespace ogfx SDL_Renderer* m_renderer { nullptr }; int32_t m_errorState { tErrors::NoError }; int32_t m_fontSize { DefaultFontSize }; + bool m_fontFromMemory { false }; inline static constexpr int32_t DefaultFontSize { 16 }; }; diff --git a/src/ogfx/resources/UbuntuMonoRegularTTF.cpp b/src/ogfx/resources/UbuntuMonoRegularTTF.cpp new file mode 100644 index 0000000..54770c0 --- /dev/null +++ b/src/ogfx/resources/UbuntuMonoRegularTTF.cpp @@ -0,0 +1,9536 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +/* + This file embeds the Ubuntu Mono font as a static byte array. + The font itself is © Canonical Ltd. and distributed under the + Ubuntu Font License 1.0. The font data included here is the + unmodified original TTF file. + + This header and the surrounding code are © 2026 Shasa (GPLv3), + but the embedded font remains under its original license. + + The full Ubuntu Font License text is provided in: + licenses/Ubuntu-Font-LICENCE.txt +*/ + +#include "UbuntuMonoRegularTTF.hpp" + +namespace ogfx +{ + const uint32_t ubuntu_mono_regular_ttf_size = 189892; + const ostd::UByte ubuntu_mono_regular_ttf_data[189892] = { + 0, 1, 0, 0, 0, 16, 1, 0, 0, 4, 0, 0, 71, 83, 85, 66, 172, 54, 149, 231, + 0, 0, 34, 204, 0, 0, 16, 50, 79, 83, 47, 50, 136, 193, 253, 210, 0, 0, 1, 144, + 0, 0, 0, 96, 86, 68, 77, 88, 108, 171, 116, 66, 0, 0, 12, 180, 0, 0, 5, 224, + 99, 109, 97, 112, 163, 200, 59, 66, 0, 0, 8, 64, 0, 0, 4, 116, 99, 118, 116, 32, + 11, 79, 18, 78, 0, 0, 3, 124, 0, 0, 2, 4, 102, 112, 103, 109, 118, 189, 68, 196, + 0, 0, 18, 148, 0, 0, 6, 35, 103, 97, 115, 112, 255, 255, 0, 3, 0, 0, 1, 12, + 0, 0, 0, 8, 103, 108, 121, 102, 80, 171, 179, 0, 0, 0, 116, 192, 0, 2, 113, 4, + 104, 101, 97, 100, 245, 6, 30, 221, 0, 0, 1, 88, 0, 0, 0, 54, 104, 104, 101, 97, + 5, 53, 0, 167, 0, 0, 1, 52, 0, 0, 0, 36, 104, 109, 116, 120, 92, 2, 87, 154, + 0, 0, 24, 184, 0, 0, 10, 20, 108, 111, 99, 97, 6, 209, 126, 24, 0, 0, 51, 0, + 0, 0, 20, 40, 109, 97, 120, 112, 11, 121, 9, 163, 0, 0, 1, 20, 0, 0, 0, 32, + 110, 97, 109, 101, 60, 236, 108, 207, 0, 0, 5, 128, 0, 0, 2, 190, 112, 111, 115, 116, + 29, 182, 168, 108, 0, 0, 71, 40, 0, 0, 45, 150, 112, 114, 101, 112, 146, 62, 47, 164, + 0, 0, 1, 240, 0, 0, 1, 138, 0, 0, 0, 1, 255, 255, 0, 2, 0, 1, 0, 0, + 5, 9, 1, 84, 0, 85, 0, 110, 0, 7, 0, 2, 0, 16, 0, 47, 0, 89, 0, 0, + 5, 167, 7, 175, 0, 3, 0, 1, 0, 1, 0, 0, 3, 62, 255, 86, 0, 0, 1, 244, + 255, 91, 255, 91, 2, 153, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 204, 204, 139, 33, 235, 231, 95, 15, 60, 245, + 0, 9, 3, 232, 0, 0, 0, 0, 201, 229, 190, 203, 0, 0, 0, 0, 202, 166, 79, 203, + 254, 196, 255, 86, 2, 153, 3, 62, 0, 0, 0, 9, 0, 2, 0, 1, 0, 0, 0, 0, + 0, 3, 1, 244, 1, 144, 0, 5, 0, 0, 2, 188, 2, 138, 0, 0, 0, 140, 2, 188, + 2, 138, 0, 0, 1, 221, 0, 50, 0, 250, 0, 0, 2, 11, 5, 9, 3, 6, 2, 3, + 2, 4, 224, 0, 2, 255, 80, 0, 32, 91, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, + 77, 65, 0, 64, 0, 0, 255, 253, 2, 181, 255, 91, 0, 49, 3, 62, 0, 170, 32, 0, + 0, 159, 86, 1, 0, 0, 2, 8, 2, 181, 0, 0, 0, 32, 0, 3, 64, 14, 159, 163, + 175, 163, 2, 64, 157, 26, 33, 70, 155, 121, 42, 31, 184, 255, 192, 64, 12, 154, 12, 18, + 70, 151, 121, 72, 31, 149, 115, 42, 31, 184, 255, 192, 64, 84, 148, 12, 18, 70, 146, 115, + 19, 31, 145, 115, 72, 31, 143, 121, 42, 31, 142, 121, 72, 31, 140, 115, 42, 31, 139, 115, + 72, 31, 129, 115, 42, 31, 138, 131, 42, 31, 137, 134, 72, 31, 136, 121, 42, 31, 133, 121, + 72, 31, 131, 115, 19, 31, 130, 115, 42, 31, 127, 115, 72, 31, 120, 115, 42, 31, 124, 121, + 42, 31, 175, 121, 191, 121, 207, 121, 3, 64, 121, 31, 35, 70, 118, 115, 42, 31, 186, 1, + 1, 0, 67, 1, 0, 64, 34, 85, 104, 67, 103, 85, 102, 67, 101, 85, 100, 67, 97, 85, + 99, 67, 96, 85, 98, 67, 95, 85, 94, 67, 93, 85, 92, 67, 91, 85, 90, 67, 89, 85, + 176, 184, 1, 0, 64, 74, 1, 15, 101, 1, 15, 101, 127, 101, 143, 101, 3, 48, 97, 1, + 16, 97, 48, 97, 96, 97, 144, 97, 176, 97, 224, 97, 6, 175, 95, 1, 0, 93, 1, 48, + 93, 96, 93, 144, 93, 3, 88, 67, 86, 85, 87, 67, 85, 85, 83, 144, 77, 85, 82, 144, + 75, 85, 81, 144, 74, 85, 80, 144, 73, 85, 70, 91, 66, 85, 69, 91, 65, 85, 84, 83, + 184, 1, 0, 179, 22, 1, 5, 1, 184, 1, 144, 75, 184, 3, 231, 82, 75, 176, 8, 80, + 91, 176, 1, 136, 176, 37, 83, 176, 1, 136, 176, 64, 81, 90, 176, 6, 136, 176, 0, 85, + 90, 91, 88, 177, 1, 1, 142, 89, 133, 141, 141, 0, 66, 29, 75, 176, 29, 83, 88, 176, + 160, 29, 89, 75, 176, 72, 83, 88, 176, 64, 29, 89, 75, 176, 128, 83, 88, 176, 0, 29, + 177, 22, 0, 66, 89, 43, 43, 0, 43, 43, 43, 43, 43, 43, 43, 43, 115, 116, 115, 115, + 116, 115, 116, 115, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 0, 43, 115, 43, 43, + 1, 43, 43, 43, 0, 43, 43, 43, 43, 43, 1, 43, 43, 0, 43, 43, 1, 43, 43, 43, + 43, 0, 43, 43, 43, 1, 43, 0, 116, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 107, 0, 0, 0, 0, 0, 0, 0, 13, 255, 243, 0, 0, 0, 0, 1, 208, + 0, 0, 255, 91, 0, 0, 2, 181, 0, 0, 0, 0, 0, 10, 255, 246, 255, 246, 0, 10, + 0, 0, 0, 0, 2, 107, 255, 242, 0, 14, 2, 107, 0, 14, 0, 0, 255, 242, 1, 52, + 255, 242, 1, 25, 2, 112, 1, 120, 255, 242, 0, 9, 255, 247, 0, 250, 0, 9, 0, 0, + 255, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 0, 0, 84, 0, 0, 0, 82, 0, 70, 0, 0, 0, 58, + 0, 72, 0, 0, 0, 66, 0, 82, 0, 0, 0, 82, 0, 85, 0, 115, 0, 61, 0, 70, + 0, 67, 0, 0, 0, 72, 0, 67, 0, 120, 0, 82, 0, 84, 0, 67, 0, 70, 0, 72, + 0, 0, 0, 82, 0, 96, 0, 0, 0, 135, 0, 84, 0, 60, 0, 70, 0, 54, 0, 0, + 0, 135, 0, 72, 0, 60, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 25, 255, 247, 0, 0, 0, 15, 0, 186, 0, 3, 0, 1, 4, 9, + 0, 0, 0, 146, 1, 114, 0, 3, 0, 1, 4, 9, 0, 1, 0, 22, 1, 92, 0, 3, + 0, 1, 4, 9, 0, 2, 0, 14, 1, 78, 0, 3, 0, 1, 4, 9, 0, 3, 0, 64, + 1, 14, 0, 3, 0, 1, 4, 9, 0, 4, 0, 22, 1, 92, 0, 3, 0, 1, 4, 9, + 0, 5, 0, 24, 0, 246, 0, 3, 0, 1, 4, 9, 0, 6, 0, 36, 0, 210, 0, 3, + 0, 1, 4, 9, 0, 7, 0, 128, 0, 82, 0, 3, 0, 1, 4, 9, 0, 8, 0, 30, + 0, 52, 0, 3, 0, 1, 4, 9, 0, 9, 0, 30, 0, 52, 0, 3, 0, 1, 4, 9, + 0, 11, 0, 52, 0, 0, 0, 3, 0, 1, 4, 9, 0, 12, 0, 52, 0, 0, 0, 3, + 0, 1, 4, 9, 0, 16, 0, 22, 1, 92, 0, 3, 0, 1, 4, 9, 0, 17, 0, 14, + 1, 78, 0, 3, 0, 1, 4, 9, 0, 18, 0, 22, 1, 92, 0, 104, 0, 116, 0, 116, + 0, 112, 0, 58, 0, 47, 0, 47, 0, 119, 0, 119, 0, 119, 0, 46, 0, 100, 0, 97, + 0, 108, 0, 116, 0, 111, 0, 110, 0, 109, 0, 97, 0, 97, 0, 103, 0, 46, 0, 99, + 0, 111, 0, 109, 0, 47, 0, 68, 0, 97, 0, 108, 0, 116, 0, 111, 0, 110, 0, 32, + 0, 77, 0, 97, 0, 97, 0, 103, 0, 32, 0, 76, 0, 116, 0, 100, 0, 85, 0, 98, + 0, 117, 0, 110, 0, 116, 0, 117, 0, 32, 0, 97, 0, 110, 0, 100, 0, 32, 0, 67, + 0, 97, 0, 110, 0, 111, 0, 110, 0, 105, 0, 99, 0, 97, 0, 108, 0, 32, 0, 97, + 0, 114, 0, 101, 0, 32, 0, 114, 0, 101, 0, 103, 0, 105, 0, 115, 0, 116, 0, 101, + 0, 114, 0, 101, 0, 100, 0, 32, 0, 116, 0, 114, 0, 97, 0, 100, 0, 101, 0, 109, + 0, 97, 0, 114, 0, 107, 0, 115, 0, 32, 0, 111, 0, 102, 0, 32, 0, 67, 0, 97, + 0, 110, 0, 111, 0, 110, 0, 105, 0, 99, 0, 97, 0, 108, 0, 32, 0, 76, 0, 116, + 0, 100, 0, 46, 0, 85, 0, 98, 0, 117, 0, 110, 0, 116, 0, 117, 0, 77, 0, 111, + 0, 110, 0, 111, 0, 45, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, 0, 114, + 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, 0, 48, 0, 46, + 0, 56, 0, 48, 0, 85, 0, 98, 0, 117, 0, 110, 0, 116, 0, 117, 0, 32, 0, 77, + 0, 111, 0, 110, 0, 111, 0, 32, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, + 0, 114, 0, 32, 0, 86, 0, 101, 0, 114, 0, 115, 0, 105, 0, 111, 0, 110, 0, 32, + 0, 48, 0, 46, 0, 56, 0, 48, 0, 82, 0, 101, 0, 103, 0, 117, 0, 108, 0, 97, + 0, 114, 0, 85, 0, 98, 0, 117, 0, 110, 0, 116, 0, 117, 0, 32, 0, 77, 0, 111, + 0, 110, 0, 111, 0, 67, 0, 111, 0, 112, 0, 121, 0, 114, 0, 105, 0, 103, 0, 104, + 0, 116, 0, 32, 0, 50, 0, 48, 0, 49, 0, 49, 0, 32, 0, 67, 0, 97, 0, 110, + 0, 111, 0, 110, 0, 105, 0, 99, 0, 97, 0, 108, 0, 32, 0, 76, 0, 116, 0, 100, + 0, 46, 0, 32, 0, 32, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 115, 0, 101, + 0, 100, 0, 32, 0, 117, 0, 110, 0, 100, 0, 101, 0, 114, 0, 32, 0, 116, 0, 104, + 0, 101, 0, 32, 0, 85, 0, 98, 0, 117, 0, 110, 0, 116, 0, 117, 0, 32, 0, 70, + 0, 111, 0, 110, 0, 116, 0, 32, 0, 76, 0, 105, 0, 99, 0, 101, 0, 110, 0, 99, + 0, 101, 0, 32, 0, 49, 0, 46, 0, 48, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, + 0, 0, 0, 20, 0, 3, 0, 1, 0, 0, 0, 20, 0, 4, 4, 96, 0, 0, 0, 230, + 0, 128, 0, 6, 0, 102, 0, 0, 0, 9, 0, 13, 0, 29, 0, 126, 1, 49, 1, 55, + 1, 72, 1, 81, 1, 83, 1, 95, 1, 97, 1, 119, 1, 127, 1, 145, 1, 146, 2, 23, + 2, 27, 2, 54, 2, 55, 2, 79, 2, 146, 2, 188, 2, 199, 2, 201, 2, 219, 2, 221, + 3, 17, 3, 134, 3, 138, 3, 140, 3, 144, 3, 161, 3, 169, 3, 176, 3, 201, 3, 206, + 4, 95, 4, 99, 4, 117, 4, 249, 30, 133, 30, 243, 31, 21, 31, 29, 31, 69, 31, 77, + 31, 87, 31, 89, 31, 91, 31, 93, 31, 125, 31, 180, 31, 196, 31, 211, 31, 219, 31, 239, + 31, 244, 31, 254, 32, 21, 32, 26, 32, 30, 32, 34, 32, 38, 32, 48, 32, 58, 32, 68, + 32, 112, 32, 121, 32, 137, 32, 172, 32, 174, 32, 180, 32, 185, 33, 19, 33, 22, 33, 34, + 33, 38, 33, 46, 33, 90, 33, 94, 34, 2, 34, 6, 34, 15, 34, 18, 34, 21, 34, 26, + 34, 30, 34, 43, 34, 72, 34, 96, 34, 101, 37, 0, 37, 2, 37, 12, 37, 16, 37, 20, + 37, 24, 37, 28, 37, 36, 37, 44, 37, 52, 37, 60, 37, 108, 37, 136, 37, 147, 37, 202, + 224, 255, 239, 253, 240, 2, 245, 17, 248, 29, 251, 2, 255, 253, 255, 255, 0, 0, 0, 0, + 0, 8, 0, 13, 0, 29, 0, 32, 0, 160, 1, 50, 1, 56, 1, 73, 1, 82, 1, 84, + 1, 96, 1, 98, 1, 120, 1, 128, 1, 146, 1, 147, 2, 24, 2, 28, 2, 55, 2, 56, + 2, 146, 2, 188, 2, 198, 2, 201, 2, 216, 2, 220, 3, 17, 3, 132, 3, 136, 3, 140, + 3, 142, 3, 145, 3, 163, 3, 170, 3, 177, 3, 202, 4, 0, 4, 98, 4, 114, 4, 138, + 30, 128, 30, 242, 31, 0, 31, 24, 31, 32, 31, 72, 31, 80, 31, 89, 31, 91, 31, 93, + 31, 95, 31, 128, 31, 182, 31, 198, 31, 214, 31, 221, 31, 242, 31, 246, 32, 19, 32, 24, + 32, 28, 32, 32, 32, 38, 32, 48, 32, 57, 32, 68, 32, 112, 32, 116, 32, 128, 32, 172, + 32, 174, 32, 180, 32, 185, 33, 19, 33, 22, 33, 34, 33, 38, 33, 46, 33, 83, 33, 91, + 34, 2, 34, 6, 34, 15, 34, 17, 34, 21, 34, 25, 34, 30, 34, 43, 34, 72, 34, 96, + 34, 100, 37, 0, 37, 2, 37, 12, 37, 16, 37, 20, 37, 24, 37, 28, 37, 36, 37, 44, + 37, 52, 37, 60, 37, 80, 37, 136, 37, 145, 37, 202, 224, 255, 239, 253, 240, 0, 245, 6, + 248, 10, 251, 1, 255, 253, 255, 255, 0, 1, 255, 249, 255, 245, 255, 228, 255, 227, 255, 219, + 255, 220, 255, 221, 255, 222, 0, 0, 255, 220, 0, 0, 255, 218, 0, 0, 0, 89, 254, 210, + 0, 88, 255, 65, 0, 84, 255, 38, 0, 83, 0, 17, 254, 162, 0, 0, 254, 151, 254, 137, + 0, 0, 255, 147, 0, 0, 0, 54, 0, 54, 0, 0, 255, 251, 255, 250, 0, 0, 255, 243, + 0, 0, 254, 176, 254, 175, 254, 161, 254, 141, 226, 230, 226, 122, 228, 212, 228, 210, 228, 208, + 228, 206, 228, 204, 228, 203, 228, 202, 228, 201, 228, 200, 228, 198, 228, 197, 228, 196, 228, 194, + 228, 193, 228, 191, 228, 190, 0, 0, 0, 0, 0, 0, 0, 0, 224, 64, 224, 58, 0, 0, + 225, 42, 224, 255, 224, 252, 224, 246, 223, 182, 226, 220, 226, 213, 228, 31, 224, 109, 226, 113, + 223, 84, 224, 120, 224, 83, 0, 0, 224, 41, 223, 152, 223, 149, 223, 141, 0, 0, 223, 139, + 223, 136, 223, 133, 223, 121, 223, 93, 223, 70, 223, 67, 223, 225, 223, 222, 223, 211, 223, 215, + 223, 202, 223, 197, 223, 201, 223, 190, 223, 183, 223, 176, 223, 170, 0, 0, 223, 123, 223, 115, + 219, 223, 35, 218, 20, 223, 0, 0, 12, 136, 9, 164, 0, 0, 4, 222, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, + 0, 212, 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 206, 0, 0, 0, 206, 0, 0, 0, 0, + 0, 206, 0, 0, 0, 0, 0, 206, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 184, + 0, 188, 0, 192, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, + 0, 0, 0, 186, 0, 0, 0, 0, 0, 109, 0, 121, 0, 107, 0, 119, 0, 122, 1, 82, + 1, 83, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 0, 105, 1, 95, 0, 117, 1, 101, + 3, 209, 3, 211, 3, 189, 3, 195, 3, 197, 3, 203, 3, 193, 3, 196, 3, 198, 3, 199, + 3, 200, 3, 201, 3, 207, 3, 202, 3, 205, 3, 204, 3, 206, 3, 208, 0, 115, 0, 116, + 3, 136, 0, 110, 0, 111, 0, 99, 0, 112, 0, 113, 0, 101, 0, 103, 0, 104, 0, 114, + 0, 108, 0, 120, 1, 130, 1, 131, 1, 136, 1, 137, 1, 138, 1, 139, 1, 140, 1, 141, + 1, 157, 1, 159, 4, 250, 4, 240, 4, 239, 5, 2, 4, 249, 4, 238, 5, 1, 4, 248, + 4, 236, 4, 255, 4, 246, 4, 235, 4, 254, 4, 245, 4, 233, 4, 252, 4, 243, 4, 232, + 4, 251, 4, 242, 4, 237, 5, 0, 4, 247, 4, 234, 4, 253, 4, 244, 5, 8, 5, 7, + 4, 241, 4, 218, 1, 170, 1, 172, 1, 171, 1, 173, 0, 1, 0, 1, 0, 1, 1, 1, + 1, 1, 0, 12, 0, 248, 8, 255, 0, 8, 0, 10, 255, 253, 0, 9, 0, 11, 255, 253, + 0, 10, 0, 11, 255, 253, 0, 11, 0, 12, 255, 253, 0, 12, 0, 12, 255, 253, 0, 13, + 0, 13, 255, 253, 0, 14, 0, 14, 255, 253, 0, 15, 0, 14, 255, 253, 0, 16, 0, 15, + 255, 253, 0, 17, 0, 16, 255, 253, 0, 18, 0, 16, 255, 253, 0, 19, 0, 17, 255, 253, + 0, 20, 0, 18, 255, 252, 0, 21, 0, 19, 255, 252, 0, 22, 0, 19, 255, 252, 0, 23, + 0, 20, 255, 252, 0, 24, 0, 21, 255, 252, 0, 25, 0, 21, 255, 252, 0, 26, 0, 22, + 255, 252, 0, 27, 0, 24, 255, 251, 0, 28, 0, 24, 255, 251, 0, 29, 0, 25, 255, 251, + 0, 30, 0, 26, 255, 251, 0, 31, 0, 26, 255, 251, 0, 32, 0, 28, 255, 251, 0, 33, + 0, 29, 255, 250, 0, 34, 0, 29, 255, 250, 0, 35, 0, 31, 255, 250, 0, 36, 0, 32, + 255, 249, 0, 37, 0, 33, 255, 249, 0, 38, 0, 33, 255, 249, 0, 39, 0, 34, 255, 249, + 0, 40, 0, 35, 255, 249, 0, 41, 0, 35, 255, 249, 0, 42, 0, 37, 255, 249, 0, 43, + 0, 37, 255, 249, 0, 44, 0, 38, 255, 249, 0, 45, 0, 39, 255, 248, 0, 46, 0, 40, + 255, 248, 0, 47, 0, 41, 255, 248, 0, 48, 0, 42, 255, 248, 0, 49, 0, 42, 255, 248, + 0, 50, 0, 43, 255, 247, 0, 51, 0, 44, 255, 247, 0, 52, 0, 45, 255, 247, 0, 53, + 0, 46, 255, 247, 0, 54, 0, 46, 255, 247, 0, 55, 0, 47, 255, 247, 0, 56, 0, 48, + 255, 246, 0, 57, 0, 49, 255, 246, 0, 58, 0, 50, 255, 246, 0, 59, 0, 51, 255, 246, + 0, 60, 0, 53, 255, 246, 0, 61, 0, 53, 255, 246, 0, 62, 0, 54, 255, 245, 0, 63, + 0, 55, 255, 245, 0, 64, 0, 55, 255, 245, 0, 65, 0, 56, 255, 244, 0, 66, 0, 57, + 255, 244, 0, 67, 0, 57, 255, 244, 0, 68, 0, 59, 255, 244, 0, 69, 0, 60, 255, 244, + 0, 70, 0, 61, 255, 244, 0, 71, 0, 61, 255, 244, 0, 72, 0, 61, 255, 244, 0, 73, + 0, 62, 255, 244, 0, 74, 0, 62, 255, 243, 0, 75, 0, 63, 255, 243, 0, 76, 0, 65, + 255, 243, 0, 77, 0, 65, 255, 243, 0, 78, 0, 66, 255, 242, 0, 79, 0, 67, 255, 242, + 0, 80, 0, 68, 255, 242, 0, 81, 0, 69, 255, 242, 0, 82, 0, 70, 255, 242, 0, 83, + 0, 70, 255, 242, 0, 84, 0, 71, 255, 241, 0, 85, 0, 72, 255, 241, 0, 86, 0, 73, + 255, 241, 0, 87, 0, 74, 255, 241, 0, 88, 0, 74, 255, 241, 0, 89, 0, 75, 255, 241, + 0, 90, 0, 76, 255, 241, 0, 91, 0, 76, 255, 241, 0, 92, 0, 78, 255, 240, 0, 93, + 0, 78, 255, 240, 0, 94, 0, 79, 255, 240, 0, 95, 0, 80, 255, 240, 0, 96, 0, 81, + 255, 240, 0, 97, 0, 82, 255, 240, 0, 98, 0, 83, 255, 239, 0, 99, 0, 83, 255, 239, + 0, 100, 0, 84, 255, 239, 0, 101, 0, 85, 255, 239, 0, 102, 0, 85, 255, 238, 0, 103, + 0, 87, 255, 238, 0, 104, 0, 87, 255, 238, 0, 105, 0, 89, 255, 238, 0, 106, 0, 90, + 255, 237, 0, 107, 0, 90, 255, 237, 0, 108, 0, 91, 255, 237, 0, 109, 0, 92, 255, 237, + 0, 110, 0, 92, 255, 237, 0, 111, 0, 93, 255, 237, 0, 112, 0, 94, 255, 237, 0, 113, + 0, 94, 255, 237, 0, 114, 0, 96, 255, 237, 0, 115, 0, 97, 255, 236, 0, 116, 0, 99, + 255, 236, 0, 117, 0, 99, 255, 236, 0, 118, 0, 100, 255, 236, 0, 119, 0, 101, 255, 236, + 0, 120, 0, 101, 255, 236, 0, 121, 0, 102, 255, 235, 0, 122, 0, 103, 255, 235, 0, 123, + 0, 103, 255, 234, 0, 124, 0, 104, 255, 234, 0, 125, 0, 104, 255, 234, 0, 126, 0, 105, + 255, 234, 0, 127, 0, 106, 255, 234, 0, 128, 0, 107, 255, 234, 0, 129, 0, 108, 255, 234, + 0, 130, 0, 108, 255, 234, 0, 131, 0, 110, 255, 234, 0, 132, 0, 111, 255, 234, 0, 133, + 0, 112, 255, 233, 0, 134, 0, 112, 255, 233, 0, 135, 0, 113, 255, 233, 0, 136, 0, 113, + 255, 233, 0, 137, 0, 114, 255, 233, 0, 138, 0, 116, 255, 233, 0, 139, 0, 116, 255, 232, + 0, 140, 0, 118, 255, 232, 0, 141, 0, 118, 255, 232, 0, 142, 0, 119, 255, 232, 0, 143, + 0, 120, 255, 232, 0, 144, 0, 120, 255, 232, 0, 145, 0, 121, 255, 231, 0, 146, 0, 122, + 255, 231, 0, 147, 0, 123, 255, 231, 0, 148, 0, 124, 255, 230, 0, 149, 0, 124, 255, 230, + 0, 150, 0, 125, 255, 230, 0, 151, 0, 126, 255, 230, 0, 152, 0, 127, 255, 230, 0, 153, + 0, 128, 255, 230, 0, 154, 0, 129, 255, 230, 0, 155, 0, 130, 255, 230, 0, 156, 0, 130, + 255, 229, 0, 157, 0, 132, 255, 229, 0, 158, 0, 132, 255, 229, 0, 159, 0, 133, 255, 229, + 0, 160, 0, 133, 255, 229, 0, 161, 0, 135, 255, 229, 0, 162, 0, 135, 255, 228, 0, 163, + 0, 136, 255, 228, 0, 164, 0, 137, 255, 228, 0, 165, 0, 138, 255, 228, 0, 166, 0, 138, + 255, 228, 0, 167, 0, 139, 255, 227, 0, 168, 0, 140, 255, 227, 0, 169, 0, 142, 255, 227, + 0, 170, 0, 142, 255, 227, 0, 171, 0, 143, 255, 227, 0, 172, 0, 144, 255, 227, 0, 173, + 0, 145, 255, 226, 0, 174, 0, 146, 255, 226, 0, 175, 0, 146, 255, 226, 0, 176, 0, 147, + 255, 225, 0, 177, 0, 148, 255, 225, 0, 178, 0, 148, 255, 225, 0, 179, 0, 150, 255, 225, + 0, 180, 0, 150, 255, 225, 0, 181, 0, 151, 255, 225, 0, 182, 0, 152, 255, 225, 0, 183, + 0, 153, 255, 225, 0, 184, 0, 153, 255, 225, 0, 185, 0, 155, 255, 224, 0, 186, 0, 155, + 255, 224, 0, 187, 0, 156, 255, 224, 0, 188, 0, 157, 255, 224, 0, 189, 0, 157, 255, 224, + 0, 190, 0, 158, 255, 224, 0, 191, 0, 159, 255, 223, 0, 192, 0, 160, 255, 223, 0, 193, + 0, 160, 255, 223, 0, 194, 0, 161, 255, 223, 0, 195, 0, 163, 255, 222, 0, 196, 0, 163, + 255, 222, 0, 197, 0, 164, 255, 222, 0, 198, 0, 165, 255, 222, 0, 199, 0, 166, 255, 222, + 0, 200, 0, 167, 255, 222, 0, 201, 0, 167, 255, 222, 0, 202, 0, 168, 255, 222, 0, 203, + 0, 170, 255, 221, 0, 204, 0, 170, 255, 221, 0, 205, 0, 171, 255, 221, 0, 206, 0, 172, + 255, 221, 0, 207, 0, 173, 255, 221, 0, 208, 0, 174, 255, 221, 0, 209, 0, 174, 255, 220, + 0, 210, 0, 175, 255, 220, 0, 211, 0, 176, 255, 220, 0, 212, 0, 177, 255, 220, 0, 213, + 0, 177, 255, 219, 0, 214, 0, 178, 255, 219, 0, 215, 0, 179, 255, 219, 0, 216, 0, 180, + 255, 219, 0, 217, 0, 181, 255, 219, 0, 218, 0, 181, 255, 219, 0, 219, 0, 182, 255, 218, + 0, 220, 0, 184, 255, 218, 0, 221, 0, 184, 255, 218, 0, 222, 0, 185, 255, 218, 0, 223, + 0, 186, 255, 218, 0, 224, 0, 186, 255, 218, 0, 225, 0, 188, 255, 218, 0, 226, 0, 189, + 255, 218, 0, 227, 0, 189, 255, 217, 0, 228, 0, 191, 255, 217, 0, 229, 0, 191, 255, 217, + 0, 230, 0, 192, 255, 217, 0, 231, 0, 193, 255, 217, 0, 232, 0, 193, 255, 217, 0, 233, + 0, 194, 255, 216, 0, 234, 0, 196, 255, 215, 0, 235, 0, 196, 255, 215, 0, 236, 0, 197, + 255, 215, 0, 237, 0, 197, 255, 215, 0, 238, 0, 198, 255, 215, 0, 239, 0, 199, 255, 215, + 0, 240, 0, 200, 255, 215, 0, 241, 0, 201, 255, 215, 0, 242, 0, 202, 255, 215, 0, 243, + 0, 203, 255, 215, 0, 244, 0, 204, 255, 215, 0, 245, 0, 204, 255, 214, 0, 246, 0, 205, + 255, 214, 0, 247, 0, 205, 255, 214, 0, 248, 0, 206, 255, 214, 0, 249, 0, 207, 255, 214, + 0, 250, 0, 209, 255, 213, 0, 251, 0, 210, 255, 213, 0, 252, 0, 210, 255, 213, 0, 253, + 0, 211, 255, 213, 0, 254, 0, 212, 255, 213, 0, 255, 0, 212, 255, 213, 64, 63, 88, 85, + 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 47, 46, 45, 44, 40, 38, 37, 36, + 35, 34, 31, 24, 20, 17, 16, 15, 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, + 0, 44, 69, 35, 70, 96, 32, 176, 38, 96, 176, 4, 38, 35, 72, 72, 45, 44, 69, 35, + 70, 35, 97, 32, 176, 38, 97, 176, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 96, 176, + 32, 97, 32, 176, 70, 96, 176, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 35, 97, 176, + 32, 96, 32, 176, 38, 97, 176, 32, 97, 176, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, + 96, 176, 64, 97, 32, 176, 102, 96, 176, 4, 38, 35, 72, 72, 45, 44, 69, 35, 70, 35, + 97, 176, 64, 96, 32, 176, 38, 97, 176, 64, 97, 176, 4, 38, 35, 72, 72, 45, 44, 1, + 16, 32, 60, 0, 60, 45, 44, 32, 69, 35, 32, 176, 205, 68, 35, 32, 184, 1, 90, 81, + 88, 35, 32, 176, 141, 68, 35, 89, 32, 176, 237, 81, 88, 35, 32, 176, 77, 68, 35, 89, + 32, 176, 4, 38, 81, 88, 35, 32, 176, 13, 68, 35, 89, 33, 33, 45, 44, 32, 32, 69, + 24, 104, 68, 32, 176, 1, 96, 32, 69, 176, 70, 118, 104, 138, 69, 96, 68, 45, 44, 1, + 177, 11, 10, 67, 35, 67, 101, 10, 45, 44, 0, 177, 10, 11, 67, 35, 67, 11, 45, 44, + 0, 176, 40, 35, 112, 177, 1, 40, 62, 1, 176, 40, 35, 112, 177, 2, 40, 69, 58, 177, + 2, 0, 8, 13, 45, 44, 32, 69, 176, 3, 37, 69, 97, 100, 176, 80, 81, 88, 69, 68, + 27, 33, 33, 89, 45, 44, 32, 69, 176, 0, 67, 96, 68, 45, 44, 1, 176, 6, 67, 176, + 7, 67, 101, 10, 45, 44, 32, 105, 176, 64, 97, 176, 0, 139, 32, 177, 44, 192, 138, 140, + 184, 16, 0, 98, 96, 43, 12, 100, 35, 100, 97, 92, 88, 176, 3, 97, 89, 45, 44, 138, + 3, 69, 138, 138, 135, 176, 17, 43, 176, 41, 35, 68, 176, 41, 122, 228, 24, 45, 44, 69, + 101, 176, 44, 35, 68, 69, 176, 43, 35, 68, 45, 44, 75, 82, 88, 69, 68, 27, 33, 33, + 89, 45, 44, 1, 176, 5, 37, 16, 35, 32, 138, 245, 0, 176, 1, 96, 35, 237, 236, 45, + 44, 1, 176, 5, 37, 16, 35, 32, 138, 245, 0, 176, 1, 97, 35, 237, 236, 45, 44, 1, + 176, 6, 37, 16, 245, 0, 237, 236, 45, 44, 32, 176, 1, 96, 1, 16, 32, 60, 0, 60, + 45, 44, 32, 176, 1, 97, 1, 16, 32, 60, 0, 60, 45, 44, 0, 176, 7, 67, 176, 6, + 67, 11, 45, 44, 33, 33, 12, 100, 35, 100, 139, 184, 64, 0, 98, 45, 44, 33, 176, 128, + 81, 88, 12, 100, 35, 100, 139, 184, 32, 0, 98, 27, 178, 0, 64, 47, 43, 89, 176, 2, + 96, 45, 44, 33, 176, 192, 81, 88, 12, 100, 35, 100, 139, 184, 21, 85, 98, 27, 178, 0, + 128, 47, 43, 89, 176, 2, 96, 45, 44, 12, 100, 35, 100, 139, 184, 64, 0, 98, 96, 35, + 33, 45, 44, 69, 35, 69, 96, 35, 69, 96, 35, 69, 96, 35, 118, 104, 24, 176, 128, 98, + 32, 45, 44, 176, 4, 38, 176, 4, 38, 176, 4, 37, 176, 4, 37, 69, 35, 69, 32, 176, + 3, 38, 96, 98, 99, 104, 32, 176, 3, 38, 97, 101, 138, 35, 68, 68, 45, 44, 32, 69, + 176, 0, 84, 88, 176, 64, 68, 32, 69, 176, 64, 97, 68, 27, 33, 33, 89, 45, 44, 69, + 177, 48, 47, 69, 35, 69, 97, 96, 176, 1, 96, 105, 68, 45, 44, 75, 81, 88, 176, 47, + 35, 112, 176, 20, 35, 66, 27, 33, 33, 89, 45, 44, 75, 81, 88, 32, 176, 3, 37, 69, + 105, 83, 88, 68, 27, 33, 33, 89, 27, 33, 33, 89, 45, 44, 69, 176, 20, 67, 176, 0, + 96, 99, 176, 1, 96, 105, 68, 45, 44, 176, 47, 69, 68, 45, 44, 69, 35, 32, 69, 138, + 96, 68, 45, 44, 69, 35, 69, 96, 68, 45, 44, 75, 35, 81, 88, 185, 0, 51, 255, 224, + 177, 52, 32, 27, 179, 51, 0, 52, 0, 89, 68, 68, 45, 44, 176, 22, 67, 88, 176, 3, + 38, 69, 138, 88, 100, 102, 176, 31, 96, 27, 100, 176, 32, 96, 102, 32, 88, 27, 33, 176, + 64, 89, 176, 1, 97, 89, 35, 88, 101, 89, 176, 41, 35, 68, 35, 16, 176, 41, 224, 27, + 33, 33, 33, 33, 33, 89, 45, 44, 176, 22, 67, 88, 176, 4, 37, 69, 100, 176, 32, 96, + 102, 32, 88, 27, 33, 176, 64, 89, 176, 1, 97, 35, 88, 101, 89, 176, 41, 35, 68, 176, + 4, 37, 176, 7, 37, 8, 32, 88, 2, 27, 3, 89, 176, 5, 37, 16, 176, 4, 37, 32, + 70, 176, 4, 37, 35, 66, 60, 176, 7, 37, 16, 176, 6, 37, 32, 70, 176, 4, 37, 176, + 1, 96, 35, 66, 60, 32, 88, 1, 27, 0, 89, 176, 5, 37, 16, 176, 4, 37, 176, 41, + 224, 176, 7, 37, 16, 176, 6, 37, 176, 41, 224, 176, 4, 37, 176, 7, 37, 8, 32, 88, + 2, 27, 3, 89, 176, 4, 37, 176, 3, 37, 67, 72, 176, 6, 37, 176, 3, 37, 176, 1, + 96, 67, 72, 27, 33, 89, 33, 33, 33, 33, 33, 33, 33, 45, 44, 176, 22, 67, 88, 176, + 4, 37, 69, 100, 176, 32, 96, 102, 32, 88, 27, 33, 176, 64, 89, 176, 1, 97, 35, 88, + 27, 101, 89, 176, 41, 35, 68, 176, 5, 37, 176, 8, 37, 8, 32, 88, 2, 27, 3, 89, + 176, 4, 37, 16, 176, 5, 37, 32, 70, 176, 4, 37, 35, 66, 60, 176, 4, 37, 176, 7, + 37, 8, 176, 7, 37, 16, 176, 6, 37, 32, 70, 176, 4, 37, 176, 1, 96, 35, 66, 60, + 32, 88, 1, 27, 0, 89, 176, 4, 37, 16, 176, 5, 37, 176, 41, 224, 176, 41, 32, 69, + 101, 68, 176, 7, 37, 16, 176, 6, 37, 176, 41, 224, 176, 5, 37, 176, 8, 37, 8, 32, + 88, 2, 27, 3, 89, 176, 5, 37, 176, 3, 37, 67, 72, 176, 4, 37, 176, 7, 37, 8, + 176, 6, 37, 176, 3, 37, 176, 1, 96, 67, 72, 27, 33, 89, 33, 33, 33, 33, 33, 33, + 33, 45, 44, 2, 176, 4, 37, 32, 32, 70, 176, 4, 37, 35, 66, 176, 5, 37, 8, 176, + 3, 37, 69, 72, 33, 33, 33, 33, 45, 44, 2, 176, 3, 37, 32, 176, 4, 37, 8, 176, + 2, 37, 67, 72, 33, 33, 33, 45, 44, 69, 35, 32, 69, 24, 32, 176, 0, 80, 32, 88, + 35, 101, 35, 89, 35, 104, 32, 176, 64, 80, 88, 33, 176, 64, 89, 35, 88, 101, 89, 138, + 96, 68, 45, 44, 75, 83, 35, 75, 81, 90, 88, 32, 69, 138, 96, 68, 27, 33, 33, 89, + 45, 44, 75, 84, 88, 32, 69, 138, 96, 68, 27, 33, 33, 89, 45, 44, 75, 83, 35, 75, + 81, 90, 88, 56, 27, 33, 33, 89, 45, 44, 75, 84, 88, 56, 27, 33, 33, 89, 45, 44, + 176, 2, 67, 84, 88, 176, 70, 43, 27, 33, 33, 33, 33, 89, 45, 44, 176, 2, 67, 84, + 88, 176, 71, 43, 27, 33, 33, 33, 89, 45, 44, 176, 2, 67, 84, 88, 176, 72, 43, 27, + 33, 33, 33, 33, 89, 45, 44, 176, 2, 67, 84, 88, 176, 73, 43, 27, 33, 33, 33, 89, + 45, 44, 32, 138, 8, 35, 75, 83, 138, 75, 81, 90, 88, 35, 56, 27, 33, 33, 89, 45, + 44, 0, 32, 138, 73, 176, 0, 81, 88, 176, 64, 35, 32, 138, 56, 18, 52, 27, 33, 33, + 89, 45, 44, 1, 70, 35, 70, 96, 35, 70, 97, 35, 32, 16, 32, 70, 138, 97, 184, 255, + 128, 98, 138, 177, 64, 64, 138, 112, 69, 96, 104, 58, 45, 44, 32, 138, 35, 73, 100, 138, + 35, 83, 88, 60, 27, 33, 89, 45, 44, 75, 82, 88, 125, 27, 122, 89, 45, 44, 176, 18, + 0, 75, 1, 75, 84, 66, 45, 44, 177, 2, 0, 66, 177, 35, 1, 136, 81, 177, 64, 1, + 136, 83, 90, 88, 185, 16, 0, 0, 32, 136, 84, 88, 177, 2, 1, 66, 89, 89, 45, 44, + 69, 24, 104, 35, 75, 81, 88, 35, 32, 69, 32, 100, 176, 64, 80, 88, 124, 89, 104, 138, + 96, 89, 68, 45, 44, 176, 0, 22, 176, 2, 37, 176, 2, 37, 1, 176, 1, 35, 62, 0, + 176, 2, 35, 62, 177, 1, 2, 6, 12, 176, 10, 35, 101, 66, 176, 11, 35, 66, 1, 176, + 1, 35, 63, 0, 176, 2, 35, 63, 177, 1, 2, 6, 12, 176, 6, 35, 101, 66, 176, 7, + 35, 66, 176, 1, 22, 1, 45, 0, 1, 244, 0, 50, 0, 0, 0, 0, 0, 0, 0, 181, + 0, 129, 0, 27, 0, 54, 0, 18, 0, 31, 0, 206, 0, 113, 0, 113, 0, 57, 0, 46, + 0, 149, 0, 140, 0, 177, 0, 69, 0, 46, 0, 75, 0, 57, 0, 59, 0, 36, 0, 66, + 0, 54, 0, 63, 0, 51, 0, 51, 0, 177, 0, 125, 0, 49, 0, 46, 0, 49, 0, 92, + 0, 40, 0, 9, 0, 54, 0, 46, 0, 54, 0, 91, 0, 91, 0, 46, 0, 45, 0, 89, + 0, 54, 0, 64, 0, 91, 0, 32, 0, 55, 0, 29, 0, 73, 0, 29, 0, 55, 0, 55, + 0, 39, 0, 48, 0, 13, 0, 32, 0, 25, 0, 13, 0, 54, 0, 143, 0, 70, 0, 118, + 0, 40, 0, 8, 0, 163, 0, 58, 0, 71, 0, 49, 0, 40, 0, 40, 0, 63, 0, 40, + 0, 71, 0, 54, 0, 71, 0, 71, 0, 54, 0, 41, 0, 71, 0, 40, 0, 71, 0, 40, + 0, 107, 0, 66, 0, 63, 0, 68, 0, 30, 0, 19, 0, 29, 0, 36, 0, 73, 0, 79, + 0, 212, 0, 73, 0, 37, 0, 36, 0, 148, 0, 7, 0, 42, 0, 31, 0, 72, 0, 72, + 0, 129, 0, 9, 0, 55, 0, 144, 0, 27, 0, 149, 0, 148, 0, 43, 0, 42, 0, 114, + 0, 69, 0, 0, 0, 112, 0, 18, 0, 66, 0, 159, 0, 31, 0, 13, 0, 0, 0, 182, + 0, 49, 0, 45, 0, 38, 0, 13, 0, 212, 0, 68, 0, 113, 0, 34, 0, 118, 0, 63, + 0, 41, 0, 140, 0, 34, 0, 123, 0, 125, 0, 46, 0, 124, 0, 126, 0, 170, 0, 71, + 0, 28, 0, 177, 0, 156, 0, 126, 0, 89, 0, 85, 0, 18, 0, 17, 0, 21, 0, 92, + 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 9, 0, 27, 0, 46, 0, 91, 0, 91, + 0, 91, 0, 91, 0, 89, 0, 89, 0, 89, 0, 89, 0, 18, 0, 55, 0, 29, 0, 29, + 0, 29, 0, 29, 0, 29, 0, 70, 0, 29, 0, 48, 0, 48, 0, 48, 0, 48, 0, 13, + 0, 73, 0, 71, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 58, 0, 31, 0, 49, + 0, 40, 0, 40, 0, 40, 0, 40, 0, 54, 0, 54, 0, 54, 0, 54, 0, 55, 0, 71, + 0, 40, 0, 40, 0, 40, 0, 40, 0, 40, 0, 46, 0, 40, 0, 68, 0, 68, 0, 68, + 0, 68, 0, 36, 0, 71, 0, 36, 0, 9, 0, 58, 0, 9, 0, 58, 0, 9, 0, 58, + 0, 46, 0, 49, 0, 46, 0, 49, 0, 46, 0, 49, 0, 46, 0, 49, 0, 54, 0, 20, + 0, 18, 0, 40, 0, 91, 0, 40, 0, 91, 0, 40, 0, 91, 0, 40, 0, 91, 0, 40, + 0, 91, 0, 40, 0, 46, 0, 40, 0, 46, 0, 40, 0, 46, 0, 40, 0, 46, 0, 40, + 0, 45, 0, 44, 0, 18, 0, 20, 0, 89, 0, 54, 0, 89, 0, 54, 0, 89, 0, 54, + 0, 89, 0, 54, 0, 89, 0, 54, 0, 54, 0, 42, 0, 89, 0, 54, 0, 71, 0, 64, + 0, 71, 0, 64, 0, 71, 0, 91, 0, 54, 0, 91, 0, 54, 0, 91, 0, 54, 0, 91, + 0, 54, 0, 18, 0, 54, 0, 55, 0, 71, 0, 55, 0, 71, 0, 55, 0, 71, 0, 29, + 0, 11, 0, 55, 0, 71, 0, 29, 0, 40, 0, 29, 0, 40, 0, 29, 0, 40, 0, 55, + 0, 107, 0, 55, 0, 42, 0, 55, 0, 107, 0, 55, 0, 66, 0, 55, 0, 66, 0, 55, + 0, 66, 0, 39, 0, 63, 0, 39, 0, 63, 0, 39, 0, 63, 0, 48, 0, 68, 0, 48, + 0, 68, 0, 48, 0, 68, 0, 48, 0, 68, 0, 48, 0, 68, 0, 48, 0, 68, 0, 32, + 0, 19, 0, 13, 0, 36, 0, 54, 0, 73, 0, 54, 0, 73, 0, 54, 0, 73, 0, 161, + 0, 55, 0, 66, 0, 39, 0, 63, 0, 71, 0, 196, 0, 129, 0, 123, 0, 130, 0, 190, + 0, 158, 0, 171, 0, 100, 0, 32, 0, 19, 0, 32, 0, 19, 0, 32, 0, 19, 0, 13, + 0, 36, 0, 25, 0, 116, 0, 105, 0, 127, 0, 125, 0, 134, 0, 119, 0, 132, 0, 116, + 0, 126, 0, 124, 0, 126, 0, 105, 0, 127, 0, 125, 0, 134, 0, 119, 0, 132, 0, 53, + 0, 27, 0, 12, 0, 21, 255, 255, 0, 11, 0, 11, 0, 11, 0, 11, 0, 21, 0, 19, + 0, 15, 255, 255, 0, 28, 255, 255, 0, 21, 0, 19, 0, 15, 0, 13, 0, 21, 255, 255, + 0, 21, 0, 15, 0, 13, 0, 11, 0, 19, 0, 38, 0, 9, 0, 58, 0, 49, 0, 18, + 0, 46, 0, 25, 0, 177, 0, 29, 0, 30, 0, 75, 0, 37, 0, 46, 0, 46, 0, 46, + 0, 39, 0, 28, 0, 28, 0, 28, 0, 28, 0, 116, 0, 135, 0, 124, 0, 128, 0, 105, + 0, 119, 0, 117, 0, 126, 0, 119, 0, 124, 0, 116, 0, 135, 0, 124, 0, 128, 0, 105, + 0, 119, 0, 117, 0, 126, 0, 119, 0, 124, 0, 210, 0, 171, 0, 185, 0, 210, 0, 113, + 0, 113, 0, 140, 0, 69, 0, 40, 0, 143, 0, 70, 0, 118, 0, 79, 0, 73, 0, 144, + 0, 114, 0, 69, 0, 0, 0, 159, 0, 182, 0, 63, 0, 85, 0, 92, 0, 20, 0, 18, + 0, 54, 0, 71, 0, 11, 0, 9, 0, 42, 0, 46, 0, 49, 0, 18, 0, 18, 0, 49, + 0, 40, 0, 39, 0, 40, 0, 25, 0, 40, 0, 3, 0, 46, 0, 13, 0, 36, 0, 68, + 0, 89, 0, 64, 0, 71, 0, 54, 0, 29, 0, 45, 255, 207, 0, 71, 0, 29, 0, 29, + 0, 40, 0, 45, 0, 27, 0, 18, 0, 71, 0, 55, 0, 55, 0, 65, 0, 40, 0, 43, + 0, 63, 0, 18, 0, 63, 0, 39, 0, 48, 0, 68, 0, 18, 0, 45, 0, 13, 0, 19, + 0, 54, 0, 73, 0, 24, 0, 67, 0, 63, 0, 49, 0, 57, 0, 40, 0, 58, 0, 62, + 0, 71, 0, 212, 0, 121, 0, 35, 0, 181, 0, 27, 0, 27, 0, 5, 0, 36, 0, 54, + 0, 99, 0, 36, 0, 36, 0, 36, 0, 9, 0, 58, 0, 89, 0, 54, 0, 29, 0, 40, + 0, 48, 0, 68, 0, 48, 0, 68, 0, 48, 0, 68, 0, 48, 0, 68, 0, 48, 0, 68, + 0, 45, 0, 9, 0, 58, 0, 9, 0, 58, 0, 27, 0, 31, 0, 46, 0, 40, 0, 46, + 0, 40, 0, 64, 0, 43, 0, 29, 0, 40, 0, 29, 0, 40, 0, 24, 0, 44, 0, 71, + 0, 27, 0, 27, 0, 5, 0, 46, 0, 40, 0, 36, 0, 73, 0, 55, 0, 71, 0, 9, + 0, 58, 0, 27, 0, 31, 0, 29, 0, 40, 0, 9, 0, 58, 0, 9, 0, 58, 0, 91, + 0, 40, 0, 91, 0, 40, 0, 83, 0, 47, 0, 89, 0, 54, 0, 29, 0, 40, 0, 29, + 0, 40, 0, 55, 0, 83, 0, 55, 0, 107, 0, 48, 0, 68, 0, 48, 0, 68, 0, 30, + 0, 57, 0, 45, 0, 44, 0, 45, 0, 25, 0, 36, 0, 33, 0, 54, 0, 73, 0, 9, + 0, 58, 0, 91, 0, 40, 0, 30, 0, 40, 0, 30, 0, 40, 0, 29, 0, 40, 0, 30, + 0, 40, 0, 13, 0, 36, 0, 54, 0, 37, 0, 63, 0, 27, 0, 27, 0, 9, 0, 46, + 0, 40, 0, 36, 0, 18, 0, 63, 0, 74, 0, 68, 0, 85, 0, 18, 0, 18, 0, 9, + 0, 91, 0, 38, 0, 54, 0, 71, 0, 29, 0, 40, 0, 18, 0, 33, 0, 21, 0, 42, + 0, 44, 0, 130, 0, 100, 0, 167, 0, 112, 0, 137, 0, 107, 0, 107, 0, 107, 0, 113, + 0, 80, 0, 80, 0, 80, 0, 91, 0, 91, 0, 18, 0, 54, 0, 38, 0, 55, 0, 90, + 0, 90, 0, 54, 0, 9, 0, 45, 0, 18, 0, 64, 0, 55, 0, 9, 0, 49, 0, 9, + 0, 54, 0, 54, 0, 54, 0, 18, 0, 91, 0, 4, 0, 38, 0, 55, 0, 55, 0, 64, + 0, 13, 0, 32, 0, 45, 0, 29, 0, 45, 0, 73, 0, 46, 0, 39, 0, 9, 0, 42, + 0, 25, 0, 45, 0, 54, 0, 45, 0, 45, 0, 18, 0, 36, 0, 45, 0, 46, 0, 45, + 0, 57, 0, 58, 0, 45, 0, 71, 0, 107, 0, 27, 0, 40, 0, 7, 0, 72, 0, 63, + 0, 63, 0, 71, 0, 13, 0, 27, 0, 71, 0, 40, 0, 71, 0, 71, 0, 49, 0, 58, + 0, 36, 0, 26, 0, 29, 0, 71, 0, 54, 0, 45, 0, 45, 0, 18, 0, 45, 0, 71, + 0, 59, 0, 54, 0, 40, 0, 40, 0, 40, 0, 20, 0, 107, 0, 49, 0, 66, 0, 54, + 0, 54, 0, 71, 0, 13, 0, 54, 0, 20, 0, 71, 0, 63, 0, 36, 0, 71, 0, 39, + 0, 18, 0, 18, 0, 29, 0, 40, 0, 13, 0, 30, 0, 55, 0, 63, 0, 18, 0, 18, + 0, 73, 0, 71, 0, 54, 0, 107, 0, 54, 0, 33, 0, 45, 0, 71, 0, 4, 0, 7, + 0, 38, 0, 72, 0, 64, 0, 71, 0, 48, 0, 54, 0, 18, 0, 18, 0, 18, 0, 17, + 0, 45, 0, 71, 0, 45, 0, 71, 0, 54, 0, 54, 0, 29, 0, 40, 0, 46, 0, 49, + 0, 39, 0, 58, 0, 13, 0, 30, 0, 13, 0, 30, 0, 25, 0, 29, 0, 18, 0, 18, + 0, 54, 0, 54, 0, 54, 0, 54, 0, 45, 0, 71, 0, 18, 0, 18, 0, 18, 0, 18, + 0, 89, 0, 4, 0, 7, 0, 46, 0, 71, 0, 13, 0, 13, 0, 45, 0, 71, 0, 45, + 0, 71, 0, 54, 0, 54, 0, 32, 0, 27, 0, 89, 0, 9, 0, 58, 0, 9, 0, 58, + 0, 27, 0, 31, 0, 91, 0, 40, 0, 25, 0, 45, 0, 25, 0, 45, 0, 4, 0, 7, + 0, 38, 0, 72, 0, 24, 0, 44, 0, 55, 0, 63, 0, 55, 0, 63, 0, 29, 0, 40, + 0, 29, 0, 40, 0, 29, 0, 40, 0, 46, 0, 59, 0, 9, 0, 36, 0, 9, 0, 36, + 0, 9, 0, 36, 0, 54, 0, 54, 0, 54, 0, 107, 0, 36, 0, 45, 0, 36, 0, 0, + 0, 31, 0, 33, 0, 116, 0, 9, 0, 54, 0, 54, 0, 9, 0, 91, 0, 54, 0, 45, + 0, 29, 0, 89, 0, 64, 0, 9, 0, 34, 0, 55, 0, 37, 0, 29, 0, 45, 0, 73, + 0, 40, 0, 36, 0, 13, 0, 42, 0, 22, 0, 43, 0, 18, 0, 49, 0, 71, 0, 29, + 0, 39, 0, 69, 0, 63, 0, 71, 0, 49, 0, 54, 0, 71, 0, 29, 0, 71, 0, 30, + 0, 64, 0, 40, 0, 71, 0, 71, 0, 63, 0, 40, 0, 63, 0, 71, 0, 26, 0, 29, + 0, 37, 0, 36, 0, 9, 255, 188, 255, 136, 255, 182, 0, 89, 255, 184, 255, 126, 0, 13, + 255, 182, 0, 49, 0, 69, 0, 71, 0, 54, 0, 54, 0, 38, 0, 40, 0, 71, 0, 71, + 0, 71, 0, 36, 0, 164, 0, 206, 0, 64, 0, 49, 0, 49, 0, 49, 0, 49, 0, 49, + 0, 49, 0, 49, 0, 49, 0, 6, 255, 245, 255, 69, 255, 88, 255, 120, 255, 98, 255, 174, + 255, 164, 0, 69, 0, 69, 0, 69, 0, 69, 0, 69, 0, 69, 255, 177, 255, 181, 255, 7, + 255, 25, 255, 26, 255, 7, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, + 0, 71, 255, 131, 255, 136, 254, 217, 254, 234, 254, 236, 254, 217, 255, 26, 255, 26, 0, 54, + 0, 54, 0, 54, 0, 54, 0, 54, 0, 54, 0, 54, 0, 54, 255, 176, 255, 180, 255, 6, + 255, 24, 255, 25, 255, 6, 255, 72, 255, 72, 0, 40, 0, 40, 0, 40, 0, 40, 0, 40, + 0, 40, 255, 162, 255, 134, 254, 214, 254, 232, 255, 25, 255, 4, 0, 71, 0, 71, 0, 71, + 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 255, 133, 254, 243, 254, 196, 254, 255, 0, 36, + 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 255, 159, 255, 132, 254, 213, + 254, 231, 255, 23, 255, 2, 255, 86, 255, 60, 0, 49, 0, 49, 0, 69, 0, 69, 0, 71, + 0, 71, 0, 54, 0, 54, 0, 40, 0, 40, 0, 71, 0, 71, 0, 36, 0, 36, 0, 49, + 0, 49, 0, 49, 0, 49, 0, 49, 0, 49, 0, 49, 0, 49, 255, 185, 255, 168, 254, 248, + 255, 11, 255, 43, 255, 22, 255, 96, 255, 87, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, + 0, 71, 0, 71, 0, 71, 255, 131, 255, 131, 254, 217, 254, 234, 254, 236, 254, 217, 255, 26, + 255, 26, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 255, 150, + 255, 123, 254, 204, 254, 222, 255, 14, 254, 249, 255, 68, 255, 42, 0, 49, 0, 49, 0, 49, + 0, 49, 0, 49, 0, 49, 0, 49, 0, 9, 0, 9, 255, 191, 255, 226, 0, 9, 0, 185, + 0, 179, 0, 185, 0, 130, 0, 112, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 255, 132, + 255, 134, 255, 85, 255, 89, 0, 45, 0, 96, 0, 106, 0, 131, 0, 54, 0, 54, 0, 38, + 0, 54, 0, 54, 0, 54, 0, 89, 0, 89, 255, 131, 255, 133, 0, 105, 0, 96, 0, 131, + 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 0, 71, 0, 13, 0, 13, + 255, 102, 255, 66, 255, 164, 0, 73, 0, 73, 0, 152, 0, 36, 0, 36, 0, 36, 0, 36, + 0, 36, 255, 112, 255, 156, 255, 110, 255, 154, 0, 18, 0, 152, 0, 185, 0, 6, 255, 245, + 255, 69, 255, 88, 255, 120, 255, 98, 255, 174, 255, 164, 255, 131, 255, 136, 254, 217, 254, 234, + 254, 236, 254, 217, 255, 26, 255, 26, 255, 159, 255, 132, 254, 213, 254, 231, 255, 23, 255, 2, + 255, 86, 255, 60, 0, 9, 0, 45, 0, 18, 0, 63, 0, 58, 255, 91, 0, 4, 0, 9, + 0, 0, 0, 210, 0, 210, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, + 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 210, 0, 130, + 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 130, 0, 0, + 0, 0, 0, 130, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1, 116, 4, 106, 0, 3, + 99, 121, 114, 108, 0, 238, 103, 114, 101, 107, 0, 206, 108, 97, 116, 110, 0, 20, 0, 156, + 0, 5, 65, 90, 69, 32, 0, 130, 67, 82, 84, 32, 0, 104, 77, 79, 76, 32, 0, 82, + 82, 79, 77, 32, 0, 60, 84, 82, 75, 32, 0, 34, 0, 0, 255, 255, 0, 10, 0, 10, + 0, 19, 0, 30, 0, 41, 0, 47, 0, 58, 0, 72, 0, 85, 0, 96, 0, 107, 0, 0, + 255, 255, 0, 8, 0, 9, 0, 29, 0, 40, 0, 57, 0, 71, 0, 84, 0, 95, 0, 106, + 0, 0, 255, 255, 0, 8, 0, 8, 0, 28, 0, 39, 0, 56, 0, 70, 0, 83, 0, 94, + 0, 105, 0, 0, 255, 255, 0, 10, 0, 7, 0, 18, 0, 27, 0, 38, 0, 46, 0, 55, + 0, 69, 0, 82, 0, 93, 0, 104, 0, 0, 255, 255, 0, 10, 0, 6, 0, 17, 0, 26, + 0, 37, 0, 45, 0, 54, 0, 68, 0, 81, 0, 92, 0, 103, 0, 0, 255, 255, 0, 12, + 0, 5, 0, 16, 0, 25, 0, 36, 0, 53, 0, 59, 0, 61, 0, 67, 0, 74, 0, 80, + 0, 91, 0, 102, 0, 4, 0, 0, 0, 0, 255, 255, 0, 11, 0, 4, 0, 15, 0, 24, + 0, 35, 0, 52, 0, 60, 0, 66, 0, 73, 0, 79, 0, 90, 0, 101, 0, 100, 0, 3, + 66, 71, 82, 32, 0, 74, 77, 75, 68, 32, 0, 48, 83, 82, 66, 32, 0, 22, 0, 0, + 255, 255, 0, 10, 0, 3, 0, 14, 0, 23, 0, 34, 0, 44, 0, 51, 0, 65, 0, 78, + 0, 89, 0, 100, 0, 0, 255, 255, 0, 10, 0, 2, 0, 13, 0, 22, 0, 33, 0, 43, + 0, 50, 0, 64, 0, 77, 0, 88, 0, 99, 0, 0, 255, 255, 0, 10, 0, 1, 0, 12, + 0, 21, 0, 32, 0, 42, 0, 49, 0, 63, 0, 76, 0, 87, 0, 98, 0, 0, 255, 255, + 0, 9, 0, 0, 0, 11, 0, 20, 0, 31, 0, 48, 0, 62, 0, 75, 0, 86, 0, 97, + 0, 108, 97, 102, 114, 99, 2, 236, 97, 102, 114, 99, 2, 236, 97, 102, 114, 99, 2, 236, + 97, 102, 114, 99, 2, 236, 97, 102, 114, 99, 2, 236, 97, 102, 114, 99, 2, 236, 97, 102, + 114, 99, 2, 236, 97, 102, 114, 99, 2, 236, 97, 102, 114, 99, 2, 236, 97, 102, 114, 99, + 2, 236, 97, 102, 114, 99, 2, 236, 99, 97, 115, 101, 2, 228, 99, 97, 115, 101, 2, 228, + 99, 97, 115, 101, 2, 228, 99, 97, 115, 101, 2, 228, 99, 97, 115, 101, 2, 228, 99, 97, + 115, 101, 2, 228, 99, 97, 115, 101, 2, 228, 99, 97, 115, 101, 2, 228, 99, 97, 115, 101, + 2, 228, 100, 110, 111, 109, 2, 222, 100, 110, 111, 109, 2, 222, 100, 110, 111, 109, 2, 222, + 100, 110, 111, 109, 2, 222, 100, 110, 111, 109, 2, 222, 100, 110, 111, 109, 2, 222, 100, 110, + 111, 109, 2, 222, 100, 110, 111, 109, 2, 222, 100, 110, 111, 109, 2, 222, 100, 110, 111, 109, + 2, 222, 100, 110, 111, 109, 2, 222, 102, 114, 97, 99, 2, 214, 102, 114, 97, 99, 2, 214, + 102, 114, 97, 99, 2, 214, 102, 114, 97, 99, 2, 214, 102, 114, 97, 99, 2, 214, 102, 114, + 97, 99, 2, 214, 102, 114, 97, 99, 2, 214, 102, 114, 97, 99, 2, 214, 102, 114, 97, 99, + 2, 214, 102, 114, 97, 99, 2, 214, 102, 114, 97, 99, 2, 214, 108, 111, 99, 108, 2, 208, + 108, 111, 99, 108, 2, 202, 108, 111, 99, 108, 2, 196, 108, 111, 99, 108, 2, 190, 108, 111, + 99, 108, 2, 184, 108, 111, 99, 108, 2, 178, 110, 117, 109, 114, 2, 172, 110, 117, 109, 114, + 2, 172, 110, 117, 109, 114, 2, 172, 110, 117, 109, 114, 2, 172, 110, 117, 109, 114, 2, 172, + 110, 117, 109, 114, 2, 172, 110, 117, 109, 114, 2, 172, 110, 117, 109, 114, 2, 172, 110, 117, + 109, 114, 2, 172, 110, 117, 109, 114, 2, 172, 110, 117, 109, 114, 2, 172, 111, 114, 100, 110, + 2, 166, 115, 97, 108, 116, 2, 156, 115, 97, 108, 116, 2, 156, 115, 105, 110, 102, 2, 150, + 115, 105, 110, 102, 2, 150, 115, 105, 110, 102, 2, 150, 115, 105, 110, 102, 2, 150, 115, 105, + 110, 102, 2, 150, 115, 105, 110, 102, 2, 150, 115, 105, 110, 102, 2, 150, 115, 105, 110, 102, + 2, 150, 115, 105, 110, 102, 2, 150, 115, 105, 110, 102, 2, 150, 115, 105, 110, 102, 2, 150, + 115, 115, 48, 49, 2, 156, 115, 115, 48, 49, 2, 156, 115, 115, 48, 50, 2, 236, 115, 115, + 48, 50, 2, 236, 115, 115, 48, 50, 2, 236, 115, 115, 48, 50, 2, 236, 115, 115, 48, 50, + 2, 236, 115, 115, 48, 50, 2, 236, 115, 115, 48, 50, 2, 236, 115, 115, 48, 50, 2, 236, + 115, 115, 48, 50, 2, 236, 115, 115, 48, 50, 2, 236, 115, 115, 48, 50, 2, 236, 115, 117, + 98, 115, 2, 144, 115, 117, 98, 115, 2, 144, 115, 117, 98, 115, 2, 144, 115, 117, 98, 115, + 2, 144, 115, 117, 98, 115, 2, 144, 115, 117, 98, 115, 2, 144, 115, 117, 98, 115, 2, 144, + 115, 117, 98, 115, 2, 144, 115, 117, 98, 115, 2, 144, 115, 117, 98, 115, 2, 144, 115, 117, + 98, 115, 2, 144, 115, 117, 112, 115, 2, 138, 115, 117, 112, 115, 2, 138, 115, 117, 112, 115, + 2, 138, 115, 117, 112, 115, 2, 138, 115, 117, 112, 115, 2, 138, 115, 117, 112, 115, 2, 138, + 115, 117, 112, 115, 2, 138, 115, 117, 112, 115, 2, 138, 115, 117, 112, 115, 2, 138, 115, 117, + 112, 115, 2, 138, 115, 117, 112, 115, 2, 138, 0, 0, 0, 1, 0, 9, 0, 0, 0, 1, + 0, 10, 0, 0, 0, 1, 0, 11, 0, 0, 0, 3, 0, 19, 0, 20, 0, 21, 0, 0, + 0, 1, 0, 7, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, + 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 5, 0, 0, 0, 1, 0, 4, + 0, 0, 0, 1, 0, 3, 0, 0, 0, 2, 0, 12, 0, 13, 0, 0, 0, 1, 0, 8, + 0, 0, 0, 2, 0, 17, 0, 18, 0, 0, 0, 3, 0, 14, 0, 15, 0, 16, 0, 23, + 11, 180, 11, 180, 11, 180, 11, 160, 11, 160, 11, 160, 11, 44, 11, 18, 10, 146, 10, 18, + 9, 146, 9, 146, 9, 120, 3, 150, 9, 120, 11, 44, 3, 86, 2, 240, 0, 226, 0, 178, + 0, 130, 0, 82, 0, 48, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 3, 56, 0, 10, + 1, 120, 1, 121, 1, 119, 1, 118, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, + 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 24, 0, 9, 4, 205, 4, 206, 4, 207, + 4, 208, 4, 209, 4, 210, 4, 211, 4, 212, 4, 215, 0, 2, 0, 2, 4, 110, 4, 117, + 0, 0, 4, 186, 4, 186, 0, 8, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 24, + 0, 9, 4, 197, 4, 198, 4, 199, 4, 200, 4, 201, 4, 202, 4, 203, 4, 204, 4, 214, + 0, 2, 0, 2, 4, 94, 4, 101, 0, 0, 4, 144, 4, 144, 0, 8, 0, 1, 0, 0, + 0, 1, 0, 8, 0, 2, 0, 24, 0, 9, 4, 189, 4, 190, 4, 191, 4, 192, 4, 193, + 4, 194, 4, 195, 4, 196, 4, 213, 0, 2, 0, 2, 4, 78, 4, 85, 0, 0, 4, 129, + 4, 129, 0, 8, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 1, 4, 0, 127, 0, 36, + 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, + 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, + 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 107, 0, 109, 0, 155, 0, 156, 0, 157, + 0, 158, 0, 159, 0, 160, 0, 161, 0, 162, 0, 163, 0, 164, 0, 165, 0, 166, 0, 167, + 0, 168, 0, 169, 0, 170, 0, 171, 0, 172, 0, 173, 0, 174, 0, 175, 0, 176, 0, 177, + 0, 179, 0, 180, 0, 181, 0, 182, 0, 183, 0, 184, 0, 185, 0, 122, 0, 219, 0, 221, + 0, 223, 0, 225, 0, 227, 0, 229, 0, 231, 0, 233, 0, 235, 0, 237, 0, 239, 0, 241, + 0, 243, 0, 245, 0, 247, 0, 249, 0, 251, 0, 253, 0, 255, 1, 1, 1, 3, 1, 5, + 1, 7, 1, 9, 1, 11, 1, 14, 1, 16, 1, 18, 1, 20, 1, 22, 1, 24, 1, 26, + 1, 28, 1, 30, 1, 32, 1, 34, 1, 36, 1, 38, 1, 40, 1, 42, 1, 44, 1, 46, + 1, 48, 1, 50, 1, 52, 1, 54, 1, 56, 1, 58, 1, 60, 1, 62, 1, 64, 1, 66, + 1, 68, 1, 70, 1, 72, 1, 74, 1, 76, 1, 78, 1, 80, 1, 82, 1, 84, 1, 86, + 1, 89, 1, 91, 1, 102, 1, 104, 1, 106, 1, 108, 0, 1, 0, 127, 0, 68, 0, 69, + 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, + 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, + 0, 90, 0, 91, 0, 92, 0, 93, 0, 119, 0, 121, 0, 187, 0, 188, 0, 189, 0, 190, + 0, 191, 0, 192, 0, 193, 0, 194, 0, 195, 0, 196, 0, 197, 0, 198, 0, 199, 0, 200, + 0, 201, 0, 202, 0, 203, 0, 204, 0, 205, 0, 206, 0, 207, 0, 208, 0, 209, 0, 211, + 0, 212, 0, 213, 0, 214, 0, 215, 0, 216, 0, 217, 0, 218, 0, 220, 0, 222, 0, 224, + 0, 226, 0, 228, 0, 230, 0, 232, 0, 234, 0, 236, 0, 238, 0, 240, 0, 242, 0, 244, + 0, 246, 0, 248, 0, 250, 0, 252, 0, 254, 1, 0, 1, 2, 1, 4, 1, 6, 1, 8, + 1, 10, 1, 13, 1, 15, 1, 17, 1, 19, 1, 21, 1, 23, 1, 25, 1, 27, 1, 29, + 1, 31, 1, 33, 1, 35, 1, 37, 1, 39, 1, 41, 1, 43, 1, 45, 1, 47, 1, 49, + 1, 51, 1, 53, 1, 55, 1, 57, 1, 59, 1, 61, 1, 63, 1, 65, 1, 67, 1, 69, + 1, 71, 1, 73, 1, 75, 1, 77, 1, 79, 1, 81, 1, 83, 1, 85, 1, 87, 1, 90, + 1, 92, 1, 103, 1, 105, 1, 107, 1, 109, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, + 0, 48, 0, 21, 1, 198, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, 1, 204, 1, 205, + 1, 206, 1, 207, 1, 208, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, 1, 214, 1, 215, + 1, 216, 0, 54, 0, 45, 0, 1, 0, 21, 0, 11, 0, 12, 0, 16, 0, 18, 0, 35, + 0, 62, 0, 63, 0, 64, 0, 94, 0, 96, 0, 108, 0, 114, 0, 115, 0, 116, 0, 120, + 0, 124, 0, 134, 0, 150, 0, 154, 1, 88, 1, 93, 0, 6, 0, 0, 0, 1, 0, 8, + 0, 3, 0, 1, 0, 40, 0, 1, 0, 18, 0, 0, 0, 1, 0, 0, 0, 22, 0, 2, + 0, 3, 0, 141, 0, 142, 0, 0, 0, 148, 0, 148, 0, 2, 1, 111, 1, 117, 0, 3, + 0, 2, 0, 2, 1, 110, 1, 110, 0, 0, 1, 118, 1, 127, 0, 1, 0, 4, 0, 0, + 0, 1, 0, 8, 0, 1, 5, 172, 0, 40, 4, 26, 3, 80, 2, 134, 1, 238, 1, 36, + 0, 240, 0, 138, 0, 86, 3, 80, 2, 134, 4, 26, 1, 238, 1, 36, 0, 240, 0, 138, + 0, 86, 4, 26, 3, 80, 2, 134, 1, 238, 1, 36, 0, 240, 0, 138, 0, 86, 4, 26, + 3, 80, 2, 134, 1, 238, 1, 36, 0, 240, 0, 138, 0, 86, 4, 26, 3, 80, 2, 134, + 1, 238, 1, 36, 0, 240, 0, 138, 0, 86, 0, 5, 0, 44, 0, 36, 0, 28, 0, 20, + 0, 12, 1, 153, 0, 3, 1, 110, 1, 193, 1, 153, 0, 3, 1, 110, 1, 183, 1, 153, + 0, 3, 1, 110, 1, 127, 1, 153, 0, 3, 1, 110, 1, 117, 1, 153, 0, 3, 1, 110, + 0, 28, 0, 10, 0, 94, 0, 86, 0, 78, 0, 70, 0, 62, 0, 54, 0, 46, 0, 38, + 0, 30, 0, 22, 1, 152, 0, 3, 1, 110, 1, 193, 1, 135, 0, 3, 1, 110, 1, 192, + 1, 152, 0, 3, 1, 110, 1, 183, 1, 135, 0, 3, 1, 110, 1, 182, 1, 152, 0, 3, + 1, 110, 1, 127, 1, 135, 0, 3, 1, 110, 1, 126, 1, 152, 0, 3, 1, 110, 1, 117, + 1, 135, 0, 3, 1, 110, 1, 116, 1, 152, 0, 3, 1, 110, 0, 28, 1, 135, 0, 3, + 1, 110, 0, 27, 0, 5, 0, 44, 0, 36, 0, 28, 0, 20, 0, 12, 1, 147, 0, 3, + 1, 110, 1, 191, 1, 147, 0, 3, 1, 110, 1, 181, 1, 147, 0, 3, 1, 110, 1, 125, + 1, 147, 0, 3, 1, 110, 1, 115, 1, 147, 0, 3, 1, 110, 0, 26, 0, 20, 0, 194, + 0, 186, 0, 178, 0, 170, 0, 162, 0, 154, 0, 146, 0, 138, 0, 130, 0, 122, 0, 114, + 0, 106, 0, 98, 0, 90, 0, 82, 0, 74, 0, 66, 0, 58, 0, 50, 0, 42, 1, 151, + 0, 3, 1, 110, 1, 193, 1, 134, 0, 3, 1, 110, 1, 192, 1, 146, 0, 3, 1, 110, + 1, 191, 1, 141, 0, 3, 1, 110, 1, 190, 1, 151, 0, 3, 1, 110, 1, 183, 1, 134, + 0, 3, 1, 110, 1, 182, 1, 146, 0, 3, 1, 110, 1, 181, 1, 141, 0, 3, 1, 110, + 1, 180, 1, 151, 0, 3, 1, 110, 1, 127, 1, 134, 0, 3, 1, 110, 1, 126, 1, 146, + 0, 3, 1, 110, 1, 125, 1, 141, 0, 3, 1, 110, 1, 124, 1, 151, 0, 3, 1, 110, + 1, 117, 1, 134, 0, 3, 1, 110, 1, 116, 1, 146, 0, 3, 1, 110, 1, 115, 1, 141, + 0, 3, 1, 110, 1, 114, 1, 151, 0, 3, 1, 110, 0, 28, 1, 134, 0, 3, 1, 110, + 0, 27, 1, 146, 0, 3, 1, 110, 0, 26, 1, 141, 0, 3, 1, 110, 0, 25, 0, 15, + 0, 144, 0, 136, 0, 128, 0, 120, 0, 112, 0, 104, 0, 96, 0, 88, 0, 80, 0, 72, + 0, 64, 0, 56, 0, 48, 0, 40, 0, 32, 1, 150, 0, 3, 1, 110, 1, 193, 1, 145, + 0, 3, 1, 110, 1, 191, 1, 139, 0, 3, 1, 110, 1, 189, 1, 150, 0, 3, 1, 110, + 1, 183, 1, 145, 0, 3, 1, 110, 1, 181, 1, 139, 0, 3, 1, 110, 1, 179, 1, 150, + 0, 3, 1, 110, 1, 127, 1, 145, 0, 3, 1, 110, 1, 125, 1, 139, 0, 3, 1, 110, + 1, 123, 1, 150, 0, 3, 1, 110, 1, 117, 1, 145, 0, 3, 1, 110, 1, 115, 1, 139, + 0, 3, 1, 110, 1, 113, 1, 150, 0, 3, 1, 110, 0, 28, 1, 145, 0, 3, 1, 110, + 0, 26, 1, 139, 0, 3, 1, 110, 0, 24, 0, 20, 0, 194, 0, 186, 0, 178, 0, 170, + 0, 162, 0, 154, 0, 146, 0, 138, 0, 130, 0, 122, 0, 114, 0, 106, 0, 98, 0, 90, + 0, 82, 0, 74, 0, 66, 0, 58, 0, 50, 0, 42, 1, 133, 0, 3, 1, 110, 1, 192, + 1, 144, 0, 3, 1, 110, 1, 191, 1, 138, 0, 3, 1, 110, 1, 189, 0, 153, 0, 3, + 1, 110, 1, 188, 1, 133, 0, 3, 1, 110, 1, 182, 1, 144, 0, 3, 1, 110, 1, 181, + 1, 138, 0, 3, 1, 110, 1, 179, 0, 153, 0, 3, 1, 110, 1, 178, 1, 133, 0, 3, + 1, 110, 1, 126, 1, 144, 0, 3, 1, 110, 1, 125, 1, 138, 0, 3, 1, 110, 1, 123, + 0, 153, 0, 3, 1, 110, 1, 122, 1, 133, 0, 3, 1, 110, 1, 116, 1, 144, 0, 3, + 1, 110, 1, 115, 1, 138, 0, 3, 1, 110, 1, 113, 0, 153, 0, 3, 1, 110, 1, 112, + 1, 133, 0, 3, 1, 110, 0, 27, 1, 144, 0, 3, 1, 110, 0, 26, 1, 138, 0, 3, + 1, 110, 0, 24, 0, 153, 0, 3, 1, 110, 0, 23, 0, 20, 0, 194, 0, 186, 0, 178, + 0, 170, 0, 162, 0, 154, 0, 146, 0, 138, 0, 130, 0, 122, 0, 114, 0, 106, 0, 98, + 0, 90, 0, 82, 0, 74, 0, 66, 0, 58, 0, 50, 0, 42, 1, 149, 0, 3, 1, 110, + 1, 193, 1, 143, 0, 3, 1, 110, 1, 191, 1, 137, 0, 3, 1, 110, 1, 189, 1, 131, + 0, 3, 1, 110, 1, 187, 1, 149, 0, 3, 1, 110, 1, 183, 1, 143, 0, 3, 1, 110, + 1, 181, 1, 137, 0, 3, 1, 110, 1, 179, 1, 131, 0, 3, 1, 110, 1, 177, 1, 149, + 0, 3, 1, 110, 1, 127, 1, 143, 0, 3, 1, 110, 1, 125, 1, 137, 0, 3, 1, 110, + 1, 123, 1, 131, 0, 3, 1, 110, 1, 121, 1, 149, 0, 3, 1, 110, 1, 117, 1, 143, + 0, 3, 1, 110, 1, 115, 1, 137, 0, 3, 1, 110, 1, 113, 1, 131, 0, 3, 1, 110, + 0, 142, 1, 149, 0, 3, 1, 110, 0, 28, 1, 143, 0, 3, 1, 110, 0, 26, 1, 137, + 0, 3, 1, 110, 0, 24, 1, 131, 0, 3, 1, 110, 0, 22, 0, 40, 1, 138, 1, 130, + 1, 122, 1, 114, 1, 106, 1, 98, 1, 90, 1, 82, 1, 74, 1, 66, 1, 58, 1, 50, + 1, 42, 1, 34, 1, 26, 1, 18, 1, 10, 1, 2, 0, 250, 0, 242, 0, 234, 0, 226, + 0, 218, 0, 210, 0, 202, 0, 194, 0, 186, 0, 178, 0, 170, 0, 162, 0, 154, 0, 146, + 0, 138, 0, 130, 0, 122, 0, 114, 0, 106, 0, 98, 0, 90, 0, 82, 1, 148, 0, 3, + 1, 110, 1, 193, 1, 132, 0, 3, 1, 110, 1, 192, 1, 142, 0, 3, 1, 110, 1, 191, + 1, 140, 0, 3, 1, 110, 1, 190, 1, 136, 0, 3, 1, 110, 1, 189, 0, 151, 0, 3, + 1, 110, 1, 188, 1, 130, 0, 3, 1, 110, 1, 187, 0, 152, 0, 3, 1, 110, 1, 186, + 1, 148, 0, 3, 1, 110, 1, 183, 1, 132, 0, 3, 1, 110, 1, 182, 1, 142, 0, 3, + 1, 110, 1, 181, 1, 140, 0, 3, 1, 110, 1, 180, 1, 136, 0, 3, 1, 110, 1, 179, + 0, 151, 0, 3, 1, 110, 1, 178, 1, 130, 0, 3, 1, 110, 1, 177, 0, 152, 0, 3, + 1, 110, 1, 176, 1, 148, 0, 3, 1, 110, 1, 127, 1, 132, 0, 3, 1, 110, 1, 126, + 1, 142, 0, 3, 1, 110, 1, 125, 1, 140, 0, 3, 1, 110, 1, 124, 1, 136, 0, 3, + 1, 110, 1, 123, 0, 151, 0, 3, 1, 110, 1, 122, 1, 130, 0, 3, 1, 110, 1, 121, + 0, 152, 0, 3, 1, 110, 1, 120, 1, 148, 0, 3, 1, 110, 1, 117, 1, 132, 0, 3, + 1, 110, 1, 116, 1, 142, 0, 3, 1, 110, 1, 115, 1, 140, 0, 3, 1, 110, 1, 114, + 1, 136, 0, 3, 1, 110, 1, 113, 0, 151, 0, 3, 1, 110, 1, 112, 1, 130, 0, 3, + 1, 110, 0, 142, 0, 152, 0, 3, 1, 110, 0, 141, 1, 148, 0, 3, 1, 110, 0, 28, + 1, 132, 0, 3, 1, 110, 0, 27, 1, 142, 0, 3, 1, 110, 0, 26, 1, 140, 0, 3, + 1, 110, 0, 25, 1, 136, 0, 3, 1, 110, 0, 24, 0, 151, 0, 3, 1, 110, 0, 23, + 1, 130, 0, 3, 1, 110, 0, 22, 0, 152, 0, 3, 1, 110, 0, 21, 0, 2, 0, 7, + 0, 20, 0, 27, 0, 0, 0, 141, 0, 142, 0, 8, 0, 148, 0, 148, 0, 10, 1, 112, + 1, 116, 0, 11, 1, 119, 1, 126, 0, 16, 1, 175, 1, 182, 0, 24, 1, 185, 1, 192, + 0, 32, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 10, 0, 2, 1, 110, 1, 110, + 0, 1, 0, 2, 0, 18, 1, 160, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 86, + 0, 40, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, + 1, 193, 1, 186, 1, 187, 1, 185, 1, 184, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, + 1, 193, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, + 1, 193, 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, + 1, 193, 0, 2, 0, 5, 0, 19, 0, 28, 0, 0, 0, 141, 0, 142, 0, 10, 0, 148, + 0, 148, 0, 12, 1, 111, 1, 127, 0, 13, 1, 174, 1, 183, 0, 30, 0, 1, 0, 0, + 0, 1, 0, 8, 0, 2, 0, 86, 0, 40, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, + 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 176, 1, 177, 1, 175, 1, 174, 1, 178, + 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, + 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, + 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 0, 2, 0, 5, 0, 19, 0, 28, 0, 0, + 0, 141, 0, 142, 0, 10, 0, 148, 0, 148, 0, 12, 1, 111, 1, 127, 0, 13, 1, 184, + 1, 193, 0, 30, 0, 1, 0, 0, 0, 1, 0, 8, 0, 2, 0, 86, 0, 40, 1, 118, + 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 1, 120, + 1, 121, 1, 119, 1, 118, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 1, 118, + 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 1, 118, + 1, 119, 1, 120, 1, 121, 1, 122, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 0, 2, + 0, 5, 0, 19, 0, 28, 0, 0, 0, 141, 0, 142, 0, 10, 0, 148, 0, 148, 0, 12, + 1, 111, 1, 117, 0, 13, 1, 174, 1, 193, 0, 20, 0, 1, 0, 0, 0, 1, 0, 8, + 0, 2, 0, 10, 0, 2, 0, 133, 0, 149, 0, 1, 0, 2, 0, 68, 0, 82, 0, 1, + 0, 0, 0, 1, 0, 8, 0, 2, 0, 86, 0, 40, 1, 111, 0, 148, 0, 141, 0, 142, + 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 111, 0, 148, 0, 141, 0, 142, + 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 111, 0, 148, 0, 141, 0, 142, + 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 1, 111, 0, 148, 0, 141, 0, 142, + 1, 112, 1, 113, 1, 114, 1, 115, 1, 116, 1, 117, 0, 2, 0, 3, 0, 19, 0, 28, + 0, 0, 1, 118, 1, 127, 0, 10, 1, 174, 1, 193, 0, 20, 0, 1, 0, 0, 0, 1, + 0, 8, 0, 1, 0, 6, 0, 47, 0, 1, 0, 1, 2, 225, 0, 1, 0, 0, 0, 1, + 0, 8, 0, 1, 0, 6, 0, 193, 0, 1, 0, 1, 0, 76, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 66, 0, 0, 0, 183, + 0, 0, 1, 14, 0, 0, 2, 25, 0, 0, 3, 100, 0, 0, 4, 114, 0, 0, 6, 70, + 0, 0, 6, 140, 0, 0, 7, 73, 0, 0, 7, 226, 0, 0, 8, 167, 0, 0, 8, 243, + 0, 0, 9, 83, 0, 0, 9, 120, 0, 0, 9, 180, 0, 0, 9, 241, 0, 0, 11, 104, + 0, 0, 11, 229, 0, 0, 12, 246, 0, 0, 14, 120, 0, 0, 15, 45, 0, 0, 16, 81, + 0, 0, 17, 158, 0, 0, 17, 247, 0, 0, 19, 196, 0, 0, 20, 237, 0, 0, 21, 25, + 0, 0, 21, 49, 0, 0, 21, 194, 0, 0, 22, 14, 0, 0, 22, 164, 0, 0, 23, 149, + 0, 0, 25, 0, 0, 0, 26, 50, 0, 0, 27, 78, 0, 0, 28, 103, 0, 0, 29, 9, + 0, 0, 29, 105, 0, 0, 29, 190, 0, 0, 30, 208, 0, 0, 31, 47, 0, 0, 31, 135, + 0, 0, 32, 20, 0, 0, 32, 195, 0, 0, 33, 2, 0, 0, 34, 84, 0, 0, 34, 223, + 0, 0, 35, 216, 0, 0, 36, 132, 0, 0, 37, 204, 0, 0, 38, 172, 0, 0, 40, 17, + 0, 0, 40, 84, 0, 0, 40, 237, 0, 0, 41, 120, 0, 0, 43, 159, 0, 0, 44, 88, + 0, 0, 44, 225, 0, 0, 45, 87, 0, 0, 45, 147, 0, 0, 45, 207, 0, 0, 46, 11, + 0, 0, 46, 115, 0, 0, 46, 155, 0, 0, 46, 206, 0, 0, 47, 206, 0, 0, 48, 180, + 0, 0, 49, 92, 0, 0, 50, 38, 0, 0, 51, 94, 0, 0, 52, 5, 0, 0, 53, 77, + 0, 0, 53, 242, 0, 0, 54, 154, 0, 0, 55, 54, 0, 0, 55, 230, 0, 0, 56, 118, + 0, 0, 57, 47, 0, 0, 57, 207, 0, 0, 58, 198, 0, 0, 59, 164, 0, 0, 60, 131, + 0, 0, 60, 218, 0, 0, 62, 54, 0, 0, 62, 209, 0, 0, 63, 109, 0, 0, 64, 34, + 0, 0, 65, 231, 0, 0, 66, 166, 0, 0, 68, 19, 0, 0, 68, 146, 0, 0, 69, 113, + 0, 0, 69, 158, 0, 0, 70, 125, 0, 0, 71, 43, 0, 0, 72, 77, 0, 0, 72, 173, + 0, 0, 73, 107, 0, 0, 74, 13, 0, 0, 74, 169, 0, 0, 75, 6, 0, 0, 75, 134, + 0, 0, 76, 2, 0, 0, 77, 176, 0, 0, 77, 220, 0, 0, 78, 48, 0, 0, 79, 34, + 0, 0, 79, 128, 0, 0, 79, 219, 0, 0, 80, 129, 0, 0, 81, 34, 0, 0, 81, 112, + 0, 0, 81, 151, 0, 0, 81, 189, 0, 0, 82, 76, 0, 0, 83, 12, 0, 0, 83, 52, + 0, 0, 83, 117, 0, 0, 84, 194, 0, 0, 84, 246, 0, 0, 84, 246, 0, 0, 85, 103, + 0, 0, 86, 51, 0, 0, 87, 1, 0, 0, 87, 211, 0, 0, 88, 161, 0, 0, 88, 226, + 0, 0, 90, 255, 0, 0, 91, 110, 0, 0, 93, 50, 0, 0, 94, 48, 0, 0, 94, 158, + 0, 0, 94, 206, 0, 0, 94, 222, 0, 0, 97, 20, 0, 0, 97, 57, 0, 0, 97, 210, + 0, 0, 98, 57, 0, 0, 99, 128, 0, 0, 100, 245, 0, 0, 101, 41, 0, 0, 101, 186, + 0, 0, 102, 34, 0, 0, 102, 54, 0, 0, 102, 196, 0, 0, 103, 40, 0, 0, 103, 195, + 0, 0, 104, 46, 0, 0, 104, 254, 0, 0, 106, 68, 0, 0, 108, 5, 0, 0, 109, 0, + 0, 0, 109, 44, 0, 0, 109, 88, 0, 0, 109, 132, 0, 0, 109, 176, 0, 0, 109, 248, + 0, 0, 111, 32, 0, 0, 111, 211, 0, 0, 113, 172, 0, 0, 113, 220, 0, 0, 114, 8, + 0, 0, 114, 56, 0, 0, 114, 108, 0, 0, 114, 152, 0, 0, 114, 196, 0, 0, 114, 240, + 0, 0, 115, 40, 0, 0, 115, 245, 0, 0, 116, 33, 0, 0, 116, 77, 0, 0, 116, 121, + 0, 0, 116, 165, 0, 0, 116, 209, 0, 0, 117, 5, 0, 0, 117, 101, 0, 0, 119, 94, + 0, 0, 119, 142, 0, 0, 119, 186, 0, 0, 119, 230, 0, 0, 120, 26, 0, 0, 120, 70, + 0, 0, 121, 16, 0, 0, 122, 243, 0, 0, 123, 27, 0, 0, 123, 67, 0, 0, 123, 107, + 0, 0, 123, 147, 0, 0, 123, 195, 0, 0, 123, 239, 0, 0, 125, 126, 0, 0, 126, 171, + 0, 0, 126, 215, 0, 0, 126, 255, 0, 0, 127, 39, 0, 0, 127, 87, 0, 0, 127, 131, + 0, 0, 127, 175, 0, 0, 127, 219, 0, 0, 128, 15, 0, 0, 129, 128, 0, 0, 129, 172, + 0, 0, 129, 212, 0, 0, 129, 252, 0, 0, 130, 36, 0, 0, 130, 76, 0, 0, 130, 124, + 0, 0, 130, 251, 0, 0, 132, 41, 0, 0, 132, 85, 0, 0, 132, 125, 0, 0, 132, 165, + 0, 0, 132, 213, 0, 0, 132, 253, 0, 0, 133, 235, 0, 0, 134, 27, 0, 0, 134, 71, + 0, 0, 134, 111, 0, 0, 134, 155, 0, 0, 134, 195, 0, 0, 135, 184, 0, 0, 137, 15, + 0, 0, 137, 59, 0, 0, 137, 99, 0, 0, 137, 143, 0, 0, 137, 183, 0, 0, 137, 227, + 0, 0, 138, 11, 0, 0, 138, 55, 0, 0, 138, 95, 0, 0, 138, 143, 0, 0, 139, 110, + 0, 0, 139, 126, 0, 0, 140, 116, 0, 0, 140, 164, 0, 0, 140, 204, 0, 0, 140, 252, + 0, 0, 141, 36, 0, 0, 141, 84, 0, 0, 141, 124, 0, 0, 142, 45, 0, 0, 143, 136, + 0, 0, 143, 180, 0, 0, 143, 220, 0, 0, 144, 8, 0, 0, 144, 48, 0, 0, 144, 92, + 0, 0, 144, 132, 0, 0, 144, 176, 0, 0, 144, 216, 0, 0, 144, 252, 0, 0, 145, 36, + 0, 0, 145, 80, 0, 0, 146, 51, 0, 0, 146, 207, 0, 0, 147, 173, 0, 0, 147, 217, + 0, 0, 148, 5, 0, 0, 148, 49, 0, 0, 148, 93, 0, 0, 148, 137, 0, 0, 148, 181, + 0, 0, 149, 91, 0, 0, 150, 57, 0, 0, 150, 101, 0, 0, 150, 210, 0, 0, 150, 226, + 0, 0, 151, 77, 0, 0, 152, 22, 0, 0, 152, 66, 0, 0, 152, 106, 0, 0, 152, 146, + 0, 0, 152, 186, 0, 0, 153, 149, 0, 0, 154, 67, 0, 0, 154, 115, 0, 0, 155, 34, + 0, 0, 155, 74, 0, 0, 155, 110, 0, 0, 155, 146, 0, 0, 155, 182, 0, 0, 155, 218, + 0, 0, 155, 254, 0, 0, 156, 117, 0, 0, 157, 58, 0, 0, 157, 102, 0, 0, 157, 142, + 0, 0, 157, 182, 0, 0, 157, 222, 0, 0, 158, 10, 0, 0, 158, 54, 0, 0, 159, 61, + 0, 0, 159, 109, 0, 0, 160, 36, 0, 0, 160, 227, 0, 0, 161, 15, 0, 0, 161, 55, + 0, 0, 161, 99, 0, 0, 161, 139, 0, 0, 161, 191, 0, 0, 161, 239, 0, 0, 162, 31, + 0, 0, 162, 71, 0, 0, 162, 111, 0, 0, 162, 151, 0, 0, 162, 199, 0, 0, 162, 239, + 0, 0, 163, 27, 0, 0, 163, 67, 0, 0, 163, 111, 0, 0, 163, 151, 0, 0, 165, 129, + 0, 0, 167, 45, 0, 0, 167, 216, 0, 0, 168, 223, 0, 0, 169, 11, 0, 0, 169, 47, + 0, 0, 169, 153, 0, 0, 170, 92, 0, 0, 170, 136, 0, 0, 170, 176, 0, 0, 170, 220, + 0, 0, 171, 4, 0, 0, 171, 48, 0, 0, 171, 88, 0, 0, 171, 128, 0, 0, 171, 164, + 0, 0, 171, 216, 0, 0, 172, 8, 0, 0, 172, 228, 0, 0, 173, 191, 0, 0, 173, 235, + 0, 0, 174, 23, 0, 0, 174, 67, 0, 0, 174, 107, 0, 0, 174, 151, 0, 0, 174, 191, + 0, 0, 174, 239, 0, 0, 175, 23, 0, 0, 175, 71, 0, 0, 175, 111, 0, 0, 175, 222, + 0, 0, 176, 6, 0, 0, 176, 46, 0, 0, 176, 86, 0, 0, 176, 122, 0, 0, 176, 236, + 0, 0, 177, 60, 0, 0, 177, 130, 0, 0, 177, 146, 0, 0, 177, 238, 0, 0, 178, 39, + 0, 0, 178, 172, 0, 0, 179, 24, 0, 0, 179, 97, 0, 0, 179, 145, 0, 0, 179, 189, + 0, 0, 179, 233, 0, 0, 180, 17, 0, 0, 180, 69, 0, 0, 180, 117, 0, 0, 180, 165, + 0, 0, 180, 209, 0, 0, 181, 13, 0, 0, 182, 13, 0, 0, 182, 200, 0, 0, 183, 170, + 0, 0, 185, 112, 0, 0, 185, 243, 0, 0, 189, 55, 0, 0, 190, 49, 0, 0, 190, 69, + 0, 0, 190, 89, 0, 0, 190, 109, 0, 0, 190, 129, 0, 0, 190, 149, 0, 0, 190, 169, + 0, 0, 190, 189, 0, 0, 190, 209, 0, 0, 190, 229, 0, 0, 190, 249, 0, 0, 192, 66, + 0, 0, 193, 15, 0, 0, 194, 211, 0, 0, 196, 229, 0, 0, 198, 173, 0, 0, 201, 106, + 0, 0, 204, 88, 0, 0, 205, 251, 0, 0, 207, 24, 0, 0, 208, 217, 0, 0, 210, 157, + 0, 0, 211, 250, 0, 0, 213, 71, 0, 0, 215, 8, 0, 0, 215, 205, 0, 0, 216, 216, + 0, 0, 218, 44, 0, 0, 219, 13, 0, 0, 220, 130, 0, 0, 221, 225, 0, 0, 223, 46, + 0, 0, 224, 188, 0, 0, 226, 15, 0, 0, 227, 191, 0, 0, 228, 239, 0, 0, 231, 74, + 0, 0, 232, 110, 0, 0, 233, 1, 0, 0, 233, 65, 0, 0, 233, 229, 0, 0, 234, 194, + 0, 0, 234, 233, 0, 0, 234, 249, 0, 0, 235, 13, 0, 0, 235, 117, 0, 0, 236, 79, + 0, 0, 236, 179, 0, 0, 236, 203, 0, 0, 237, 76, 0, 0, 237, 100, 0, 0, 237, 124, + 0, 0, 238, 118, 0, 0, 239, 52, 0, 0, 239, 233, 0, 0, 240, 152, 0, 0, 241, 71, + 0, 0, 241, 87, 0, 0, 241, 103, 0, 0, 241, 119, 0, 0, 241, 135, 0, 0, 241, 151, + 0, 0, 241, 167, 0, 0, 241, 183, 0, 0, 241, 199, 0, 0, 241, 215, 0, 0, 241, 231, + 0, 0, 241, 251, 0, 0, 242, 15, 0, 0, 242, 35, 0, 0, 242, 55, 0, 0, 242, 75, + 0, 0, 242, 95, 0, 0, 242, 115, 0, 0, 242, 135, 0, 0, 242, 155, 0, 0, 242, 175, + 0, 0, 242, 218, 0, 0, 243, 31, 0, 0, 243, 104, 0, 0, 243, 147, 0, 0, 243, 163, + 0, 0, 243, 179, 0, 0, 243, 195, 0, 0, 243, 211, 0, 0, 243, 227, 0, 0, 243, 243, + 0, 0, 244, 3, 0, 0, 244, 19, 0, 0, 244, 35, 0, 0, 244, 51, 0, 0, 244, 67, + 0, 0, 244, 83, 0, 0, 244, 99, 0, 0, 244, 115, 0, 0, 244, 131, 0, 0, 244, 151, + 0, 0, 244, 167, 0, 0, 244, 183, 0, 0, 244, 203, 0, 0, 245, 220, 0, 0, 247, 86, + 0, 0, 248, 48, 0, 0, 249, 39, 0, 0, 250, 24, 0, 0, 251, 22, 0, 0, 251, 245, + 0, 0, 253, 19, 0, 0, 253, 235, 0, 0, 253, 251, 0, 0, 254, 233, 0, 0, 255, 201, + 0, 1, 0, 148, 0, 1, 2, 34, 0, 1, 2, 126, 0, 1, 3, 149, 0, 1, 4, 232, + 0, 1, 5, 94, 0, 1, 6, 142, 0, 1, 8, 93, 0, 1, 9, 114, 0, 1, 9, 253, + 0, 1, 10, 130, 0, 1, 11, 79, 0, 1, 12, 27, 0, 1, 12, 183, 0, 1, 13, 213, + 0, 1, 14, 139, 0, 1, 15, 56, 0, 1, 15, 204, 0, 1, 17, 6, 0, 1, 18, 79, + 0, 1, 19, 101, 0, 1, 20, 167, 0, 1, 21, 222, 0, 1, 22, 197, 0, 1, 23, 233, + 0, 1, 24, 219, 0, 1, 26, 118, 0, 1, 27, 220, 0, 1, 27, 236, 0, 1, 28, 246, + 0, 1, 30, 20, 0, 1, 30, 128, 0, 1, 31, 74, 0, 1, 31, 183, 0, 1, 32, 152, + 0, 1, 33, 76, 0, 1, 34, 89, 0, 1, 35, 52, 0, 1, 35, 228, 0, 1, 36, 216, + 0, 1, 37, 155, 0, 1, 38, 90, 0, 1, 39, 131, 0, 1, 40, 213, 0, 1, 41, 250, + 0, 1, 43, 16, 0, 1, 44, 74, 0, 1, 45, 83, 0, 1, 46, 90, 0, 1, 47, 143, + 0, 1, 48, 76, 0, 1, 48, 92, 0, 1, 48, 116, 0, 1, 49, 2, 0, 1, 49, 18, + 0, 1, 50, 48, 0, 1, 51, 125, 0, 1, 52, 191, 0, 1, 53, 41, 0, 1, 53, 201, + 0, 1, 54, 123, 0, 1, 55, 3, 0, 1, 55, 241, 0, 1, 56, 211, 0, 1, 56, 255, + 0, 1, 57, 39, 0, 1, 57, 83, 0, 1, 57, 127, 0, 1, 57, 171, 0, 1, 57, 211, + 0, 1, 57, 255, 0, 1, 58, 39, 0, 1, 59, 23, 0, 1, 59, 79, 0, 1, 59, 135, + 0, 1, 59, 191, 0, 1, 59, 247, 0, 1, 60, 47, 0, 1, 60, 103, 0, 1, 60, 159, + 0, 1, 61, 107, 0, 1, 62, 141, 0, 1, 62, 197, 0, 1, 63, 188, 0, 1, 63, 236, + 0, 1, 64, 24, 0, 1, 64, 64, 0, 1, 65, 127, 0, 1, 66, 171, 0, 1, 66, 215, + 0, 1, 66, 255, 0, 1, 67, 47, 0, 1, 68, 20, 0, 1, 69, 82, 0, 1, 70, 174, + 0, 1, 70, 218, 0, 1, 71, 2, 0, 1, 71, 46, 0, 1, 71, 86, 0, 1, 71, 126, + 0, 1, 72, 147, 0, 1, 73, 152, 0, 1, 74, 166, 0, 1, 74, 210, 0, 1, 74, 250, + 0, 1, 75, 164, 0, 1, 76, 97, 0, 1, 76, 145, 0, 1, 76, 189, 0, 1, 77, 235, + 0, 1, 78, 19, 0, 1, 78, 63, 0, 1, 78, 103, 0, 1, 78, 147, 0, 1, 78, 187, + 0, 1, 78, 239, 0, 1, 79, 31, 0, 1, 79, 75, 0, 1, 79, 115, 0, 1, 79, 167, + 0, 1, 79, 215, 0, 1, 80, 3, 0, 1, 80, 43, 0, 1, 80, 95, 0, 1, 80, 147, + 0, 1, 80, 191, 0, 1, 80, 235, 0, 1, 81, 31, 0, 1, 81, 83, 0, 1, 81, 127, + 0, 1, 81, 167, 0, 1, 81, 219, 0, 1, 82, 15, 0, 1, 82, 63, 0, 1, 82, 103, + 0, 1, 82, 155, 0, 1, 82, 207, 0, 1, 82, 251, 0, 1, 83, 35, 0, 1, 84, 111, + 0, 1, 85, 181, 0, 1, 85, 225, 0, 1, 86, 187, 0, 1, 87, 56, 0, 1, 88, 156, + 0, 1, 89, 214, 0, 1, 91, 12, 0, 1, 91, 179, 0, 1, 92, 88, 0, 1, 92, 132, + 0, 1, 92, 172, 0, 1, 93, 121, 0, 1, 94, 251, 0, 1, 96, 103, 0, 1, 96, 159, + 0, 1, 98, 84, 0, 1, 98, 132, 0, 1, 98, 176, 0, 1, 98, 216, 0, 1, 100, 28, + 0, 1, 100, 76, 0, 1, 100, 120, 0, 1, 100, 160, 0, 1, 101, 113, 0, 1, 102, 129, + 0, 1, 103, 124, 0, 1, 104, 214, 0, 1, 105, 248, 0, 1, 107, 13, 0, 1, 108, 119, + 0, 1, 109, 202, 0, 1, 110, 39, 0, 1, 110, 187, 0, 1, 112, 39, 0, 1, 113, 73, + 0, 1, 114, 36, 0, 1, 115, 33, 0, 1, 116, 152, 0, 1, 117, 140, 0, 1, 117, 156, + 0, 1, 118, 94, 0, 1, 119, 124, 0, 1, 120, 15, 0, 1, 120, 206, 0, 1, 122, 1, + 0, 1, 123, 3, 0, 1, 124, 27, 0, 1, 124, 139, 0, 1, 125, 94, 0, 1, 126, 144, + 0, 1, 127, 134, 0, 1, 127, 226, 0, 1, 128, 48, 0, 1, 128, 217, 0, 1, 129, 85, + 0, 1, 129, 166, 0, 1, 130, 100, 0, 1, 131, 34, 0, 1, 131, 186, 0, 1, 132, 108, + 0, 1, 132, 240, 0, 1, 133, 126, 0, 1, 134, 24, 0, 1, 134, 72, 0, 1, 134, 124, + 0, 1, 135, 96, 0, 1, 135, 140, 0, 1, 136, 216, 0, 1, 138, 61, 0, 1, 138, 149, + 0, 1, 138, 201, 0, 1, 139, 86, 0, 1, 140, 37, 0, 1, 140, 223, 0, 1, 141, 152, + 0, 1, 141, 200, 0, 1, 141, 244, 0, 1, 142, 36, 0, 1, 142, 124, 0, 1, 142, 140, + 0, 1, 142, 156, 0, 1, 142, 172, 0, 1, 142, 248, 0, 1, 143, 174, 0, 1, 143, 190, + 0, 1, 144, 206, 0, 1, 146, 26, 0, 1, 146, 162, 0, 1, 146, 206, 0, 1, 146, 222, + 0, 1, 147, 131, 0, 1, 147, 147, 0, 1, 147, 163, 0, 1, 147, 179, 0, 1, 147, 247, + 0, 1, 148, 7, 0, 1, 148, 23, 0, 1, 148, 39, 0, 1, 149, 13, 0, 1, 150, 16, + 0, 1, 150, 32, 0, 1, 150, 116, 0, 1, 151, 11, 0, 1, 151, 103, 0, 1, 151, 222, + 0, 1, 152, 204, 0, 1, 153, 123, 0, 1, 154, 52, 0, 1, 155, 74, 0, 1, 156, 81, + 0, 1, 157, 101, 0, 1, 157, 117, 0, 1, 158, 176, 0, 1, 159, 196, 0, 1, 159, 251, + 0, 1, 160, 149, 0, 1, 160, 165, 0, 1, 161, 218, 0, 1, 162, 228, 0, 1, 163, 115, + 0, 1, 163, 155, 0, 1, 163, 171, 0, 1, 164, 72, 0, 1, 165, 53, 0, 1, 165, 150, + 0, 1, 165, 166, 0, 1, 165, 239, 0, 1, 165, 255, 0, 1, 166, 15, 0, 1, 166, 88, + 0, 1, 166, 104, 0, 1, 167, 123, 0, 1, 167, 139, 0, 1, 167, 229, 0, 1, 168, 104, + 0, 1, 168, 196, 0, 1, 169, 60, 0, 1, 170, 5, 0, 1, 170, 192, 0, 1, 171, 131, + 0, 1, 172, 64, 0, 1, 173, 54, 0, 1, 174, 38, 0, 1, 174, 78, 0, 1, 174, 126, + 0, 1, 175, 133, 0, 1, 175, 173, 0, 1, 176, 113, 0, 1, 176, 129, 0, 1, 176, 145, + 0, 1, 176, 197, 0, 1, 176, 213, 0, 1, 177, 196, 0, 1, 178, 142, 0, 1, 178, 158, + 0, 1, 178, 198, 0, 1, 178, 238, 0, 1, 179, 22, 0, 1, 179, 115, 0, 1, 180, 208, + 0, 1, 181, 213, 0, 1, 182, 172, 0, 1, 184, 50, 0, 1, 185, 110, 0, 1, 186, 19, + 0, 1, 186, 186, 0, 1, 187, 189, 0, 1, 188, 182, 0, 1, 189, 154, 0, 1, 190, 171, + 0, 1, 191, 239, 0, 1, 193, 35, 0, 1, 193, 117, 0, 1, 193, 181, 0, 1, 194, 41, + 0, 1, 194, 131, 0, 1, 195, 114, 0, 1, 196, 87, 0, 1, 197, 166, 0, 1, 198, 233, + 0, 1, 201, 2, 0, 1, 202, 154, 0, 1, 203, 81, 0, 1, 203, 222, 0, 1, 204, 186, + 0, 1, 205, 160, 0, 1, 206, 114, 0, 1, 207, 77, 0, 1, 208, 3, 0, 1, 208, 179, + 0, 1, 209, 37, 0, 1, 209, 152, 0, 1, 210, 5, 0, 1, 210, 111, 0, 1, 211, 96, + 0, 1, 212, 48, 0, 1, 213, 197, 0, 1, 215, 79, 0, 1, 215, 95, 0, 1, 215, 111, + 0, 1, 215, 196, 0, 1, 216, 30, 0, 1, 216, 46, 0, 1, 216, 201, 0, 1, 217, 107, + 0, 1, 218, 18, 0, 1, 218, 190, 0, 1, 219, 104, 0, 1, 219, 215, 0, 1, 220, 70, + 0, 1, 220, 238, 0, 1, 221, 130, 0, 1, 222, 46, 0, 1, 222, 194, 0, 1, 223, 93, + 0, 1, 223, 109, 0, 1, 224, 186, 0, 1, 225, 192, 0, 1, 227, 58, 0, 1, 228, 92, + 0, 1, 228, 108, 0, 1, 228, 156, 0, 1, 228, 196, 0, 1, 229, 201, 0, 1, 230, 178, + 0, 1, 231, 128, 0, 1, 232, 60, 0, 1, 232, 195, 0, 1, 233, 76, 0, 1, 233, 225, + 0, 1, 234, 108, 0, 1, 235, 14, 0, 1, 235, 163, 0, 1, 236, 224, 0, 1, 238, 21, + 0, 1, 238, 37, 0, 1, 238, 81, 0, 1, 238, 121, 0, 1, 238, 173, 0, 1, 238, 221, + 0, 1, 238, 237, 0, 1, 238, 253, 0, 1, 239, 45, 0, 1, 239, 85, 0, 1, 239, 101, + 0, 1, 239, 117, 0, 1, 239, 169, 0, 1, 239, 221, 0, 1, 240, 17, 0, 1, 240, 65, + 0, 1, 240, 117, 0, 1, 240, 169, 0, 1, 240, 185, 0, 1, 240, 201, 0, 1, 240, 245, + 0, 1, 241, 29, 0, 1, 241, 81, 0, 1, 241, 129, 0, 1, 241, 181, 0, 1, 241, 229, + 0, 1, 242, 218, 0, 1, 243, 184, 0, 1, 243, 236, 0, 1, 244, 28, 0, 1, 244, 80, + 0, 1, 244, 132, 0, 1, 244, 176, 0, 1, 244, 216, 0, 1, 245, 12, 0, 1, 245, 60, + 0, 1, 245, 112, 0, 1, 245, 160, 0, 1, 245, 212, 0, 1, 246, 4, 0, 1, 246, 86, + 0, 1, 246, 159, 0, 1, 246, 211, 0, 1, 247, 3, 0, 1, 248, 26, 0, 1, 248, 64, + 0, 1, 249, 210, 0, 1, 250, 182, 0, 1, 251, 1, 0, 1, 251, 17, 0, 1, 252, 45, + 0, 1, 252, 61, 0, 1, 252, 213, 0, 1, 252, 229, 0, 1, 253, 91, 0, 1, 253, 107, + 0, 1, 254, 165, 0, 1, 254, 181, 0, 1, 255, 110, 0, 2, 0, 1, 0, 2, 0, 243, + 0, 2, 1, 126, 0, 2, 1, 233, 0, 2, 1, 249, 0, 2, 2, 9, 0, 2, 2, 234, + 0, 2, 3, 143, 0, 2, 3, 210, 0, 2, 3, 226, 0, 2, 3, 242, 0, 2, 4, 148, + 0, 2, 5, 87, 0, 2, 6, 103, 0, 2, 7, 84, 0, 2, 8, 146, 0, 2, 9, 16, + 0, 2, 10, 91, 0, 2, 11, 70, 0, 2, 12, 81, 0, 2, 12, 229, 0, 2, 14, 30, + 0, 2, 14, 134, 0, 2, 14, 150, 0, 2, 15, 143, 0, 2, 15, 159, 0, 2, 15, 175, + 0, 2, 17, 37, 0, 2, 17, 53, 0, 2, 17, 69, 0, 2, 18, 71, 0, 2, 19, 51, + 0, 2, 20, 109, 0, 2, 20, 233, 0, 2, 21, 106, 0, 2, 22, 111, 0, 2, 22, 127, + 0, 2, 23, 73, 0, 2, 24, 94, 0, 2, 24, 134, 0, 2, 24, 158, 0, 2, 24, 198, + 0, 2, 24, 238, 0, 2, 25, 34, 0, 2, 25, 58, 0, 2, 25, 82, 0, 2, 25, 134, + 0, 2, 25, 174, 0, 2, 25, 214, 0, 2, 25, 254, 0, 2, 26, 38, 0, 2, 26, 78, + 0, 2, 26, 130, 0, 2, 26, 190, 0, 2, 26, 230, 0, 2, 27, 22, 0, 2, 27, 62, + 0, 2, 27, 118, 0, 2, 27, 158, 0, 2, 27, 213, 0, 2, 28, 3, 0, 2, 28, 141, + 0, 2, 28, 185, 0, 2, 28, 229, 0, 2, 29, 25, 0, 2, 29, 77, 0, 2, 29, 125, + 0, 2, 29, 173, 0, 2, 29, 221, 0, 2, 30, 17, 0, 2, 30, 57, 0, 2, 30, 97, + 0, 2, 30, 141, 0, 2, 30, 185, 0, 2, 30, 229, 0, 2, 31, 17, 0, 2, 31, 61, + 0, 2, 31, 105, 0, 2, 31, 145, 0, 2, 31, 189, 0, 2, 31, 237, 0, 2, 32, 33, + 0, 2, 32, 85, 0, 2, 32, 133, 0, 2, 32, 173, 0, 2, 32, 213, 0, 2, 33, 1, + 0, 2, 33, 45, 0, 2, 33, 89, 0, 2, 33, 133, 0, 2, 33, 177, 0, 2, 33, 217, + 0, 2, 34, 13, 0, 2, 34, 65, 0, 2, 34, 117, 0, 2, 34, 165, 0, 2, 34, 217, + 0, 2, 35, 13, 0, 2, 35, 53, 0, 2, 35, 93, 0, 2, 35, 137, 0, 2, 35, 181, + 0, 2, 35, 225, 0, 2, 36, 13, 0, 2, 36, 57, 0, 2, 36, 101, 0, 2, 36, 145, + 0, 2, 36, 189, 0, 2, 36, 241, 0, 2, 37, 37, 0, 2, 37, 89, 0, 2, 37, 141, + 0, 2, 37, 193, 0, 2, 37, 245, 0, 2, 38, 29, 0, 2, 38, 69, 0, 2, 38, 113, + 0, 2, 38, 157, 0, 2, 38, 201, 0, 2, 38, 245, 0, 2, 39, 33, 0, 2, 39, 77, + 0, 2, 39, 117, 0, 2, 39, 157, 0, 2, 39, 205, 0, 2, 39, 253, 0, 2, 40, 45, + 0, 2, 40, 93, 0, 2, 40, 133, 0, 2, 40, 173, 0, 2, 40, 217, 0, 2, 41, 5, + 0, 2, 41, 49, 0, 2, 41, 93, 0, 2, 41, 133, 0, 2, 41, 173, 0, 2, 41, 221, + 0, 2, 42, 13, 0, 2, 42, 61, 0, 2, 42, 109, 0, 2, 42, 157, 0, 2, 42, 205, + 0, 2, 42, 245, 0, 2, 43, 33, 0, 2, 43, 77, 0, 2, 43, 121, 0, 2, 43, 165, + 0, 2, 43, 205, 0, 2, 44, 1, 0, 2, 44, 53, 0, 2, 44, 105, 0, 2, 44, 153, + 0, 2, 44, 205, 0, 2, 45, 1, 0, 2, 45, 41, 0, 2, 45, 81, 0, 2, 45, 125, + 0, 2, 45, 169, 0, 2, 45, 213, 0, 2, 46, 1, 0, 2, 46, 45, 0, 2, 46, 89, + 0, 2, 46, 133, 0, 2, 46, 173, 0, 2, 46, 217, 0, 2, 47, 1, 0, 2, 47, 41, + 0, 2, 47, 81, 0, 2, 47, 125, 0, 2, 47, 169, 0, 2, 47, 209, 0, 2, 47, 249, + 0, 2, 48, 33, 0, 2, 48, 73, 0, 2, 48, 113, 0, 2, 48, 153, 0, 2, 48, 197, + 0, 2, 48, 241, 0, 2, 49, 33, 0, 2, 49, 81, 0, 2, 49, 129, 0, 2, 49, 177, + 0, 2, 49, 225, 0, 2, 50, 17, 0, 2, 50, 57, 0, 2, 50, 97, 0, 2, 50, 141, + 0, 2, 50, 185, 0, 2, 50, 229, 0, 2, 51, 17, 0, 2, 51, 61, 0, 2, 51, 105, + 0, 2, 51, 153, 0, 2, 51, 201, 0, 2, 51, 249, 0, 2, 52, 41, 0, 2, 52, 89, + 0, 2, 52, 137, 0, 2, 52, 185, 0, 2, 52, 233, 0, 2, 53, 1, 0, 2, 53, 25, + 0, 2, 53, 69, 0, 2, 53, 113, 0, 2, 53, 157, 0, 2, 53, 201, 0, 2, 53, 245, + 0, 2, 54, 33, 0, 2, 54, 77, 0, 2, 54, 121, 0, 2, 54, 169, 0, 2, 54, 217, + 0, 2, 55, 9, 0, 2, 55, 57, 0, 2, 55, 105, 0, 2, 55, 153, 0, 2, 55, 193, + 0, 2, 55, 233, 0, 2, 56, 21, 0, 2, 56, 65, 0, 2, 56, 109, 0, 2, 56, 153, + 0, 2, 56, 197, 0, 2, 56, 241, 0, 2, 57, 29, 0, 2, 57, 73, 0, 2, 57, 121, + 0, 2, 57, 157, 0, 2, 57, 201, 0, 2, 57, 241, 0, 2, 58, 29, 0, 2, 58, 73, + 0, 2, 58, 117, 0, 2, 58, 157, 0, 2, 58, 197, 0, 2, 59, 201, 0, 2, 60, 31, + 0, 2, 60, 101, 0, 2, 60, 117, 0, 2, 60, 209, 0, 2, 61, 118, 0, 2, 61, 166, + 0, 2, 61, 206, 0, 2, 61, 254, 0, 2, 62, 42, 0, 2, 62, 90, 0, 2, 62, 130, + 0, 2, 62, 170, 0, 2, 62, 210, 0, 2, 62, 250, 0, 2, 63, 154, 0, 2, 64, 26, + 0, 2, 64, 157, 0, 2, 65, 56, 0, 2, 65, 100, 0, 2, 65, 144, 0, 2, 65, 204, + 0, 2, 66, 8, 0, 2, 66, 52, 0, 2, 66, 112, 0, 2, 66, 156, 0, 2, 66, 200, + 0, 2, 66, 240, 0, 2, 67, 24, 0, 2, 67, 145, 0, 2, 68, 10, 0, 2, 68, 166, + 0, 2, 68, 206, 0, 2, 68, 246, 0, 2, 69, 46, 0, 2, 69, 102, 0, 2, 69, 146, + 0, 2, 69, 190, 0, 2, 69, 230, 0, 2, 70, 30, 0, 2, 70, 74, 0, 2, 70, 118, + 0, 2, 70, 158, 0, 2, 70, 182, 0, 2, 70, 222, 0, 2, 71, 106, 0, 2, 71, 248, + 0, 2, 72, 45, 0, 2, 72, 89, 0, 2, 72, 125, 0, 2, 72, 169, 0, 2, 72, 213, + 0, 2, 73, 5, 0, 2, 73, 45, 0, 2, 73, 69, 0, 2, 73, 109, 0, 2, 73, 149, + 0, 2, 74, 240, 0, 2, 75, 38, 0, 2, 75, 121, 0, 2, 75, 169, 0, 2, 75, 217, + 0, 2, 76, 13, 0, 2, 76, 65, 0, 2, 76, 117, 0, 2, 76, 169, 0, 2, 76, 221, + 0, 2, 77, 17, 0, 2, 77, 65, 0, 2, 77, 113, 0, 2, 77, 165, 0, 2, 77, 217, + 0, 2, 78, 13, 0, 2, 78, 65, 0, 2, 78, 117, 0, 2, 78, 169, 0, 2, 78, 217, + 0, 2, 79, 9, 0, 2, 79, 61, 0, 2, 79, 113, 0, 2, 79, 165, 0, 2, 79, 217, + 0, 2, 80, 13, 0, 2, 80, 65, 0, 2, 80, 101, 0, 2, 80, 137, 0, 2, 80, 173, + 0, 2, 81, 150, 0, 2, 83, 22, 0, 2, 91, 148, 0, 2, 92, 66, 0, 2, 92, 102, + 0, 2, 92, 149, 0, 2, 92, 196, 0, 2, 92, 243, 0, 2, 93, 25, 0, 2, 93, 62, + 0, 2, 93, 117, 0, 2, 93, 173, 0, 2, 93, 227, 0, 2, 94, 26, 0, 2, 94, 99, + 0, 2, 94, 146, 0, 2, 94, 223, 0, 2, 95, 46, 0, 2, 95, 119, 0, 2, 95, 187, + 0, 2, 96, 4, 0, 2, 96, 79, 0, 2, 96, 147, 0, 2, 96, 218, 0, 2, 97, 17, + 0, 2, 97, 152, 0, 2, 97, 251, 0, 2, 98, 92, 0, 2, 98, 189, 0, 2, 99, 10, + 0, 2, 99, 89, 0, 2, 99, 184, 0, 2, 100, 5, 0, 2, 100, 83, 0, 2, 100, 140, + 0, 2, 100, 216, 0, 2, 101, 38, 0, 2, 101, 114, 0, 2, 101, 185, 0, 2, 101, 255, + 0, 2, 102, 73, 0, 2, 102, 141, 0, 2, 102, 212, 0, 2, 102, 253, 0, 2, 105, 4, + 0, 2, 108, 195, 0, 2, 112, 43, 0, 2, 112, 153, 0, 2, 113, 4, 0, 2, 0, 0, + 0, 0, 0, 0, 255, 133, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, + 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, + 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, + 0, 25, 0, 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 32, 0, 33, 0, 34, + 0, 35, 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, + 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, + 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 62, 0, 63, 0, 64, + 0, 65, 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, + 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, + 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 94, + 0, 95, 0, 96, 0, 97, 1, 2, 0, 196, 0, 166, 0, 197, 0, 171, 0, 130, 0, 194, + 0, 216, 0, 198, 0, 228, 0, 190, 0, 176, 0, 182, 0, 183, 0, 180, 0, 181, 0, 135, + 0, 178, 0, 179, 0, 217, 0, 140, 0, 229, 0, 191, 0, 177, 0, 187, 1, 3, 0, 163, + 0, 132, 0, 133, 0, 189, 0, 150, 0, 232, 0, 134, 0, 142, 0, 139, 0, 157, 0, 169, + 0, 164, 1, 4, 0, 138, 0, 218, 0, 131, 0, 147, 0, 242, 0, 243, 0, 141, 0, 151, + 0, 136, 0, 195, 0, 222, 0, 241, 0, 158, 0, 170, 0, 245, 0, 244, 0, 246, 0, 162, + 0, 173, 0, 201, 0, 199, 0, 174, 0, 98, 0, 99, 0, 144, 0, 100, 0, 203, 0, 101, + 0, 200, 0, 202, 0, 207, 0, 204, 0, 205, 0, 206, 0, 233, 0, 102, 0, 211, 0, 208, + 0, 209, 0, 175, 0, 103, 0, 240, 0, 145, 0, 214, 0, 212, 0, 213, 0, 104, 0, 235, + 0, 237, 0, 137, 0, 106, 0, 105, 0, 107, 0, 109, 0, 108, 0, 110, 0, 160, 0, 111, + 0, 113, 0, 112, 0, 114, 0, 115, 0, 117, 0, 116, 0, 118, 0, 119, 0, 234, 0, 120, + 0, 122, 0, 121, 0, 123, 0, 125, 0, 124, 0, 184, 0, 161, 0, 127, 0, 126, 0, 128, + 0, 129, 0, 236, 0, 238, 0, 186, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, + 0, 253, 0, 254, 1, 11, 1, 12, 1, 13, 1, 14, 0, 255, 1, 0, 1, 15, 1, 16, + 1, 17, 1, 1, 1, 18, 1, 19, 1, 20, 1, 21, 1, 22, 1, 23, 1, 24, 1, 25, + 1, 26, 1, 27, 1, 28, 1, 29, 0, 248, 0, 249, 1, 30, 1, 31, 1, 32, 1, 33, + 1, 34, 1, 35, 1, 36, 1, 37, 1, 38, 1, 39, 1, 40, 1, 41, 1, 42, 1, 43, + 1, 44, 1, 45, 0, 250, 0, 215, 1, 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, + 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, + 1, 62, 0, 226, 0, 227, 1, 63, 1, 64, 1, 65, 1, 66, 1, 67, 1, 68, 1, 69, + 1, 70, 1, 71, 1, 72, 1, 73, 1, 74, 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, + 1, 80, 1, 81, 1, 82, 1, 83, 1, 84, 1, 85, 1, 86, 1, 87, 1, 88, 0, 251, + 0, 252, 1, 89, 1, 90, 1, 91, 1, 92, 1, 93, 1, 94, 1, 95, 1, 96, 1, 97, + 1, 98, 1, 99, 1, 100, 1, 101, 1, 102, 1, 103, 1, 104, 1, 105, 1, 106, 1, 107, + 1, 108, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 114, 0, 230, 0, 231, 1, 115, + 1, 116, 1, 117, 1, 118, 1, 119, 1, 120, 1, 121, 0, 225, 1, 122, 0, 219, 0, 220, + 0, 221, 0, 224, 0, 223, 1, 123, 1, 124, 1, 125, 1, 126, 1, 127, 1, 128, 1, 129, + 1, 130, 0, 188, 1, 131, 1, 132, 1, 133, 1, 134, 1, 135, 1, 136, 1, 137, 1, 138, + 1, 139, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 1, 146, 1, 147, 1, 148, + 1, 149, 1, 150, 1, 151, 1, 152, 1, 153, 1, 154, 1, 155, 1, 156, 1, 157, 1, 158, + 1, 159, 1, 160, 1, 161, 1, 162, 1, 163, 1, 164, 1, 165, 1, 166, 1, 167, 1, 168, + 1, 169, 1, 170, 1, 171, 1, 172, 1, 173, 0, 152, 0, 168, 0, 154, 0, 153, 1, 174, + 0, 239, 1, 175, 1, 176, 0, 165, 0, 146, 0, 156, 0, 167, 0, 143, 0, 148, 0, 149, + 0, 185, 0, 192, 1, 177, 0, 193, 1, 178, 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, + 1, 184, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 190, 1, 191, 1, 192, 1, 193, + 1, 194, 1, 195, 1, 196, 1, 197, 1, 198, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, + 1, 204, 1, 205, 1, 206, 1, 207, 1, 208, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, + 1, 214, 1, 215, 1, 216, 1, 217, 1, 218, 1, 219, 1, 220, 1, 221, 1, 222, 1, 223, + 1, 224, 1, 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1, 231, 1, 232, 1, 233, + 1, 234, 1, 235, 1, 236, 1, 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1, 243, + 1, 244, 1, 245, 1, 246, 1, 247, 1, 248, 1, 249, 1, 250, 1, 251, 1, 252, 1, 253, + 1, 254, 1, 255, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, + 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, + 2, 18, 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, + 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34, 2, 35, 2, 36, 2, 37, + 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2, 46, 2, 47, + 2, 48, 2, 49, 2, 50, 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, + 2, 58, 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66, 2, 67, + 2, 68, 2, 69, 2, 70, 2, 71, 2, 72, 2, 73, 2, 74, 2, 75, 2, 76, 2, 77, + 2, 78, 2, 79, 2, 80, 2, 81, 2, 82, 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, + 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2, 96, 2, 97, + 2, 98, 2, 99, 2, 100, 2, 101, 2, 102, 2, 103, 2, 104, 2, 105, 2, 106, 2, 107, + 2, 108, 2, 109, 2, 110, 2, 111, 2, 112, 2, 113, 2, 114, 2, 115, 2, 116, 2, 117, + 2, 118, 2, 119, 2, 120, 2, 121, 2, 122, 2, 123, 2, 124, 2, 125, 2, 126, 2, 127, + 2, 128, 2, 129, 2, 130, 2, 131, 2, 132, 2, 133, 2, 134, 2, 135, 2, 136, 2, 137, + 2, 138, 2, 139, 2, 140, 2, 141, 2, 142, 2, 143, 2, 144, 2, 145, 2, 146, 2, 147, + 2, 148, 2, 149, 2, 150, 2, 151, 2, 152, 2, 153, 2, 154, 2, 155, 2, 156, 2, 157, + 2, 158, 2, 159, 2, 160, 2, 161, 2, 162, 2, 163, 2, 164, 2, 165, 2, 166, 2, 167, + 2, 168, 2, 169, 2, 170, 2, 171, 2, 172, 2, 173, 2, 174, 2, 175, 2, 176, 2, 177, + 2, 178, 2, 179, 2, 180, 2, 181, 2, 182, 2, 183, 2, 184, 2, 185, 2, 186, 2, 187, + 2, 188, 2, 189, 2, 190, 2, 191, 2, 192, 2, 193, 2, 194, 2, 195, 2, 196, 2, 197, + 2, 198, 2, 199, 2, 200, 2, 201, 2, 202, 2, 203, 2, 204, 2, 205, 2, 206, 2, 207, + 2, 208, 2, 209, 2, 210, 2, 211, 2, 212, 2, 213, 2, 214, 2, 215, 2, 216, 2, 217, + 2, 218, 2, 219, 2, 220, 2, 221, 2, 222, 2, 223, 2, 224, 2, 225, 2, 226, 2, 227, + 2, 228, 2, 229, 2, 230, 2, 231, 2, 232, 2, 233, 2, 234, 2, 235, 2, 236, 2, 237, + 2, 238, 2, 239, 2, 240, 2, 241, 2, 242, 2, 243, 2, 244, 2, 245, 2, 246, 2, 247, + 2, 248, 2, 249, 2, 250, 2, 251, 2, 252, 2, 253, 2, 254, 2, 255, 3, 0, 3, 1, + 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, + 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, + 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, + 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, + 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, + 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, + 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, + 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, + 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, + 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, + 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, + 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, + 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, + 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, + 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, + 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, + 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 0, 159, 3, 168, 3, 169, 3, 170, + 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, + 3, 181, 3, 182, 0, 155, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 3, 189, + 3, 190, 3, 191, 3, 192, 3, 193, 3, 194, 3, 195, 3, 196, 3, 197, 3, 198, 3, 199, + 3, 200, 3, 201, 3, 202, 3, 203, 3, 204, 3, 205, 3, 206, 3, 207, 3, 208, 3, 209, + 3, 210, 3, 211, 3, 212, 3, 213, 3, 214, 3, 215, 3, 216, 3, 217, 3, 218, 3, 219, + 3, 220, 3, 221, 3, 222, 3, 223, 3, 224, 3, 225, 3, 226, 3, 227, 3, 228, 3, 229, + 3, 230, 3, 231, 3, 232, 3, 233, 3, 234, 3, 235, 3, 236, 3, 237, 3, 238, 3, 239, + 3, 240, 3, 241, 3, 242, 3, 243, 3, 244, 3, 245, 3, 246, 3, 247, 3, 248, 3, 249, + 3, 250, 3, 251, 3, 252, 3, 253, 3, 254, 3, 255, 4, 0, 4, 1, 4, 2, 4, 3, + 4, 4, 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, + 4, 14, 4, 15, 4, 16, 4, 17, 4, 18, 4, 19, 4, 20, 4, 21, 4, 22, 4, 23, + 4, 24, 4, 25, 4, 26, 4, 27, 4, 28, 4, 29, 4, 30, 4, 31, 4, 32, 4, 33, + 4, 34, 4, 35, 4, 36, 4, 37, 4, 38, 4, 39, 4, 40, 4, 41, 4, 42, 4, 43, + 4, 44, 4, 45, 4, 46, 4, 47, 4, 48, 4, 49, 4, 50, 4, 51, 4, 52, 4, 53, + 4, 54, 4, 55, 4, 56, 4, 57, 4, 58, 4, 59, 4, 60, 4, 61, 4, 62, 4, 63, + 4, 64, 4, 65, 4, 66, 4, 67, 4, 68, 4, 69, 4, 70, 4, 71, 4, 72, 4, 73, + 4, 74, 4, 75, 4, 76, 4, 77, 4, 78, 4, 79, 4, 80, 4, 81, 4, 82, 4, 83, + 4, 84, 4, 85, 4, 86, 4, 87, 4, 88, 4, 89, 4, 90, 4, 91, 4, 92, 4, 93, + 4, 94, 4, 95, 4, 96, 4, 97, 4, 98, 4, 99, 4, 100, 4, 101, 4, 102, 4, 103, + 4, 104, 4, 105, 4, 106, 4, 107, 4, 108, 4, 109, 4, 110, 4, 111, 4, 112, 4, 113, + 4, 114, 4, 115, 4, 116, 4, 117, 4, 118, 4, 119, 4, 120, 4, 121, 4, 122, 4, 123, + 4, 124, 4, 125, 4, 126, 4, 127, 4, 128, 4, 129, 4, 130, 4, 131, 4, 132, 4, 133, + 4, 134, 4, 135, 4, 136, 4, 137, 4, 138, 4, 139, 4, 140, 4, 141, 4, 142, 4, 143, + 4, 144, 4, 145, 4, 146, 4, 147, 4, 148, 4, 149, 4, 150, 4, 151, 4, 152, 4, 153, + 4, 154, 4, 155, 4, 156, 4, 157, 4, 158, 4, 159, 4, 160, 4, 161, 4, 162, 4, 163, + 4, 164, 4, 165, 4, 166, 4, 167, 4, 168, 4, 169, 4, 170, 4, 171, 4, 172, 4, 173, + 4, 174, 4, 175, 4, 176, 4, 177, 4, 178, 4, 179, 4, 180, 4, 181, 4, 182, 4, 183, + 4, 184, 4, 185, 4, 186, 4, 187, 4, 188, 4, 189, 4, 190, 4, 191, 4, 192, 4, 193, + 4, 194, 4, 195, 4, 196, 4, 197, 4, 198, 4, 199, 4, 200, 4, 201, 4, 202, 4, 203, + 4, 204, 4, 205, 4, 206, 4, 207, 4, 208, 4, 209, 4, 210, 4, 211, 4, 212, 4, 213, + 4, 214, 4, 215, 4, 216, 4, 217, 4, 218, 4, 219, 4, 220, 4, 221, 4, 222, 4, 223, + 4, 224, 4, 225, 4, 226, 4, 227, 4, 228, 4, 229, 4, 230, 4, 231, 4, 232, 4, 233, + 4, 234, 4, 235, 4, 236, 4, 237, 4, 238, 4, 239, 4, 240, 4, 241, 4, 242, 4, 243, + 4, 244, 4, 245, 4, 246, 4, 247, 4, 248, 4, 249, 4, 250, 4, 251, 4, 252, 4, 253, + 4, 254, 4, 255, 5, 0, 5, 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, + 5, 8, 5, 9, 5, 10, 5, 11, 4, 69, 117, 114, 111, 7, 117, 110, 105, 48, 48, 65, + 48, 7, 117, 110, 105, 48, 48, 65, 68, 7, 65, 109, 97, 99, 114, 111, 110, 7, 97, 109, + 97, 99, 114, 111, 110, 6, 65, 98, 114, 101, 118, 101, 6, 97, 98, 114, 101, 118, 101, 7, + 65, 111, 103, 111, 110, 101, 107, 7, 97, 111, 103, 111, 110, 101, 107, 11, 67, 99, 105, 114, + 99, 117, 109, 102, 108, 101, 120, 11, 99, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 10, + 67, 100, 111, 116, 97, 99, 99, 101, 110, 116, 10, 99, 100, 111, 116, 97, 99, 99, 101, 110, + 116, 6, 68, 99, 97, 114, 111, 110, 6, 100, 99, 97, 114, 111, 110, 6, 68, 99, 114, 111, + 97, 116, 7, 69, 109, 97, 99, 114, 111, 110, 7, 101, 109, 97, 99, 114, 111, 110, 6, 69, + 98, 114, 101, 118, 101, 6, 101, 98, 114, 101, 118, 101, 10, 69, 100, 111, 116, 97, 99, 99, + 101, 110, 116, 10, 101, 100, 111, 116, 97, 99, 99, 101, 110, 116, 7, 69, 111, 103, 111, 110, + 101, 107, 7, 101, 111, 103, 111, 110, 101, 107, 6, 69, 99, 97, 114, 111, 110, 6, 101, 99, + 97, 114, 111, 110, 11, 71, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 103, 99, 105, + 114, 99, 117, 109, 102, 108, 101, 120, 10, 71, 100, 111, 116, 97, 99, 99, 101, 110, 116, 10, + 103, 100, 111, 116, 97, 99, 99, 101, 110, 116, 12, 71, 99, 111, 109, 109, 97, 97, 99, 99, + 101, 110, 116, 12, 103, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 11, 72, 99, 105, + 114, 99, 117, 109, 102, 108, 101, 120, 11, 104, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, + 4, 72, 98, 97, 114, 4, 104, 98, 97, 114, 6, 73, 116, 105, 108, 100, 101, 6, 105, 116, + 105, 108, 100, 101, 7, 73, 109, 97, 99, 114, 111, 110, 7, 105, 109, 97, 99, 114, 111, 110, + 6, 73, 98, 114, 101, 118, 101, 6, 105, 98, 114, 101, 118, 101, 7, 73, 111, 103, 111, 110, + 101, 107, 7, 105, 111, 103, 111, 110, 101, 107, 6, 105, 46, 108, 111, 99, 108, 2, 73, 74, + 2, 105, 106, 11, 74, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 106, 99, 105, 114, + 99, 117, 109, 102, 108, 101, 120, 12, 75, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, + 12, 107, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 17, 107, 103, 114, 101, 101, 110, + 108, 97, 110, 100, 105, 99, 46, 99, 97, 115, 101, 12, 107, 103, 114, 101, 101, 110, 108, 97, + 110, 100, 105, 99, 6, 76, 97, 99, 117, 116, 101, 6, 108, 97, 99, 117, 116, 101, 12, 76, + 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 12, 108, 99, 111, 109, 109, 97, 97, 99, + 99, 101, 110, 116, 6, 76, 99, 97, 114, 111, 110, 6, 108, 99, 97, 114, 111, 110, 4, 76, + 100, 111, 116, 4, 108, 100, 111, 116, 6, 78, 97, 99, 117, 116, 101, 6, 110, 97, 99, 117, + 116, 101, 12, 78, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 12, 110, 99, 111, 109, + 109, 97, 97, 99, 99, 101, 110, 116, 6, 78, 99, 97, 114, 111, 110, 6, 110, 99, 97, 114, + 111, 110, 16, 110, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 46, 99, 97, 115, 101, 11, + 110, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 3, 69, 110, 103, 3, 101, 110, 103, 7, + 79, 109, 97, 99, 114, 111, 110, 7, 111, 109, 97, 99, 114, 111, 110, 6, 79, 98, 114, 101, + 118, 101, 6, 111, 98, 114, 101, 118, 101, 13, 79, 104, 117, 110, 103, 97, 114, 117, 109, 108, + 97, 117, 116, 13, 111, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 6, 82, 97, + 99, 117, 116, 101, 6, 114, 97, 99, 117, 116, 101, 12, 82, 99, 111, 109, 109, 97, 97, 99, + 99, 101, 110, 116, 12, 114, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 6, 82, 99, + 97, 114, 111, 110, 6, 114, 99, 97, 114, 111, 110, 6, 83, 97, 99, 117, 116, 101, 6, 115, + 97, 99, 117, 116, 101, 11, 83, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 115, 99, + 105, 114, 99, 117, 109, 102, 108, 101, 120, 7, 117, 110, 105, 48, 49, 54, 50, 7, 117, 110, + 105, 48, 49, 54, 51, 6, 84, 99, 97, 114, 111, 110, 6, 116, 99, 97, 114, 111, 110, 4, + 84, 98, 97, 114, 4, 116, 98, 97, 114, 6, 85, 116, 105, 108, 100, 101, 6, 117, 116, 105, + 108, 100, 101, 7, 85, 109, 97, 99, 114, 111, 110, 7, 117, 109, 97, 99, 114, 111, 110, 6, + 85, 98, 114, 101, 118, 101, 6, 117, 98, 114, 101, 118, 101, 5, 85, 114, 105, 110, 103, 5, + 117, 114, 105, 110, 103, 13, 85, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 13, + 117, 104, 117, 110, 103, 97, 114, 117, 109, 108, 97, 117, 116, 7, 85, 111, 103, 111, 110, 101, + 107, 7, 117, 111, 103, 111, 110, 101, 107, 11, 87, 99, 105, 114, 99, 117, 109, 102, 108, 101, + 120, 11, 119, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 11, 89, 99, 105, 114, 99, 117, + 109, 102, 108, 101, 120, 11, 121, 99, 105, 114, 99, 117, 109, 102, 108, 101, 120, 6, 90, 97, + 99, 117, 116, 101, 6, 122, 97, 99, 117, 116, 101, 10, 90, 100, 111, 116, 97, 99, 99, 101, + 110, 116, 10, 122, 100, 111, 116, 97, 99, 99, 101, 110, 116, 5, 108, 111, 110, 103, 115, 12, + 83, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 12, 115, 99, 111, 109, 109, 97, 97, + 99, 99, 101, 110, 116, 7, 117, 110, 105, 48, 50, 49, 65, 7, 117, 110, 105, 48, 50, 49, + 66, 8, 100, 111, 116, 108, 101, 115, 115, 106, 10, 97, 112, 111, 115, 116, 114, 111, 112, 104, + 101, 7, 117, 110, 105, 48, 50, 67, 57, 6, 87, 103, 114, 97, 118, 101, 6, 119, 103, 114, + 97, 118, 101, 6, 87, 97, 99, 117, 116, 101, 6, 119, 97, 99, 117, 116, 101, 9, 87, 100, + 105, 101, 114, 101, 115, 105, 115, 9, 119, 100, 105, 101, 114, 101, 115, 105, 115, 6, 89, 103, + 114, 97, 118, 101, 6, 121, 103, 114, 97, 118, 101, 12, 122, 101, 114, 111, 115, 117, 112, 101, + 114, 105, 111, 114, 12, 102, 111, 117, 114, 115, 117, 112, 101, 114, 105, 111, 114, 12, 102, 105, + 118, 101, 115, 117, 112, 101, 114, 105, 111, 114, 11, 115, 105, 120, 115, 117, 112, 101, 114, 105, + 111, 114, 13, 115, 101, 118, 101, 110, 115, 117, 112, 101, 114, 105, 111, 114, 13, 101, 105, 103, + 104, 116, 115, 117, 112, 101, 114, 105, 111, 114, 12, 110, 105, 110, 101, 115, 117, 112, 101, 114, + 105, 111, 114, 12, 122, 101, 114, 111, 105, 110, 102, 101, 114, 105, 111, 114, 11, 111, 110, 101, + 105, 110, 102, 101, 114, 105, 111, 114, 11, 116, 119, 111, 105, 110, 102, 101, 114, 105, 111, 114, + 13, 116, 104, 114, 101, 101, 105, 110, 102, 101, 114, 105, 111, 114, 12, 102, 111, 117, 114, 105, + 110, 102, 101, 114, 105, 111, 114, 12, 102, 105, 118, 101, 105, 110, 102, 101, 114, 105, 111, 114, + 11, 115, 105, 120, 105, 110, 102, 101, 114, 105, 111, 114, 13, 115, 101, 118, 101, 110, 105, 110, + 102, 101, 114, 105, 111, 114, 13, 101, 105, 103, 104, 116, 105, 110, 102, 101, 114, 105, 111, 114, + 12, 110, 105, 110, 101, 105, 110, 102, 101, 114, 105, 111, 114, 9, 97, 102, 105, 105, 54, 49, + 50, 56, 57, 9, 101, 115, 116, 105, 109, 97, 116, 101, 100, 8, 111, 110, 101, 116, 104, 105, + 114, 100, 9, 116, 119, 111, 116, 104, 105, 114, 100, 115, 9, 111, 110, 101, 101, 105, 103, 104, + 116, 104, 12, 116, 104, 114, 101, 101, 101, 105, 103, 104, 116, 104, 115, 11, 102, 105, 118, 101, + 101, 105, 103, 104, 116, 104, 115, 12, 115, 101, 118, 101, 110, 101, 105, 103, 104, 116, 104, 115, + 8, 111, 110, 101, 102, 105, 102, 116, 104, 9, 116, 119, 111, 102, 105, 102, 116, 104, 115, 11, + 116, 104, 114, 101, 101, 102, 105, 102, 116, 104, 115, 10, 102, 111, 117, 114, 102, 105, 102, 116, + 104, 115, 8, 111, 110, 101, 115, 105, 120, 116, 104, 10, 102, 105, 118, 101, 115, 105, 120, 116, + 104, 115, 10, 111, 110, 101, 115, 101, 118, 101, 110, 116, 104, 11, 116, 119, 111, 115, 101, 118, + 101, 110, 116, 104, 115, 13, 116, 104, 114, 101, 101, 115, 101, 118, 101, 110, 116, 104, 115, 12, + 102, 111, 117, 114, 115, 101, 118, 101, 110, 116, 104, 115, 12, 102, 105, 118, 101, 115, 101, 118, + 101, 110, 116, 104, 115, 11, 115, 105, 120, 115, 101, 118, 101, 110, 116, 104, 115, 8, 111, 110, + 101, 110, 105, 110, 116, 104, 9, 116, 119, 111, 110, 105, 110, 116, 104, 115, 10, 102, 111, 117, + 114, 110, 105, 110, 116, 104, 115, 10, 102, 105, 118, 101, 110, 105, 110, 116, 104, 115, 11, 115, + 101, 118, 101, 110, 110, 105, 110, 116, 104, 115, 11, 101, 105, 103, 104, 116, 110, 105, 110, 116, + 104, 115, 7, 117, 110, 105, 50, 49, 50, 54, 7, 117, 110, 105, 50, 50, 49, 53, 7, 117, + 110, 105, 50, 50, 49, 57, 3, 102, 95, 105, 3, 102, 95, 108, 9, 122, 101, 114, 111, 46, + 115, 117, 112, 115, 8, 111, 110, 101, 46, 115, 117, 112, 115, 8, 116, 119, 111, 46, 115, 117, + 112, 115, 10, 116, 104, 114, 101, 101, 46, 115, 117, 112, 115, 9, 102, 111, 117, 114, 46, 115, + 117, 112, 115, 9, 102, 105, 118, 101, 46, 115, 117, 112, 115, 8, 115, 105, 120, 46, 115, 117, + 112, 115, 10, 115, 101, 118, 101, 110, 46, 115, 117, 112, 115, 10, 101, 105, 103, 104, 116, 46, + 115, 117, 112, 115, 9, 110, 105, 110, 101, 46, 115, 117, 112, 115, 9, 122, 101, 114, 111, 46, + 115, 105, 110, 102, 8, 111, 110, 101, 46, 115, 105, 110, 102, 8, 116, 119, 111, 46, 115, 105, + 110, 102, 10, 116, 104, 114, 101, 101, 46, 115, 105, 110, 102, 9, 102, 111, 117, 114, 46, 115, + 105, 110, 102, 9, 102, 105, 118, 101, 46, 115, 105, 110, 102, 8, 115, 105, 120, 46, 115, 105, + 110, 102, 10, 115, 101, 118, 101, 110, 46, 115, 105, 110, 102, 10, 101, 105, 103, 104, 116, 46, + 115, 105, 110, 102, 9, 110, 105, 110, 101, 46, 115, 105, 110, 102, 9, 99, 97, 114, 111, 110, + 46, 97, 108, 116, 11, 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 14, 114, 101, 118, + 99, 111, 109, 109, 97, 97, 99, 99, 101, 110, 116, 15, 99, 97, 114, 111, 110, 46, 97, 108, + 116, 46, 115, 104, 111, 114, 116, 9, 80, 97, 114, 101, 110, 108, 101, 102, 116, 10, 80, 97, + 114, 101, 110, 114, 105, 103, 104, 116, 6, 72, 121, 112, 104, 101, 110, 5, 83, 108, 97, 115, + 104, 2, 65, 116, 11, 66, 114, 97, 99, 107, 101, 116, 108, 101, 102, 116, 9, 66, 97, 99, + 107, 115, 108, 97, 115, 104, 12, 66, 114, 97, 99, 107, 101, 116, 114, 105, 103, 104, 116, 9, + 66, 114, 97, 99, 101, 108, 101, 102, 116, 10, 66, 114, 97, 99, 101, 114, 105, 103, 104, 116, + 13, 71, 117, 105, 108, 115, 105, 110, 103, 108, 108, 101, 102, 116, 6, 66, 117, 108, 108, 101, + 116, 6, 69, 110, 100, 97, 115, 104, 6, 69, 109, 100, 97, 115, 104, 14, 71, 117, 105, 108, + 115, 105, 110, 103, 108, 114, 105, 103, 104, 116, 10, 69, 120, 99, 108, 97, 109, 100, 111, 119, + 110, 13, 71, 117, 105, 108, 108, 101, 109, 111, 116, 108, 101, 102, 116, 14, 71, 117, 105, 108, + 108, 101, 109, 111, 116, 114, 105, 103, 104, 116, 12, 81, 117, 101, 115, 116, 105, 111, 110, 100, + 111, 119, 110, 7, 117, 110, 105, 48, 49, 56, 48, 7, 117, 110, 105, 48, 49, 56, 49, 7, + 117, 110, 105, 48, 49, 56, 50, 7, 117, 110, 105, 48, 49, 56, 51, 7, 117, 110, 105, 48, + 49, 56, 52, 7, 117, 110, 105, 48, 49, 56, 53, 7, 117, 110, 105, 48, 49, 56, 54, 7, + 117, 110, 105, 48, 49, 56, 55, 7, 117, 110, 105, 48, 49, 56, 56, 7, 117, 110, 105, 48, + 49, 56, 57, 7, 117, 110, 105, 48, 49, 56, 65, 7, 117, 110, 105, 48, 49, 56, 66, 7, + 117, 110, 105, 48, 49, 56, 67, 7, 117, 110, 105, 48, 49, 56, 68, 7, 117, 110, 105, 48, + 49, 56, 69, 7, 117, 110, 105, 48, 49, 56, 70, 7, 117, 110, 105, 48, 49, 57, 48, 7, + 117, 110, 105, 48, 49, 57, 49, 7, 117, 110, 105, 48, 49, 57, 51, 7, 117, 110, 105, 48, + 49, 57, 52, 7, 117, 110, 105, 48, 49, 57, 53, 7, 117, 110, 105, 48, 49, 57, 54, 7, + 117, 110, 105, 48, 49, 57, 55, 7, 117, 110, 105, 48, 49, 57, 56, 7, 117, 110, 105, 48, + 49, 57, 57, 7, 117, 110, 105, 48, 49, 57, 65, 7, 117, 110, 105, 48, 49, 57, 66, 7, + 117, 110, 105, 48, 49, 57, 67, 7, 117, 110, 105, 48, 49, 57, 68, 7, 117, 110, 105, 48, + 49, 57, 69, 7, 117, 110, 105, 48, 49, 57, 70, 5, 79, 104, 111, 114, 110, 5, 111, 104, + 111, 114, 110, 7, 117, 110, 105, 48, 49, 65, 50, 7, 117, 110, 105, 48, 49, 65, 51, 7, + 117, 110, 105, 48, 49, 65, 52, 7, 117, 110, 105, 48, 49, 65, 53, 7, 117, 110, 105, 48, + 49, 65, 54, 7, 117, 110, 105, 48, 49, 65, 55, 7, 117, 110, 105, 48, 49, 65, 56, 7, + 117, 110, 105, 48, 49, 65, 57, 7, 117, 110, 105, 48, 49, 65, 65, 7, 117, 110, 105, 48, + 49, 65, 66, 7, 117, 110, 105, 48, 49, 65, 67, 7, 117, 110, 105, 48, 49, 65, 68, 7, + 117, 110, 105, 48, 49, 65, 69, 5, 85, 104, 111, 114, 110, 5, 117, 104, 111, 114, 110, 7, + 117, 110, 105, 48, 49, 66, 49, 7, 117, 110, 105, 48, 49, 66, 50, 7, 117, 110, 105, 48, + 49, 66, 51, 7, 117, 110, 105, 48, 49, 66, 52, 7, 117, 110, 105, 48, 49, 66, 53, 7, + 117, 110, 105, 48, 49, 66, 54, 7, 117, 110, 105, 48, 49, 66, 55, 7, 117, 110, 105, 48, + 49, 66, 56, 7, 117, 110, 105, 48, 49, 66, 57, 7, 117, 110, 105, 48, 49, 66, 65, 7, + 117, 110, 105, 48, 49, 66, 66, 7, 117, 110, 105, 48, 49, 66, 67, 7, 117, 110, 105, 48, + 49, 66, 68, 7, 117, 110, 105, 48, 49, 66, 69, 7, 117, 110, 105, 48, 49, 66, 70, 7, + 117, 110, 105, 48, 49, 67, 48, 7, 117, 110, 105, 48, 49, 67, 49, 7, 117, 110, 105, 48, + 49, 67, 50, 7, 117, 110, 105, 48, 49, 67, 51, 7, 117, 110, 105, 48, 49, 67, 52, 7, + 117, 110, 105, 48, 49, 67, 53, 7, 117, 110, 105, 48, 49, 67, 54, 7, 117, 110, 105, 48, + 49, 67, 55, 7, 117, 110, 105, 48, 49, 67, 56, 7, 117, 110, 105, 48, 49, 67, 57, 7, + 117, 110, 105, 48, 49, 67, 65, 7, 117, 110, 105, 48, 49, 67, 66, 7, 117, 110, 105, 48, + 49, 67, 67, 7, 117, 110, 105, 48, 49, 67, 68, 7, 117, 110, 105, 48, 49, 67, 69, 7, + 117, 110, 105, 48, 49, 67, 70, 7, 117, 110, 105, 48, 49, 68, 48, 7, 117, 110, 105, 48, + 49, 68, 49, 7, 117, 110, 105, 48, 49, 68, 50, 7, 117, 110, 105, 48, 49, 68, 51, 7, + 117, 110, 105, 48, 49, 68, 52, 7, 117, 110, 105, 48, 49, 68, 53, 7, 117, 110, 105, 48, + 49, 68, 54, 7, 117, 110, 105, 48, 49, 68, 55, 7, 117, 110, 105, 48, 49, 68, 56, 7, + 117, 110, 105, 48, 49, 68, 57, 7, 117, 110, 105, 48, 49, 68, 65, 7, 117, 110, 105, 48, + 49, 68, 66, 7, 117, 110, 105, 48, 49, 68, 67, 7, 117, 110, 105, 48, 49, 68, 68, 7, + 117, 110, 105, 48, 49, 68, 69, 7, 117, 110, 105, 48, 49, 68, 70, 7, 117, 110, 105, 48, + 49, 69, 48, 7, 117, 110, 105, 48, 49, 69, 49, 7, 117, 110, 105, 48, 49, 69, 50, 7, + 117, 110, 105, 48, 49, 69, 51, 7, 117, 110, 105, 48, 49, 69, 52, 7, 117, 110, 105, 48, + 49, 69, 53, 6, 71, 99, 97, 114, 111, 110, 6, 103, 99, 97, 114, 111, 110, 7, 117, 110, + 105, 48, 49, 69, 56, 7, 117, 110, 105, 48, 49, 69, 57, 7, 117, 110, 105, 48, 49, 69, + 65, 7, 117, 110, 105, 48, 49, 69, 66, 7, 117, 110, 105, 48, 49, 69, 67, 7, 117, 110, + 105, 48, 49, 69, 68, 7, 117, 110, 105, 48, 49, 69, 69, 7, 117, 110, 105, 48, 49, 69, + 70, 7, 117, 110, 105, 48, 49, 70, 48, 7, 117, 110, 105, 48, 49, 70, 49, 7, 117, 110, + 105, 48, 49, 70, 50, 7, 117, 110, 105, 48, 49, 70, 51, 7, 117, 110, 105, 48, 49, 70, + 52, 7, 117, 110, 105, 48, 49, 70, 53, 7, 117, 110, 105, 48, 49, 70, 54, 7, 117, 110, + 105, 48, 49, 70, 55, 7, 117, 110, 105, 48, 49, 70, 56, 7, 117, 110, 105, 48, 49, 70, + 57, 10, 65, 114, 105, 110, 103, 97, 99, 117, 116, 101, 10, 97, 114, 105, 110, 103, 97, 99, + 117, 116, 101, 7, 65, 69, 97, 99, 117, 116, 101, 7, 97, 101, 97, 99, 117, 116, 101, 11, + 79, 115, 108, 97, 115, 104, 97, 99, 117, 116, 101, 11, 111, 115, 108, 97, 115, 104, 97, 99, + 117, 116, 101, 7, 117, 110, 105, 48, 50, 48, 48, 7, 117, 110, 105, 48, 50, 48, 49, 7, + 117, 110, 105, 48, 50, 48, 50, 7, 117, 110, 105, 48, 50, 48, 51, 7, 117, 110, 105, 48, + 50, 48, 52, 7, 117, 110, 105, 48, 50, 48, 53, 7, 117, 110, 105, 48, 50, 48, 54, 7, + 117, 110, 105, 48, 50, 48, 55, 7, 117, 110, 105, 48, 50, 48, 56, 7, 117, 110, 105, 48, + 50, 48, 57, 7, 117, 110, 105, 48, 50, 48, 65, 7, 117, 110, 105, 48, 50, 48, 66, 7, + 117, 110, 105, 48, 50, 48, 67, 7, 117, 110, 105, 48, 50, 48, 68, 7, 117, 110, 105, 48, + 50, 48, 69, 7, 117, 110, 105, 48, 50, 48, 70, 7, 117, 110, 105, 48, 50, 49, 48, 7, + 117, 110, 105, 48, 50, 49, 49, 7, 117, 110, 105, 48, 50, 49, 50, 7, 117, 110, 105, 48, + 50, 49, 51, 7, 117, 110, 105, 48, 50, 49, 52, 7, 117, 110, 105, 48, 50, 49, 53, 7, + 117, 110, 105, 48, 50, 49, 54, 7, 117, 110, 105, 48, 50, 49, 55, 7, 117, 110, 105, 48, + 50, 49, 67, 7, 117, 110, 105, 48, 50, 49, 68, 7, 117, 110, 105, 48, 50, 49, 69, 7, + 117, 110, 105, 48, 50, 49, 70, 7, 117, 110, 105, 48, 50, 50, 48, 7, 117, 110, 105, 48, + 50, 50, 49, 7, 117, 110, 105, 48, 50, 50, 50, 7, 117, 110, 105, 48, 50, 50, 51, 7, + 117, 110, 105, 48, 50, 50, 52, 7, 117, 110, 105, 48, 50, 50, 53, 7, 117, 110, 105, 48, + 50, 50, 54, 7, 117, 110, 105, 48, 50, 50, 55, 7, 117, 110, 105, 48, 50, 50, 56, 7, + 117, 110, 105, 48, 50, 50, 57, 7, 117, 110, 105, 48, 50, 50, 65, 7, 117, 110, 105, 48, + 50, 50, 66, 7, 117, 110, 105, 48, 50, 50, 67, 7, 117, 110, 105, 48, 50, 50, 68, 7, + 117, 110, 105, 48, 50, 50, 69, 7, 117, 110, 105, 48, 50, 50, 70, 7, 117, 110, 105, 48, + 50, 51, 48, 7, 117, 110, 105, 48, 50, 51, 49, 7, 117, 110, 105, 48, 50, 51, 50, 7, + 117, 110, 105, 48, 50, 51, 51, 7, 117, 110, 105, 48, 50, 51, 52, 7, 117, 110, 105, 48, + 50, 51, 53, 7, 117, 110, 105, 48, 50, 51, 54, 7, 117, 110, 105, 48, 50, 51, 56, 7, + 117, 110, 105, 48, 50, 51, 57, 7, 117, 110, 105, 48, 50, 51, 65, 7, 117, 110, 105, 48, + 50, 51, 66, 7, 117, 110, 105, 48, 50, 51, 67, 7, 117, 110, 105, 48, 50, 51, 68, 7, + 117, 110, 105, 48, 50, 51, 69, 7, 117, 110, 105, 48, 50, 51, 70, 7, 117, 110, 105, 48, + 50, 52, 48, 7, 117, 110, 105, 48, 50, 52, 49, 7, 117, 110, 105, 48, 50, 52, 50, 7, + 117, 110, 105, 48, 50, 52, 51, 7, 117, 110, 105, 48, 50, 52, 52, 7, 117, 110, 105, 48, + 50, 52, 53, 7, 117, 110, 105, 48, 50, 52, 54, 7, 117, 110, 105, 48, 50, 52, 55, 7, + 117, 110, 105, 48, 50, 52, 56, 7, 117, 110, 105, 48, 50, 52, 57, 7, 117, 110, 105, 48, + 50, 52, 65, 7, 117, 110, 105, 48, 50, 52, 66, 7, 117, 110, 105, 48, 50, 52, 67, 7, + 117, 110, 105, 48, 50, 52, 68, 7, 117, 110, 105, 48, 50, 52, 69, 7, 117, 110, 105, 48, + 50, 52, 70, 7, 117, 110, 105, 48, 50, 57, 50, 14, 98, 114, 101, 118, 101, 95, 105, 110, + 118, 101, 114, 116, 101, 100, 12, 100, 111, 117, 98, 108, 101, 95, 103, 114, 97, 118, 101, 10, + 114, 105, 110, 103, 95, 97, 99, 117, 116, 101, 15, 100, 105, 101, 114, 101, 115, 105, 115, 95, + 109, 97, 99, 114, 111, 110, 10, 100, 111, 116, 95, 109, 97, 99, 114, 111, 110, 14, 100, 105, + 101, 114, 101, 115, 105, 115, 95, 103, 114, 97, 118, 101, 14, 100, 105, 101, 114, 101, 115, 105, + 115, 95, 97, 99, 117, 116, 101, 14, 100, 105, 101, 114, 101, 115, 105, 115, 95, 98, 114, 101, + 118, 101, 12, 116, 105, 108, 100, 101, 95, 109, 97, 99, 114, 111, 110, 18, 100, 105, 101, 114, + 101, 115, 105, 115, 95, 103, 114, 97, 118, 101, 46, 99, 97, 112, 18, 100, 105, 101, 114, 101, + 115, 105, 115, 95, 97, 99, 117, 116, 101, 46, 99, 97, 112, 18, 100, 105, 101, 114, 101, 115, + 105, 115, 95, 98, 114, 101, 118, 101, 46, 99, 97, 112, 7, 117, 110, 105, 48, 52, 48, 48, + 9, 97, 102, 105, 105, 49, 48, 48, 50, 51, 9, 97, 102, 105, 105, 49, 48, 48, 53, 49, + 9, 97, 102, 105, 105, 49, 48, 48, 53, 50, 9, 97, 102, 105, 105, 49, 48, 48, 53, 51, + 9, 97, 102, 105, 105, 49, 48, 48, 53, 52, 9, 97, 102, 105, 105, 49, 48, 48, 53, 53, + 9, 97, 102, 105, 105, 49, 48, 48, 53, 54, 9, 97, 102, 105, 105, 49, 48, 48, 53, 55, + 9, 97, 102, 105, 105, 49, 48, 48, 53, 56, 9, 97, 102, 105, 105, 49, 48, 48, 53, 57, + 9, 97, 102, 105, 105, 49, 48, 48, 54, 48, 9, 97, 102, 105, 105, 49, 48, 48, 54, 49, + 7, 117, 110, 105, 48, 52, 48, 68, 9, 97, 102, 105, 105, 49, 48, 48, 54, 50, 9, 97, + 102, 105, 105, 49, 48, 49, 52, 53, 9, 97, 102, 105, 105, 49, 48, 48, 49, 55, 9, 97, + 102, 105, 105, 49, 48, 48, 49, 56, 9, 97, 102, 105, 105, 49, 48, 48, 49, 57, 9, 97, + 102, 105, 105, 49, 48, 48, 50, 48, 9, 97, 102, 105, 105, 49, 48, 48, 50, 49, 9, 97, + 102, 105, 105, 49, 48, 48, 50, 50, 9, 97, 102, 105, 105, 49, 48, 48, 50, 52, 9, 97, + 102, 105, 105, 49, 48, 48, 50, 53, 9, 97, 102, 105, 105, 49, 48, 48, 50, 54, 9, 97, + 102, 105, 105, 49, 48, 48, 50, 55, 9, 97, 102, 105, 105, 49, 48, 48, 50, 56, 9, 97, + 102, 105, 105, 49, 48, 48, 50, 57, 9, 97, 102, 105, 105, 49, 48, 48, 51, 48, 9, 97, + 102, 105, 105, 49, 48, 48, 51, 49, 9, 97, 102, 105, 105, 49, 48, 48, 51, 50, 9, 97, + 102, 105, 105, 49, 48, 48, 51, 51, 9, 97, 102, 105, 105, 49, 48, 48, 51, 52, 9, 97, + 102, 105, 105, 49, 48, 48, 51, 53, 9, 97, 102, 105, 105, 49, 48, 48, 51, 54, 9, 97, + 102, 105, 105, 49, 48, 48, 51, 55, 9, 97, 102, 105, 105, 49, 48, 48, 51, 56, 9, 97, + 102, 105, 105, 49, 48, 48, 51, 57, 9, 97, 102, 105, 105, 49, 48, 48, 52, 48, 9, 97, + 102, 105, 105, 49, 48, 48, 52, 49, 9, 97, 102, 105, 105, 49, 48, 48, 52, 50, 9, 97, + 102, 105, 105, 49, 48, 48, 52, 51, 9, 97, 102, 105, 105, 49, 48, 48, 52, 52, 9, 97, + 102, 105, 105, 49, 48, 48, 52, 53, 9, 97, 102, 105, 105, 49, 48, 48, 52, 54, 9, 97, + 102, 105, 105, 49, 48, 48, 52, 55, 9, 97, 102, 105, 105, 49, 48, 48, 52, 56, 9, 97, + 102, 105, 105, 49, 48, 48, 52, 57, 9, 97, 102, 105, 105, 49, 48, 48, 54, 53, 9, 97, + 102, 105, 105, 49, 48, 48, 54, 54, 9, 97, 102, 105, 105, 49, 48, 48, 54, 55, 9, 97, + 102, 105, 105, 49, 48, 48, 54, 56, 9, 97, 102, 105, 105, 49, 48, 48, 54, 57, 9, 97, + 102, 105, 105, 49, 48, 48, 55, 48, 9, 97, 102, 105, 105, 49, 48, 48, 55, 50, 9, 97, + 102, 105, 105, 49, 48, 48, 55, 51, 9, 97, 102, 105, 105, 49, 48, 48, 55, 52, 9, 97, + 102, 105, 105, 49, 48, 48, 55, 53, 9, 97, 102, 105, 105, 49, 48, 48, 55, 54, 9, 97, + 102, 105, 105, 49, 48, 48, 55, 55, 9, 97, 102, 105, 105, 49, 48, 48, 55, 56, 9, 97, + 102, 105, 105, 49, 48, 48, 55, 57, 9, 97, 102, 105, 105, 49, 48, 48, 56, 48, 9, 97, + 102, 105, 105, 49, 48, 48, 56, 49, 9, 97, 102, 105, 105, 49, 48, 48, 56, 50, 9, 97, + 102, 105, 105, 49, 48, 48, 56, 51, 9, 97, 102, 105, 105, 49, 48, 48, 56, 52, 9, 97, + 102, 105, 105, 49, 48, 48, 56, 53, 9, 97, 102, 105, 105, 49, 48, 48, 56, 54, 9, 97, + 102, 105, 105, 49, 48, 48, 56, 55, 9, 97, 102, 105, 105, 49, 48, 48, 56, 56, 9, 97, + 102, 105, 105, 49, 48, 48, 56, 57, 9, 97, 102, 105, 105, 49, 48, 48, 57, 48, 9, 97, + 102, 105, 105, 49, 48, 48, 57, 49, 9, 97, 102, 105, 105, 49, 48, 48, 57, 50, 9, 97, + 102, 105, 105, 49, 48, 48, 57, 51, 9, 97, 102, 105, 105, 49, 48, 48, 57, 52, 9, 97, + 102, 105, 105, 49, 48, 48, 57, 53, 9, 97, 102, 105, 105, 49, 48, 48, 57, 54, 9, 97, + 102, 105, 105, 49, 48, 48, 57, 55, 7, 117, 110, 105, 48, 52, 53, 48, 9, 97, 102, 105, + 105, 49, 48, 48, 55, 49, 9, 97, 102, 105, 105, 49, 48, 48, 57, 57, 9, 97, 102, 105, + 105, 49, 48, 49, 48, 48, 9, 97, 102, 105, 105, 49, 48, 49, 48, 49, 9, 97, 102, 105, + 105, 49, 48, 49, 48, 50, 9, 97, 102, 105, 105, 49, 48, 49, 48, 51, 9, 97, 102, 105, + 105, 49, 48, 49, 48, 52, 9, 97, 102, 105, 105, 49, 48, 49, 48, 53, 9, 97, 102, 105, + 105, 49, 48, 49, 48, 54, 9, 97, 102, 105, 105, 49, 48, 49, 48, 55, 9, 97, 102, 105, + 105, 49, 48, 49, 48, 56, 9, 97, 102, 105, 105, 49, 48, 49, 48, 57, 7, 117, 110, 105, + 48, 52, 53, 68, 9, 97, 102, 105, 105, 49, 48, 49, 49, 48, 9, 97, 102, 105, 105, 49, + 48, 49, 57, 51, 14, 97, 102, 105, 105, 49, 48, 48, 54, 54, 46, 108, 111, 99, 108, 7, + 117, 110, 105, 48, 52, 54, 50, 7, 117, 110, 105, 48, 52, 54, 51, 7, 117, 110, 105, 48, + 52, 55, 50, 7, 117, 110, 105, 48, 52, 55, 51, 7, 117, 110, 105, 48, 52, 55, 52, 7, + 117, 110, 105, 48, 52, 55, 53, 7, 117, 110, 105, 48, 52, 56, 65, 7, 117, 110, 105, 48, + 52, 56, 66, 7, 117, 110, 105, 48, 52, 56, 67, 7, 117, 110, 105, 48, 52, 56, 68, 7, + 117, 110, 105, 48, 52, 56, 69, 7, 117, 110, 105, 48, 52, 56, 70, 9, 97, 102, 105, 105, + 49, 48, 48, 53, 48, 9, 97, 102, 105, 105, 49, 48, 48, 57, 56, 7, 117, 110, 105, 48, + 52, 57, 50, 7, 117, 110, 105, 48, 52, 57, 51, 7, 117, 110, 105, 48, 52, 57, 52, 7, + 117, 110, 105, 48, 52, 57, 53, 7, 117, 110, 105, 48, 52, 57, 54, 7, 117, 110, 105, 48, + 52, 57, 55, 7, 117, 110, 105, 48, 52, 57, 56, 7, 117, 110, 105, 48, 52, 57, 57, 7, + 117, 110, 105, 48, 52, 57, 65, 7, 117, 110, 105, 48, 52, 57, 66, 7, 117, 110, 105, 48, + 52, 57, 67, 7, 117, 110, 105, 48, 52, 57, 68, 7, 117, 110, 105, 48, 52, 57, 69, 7, + 117, 110, 105, 48, 52, 57, 70, 7, 117, 110, 105, 48, 52, 65, 48, 7, 117, 110, 105, 48, + 52, 65, 49, 7, 117, 110, 105, 48, 52, 65, 50, 7, 117, 110, 105, 48, 52, 65, 51, 7, + 117, 110, 105, 48, 52, 65, 52, 7, 117, 110, 105, 48, 52, 65, 53, 7, 117, 110, 105, 48, + 52, 65, 54, 7, 117, 110, 105, 48, 52, 65, 55, 7, 117, 110, 105, 48, 52, 65, 56, 7, + 117, 110, 105, 48, 52, 65, 57, 7, 117, 110, 105, 48, 52, 65, 65, 7, 117, 110, 105, 48, + 52, 65, 66, 7, 117, 110, 105, 48, 52, 65, 67, 7, 117, 110, 105, 48, 52, 65, 68, 7, + 117, 110, 105, 48, 52, 65, 69, 7, 117, 110, 105, 48, 52, 65, 70, 7, 117, 110, 105, 48, + 52, 66, 48, 7, 117, 110, 105, 48, 52, 66, 49, 7, 117, 110, 105, 48, 52, 66, 50, 7, + 117, 110, 105, 48, 52, 66, 51, 7, 117, 110, 105, 48, 52, 66, 52, 7, 117, 110, 105, 48, + 52, 66, 53, 7, 117, 110, 105, 48, 52, 66, 54, 7, 117, 110, 105, 48, 52, 66, 55, 7, + 117, 110, 105, 48, 52, 66, 56, 7, 117, 110, 105, 48, 52, 66, 57, 7, 117, 110, 105, 48, + 52, 66, 65, 7, 117, 110, 105, 48, 52, 66, 66, 7, 117, 110, 105, 48, 52, 66, 67, 7, + 117, 110, 105, 48, 52, 66, 68, 7, 117, 110, 105, 48, 52, 66, 69, 7, 117, 110, 105, 48, + 52, 66, 70, 7, 117, 110, 105, 48, 52, 67, 48, 7, 117, 110, 105, 48, 52, 67, 49, 7, + 117, 110, 105, 48, 52, 67, 50, 7, 117, 110, 105, 48, 52, 67, 51, 7, 117, 110, 105, 48, + 52, 67, 52, 7, 117, 110, 105, 48, 52, 67, 53, 7, 117, 110, 105, 48, 52, 67, 54, 7, + 117, 110, 105, 48, 52, 67, 55, 7, 117, 110, 105, 48, 52, 67, 56, 7, 117, 110, 105, 48, + 52, 67, 57, 7, 117, 110, 105, 48, 52, 67, 65, 7, 117, 110, 105, 48, 52, 67, 66, 7, + 117, 110, 105, 48, 52, 67, 67, 7, 117, 110, 105, 48, 52, 67, 68, 7, 117, 110, 105, 48, + 52, 67, 69, 7, 117, 110, 105, 48, 52, 67, 70, 7, 117, 110, 105, 48, 52, 68, 48, 7, + 117, 110, 105, 48, 52, 68, 49, 7, 117, 110, 105, 48, 52, 68, 50, 7, 117, 110, 105, 48, + 52, 68, 51, 7, 117, 110, 105, 48, 52, 68, 52, 7, 117, 110, 105, 48, 52, 68, 53, 7, + 117, 110, 105, 48, 52, 68, 54, 7, 117, 110, 105, 48, 52, 68, 55, 7, 117, 110, 105, 48, + 52, 68, 56, 7, 117, 110, 105, 48, 52, 68, 57, 7, 117, 110, 105, 48, 52, 68, 65, 7, + 117, 110, 105, 48, 52, 68, 66, 7, 117, 110, 105, 48, 52, 68, 67, 7, 117, 110, 105, 48, + 52, 68, 68, 7, 117, 110, 105, 48, 52, 68, 69, 7, 117, 110, 105, 48, 52, 68, 70, 7, + 117, 110, 105, 48, 52, 69, 48, 7, 117, 110, 105, 48, 52, 69, 49, 7, 117, 110, 105, 48, + 52, 69, 50, 7, 117, 110, 105, 48, 52, 69, 51, 7, 117, 110, 105, 48, 52, 69, 52, 7, + 117, 110, 105, 48, 52, 69, 53, 7, 117, 110, 105, 48, 52, 69, 54, 7, 117, 110, 105, 48, + 52, 69, 55, 7, 117, 110, 105, 48, 52, 69, 56, 7, 117, 110, 105, 48, 52, 69, 57, 7, + 117, 110, 105, 48, 52, 69, 65, 7, 117, 110, 105, 48, 52, 69, 66, 7, 117, 110, 105, 48, + 52, 69, 67, 7, 117, 110, 105, 48, 52, 69, 68, 7, 117, 110, 105, 48, 52, 69, 69, 7, + 117, 110, 105, 48, 52, 69, 70, 7, 117, 110, 105, 48, 52, 70, 48, 7, 117, 110, 105, 48, + 52, 70, 49, 7, 117, 110, 105, 48, 52, 70, 50, 7, 117, 110, 105, 48, 52, 70, 51, 7, + 117, 110, 105, 48, 52, 70, 52, 7, 117, 110, 105, 48, 52, 70, 53, 7, 117, 110, 105, 48, + 52, 70, 54, 7, 117, 110, 105, 48, 52, 70, 55, 7, 117, 110, 105, 48, 52, 70, 56, 7, + 117, 110, 105, 48, 52, 70, 57, 9, 97, 102, 105, 105, 54, 49, 51, 53, 50, 9, 97, 102, + 105, 105, 48, 48, 50, 48, 56, 7, 117, 110, 105, 50, 48, 66, 52, 7, 117, 110, 105, 50, + 48, 65, 69, 6, 107, 114, 97, 116, 107, 97, 5, 65, 108, 112, 104, 97, 4, 66, 101, 116, + 97, 5, 71, 97, 109, 109, 97, 7, 117, 110, 105, 48, 51, 57, 52, 7, 69, 112, 115, 105, + 108, 111, 110, 4, 90, 101, 116, 97, 3, 69, 116, 97, 5, 84, 104, 101, 116, 97, 4, 73, + 111, 116, 97, 5, 75, 97, 112, 112, 97, 6, 76, 97, 109, 98, 100, 97, 2, 77, 117, 2, + 78, 117, 2, 88, 105, 7, 79, 109, 105, 99, 114, 111, 110, 2, 80, 105, 3, 82, 104, 111, + 5, 83, 105, 103, 109, 97, 3, 84, 97, 117, 7, 85, 112, 115, 105, 108, 111, 110, 3, 80, + 104, 105, 3, 67, 104, 105, 3, 80, 115, 105, 5, 97, 108, 112, 104, 97, 4, 98, 101, 116, + 97, 5, 103, 97, 109, 109, 97, 5, 100, 101, 108, 116, 97, 7, 101, 112, 115, 105, 108, 111, + 110, 4, 122, 101, 116, 97, 3, 101, 116, 97, 5, 116, 104, 101, 116, 97, 4, 105, 111, 116, + 97, 5, 107, 97, 112, 112, 97, 6, 108, 97, 109, 98, 100, 97, 7, 117, 110, 105, 48, 51, + 66, 67, 2, 110, 117, 2, 120, 105, 7, 111, 109, 105, 99, 114, 111, 110, 3, 114, 104, 111, + 6, 115, 105, 103, 109, 97, 49, 5, 115, 105, 103, 109, 97, 3, 116, 97, 117, 7, 117, 112, + 115, 105, 108, 111, 110, 3, 112, 104, 105, 3, 99, 104, 105, 3, 112, 115, 105, 5, 111, 109, + 101, 103, 97, 10, 65, 108, 112, 104, 97, 116, 111, 110, 111, 115, 12, 69, 112, 115, 105, 108, + 111, 110, 116, 111, 110, 111, 115, 8, 69, 116, 97, 116, 111, 110, 111, 115, 9, 73, 111, 116, + 97, 116, 111, 110, 111, 115, 12, 73, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, 115, 12, + 79, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 12, 85, 112, 115, 105, 108, 111, 110, + 116, 111, 110, 111, 115, 15, 85, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, + 115, 10, 79, 109, 101, 103, 97, 116, 111, 110, 111, 115, 10, 97, 108, 112, 104, 97, 116, 111, + 110, 111, 115, 12, 101, 112, 115, 105, 108, 111, 110, 116, 111, 110, 111, 115, 8, 101, 116, 97, + 116, 111, 110, 111, 115, 9, 105, 111, 116, 97, 116, 111, 110, 111, 115, 12, 105, 111, 116, 97, + 100, 105, 101, 114, 101, 115, 105, 115, 17, 105, 111, 116, 97, 100, 105, 101, 114, 101, 115, 105, + 115, 116, 111, 110, 111, 115, 12, 111, 109, 105, 99, 114, 111, 110, 116, 111, 110, 111, 115, 15, + 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, 101, 115, 105, 115, 12, 117, 112, 115, 105, + 108, 111, 110, 116, 111, 110, 111, 115, 20, 117, 112, 115, 105, 108, 111, 110, 100, 105, 101, 114, + 101, 115, 105, 115, 116, 111, 110, 111, 115, 10, 111, 109, 101, 103, 97, 116, 111, 110, 111, 115, + 5, 116, 111, 110, 111, 115, 9, 116, 111, 110, 111, 115, 46, 99, 97, 112, 13, 100, 105, 101, + 114, 101, 115, 105, 115, 116, 111, 110, 111, 115, 7, 117, 110, 105, 49, 70, 48, 48, 7, 117, + 110, 105, 49, 70, 48, 49, 7, 117, 110, 105, 49, 70, 48, 50, 7, 117, 110, 105, 49, 70, + 48, 51, 7, 117, 110, 105, 49, 70, 48, 52, 7, 117, 110, 105, 49, 70, 48, 53, 7, 117, + 110, 105, 49, 70, 48, 54, 7, 117, 110, 105, 49, 70, 48, 55, 7, 117, 110, 105, 49, 70, + 48, 56, 7, 117, 110, 105, 49, 70, 48, 57, 7, 117, 110, 105, 49, 70, 48, 65, 7, 117, + 110, 105, 49, 70, 48, 66, 7, 117, 110, 105, 49, 70, 48, 67, 7, 117, 110, 105, 49, 70, + 48, 68, 7, 117, 110, 105, 49, 70, 48, 69, 7, 117, 110, 105, 49, 70, 48, 70, 7, 117, + 110, 105, 49, 70, 49, 48, 7, 117, 110, 105, 49, 70, 49, 49, 7, 117, 110, 105, 49, 70, + 49, 50, 7, 117, 110, 105, 49, 70, 49, 51, 7, 117, 110, 105, 49, 70, 49, 52, 7, 117, + 110, 105, 49, 70, 49, 53, 7, 117, 110, 105, 49, 70, 49, 56, 7, 117, 110, 105, 49, 70, + 49, 57, 7, 117, 110, 105, 49, 70, 49, 65, 7, 117, 110, 105, 49, 70, 49, 66, 7, 117, + 110, 105, 49, 70, 49, 67, 7, 117, 110, 105, 49, 70, 49, 68, 7, 117, 110, 105, 49, 70, + 50, 48, 7, 117, 110, 105, 49, 70, 50, 49, 7, 117, 110, 105, 49, 70, 50, 50, 7, 117, + 110, 105, 49, 70, 50, 51, 7, 117, 110, 105, 49, 70, 50, 52, 7, 117, 110, 105, 49, 70, + 50, 53, 7, 117, 110, 105, 49, 70, 50, 54, 7, 117, 110, 105, 49, 70, 50, 55, 7, 117, + 110, 105, 49, 70, 50, 56, 7, 117, 110, 105, 49, 70, 50, 57, 7, 117, 110, 105, 49, 70, + 50, 65, 7, 117, 110, 105, 49, 70, 50, 66, 7, 117, 110, 105, 49, 70, 50, 67, 7, 117, + 110, 105, 49, 70, 50, 68, 7, 117, 110, 105, 49, 70, 50, 69, 7, 117, 110, 105, 49, 70, + 50, 70, 7, 117, 110, 105, 49, 70, 51, 48, 7, 117, 110, 105, 49, 70, 51, 49, 7, 117, + 110, 105, 49, 70, 51, 50, 7, 117, 110, 105, 49, 70, 51, 51, 7, 117, 110, 105, 49, 70, + 51, 52, 7, 117, 110, 105, 49, 70, 51, 53, 7, 117, 110, 105, 49, 70, 51, 54, 7, 117, + 110, 105, 49, 70, 51, 55, 7, 117, 110, 105, 49, 70, 51, 56, 7, 117, 110, 105, 49, 70, + 51, 57, 7, 117, 110, 105, 49, 70, 51, 65, 7, 117, 110, 105, 49, 70, 51, 66, 7, 117, + 110, 105, 49, 70, 51, 67, 7, 117, 110, 105, 49, 70, 51, 68, 7, 117, 110, 105, 49, 70, + 51, 69, 7, 117, 110, 105, 49, 70, 51, 70, 7, 117, 110, 105, 49, 70, 52, 48, 7, 117, + 110, 105, 49, 70, 52, 49, 7, 117, 110, 105, 49, 70, 52, 50, 7, 117, 110, 105, 49, 70, + 52, 51, 7, 117, 110, 105, 49, 70, 52, 52, 7, 117, 110, 105, 49, 70, 52, 53, 7, 117, + 110, 105, 49, 70, 52, 56, 7, 117, 110, 105, 49, 70, 52, 57, 7, 117, 110, 105, 49, 70, + 52, 65, 7, 117, 110, 105, 49, 70, 52, 66, 7, 117, 110, 105, 49, 70, 52, 67, 7, 117, + 110, 105, 49, 70, 52, 68, 7, 117, 110, 105, 49, 70, 53, 48, 7, 117, 110, 105, 49, 70, + 53, 49, 7, 117, 110, 105, 49, 70, 53, 50, 7, 117, 110, 105, 49, 70, 53, 51, 7, 117, + 110, 105, 49, 70, 53, 52, 7, 117, 110, 105, 49, 70, 53, 53, 7, 117, 110, 105, 49, 70, + 53, 54, 7, 117, 110, 105, 49, 70, 53, 55, 7, 117, 110, 105, 49, 70, 53, 57, 7, 117, + 110, 105, 49, 70, 53, 66, 7, 117, 110, 105, 49, 70, 53, 68, 7, 117, 110, 105, 49, 70, + 53, 70, 7, 117, 110, 105, 49, 70, 54, 48, 7, 117, 110, 105, 49, 70, 54, 49, 7, 117, + 110, 105, 49, 70, 54, 50, 7, 117, 110, 105, 49, 70, 54, 51, 7, 117, 110, 105, 49, 70, + 54, 52, 7, 117, 110, 105, 49, 70, 54, 53, 7, 117, 110, 105, 49, 70, 54, 54, 7, 117, + 110, 105, 49, 70, 54, 55, 7, 117, 110, 105, 49, 70, 54, 56, 7, 117, 110, 105, 49, 70, + 54, 57, 7, 117, 110, 105, 49, 70, 54, 65, 7, 117, 110, 105, 49, 70, 54, 66, 7, 117, + 110, 105, 49, 70, 54, 67, 7, 117, 110, 105, 49, 70, 54, 68, 7, 117, 110, 105, 49, 70, + 54, 69, 7, 117, 110, 105, 49, 70, 54, 70, 7, 117, 110, 105, 49, 70, 55, 48, 7, 117, + 110, 105, 49, 70, 55, 49, 7, 117, 110, 105, 49, 70, 55, 50, 7, 117, 110, 105, 49, 70, + 55, 51, 7, 117, 110, 105, 49, 70, 55, 52, 7, 117, 110, 105, 49, 70, 55, 53, 7, 117, + 110, 105, 49, 70, 55, 54, 7, 117, 110, 105, 49, 70, 55, 55, 7, 117, 110, 105, 49, 70, + 55, 56, 7, 117, 110, 105, 49, 70, 55, 57, 7, 117, 110, 105, 49, 70, 55, 65, 7, 117, + 110, 105, 49, 70, 55, 66, 7, 117, 110, 105, 49, 70, 55, 67, 7, 117, 110, 105, 49, 70, + 55, 68, 7, 117, 110, 105, 49, 70, 56, 48, 7, 117, 110, 105, 49, 70, 56, 49, 7, 117, + 110, 105, 49, 70, 56, 50, 7, 117, 110, 105, 49, 70, 56, 51, 7, 117, 110, 105, 49, 70, + 56, 52, 7, 117, 110, 105, 49, 70, 56, 53, 7, 117, 110, 105, 49, 70, 56, 54, 7, 117, + 110, 105, 49, 70, 56, 55, 7, 117, 110, 105, 49, 70, 56, 56, 7, 117, 110, 105, 49, 70, + 56, 57, 7, 117, 110, 105, 49, 70, 56, 65, 7, 117, 110, 105, 49, 70, 56, 66, 7, 117, + 110, 105, 49, 70, 56, 67, 7, 117, 110, 105, 49, 70, 56, 68, 7, 117, 110, 105, 49, 70, + 56, 69, 7, 117, 110, 105, 49, 70, 56, 70, 7, 117, 110, 105, 49, 70, 57, 48, 7, 117, + 110, 105, 49, 70, 57, 49, 7, 117, 110, 105, 49, 70, 57, 50, 7, 117, 110, 105, 49, 70, + 57, 51, 7, 117, 110, 105, 49, 70, 57, 52, 7, 117, 110, 105, 49, 70, 57, 53, 7, 117, + 110, 105, 49, 70, 57, 54, 7, 117, 110, 105, 49, 70, 57, 55, 7, 117, 110, 105, 49, 70, + 57, 56, 7, 117, 110, 105, 49, 70, 57, 57, 7, 117, 110, 105, 49, 70, 57, 65, 7, 117, + 110, 105, 49, 70, 57, 66, 7, 117, 110, 105, 49, 70, 57, 67, 7, 117, 110, 105, 49, 70, + 57, 68, 7, 117, 110, 105, 49, 70, 57, 69, 7, 117, 110, 105, 49, 70, 57, 70, 7, 117, + 110, 105, 49, 70, 65, 48, 7, 117, 110, 105, 49, 70, 65, 49, 7, 117, 110, 105, 49, 70, + 65, 50, 7, 117, 110, 105, 49, 70, 65, 51, 7, 117, 110, 105, 49, 70, 65, 52, 7, 117, + 110, 105, 49, 70, 65, 53, 7, 117, 110, 105, 49, 70, 65, 54, 7, 117, 110, 105, 49, 70, + 65, 55, 7, 117, 110, 105, 49, 70, 65, 56, 7, 117, 110, 105, 49, 70, 65, 57, 7, 117, + 110, 105, 49, 70, 65, 65, 7, 117, 110, 105, 49, 70, 65, 66, 7, 117, 110, 105, 49, 70, + 65, 67, 7, 117, 110, 105, 49, 70, 65, 68, 7, 117, 110, 105, 49, 70, 65, 69, 7, 117, + 110, 105, 49, 70, 65, 70, 7, 117, 110, 105, 49, 70, 66, 48, 7, 117, 110, 105, 49, 70, + 66, 49, 7, 117, 110, 105, 49, 70, 66, 50, 7, 117, 110, 105, 49, 70, 66, 51, 7, 117, + 110, 105, 49, 70, 66, 52, 7, 117, 110, 105, 49, 70, 66, 54, 7, 117, 110, 105, 49, 70, + 66, 55, 7, 117, 110, 105, 49, 70, 66, 56, 7, 117, 110, 105, 49, 70, 66, 57, 7, 117, + 110, 105, 49, 70, 66, 65, 7, 117, 110, 105, 49, 70, 66, 66, 7, 117, 110, 105, 49, 70, + 66, 67, 7, 117, 110, 105, 49, 70, 66, 68, 7, 117, 110, 105, 49, 70, 66, 69, 7, 117, + 110, 105, 49, 70, 66, 70, 7, 117, 110, 105, 49, 70, 67, 48, 7, 117, 110, 105, 49, 70, + 67, 49, 7, 117, 110, 105, 49, 70, 67, 50, 7, 117, 110, 105, 49, 70, 67, 51, 7, 117, + 110, 105, 49, 70, 67, 52, 7, 117, 110, 105, 49, 70, 67, 54, 7, 117, 110, 105, 49, 70, + 67, 55, 7, 117, 110, 105, 49, 70, 67, 56, 7, 117, 110, 105, 49, 70, 67, 57, 7, 117, + 110, 105, 49, 70, 67, 65, 7, 117, 110, 105, 49, 70, 67, 66, 7, 117, 110, 105, 49, 70, + 67, 67, 7, 117, 110, 105, 49, 70, 67, 68, 7, 117, 110, 105, 49, 70, 67, 69, 7, 117, + 110, 105, 49, 70, 67, 70, 7, 117, 110, 105, 49, 70, 68, 48, 7, 117, 110, 105, 49, 70, + 68, 49, 7, 117, 110, 105, 49, 70, 68, 50, 7, 117, 110, 105, 49, 70, 68, 51, 7, 117, + 110, 105, 49, 70, 68, 54, 7, 117, 110, 105, 49, 70, 68, 55, 7, 117, 110, 105, 49, 70, + 68, 56, 7, 117, 110, 105, 49, 70, 68, 57, 7, 117, 110, 105, 49, 70, 68, 65, 7, 117, + 110, 105, 49, 70, 68, 66, 7, 117, 110, 105, 49, 70, 68, 68, 7, 117, 110, 105, 49, 70, + 68, 69, 7, 117, 110, 105, 49, 70, 68, 70, 7, 117, 110, 105, 49, 70, 69, 48, 7, 117, + 110, 105, 49, 70, 69, 49, 7, 117, 110, 105, 49, 70, 69, 50, 7, 117, 110, 105, 49, 70, + 69, 51, 7, 117, 110, 105, 49, 70, 69, 52, 7, 117, 110, 105, 49, 70, 69, 53, 7, 117, + 110, 105, 49, 70, 69, 54, 7, 117, 110, 105, 49, 70, 69, 55, 7, 117, 110, 105, 49, 70, + 69, 56, 7, 117, 110, 105, 49, 70, 69, 57, 7, 117, 110, 105, 49, 70, 69, 65, 7, 117, + 110, 105, 49, 70, 69, 66, 7, 117, 110, 105, 49, 70, 69, 67, 7, 117, 110, 105, 49, 70, + 69, 68, 7, 117, 110, 105, 49, 70, 69, 69, 7, 117, 110, 105, 49, 70, 69, 70, 7, 117, + 110, 105, 49, 70, 70, 50, 7, 117, 110, 105, 49, 70, 70, 51, 7, 117, 110, 105, 49, 70, + 70, 52, 7, 117, 110, 105, 49, 70, 70, 54, 7, 117, 110, 105, 49, 70, 70, 55, 7, 117, + 110, 105, 49, 70, 70, 56, 7, 117, 110, 105, 49, 70, 70, 57, 7, 117, 110, 105, 49, 70, + 70, 65, 7, 117, 110, 105, 49, 70, 70, 66, 7, 117, 110, 105, 49, 70, 70, 67, 7, 117, + 110, 105, 49, 70, 70, 68, 7, 117, 110, 105, 49, 70, 70, 69, 11, 117, 110, 105, 49, 70, + 56, 56, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 56, 57, 46, 97, 108, 116, 11, 117, + 110, 105, 49, 70, 56, 65, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 56, 66, 46, 97, + 108, 116, 11, 117, 110, 105, 49, 70, 56, 67, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, + 56, 68, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 56, 69, 46, 97, 108, 116, 11, 117, + 110, 105, 49, 70, 56, 70, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 57, 56, 46, 97, + 108, 116, 11, 117, 110, 105, 49, 70, 57, 57, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, + 57, 65, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 57, 66, 46, 97, 108, 116, 11, 117, + 110, 105, 49, 70, 57, 67, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 57, 68, 46, 97, + 108, 116, 11, 117, 110, 105, 49, 70, 57, 69, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, + 57, 70, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 65, 56, 46, 97, 108, 116, 11, 117, + 110, 105, 49, 70, 65, 57, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 65, 65, 46, 97, + 108, 116, 11, 117, 110, 105, 49, 70, 65, 66, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, + 65, 67, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 65, 68, 46, 97, 108, 116, 11, 117, + 110, 105, 49, 70, 65, 69, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 65, 70, 46, 97, + 108, 116, 11, 117, 110, 105, 49, 70, 66, 67, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, + 67, 67, 46, 97, 108, 116, 11, 117, 110, 105, 49, 70, 70, 67, 46, 97, 108, 116, 7, 117, + 110, 105, 50, 48, 66, 57, 7, 117, 110, 105, 69, 48, 70, 70, 7, 117, 110, 105, 70, 48, + 48, 48, 7, 117, 110, 105, 70, 70, 70, 68, 7, 117, 110, 105, 69, 70, 70, 68, 8, 83, + 70, 48, 52, 48, 48, 48, 48, 8, 83, 70, 48, 50, 48, 48, 48, 48, 8, 83, 70, 48, + 49, 48, 48, 48, 48, 8, 83, 70, 49, 49, 48, 48, 48, 48, 8, 83, 70, 49, 48, 48, + 48, 48, 48, 8, 83, 70, 48, 57, 48, 48, 48, 48, 8, 83, 70, 48, 54, 48, 48, 48, + 48, 8, 83, 70, 48, 55, 48, 48, 48, 48, 8, 83, 70, 48, 56, 48, 48, 48, 48, 8, + 83, 70, 48, 53, 48, 48, 48, 48, 8, 83, 70, 48, 51, 48, 48, 48, 48, 8, 83, 70, + 49, 57, 48, 48, 48, 48, 8, 83, 70, 51, 54, 48, 48, 48, 48, 8, 83, 70, 52, 53, + 48, 48, 48, 48, 8, 83, 70, 50, 56, 48, 48, 48, 48, 8, 83, 70, 53, 48, 48, 48, + 48, 48, 8, 83, 70, 52, 55, 48, 48, 48, 48, 8, 83, 70, 50, 50, 48, 48, 48, 48, + 8, 83, 70, 53, 49, 48, 48, 48, 48, 8, 83, 70, 50, 52, 48, 48, 48, 48, 8, 83, + 70, 52, 52, 48, 48, 48, 48, 8, 83, 70, 50, 51, 48, 48, 48, 48, 8, 83, 70, 52, + 50, 48, 48, 48, 48, 8, 83, 70, 52, 48, 48, 48, 48, 48, 8, 83, 70, 50, 54, 48, + 48, 48, 48, 8, 83, 70, 51, 56, 48, 48, 48, 48, 8, 83, 70, 52, 49, 48, 48, 48, + 48, 8, 83, 70, 50, 53, 48, 48, 48, 48, 8, 83, 70, 51, 57, 48, 48, 48, 48, 8, + 83, 70, 52, 51, 48, 48, 48, 48, 8, 83, 70, 50, 48, 48, 48, 48, 48, 8, 83, 70, + 51, 55, 48, 48, 48, 48, 8, 83, 70, 52, 54, 48, 48, 48, 48, 8, 83, 70, 50, 55, + 48, 48, 48, 48, 8, 83, 70, 52, 57, 48, 48, 48, 48, 8, 83, 70, 52, 56, 48, 48, + 48, 48, 8, 83, 70, 50, 49, 48, 48, 48, 48, 8, 83, 70, 53, 50, 48, 48, 48, 48, + 5, 98, 108, 111, 99, 107, 7, 108, 116, 115, 104, 97, 100, 101, 5, 115, 104, 97, 100, 101, + 7, 100, 107, 115, 104, 97, 100, 101, 8, 83, 70, 53, 51, 48, 48, 48, 48, 8, 83, 70, + 53, 52, 48, 48, 48, 48, 0, 0, 0, 2, 0, 50, 0, 0, 1, 194, 2, 238, 0, 3, + 0, 7, 0, 27, 64, 11, 4, 3, 9, 7, 0, 8, 5, 1, 4, 0, 68, 0, 63, 205, + 47, 205, 1, 16, 214, 205, 16, 222, 205, 49, 48, 51, 17, 33, 17, 39, 17, 33, 17, 50, + 1, 144, 50, 254, 212, 2, 238, 253, 18, 50, 2, 138, 253, 118, 0, 2, 0, 181, 255, 244, + 1, 59, 2, 107, 0, 13, 0, 25, 0, 35, 64, 17, 0, 145, 11, 11, 23, 148, 17, 17, + 27, 26, 6, 20, 154, 14, 92, 12, 89, 0, 63, 63, 253, 206, 1, 17, 18, 57, 47, 237, + 51, 47, 237, 49, 48, 1, 20, 14, 2, 7, 35, 46, 3, 53, 53, 51, 3, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 1, 37, 2, 5, 6, 3, 57, 3, 6, 5, 2, 89, + 45, 27, 40, 40, 27, 28, 39, 39, 1, 195, 37, 62, 56, 55, 30, 30, 55, 56, 62, 37, + 168, 253, 137, 37, 31, 31, 37, 37, 31, 31, 37, 0, 2, 0, 129, 1, 174, 1, 115, 2, + 167, 0, 9, 0, 19, 0, 21, 183, 10, 19, 0, 9, 15, 4, 19, 0, 0, 47, 50, 205, + 50, 1, 47, 221, 222, 205, 49, 48, 19, 21, 20, 6, 7, 35, 38, 38, 53, 53, 51, 21, + 20, 6, 7, 35, 38, 38, 53, 53, 206, 10, 8, 42, 7, 10, 242, 10, 7, 42, 8, 10, + 2, 167, 45, 44, 113, 47, 47, 113, 45, 44, 45, 44, 113, 47, 47, 113, 45, 44, 0, 2, + 0, 27, 0, 0, 1, 217, 2, 107, 0, 27, 0, 31, 0, 175, 64, 90, 13, 10, 9, 6, + 5, 14, 5, 14, 145, 15, 16, 29, 30, 3, 4, 15, 4, 15, 18, 20, 23, 24, 27, 0, + 19, 0, 2, 31, 28, 17, 18, 1, 18, 145, 19, 19, 22, 26, 33, 0, 145, 1, 4, 145, + 5, 5, 11, 7, 32, 19, 89, 18, 89, 15, 89, 29, 28, 23, 10, 151, 13, 20, 17, 16, + 13, 27, 3, 2, 6, 151, 9, 31, 30, 24, 9, 13, 9, 13, 9, 5, 14, 89, 5, 96, + 4, 96, 1, 96, 0, 96, 0, 63, 63, 63, 63, 63, 18, 57, 57, 47, 47, 17, 51, 51, + 51, 16, 237, 50, 50, 50, 17, 51, 51, 51, 16, 237, 50, 50, 50, 63, 63, 63, 1, 16, + 198, 50, 50, 47, 253, 222, 237, 16, 206, 50, 50, 47, 253, 125, 135, 196, 196, 196, 196, 16, + 135, 196, 196, 196, 196, 1, 24, 16, 206, 16, 125, 135, 196, 196, 196, 196, 1, 24, 16, 237, + 16, 125, 135, 196, 196, 196, 196, 49, 48, 33, 35, 55, 35, 7, 35, 55, 35, 53, 51, 55, + 35, 53, 51, 55, 51, 7, 51, 55, 51, 7, 51, 21, 35, 7, 51, 21, 35, 39, 35, 7, + 51, 1, 65, 75, 31, 111, 31, 75, 31, 64, 77, 30, 107, 121, 31, 75, 31, 111, 30, 75, + 30, 64, 77, 31, 108, 121, 32, 110, 31, 110, 163, 163, 163, 67, 159, 66, 164, 164, 164, 164, + 66, 159, 67, 226, 159, 0, 1, 0, 54, 255, 159, 1, 191, 2, 181, 0, 53, 0, 179, 64, + 17, 49, 24, 18, 0, 77, 49, 32, 15, 17, 0, 76, 49, 40, 14, 0, 77, 43, 184, 255, + 232, 180, 11, 12, 0, 76, 42, 184, 255, 216, 180, 9, 10, 0, 76, 39, 184, 255, 224, 179, + 16, 0, 77, 39, 184, 255, 232, 180, 13, 14, 0, 76, 38, 184, 255, 240, 179, 16, 0, 77, + 34, 184, 255, 232, 64, 60, 15, 0, 77, 17, 40, 9, 10, 0, 76, 13, 32, 16, 0, 77, + 9, 32, 10, 0, 77, 21, 44, 139, 18, 47, 47, 15, 41, 24, 24, 5, 140, 41, 55, 50, + 50, 31, 140, 15, 54, 10, 47, 28, 36, 21, 51, 51, 0, 143, 44, 47, 46, 46, 54, 25, + 25, 28, 143, 18, 21, 19, 0, 47, 221, 50, 237, 50, 47, 17, 51, 47, 221, 50, 237, 50, + 47, 17, 57, 17, 18, 57, 1, 16, 214, 237, 51, 47, 16, 222, 237, 51, 47, 17, 18, 57, + 47, 51, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 50, + 62, 2, 53, 52, 46, 2, 39, 46, 3, 53, 52, 54, 55, 53, 51, 21, 22, 22, 23, 7, + 38, 38, 35, 34, 6, 21, 20, 30, 2, 23, 30, 3, 21, 20, 6, 7, 21, 35, 53, 38, + 38, 39, 55, 22, 22, 233, 36, 49, 28, 12, 24, 41, 52, 28, 27, 53, 41, 26, 76, 72, + 74, 40, 67, 20, 17, 21, 64, 49, 54, 57, 17, 32, 43, 27, 34, 64, 48, 29, 78, 81, + 74, 63, 78, 19, 22, 27, 74, 85, 11, 21, 29, 17, 25, 35, 27, 21, 10, 10, 24, 35, + 49, 36, 64, 80, 11, 103, 100, 2, 15, 8, 70, 8, 17, 40, 38, 21, 28, 22, 18, 10, + 13, 29, 40, 56, 39, 59, 82, 10, 115, 112, 2, 24, 11, 69, 13, 23, 0, 5, 0, 18, + 255, 243, 1, 226, 2, 120, 0, 3, 0, 15, 0, 27, 0, 39, 0, 51, 0, 119, 64, 72, + 224, 28, 240, 28, 2, 28, 239, 46, 255, 46, 2, 46, 224, 40, 240, 40, 2, 40, 34, 0, + 2, 1, 2, 141, 3, 0, 20, 3, 0, 3, 3, 34, 53, 239, 10, 255, 10, 2, 10, 224, + 16, 240, 16, 2, 16, 239, 22, 255, 22, 2, 22, 4, 1, 1, 4, 52, 43, 31, 49, 37, + 87, 25, 13, 19, 7, 88, 2, 3, 86, 0, 1, 85, 0, 63, 51, 63, 51, 63, 205, 220, + 205, 63, 205, 220, 205, 1, 16, 198, 50, 47, 16, 221, 93, 222, 93, 205, 93, 16, 206, 50, + 47, 135, 43, 135, 125, 196, 1, 24, 16, 221, 93, 222, 93, 205, 93, 49, 48, 51, 35, 1, + 51, 5, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 52, 38, 35, 34, 6, 21, + 20, 22, 51, 50, 54, 19, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 52, 38, + 35, 34, 6, 21, 20, 22, 51, 50, 54, 95, 70, 1, 123, 70, 254, 56, 58, 51, 51, 58, + 58, 51, 51, 58, 156, 24, 23, 23, 25, 25, 23, 23, 24, 91, 57, 51, 51, 58, 58, 51, + 51, 57, 156, 25, 23, 23, 24, 24, 23, 23, 25, 2, 107, 142, 76, 79, 79, 76, 76, 80, + 80, 76, 45, 58, 58, 45, 45, 58, 58, 254, 222, 76, 79, 79, 76, 76, 79, 79, 76, 45, + 58, 58, 45, 45, 58, 58, 0, 3, 0, 31, 255, 248, 1, 217, 2, 121, 0, 43, 0, 54, + 0, 66, 1, 12, 182, 65, 32, 17, 18, 0, 76, 49, 184, 255, 224, 179, 18, 0, 77, 49, + 184, 255, 232, 179, 17, 0, 77, 49, 184, 255, 240, 179, 15, 0, 77, 45, 184, 255, 232, 64, + 9, 15, 0, 77, 44, 8, 8, 0, 77, 38, 184, 255, 232, 64, 31, 9, 13, 0, 76, 32, + 24, 12, 0, 77, 32, 16, 11, 0, 77, 32, 24, 9, 10, 0, 76, 26, 24, 17, 0, 77, + 26, 48, 8, 0, 77, 17, 184, 255, 216, 179, 16, 0, 77, 17, 184, 255, 232, 179, 14, 0, + 77, 2, 184, 255, 208, 179, 18, 0, 77, 2, 184, 255, 232, 179, 17, 0, 77, 2, 184, 255, + 224, 179, 16, 0, 77, 2, 184, 255, 240, 179, 14, 0, 77, 1, 184, 255, 240, 179, 18, 0, + 77, 1, 184, 255, 232, 64, 60, 17, 0, 77, 55, 118, 40, 40, 7, 16, 52, 44, 27, 4, + 30, 14, 118, 10, 3, 43, 64, 4, 61, 13, 13, 6, 115, 7, 68, 61, 118, 30, 30, 47, + 118, 24, 67, 64, 44, 27, 43, 16, 10, 3, 52, 43, 52, 6, 6, 50, 58, 124, 35, 69, + 50, 124, 19, 70, 13, 14, 66, 0, 63, 51, 63, 237, 63, 237, 18, 57, 47, 57, 57, 17, + 51, 51, 51, 17, 51, 51, 51, 1, 16, 214, 237, 51, 47, 237, 16, 222, 237, 51, 47, 18, + 23, 57, 237, 17, 23, 57, 17, 51, 47, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 22, 22, 23, 54, 54, 55, 23, + 6, 6, 7, 22, 22, 23, 35, 38, 39, 6, 6, 35, 34, 46, 2, 53, 52, 54, 55, 38, + 38, 53, 52, 62, 2, 51, 50, 30, 2, 21, 20, 6, 7, 7, 6, 6, 21, 20, 22, 22, + 54, 55, 38, 38, 55, 52, 38, 35, 34, 6, 21, 20, 22, 23, 54, 54, 1, 16, 17, 37, + 19, 8, 12, 3, 69, 6, 23, 17, 23, 42, 17, 87, 17, 21, 32, 79, 43, 38, 60, 42, + 23, 49, 53, 26, 32, 25, 42, 55, 29, 26, 50, 38, 23, 60, 65, 66, 29, 29, 40, 58, + 68, 28, 33, 71, 84, 39, 25, 26, 45, 18, 29, 48, 40, 1, 27, 20, 41, 23, 28, 66, + 40, 9, 58, 91, 37, 32, 68, 38, 35, 32, 40, 35, 25, 44, 58, 32, 47, 96, 41, 35, + 72, 38, 39, 58, 37, 19, 16, 33, 48, 31, 46, 97, 41, 36, 26, 68, 32, 39, 51, 13, + 29, 40, 45, 77, 249, 36, 36, 41, 41, 29, 50, 38, 30, 68, 0, 1, 0, 206, 1, 156, + 1, 37, 2, 167, 0, 13, 0, 20, 183, 1, 145, 12, 12, 15, 14, 7, 13, 0, 47, 205, + 1, 17, 18, 57, 47, 237, 49, 48, 1, 21, 20, 14, 2, 7, 35, 46, 3, 53, 53, 1, + 37, 3, 5, 6, 4, 51, 4, 6, 5, 3, 2, 167, 45, 22, 57, 61, 59, 23, 23, 59, + 61, 58, 22, 44, 0, 1, 0, 113, 255, 89, 1, 130, 2, 189, 0, 16, 0, 127, 185, 0, + 7, 255, 224, 179, 18, 0, 77, 7, 184, 255, 240, 179, 17, 0, 77, 6, 184, 255, 224, 179, + 17, 0, 77, 6, 184, 255, 224, 179, 14, 0, 77, 1, 184, 255, 224, 179, 18, 0, 77, 1, + 184, 255, 232, 179, 17, 0, 77, 1, 184, 255, 240, 179, 14, 0, 77, 14, 184, 255, 240, 64, + 9, 13, 0, 77, 10, 24, 13, 0, 77, 5, 184, 255, 232, 64, 21, 15, 0, 77, 2, 32, + 15, 0, 77, 15, 9, 9, 0, 8, 3, 12, 17, 0, 15, 90, 8, 9, 0, 47, 51, 63, + 51, 1, 16, 214, 221, 206, 50, 50, 17, 51, 49, 48, 0, 43, 43, 43, 43, 1, 43, 43, + 43, 43, 43, 43, 43, 1, 6, 6, 21, 20, 30, 2, 23, 7, 38, 38, 53, 52, 54, 55, + 23, 1, 128, 93, 98, 23, 47, 73, 50, 45, 115, 113, 114, 114, 44, 2, 129, 72, 188, 111, + 56, 100, 92, 86, 43, 60, 85, 225, 125, 124, 226, 83, 60, 0, 1, 0, 113, 255, 89, 1, + 130, 2, 189, 0, 18, 0, 88, 185, 0, 15, 255, 240, 179, 13, 0, 77, 10, 184, 255, 240, + 64, 47, 13, 0, 77, 7, 24, 17, 0, 77, 6, 24, 18, 0, 77, 5, 16, 15, 0, 77, + 2, 16, 15, 0, 77, 1, 16, 17, 18, 0, 76, 7, 24, 18, 0, 77, 17, 9, 9, 18, + 8, 3, 12, 20, 0, 17, 8, 9, 90, 0, 63, 51, 47, 51, 1, 16, 214, 221, 206, 50, + 50, 17, 51, 49, 48, 0, 43, 1, 43, 43, 43, 43, 43, 43, 43, 23, 54, 54, 53, 52, + 46, 2, 39, 55, 22, 22, 21, 20, 14, 2, 7, 39, 115, 93, 99, 23, 48, 73, 50, 45, + 115, 113, 29, 57, 85, 57, 44, 107, 72, 188, 111, 56, 100, 92, 86, 43, 60, 85, 225, 125, + 62, 120, 111, 99, 41, 60, 0, 1, 0, 57, 0, 250, 1, 187, 2, 107, 0, 44, 0, 51, + 64, 23, 41, 32, 4, 4, 32, 22, 31, 14, 14, 31, 31, 46, 45, 41, 9, 22, 40, 23, + 23, 5, 13, 31, 89, 0, 63, 204, 50, 57, 47, 51, 205, 50, 50, 1, 17, 18, 57, 47, + 51, 47, 16, 204, 205, 50, 47, 16, 204, 49, 48, 1, 22, 22, 23, 23, 7, 39, 38, 38, + 39, 6, 6, 7, 7, 39, 55, 54, 54, 55, 38, 38, 39, 39, 55, 23, 22, 22, 23, 38, + 38, 53, 53, 51, 21, 20, 6, 7, 54, 54, 55, 55, 23, 7, 6, 6, 1, 31, 27, 58, + 20, 4, 70, 5, 21, 34, 15, 16, 34, 23, 5, 69, 5, 22, 56, 27, 37, 78, 35, 7, + 27, 7, 35, 71, 32, 8, 13, 86, 13, 8, 32, 70, 35, 7, 26, 6, 36, 77, 1, 161, + 25, 55, 31, 5, 51, 6, 30, 71, 33, 33, 71, 30, 5, 50, 6, 31, 54, 25, 5, 11, + 12, 2, 82, 3, 14, 34, 18, 36, 78, 38, 7, 7, 38, 78, 36, 19, 33, 13, 3, 82, + 2, 11, 12, 0, 1, 0, 46, 0, 43, 1, 199, 1, 226, 0, 11, 0, 36, 64, 15, 6, + 4, 7, 11, 1, 10, 10, 13, 12, 4, 2, 1, 9, 7, 10, 0, 47, 51, 205, 221, 205, + 51, 1, 17, 18, 57, 47, 51, 205, 221, 50, 205, 49, 48, 19, 51, 53, 51, 21, 51, 21, + 35, 21, 35, 53, 35, 46, 168, 72, 169, 169, 72, 168, 1, 42, 184, 184, 70, 185, 185, 0, + 1, 0, 149, 255, 112, 1, 95, 0, 139, 0, 19, 0, 31, 64, 14, 5, 14, 148, 0, 8, + 8, 21, 20, 0, 19, 11, 154, 5, 92, 0, 63, 237, 220, 205, 1, 17, 18, 57, 47, 206, + 237, 57, 49, 48, 23, 62, 3, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, + 7, 149, 18, 35, 30, 24, 7, 32, 29, 45, 29, 37, 38, 23, 47, 70, 48, 79, 4, 8, + 15, 23, 20, 3, 43, 21, 40, 41, 53, 38, 29, 63, 55, 39, 6, 0, 1, 0, 140, 0, + 215, 1, 104, 1, 37, 0, 3, 0, 13, 179, 2, 3, 0, 3, 0, 47, 205, 1, 47, 205, + 49, 48, 19, 51, 21, 35, 140, 220, 220, 1, 37, 78, 0, 1, 0, 177, 255, 244, 1, 68, + 0, 141, 0, 11, 0, 16, 182, 0, 148, 6, 9, 154, 3, 92, 0, 63, 237, 1, 47, 237, + 49, 48, 37, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 1, 68, 40, 33, 34, 40, + 40, 34, 33, 40, 64, 30, 46, 46, 30, 31, 46, 46, 0, 1, 0, 69, 255, 91, 1, 175, + 2, 187, 0, 3, 0, 35, 64, 17, 2, 0, 3, 0, 141, 1, 2, 20, 1, 1, 2, 3, + 1, 2, 3, 0, 1, 0, 47, 51, 47, 51, 1, 47, 47, 135, 16, 43, 135, 125, 196, 49, + 48, 23, 35, 1, 51, 154, 85, 1, 23, 83, 165, 3, 96, 0, 3, 0, 46, 255, 243, 1, + 198, 2, 121, 0, 11, 0, 23, 0, 43, 0, 246, 182, 41, 16, 13, 14, 0, 76, 37, 184, + 255, 232, 179, 14, 0, 77, 37, 184, 255, 240, 179, 13, 0, 77, 31, 184, 255, 232, 179, 14, + 0, 77, 31, 184, 255, 240, 64, 20, 13, 0, 77, 27, 16, 13, 14, 0, 76, 22, 24, 16, + 0, 77, 22, 32, 15, 0, 77, 20, 184, 255, 232, 180, 15, 16, 0, 76, 16, 184, 255, 240, + 179, 16, 0, 77, 16, 184, 255, 208, 64, 14, 15, 0, 77, 14, 24, 16, 0, 77, 14, 16, + 15, 0, 77, 8, 184, 255, 240, 179, 34, 0, 77, 8, 184, 255, 240, 179, 30, 0, 77, 8, + 184, 255, 232, 180, 27, 29, 0, 76, 0, 184, 255, 192, 64, 39, 27, 28, 0, 76, 144, 0, + 1, 80, 0, 128, 0, 144, 0, 192, 0, 224, 0, 240, 0, 6, 0, 64, 9, 12, 72, 0, + 143, 6, 159, 6, 207, 6, 3, 6, 64, 27, 30, 72, 6, 184, 255, 192, 64, 32, 9, 12, + 72, 6, 6, 34, 24, 140, 18, 45, 34, 140, 12, 44, 63, 3, 1, 3, 160, 9, 1, 9, + 9, 15, 39, 143, 21, 87, 29, 143, 15, 88, 0, 63, 237, 63, 237, 17, 57, 47, 93, 205, + 93, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 43, 43, 93, 205, 43, 93, 113, 43, 49, + 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 6, + 35, 34, 38, 53, 52, 54, 51, 50, 22, 5, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, + 38, 37, 52, 46, 2, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 62, 2, 1, 52, 31, + 25, 26, 32, 32, 26, 25, 31, 254, 250, 107, 97, 98, 106, 106, 98, 97, 107, 1, 68, 12, + 28, 46, 34, 34, 46, 28, 12, 12, 28, 46, 34, 34, 46, 28, 12, 1, 65, 26, 38, 38, + 26, 26, 40, 40, 37, 156, 167, 167, 156, 156, 167, 167, 156, 51, 91, 68, 40, 40, 68, 91, + 51, 51, 91, 68, 40, 40, 68, 91, 0, 1, 0, 75, 0, 0, 1, 182, 2, 107, 0, 16, + 0, 66, 64, 38, 2, 24, 12, 0, 77, 1, 40, 18, 0, 77, 1, 32, 13, 0, 77, 0, + 0, 9, 10, 6, 5, 139, 3, 10, 10, 18, 17, 5, 10, 142, 8, 85, 0, 16, 16, 11, + 3, 86, 0, 63, 51, 51, 47, 205, 63, 237, 50, 1, 17, 18, 57, 47, 51, 253, 205, 16, + 205, 50, 47, 49, 48, 43, 43, 43, 19, 54, 54, 55, 51, 17, 51, 21, 33, 53, 51, 17, + 14, 3, 7, 75, 51, 96, 41, 58, 117, 254, 179, 134, 11, 31, 37, 40, 19, 1, 235, 20, + 61, 47, 253, 219, 70, 70, 1, 178, 10, 21, 20, 18, 6, 0, 1, 0, 57, 0, 0, 1, + 189, 2, 121, 0, 44, 0, 144, 185, 0, 44, 255, 240, 180, 11, 12, 0, 76, 44, 184, 255, + 224, 64, 11, 9, 10, 0, 76, 39, 24, 9, 10, 0, 76, 34, 184, 255, 224, 64, 15, 18, + 0, 77, 29, 24, 17, 18, 0, 76, 22, 8, 15, 0, 77, 5, 184, 255, 232, 179, 15, 0, + 77, 3, 184, 255, 224, 179, 18, 0, 77, 3, 184, 255, 232, 179, 17, 0, 77, 2, 184, 255, + 240, 179, 18, 0, 77, 2, 184, 255, 232, 64, 27, 17, 0, 77, 26, 140, 0, 11, 11, 0, + 46, 10, 140, 15, 45, 37, 37, 16, 36, 36, 31, 143, 42, 88, 10, 142, 13, 85, 0, 63, + 237, 63, 237, 50, 47, 1, 47, 51, 47, 16, 214, 237, 16, 206, 50, 47, 16, 237, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 14, 2, 7, 14, 3, 21, 33, + 21, 33, 38, 52, 53, 52, 62, 2, 55, 62, 3, 53, 52, 46, 2, 35, 34, 14, 2, 7, + 39, 62, 3, 51, 50, 22, 1, 164, 25, 41, 52, 27, 15, 40, 36, 24, 1, 29, 254, 137, + 1, 28, 44, 55, 27, 22, 41, 31, 19, 17, 29, 38, 22, 26, 43, 33, 24, 6, 41, 8, + 32, 45, 56, 32, 97, 93, 1, 205, 32, 60, 58, 56, 27, 15, 42, 44, 42, 15, 70, 5, + 11, 5, 42, 72, 64, 57, 27, 22, 42, 42, 45, 24, 27, 38, 25, 12, 14, 20, 19, 6, + 58, 9, 26, 23, 16, 89, 0, 1, 0, 59, 255, 243, 1, 186, 2, 121, 0, 50, 0, 244, + 181, 46, 40, 18, 0, 77, 39, 184, 255, 216, 179, 18, 0, 77, 39, 184, 255, 208, 179, 17, + 0, 77, 39, 184, 255, 232, 180, 9, 10, 0, 76, 39, 184, 255, 216, 179, 8, 0, 77, 36, + 184, 255, 216, 180, 17, 18, 0, 76, 33, 184, 255, 224, 180, 17, 18, 0, 76, 29, 184, 255, + 208, 179, 18, 0, 77, 29, 184, 255, 224, 179, 17, 0, 77, 29, 184, 255, 224, 180, 8, 10, + 0, 76, 28, 184, 255, 232, 179, 18, 0, 77, 28, 184, 255, 224, 179, 17, 0, 77, 21, 184, + 255, 240, 64, 40, 18, 0, 77, 14, 24, 15, 16, 0, 76, 5, 24, 16, 0, 77, 5, 16, + 15, 0, 77, 5, 16, 13, 0, 77, 1, 32, 16, 0, 77, 45, 16, 17, 0, 77, 21, 16, + 17, 0, 77, 34, 184, 255, 208, 64, 41, 17, 0, 77, 34, 16, 140, 31, 31, 3, 140, 37, + 52, 23, 23, 9, 9, 47, 51, 34, 9, 142, 10, 10, 26, 48, 48, 0, 143, 42, 87, 111, + 22, 127, 22, 2, 22, 22, 19, 143, 26, 88, 0, 63, 237, 50, 47, 93, 63, 237, 50, 47, + 17, 57, 47, 237, 57, 1, 16, 198, 50, 47, 50, 47, 16, 222, 237, 51, 47, 237, 50, 43, + 49, 48, 0, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 55, 50, 54, 53, 52, 46, 2, 35, 35, 53, 51, 50, 62, 2, 53, 52, + 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, + 14, 2, 35, 34, 46, 2, 39, 55, 22, 22, 212, 79, 67, 28, 46, 60, 33, 21, 29, 22, + 47, 39, 24, 63, 42, 43, 60, 20, 32, 21, 85, 52, 49, 70, 45, 22, 51, 40, 48, 70, + 27, 55, 87, 60, 23, 49, 42, 33, 7, 16, 16, 70, 60, 63, 53, 34, 46, 28, 12, 67, + 9, 23, 40, 31, 51, 43, 25, 13, 63, 15, 33, 24, 44, 59, 35, 49, 68, 18, 14, 81, + 67, 40, 69, 50, 28, 7, 11, 11, 3, 71, 8, 22, 0, 2, 0, 36, 0, 0, 1, 210, + 2, 107, 0, 14, 0, 21, 0, 109, 64, 66, 194, 15, 1, 211, 5, 1, 3, 178, 5, 1, + 2, 162, 5, 1, 221, 20, 1, 188, 20, 204, 20, 2, 173, 20, 1, 5, 20, 15, 20, 141, + 0, 5, 20, 0, 0, 5, 15, 13, 21, 139, 10, 7, 8, 23, 0, 22, 7, 0, 20, 142, + 10, 13, 13, 12, 85, 176, 15, 208, 15, 2, 163, 15, 1, 15, 5, 86, 0, 63, 51, 93, + 93, 63, 51, 47, 51, 237, 50, 50, 1, 16, 198, 16, 222, 213, 50, 237, 50, 50, 135, 16, + 43, 135, 125, 196, 1, 93, 93, 93, 93, 95, 93, 95, 93, 49, 48, 0, 93, 55, 62, 3, + 55, 51, 17, 51, 21, 35, 21, 35, 53, 33, 1, 14, 3, 7, 51, 36, 17, 59, 74, 84, + 43, 80, 73, 73, 80, 254, 235, 1, 21, 27, 55, 52, 45, 18, 197, 214, 40, 104, 111, 107, + 43, 254, 119, 68, 158, 158, 1, 107, 29, 70, 77, 80, 39, 0, 1, 0, 66, 255, 243, 1, + 186, 2, 107, 0, 39, 0, 176, 64, 12, 24, 32, 13, 0, 77, 12, 40, 17, 18, 0, 76, + 6, 184, 255, 232, 179, 16, 0, 77, 6, 184, 255, 224, 179, 15, 0, 77, 6, 184, 255, 240, + 179, 14, 0, 77, 5, 184, 255, 232, 179, 16, 0, 77, 5, 184, 255, 224, 179, 15, 0, 77, + 5, 184, 255, 208, 179, 14, 0, 77, 5, 184, 255, 232, 179, 10, 0, 77, 5, 184, 255, 240, + 179, 9, 0, 77, 2, 184, 255, 224, 179, 16, 0, 77, 2, 184, 255, 232, 179, 15, 0, 77, + 2, 184, 255, 224, 64, 36, 14, 0, 77, 34, 34, 22, 140, 3, 41, 35, 0, 139, 27, 32, + 13, 13, 16, 27, 1, 27, 40, 27, 143, 0, 0, 17, 35, 142, 32, 86, 14, 14, 17, 143, + 8, 87, 0, 63, 237, 50, 47, 63, 237, 18, 57, 47, 237, 1, 16, 198, 93, 50, 47, 50, + 16, 237, 50, 16, 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 19, 22, 22, 21, 20, 14, 2, 35, 34, 46, 2, 39, 55, 22, 22, 51, 50, + 62, 2, 53, 52, 46, 2, 35, 62, 3, 55, 33, 21, 35, 14, 3, 186, 134, 122, 26, 55, + 85, 58, 24, 47, 42, 32, 7, 16, 16, 67, 51, 40, 54, 33, 15, 23, 57, 99, 75, 6, + 7, 5, 3, 2, 1, 42, 226, 1, 3, 4, 4, 1, 124, 5, 108, 91, 41, 70, 50, 28, + 7, 10, 11, 4, 71, 8, 22, 18, 31, 40, 22, 34, 53, 36, 19, 44, 77, 73, 72, 40, + 70, 14, 45, 50, 46, 0, 2, 0, 54, 255, 243, 1, 193, 2, 110, 0, 26, 0, 45, 0, + 201, 185, 0, 36, 255, 240, 64, 19, 14, 0, 77, 26, 24, 8, 0, 77, 25, 32, 16, 0, + 77, 25, 40, 15, 0, 77, 22, 184, 255, 216, 180, 15, 16, 0, 76, 21, 184, 255, 232, 179, + 16, 0, 77, 21, 184, 255, 240, 179, 15, 0, 77, 21, 184, 255, 232, 179, 8, 0, 77, 17, + 184, 255, 232, 179, 11, 0, 77, 17, 184, 255, 232, 179, 9, 0, 77, 17, 184, 255, 216, 179, + 8, 0, 77, 16, 184, 255, 216, 179, 18, 0, 77, 16, 184, 255, 192, 179, 17, 0, 77, 16, + 184, 255, 232, 179, 12, 0, 77, 8, 184, 255, 232, 180, 13, 14, 0, 76, 4, 184, 255, 224, + 64, 38, 14, 0, 77, 3, 32, 16, 0, 77, 43, 140, 19, 6, 6, 19, 47, 11, 33, 140, + 16, 0, 1, 0, 46, 30, 27, 143, 11, 14, 14, 5, 38, 143, 24, 87, 6, 143, 5, 86, + 0, 63, 237, 63, 237, 17, 57, 47, 51, 237, 50, 1, 16, 214, 93, 237, 50, 16, 206, 50, + 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 55, 52, 62, 2, 55, 23, 14, 3, 7, 54, 54, 51, 50, 30, 2, 21, 20, 14, + 2, 35, 34, 38, 55, 34, 6, 7, 6, 20, 21, 20, 30, 2, 51, 50, 62, 2, 53, 52, + 38, 54, 49, 91, 130, 82, 7, 53, 87, 68, 46, 12, 24, 57, 32, 52, 73, 44, 20, 22, + 46, 72, 50, 103, 102, 197, 32, 53, 27, 1, 11, 27, 46, 36, 30, 40, 26, 11, 55, 248, + 90, 139, 94, 50, 1, 70, 1, 21, 47, 74, 54, 11, 14, 32, 53, 70, 37, 34, 71, 59, + 37, 138, 187, 12, 12, 10, 19, 11, 39, 69, 53, 31, 25, 38, 47, 21, 61, 64, 0, 1, + 0, 63, 0, 0, 1, 199, 2, 107, 0, 14, 0, 37, 64, 18, 14, 140, 0, 0, 6, 5, + 140, 9, 16, 6, 15, 9, 5, 142, 7, 86, 0, 85, 0, 63, 63, 237, 50, 1, 16, 198, + 16, 222, 237, 18, 57, 47, 237, 49, 48, 51, 62, 3, 55, 33, 53, 33, 21, 14, 3, 7, + 155, 5, 41, 58, 70, 34, 254, 212, 1, 136, 30, 70, 63, 46, 6, 71, 159, 149, 127, 41, + 72, 69, 35, 118, 147, 167, 83, 0, 3, 0, 51, 255, 243, 1, 193, 2, 121, 0, 27, 0, + 43, 0, 59, 1, 32, 181, 58, 24, 14, 0, 77, 56, 184, 255, 224, 179, 15, 0, 77, 56, + 184, 255, 232, 179, 14, 0, 77, 51, 184, 255, 224, 64, 40, 17, 18, 0, 76, 47, 24, 18, + 0, 77, 47, 40, 17, 0, 77, 40, 48, 15, 0, 77, 40, 24, 10, 0, 77, 40, 40, 9, + 0, 77, 35, 40, 18, 0, 77, 35, 48, 17, 0, 77, 31, 184, 255, 224, 180, 17, 18, 0, + 76, 27, 184, 255, 232, 179, 13, 0, 77, 25, 184, 255, 232, 179, 10, 0, 77, 21, 184, 255, + 224, 179, 10, 0, 77, 21, 184, 255, 240, 179, 9, 0, 77, 21, 184, 255, 224, 64, 51, 8, + 0, 77, 15, 32, 10, 0, 77, 15, 32, 8, 0, 77, 12, 32, 13, 0, 77, 12, 56, 9, + 10, 0, 76, 9, 8, 17, 18, 0, 76, 6, 24, 11, 0, 77, 6, 32, 10, 0, 77, 6, + 24, 9, 0, 77, 6, 32, 8, 0, 77, 1, 184, 255, 232, 180, 9, 10, 0, 76, 1, 184, + 255, 224, 64, 44, 8, 0, 77, 11, 41, 13, 38, 140, 0, 57, 26, 54, 0, 44, 140, 23, + 23, 0, 61, 54, 140, 13, 13, 28, 140, 8, 60, 26, 57, 57, 18, 33, 11, 41, 41, 3, + 49, 143, 18, 88, 33, 143, 3, 87, 0, 63, 237, 63, 237, 17, 57, 17, 51, 17, 18, 57, + 17, 51, 1, 16, 214, 237, 51, 47, 237, 16, 206, 50, 47, 237, 17, 18, 57, 57, 16, 237, + 17, 57, 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, 6, 35, 34, 46, 2, + 53, 52, 54, 55, 38, 53, 52, 62, 2, 51, 50, 30, 2, 21, 20, 6, 7, 22, 5, 20, + 30, 2, 51, 50, 62, 2, 53, 52, 38, 39, 6, 6, 19, 52, 46, 2, 35, 34, 14, 2, + 21, 20, 22, 23, 54, 54, 1, 193, 99, 101, 58, 76, 45, 19, 58, 40, 85, 26, 48, 69, + 43, 50, 71, 44, 20, 54, 35, 103, 254, 194, 12, 28, 46, 33, 31, 45, 29, 14, 82, 72, + 40, 44, 224, 12, 25, 40, 28, 29, 39, 26, 11, 59, 68, 38, 45, 161, 78, 96, 31, 49, + 60, 29, 53, 82, 25, 48, 99, 34, 62, 46, 28, 30, 47, 57, 27, 53, 77, 23, 49, 115, + 16, 35, 30, 19, 17, 29, 36, 18, 57, 61, 16, 22, 66, 1, 15, 13, 33, 27, 19, 18, + 27, 33, 16, 41, 71, 16, 22, 60, 0, 2, 0, 51, 255, 254, 1, 191, 2, 121, 0, 22, + 0, 41, 0, 173, 185, 0, 36, 255, 232, 179, 16, 0, 77, 36, 184, 255, 240, 64, 14, 15, + 0, 77, 32, 32, 15, 0, 77, 32, 16, 14, 0, 77, 22, 184, 255, 232, 179, 8, 0, 77, + 21, 184, 255, 232, 179, 16, 0, 77, 21, 184, 255, 232, 64, 40, 10, 0, 77, 17, 24, 10, + 0, 77, 17, 24, 8, 0, 77, 12, 48, 18, 0, 77, 12, 56, 17, 0, 77, 12, 16, 12, + 0, 77, 12, 24, 10, 11, 0, 76, 12, 16, 9, 0, 77, 2, 184, 255, 216, 179, 16, 0, + 77, 2, 184, 255, 224, 64, 30, 15, 0, 77, 7, 29, 140, 0, 43, 39, 140, 15, 4, 4, + 15, 42, 26, 23, 143, 7, 10, 10, 3, 34, 143, 20, 88, 4, 143, 3, 85, 0, 63, 237, + 63, 237, 17, 57, 47, 51, 237, 50, 1, 16, 198, 50, 47, 16, 237, 16, 222, 237, 50, 49, + 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 6, + 7, 39, 50, 54, 55, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 7, 50, + 54, 55, 54, 52, 53, 52, 46, 2, 35, 34, 14, 2, 21, 20, 22, 1, 191, 180, 181, 3, + 112, 137, 22, 24, 58, 32, 53, 72, 44, 20, 22, 46, 72, 50, 102, 104, 198, 32, 55, 26, + 1, 11, 27, 47, 36, 30, 40, 26, 11, 55, 1, 115, 185, 187, 1, 70, 89, 109, 11, 13, + 31, 53, 68, 38, 34, 71, 58, 38, 140, 183, 12, 11, 10, 18, 10, 39, 70, 52, 31, 25, + 37, 46, 21, 61, 63, 255, 255, 0, 177, 255, 244, 1, 68, 1, 208, 2, 38, 0, 17, 0, + 0, 1, 7, 0, 17, 0, 0, 1, 67, 0, 16, 64, 11, 1, 0, 17, 12, 5, 0, 80, + 1, 8, 14, 79, 43, 43, 52, 0, 0, 255, 255, 0, 125, 255, 112, 1, 71, 1, 208, 2, + 54, 0, 15, 232, 0, 0, 7, 0, 17, 0, 0, 1, 67, 0, 1, 0, 49, 0, 55, 1, + 202, 1, 198, 0, 6, 0, 108, 64, 11, 5, 24, 18, 0, 77, 2, 40, 18, 0, 77, 0, + 184, 255, 208, 64, 18, 17, 18, 0, 76, 6, 16, 17, 0, 77, 187, 5, 1, 4, 8, 19, + 0, 77, 3, 184, 255, 240, 182, 19, 0, 77, 180, 2, 1, 1, 184, 255, 240, 64, 22, 17, + 0, 77, 6, 1, 8, 0, 3, 7, 6, 5, 0, 1, 31, 2, 111, 2, 2, 2, 4, 3, + 0, 0, 25, 47, 50, 50, 221, 93, 24, 205, 25, 16, 221, 24, 205, 1, 16, 198, 50, 16, + 206, 50, 49, 48, 0, 43, 113, 43, 43, 113, 43, 1, 43, 43, 43, 55, 5, 7, 37, 53, + 37, 23, 141, 1, 61, 23, 254, 126, 1, 130, 23, 255, 131, 69, 164, 71, 164, 69, 0, 2, + 0, 46, 0, 132, 1, 199, 1, 137, 0, 3, 0, 7, 0, 38, 64, 19, 6, 1, 9, 7, + 0, 8, 4, 7, 3, 160, 0, 1, 224, 0, 1, 63, 0, 1, 0, 0, 47, 93, 93, 113, + 205, 222, 205, 1, 16, 198, 50, 16, 206, 50, 49, 48, 55, 33, 21, 33, 17, 33, 21, 33, + 46, 1, 153, 254, 103, 1, 153, 254, 103, 203, 71, 1, 5, 71, 0, 1, 0, 49, 0, 55, + 1, 202, 1, 198, 0, 6, 0, 112, 64, 11, 6, 48, 18, 0, 77, 6, 56, 17, 0, 77, + 5, 184, 255, 232, 179, 18, 0, 77, 5, 184, 255, 216, 179, 17, 0, 77, 4, 184, 255, 240, + 64, 43, 19, 0, 77, 179, 4, 1, 1, 16, 19, 0, 77, 187, 1, 1, 0, 16, 18, 0, + 77, 0, 48, 17, 0, 77, 6, 3, 8, 0, 5, 7, 5, 31, 4, 111, 4, 2, 4, 6, + 0, 1, 3, 2, 6, 0, 25, 47, 51, 51, 221, 24, 205, 25, 16, 221, 93, 24, 205, 1, + 16, 198, 50, 16, 206, 50, 49, 48, 0, 43, 43, 113, 43, 113, 43, 43, 43, 1, 43, 43, + 19, 55, 5, 21, 5, 39, 37, 49, 23, 1, 130, 254, 126, 23, 1, 61, 1, 129, 69, 164, + 71, 164, 69, 131, 0, 2, 0, 92, 255, 244, 1, 154, 2, 121, 0, 28, 0, 40, 0, 124, + 185, 0, 26, 255, 232, 179, 18, 0, 77, 26, 184, 255, 248, 179, 17, 0, 77, 25, 184, 255, + 232, 179, 15, 0, 77, 25, 184, 255, 240, 179, 14, 0, 77, 19, 184, 255, 232, 179, 12, 0, + 77, 19, 184, 255, 240, 179, 11, 0, 77, 19, 184, 255, 232, 64, 38, 10, 0, 77, 14, 16, + 18, 0, 77, 14, 24, 17, 0, 77, 6, 149, 21, 28, 149, 13, 1, 1, 38, 148, 32, 32, + 42, 41, 28, 35, 154, 29, 92, 12, 12, 9, 155, 16, 90, 0, 63, 237, 50, 47, 63, 253, + 206, 1, 17, 18, 57, 47, 237, 51, 47, 206, 253, 220, 237, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 55, 39, 52, 62, 2, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, + 50, 30, 2, 21, 20, 14, 4, 21, 7, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, + 185, 1, 44, 53, 44, 48, 47, 29, 57, 29, 23, 30, 76, 43, 51, 65, 38, 15, 23, 34, + 40, 34, 23, 28, 28, 39, 39, 28, 27, 40, 40, 211, 19, 43, 63, 54, 54, 35, 38, 46, + 14, 16, 64, 17, 19, 28, 43, 52, 24, 30, 47, 42, 38, 41, 48, 29, 223, 37, 31, 31, + 37, 37, 31, 31, 37, 0, 2, 0, 40, 255, 121, 1, 212, 2, 121, 0, 45, 0, 60, 0, + 195, 185, 0, 59, 255, 224, 180, 17, 18, 0, 76, 49, 184, 255, 232, 179, 18, 0, 77, 49, + 184, 255, 240, 179, 17, 0, 77, 44, 184, 255, 240, 64, 31, 10, 0, 77, 40, 32, 14, 0, + 77, 40, 16, 12, 13, 0, 76, 34, 16, 18, 0, 77, 34, 8, 17, 0, 77, 34, 16, 11, + 12, 0, 76, 25, 184, 255, 232, 179, 10, 0, 77, 25, 184, 255, 224, 179, 9, 0, 77, 20, + 184, 255, 248, 179, 16, 0, 77, 19, 184, 255, 240, 64, 60, 11, 0, 77, 16, 24, 18, 0, + 77, 16, 8, 17, 0, 77, 9, 8, 12, 0, 77, 9, 16, 11, 0, 77, 6, 8, 12, 0, + 77, 6, 16, 11, 0, 77, 14, 54, 115, 0, 30, 30, 0, 62, 46, 8, 22, 115, 37, 61, + 58, 124, 11, 17, 124, 42, 69, 51, 124, 3, 27, 124, 32, 0, 47, 253, 222, 237, 63, 253, + 222, 237, 1, 16, 214, 253, 222, 205, 16, 206, 50, 47, 16, 237, 50, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 6, 6, 35, + 34, 46, 2, 53, 52, 54, 51, 50, 22, 23, 52, 38, 35, 34, 14, 2, 21, 20, 30, 2, + 51, 50, 55, 23, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 21, 7, 20, 30, + 2, 51, 50, 54, 55, 53, 38, 38, 35, 34, 6, 1, 212, 30, 62, 26, 35, 60, 45, 25, + 96, 77, 8, 15, 8, 52, 57, 35, 58, 42, 24, 24, 51, 79, 55, 40, 43, 8, 53, 45, + 73, 107, 69, 34, 37, 65, 86, 50, 88, 102, 203, 5, 18, 33, 29, 8, 20, 11, 9, 17, + 8, 43, 47, 63, 12, 9, 23, 48, 75, 52, 93, 97, 1, 1, 63, 74, 34, 75, 118, 84, + 63, 117, 88, 53, 13, 67, 14, 65, 106, 136, 71, 103, 148, 94, 45, 119, 106, 168, 20, 46, + 39, 27, 2, 3, 245, 3, 2, 67, 0, 2, 0, 9, 0, 0, 1, 235, 2, 107, 0, 15, + 0, 22, 0, 228, 64, 23, 22, 24, 17, 18, 0, 76, 22, 16, 16, 0, 77, 22, 24, 13, + 14, 0, 76, 20, 16, 17, 0, 77, 19, 184, 255, 232, 179, 17, 0, 77, 18, 184, 255, 248, + 179, 25, 0, 77, 17, 184, 255, 248, 179, 26, 0, 77, 17, 184, 255, 232, 180, 17, 18, 0, + 76, 17, 184, 255, 240, 179, 16, 0, 77, 17, 184, 255, 240, 64, 15, 13, 14, 0, 76, 13, + 16, 30, 0, 77, 11, 16, 14, 0, 77, 8, 184, 255, 248, 179, 14, 0, 77, 2, 184, 255, + 240, 64, 64, 17, 0, 77, 1, 16, 17, 0, 77, 2, 19, 17, 16, 9, 3, 16, 3, 120, + 4, 9, 20, 4, 4, 9, 1, 20, 16, 10, 0, 16, 0, 120, 15, 10, 20, 15, 15, 10, + 16, 16, 4, 143, 15, 1, 15, 24, 4, 23, 1, 2, 121, 20, 19, 19, 3, 16, 10, 9, + 65, 4, 3, 68, 15, 0, 68, 0, 63, 50, 63, 51, 63, 51, 51, 18, 57, 47, 51, 237, + 50, 1, 16, 198, 16, 206, 93, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, 16, 196, + 196, 135, 24, 16, 43, 135, 125, 196, 16, 14, 196, 5, 196, 196, 49, 48, 1, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 33, 39, 35, 7, 35, 62, 3, 55, + 51, 30, 3, 23, 3, 6, 6, 7, 51, 38, 38, 1, 148, 37, 238, 36, 84, 17, 42, 49, + 54, 30, 102, 29, 53, 47, 42, 17, 242, 23, 54, 24, 200, 23, 53, 162, 162, 66, 154, 162, + 163, 74, 74, 163, 162, 154, 66, 2, 35, 63, 166, 88, 90, 167, 0, 3, 0, 54, 255, 251, + 1, 195, 2, 113, 0, 26, 0, 41, 0, 56, 0, 122, 64, 81, 123, 50, 1, 106, 50, 1, + 121, 46, 1, 106, 46, 1, 106, 38, 122, 38, 2, 107, 34, 123, 34, 2, 133, 25, 149, 25, + 2, 149, 23, 1, 129, 22, 1, 148, 19, 1, 133, 19, 1, 144, 14, 1, 20, 14, 132, 14, + 2, 5, 14, 1, 21, 48, 118, 16, 16, 36, 118, 24, 58, 42, 27, 115, 16, 5, 1, 5, + 57, 21, 27, 121, 42, 42, 31, 53, 124, 11, 65, 31, 124, 0, 67, 0, 63, 237, 63, 237, + 18, 57, 47, 237, 57, 1, 16, 214, 93, 237, 50, 16, 222, 237, 51, 47, 237, 50, 49, 48, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 23, 34, 46, 2, 39, 17, + 62, 3, 51, 50, 30, 2, 21, 20, 14, 2, 7, 22, 22, 21, 20, 6, 3, 21, 22, 22, + 51, 50, 62, 2, 53, 52, 46, 2, 35, 39, 51, 50, 62, 2, 53, 52, 46, 2, 35, 34, + 6, 7, 204, 15, 40, 40, 40, 15, 15, 39, 41, 39, 16, 46, 80, 59, 33, 14, 25, 33, + 19, 51, 69, 118, 197, 2, 41, 31, 31, 57, 44, 27, 25, 41, 54, 29, 84, 65, 25, 50, + 40, 24, 22, 36, 47, 26, 26, 39, 8, 5, 2, 3, 6, 4, 2, 88, 4, 6, 3, 2, + 16, 38, 62, 46, 22, 41, 36, 27, 7, 14, 75, 60, 92, 94, 1, 38, 221, 1, 3, 10, + 27, 44, 35, 31, 42, 25, 11, 68, 10, 22, 38, 29, 27, 38, 24, 10, 1, 2, 0, 1, + 0, 46, 255, 243, 1, 204, 2, 121, 0, 32, 0, 183, 185, 0, 27, 255, 240, 179, 18, 0, + 77, 27, 184, 255, 248, 179, 17, 0, 77, 27, 184, 255, 240, 180, 11, 12, 0, 76, 22, 184, + 255, 248, 179, 16, 0, 77, 22, 184, 255, 240, 179, 15, 0, 77, 21, 184, 255, 224, 179, 18, + 0, 77, 21, 184, 255, 232, 179, 17, 0, 77, 21, 184, 255, 232, 183, 11, 12, 0, 76, 40, + 21, 1, 15, 184, 255, 232, 179, 18, 0, 77, 15, 184, 255, 200, 179, 17, 0, 77, 15, 184, + 255, 224, 64, 11, 14, 16, 0, 76, 5, 24, 13, 14, 0, 76, 1, 184, 255, 240, 179, 18, + 0, 77, 1, 184, 255, 224, 180, 16, 17, 0, 76, 1, 184, 255, 232, 64, 23, 15, 0, 77, + 16, 16, 0, 34, 24, 118, 8, 33, 17, 17, 19, 124, 13, 69, 32, 32, 29, 124, 3, 70, + 0, 63, 237, 50, 47, 63, 237, 50, 47, 1, 16, 214, 237, 16, 206, 50, 47, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 93, 43, 43, 43, 43, 43, 43, 43, 43, 37, 6, 6, 35, 34, + 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 7, 38, 35, 34, 14, 2, 21, 20, 30, 2, + 51, 50, 54, 55, 1, 204, 35, 79, 45, 55, 93, 68, 39, 41, 70, 94, 53, 37, 77, 37, + 24, 66, 58, 41, 65, 46, 25, 27, 48, 67, 39, 29, 64, 34, 26, 20, 19, 39, 79, 122, + 83, 79, 120, 82, 42, 20, 23, 68, 38, 35, 66, 92, 57, 64, 94, 62, 30, 15, 19, 0, + 2, 0, 54, 255, 251, 1, 204, 2, 113, 0, 14, 0, 28, 0, 69, 64, 13, 24, 40, 17, + 18, 0, 76, 19, 24, 17, 18, 0, 76, 12, 184, 255, 240, 179, 13, 0, 77, 3, 184, 255, + 240, 64, 22, 13, 0, 77, 22, 118, 0, 30, 15, 115, 16, 7, 1, 7, 29, 25, 124, 10, + 65, 17, 124, 5, 67, 0, 63, 237, 63, 237, 1, 16, 214, 93, 237, 16, 222, 237, 49, 48, + 43, 43, 43, 43, 1, 20, 14, 2, 35, 34, 39, 17, 54, 51, 50, 30, 2, 1, 22, 51, + 50, 62, 2, 53, 52, 38, 35, 34, 6, 7, 1, 204, 43, 75, 103, 60, 62, 63, 63, 62, + 60, 103, 75, 43, 254, 188, 25, 26, 45, 70, 48, 26, 97, 95, 13, 25, 10, 1, 54, 86, + 120, 75, 34, 15, 2, 88, 15, 34, 76, 120, 254, 186, 3, 27, 59, 93, 65, 126, 118, 1, + 2, 0, 1, 0, 91, 0, 0, 1, 204, 2, 107, 0, 11, 0, 54, 64, 29, 7, 7, 3, + 3, 10, 13, 5, 9, 115, 0, 0, 16, 0, 2, 0, 12, 8, 121, 5, 5, 9, 4, 121, + 1, 65, 9, 121, 0, 68, 0, 63, 237, 63, 237, 18, 57, 47, 237, 1, 16, 214, 93, 237, + 50, 16, 206, 50, 47, 50, 47, 49, 48, 51, 17, 33, 21, 33, 21, 51, 21, 35, 21, 33, + 21, 91, 1, 91, 254, 247, 232, 232, 1, 31, 2, 107, 70, 190, 70, 219, 70, 0, 1, 0, + 91, 0, 0, 1, 186, 2, 107, 0, 9, 0, 47, 64, 25, 6, 6, 3, 11, 5, 9, 115, + 0, 0, 16, 0, 2, 0, 10, 8, 121, 5, 5, 0, 4, 121, 1, 65, 0, 68, 0, 63, + 63, 237, 18, 57, 47, 237, 1, 16, 214, 93, 237, 50, 16, 206, 50, 47, 49, 48, 51, 17, + 33, 21, 33, 21, 51, 21, 35, 17, 91, 1, 95, 254, 243, 237, 237, 2, 107, 70, 193, 69, + 254, 225, 0, 1, 0, 46, 255, 243, 1, 199, 2, 121, 0, 37, 0, 162, 185, 0, 32, 255, + 224, 180, 17, 18, 0, 76, 32, 184, 255, 232, 179, 12, 0, 77, 32, 184, 255, 240, 179, 11, + 0, 77, 31, 184, 255, 232, 179, 16, 0, 77, 27, 184, 255, 248, 179, 16, 0, 77, 26, 184, + 255, 232, 179, 18, 0, 77, 26, 184, 255, 224, 179, 17, 0, 77, 26, 184, 255, 232, 180, 11, + 12, 0, 76, 18, 184, 255, 224, 179, 18, 0, 77, 18, 184, 255, 192, 179, 17, 0, 77, 18, + 184, 255, 232, 64, 38, 13, 16, 0, 76, 7, 24, 14, 0, 77, 7, 16, 13, 0, 77, 20, + 20, 0, 115, 1, 39, 29, 118, 10, 38, 0, 0, 34, 21, 21, 24, 124, 15, 69, 37, 34, + 124, 5, 70, 0, 63, 237, 50, 63, 237, 50, 47, 17, 57, 47, 1, 16, 214, 237, 16, 222, + 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 51, + 17, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 30, 2, 23, 7, 38, 38, 35, + 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, 1, 117, 82, 19, 84, 57, 56, 92, 65, + 36, 40, 69, 92, 53, 34, 52, 37, 24, 6, 27, 23, 63, 35, 38, 65, 46, 26, 23, 44, + 65, 42, 29, 32, 8, 1, 49, 254, 222, 7, 21, 43, 82, 121, 77, 78, 120, 82, 43, 10, + 14, 15, 4, 69, 18, 23, 36, 66, 93, 57, 56, 92, 66, 37, 8, 4, 0, 1, 0, 45, + 0, 0, 1, 199, 2, 107, 0, 11, 0, 49, 64, 26, 11, 3, 115, 2, 13, 10, 6, 115, + 7, 12, 5, 121, 15, 10, 31, 10, 2, 10, 10, 7, 0, 8, 65, 3, 7, 68, 0, 63, + 51, 63, 51, 18, 57, 47, 93, 237, 1, 16, 214, 237, 50, 16, 222, 237, 50, 49, 48, 1, + 51, 17, 35, 17, 35, 17, 35, 17, 51, 17, 51, 1, 117, 82, 82, 246, 82, 82, 246, 2, + 107, 253, 149, 1, 32, 254, 224, 2, 107, 254, 251, 0, 1, 0, 89, 0, 0, 1, 155, 2, + 107, 0, 11, 0, 43, 64, 21, 8, 5, 6, 11, 2, 1, 115, 6, 6, 12, 13, 0, 7, + 121, 9, 65, 1, 6, 121, 4, 68, 0, 63, 237, 50, 63, 237, 50, 1, 17, 18, 57, 47, + 253, 205, 50, 16, 205, 50, 49, 48, 1, 17, 51, 21, 33, 53, 51, 17, 35, 53, 33, 21, + 1, 35, 120, 254, 190, 120, 120, 1, 66, 2, 37, 254, 33, 70, 70, 1, 223, 70, 70, 0, + 1, 0, 54, 255, 243, 1, 164, 2, 107, 0, 19, 0, 74, 64, 23, 16, 24, 15, 16, 0, + 76, 10, 24, 14, 0, 77, 10, 32, 12, 13, 0, 76, 10, 24, 11, 0, 77, 5, 184, 255, + 240, 64, 22, 17, 18, 0, 76, 18, 115, 3, 21, 0, 0, 11, 20, 12, 12, 15, 124, 8, + 70, 0, 121, 1, 65, 0, 63, 237, 63, 237, 50, 47, 1, 16, 198, 50, 47, 16, 222, 237, + 49, 48, 43, 43, 43, 43, 43, 19, 53, 33, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, + 22, 51, 50, 54, 53, 17, 127, 1, 37, 19, 47, 79, 60, 60, 82, 19, 33, 19, 63, 42, + 64, 63, 2, 37, 70, 254, 92, 44, 78, 57, 33, 34, 16, 67, 14, 32, 68, 81, 1, 86, + 0, 1, 0, 64, 0, 0, 1, 235, 2, 107, 0, 22, 0, 97, 64, 55, 3, 30, 82, 3, + 0, 9, 14, 9, 120, 8, 3, 20, 8, 8, 3, 22, 3, 0, 3, 120, 19, 22, 20, 19, + 19, 22, 0, 0, 8, 24, 19, 14, 115, 0, 16, 16, 16, 2, 16, 23, 0, 22, 65, 19, + 14, 3, 3, 16, 17, 65, 16, 68, 8, 9, 68, 0, 63, 51, 63, 63, 18, 57, 25, 47, + 51, 51, 24, 63, 51, 1, 16, 214, 93, 237, 50, 16, 206, 50, 47, 135, 16, 43, 135, 125, + 196, 135, 24, 16, 43, 135, 8, 43, 196, 49, 48, 1, 6, 6, 7, 30, 3, 23, 35, 46, + 3, 39, 17, 35, 17, 51, 17, 54, 54, 55, 1, 214, 49, 117, 68, 32, 72, 69, 61, 21, + 93, 25, 58, 65, 69, 35, 82, 82, 65, 119, 45, 2, 107, 73, 144, 72, 27, 72, 85, 96, + 50, 46, 88, 76, 63, 23, 254, 216, 2, 107, 254, 236, 67, 146, 63, 0, 1, 0, 91, 0, + 0, 1, 204, 2, 107, 0, 5, 0, 32, 64, 17, 0, 7, 5, 115, 0, 2, 16, 2, 2, + 2, 6, 3, 65, 5, 121, 2, 68, 0, 63, 237, 63, 1, 16, 214, 93, 237, 16, 206, 49, + 48, 37, 21, 33, 17, 51, 17, 1, 204, 254, 143, 82, 70, 70, 2, 107, 253, 219, 0, 1, + 0, 32, 0, 0, 1, 212, 2, 107, 0, 26, 0, 249, 185, 0, 26, 255, 248, 179, 25, 0, + 77, 26, 184, 255, 248, 179, 19, 0, 77, 26, 184, 255, 224, 179, 10, 0, 77, 24, 184, 255, + 248, 64, 26, 27, 28, 0, 76, 24, 8, 16, 0, 77, 23, 8, 14, 0, 77, 4, 13, 1, + 12, 12, 1, 3, 8, 27, 0, 77, 3, 184, 255, 248, 180, 15, 17, 0, 76, 3, 184, 255, + 240, 64, 78, 14, 0, 77, 1, 56, 10, 0, 77, 61, 1, 1, 44, 1, 1, 12, 1, 0, + 1, 123, 11, 12, 20, 11, 11, 12, 11, 6, 54, 26, 1, 37, 26, 1, 13, 26, 0, 26, + 123, 14, 13, 20, 14, 14, 13, 0, 0, 19, 6, 115, 2, 24, 29, 0, 77, 2, 32, 27, + 28, 0, 76, 2, 24, 26, 0, 77, 11, 2, 1, 70, 2, 1, 2, 5, 28, 14, 19, 115, + 25, 184, 255, 224, 64, 26, 26, 29, 0, 76, 3, 25, 1, 25, 20, 27, 14, 26, 65, 12, + 15, 0, 1, 0, 13, 13, 6, 20, 68, 11, 1, 65, 0, 63, 51, 63, 51, 51, 47, 51, + 113, 51, 63, 51, 1, 16, 214, 50, 113, 43, 237, 50, 16, 222, 50, 93, 113, 43, 43, 43, + 237, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, 1, 93, 93, 17, 51, 135, 24, 16, + 43, 135, 125, 196, 1, 93, 93, 49, 48, 43, 43, 43, 43, 113, 113, 43, 43, 43, 43, 43, + 43, 19, 19, 51, 22, 18, 23, 35, 46, 3, 39, 3, 35, 3, 14, 3, 7, 35, 62, 3, + 55, 51, 251, 96, 77, 20, 17, 7, 80, 1, 2, 3, 3, 2, 90, 72, 92, 1, 3, 3, + 3, 1, 80, 3, 8, 11, 15, 9, 76, 1, 55, 1, 52, 146, 254, 206, 167, 54, 126, 134, + 138, 65, 254, 230, 1, 26, 65, 137, 135, 126, 54, 76, 160, 158, 154, 71, 0, 1, 0, 55, + 0, 0, 1, 189, 2, 107, 0, 17, 0, 78, 64, 48, 26, 0, 1, 13, 0, 1, 38, 9, + 1, 4, 9, 20, 9, 2, 9, 0, 5, 0, 126, 14, 9, 20, 14, 9, 14, 115, 17, 19, + 5, 115, 16, 7, 1, 1, 7, 1, 7, 18, 15, 65, 5, 9, 65, 7, 68, 14, 0, 68, + 0, 63, 50, 63, 63, 51, 63, 1, 16, 214, 93, 93, 237, 16, 222, 253, 135, 43, 135, 125, + 196, 1, 93, 93, 93, 93, 49, 48, 33, 46, 3, 39, 17, 35, 17, 51, 30, 3, 23, 17, + 51, 17, 1, 105, 34, 60, 55, 54, 28, 75, 84, 41, 61, 51, 48, 30, 75, 83, 135, 118, + 105, 53, 254, 18, 2, 107, 75, 112, 105, 111, 73, 1, 220, 253, 149, 0, 2, 0, 29, 255, + 243, 1, 216, 2, 121, 0, 19, 0, 31, 0, 154, 185, 0, 30, 255, 232, 179, 14, 0, 77, + 30, 184, 255, 240, 64, 16, 13, 0, 77, 28, 24, 13, 14, 0, 76, 24, 24, 13, 14, 0, + 76, 22, 184, 255, 232, 179, 14, 0, 77, 22, 184, 255, 240, 64, 15, 13, 0, 77, 17, 24, + 15, 16, 0, 76, 17, 24, 8, 0, 77, 13, 184, 255, 232, 180, 15, 16, 0, 76, 13, 184, + 255, 232, 179, 8, 0, 77, 7, 184, 255, 232, 180, 15, 16, 0, 76, 7, 184, 255, 248, 64, + 35, 8, 0, 77, 3, 24, 15, 16, 0, 76, 3, 24, 8, 0, 77, 26, 118, 10, 33, 20, + 118, 0, 64, 11, 16, 72, 0, 32, 23, 124, 15, 70, 29, 124, 5, 69, 0, 63, 237, 63, + 237, 1, 16, 214, 43, 237, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 19, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, + 2, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 29, 32, 58, 81, 50, 49, 82, + 58, 33, 33, 58, 82, 49, 50, 81, 58, 32, 84, 66, 69, 70, 70, 70, 70, 69, 66, 1, + 54, 83, 122, 79, 39, 39, 79, 122, 83, 83, 122, 80, 38, 38, 80, 122, 83, 122, 130, 130, + 122, 122, 130, 130, 0, 2, 0, 73, 0, 0, 1, 199, 2, 113, 0, 16, 0, 26, 0, 90, + 64, 17, 26, 16, 16, 0, 77, 26, 24, 15, 0, 77, 23, 24, 15, 16, 0, 76, 7, 184, + 255, 232, 179, 8, 0, 77, 2, 184, 255, 232, 64, 32, 8, 0, 77, 25, 118, 5, 28, 21, + 21, 10, 115, 0, 11, 16, 11, 32, 11, 3, 8, 11, 27, 9, 121, 21, 21, 0, 11, 68, + 17, 124, 0, 65, 0, 63, 237, 63, 18, 57, 47, 237, 1, 16, 214, 94, 93, 237, 50, 47, + 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 19, 50, 30, 2, 21, 20, 6, 35, 35, 21, + 35, 17, 62, 3, 23, 34, 6, 7, 21, 51, 50, 54, 53, 52, 235, 55, 83, 55, 27, 114, + 114, 72, 82, 18, 43, 43, 41, 23, 26, 48, 12, 68, 75, 73, 2, 113, 28, 51, 70, 43, + 97, 105, 231, 2, 98, 4, 6, 4, 1, 71, 1, 2, 250, 60, 69, 124, 0, 2, 0, 29, + 255, 91, 1, 216, 2, 120, 0, 28, 0, 40, 0, 207, 185, 0, 39, 255, 232, 179, 14, 0, + 77, 39, 184, 255, 224, 64, 24, 13, 0, 77, 37, 16, 14, 0, 77, 37, 32, 13, 0, 77, + 33, 16, 14, 0, 77, 33, 24, 13, 0, 77, 31, 184, 255, 240, 179, 14, 0, 77, 31, 184, + 255, 232, 64, 31, 13, 0, 77, 27, 40, 15, 16, 0, 76, 27, 8, 12, 0, 77, 27, 16, + 9, 10, 0, 76, 27, 24, 8, 0, 77, 13, 32, 13, 0, 77, 13, 184, 255, 232, 179, 8, + 0, 77, 7, 184, 255, 232, 64, 10, 15, 16, 0, 76, 7, 16, 13, 0, 77, 7, 184, 255, + 224, 64, 51, 8, 0, 77, 3, 24, 16, 0, 77, 3, 32, 15, 0, 77, 3, 24, 8, 0, + 77, 15, 118, 26, 26, 0, 35, 118, 10, 20, 20, 10, 42, 29, 118, 0, 64, 12, 16, 72, + 0, 41, 20, 124, 21, 32, 124, 26, 15, 70, 38, 124, 5, 69, 0, 63, 237, 63, 51, 237, + 220, 237, 1, 16, 214, 43, 237, 16, 206, 50, 47, 16, 237, 17, 57, 47, 237, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, + 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 7, 30, 3, 23, 7, 46, 3, 39, 38, + 38, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 29, 32, 58, 81, 50, 49, 82, + 58, 33, 26, 48, 68, 41, 3, 28, 43, 55, 30, 19, 41, 75, 60, 42, 7, 81, 94, 84, + 66, 69, 70, 70, 70, 70, 69, 66, 1, 53, 83, 122, 79, 39, 39, 79, 122, 83, 74, 113, + 80, 46, 7, 20, 29, 21, 14, 4, 66, 7, 22, 36, 52, 38, 17, 155, 147, 122, 130, 130, + 122, 122, 130, 130, 0, 2, 0, 55, 0, 0, 1, 207, 2, 113, 0, 26, 0, 41, 0, 101, + 64, 61, 40, 32, 16, 0, 77, 35, 24, 16, 0, 77, 2, 32, 16, 0, 77, 3, 9, 12, + 9, 120, 8, 3, 20, 8, 8, 3, 12, 12, 0, 8, 8, 37, 118, 0, 43, 31, 17, 115, + 0, 18, 16, 18, 2, 18, 42, 12, 3, 16, 121, 31, 31, 18, 27, 124, 24, 65, 18, 68, + 8, 9, 68, 0, 63, 51, 63, 63, 237, 18, 57, 47, 237, 50, 50, 1, 16, 214, 93, 237, + 50, 16, 222, 237, 51, 47, 17, 51, 47, 135, 16, 43, 135, 125, 196, 49, 48, 1, 43, 43, + 43, 1, 20, 6, 7, 30, 3, 23, 35, 38, 38, 39, 6, 34, 35, 35, 21, 35, 17, 62, + 3, 51, 50, 22, 39, 34, 6, 7, 21, 51, 50, 62, 2, 53, 52, 46, 2, 1, 175, 60, + 51, 15, 37, 38, 37, 16, 88, 30, 71, 33, 6, 23, 4, 70, 83, 15, 39, 41, 40, 16, + 112, 113, 218, 23, 43, 9, 53, 36, 57, 41, 22, 22, 36, 49, 1, 174, 57, 87, 24, 24, + 61, 69, 73, 35, 72, 132, 41, 1, 244, 2, 98, 4, 6, 3, 2, 98, 27, 1, 2, 239, + 10, 27, 47, 38, 36, 46, 27, 11, 0, 1, 0, 55, 255, 243, 1, 189, 2, 121, 0, 49, + 0, 216, 64, 11, 44, 24, 14, 0, 77, 44, 16, 13, 0, 77, 39, 184, 255, 232, 179, 10, + 0, 77, 39, 184, 255, 240, 179, 9, 0, 77, 36, 184, 255, 240, 179, 13, 0, 77, 36, 184, + 255, 208, 179, 10, 0, 77, 35, 184, 255, 240, 179, 15, 0, 77, 27, 184, 255, 232, 179, 17, + 0, 77, 26, 184, 255, 224, 179, 18, 0, 77, 20, 184, 255, 232, 179, 18, 0, 77, 20, 184, + 255, 240, 179, 17, 0, 77, 20, 184, 255, 224, 180, 15, 16, 0, 76, 20, 184, 255, 232, 179, + 14, 0, 77, 19, 184, 255, 224, 64, 62, 14, 0, 77, 11, 16, 14, 15, 0, 76, 11, 32, + 9, 10, 0, 76, 2, 16, 17, 0, 77, 1, 40, 18, 0, 77, 21, 21, 3, 118, 38, 51, + 46, 46, 28, 118, 0, 13, 16, 13, 2, 13, 50, 89, 8, 1, 8, 41, 25, 33, 16, 47, + 47, 0, 124, 41, 70, 22, 22, 25, 124, 16, 69, 0, 63, 237, 50, 47, 63, 237, 50, 47, + 17, 57, 17, 18, 57, 93, 1, 16, 214, 93, 237, 51, 47, 16, 222, 237, 51, 47, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 50, + 54, 53, 52, 46, 2, 39, 46, 3, 53, 52, 54, 51, 50, 30, 2, 23, 7, 38, 38, 35, + 34, 6, 21, 20, 30, 2, 23, 30, 3, 21, 20, 6, 35, 34, 46, 2, 39, 55, 22, 22, + 234, 63, 66, 24, 40, 50, 26, 30, 55, 43, 25, 102, 91, 25, 49, 42, 33, 10, 26, 20, + 70, 43, 45, 66, 19, 33, 44, 26, 38, 63, 45, 25, 109, 102, 33, 58, 45, 34, 9, 25, + 20, 78, 58, 48, 48, 29, 41, 31, 23, 10, 12, 30, 40, 54, 37, 81, 91, 7, 10, 14, + 7, 69, 12, 24, 45, 45, 26, 36, 27, 22, 11, 16, 32, 44, 60, 43, 81, 87, 9, 14, + 14, 6, 68, 11, 29, 0, 1, 0, 39, 0, 0, 1, 205, 2, 107, 0, 7, 0, 32, 64, + 15, 1, 3, 115, 6, 4, 4, 9, 8, 2, 5, 121, 7, 65, 4, 68, 0, 63, 63, 237, + 50, 1, 17, 18, 57, 47, 206, 253, 206, 49, 48, 1, 21, 35, 17, 35, 17, 35, 53, 1, + 205, 170, 82, 170, 2, 107, 70, 253, 219, 2, 37, 70, 0, 1, 0, 48, 255, 243, 1, 196, + 2, 107, 0, 25, 0, 74, 64, 13, 15, 32, 17, 18, 0, 76, 15, 16, 15, 16, 0, 76, + 11, 184, 255, 216, 179, 18, 0, 77, 11, 184, 255, 224, 179, 17, 0, 77, 11, 184, 255, 240, + 64, 19, 15, 16, 0, 76, 18, 115, 21, 27, 8, 115, 5, 26, 19, 6, 65, 13, 124, 0, + 70, 0, 63, 237, 63, 51, 1, 16, 214, 237, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, + 23, 34, 46, 2, 53, 17, 51, 17, 20, 30, 2, 51, 50, 62, 2, 53, 17, 51, 17, 20, + 14, 2, 250, 55, 77, 48, 22, 82, 17, 31, 44, 28, 28, 44, 31, 17, 82, 22, 48, 77, + 13, 32, 58, 84, 52, 1, 150, 254, 115, 47, 63, 38, 16, 16, 38, 63, 47, 1, 141, 254, + 106, 52, 84, 58, 32, 0, 1, 0, 13, 0, 0, 1, 232, 2, 107, 0, 22, 0, 65, 64, + 35, 5, 0, 5, 10, 0, 120, 22, 17, 20, 22, 22, 17, 5, 10, 10, 120, 11, 16, 20, + 11, 16, 11, 24, 22, 23, 0, 22, 65, 16, 5, 17, 68, 10, 11, 65, 0, 63, 51, 63, + 51, 51, 63, 51, 1, 16, 198, 16, 222, 135, 43, 125, 16, 196, 135, 24, 16, 43, 8, 125, + 16, 196, 49, 48, 19, 30, 3, 23, 62, 3, 55, 51, 14, 3, 7, 35, 46, 3, 39, 102, + 12, 37, 41, 42, 18, 16, 43, 42, 37, 12, 86, 8, 36, 50, 61, 33, 102, 31, 59, 50, + 36, 9, 2, 107, 63, 149, 149, 136, 51, 51, 138, 149, 148, 62, 40, 135, 167, 187, 90, 90, + 186, 167, 136, 40, 0, 1, 0, 32, 0, 0, 1, 212, 2, 107, 0, 20, 1, 223, 185, 0, + 19, 255, 224, 179, 25, 0, 77, 19, 184, 255, 232, 179, 23, 0, 77, 19, 184, 255, 240, 64, + 24, 20, 0, 77, 19, 40, 18, 0, 77, 19, 24, 17, 0, 77, 19, 16, 16, 0, 77, 19, + 40, 13, 0, 77, 18, 184, 255, 248, 179, 13, 0, 77, 18, 184, 255, 232, 64, 20, 11, 12, + 0, 76, 10, 32, 25, 0, 77, 10, 16, 23, 0, 77, 10, 16, 21, 0, 77, 10, 184, 255, + 232, 179, 14, 0, 77, 10, 184, 255, 240, 179, 13, 0, 77, 9, 184, 255, 240, 179, 25, 0, + 77, 9, 184, 255, 240, 64, 35, 23, 0, 77, 9, 32, 13, 14, 0, 76, 1, 16, 13, 0, + 77, 1, 40, 12, 0, 77, 1, 16, 11, 0, 77, 0, 32, 25, 0, 77, 0, 16, 23, 0, + 77, 0, 184, 255, 224, 180, 17, 18, 0, 76, 0, 184, 255, 232, 179, 16, 0, 77, 0, 184, + 255, 224, 179, 15, 0, 77, 0, 184, 255, 248, 179, 14, 0, 77, 0, 184, 255, 200, 179, 13, + 0, 77, 20, 184, 255, 176, 179, 25, 0, 77, 20, 184, 255, 208, 179, 24, 0, 77, 20, 184, + 255, 160, 179, 23, 0, 77, 20, 184, 255, 160, 179, 21, 0, 77, 20, 184, 255, 176, 179, 20, + 0, 77, 20, 184, 255, 144, 179, 19, 0, 77, 20, 184, 255, 152, 179, 14, 0, 77, 20, 184, + 255, 208, 64, 9, 13, 0, 77, 11, 88, 19, 0, 77, 11, 184, 255, 208, 64, 9, 14, 0, + 77, 8, 56, 19, 0, 77, 8, 184, 255, 232, 64, 94, 14, 0, 77, 1, 6, 7, 8, 1, + 8, 6, 120, 7, 8, 20, 7, 8, 7, 8, 124, 18, 1, 110, 18, 1, 18, 13, 12, 11, + 18, 11, 13, 120, 12, 11, 20, 12, 11, 12, 10, 31, 82, 19, 20, 19, 123, 11, 10, 20, + 11, 11, 10, 9, 31, 82, 0, 20, 0, 123, 8, 9, 20, 8, 8, 9, 187, 8, 1, 8, + 21, 180, 11, 1, 11, 22, 20, 20, 21, 22, 11, 19, 68, 13, 12, 65, 20, 10, 9, 9, + 7, 6, 65, 8, 0, 68, 0, 63, 50, 63, 51, 51, 47, 51, 51, 63, 51, 63, 51, 1, + 17, 18, 57, 61, 47, 18, 57, 93, 18, 57, 93, 135, 24, 16, 43, 135, 43, 196, 135, 24, + 16, 43, 135, 43, 196, 1, 24, 213, 135, 43, 16, 0, 193, 135, 5, 125, 16, 196, 1, 113, + 113, 24, 16, 213, 135, 43, 16, 0, 193, 135, 5, 125, 16, 196, 49, 48, 0, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 51, 35, 46, + 3, 39, 51, 19, 19, 51, 19, 19, 51, 14, 3, 7, 35, 3, 153, 77, 9, 13, 11, 8, + 3, 80, 11, 90, 72, 92, 11, 80, 3, 9, 12, 14, 8, 76, 97, 61, 147, 160, 168, 83, + 253, 251, 1, 26, 254, 230, 2, 5, 84, 168, 159, 146, 62, 1, 52, 0, 1, 0, 25, 0, + 0, 1, 219, 2, 107, 0, 21, 0, 108, 64, 65, 18, 21, 14, 8, 17, 15, 9, 16, 21, + 14, 12, 9, 16, 13, 0, 5, 8, 17, 13, 0, 8, 16, 9, 16, 120, 17, 8, 20, 17, + 8, 17, 17, 21, 1, 13, 0, 0, 14, 21, 14, 120, 13, 0, 20, 13, 13, 0, 21, 23, + 13, 13, 9, 22, 17, 16, 65, 14, 13, 65, 9, 8, 68, 21, 0, 68, 0, 63, 50, 63, + 51, 63, 51, 63, 51, 1, 16, 198, 50, 47, 16, 206, 135, 16, 43, 135, 125, 196, 135, 14, + 196, 1, 17, 51, 24, 47, 135, 43, 135, 125, 196, 15, 15, 15, 15, 49, 48, 33, 46, 3, + 39, 6, 6, 7, 35, 54, 54, 55, 3, 51, 23, 55, 51, 3, 22, 22, 23, 1, 128, 11, + 30, 34, 39, 21, 35, 70, 30, 89, 33, 88, 50, 161, 91, 121, 130, 89, 164, 48, 90, 35, + 27, 68, 72, 72, 31, 56, 145, 69, 74, 173, 80, 1, 36, 237, 237, 254, 223, 78, 168, 84, + 0, 1, 0, 13, 0, 0, 1, 232, 2, 107, 0, 16, 0, 77, 64, 41, 8, 11, 8, 5, + 11, 120, 12, 15, 20, 12, 15, 12, 15, 115, 1, 8, 5, 5, 120, 4, 1, 20, 4, 1, + 4, 1, 1, 17, 18, 12, 11, 65, 15, 8, 1, 1, 5, 4, 65, 0, 68, 0, 63, 63, + 51, 57, 17, 51, 51, 63, 51, 1, 17, 18, 57, 47, 221, 135, 43, 125, 16, 196, 1, 24, + 16, 253, 221, 135, 43, 8, 125, 16, 196, 49, 48, 51, 53, 38, 38, 39, 51, 22, 22, 23, + 54, 54, 55, 51, 6, 6, 7, 21, 210, 61, 99, 37, 92, 29, 75, 43, 46, 71, 29, 90, + 38, 98, 60, 230, 100, 190, 99, 84, 153, 81, 85, 153, 80, 98, 186, 103, 232, 0, 1, 0, + 54, 0, 0, 1, 199, 2, 107, 0, 17, 0, 55, 64, 29, 5, 14, 9, 14, 120, 0, 5, + 20, 0, 0, 5, 6, 6, 0, 19, 15, 15, 9, 18, 0, 14, 121, 16, 65, 9, 5, 121, + 8, 68, 0, 63, 237, 50, 63, 237, 50, 1, 16, 198, 50, 47, 16, 206, 50, 47, 135, 16, + 43, 135, 125, 196, 49, 48, 1, 14, 3, 7, 33, 21, 33, 53, 62, 3, 55, 33, 53, 33, + 1, 191, 32, 79, 82, 77, 29, 1, 51, 254, 111, 31, 75, 78, 78, 36, 254, 229, 1, 122, + 2, 43, 44, 121, 132, 133, 55, 70, 54, 63, 133, 128, 120, 51, 70, 0, 1, 0, 143, 255, + 91, 1, 126, 2, 187, 0, 7, 0, 27, 64, 11, 2, 2, 5, 4, 7, 8, 4, 7, 3, + 0, 90, 0, 63, 205, 47, 205, 1, 16, 214, 221, 205, 50, 47, 49, 48, 19, 51, 21, 35, + 17, 51, 21, 35, 143, 239, 161, 161, 239, 2, 187, 65, 253, 34, 65, 0, 1, 0, 70, 255, + 91, 1, 174, 2, 187, 0, 3, 0, 33, 64, 16, 1, 3, 0, 3, 141, 2, 1, 20, 2, + 1, 2, 0, 3, 2, 1, 0, 0, 47, 50, 47, 51, 1, 47, 47, 135, 43, 135, 125, 196, + 49, 48, 19, 51, 1, 35, 70, 83, 1, 21, 84, 2, 187, 252, 160, 0, 1, 0, 118, 255, + 91, 1, 101, 2, 187, 0, 7, 0, 27, 64, 11, 5, 5, 2, 3, 0, 9, 4, 7, 90, + 3, 0, 0, 47, 205, 63, 205, 1, 16, 214, 221, 205, 50, 47, 49, 48, 5, 35, 53, 51, + 17, 35, 53, 51, 1, 101, 239, 161, 161, 239, 165, 65, 2, 222, 65, 0, 1, 0, 40, 1, + 25, 1, 204, 2, 107, 0, 6, 0, 65, 185, 0, 4, 255, 240, 64, 33, 14, 0, 77, 2, + 16, 14, 0, 77, 3, 56, 16, 0, 77, 3, 48, 15, 0, 77, 3, 32, 14, 0, 77, 4, + 5, 3, 2, 1, 3, 2, 4, 3, 6, 0, 47, 51, 205, 50, 1, 25, 47, 221, 24, 205, + 25, 16, 221, 24, 205, 49, 48, 0, 43, 43, 43, 1, 43, 43, 1, 19, 7, 39, 7, 39, + 19, 1, 31, 173, 66, 144, 144, 66, 173, 2, 107, 254, 208, 34, 252, 252, 34, 1, 48, 0, + 1, 0, 8, 255, 91, 1, 236, 255, 161, 0, 3, 0, 15, 180, 1, 0, 3, 0, 4, 0, + 16, 222, 205, 1, 47, 47, 49, 48, 23, 33, 21, 33, 8, 1, 228, 254, 28, 95, 70, 0, + 1, 0, 163, 2, 6, 1, 74, 2, 181, 0, 3, 0, 24, 64, 9, 0, 3, 2, 1, 3, + 0, 128, 1, 2, 0, 47, 51, 26, 205, 50, 1, 47, 51, 205, 50, 49, 48, 19, 23, 7, + 39, 216, 114, 42, 125, 2, 181, 138, 37, 122, 0, 2, 0, 58, 255, 245, 1, 176, 1, 219, + 0, 14, 0, 48, 0, 115, 64, 22, 40, 24, 18, 0, 77, 31, 24, 10, 11, 0, 76, 27, + 32, 11, 0, 77, 27, 24, 10, 0, 77, 18, 184, 255, 232, 180, 10, 12, 0, 76, 18, 184, + 255, 224, 180, 8, 9, 0, 76, 10, 184, 255, 232, 64, 36, 17, 18, 0, 76, 4, 36, 127, + 20, 50, 46, 46, 12, 130, 29, 49, 7, 137, 0, 34, 16, 34, 2, 8, 34, 34, 15, 0, + 136, 24, 81, 45, 45, 42, 136, 15, 80, 0, 63, 237, 50, 47, 63, 237, 17, 57, 47, 94, + 93, 237, 1, 16, 214, 237, 51, 47, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, + 43, 55, 50, 54, 55, 53, 38, 38, 35, 34, 14, 2, 21, 20, 22, 19, 50, 30, 2, 21, + 17, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 23, 53, 52, 46, 2, 35, 34, + 6, 7, 39, 54, 54, 255, 31, 49, 16, 16, 45, 25, 23, 44, 34, 22, 61, 44, 52, 71, + 44, 18, 29, 95, 50, 38, 72, 56, 34, 35, 55, 71, 36, 49, 47, 9, 25, 43, 34, 43, + 64, 17, 10, 17, 79, 59, 4, 3, 138, 5, 6, 7, 18, 29, 22, 45, 35, 1, 160, 26, + 46, 66, 39, 254, 222, 5, 14, 13, 33, 58, 45, 40, 55, 34, 15, 11, 23, 21, 39, 32, + 19, 12, 6, 68, 8, 12, 0, 2, 0, 71, 255, 245, 1, 204, 2, 181, 0, 18, 0, 33, + 0, 126, 64, 42, 28, 48, 16, 0, 77, 28, 32, 15, 0, 77, 28, 24, 14, 0, 77, 23, + 48, 16, 0, 77, 23, 56, 15, 0, 77, 23, 24, 13, 14, 0, 76, 10, 16, 16, 0, 77, + 10, 24, 15, 0, 77, 6, 184, 255, 232, 179, 8, 0, 77, 5, 184, 255, 240, 179, 10, 0, + 77, 5, 184, 255, 232, 64, 29, 9, 0, 77, 25, 130, 8, 35, 0, 19, 127, 0, 16, 1, + 8, 16, 34, 17, 18, 77, 22, 136, 13, 81, 33, 30, 136, 0, 3, 80, 0, 63, 51, 237, + 50, 63, 237, 63, 51, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, + 34, 38, 39, 17, 55, 17, 22, 22, 51, 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 154, + 15, 57, 35, 47, 74, 51, 27, 32, 58, 82, 50, 55, 86, 26, 83, 19, 38, 17, 69, 78, + 14, 30, 47, 33, 29, 54, 14, 1, 191, 9, 19, 36, 64, 89, 54, 56, 90, 63, 34, 16, + 8, 2, 154, 14, 253, 147, 5, 5, 85, 85, 36, 63, 45, 26, 23, 13, 0, 1, 0, 49, + 255, 245, 1, 195, 1, 219, 0, 33, 0, 67, 185, 0, 20, 255, 224, 180, 13, 14, 0, 76, + 14, 184, 255, 224, 64, 29, 13, 14, 0, 76, 8, 8, 26, 35, 17, 130, 15, 0, 31, 0, + 2, 0, 34, 25, 25, 22, 136, 29, 81, 9, 9, 12, 136, 5, 80, 0, 63, 237, 50, 47, + 63, 237, 50, 47, 1, 16, 214, 93, 237, 16, 206, 50, 47, 49, 48, 43, 43, 55, 52, 62, + 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, + 23, 6, 6, 35, 34, 46, 2, 49, 40, 70, 93, 53, 34, 67, 38, 19, 33, 55, 28, 36, + 64, 47, 28, 26, 47, 66, 40, 32, 59, 35, 12, 35, 72, 42, 56, 93, 67, 37, 231, 63, + 92, 60, 29, 9, 12, 71, 12, 7, 19, 41, 65, 46, 44, 63, 41, 20, 7, 12, 69, 13, + 11, 31, 60, 91, 0, 2, 0, 40, 255, 245, 1, 173, 2, 181, 0, 14, 0, 33, 0, 97, + 64, 18, 28, 32, 15, 16, 0, 76, 27, 16, 10, 0, 77, 27, 24, 8, 9, 0, 76, 10, + 184, 255, 216, 179, 14, 0, 77, 10, 184, 255, 240, 179, 13, 0, 77, 5, 184, 255, 240, 64, + 30, 14, 0, 77, 33, 14, 127, 17, 35, 8, 130, 25, 64, 9, 12, 72, 25, 34, 0, 3, + 136, 33, 30, 80, 11, 136, 20, 81, 15, 16, 77, 0, 63, 51, 63, 237, 63, 51, 237, 50, + 1, 16, 214, 43, 237, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 1, 38, 38, + 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 17, 55, 17, 6, 6, 35, 34, 46, 2, + 53, 52, 62, 2, 51, 50, 22, 23, 1, 90, 14, 54, 29, 33, 47, 30, 14, 76, 61, 31, + 43, 10, 83, 27, 84, 56, 50, 82, 58, 32, 27, 52, 73, 47, 37, 56, 14, 1, 110, 13, + 23, 26, 45, 63, 36, 81, 88, 6, 3, 2, 95, 14, 253, 88, 8, 16, 34, 63, 90, 56, + 54, 89, 64, 36, 18, 10, 0, 2, 0, 40, 255, 245, 1, 199, 1, 219, 0, 24, 0, 33, + 0, 207, 185, 0, 30, 255, 216, 180, 15, 16, 0, 76, 30, 184, 255, 224, 64, 14, 14, 0, + 77, 27, 24, 16, 0, 77, 27, 16, 15, 0, 77, 22, 184, 255, 232, 179, 16, 0, 77, 22, + 184, 255, 240, 64, 9, 15, 0, 77, 22, 16, 8, 0, 77, 18, 184, 255, 240, 179, 15, 0, + 77, 17, 184, 255, 224, 179, 15, 0, 77, 7, 184, 255, 232, 179, 16, 0, 77, 7, 184, 255, + 208, 179, 15, 0, 77, 7, 184, 255, 224, 180, 13, 14, 0, 76, 2, 184, 255, 232, 179, 9, + 0, 77, 2, 184, 255, 224, 179, 8, 0, 77, 1, 184, 255, 216, 179, 18, 0, 77, 1, 184, + 255, 208, 179, 17, 0, 77, 1, 184, 255, 240, 64, 35, 10, 0, 77, 25, 130, 4, 12, 12, + 4, 35, 33, 5, 130, 20, 64, 9, 12, 72, 20, 34, 5, 134, 33, 33, 0, 11, 11, 8, + 136, 15, 81, 28, 136, 0, 80, 0, 63, 237, 63, 237, 50, 47, 17, 57, 47, 237, 1, 16, + 214, 43, 237, 50, 16, 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 50, 22, 21, 21, 33, 22, 22, 51, 50, 54, + 55, 23, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 23, 52, 38, 35, 34, 14, 2, 7, + 1, 3, 94, 102, 254, 180, 5, 85, 77, 44, 62, 16, 11, 15, 78, 49, 60, 91, 60, 30, + 38, 62, 78, 153, 62, 51, 29, 47, 34, 20, 3, 1, 219, 117, 119, 29, 72, 75, 14, 8, + 70, 8, 18, 37, 64, 89, 52, 62, 92, 60, 30, 198, 59, 69, 22, 36, 46, 24, 0, 1, + 0, 63, 0, 0, 1, 226, 2, 181, 0, 27, 0, 86, 185, 0, 20, 255, 240, 179, 17, 0, + 77, 19, 184, 255, 224, 64, 42, 18, 0, 77, 7, 16, 12, 0, 77, 7, 24, 10, 0, 77, + 13, 13, 25, 29, 23, 26, 127, 4, 1, 0, 2, 1, 8, 2, 28, 14, 14, 17, 136, 10, + 77, 26, 1, 133, 23, 4, 73, 0, 74, 0, 63, 63, 51, 237, 50, 63, 237, 50, 47, 1, + 16, 214, 94, 93, 213, 50, 237, 50, 16, 206, 50, 47, 49, 48, 43, 43, 43, 43, 51, 17, + 35, 53, 51, 53, 52, 62, 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 21, 21, + 51, 21, 35, 17, 161, 98, 98, 30, 49, 65, 36, 36, 73, 32, 15, 22, 66, 34, 21, 37, + 28, 16, 187, 187, 1, 139, 69, 42, 54, 71, 44, 18, 16, 11, 71, 11, 16, 11, 27, 45, + 34, 41, 69, 254, 117, 0, 2, 0, 40, 255, 88, 1, 173, 1, 219, 0, 30, 0, 45, 0, + 194, 185, 0, 40, 255, 224, 179, 16, 0, 77, 40, 184, 255, 232, 179, 15, 0, 77, 40, 184, + 255, 240, 179, 14, 0, 77, 35, 184, 255, 208, 179, 16, 0, 77, 35, 184, 255, 216, 179, 15, + 0, 77, 35, 184, 255, 240, 179, 14, 0, 77, 35, 184, 255, 232, 179, 13, 0, 77, 35, 184, + 255, 240, 64, 9, 12, 0, 77, 28, 24, 16, 0, 77, 18, 184, 255, 240, 180, 17, 18, 0, + 76, 18, 184, 255, 224, 180, 8, 9, 0, 76, 10, 184, 255, 240, 64, 57, 15, 16, 0, 76, + 10, 16, 9, 0, 77, 10, 24, 8, 0, 77, 6, 24, 9, 0, 77, 6, 32, 8, 0, 77, + 45, 30, 127, 17, 47, 37, 130, 8, 23, 23, 8, 46, 42, 136, 15, 3, 31, 3, 2, 8, + 3, 3, 46, 24, 24, 27, 136, 20, 75, 34, 136, 13, 80, 0, 63, 237, 63, 237, 50, 47, + 17, 51, 47, 94, 93, 237, 1, 16, 198, 50, 47, 16, 237, 16, 222, 237, 50, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 6, 6, 35, 34, + 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 17, 20, 6, 35, 34, 38, 39, 55, 22, 22, + 51, 50, 54, 53, 17, 38, 38, 35, 34, 6, 21, 20, 30, 2, 51, 50, 54, 55, 1, 90, + 14, 58, 38, 41, 71, 53, 31, 29, 55, 80, 51, 60, 85, 29, 109, 110, 45, 73, 28, 15, + 26, 67, 40, 72, 62, 12, 42, 36, 64, 67, 19, 33, 42, 24, 31, 55, 17, 43, 8, 18, + 27, 55, 85, 58, 51, 85, 62, 35, 17, 8, 254, 98, 108, 96, 14, 10, 73, 11, 14, 58, + 65, 1, 108, 4, 7, 88, 73, 40, 57, 37, 17, 18, 12, 0, 1, 0, 71, 0, 0, 1, + 176, 2, 181, 0, 21, 0, 96, 64, 21, 16, 32, 18, 0, 77, 16, 40, 17, 0, 77, 16, + 24, 16, 0, 77, 16, 16, 15, 0, 77, 9, 184, 255, 216, 179, 8, 0, 77, 8, 184, 255, + 232, 179, 10, 0, 77, 8, 184, 255, 216, 64, 26, 9, 0, 77, 13, 127, 12, 23, 3, 21, + 127, 0, 0, 1, 8, 0, 22, 17, 136, 6, 80, 1, 2, 77, 13, 0, 74, 0, 63, 50, + 63, 51, 63, 237, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 51, 17, 55, 21, 54, 54, 51, 50, 30, 2, 21, 17, 35, 53, 52, 38, 35, + 34, 6, 7, 17, 71, 83, 20, 50, 24, 53, 71, 42, 18, 82, 48, 62, 26, 49, 11, 2, + 167, 14, 236, 8, 9, 31, 56, 78, 47, 254, 250, 244, 86, 71, 11, 5, 254, 127, 0, 2, + 0, 54, 255, 245, 1, 194, 2, 158, 0, 11, 0, 33, 0, 68, 64, 41, 31, 24, 11, 13, + 0, 76, 31, 40, 10, 0, 77, 31, 32, 9, 0, 77, 3, 131, 9, 15, 127, 12, 12, 13, + 23, 35, 13, 34, 22, 22, 19, 136, 28, 81, 6, 138, 0, 12, 133, 15, 73, 0, 63, 237, + 222, 237, 63, 237, 50, 47, 1, 16, 198, 16, 206, 17, 57, 47, 253, 212, 237, 49, 48, 43, + 43, 43, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 35, 53, 51, 17, 20, + 22, 51, 50, 54, 55, 23, 14, 3, 35, 34, 46, 2, 53, 209, 26, 38, 38, 26, 27, 37, + 37, 48, 134, 216, 38, 38, 29, 49, 14, 12, 6, 22, 29, 35, 19, 44, 58, 35, 14, 2, + 24, 36, 31, 31, 36, 36, 31, 31, 36, 141, 69, 254, 227, 69, 47, 14, 8, 70, 3, 9, + 8, 6, 24, 48, 71, 47, 0, 2, 0, 71, 255, 86, 1, 128, 2, 158, 0, 11, 0, 31, + 0, 57, 185, 0, 17, 255, 232, 64, 28, 9, 10, 0, 76, 9, 131, 3, 3, 30, 127, 15, + 33, 23, 23, 12, 32, 24, 27, 136, 20, 82, 6, 138, 0, 31, 133, 14, 73, 0, 63, 237, + 222, 237, 63, 237, 50, 1, 16, 198, 50, 47, 16, 222, 237, 50, 47, 237, 49, 48, 43, 1, + 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 53, 33, 17, 20, 14, 2, 35, 34, + 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, 1, 52, 26, 38, 38, 26, 27, 37, 37, 221, + 1, 14, 27, 45, 59, 33, 38, 77, 34, 25, 25, 61, 28, 40, 52, 2, 24, 36, 31, 31, + 36, 36, 31, 31, 36, 141, 69, 254, 53, 48, 67, 42, 18, 16, 17, 70, 12, 17, 41, 59, + 1, 135, 0, 1, 0, 71, 0, 0, 1, 222, 2, 181, 0, 22, 0, 101, 64, 54, 6, 0, + 5, 0, 129, 11, 6, 20, 11, 0, 20, 11, 6, 19, 16, 0, 20, 19, 20, 0, 129, 16, + 19, 20, 16, 19, 0, 16, 20, 20, 5, 24, 16, 11, 127, 0, 13, 1, 8, 13, 23, 11, + 16, 5, 20, 73, 14, 15, 77, 13, 74, 5, 6, 74, 0, 63, 51, 63, 63, 51, 63, 18, + 57, 57, 1, 16, 214, 94, 93, 237, 50, 16, 206, 50, 47, 16, 193, 135, 4, 43, 16, 0, + 193, 135, 5, 125, 16, 196, 135, 8, 24, 16, 43, 135, 5, 125, 196, 49, 48, 55, 30, 3, + 23, 35, 46, 3, 39, 21, 35, 17, 55, 17, 54, 54, 55, 51, 6, 6, 238, 27, 68, 67, + 60, 18, 98, 19, 56, 63, 63, 25, 83, 83, 55, 110, 44, 97, 43, 121, 255, 20, 61, 70, + 73, 31, 31, 65, 60, 50, 17, 223, 2, 167, 14, 254, 89, 48, 95, 51, 51, 108, 0, 1, + 0, 54, 255, 245, 1, 194, 2, 176, 0, 23, 0, 69, 64, 44, 3, 24, 14, 0, 77, 3, + 32, 13, 0, 77, 3, 24, 12, 0, 77, 3, 32, 11, 0, 77, 3, 32, 9, 0, 77, 9, + 127, 6, 6, 7, 19, 25, 7, 24, 6, 133, 9, 77, 18, 18, 15, 136, 0, 81, 0, 63, + 237, 50, 47, 63, 237, 1, 16, 198, 16, 206, 17, 57, 47, 237, 49, 48, 43, 43, 43, 43, + 43, 5, 34, 46, 2, 53, 17, 35, 53, 51, 17, 20, 30, 2, 51, 50, 54, 55, 23, 14, + 3, 1, 82, 44, 58, 34, 14, 134, 216, 9, 19, 28, 19, 29, 50, 14, 12, 6, 22, 30, + 35, 11, 24, 48, 71, 47, 1, 183, 70, 254, 3, 35, 44, 27, 10, 14, 8, 70, 3, 9, + 8, 6, 0, 1, 0, 41, 0, 0, 1, 208, 1, 218, 0, 33, 0, 86, 185, 0, 10, 255, + 232, 180, 13, 16, 0, 76, 10, 184, 255, 240, 179, 12, 0, 77, 10, 184, 255, 232, 64, 33, + 11, 0, 77, 21, 5, 24, 127, 25, 25, 33, 14, 127, 13, 35, 32, 127, 33, 34, 25, 25, + 14, 33, 74, 18, 136, 7, 80, 21, 29, 136, 5, 2, 80, 0, 63, 51, 237, 50, 63, 237, + 63, 51, 51, 47, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 237, 50, 50, 49, 48, 43, + 43, 43, 19, 54, 51, 50, 22, 23, 54, 51, 50, 30, 2, 21, 17, 35, 17, 52, 38, 35, + 34, 6, 7, 22, 21, 21, 35, 53, 52, 38, 35, 34, 7, 17, 35, 41, 60, 53, 29, 51, + 18, 43, 49, 24, 43, 33, 20, 75, 32, 24, 12, 26, 11, 6, 75, 22, 32, 20, 25, 75, + 1, 195, 23, 17, 18, 35, 18, 36, 54, 36, 254, 182, 1, 76, 36, 38, 12, 13, 23, 28, + 151, 152, 35, 40, 9, 254, 115, 0, 1, 0, 71, 0, 0, 1, 176, 1, 218, 0, 19, 0, + 94, 64, 12, 12, 8, 22, 0, 77, 12, 16, 15, 16, 0, 76, 5, 184, 255, 224, 179, 18, + 0, 77, 5, 184, 255, 232, 179, 17, 0, 77, 5, 184, 255, 232, 180, 8, 10, 0, 76, 4, + 184, 255, 224, 64, 27, 17, 0, 77, 8, 127, 239, 7, 1, 7, 21, 18, 127, 0, 19, 224, + 19, 2, 8, 19, 20, 8, 19, 74, 14, 136, 3, 80, 0, 63, 237, 63, 51, 1, 16, 214, + 94, 93, 237, 16, 222, 93, 237, 49, 48, 43, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, + 22, 21, 17, 35, 17, 52, 46, 2, 35, 34, 6, 7, 17, 35, 71, 45, 89, 39, 93, 95, + 82, 16, 29, 41, 24, 20, 45, 21, 83, 1, 195, 11, 12, 96, 106, 254, 240, 1, 1, 45, + 56, 31, 12, 5, 4, 254, 120, 0, 2, 0, 40, 255, 245, 1, 204, 1, 219, 0, 19, 0, + 31, 0, 152, 64, 16, 30, 24, 16, 0, 77, 30, 32, 15, 0, 77, 30, 8, 14, 0, 77, + 28, 184, 255, 224, 180, 15, 16, 0, 76, 28, 184, 255, 240, 179, 14, 0, 77, 24, 184, 255, + 224, 180, 15, 16, 0, 76, 24, 184, 255, 248, 64, 15, 14, 0, 77, 22, 32, 15, 16, 0, + 76, 22, 8, 14, 0, 77, 18, 184, 255, 232, 64, 17, 8, 9, 0, 76, 12, 16, 8, 9, + 0, 76, 7, 16, 8, 9, 0, 76, 3, 184, 255, 224, 179, 9, 0, 77, 3, 184, 255, 240, + 64, 24, 8, 0, 77, 20, 130, 0, 33, 26, 130, 10, 64, 9, 12, 72, 10, 32, 23, 136, + 15, 80, 29, 136, 5, 81, 0, 63, 237, 63, 237, 1, 16, 214, 43, 237, 16, 222, 237, 49, + 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, 14, 2, 35, + 34, 46, 2, 53, 52, 62, 2, 51, 50, 30, 2, 7, 52, 38, 35, 34, 6, 21, 20, 22, + 51, 50, 54, 1, 204, 31, 56, 78, 46, 45, 77, 56, 31, 31, 56, 77, 45, 46, 78, 56, + 31, 85, 68, 58, 57, 67, 67, 57, 58, 68, 232, 55, 89, 64, 35, 35, 64, 89, 55, 55, + 90, 63, 35, 35, 63, 90, 55, 79, 91, 91, 79, 78, 91, 91, 0, 2, 0, 71, 255, 91, + 1, 204, 1, 218, 0, 14, 0, 33, 0, 118, 185, 0, 32, 255, 240, 180, 8, 9, 0, 76, + 31, 184, 255, 248, 179, 16, 0, 77, 31, 184, 255, 232, 179, 15, 0, 77, 18, 184, 255, 232, + 180, 15, 16, 0, 76, 18, 184, 255, 240, 180, 9, 10, 0, 76, 17, 184, 255, 224, 64, 41, + 8, 0, 77, 12, 8, 14, 0, 77, 2, 24, 14, 0, 77, 2, 16, 13, 0, 77, 0, 130, + 15, 35, 7, 24, 127, 0, 25, 1, 8, 25, 34, 3, 136, 29, 80, 25, 75, 10, 136, 20, + 81, 0, 63, 237, 63, 63, 237, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 37, 52, 38, 35, 34, 6, 7, 17, 22, 22, 51, 50, + 62, 2, 55, 20, 14, 2, 35, 34, 38, 39, 21, 35, 17, 54, 54, 51, 50, 30, 2, 1, + 119, 76, 61, 34, 39, 11, 14, 54, 29, 33, 47, 30, 14, 85, 27, 51, 74, 47, 37, 56, + 14, 83, 27, 85, 55, 50, 82, 58, 32, 231, 81, 89, 6, 4, 254, 219, 13, 22, 26, 45, + 61, 36, 53, 89, 64, 36, 18, 11, 183, 2, 103, 8, 16, 34, 63, 90, 0, 2, 0, 40, + 255, 91, 1, 173, 1, 218, 0, 14, 0, 33, 0, 120, 64, 42, 32, 24, 9, 0, 77, 31, + 40, 16, 0, 77, 31, 32, 15, 0, 77, 31, 24, 10, 0, 77, 31, 24, 8, 0, 77, 18, + 8, 16, 0, 77, 18, 32, 15, 0, 77, 17, 16, 8, 9, 0, 76, 13, 184, 255, 224, 179, + 14, 0, 77, 13, 184, 255, 240, 179, 13, 0, 77, 3, 184, 255, 232, 64, 27, 14, 0, 77, + 8, 25, 127, 24, 35, 0, 130, 15, 64, 9, 12, 72, 15, 34, 5, 136, 29, 81, 25, 75, + 12, 136, 20, 80, 0, 63, 237, 63, 63, 237, 1, 16, 214, 43, 237, 16, 222, 237, 50, 49, + 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 20, 30, 2, 51, 50, 54, 55, + 17, 38, 38, 35, 34, 6, 7, 52, 62, 2, 51, 50, 22, 23, 17, 35, 53, 6, 6, 35, + 34, 46, 2, 125, 15, 30, 47, 33, 29, 54, 14, 11, 39, 34, 61, 77, 85, 32, 58, 83, + 50, 54, 83, 29, 83, 15, 56, 35, 47, 74, 51, 28, 231, 36, 61, 45, 26, 22, 13, 1, + 37, 4, 6, 89, 81, 56, 90, 63, 34, 17, 8, 253, 154, 183, 10, 19, 36, 64, 89, 0, + 1, 0, 107, 0, 0, 1, 182, 1, 218, 0, 13, 0, 36, 64, 18, 6, 15, 13, 127, 0, + 0, 1, 8, 0, 14, 7, 7, 10, 136, 3, 80, 0, 74, 0, 63, 63, 237, 50, 47, 1, + 16, 214, 94, 93, 237, 16, 206, 49, 48, 51, 17, 54, 51, 50, 22, 23, 7, 38, 38, 35, + 34, 7, 17, 107, 102, 104, 32, 58, 35, 15, 32, 49, 29, 61, 63, 1, 183, 35, 5, 8, + 73, 9, 5, 17, 254, 127, 0, 1, 0, 66, 255, 245, 1, 178, 1, 219, 0, 39, 0, 236, + 64, 18, 34, 32, 16, 18, 0, 76, 34, 40, 14, 15, 0, 76, 33, 8, 14, 0, 77, 29, + 184, 255, 224, 179, 12, 0, 77, 29, 184, 255, 232, 179, 11, 0, 77, 29, 184, 255, 224, 179, + 10, 0, 77, 29, 184, 255, 200, 179, 9, 0, 77, 29, 184, 255, 224, 179, 8, 0, 77, 27, + 184, 255, 224, 179, 13, 0, 77, 26, 184, 255, 208, 179, 12, 0, 77, 26, 184, 255, 232, 179, + 10, 0, 77, 25, 184, 255, 224, 179, 15, 0, 77, 23, 184, 255, 232, 179, 16, 0, 77, 23, + 184, 255, 240, 64, 81, 14, 0, 77, 8, 24, 11, 0, 77, 8, 32, 9, 10, 0, 76, 8, + 24, 8, 0, 77, 6, 40, 13, 0, 77, 5, 48, 12, 0, 77, 5, 24, 10, 0, 77, 4, + 16, 15, 0, 77, 3, 32, 8, 9, 0, 76, 2, 16, 16, 0, 77, 13, 13, 0, 130, 28, + 41, 34, 34, 21, 130, 1, 7, 1, 8, 7, 40, 24, 10, 35, 35, 38, 136, 3, 31, 81, + 14, 14, 19, 136, 10, 80, 0, 63, 237, 50, 47, 63, 57, 237, 50, 47, 17, 57, 1, 16, + 214, 94, 93, 237, 51, 47, 16, 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 52, 46, 4, + 53, 52, 54, 51, 50, 22, 23, 7, 46, 3, 35, 34, 21, 20, 30, 4, 21, 20, 6, 35, + 34, 38, 39, 55, 22, 22, 51, 50, 1, 95, 41, 61, 72, 61, 41, 91, 97, 38, 81, 29, + 15, 8, 28, 36, 41, 19, 108, 41, 62, 72, 62, 41, 98, 106, 48, 80, 36, 16, 35, 77, + 44, 113, 116, 25, 32, 24, 23, 34, 50, 40, 56, 75, 11, 9, 74, 4, 9, 7, 4, 59, + 21, 29, 24, 25, 36, 51, 39, 63, 69, 16, 16, 75, 16, 21, 0, 1, 0, 63, 255, 245, + 1, 194, 2, 96, 0, 27, 0, 73, 64, 41, 19, 24, 12, 0, 77, 19, 32, 11, 0, 77, + 0, 3, 127, 25, 22, 22, 23, 13, 13, 2, 29, 0, 23, 1, 8, 23, 28, 26, 27, 3, + 22, 133, 0, 25, 73, 12, 12, 9, 136, 16, 81, 0, 63, 237, 50, 47, 63, 51, 237, 50, + 205, 50, 1, 16, 198, 94, 93, 16, 206, 50, 47, 17, 57, 47, 51, 237, 50, 49, 48, 43, + 43, 19, 51, 21, 35, 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, + 53, 53, 35, 53, 51, 53, 55, 243, 196, 196, 10, 23, 36, 26, 36, 44, 20, 12, 14, 61, + 45, 52, 66, 37, 14, 98, 98, 82, 1, 208, 69, 216, 35, 44, 27, 10, 12, 10, 70, 6, + 20, 24, 48, 71, 47, 216, 69, 130, 14, 0, 1, 0, 68, 255, 246, 1, 173, 1, 208, 0, + 21, 0, 86, 185, 0, 13, 255, 216, 179, 17, 0, 77, 13, 184, 255, 232, 64, 48, 15, 16, + 0, 76, 6, 24, 18, 0, 77, 6, 32, 9, 0, 77, 6, 24, 8, 0, 77, 5, 32, 18, + 0, 77, 5, 16, 10, 0, 77, 19, 127, 0, 23, 11, 127, 0, 8, 1, 8, 8, 22, 20, + 9, 73, 14, 136, 3, 81, 0, 63, 237, 63, 51, 1, 16, 214, 94, 93, 237, 16, 222, 237, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 37, 6, 6, 35, 34, 46, 2, 53, 17, 51, 21, + 20, 22, 51, 50, 62, 2, 55, 17, 51, 1, 173, 27, 89, 60, 53, 70, 44, 18, 82, 51, + 60, 13, 27, 24, 18, 3, 83, 13, 7, 16, 31, 57, 78, 47, 1, 5, 243, 86, 72, 2, + 3, 3, 1, 1, 136, 0, 1, 0, 30, 0, 0, 1, 214, 1, 208, 0, 20, 0, 110, 185, + 0, 11, 255, 240, 179, 18, 0, 77, 15, 184, 255, 224, 180, 16, 18, 0, 76, 15, 184, 255, + 232, 64, 47, 15, 0, 77, 6, 10, 15, 10, 129, 9, 6, 20, 9, 9, 6, 5, 20, 15, + 20, 129, 0, 5, 20, 0, 0, 5, 15, 15, 9, 79, 0, 95, 0, 2, 0, 22, 9, 21, + 0, 20, 73, 10, 9, 73, 15, 5, 6, 74, 0, 63, 51, 51, 63, 51, 63, 51, 1, 16, + 198, 16, 206, 93, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, + 125, 196, 49, 48, 0, 43, 43, 1, 43, 1, 14, 3, 7, 35, 38, 38, 39, 51, 30, 3, + 23, 62, 3, 55, 1, 214, 18, 46, 48, 50, 23, 75, 47, 96, 37, 90, 12, 31, 34, 35, + 17, 17, 37, 36, 33, 12, 1, 208, 65, 125, 119, 108, 47, 94, 240, 130, 44, 98, 98, 91, + 36, 36, 91, 98, 98, 44, 0, 1, 0, 19, 0, 0, 1, 225, 1, 208, 0, 42, 1, 72, + 181, 40, 24, 15, 0, 77, 40, 184, 255, 240, 64, 27, 9, 0, 77, 32, 32, 15, 0, 77, + 28, 16, 23, 0, 77, 27, 32, 23, 0, 77, 26, 24, 23, 0, 77, 236, 26, 1, 25, 184, + 255, 224, 182, 23, 0, 77, 230, 25, 1, 24, 184, 255, 232, 179, 23, 0, 77, 23, 184, 255, + 248, 64, 14, 23, 0, 77, 22, 16, 16, 0, 77, 21, 24, 16, 0, 77, 21, 184, 255, 240, + 179, 9, 0, 77, 19, 184, 255, 232, 179, 15, 0, 77, 12, 184, 255, 240, 64, 19, 15, 0, + 77, 12, 24, 11, 0, 77, 12, 24, 9, 0, 77, 11, 8, 11, 0, 77, 8, 184, 255, 208, + 179, 18, 0, 77, 8, 184, 255, 232, 179, 15, 0, 77, 8, 184, 255, 224, 179, 14, 0, 77, + 7, 184, 255, 232, 64, 77, 15, 0, 77, 3, 24, 15, 0, 77, 2, 24, 18, 0, 77, 2, + 8, 15, 0, 77, 2, 24, 14, 0, 77, 0, 26, 31, 26, 132, 5, 0, 20, 5, 5, 0, + 31, 36, 127, 37, 10, 25, 20, 25, 132, 5, 10, 20, 5, 10, 5, 5, 14, 42, 15, 37, + 31, 37, 79, 37, 95, 37, 223, 37, 5, 37, 44, 20, 15, 127, 11, 14, 43, 37, 36, 73, + 26, 25, 5, 184, 255, 200, 64, 19, 22, 0, 77, 5, 5, 25, 25, 15, 14, 73, 20, 20, + 10, 11, 74, 42, 31, 31, 0, 0, 47, 50, 47, 50, 63, 51, 51, 47, 63, 51, 51, 47, + 51, 47, 43, 17, 51, 63, 51, 1, 16, 214, 50, 237, 50, 16, 206, 93, 50, 17, 57, 61, + 47, 135, 24, 43, 135, 125, 196, 1, 24, 16, 237, 50, 135, 16, 43, 135, 125, 196, 49, 48, + 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 93, + 43, 93, 43, 43, 43, 43, 43, 43, 33, 46, 3, 39, 14, 3, 7, 35, 38, 38, 39, 51, + 30, 3, 23, 62, 3, 55, 51, 30, 3, 23, 62, 3, 55, 51, 14, 3, 7, 1, 87, 15, + 22, 21, 21, 14, 14, 22, 21, 23, 15, 62, 28, 37, 9, 78, 3, 7, 10, 13, 8, 16, + 22, 18, 17, 10, 62, 10, 16, 18, 20, 15, 9, 14, 10, 8, 3, 75, 5, 14, 20, 24, + 13, 34, 56, 56, 61, 39, 39, 61, 56, 56, 34, 123, 241, 100, 39, 75, 82, 96, 60, 40, + 60, 54, 56, 35, 35, 56, 54, 60, 39, 55, 94, 83, 78, 41, 50, 114, 120, 123, 57, 0, + 1, 0, 29, 0, 0, 1, 216, 1, 208, 0, 23, 0, 112, 64, 65, 20, 10, 19, 23, 16, + 17, 11, 18, 23, 16, 14, 0, 15, 11, 18, 5, 6, 9, 10, 19, 10, 18, 11, 18, 129, + 19, 10, 20, 19, 10, 19, 19, 23, 1, 0, 15, 0, 16, 23, 16, 129, 15, 0, 20, 15, + 15, 0, 23, 25, 15, 15, 11, 24, 19, 18, 73, 16, 15, 73, 11, 10, 74, 23, 0, 74, + 0, 63, 50, 63, 51, 63, 51, 63, 51, 1, 16, 198, 50, 47, 16, 206, 135, 16, 43, 135, + 125, 196, 135, 14, 196, 1, 17, 51, 24, 47, 135, 43, 135, 125, 196, 135, 14, 196, 196, 196, + 15, 15, 15, 49, 48, 33, 46, 3, 39, 14, 3, 7, 35, 54, 54, 55, 39, 51, 23, 55, + 51, 7, 22, 22, 23, 1, 124, 10, 29, 34, 37, 18, 18, 40, 37, 32, 11, 85, 33, 95, + 46, 167, 93, 125, 115, 88, 153, 45, 91, 32, 20, 48, 51, 50, 22, 23, 50, 51, 48, 19, + 60, 127, 57, 220, 162, 162, 215, 59, 128, 62, 0, 1, 0, 36, 255, 88, 1, 205, 1, 208, + 0, 32, 1, 8, 64, 66, 25, 16, 17, 0, 77, 24, 16, 16, 0, 77, 23, 24, 18, 0, + 77, 23, 16, 15, 0, 77, 23, 24, 12, 0, 77, 22, 16, 12, 0, 77, 18, 16, 15, 0, + 77, 17, 24, 12, 0, 77, 16, 32, 18, 0, 77, 16, 24, 17, 0, 77, 16, 32, 15, 0, + 77, 16, 32, 12, 0, 77, 15, 24, 12, 0, 77, 12, 184, 255, 232, 64, 42, 17, 0, 77, + 7, 56, 16, 0, 77, 6, 24, 17, 0, 77, 6, 16, 15, 16, 0, 76, 6, 40, 12, 0, + 77, 6, 24, 10, 11, 0, 76, 5, 40, 12, 0, 77, 5, 32, 10, 11, 0, 76, 15, 184, + 255, 208, 179, 18, 0, 77, 15, 184, 255, 216, 179, 17, 0, 77, 15, 184, 255, 200, 64, 60, + 14, 0, 77, 6, 48, 18, 0, 77, 24, 20, 15, 20, 129, 21, 24, 20, 21, 21, 24, 6, + 10, 15, 10, 129, 9, 6, 20, 9, 9, 6, 15, 15, 9, 31, 21, 1, 21, 34, 32, 32, + 32, 9, 1, 9, 33, 24, 15, 6, 6, 9, 3, 136, 29, 75, 21, 20, 73, 10, 9, 73, + 0, 63, 51, 63, 51, 63, 237, 18, 57, 17, 51, 51, 1, 16, 198, 93, 50, 47, 16, 206, + 93, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 125, 196, 49, + 48, 0, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 23, 22, 22, 51, 50, 54, 55, 38, 38, 39, 51, 30, + 3, 23, 62, 3, 55, 51, 6, 6, 7, 14, 3, 35, 34, 38, 39, 51, 9, 33, 14, 49, + 55, 23, 56, 98, 32, 90, 10, 27, 34, 39, 22, 16, 28, 24, 24, 13, 86, 32, 79, 45, + 17, 39, 46, 58, 37, 19, 45, 8, 87, 5, 6, 43, 49, 106, 243, 121, 40, 93, 98, 99, + 45, 46, 90, 91, 95, 53, 130, 244, 104, 40, 58, 38, 18, 10, 4, 0, 1, 0, 73, 0, + 0, 1, 171, 1, 208, 0, 17, 0, 66, 64, 36, 21, 5, 1, 5, 14, 9, 14, 129, 0, + 5, 20, 0, 0, 5, 6, 6, 0, 19, 15, 15, 0, 9, 1, 8, 9, 18, 0, 14, 133, + 16, 73, 9, 5, 133, 8, 74, 0, 63, 237, 50, 63, 237, 50, 1, 16, 198, 94, 93, 50, + 47, 16, 198, 50, 47, 135, 16, 43, 135, 125, 196, 1, 93, 49, 48, 1, 14, 3, 7, 51, + 21, 33, 53, 62, 3, 55, 35, 53, 33, 1, 164, 18, 62, 71, 70, 27, 255, 254, 158, 21, + 63, 68, 65, 24, 228, 1, 78, 1, 146, 21, 75, 91, 100, 45, 70, 55, 40, 95, 93, 84, + 28, 69, 0, 1, 0, 79, 255, 91, 1, 171, 2, 187, 0, 44, 0, 103, 64, 68, 35, 16, + 15, 0, 77, 35, 24, 14, 0, 77, 35, 16, 13, 0, 77, 35, 24, 10, 12, 0, 76, 9, + 24, 15, 0, 77, 9, 16, 13, 14, 0, 76, 9, 24, 12, 0, 77, 9, 32, 11, 0, 77, + 9, 24, 10, 0, 77, 14, 30, 19, 26, 127, 44, 22, 6, 37, 37, 46, 45, 22, 44, 0, + 0, 13, 30, 31, 14, 13, 0, 47, 205, 47, 205, 17, 57, 47, 205, 57, 1, 17, 18, 57, + 47, 51, 51, 206, 253, 50, 206, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, + 51, 50, 62, 2, 53, 53, 52, 62, 2, 51, 51, 21, 35, 34, 6, 21, 21, 20, 6, 7, + 22, 22, 21, 21, 20, 22, 51, 51, 21, 35, 34, 46, 2, 53, 53, 52, 46, 2, 35, 35, + 79, 40, 17, 26, 17, 9, 15, 36, 61, 46, 81, 85, 42, 35, 40, 26, 26, 40, 36, 42, + 84, 81, 46, 61, 36, 15, 9, 17, 25, 17, 41, 1, 43, 15, 25, 31, 16, 161, 37, 56, + 39, 20, 65, 38, 50, 138, 67, 63, 11, 12, 66, 63, 138, 50, 38, 65, 20, 39, 56, 37, + 161, 15, 31, 25, 16, 0, 1, 0, 212, 255, 91, 1, 33, 2, 187, 0, 3, 0, 20, 183, + 2, 127, 3, 3, 5, 4, 3, 0, 0, 47, 47, 1, 17, 18, 57, 47, 237, 49, 48, 19, + 51, 17, 35, 212, 77, 77, 2, 187, 252, 160, 0, 1, 0, 73, 255, 91, 1, 165, 2, 187, + 0, 44, 0, 103, 185, 0, 35, 255, 240, 179, 15, 0, 77, 35, 184, 255, 232, 179, 14, 0, + 77, 35, 184, 255, 224, 179, 13, 0, 77, 35, 184, 255, 232, 180, 10, 12, 0, 76, 9, 184, + 255, 232, 180, 11, 13, 0, 76, 9, 184, 255, 224, 64, 24, 10, 0, 77, 30, 14, 25, 18, + 145, 38, 22, 0, 7, 7, 46, 45, 22, 0, 44, 44, 14, 30, 31, 14, 13, 0, 47, 205, + 47, 205, 18, 57, 47, 205, 57, 1, 17, 18, 57, 47, 206, 51, 51, 253, 50, 206, 50, 49, + 48, 43, 43, 43, 43, 43, 43, 37, 35, 34, 14, 2, 21, 21, 20, 14, 2, 35, 35, 53, + 51, 50, 54, 53, 53, 52, 54, 55, 38, 38, 53, 53, 52, 38, 35, 35, 53, 51, 50, 30, + 2, 21, 21, 20, 30, 2, 51, 51, 1, 165, 40, 17, 25, 17, 9, 15, 37, 61, 46, 81, + 85, 42, 35, 40, 26, 26, 40, 36, 42, 84, 81, 46, 61, 37, 15, 8, 17, 25, 17, 41, + 235, 15, 25, 31, 16, 161, 37, 56, 39, 20, 65, 38, 50, 138, 67, 63, 11, 12, 66, 63, + 138, 50, 38, 65, 20, 39, 56, 37, 161, 15, 31, 25, 16, 0, 1, 0, 37, 0, 189, 1, + 207, 1, 81, 0, 33, 0, 70, 185, 0, 25, 255, 232, 179, 17, 0, 77, 25, 184, 255, 240, + 64, 10, 16, 0, 77, 20, 24, 9, 12, 0, 76, 3, 184, 255, 224, 64, 19, 9, 12, 0, + 76, 33, 0, 16, 17, 33, 33, 22, 136, 11, 28, 136, 5, 16, 16, 5, 0, 47, 51, 47, + 16, 237, 220, 237, 50, 47, 1, 47, 205, 220, 205, 49, 48, 43, 43, 43, 43, 1, 14, 3, + 35, 34, 38, 39, 38, 38, 35, 34, 14, 2, 7, 39, 62, 3, 51, 50, 22, 23, 22, 22, + 51, 50, 62, 2, 55, 1, 207, 3, 15, 29, 44, 31, 27, 45, 21, 24, 44, 26, 14, 20, + 13, 10, 3, 57, 3, 16, 28, 43, 32, 27, 45, 21, 24, 45, 25, 14, 20, 13, 10, 3, + 1, 58, 17, 44, 38, 26, 21, 13, 14, 28, 13, 20, 25, 11, 16, 17, 44, 38, 26, 21, + 13, 14, 28, 13, 20, 25, 11, 0, 1, 0, 36, 255, 244, 1, 211, 2, 118, 0, 49, 0, + 150, 64, 12, 36, 16, 16, 0, 77, 36, 24, 13, 14, 0, 76, 26, 184, 255, 240, 179, 18, + 0, 77, 26, 184, 255, 248, 179, 17, 0, 77, 12, 184, 255, 240, 64, 63, 19, 0, 77, 23, + 23, 14, 14, 6, 6, 32, 51, 48, 48, 40, 25, 13, 19, 118, 38, 0, 44, 50, 25, 38, + 121, 41, 22, 41, 16, 47, 121, 0, 13, 0, 15, 41, 31, 41, 2, 79, 0, 175, 0, 191, + 0, 3, 41, 0, 41, 0, 3, 31, 31, 28, 124, 35, 70, 7, 7, 10, 124, 3, 69, 0, + 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 57, 47, 47, 93, 93, 17, 51, 16, 237, 50, + 17, 51, 16, 237, 50, 1, 16, 212, 50, 50, 237, 50, 50, 206, 50, 47, 16, 206, 50, 47, + 50, 47, 51, 47, 49, 48, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 22, 23, 7, 38, + 38, 35, 34, 6, 7, 51, 7, 35, 6, 20, 21, 20, 20, 23, 51, 7, 35, 22, 22, 51, + 50, 54, 55, 23, 6, 6, 35, 34, 38, 39, 35, 53, 51, 38, 52, 53, 52, 52, 55, 35, + 53, 106, 18, 115, 95, 40, 51, 24, 16, 21, 51, 27, 68, 64, 10, 199, 12, 196, 1, 1, + 179, 12, 160, 13, 73, 60, 38, 54, 21, 18, 15, 75, 46, 104, 109, 14, 68, 61, 1, 1, + 61, 1, 165, 106, 103, 10, 9, 70, 8, 10, 75, 63, 64, 11, 23, 13, 11, 22, 10, 64, + 80, 62, 13, 11, 71, 8, 18, 114, 101, 64, 10, 22, 11, 13, 23, 11, 64, 0, 1, 0, + 148, 255, 112, 1, 94, 0, 139, 0, 19, 0, 31, 64, 14, 5, 14, 148, 0, 8, 8, 21, + 20, 0, 19, 11, 154, 5, 92, 0, 63, 237, 220, 205, 1, 17, 18, 57, 47, 206, 237, 57, + 49, 48, 23, 62, 3, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, 148, + 18, 35, 30, 24, 7, 32, 29, 46, 28, 37, 38, 23, 47, 70, 47, 79, 4, 8, 15, 23, + 20, 3, 43, 21, 40, 41, 53, 38, 29, 63, 55, 39, 6, 0, 1, 0, 7, 255, 86, 1, + 226, 2, 181, 0, 40, 0, 74, 185, 0, 27, 255, 224, 64, 41, 8, 9, 0, 76, 5, 16, + 12, 0, 77, 5, 24, 8, 10, 0, 76, 23, 21, 11, 25, 127, 33, 2, 0, 39, 39, 42, + 41, 36, 136, 30, 82, 15, 136, 8, 77, 24, 40, 133, 21, 2, 73, 0, 63, 51, 237, 50, + 63, 237, 63, 237, 1, 17, 18, 57, 47, 206, 51, 204, 253, 204, 51, 206, 49, 48, 43, 43, + 43, 19, 53, 51, 53, 52, 62, 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 21, + 21, 51, 21, 35, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, 51, 50, 54, 53, 17, 63, + 98, 30, 49, 65, 36, 36, 73, 32, 15, 22, 66, 34, 21, 37, 28, 16, 187, 187, 27, 45, + 60, 32, 28, 30, 14, 18, 21, 23, 39, 53, 1, 139, 69, 42, 54, 71, 44, 18, 16, 11, + 71, 11, 16, 11, 27, 45, 34, 41, 69, 254, 120, 48, 66, 41, 18, 6, 3, 71, 8, 43, + 59, 1, 135, 0, 2, 0, 42, 255, 124, 1, 202, 0, 121, 0, 17, 0, 37, 0, 48, 64, + 23, 23, 32, 18, 26, 148, 32, 39, 3, 12, 148, 0, 6, 38, 18, 0, 37, 17, 29, 9, + 154, 23, 3, 92, 0, 63, 51, 237, 50, 220, 50, 205, 50, 1, 16, 214, 206, 237, 57, 16, + 214, 253, 206, 18, 57, 49, 48, 23, 54, 54, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, + 20, 14, 2, 7, 55, 62, 3, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, + 7, 42, 34, 57, 13, 29, 29, 33, 33, 29, 43, 17, 39, 65, 49, 218, 17, 32, 28, 22, + 6, 29, 29, 32, 34, 29, 42, 17, 39, 65, 49, 74, 7, 22, 35, 3, 39, 23, 25, 41, + 39, 44, 29, 55, 46, 34, 6, 58, 4, 7, 14, 21, 18, 3, 39, 23, 25, 41, 39, 44, + 29, 55, 46, 34, 6, 0, 3, 0, 31, 255, 244, 1, 213, 0, 96, 0, 11, 0, 23, 0, + 35, 0, 51, 64, 26, 24, 149, 30, 12, 149, 18, 0, 149, 6, 30, 18, 6, 6, 18, 30, + 3, 37, 36, 33, 21, 9, 154, 27, 15, 3, 92, 0, 63, 51, 51, 237, 50, 50, 1, 17, + 18, 23, 57, 47, 47, 47, 16, 237, 16, 237, 16, 237, 49, 48, 55, 20, 6, 35, 34, 38, + 53, 52, 54, 51, 50, 22, 23, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 23, 20, + 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 137, 29, 24, 24, 29, 29, 24, 24, 29, 166, + 28, 24, 24, 28, 28, 24, 24, 28, 166, 28, 24, 24, 28, 28, 24, 24, 28, 42, 22, 32, + 32, 22, 22, 32, 32, 22, 22, 32, 32, 22, 22, 32, 32, 22, 22, 32, 32, 22, 22, 32, + 32, 0, 1, 0, 72, 255, 127, 1, 172, 2, 107, 0, 17, 0, 36, 64, 15, 17, 15, 0, + 12, 10, 9, 9, 19, 18, 0, 9, 15, 12, 13, 5, 0, 47, 47, 221, 50, 205, 50, 1, + 17, 18, 57, 47, 205, 51, 221, 50, 205, 49, 48, 1, 21, 20, 6, 7, 35, 38, 38, 53, + 53, 35, 53, 51, 53, 51, 21, 51, 21, 1, 30, 7, 8, 41, 8, 8, 142, 142, 72, 142, + 1, 100, 227, 75, 122, 61, 61, 122, 75, 227, 69, 194, 194, 69, 0, 1, 0, 72, 255, 127, + 1, 172, 2, 107, 0, 23, 0, 60, 64, 28, 12, 8, 7, 19, 23, 21, 17, 0, 14, 10, + 7, 7, 25, 24, 20, 11, 17, 15, 14, 1, 8, 14, 15, 21, 10, 0, 7, 4, 0, 47, + 221, 50, 205, 50, 47, 221, 94, 93, 50, 205, 50, 1, 17, 18, 57, 47, 51, 51, 221, 50, + 50, 205, 50, 16, 205, 50, 49, 48, 37, 20, 6, 7, 35, 38, 38, 53, 35, 53, 51, 53, + 35, 53, 51, 53, 51, 21, 51, 21, 35, 21, 51, 21, 1, 30, 8, 7, 41, 8, 8, 142, + 142, 142, 142, 72, 142, 142, 142, 120, 73, 117, 59, 59, 117, 73, 68, 168, 69, 194, 194, 69, + 168, 68, 0, 1, 0, 129, 2, 8, 1, 115, 2, 175, 0, 5, 0, 91, 64, 27, 5, 8, + 16, 0, 77, 3, 32, 18, 0, 77, 3, 24, 17, 0, 77, 3, 16, 16, 0, 77, 4, 96, + 5, 112, 5, 2, 5, 184, 255, 192, 64, 27, 21, 24, 72, 5, 2, 111, 1, 127, 1, 2, + 1, 64, 21, 24, 72, 1, 64, 0, 3, 1, 2, 2, 3, 0, 128, 5, 4, 0, 47, 51, + 26, 205, 50, 51, 17, 51, 1, 25, 47, 51, 26, 205, 43, 93, 50, 205, 43, 93, 50, 49, + 48, 0, 43, 43, 43, 1, 43, 19, 23, 7, 39, 7, 39, 250, 121, 34, 87, 87, 34, 2, + 175, 128, 39, 78, 78, 39, 0, 7, 0, 9, 255, 243, 1, 235, 2, 120, 0, 11, 0, 19, + 0, 31, 0, 39, 0, 51, 0, 59, 0, 63, 0, 250, 182, 59, 40, 13, 19, 0, 76, 57, + 184, 255, 216, 180, 13, 19, 0, 76, 55, 184, 255, 208, 64, 17, 13, 19, 0, 76, 53, 40, + 13, 19, 0, 76, 39, 48, 13, 19, 0, 76, 37, 184, 255, 216, 180, 13, 19, 0, 76, 35, + 184, 255, 216, 64, 17, 13, 19, 0, 76, 33, 40, 13, 19, 0, 76, 19, 40, 13, 19, 0, + 76, 17, 184, 255, 224, 180, 13, 19, 0, 76, 15, 184, 255, 224, 64, 100, 13, 19, 0, 76, + 13, 32, 13, 19, 0, 76, 62, 63, 63, 56, 20, 150, 64, 32, 80, 32, 96, 32, 3, 32, + 26, 150, 79, 36, 95, 36, 111, 36, 3, 36, 40, 150, 64, 52, 80, 52, 96, 52, 3, 52, + 46, 150, 56, 65, 60, 61, 61, 12, 6, 150, 79, 16, 95, 16, 111, 16, 3, 16, 0, 150, + 12, 64, 63, 62, 61, 60, 62, 60, 62, 60, 14, 38, 49, 29, 152, 54, 64, 34, 1, 34, + 43, 23, 152, 58, 38, 92, 3, 152, 79, 18, 1, 18, 9, 152, 14, 90, 0, 63, 237, 212, + 93, 237, 63, 51, 237, 50, 212, 93, 50, 237, 50, 17, 18, 57, 57, 47, 47, 16, 205, 16, + 205, 1, 16, 214, 253, 220, 93, 237, 17, 51, 47, 51, 16, 214, 253, 220, 93, 237, 222, 93, + 253, 220, 93, 237, 17, 51, 47, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 52, 51, 50, 21, 20, + 35, 34, 23, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 52, 51, 50, 21, 20, + 35, 34, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 52, 51, 50, 21, 20, + 35, 34, 37, 39, 1, 23, 70, 13, 13, 13, 14, 14, 13, 13, 13, 53, 78, 81, 80, 79, + 162, 14, 13, 14, 14, 14, 14, 13, 14, 51, 77, 81, 79, 79, 249, 14, 13, 13, 14, 14, + 13, 13, 14, 52, 78, 80, 78, 80, 254, 225, 29, 1, 197, 29, 1, 239, 51, 39, 39, 51, + 51, 38, 38, 51, 137, 137, 138, 233, 51, 38, 38, 51, 51, 38, 38, 51, 138, 138, 137, 137, + 51, 38, 38, 51, 51, 38, 38, 51, 138, 138, 137, 218, 45, 1, 40, 45, 255, 255, 0, 55, + 255, 243, 1, 189, 3, 61, 2, 38, 0, 54, 0, 0, 1, 7, 1, 95, 0, 18, 0, 139, + 0, 16, 64, 11, 1, 0, 50, 54, 46, 37, 80, 1, 15, 55, 79, 43, 43, 52, 0, 0, + 0, 1, 0, 144, 0, 56, 1, 85, 1, 195, 0, 5, 0, 52, 185, 0, 3, 255, 232, 179, + 12, 0, 77, 3, 184, 255, 248, 64, 16, 11, 0, 77, 1, 5, 4, 2, 2, 4, 3, 0, + 6, 5, 1, 0, 3, 0, 25, 47, 51, 205, 205, 1, 24, 16, 214, 50, 205, 50, 47, 16, + 205, 50, 49, 48, 43, 43, 55, 55, 23, 7, 23, 7, 144, 139, 58, 99, 99, 58, 254, 197, + 31, 166, 166, 32, 0, 2, 0, 27, 255, 250, 1, 226, 2, 113, 0, 14, 0, 36, 0, 135, + 181, 20, 8, 15, 0, 77, 20, 184, 255, 232, 64, 14, 14, 0, 77, 16, 16, 16, 0, 77, + 16, 24, 15, 0, 77, 7, 184, 255, 240, 180, 13, 14, 0, 76, 2, 184, 255, 232, 179, 14, + 0, 77, 2, 184, 255, 240, 179, 13, 0, 77, 2, 184, 255, 248, 64, 41, 11, 12, 0, 76, + 28, 32, 115, 11, 11, 18, 30, 30, 26, 26, 33, 38, 5, 118, 18, 37, 31, 121, 28, 28, + 24, 32, 121, 35, 66, 27, 121, 24, 65, 0, 124, 21, 65, 8, 124, 15, 66, 0, 63, 237, + 63, 237, 63, 237, 63, 237, 17, 57, 47, 237, 1, 16, 214, 237, 16, 206, 50, 47, 50, 47, + 17, 57, 47, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 19, 34, 14, 2, 21, + 20, 22, 51, 50, 54, 55, 17, 38, 38, 3, 34, 38, 53, 52, 54, 51, 50, 22, 23, 51, + 21, 35, 21, 51, 21, 35, 21, 51, 21, 35, 6, 220, 27, 43, 28, 15, 57, 56, 20, 20, + 3, 13, 21, 9, 89, 104, 104, 90, 11, 30, 14, 193, 128, 105, 105, 141, 206, 29, 2, 42, + 36, 66, 93, 58, 116, 120, 6, 1, 1, 219, 5, 2, 253, 208, 147, 160, 160, 164, 4, 2, + 70, 190, 70, 219, 70, 6, 0, 1, 0, 149, 1, 171, 1, 95, 2, 198, 0, 19, 0, 27, + 64, 12, 5, 14, 0, 8, 148, 14, 11, 154, 5, 0, 19, 90, 0, 63, 205, 220, 237, 1, + 47, 253, 206, 18, 57, 49, 48, 1, 14, 3, 7, 22, 22, 21, 20, 6, 35, 34, 38, 53, + 52, 62, 2, 55, 1, 95, 18, 35, 30, 24, 7, 32, 29, 46, 28, 37, 38, 23, 46, 71, + 47, 2, 133, 4, 8, 15, 24, 19, 3, 43, 21, 40, 41, 53, 38, 29, 63, 55, 39, 6, + 0, 1, 0, 148, 1, 168, 1, 94, 2, 195, 0, 19, 0, 25, 64, 11, 5, 14, 148, 0, + 8, 0, 19, 5, 154, 11, 90, 0, 63, 253, 220, 205, 1, 47, 206, 237, 57, 49, 48, 19, + 62, 3, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, 148, 18, 35, 30, + 24, 7, 32, 29, 46, 28, 37, 38, 23, 47, 70, 47, 1, 233, 4, 8, 15, 23, 20, 3, + 43, 21, 40, 41, 53, 38, 29, 63, 55, 39, 6, 0, 2, 0, 43, 1, 183, 1, 202, 2, + 181, 0, 19, 0, 39, 0, 46, 64, 22, 25, 34, 148, 28, 5, 14, 0, 8, 148, 14, 20, + 28, 11, 31, 154, 5, 25, 0, 20, 19, 39, 90, 0, 63, 51, 205, 50, 220, 50, 237, 50, + 1, 47, 206, 222, 253, 206, 18, 57, 16, 237, 57, 49, 48, 1, 14, 3, 7, 22, 22, 21, + 20, 6, 35, 34, 38, 53, 52, 62, 2, 55, 7, 14, 3, 7, 22, 22, 21, 20, 6, 35, + 34, 38, 53, 52, 62, 2, 55, 1, 202, 17, 32, 27, 22, 6, 29, 29, 33, 33, 29, 43, + 17, 39, 65, 49, 217, 17, 32, 28, 22, 6, 29, 29, 32, 34, 29, 42, 17, 39, 65, 49, + 2, 123, 4, 7, 14, 21, 18, 3, 39, 24, 25, 41, 40, 44, 28, 56, 46, 34, 6, 58, + 4, 7, 14, 21, 18, 3, 39, 24, 25, 41, 40, 44, 28, 56, 46, 34, 6, 0, 2, 0, + 42, 1, 183, 1, 201, 2, 181, 0, 19, 0, 39, 0, 42, 64, 20, 25, 34, 148, 20, 28, + 5, 14, 148, 0, 8, 20, 0, 39, 19, 25, 5, 154, 31, 11, 90, 0, 63, 51, 253, 50, + 220, 50, 205, 50, 1, 47, 206, 253, 57, 222, 206, 237, 57, 49, 48, 19, 62, 3, 55, 38, + 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, 55, 62, 3, 55, 38, 38, 53, 52, + 54, 51, 50, 22, 21, 20, 14, 2, 7, 42, 17, 32, 27, 22, 6, 29, 29, 33, 33, 29, + 43, 17, 39, 65, 49, 217, 17, 32, 28, 22, 6, 29, 29, 32, 34, 29, 42, 17, 39, 65, + 48, 1, 241, 4, 7, 14, 22, 18, 2, 40, 23, 25, 41, 40, 44, 29, 55, 46, 34, 6, + 58, 4, 7, 14, 22, 18, 2, 40, 23, 25, 41, 40, 44, 29, 55, 46, 34, 6, 0, 1, + 0, 114, 0, 173, 1, 130, 1, 203, 0, 19, 0, 13, 179, 0, 10, 15, 5, 0, 47, 205, + 1, 47, 205, 49, 48, 1, 20, 14, 2, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 30, + 2, 1, 130, 19, 35, 51, 31, 32, 50, 35, 19, 19, 35, 50, 32, 31, 51, 35, 19, 1, + 60, 29, 52, 39, 23, 23, 39, 52, 29, 28, 52, 40, 23, 23, 40, 52, 0, 1, 0, 69, + 0, 236, 1, 175, 1, 50, 0, 3, 0, 13, 179, 1, 3, 0, 3, 0, 47, 205, 1, 47, + 205, 49, 48, 19, 33, 21, 33, 69, 1, 106, 254, 150, 1, 50, 70, 0, 1, 0, 0, 0, + 236, 1, 244, 1, 50, 0, 3, 0, 13, 179, 3, 2, 0, 3, 0, 47, 205, 1, 47, 47, + 49, 48, 17, 33, 21, 33, 1, 244, 254, 12, 1, 50, 70, 0, 1, 0, 112, 2, 36, 1, + 132, 2, 145, 0, 27, 0, 55, 182, 17, 24, 11, 16, 0, 76, 2, 184, 255, 224, 64, 22, + 11, 16, 0, 76, 27, 47, 0, 63, 0, 2, 0, 13, 14, 27, 27, 19, 10, 24, 5, 13, + 13, 5, 0, 47, 51, 47, 16, 205, 220, 205, 50, 47, 1, 47, 205, 220, 93, 205, 49, 48, + 43, 43, 1, 14, 3, 35, 34, 38, 39, 38, 35, 34, 6, 7, 39, 62, 3, 51, 50, 22, + 23, 22, 51, 50, 54, 55, 1, 132, 3, 15, 22, 30, 19, 13, 35, 11, 26, 16, 13, 24, + 6, 43, 3, 15, 22, 30, 18, 13, 35, 11, 26, 16, 13, 25, 6, 2, 123, 11, 28, 24, + 17, 14, 5, 14, 26, 14, 23, 11, 28, 24, 17, 15, 5, 14, 26, 14, 0, 2, 0, 18, + 1, 101, 1, 220, 2, 107, 0, 7, 0, 36, 0, 83, 64, 40, 35, 30, 29, 36, 8, 22, + 22, 29, 9, 13, 20, 128, 15, 1, 15, 24, 29, 38, 1, 2, 5, 6, 37, 35, 23, 23, + 9, 21, 21, 2, 5, 7, 89, 22, 8, 8, 15, 15, 30, 4, 0, 47, 51, 51, 17, 51, + 47, 51, 63, 205, 50, 51, 17, 51, 51, 17, 51, 1, 16, 214, 221, 221, 205, 16, 214, 50, + 220, 93, 50, 205, 50, 18, 57, 17, 51, 51, 16, 205, 50, 49, 48, 19, 21, 35, 21, 35, + 53, 35, 53, 5, 39, 14, 3, 21, 35, 62, 3, 55, 51, 23, 55, 51, 30, 3, 23, 35, + 52, 46, 2, 39, 7, 204, 64, 58, 64, 1, 52, 39, 2, 2, 1, 1, 58, 3, 6, 7, + 7, 5, 54, 44, 47, 54, 5, 7, 6, 5, 3, 58, 1, 1, 2, 1, 42, 2, 107, 50, + 212, 212, 50, 193, 116, 20, 60, 57, 44, 4, 50, 74, 60, 51, 27, 136, 136, 27, 52, 60, + 74, 49, 4, 44, 57, 60, 20, 116, 255, 255, 0, 66, 255, 245, 1, 178, 2, 178, 2, 38, + 0, 86, 0, 0, 1, 6, 1, 95, 10, 0, 0, 16, 64, 11, 1, 10, 40, 44, 34, 27, + 80, 1, 9, 45, 79, 43, 43, 52, 0, 1, 0, 159, 0, 56, 1, 100, 1, 195, 0, 5, + 0, 33, 64, 15, 2, 16, 11, 12, 0, 76, 2, 5, 4, 0, 3, 1, 4, 0, 2, 0, + 25, 47, 205, 205, 1, 24, 47, 51, 205, 50, 205, 50, 49, 48, 43, 55, 39, 55, 39, 55, + 23, 217, 58, 99, 99, 58, 139, 56, 32, 166, 166, 31, 197, 0, 3, 0, 31, 255, 245, 1, + 222, 1, 219, 0, 39, 0, 59, 0, 66, 0, 147, 185, 0, 34, 255, 232, 179, 18, 0, 77, + 34, 184, 255, 240, 179, 17, 0, 77, 26, 184, 255, 240, 179, 13, 0, 77, 26, 184, 255, 232, + 179, 12, 0, 77, 26, 184, 255, 240, 64, 64, 11, 0, 77, 17, 16, 9, 11, 0, 76, 11, + 16, 11, 0, 77, 11, 24, 9, 10, 0, 76, 22, 6, 66, 31, 130, 45, 45, 14, 60, 130, + 27, 0, 0, 27, 68, 55, 130, 14, 67, 31, 134, 66, 66, 36, 22, 63, 136, 25, 80, 50, + 136, 19, 80, 40, 136, 9, 81, 39, 39, 6, 36, 136, 3, 81, 0, 63, 237, 50, 50, 47, + 63, 237, 63, 237, 63, 237, 50, 18, 57, 47, 237, 1, 16, 214, 237, 16, 206, 50, 47, 16, + 237, 17, 57, 47, 237, 50, 57, 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 37, 6, + 6, 35, 34, 38, 39, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 54, + 54, 51, 50, 21, 20, 20, 7, 35, 20, 30, 2, 51, 50, 54, 55, 5, 50, 62, 2, 53, + 52, 46, 2, 35, 34, 14, 2, 21, 20, 30, 2, 55, 52, 38, 35, 34, 6, 21, 1, 209, + 20, 46, 22, 35, 60, 20, 17, 46, 42, 33, 47, 31, 15, 15, 30, 48, 33, 37, 54, 14, + 18, 48, 29, 121, 1, 176, 11, 21, 33, 22, 13, 30, 23, 254, 227, 15, 20, 13, 5, 6, + 14, 23, 16, 15, 22, 13, 6, 7, 15, 23, 251, 26, 20, 25, 29, 15, 14, 12, 39, 51, + 46, 44, 42, 69, 88, 46, 45, 87, 68, 41, 42, 48, 47, 43, 236, 6, 14, 9, 28, 53, + 41, 25, 8, 14, 23, 28, 47, 60, 32, 32, 63, 49, 31, 29, 46, 61, 31, 33, 62, 50, + 30, 215, 59, 69, 71, 57, 255, 255, 0, 13, 0, 0, 1, 232, 3, 26, 2, 38, 0, 60, + 0, 0, 1, 7, 0, 131, 0, 2, 0, 139, 0, 23, 64, 16, 2, 1, 1, 19, 37, 4, + 12, 80, 2, 4, 29, 79, 1, 4, 17, 79, 43, 43, 43, 52, 52, 0, 0, 0, 0, 2, + 0, 182, 255, 91, 1, 60, 1, 209, 0, 13, 0, 25, 0, 33, 64, 15, 11, 145, 0, 0, + 17, 148, 23, 23, 27, 26, 5, 20, 154, 14, 13, 0, 47, 47, 253, 206, 1, 17, 18, 57, + 47, 237, 51, 47, 237, 49, 48, 55, 52, 62, 2, 55, 51, 30, 3, 21, 21, 35, 19, 50, + 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 204, 3, 4, 7, 3, 57, 3, 6, 5, 2, + 90, 45, 28, 39, 39, 28, 27, 40, 40, 3, 37, 62, 56, 55, 30, 30, 55, 56, 62, 37, + 168, 2, 118, 37, 31, 31, 36, 36, 31, 31, 37, 0, 1, 0, 49, 255, 159, 1, 194, 2, + 107, 0, 35, 0, 96, 185, 0, 22, 255, 200, 179, 15, 0, 77, 22, 184, 255, 224, 179, 14, + 0, 77, 17, 184, 255, 208, 179, 15, 0, 77, 17, 184, 255, 232, 64, 32, 14, 0, 77, 8, + 30, 127, 5, 33, 33, 0, 11, 11, 27, 37, 20, 130, 0, 36, 26, 26, 23, 137, 30, 33, + 32, 12, 12, 15, 136, 5, 8, 6, 0, 47, 221, 50, 237, 50, 47, 47, 221, 50, 237, 50, + 47, 1, 16, 214, 237, 16, 206, 50, 47, 17, 57, 47, 51, 237, 50, 49, 48, 43, 43, 43, + 43, 19, 52, 62, 2, 55, 53, 51, 21, 22, 22, 23, 7, 38, 38, 35, 34, 14, 2, 21, + 20, 22, 51, 50, 54, 55, 23, 6, 6, 7, 21, 35, 53, 38, 38, 49, 30, 54, 75, 44, + 74, 27, 54, 31, 18, 33, 54, 28, 36, 63, 46, 26, 99, 80, 32, 58, 35, 12, 30, 60, + 34, 74, 92, 111, 1, 4, 53, 81, 58, 34, 6, 127, 124, 2, 9, 10, 69, 12, 7, 19, + 39, 63, 43, 83, 79, 8, 12, 68, 11, 10, 2, 124, 126, 13, 116, 0, 1, 0, 45, 0, + 0, 1, 199, 2, 118, 0, 34, 0, 106, 185, 0, 31, 255, 240, 179, 18, 0, 77, 31, 184, + 255, 232, 179, 17, 0, 77, 31, 184, 255, 240, 64, 49, 16, 0, 77, 20, 16, 11, 12, 0, + 76, 20, 24, 10, 0, 77, 20, 16, 9, 0, 77, 26, 26, 1, 1, 8, 36, 3, 0, 145, + 14, 17, 15, 35, 27, 27, 29, 155, 23, 3, 14, 151, 0, 17, 17, 23, 90, 7, 151, 10, + 96, 0, 63, 237, 63, 57, 47, 51, 237, 50, 16, 237, 50, 47, 1, 16, 214, 221, 50, 237, + 50, 16, 206, 50, 47, 50, 47, 49, 48, 43, 43, 43, 43, 43, 43, 19, 51, 21, 35, 21, + 20, 6, 7, 33, 21, 33, 54, 54, 53, 53, 35, 53, 51, 53, 52, 62, 2, 51, 50, 22, + 23, 7, 38, 35, 34, 14, 2, 21, 210, 170, 170, 7, 7, 1, 3, 254, 160, 10, 15, 83, + 83, 28, 50, 71, 44, 39, 53, 25, 20, 45, 56, 24, 39, 29, 15, 1, 77, 67, 7, 45, + 98, 45, 71, 64, 125, 64, 13, 67, 74, 66, 87, 50, 20, 13, 11, 71, 22, 14, 34, 57, + 43, 0, 2, 0, 38, 0, 97, 1, 207, 2, 10, 0, 28, 0, 40, 0, 83, 64, 35, 4, + 25, 25, 3, 26, 26, 0, 10, 19, 19, 11, 18, 18, 29, 14, 35, 0, 41, 18, 26, 26, + 19, 25, 25, 22, 11, 3, 3, 10, 4, 4, 32, 7, 38, 22, 0, 47, 205, 220, 205, 51, + 47, 51, 51, 25, 47, 51, 17, 51, 24, 47, 51, 51, 25, 47, 51, 1, 24, 16, 214, 205, + 220, 205, 51, 47, 51, 51, 25, 47, 51, 17, 51, 24, 47, 51, 51, 25, 47, 51, 49, 48, + 19, 52, 55, 39, 55, 23, 54, 51, 50, 23, 55, 23, 7, 22, 21, 20, 6, 7, 23, 7, + 39, 6, 35, 34, 39, 7, 39, 55, 38, 37, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, + 54, 78, 25, 65, 51, 66, 43, 52, 51, 43, 67, 52, 67, 26, 13, 13, 67, 52, 67, 43, + 51, 54, 41, 66, 51, 65, 25, 1, 21, 62, 43, 43, 62, 62, 43, 43, 62, 1, 54, 55, + 40, 66, 51, 67, 26, 26, 67, 51, 66, 40, 55, 29, 46, 20, 66, 52, 66, 25, 25, 66, + 52, 65, 40, 56, 51, 60, 60, 51, 51, 60, 60, 0, 1, 0, 13, 0, 0, 1, 232, 2, + 107, 0, 30, 0, 118, 64, 62, 24, 28, 29, 22, 18, 15, 18, 120, 19, 22, 20, 19, 22, + 19, 25, 29, 115, 1, 8, 12, 15, 12, 120, 11, 8, 20, 11, 8, 11, 6, 2, 5, 1, + 1, 32, 31, 15, 18, 19, 65, 25, 5, 121, 8, 22, 15, 8, 29, 1, 121, 4, 26, 4, + 8, 4, 8, 4, 12, 11, 65, 0, 66, 0, 63, 63, 51, 57, 57, 47, 47, 17, 51, 16, + 237, 50, 17, 51, 51, 16, 237, 50, 63, 51, 1, 47, 17, 18, 57, 47, 51, 205, 50, 220, + 135, 43, 135, 125, 196, 1, 24, 16, 253, 50, 220, 135, 43, 135, 125, 196, 1, 24, 16, 205, + 50, 49, 48, 51, 53, 35, 53, 51, 53, 35, 53, 51, 38, 38, 39, 51, 22, 22, 23, 54, + 54, 55, 51, 6, 6, 7, 51, 21, 35, 21, 51, 21, 35, 21, 210, 145, 145, 145, 122, 49, + 87, 38, 91, 32, 76, 41, 39, 73, 32, 91, 40, 86, 49, 123, 144, 144, 144, 95, 63, 91, + 64, 78, 155, 73, 70, 139, 64, 64, 139, 70, 75, 153, 78, 64, 91, 63, 95, 0, 2, 0, + 212, 255, 91, 1, 33, 2, 187, 0, 3, 0, 7, 0, 29, 64, 12, 6, 1, 145, 7, 0, + 0, 9, 8, 7, 4, 0, 3, 0, 47, 205, 47, 205, 1, 17, 18, 57, 47, 51, 237, 50, + 49, 48, 55, 51, 17, 35, 17, 51, 17, 35, 212, 77, 77, 77, 77, 177, 254, 170, 3, 96, + 254, 170, 0, 2, 0, 68, 255, 159, 1, 175, 2, 121, 0, 56, 0, 74, 1, 75, 181, 71, + 32, 18, 0, 77, 58, 184, 255, 232, 179, 16, 0, 77, 58, 184, 255, 240, 179, 13, 0, 77, + 51, 184, 255, 232, 180, 11, 12, 0, 76, 51, 184, 255, 224, 180, 9, 10, 0, 76, 48, 184, + 255, 216, 179, 18, 0, 77, 48, 184, 255, 232, 179, 16, 0, 77, 48, 184, 255, 216, 179, 13, + 0, 77, 48, 184, 255, 208, 179, 12, 0, 77, 48, 184, 255, 224, 179, 11, 0, 77, 47, 184, + 255, 224, 179, 17, 0, 77, 46, 184, 255, 208, 179, 17, 0, 77, 40, 184, 255, 216, 179, 17, + 0, 77, 40, 184, 255, 216, 179, 15, 0, 77, 40, 184, 255, 232, 179, 13, 0, 77, 40, 184, + 255, 224, 179, 12, 0, 77, 39, 184, 255, 224, 179, 17, 0, 77, 36, 184, 255, 248, 64, 114, + 14, 0, 77, 22, 24, 11, 0, 77, 22, 32, 10, 0, 77, 22, 24, 9, 0, 77, 19, 24, + 18, 0, 77, 19, 32, 16, 17, 0, 76, 19, 40, 12, 13, 0, 76, 19, 24, 11, 0, 77, + 11, 24, 18, 0, 77, 11, 32, 17, 0, 77, 11, 16, 15, 0, 77, 11, 16, 13, 0, 77, + 11, 24, 12, 0, 77, 47, 5, 118, 50, 50, 69, 118, 42, 27, 27, 42, 76, 18, 34, 118, + 21, 21, 60, 118, 13, 56, 56, 0, 13, 1, 8, 13, 75, 18, 74, 8, 74, 53, 31, 47, + 65, 37, 65, 24, 0, 0, 3, 124, 53, 28, 28, 31, 124, 24, 0, 47, 237, 50, 47, 47, + 237, 50, 47, 17, 57, 57, 17, 51, 17, 18, 57, 57, 17, 51, 1, 16, 198, 94, 93, 50, + 47, 16, 237, 51, 47, 237, 50, 16, 206, 50, 47, 16, 237, 51, 47, 237, 50, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 23, 22, 22, 51, 50, 53, 52, 38, 39, 46, 3, + 53, 52, 62, 2, 55, 38, 38, 53, 52, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, + 21, 20, 22, 23, 30, 3, 21, 20, 14, 2, 7, 22, 22, 21, 20, 6, 35, 34, 38, 39, + 19, 6, 6, 21, 20, 30, 2, 23, 23, 54, 54, 53, 52, 46, 2, 39, 90, 27, 64, 50, + 101, 48, 57, 33, 57, 44, 25, 15, 23, 28, 13, 22, 26, 87, 78, 46, 78, 24, 19, 22, + 61, 47, 35, 50, 44, 50, 33, 57, 44, 25, 14, 22, 27, 13, 26, 32, 95, 88, 60, 77, + 23, 132, 26, 32, 21, 36, 50, 29, 17, 26, 32, 21, 35, 47, 26, 1, 11, 17, 62, 32, + 35, 19, 11, 25, 35, 50, 36, 23, 40, 33, 25, 8, 18, 46, 30, 62, 72, 17, 8, 69, + 8, 18, 29, 30, 31, 34, 16, 11, 25, 36, 49, 36, 22, 39, 33, 26, 8, 19, 50, 33, + 67, 68, 19, 11, 1, 184, 17, 45, 27, 23, 32, 24, 18, 10, 6, 17, 44, 28, 23, 31, + 22, 18, 10, 0, 2, 0, 113, 2, 38, 1, 131, 2, 143, 0, 11, 0, 23, 0, 37, 185, + 0, 21, 255, 192, 64, 16, 15, 18, 72, 21, 15, 3, 64, 15, 18, 72, 3, 9, 18, 6, + 12, 0, 0, 47, 50, 205, 50, 1, 47, 205, 43, 222, 205, 43, 49, 48, 19, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, + 165, 20, 32, 32, 20, 21, 31, 31, 149, 21, 31, 31, 21, 21, 31, 31, 2, 38, 30, 23, + 23, 29, 29, 23, 23, 30, 30, 23, 23, 29, 29, 23, 23, 30, 0, 3, 0, 34, 255, 245, + 1, 210, 1, 219, 0, 19, 0, 49, 0, 69, 1, 2, 181, 67, 16, 16, 0, 77, 57, 184, + 255, 232, 64, 40, 16, 0, 77, 53, 16, 16, 0, 77, 31, 24, 15, 0, 77, 31, 32, 11, + 0, 77, 26, 32, 11, 0, 77, 25, 8, 15, 0, 77, 17, 48, 15, 0, 77, 17, 32, 11, + 12, 0, 76, 13, 184, 255, 208, 179, 15, 0, 77, 13, 184, 255, 224, 180, 11, 12, 0, 76, + 12, 184, 255, 248, 179, 17, 0, 77, 7, 184, 255, 216, 179, 15, 0, 77, 7, 184, 255, 224, + 179, 12, 0, 77, 7, 184, 255, 216, 64, 24, 11, 0, 77, 3, 40, 15, 0, 77, 3, 24, + 13, 0, 77, 3, 32, 12, 0, 77, 3, 40, 11, 0, 77, 10, 184, 255, 232, 179, 21, 0, + 77, 10, 184, 255, 232, 64, 14, 13, 0, 77, 0, 24, 21, 0, 77, 0, 24, 13, 0, 77, + 15, 184, 255, 232, 179, 22, 0, 77, 15, 184, 255, 240, 64, 43, 21, 0, 77, 5, 24, 22, + 0, 77, 5, 16, 21, 0, 77, 36, 36, 20, 0, 150, 60, 71, 43, 150, 28, 10, 150, 50, + 70, 46, 152, 23, 15, 152, 65, 92, 40, 152, 33, 5, 152, 79, 55, 1, 55, 0, 47, 93, + 253, 222, 237, 63, 253, 222, 237, 1, 16, 214, 253, 222, 237, 16, 214, 253, 206, 50, 47, 0, + 43, 43, 43, 43, 1, 43, 43, 43, 43, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 52, 46, 2, 35, 34, 14, 2, 21, 20, + 30, 2, 51, 50, 62, 2, 7, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, + 23, 7, 38, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 37, 52, 62, 2, 51, 50, + 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 1, 152, 27, 45, 56, 30, 30, 56, 45, 27, + 27, 45, 56, 30, 30, 57, 44, 27, 81, 17, 37, 17, 29, 43, 28, 14, 14, 28, 43, 30, + 16, 35, 17, 20, 11, 22, 9, 32, 27, 33, 30, 9, 23, 11, 254, 236, 38, 61, 78, 40, + 40, 78, 60, 37, 38, 61, 78, 40, 41, 77, 60, 37, 231, 48, 71, 47, 24, 24, 47, 71, + 46, 48, 71, 47, 24, 24, 47, 70, 64, 8, 8, 21, 35, 45, 24, 24, 46, 36, 22, 5, + 8, 54, 5, 3, 40, 25, 32, 37, 4, 5, 58, 61, 92, 61, 30, 30, 61, 91, 60, 61, + 91, 61, 31, 31, 60, 91, 0, 2, 0, 118, 1, 38, 1, 128, 2, 118, 0, 14, 0, 45, + 0, 119, 64, 27, 37, 24, 21, 0, 77, 27, 24, 16, 0, 77, 27, 16, 15, 0, 77, 27, + 24, 14, 0, 77, 24, 32, 14, 16, 0, 76, 17, 184, 255, 200, 179, 16, 0, 77, 17, 184, + 255, 232, 179, 15, 0, 77, 17, 184, 255, 216, 179, 14, 0, 77, 17, 184, 255, 224, 64, 30, + 11, 13, 0, 76, 33, 4, 18, 47, 43, 43, 12, 25, 46, 7, 32, 30, 48, 30, 64, 30, + 3, 30, 30, 15, 0, 22, 94, 39, 15, 90, 0, 63, 205, 63, 205, 17, 57, 47, 93, 205, + 1, 16, 214, 205, 51, 47, 16, 222, 205, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 1, 50, 54, 55, 53, 38, 38, 35, 34, 14, 2, 21, 20, 22, 19, 50, 22, 21, 21, + 6, 6, 35, 34, 38, 53, 52, 62, 2, 51, 50, 22, 23, 53, 52, 46, 2, 35, 34, 6, + 7, 39, 54, 54, 1, 3, 20, 38, 5, 10, 30, 14, 15, 31, 26, 16, 42, 31, 73, 58, + 22, 72, 37, 59, 76, 23, 40, 51, 29, 13, 29, 19, 5, 16, 29, 23, 21, 48, 18, 9, + 17, 54, 1, 93, 2, 2, 89, 2, 2, 4, 10, 19, 15, 26, 23, 1, 25, 68, 56, 200, + 5, 7, 48, 56, 28, 39, 24, 11, 2, 2, 2, 13, 27, 21, 13, 5, 6, 56, 5, 8, + 0, 2, 0, 63, 0, 79, 1, 157, 1, 174, 0, 5, 0, 11, 0, 58, 64, 25, 7, 11, + 64, 8, 10, 9, 6, 0, 128, 1, 5, 64, 2, 4, 128, 3, 0, 11, 5, 7, 1, 9, + 6, 0, 3, 0, 25, 47, 51, 51, 51, 205, 50, 205, 50, 1, 24, 47, 51, 26, 221, 50, + 26, 205, 50, 26, 16, 220, 50, 221, 50, 26, 205, 50, 49, 48, 55, 55, 23, 7, 23, 7, + 55, 55, 23, 7, 23, 7, 63, 119, 52, 84, 80, 50, 62, 120, 51, 83, 80, 50, 254, 176, + 27, 149, 144, 31, 175, 176, 27, 149, 144, 31, 0, 1, 0, 41, 0, 43, 1, 194, 1, 91, + 0, 5, 0, 17, 181, 3, 0, 4, 2, 0, 3, 0, 47, 205, 205, 1, 47, 221, 205, 49, + 48, 1, 17, 35, 53, 33, 53, 1, 194, 71, 254, 174, 1, 91, 254, 208, 234, 70, 255, 255, + 0, 140, 0, 215, 1, 104, 1, 37, 2, 6, 0, 16, 0, 0, 0, 4, 0, 34, 255, 245, + 1, 210, 1, 219, 0, 19, 0, 39, 0, 58, 0, 69, 1, 114, 64, 11, 56, 16, 19, 0, + 77, 55, 8, 19, 0, 77, 48, 184, 255, 240, 179, 18, 0, 77, 48, 184, 255, 232, 179, 17, + 0, 77, 48, 184, 255, 232, 64, 15, 14, 0, 77, 38, 8, 17, 18, 0, 76, 37, 16, 16, + 0, 77, 28, 184, 255, 248, 179, 18, 0, 77, 27, 184, 255, 240, 64, 21, 16, 0, 77, 23, + 16, 16, 0, 77, 17, 16, 19, 20, 0, 76, 17, 40, 11, 12, 0, 76, 13, 184, 255, 232, + 180, 19, 20, 0, 76, 13, 184, 255, 224, 180, 11, 13, 0, 76, 7, 184, 255, 232, 180, 19, + 20, 0, 76, 7, 184, 255, 232, 179, 13, 0, 77, 7, 184, 255, 224, 64, 21, 11, 12, 0, + 76, 3, 24, 20, 0, 77, 3, 32, 19, 0, 77, 3, 40, 11, 12, 0, 76, 17, 184, 255, + 232, 179, 22, 0, 77, 13, 184, 255, 232, 64, 14, 22, 0, 77, 7, 24, 22, 0, 77, 3, + 16, 22, 0, 77, 10, 184, 255, 224, 179, 15, 0, 77, 10, 184, 255, 232, 64, 9, 13, 0, + 77, 0, 32, 15, 0, 77, 15, 184, 255, 232, 64, 48, 21, 0, 77, 5, 24, 21, 0, 77, + 58, 95, 51, 1, 51, 55, 75, 54, 1, 54, 63, 150, 63, 49, 1, 49, 64, 25, 28, 72, + 64, 49, 1, 49, 0, 32, 13, 0, 77, 0, 150, 30, 71, 59, 41, 150, 48, 42, 1, 42, + 184, 255, 192, 64, 41, 25, 28, 72, 42, 10, 150, 48, 20, 1, 20, 70, 51, 63, 58, 1, + 58, 152, 48, 59, 1, 59, 59, 46, 54, 223, 42, 1, 42, 15, 152, 35, 70, 66, 152, 46, + 5, 152, 79, 25, 1, 25, 0, 47, 93, 253, 222, 237, 63, 253, 206, 93, 50, 17, 57, 47, + 113, 237, 113, 50, 1, 16, 214, 114, 253, 222, 43, 114, 237, 50, 16, 214, 253, 43, 222, 93, + 43, 114, 237, 214, 93, 50, 197, 113, 50, 0, 43, 43, 1, 43, 43, 43, 49, 48, 0, 43, + 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 37, 52, 46, 2, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 62, 2, + 37, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 55, 21, 35, 53, + 54, 54, 51, 50, 22, 21, 20, 7, 22, 22, 23, 35, 38, 38, 39, 39, 51, 50, 54, 53, + 52, 38, 35, 34, 6, 7, 1, 152, 27, 45, 56, 30, 30, 56, 45, 27, 27, 45, 56, 30, + 30, 57, 44, 27, 254, 138, 38, 61, 78, 40, 40, 78, 60, 37, 38, 61, 78, 40, 41, 77, + 60, 37, 186, 54, 14, 34, 19, 57, 55, 40, 12, 26, 13, 57, 13, 20, 10, 36, 18, 27, + 26, 32, 17, 6, 11, 5, 231, 48, 71, 47, 24, 24, 47, 71, 46, 48, 71, 47, 24, 24, + 47, 70, 47, 61, 92, 61, 30, 30, 61, 91, 60, 61, 91, 61, 31, 31, 60, 91, 16, 77, + 238, 4, 5, 44, 42, 48, 23, 17, 47, 26, 24, 37, 16, 50, 14, 23, 20, 13, 1, 1, + 0, 1, 0, 123, 2, 59, 1, 121, 2, 123, 0, 3, 0, 13, 179, 2, 3, 0, 3, 0, + 47, 205, 1, 47, 205, 49, 48, 19, 51, 21, 35, 123, 254, 254, 2, 123, 64, 0, 2, 0, + 125, 1, 189, 1, 119, 2, 181, 0, 19, 0, 31, 0, 57, 185, 0, 18, 255, 224, 64, 17, + 8, 11, 0, 76, 12, 32, 8, 11, 0, 76, 8, 32, 8, 11, 0, 76, 2, 184, 255, 224, + 64, 12, 8, 11, 0, 76, 0, 20, 10, 26, 15, 23, 29, 5, 0, 47, 221, 222, 205, 1, + 47, 205, 222, 205, 49, 48, 43, 43, 43, 43, 1, 20, 14, 2, 35, 34, 46, 2, 53, 52, + 62, 2, 51, 50, 30, 2, 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 119, + 20, 35, 45, 25, 25, 45, 35, 20, 20, 35, 45, 25, 25, 45, 35, 20, 60, 38, 27, 27, + 38, 38, 27, 27, 38, 2, 57, 29, 46, 32, 17, 17, 32, 46, 29, 29, 46, 32, 17, 17, + 32, 46, 29, 32, 36, 36, 32, 32, 36, 36, 0, 2, 0, 46, 0, 0, 1, 199, 2, 42, + 0, 11, 0, 15, 0, 51, 64, 23, 12, 12, 11, 10, 13, 13, 6, 4, 7, 1, 10, 10, + 16, 17, 12, 15, 91, 4, 2, 1, 9, 7, 10, 0, 47, 51, 205, 221, 205, 51, 63, 205, + 1, 17, 18, 57, 47, 51, 221, 50, 205, 50, 47, 16, 205, 50, 47, 49, 48, 19, 51, 53, + 51, 21, 51, 21, 35, 21, 35, 53, 35, 21, 33, 21, 33, 46, 168, 72, 169, 169, 72, 168, + 1, 153, 254, 103, 1, 118, 180, 180, 70, 180, 180, 233, 71, 0, 1, 0, 124, 1, 25, 1, + 120, 2, 121, 0, 32, 0, 225, 185, 0, 32, 255, 232, 179, 20, 0, 77, 32, 184, 255, 240, + 179, 19, 0, 77, 32, 184, 255, 232, 179, 18, 0, 77, 32, 184, 255, 224, 179, 17, 0, 77, + 32, 184, 255, 216, 179, 16, 0, 77, 32, 184, 255, 224, 179, 15, 0, 77, 32, 184, 255, 216, + 180, 12, 14, 0, 76, 32, 184, 255, 208, 64, 39, 11, 0, 77, 28, 16, 15, 0, 77, 16, + 16, 18, 0, 77, 15, 24, 19, 0, 77, 15, 16, 17, 0, 77, 14, 32, 19, 0, 77, 14, + 24, 18, 0, 77, 13, 16, 17, 0, 77, 18, 184, 255, 224, 179, 26, 0, 77, 17, 184, 255, + 224, 179, 27, 0, 77, 16, 184, 255, 240, 179, 26, 0, 77, 15, 184, 255, 224, 179, 27, 0, + 77, 14, 184, 255, 232, 64, 40, 26, 0, 77, 4, 32, 25, 0, 77, 3, 32, 25, 0, 77, + 2, 24, 25, 0, 77, 19, 150, 0, 9, 9, 0, 11, 27, 27, 8, 150, 11, 26, 26, 21, + 152, 30, 90, 8, 152, 11, 95, 0, 63, 237, 63, 237, 50, 47, 1, 47, 237, 51, 47, 16, + 205, 50, 47, 16, 237, 49, 48, 0, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 14, 2, 7, 6, 6, 7, + 51, 21, 35, 38, 62, 2, 55, 54, 54, 53, 52, 35, 34, 14, 2, 7, 39, 54, 54, 51, + 50, 22, 1, 106, 17, 29, 38, 21, 15, 30, 2, 166, 238, 3, 14, 26, 35, 18, 30, 38, + 55, 15, 27, 22, 16, 5, 32, 16, 61, 40, 62, 59, 2, 22, 19, 35, 35, 36, 18, 13, + 29, 11, 57, 30, 45, 38, 31, 16, 26, 44, 21, 45, 8, 11, 12, 4, 44, 16, 31, 51, + 0, 1, 0, 126, 1, 18, 1, 118, 2, 121, 0, 43, 0, 248, 181, 36, 32, 27, 0, 77, + 35, 184, 255, 232, 180, 11, 16, 0, 76, 30, 184, 255, 232, 179, 27, 0, 77, 28, 184, 255, + 232, 180, 17, 20, 0, 76, 28, 184, 255, 224, 64, 40, 14, 16, 0, 76, 27, 8, 36, 0, + 77, 24, 24, 23, 0, 77, 24, 16, 22, 0, 77, 14, 8, 26, 0, 77, 5, 24, 27, 0, + 77, 5, 16, 26, 0, 77, 40, 24, 27, 0, 77, 24, 184, 255, 248, 179, 24, 0, 77, 23, + 184, 255, 216, 64, 60, 27, 0, 77, 21, 24, 27, 0, 77, 21, 24, 23, 24, 0, 76, 5, + 24, 25, 0, 77, 5, 16, 24, 0, 77, 5, 24, 23, 0, 77, 31, 16, 150, 29, 64, 34, + 45, 72, 29, 64, 26, 32, 72, 29, 3, 150, 34, 45, 23, 23, 40, 9, 9, 40, 31, 9, + 152, 10, 10, 26, 41, 184, 255, 192, 64, 35, 28, 0, 77, 41, 64, 27, 0, 77, 41, 56, + 26, 0, 77, 41, 64, 25, 0, 77, 41, 41, 0, 152, 37, 98, 22, 64, 28, 0, 77, 22, + 22, 19, 152, 26, 90, 0, 63, 237, 50, 47, 43, 63, 237, 50, 47, 43, 43, 43, 43, 17, + 57, 47, 237, 57, 1, 47, 51, 47, 17, 51, 47, 16, 222, 237, 212, 43, 43, 237, 50, 49, + 48, 0, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 19, 50, 54, 53, 52, 46, 2, 35, 35, 53, 51, 50, 62, 2, 53, 52, 38, 35, + 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20, 7, 22, 22, 21, 20, 6, 35, 34, 38, + 39, 55, 22, 22, 226, 48, 35, 16, 27, 36, 19, 17, 22, 13, 27, 22, 15, 33, 26, 24, + 41, 15, 23, 14, 61, 30, 65, 54, 49, 32, 36, 68, 79, 28, 57, 16, 13, 20, 44, 1, + 74, 29, 23, 15, 21, 14, 6, 51, 5, 11, 18, 14, 22, 19, 17, 7, 49, 10, 20, 52, + 42, 43, 28, 10, 45, 32, 45, 62, 13, 8, 53, 8, 10, 0, 1, 0, 170, 2, 6, 1, + 82, 2, 181, 0, 3, 0, 24, 64, 9, 3, 0, 1, 2, 0, 3, 128, 2, 1, 0, 47, + 51, 26, 205, 50, 1, 47, 51, 205, 50, 49, 48, 1, 7, 39, 55, 1, 82, 126, 42, 114, + 2, 128, 122, 37, 138, 0, 1, 0, 71, 255, 91, 1, 173, 1, 208, 0, 26, 0, 62, 185, + 0, 17, 255, 224, 180, 17, 18, 0, 76, 17, 184, 255, 240, 64, 26, 15, 16, 0, 76, 23, + 127, 0, 28, 9, 13, 127, 0, 12, 1, 8, 12, 27, 25, 12, 73, 11, 75, 19, 136, 3, + 81, 0, 63, 237, 63, 63, 51, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, 49, 48, 43, + 43, 37, 6, 6, 35, 34, 38, 39, 22, 22, 21, 21, 35, 17, 51, 21, 20, 30, 2, 51, + 50, 62, 2, 55, 17, 51, 1, 173, 27, 89, 60, 41, 45, 17, 3, 1, 83, 83, 11, 25, + 41, 30, 13, 27, 24, 18, 3, 83, 13, 7, 17, 18, 15, 23, 46, 26, 92, 2, 117, 243, + 43, 60, 38, 17, 2, 2, 3, 1, 1, 137, 0, 1, 0, 28, 255, 91, 1, 191, 2, 113, + 0, 18, 0, 38, 64, 17, 5, 15, 2, 1, 8, 2, 0, 16, 20, 8, 19, 5, 5, 2, + 13, 18, 4, 0, 47, 51, 47, 205, 51, 47, 1, 16, 198, 16, 222, 221, 222, 94, 93, 205, + 49, 48, 1, 38, 7, 17, 35, 17, 38, 38, 53, 52, 62, 2, 51, 50, 22, 23, 17, 35, + 1, 121, 46, 41, 69, 93, 100, 37, 70, 99, 62, 35, 80, 36, 70, 2, 41, 6, 4, 253, + 48, 1, 143, 10, 92, 92, 49, 73, 50, 25, 6, 10, 252, 250, 255, 255, 0, 177, 0, 184, + 1, 68, 1, 81, 2, 7, 0, 17, 0, 0, 0, 196, 0, 0, 0, 1, 0, 156, 255, 87, + 1, 65, 0, 18, 0, 28, 0, 52, 64, 24, 17, 3, 26, 0, 25, 11, 20, 20, 30, 0, + 0, 20, 20, 29, 8, 25, 25, 29, 15, 0, 8, 1, 8, 8, 0, 47, 94, 93, 205, 17, + 51, 47, 17, 18, 57, 47, 51, 47, 1, 17, 57, 47, 204, 51, 221, 50, 221, 205, 49, 48, + 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 53, 52, 39, 39, + 62, 3, 55, 51, 6, 6, 1, 16, 26, 23, 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, + 15, 32, 37, 7, 3, 11, 11, 10, 2, 57, 5, 16, 33, 12, 30, 29, 10, 23, 19, 13, + 7, 5, 51, 4, 5, 20, 20, 11, 2, 9, 24, 24, 19, 4, 11, 29, 0, 1, 0, 126, + 1, 25, 1, 127, 2, 114, 0, 14, 0, 46, 64, 23, 5, 5, 47, 14, 1, 14, 0, 11, + 10, 150, 8, 0, 10, 0, 152, 13, 95, 5, 4, 4, 1, 8, 89, 0, 63, 51, 51, 47, + 205, 63, 237, 50, 1, 47, 50, 253, 205, 16, 205, 113, 50, 47, 49, 48, 19, 53, 6, 6, + 7, 39, 54, 54, 55, 51, 17, 51, 21, 35, 53, 231, 20, 50, 18, 17, 34, 66, 24, 44, + 89, 250, 1, 82, 206, 13, 20, 5, 49, 11, 37, 23, 254, 224, 57, 57, 0, 2, 0, 89, + 1, 37, 1, 155, 2, 120, 0, 19, 0, 31, 0, 59, 185, 0, 18, 255, 232, 64, 17, 8, + 11, 0, 76, 12, 24, 8, 11, 0, 76, 8, 24, 8, 11, 0, 76, 2, 184, 255, 224, 64, + 14, 8, 11, 0, 76, 20, 0, 26, 10, 23, 15, 90, 29, 5, 94, 0, 63, 205, 63, 205, + 1, 47, 205, 220, 205, 49, 48, 43, 43, 43, 43, 1, 20, 14, 2, 35, 34, 46, 2, 53, + 52, 62, 2, 51, 50, 30, 2, 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, + 155, 24, 43, 59, 35, 35, 59, 43, 24, 24, 43, 59, 35, 35, 59, 43, 24, 66, 49, 46, + 45, 50, 49, 46, 46, 49, 1, 207, 39, 62, 45, 24, 24, 45, 62, 39, 39, 62, 44, 24, + 24, 44, 62, 39, 51, 58, 58, 51, 50, 60, 60, 0, 2, 0, 85, 0, 79, 1, 181, 1, + 174, 0, 5, 0, 11, 0, 54, 64, 23, 11, 7, 8, 5, 1, 64, 4, 2, 3, 0, 9, + 6, 128, 10, 8, 5, 11, 1, 7, 6, 3, 0, 9, 0, 25, 47, 51, 51, 51, 205, 50, + 205, 50, 1, 24, 47, 51, 26, 221, 50, 220, 50, 221, 50, 26, 205, 50, 16, 205, 50, 49, + 48, 37, 7, 39, 55, 39, 55, 7, 7, 39, 55, 39, 55, 1, 181, 120, 52, 84, 80, 50, + 63, 119, 52, 84, 81, 50, 255, 176, 27, 149, 144, 31, 175, 176, 27, 149, 144, 31, 0, 4, + 0, 18, 255, 252, 1, 221, 2, 114, 0, 10, 0, 23, 0, 28, 0, 32, 0, 99, 64, 52, + 29, 31, 30, 31, 156, 32, 29, 20, 32, 29, 32, 30, 23, 24, 24, 12, 15, 18, 18, 27, + 20, 14, 5, 3, 6, 0, 31, 32, 89, 29, 30, 103, 15, 19, 20, 12, 27, 27, 17, 24, + 23, 101, 17, 103, 6, 97, 0, 10, 10, 7, 3, 96, 0, 63, 51, 51, 47, 205, 63, 63, + 63, 51, 18, 57, 47, 51, 51, 205, 50, 63, 51, 63, 51, 1, 47, 220, 50, 205, 47, 205, + 50, 57, 47, 205, 50, 51, 17, 51, 47, 47, 135, 43, 135, 125, 196, 49, 48, 19, 54, 54, + 55, 51, 21, 35, 53, 6, 6, 7, 1, 21, 51, 21, 35, 21, 35, 53, 35, 53, 54, 54, + 55, 23, 6, 6, 7, 51, 5, 35, 1, 51, 18, 34, 48, 24, 40, 59, 20, 32, 18, 1, + 150, 36, 36, 59, 129, 26, 48, 31, 24, 21, 34, 15, 70, 254, 225, 70, 1, 123, 70, 2, + 49, 14, 28, 23, 250, 168, 11, 14, 6, 254, 249, 152, 50, 48, 48, 41, 46, 75, 40, 43, + 27, 56, 26, 102, 2, 107, 0, 3, 0, 17, 0, 0, 1, 226, 2, 114, 0, 30, 0, 41, + 0, 45, 0, 184, 185, 0, 30, 255, 240, 179, 22, 0, 77, 28, 184, 255, 224, 179, 21, 0, + 77, 27, 184, 255, 216, 179, 21, 0, 77, 27, 184, 255, 216, 179, 19, 0, 77, 24, 184, 255, + 232, 179, 21, 0, 77, 24, 184, 255, 224, 179, 20, 0, 77, 24, 184, 255, 232, 179, 19, 0, + 77, 24, 184, 255, 224, 64, 68, 14, 18, 0, 76, 20, 48, 20, 0, 77, 8, 16, 22, 23, + 0, 76, 7, 16, 20, 0, 77, 42, 44, 43, 44, 156, 45, 42, 20, 45, 42, 45, 43, 36, + 34, 37, 31, 12, 4, 25, 0, 0, 25, 30, 5, 19, 19, 5, 44, 45, 89, 42, 43, 103, + 37, 97, 31, 41, 41, 38, 34, 96, 18, 15, 22, 102, 30, 3, 91, 0, 63, 205, 63, 205, + 50, 63, 51, 51, 47, 205, 63, 63, 51, 63, 51, 1, 47, 51, 47, 16, 205, 47, 51, 47, + 16, 205, 205, 47, 220, 50, 205, 47, 47, 135, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 37, 21, 35, 38, 52, 53, 52, 54, 55, 55, 54, 54, + 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20, 14, 2, 7, 1, 54, + 54, 55, 51, 21, 35, 53, 6, 6, 7, 19, 35, 1, 51, 1, 226, 197, 1, 40, 26, 22, + 24, 18, 23, 16, 15, 32, 12, 32, 17, 52, 26, 47, 47, 26, 38, 40, 13, 254, 180, 35, + 47, 24, 41, 59, 20, 33, 18, 46, 70, 1, 123, 70, 50, 50, 3, 17, 3, 32, 35, 16, + 15, 14, 25, 14, 17, 16, 13, 13, 40, 19, 19, 50, 32, 26, 37, 28, 24, 12, 1, 255, + 14, 28, 23, 250, 168, 11, 14, 6, 253, 255, 2, 107, 0, 4, 0, 21, 0, 0, 1, 223, + 2, 121, 0, 12, 0, 55, 0, 60, 0, 64, 1, 7, 185, 0, 50, 255, 224, 180, 20, 21, + 0, 76, 50, 184, 255, 232, 179, 19, 0, 77, 50, 184, 255, 224, 179, 18, 0, 77, 50, 184, + 255, 232, 180, 16, 17, 0, 76, 50, 184, 255, 216, 179, 15, 0, 77, 50, 184, 255, 232, 179, + 14, 0, 77, 46, 184, 255, 232, 180, 14, 16, 0, 76, 45, 184, 255, 216, 179, 14, 0, 77, + 43, 184, 255, 248, 179, 15, 0, 77, 41, 184, 255, 224, 179, 24, 0, 77, 41, 184, 255, 232, + 179, 23, 0, 77, 41, 184, 255, 216, 179, 22, 0, 77, 41, 184, 255, 224, 180, 19, 21, 0, + 76, 41, 184, 255, 232, 64, 72, 17, 18, 0, 76, 61, 63, 62, 63, 156, 64, 61, 20, 64, + 61, 64, 62, 46, 28, 43, 43, 19, 48, 55, 35, 35, 55, 23, 23, 55, 12, 56, 56, 1, + 4, 7, 7, 59, 9, 3, 63, 64, 89, 61, 62, 103, 46, 23, 24, 24, 38, 13, 13, 16, + 53, 100, 34, 34, 31, 38, 99, 4, 8, 9, 1, 59, 59, 6, 56, 12, 101, 6, 103, 0, + 63, 63, 51, 18, 57, 47, 51, 51, 205, 50, 63, 205, 50, 47, 63, 205, 50, 47, 17, 57, + 47, 205, 57, 63, 51, 63, 51, 1, 47, 205, 50, 57, 47, 205, 50, 51, 17, 51, 47, 51, + 47, 17, 51, 47, 16, 221, 205, 51, 47, 205, 50, 47, 47, 135, 43, 135, 125, 196, 49, 48, + 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 21, 51, 21, 35, + 21, 35, 53, 35, 53, 54, 54, 55, 37, 22, 22, 51, 50, 54, 53, 52, 38, 35, 35, 53, + 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 6, + 7, 22, 21, 20, 14, 2, 35, 34, 39, 5, 6, 6, 7, 51, 5, 35, 1, 51, 1, 185, + 36, 36, 59, 129, 26, 48, 31, 254, 190, 11, 33, 20, 22, 33, 38, 38, 12, 22, 26, 28, + 25, 14, 14, 36, 12, 19, 15, 49, 26, 17, 32, 25, 15, 15, 16, 43, 12, 26, 42, 30, + 46, 37, 1, 105, 21, 34, 15, 70, 254, 230, 70, 1, 123, 70, 250, 152, 50, 48, 48, 41, + 46, 75, 40, 180, 5, 8, 13, 17, 21, 12, 50, 11, 18, 15, 9, 10, 5, 43, 9, 13, + 7, 15, 25, 18, 15, 30, 11, 20, 45, 14, 29, 23, 14, 14, 174, 27, 56, 26, 98, 2, + 107, 0, 2, 0, 92, 255, 86, 1, 154, 1, 209, 0, 29, 0, 41, 0, 132, 64, 16, 27, + 24, 18, 0, 77, 20, 32, 10, 0, 77, 20, 40, 9, 0, 77, 5, 184, 255, 232, 179, 16, + 0, 77, 5, 184, 255, 224, 179, 15, 0, 77, 5, 184, 255, 224, 179, 13, 0, 77, 5, 184, + 255, 232, 179, 12, 0, 77, 3, 184, 255, 232, 64, 10, 12, 13, 0, 76, 15, 24, 18, 0, + 77, 8, 184, 255, 232, 64, 27, 17, 0, 77, 8, 149, 22, 22, 29, 145, 0, 14, 14, 0, + 0, 33, 148, 39, 39, 43, 42, 29, 36, 154, 30, 11, 155, 17, 0, 47, 237, 47, 253, 206, + 1, 17, 18, 57, 47, 237, 50, 47, 51, 47, 16, 237, 50, 47, 237, 43, 49, 48, 0, 43, + 1, 43, 43, 43, 43, 43, 43, 43, 43, 37, 23, 20, 14, 4, 21, 20, 22, 51, 50, 55, + 23, 6, 6, 35, 34, 46, 2, 53, 52, 62, 4, 53, 55, 50, 22, 21, 20, 6, 35, 34, + 38, 53, 52, 54, 1, 61, 1, 21, 31, 37, 31, 21, 48, 46, 59, 57, 23, 30, 76, 43, + 51, 65, 38, 15, 23, 34, 40, 34, 23, 28, 28, 39, 39, 28, 27, 40, 40, 243, 20, 29, + 44, 38, 33, 34, 38, 23, 38, 46, 30, 64, 16, 20, 28, 43, 52, 24, 30, 46, 39, 36, + 40, 45, 30, 222, 37, 31, 31, 36, 36, 31, 31, 37, 255, 255, 0, 9, 0, 0, 1, 235, + 3, 62, 2, 38, 0, 36, 0, 0, 1, 7, 0, 67, 0, 4, 0, 137, 0, 16, 64, 11, + 2, 0, 26, 24, 4, 15, 80, 2, 9, 25, 79, 43, 43, 52, 0, 0, 255, 255, 0, 9, + 0, 0, 1, 235, 3, 62, 2, 38, 0, 36, 0, 0, 1, 7, 0, 143, 255, 253, 0, 137, + 0, 16, 64, 11, 2, 1, 25, 23, 4, 15, 80, 2, 9, 24, 79, 43, 43, 52, 0, 0, + 255, 255, 0, 9, 0, 0, 1, 235, 3, 58, 2, 38, 0, 36, 0, 0, 1, 7, 0, 105, + 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 26, 26, 9, 10, 80, 2, 9, 25, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 9, 0, 0, 1, 235, 3, 28, 2, 38, 0, 36, 0, 0, + 1, 7, 0, 117, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 37, 23, 4, 15, 80, 2, + 9, 36, 79, 43, 43, 52, 0, 0, 255, 255, 0, 9, 0, 0, 1, 235, 3, 26, 2, 38, + 0, 36, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 44, 64, 34, 16, 32, 16, 38, + 2, 48, 38, 1, 48, 32, 64, 32, 80, 32, 144, 32, 192, 32, 208, 32, 224, 32, 240, 32, + 8, 32, 3, 9, 35, 79, 2, 9, 23, 79, 43, 43, 1, 16, 93, 93, 113, 49, 0, 0, + 0, 3, 0, 9, 0, 0, 1, 235, 2, 237, 0, 26, 0, 33, 0, 45, 0, 159, 185, 0, + 17, 255, 216, 64, 93, 8, 15, 0, 76, 13, 40, 8, 15, 0, 76, 18, 157, 34, 12, 157, + 40, 40, 2, 30, 28, 27, 9, 3, 27, 3, 120, 4, 9, 20, 4, 4, 9, 1, 31, 27, + 21, 0, 27, 0, 120, 26, 21, 20, 26, 21, 27, 4, 143, 26, 159, 26, 2, 79, 26, 95, + 26, 127, 26, 175, 26, 191, 26, 239, 26, 255, 26, 7, 26, 47, 4, 46, 15, 163, 37, 43, + 1, 2, 121, 31, 30, 30, 4, 27, 21, 9, 43, 65, 0, 26, 66, 3, 4, 66, 0, 63, + 51, 63, 51, 63, 51, 51, 51, 18, 57, 47, 51, 237, 50, 16, 222, 237, 1, 16, 198, 16, + 222, 93, 113, 17, 57, 135, 43, 135, 125, 196, 16, 196, 196, 135, 24, 16, 43, 135, 125, 196, + 16, 14, 196, 5, 196, 196, 1, 51, 24, 47, 237, 222, 237, 49, 48, 43, 43, 33, 39, 35, + 7, 35, 62, 3, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 30, 3, 23, + 3, 6, 6, 7, 51, 38, 38, 55, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, + 148, 37, 238, 36, 84, 16, 43, 48, 51, 26, 14, 20, 55, 37, 37, 55, 19, 14, 25, 51, + 47, 41, 17, 242, 23, 54, 24, 200, 23, 53, 26, 27, 20, 20, 27, 27, 20, 20, 27, 162, + 162, 63, 155, 159, 150, 59, 12, 37, 23, 42, 49, 49, 42, 22, 38, 11, 59, 151, 160, 155, + 62, 2, 35, 63, 166, 88, 90, 167, 171, 23, 26, 26, 23, 23, 26, 26, 0, 2, 0, 27, + 0, 0, 1, 226, 2, 107, 0, 17, 0, 22, 0, 106, 64, 56, 19, 21, 2, 3, 7, 3, + 18, 3, 120, 4, 7, 20, 4, 4, 7, 18, 11, 15, 115, 0, 0, 4, 13, 13, 9, 9, + 16, 24, 4, 23, 14, 121, 11, 1, 2, 121, 21, 22, 21, 11, 21, 11, 21, 15, 18, 10, + 121, 7, 65, 3, 4, 66, 15, 121, 0, 66, 0, 63, 237, 63, 51, 63, 237, 50, 18, 57, + 57, 47, 47, 17, 51, 16, 237, 50, 16, 237, 1, 16, 198, 16, 206, 50, 47, 50, 47, 17, + 57, 47, 237, 50, 51, 135, 16, 43, 135, 125, 196, 16, 196, 196, 14, 196, 49, 48, 33, 53, + 35, 7, 35, 54, 18, 55, 51, 21, 35, 21, 51, 21, 35, 21, 51, 21, 3, 6, 6, 7, + 51, 1, 7, 118, 37, 81, 45, 92, 55, 250, 128, 105, 105, 141, 219, 28, 51, 21, 100, 162, + 162, 174, 1, 49, 140, 70, 190, 70, 219, 70, 2, 54, 88, 174, 74, 0, 1, 0, 46, 255, + 87, 1, 204, 2, 121, 0, 55, 1, 58, 185, 0, 54, 255, 200, 179, 16, 0, 77, 54, 184, + 255, 208, 179, 15, 0, 77, 53, 184, 255, 232, 180, 17, 18, 0, 76, 47, 184, 255, 240, 179, + 18, 0, 77, 47, 184, 255, 232, 179, 17, 0, 77, 47, 184, 255, 232, 180, 11, 12, 0, 76, + 42, 184, 255, 248, 179, 16, 0, 77, 41, 184, 255, 232, 180, 17, 18, 0, 76, 41, 184, 255, + 240, 179, 12, 0, 77, 41, 184, 255, 232, 179, 11, 0, 77, 36, 184, 255, 232, 179, 18, 0, + 77, 36, 184, 255, 224, 179, 17, 0, 77, 35, 184, 255, 224, 180, 15, 16, 0, 76, 35, 184, + 255, 200, 64, 21, 14, 0, 77, 26, 8, 17, 18, 0, 76, 25, 40, 13, 14, 0, 76, 25, + 16, 8, 0, 77, 5, 184, 255, 232, 180, 20, 21, 0, 76, 5, 184, 255, 216, 179, 19, 0, + 77, 5, 184, 255, 224, 179, 18, 0, 77, 5, 184, 255, 232, 180, 16, 17, 0, 76, 5, 184, + 255, 208, 179, 15, 0, 77, 2, 184, 255, 200, 180, 19, 20, 0, 76, 2, 184, 255, 208, 179, + 18, 0, 77, 2, 184, 255, 216, 64, 50, 15, 17, 0, 76, 17, 48, 3, 64, 3, 80, 3, + 3, 3, 55, 0, 23, 11, 20, 20, 28, 36, 36, 53, 57, 44, 118, 28, 56, 0, 20, 20, + 56, 15, 64, 8, 56, 128, 52, 52, 49, 124, 23, 55, 70, 37, 37, 39, 124, 33, 69, 0, + 63, 237, 50, 47, 63, 51, 237, 50, 47, 26, 16, 220, 26, 205, 18, 57, 47, 205, 1, 16, + 214, 237, 16, 206, 50, 47, 17, 57, 47, 204, 51, 221, 50, 213, 93, 205, 49, 48, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 53, + 52, 39, 39, 54, 54, 55, 46, 3, 53, 52, 62, 2, 51, 50, 22, 23, 7, 38, 35, 34, + 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 7, 1, 61, 26, 23, 9, 21, 35, + 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 12, 6, 49, 83, 60, 33, 41, 70, + 94, 53, 37, 77, 37, 24, 66, 58, 41, 65, 46, 25, 27, 48, 67, 39, 29, 64, 34, 22, + 58, 74, 33, 12, 30, 29, 10, 23, 19, 13, 7, 5, 51, 4, 5, 20, 20, 11, 2, 11, + 27, 13, 5, 43, 80, 116, 77, 79, 120, 82, 42, 20, 23, 68, 38, 35, 66, 92, 57, 64, + 94, 62, 30, 15, 19, 68, 33, 5, 255, 255, 0, 91, 0, 0, 1, 204, 3, 62, 2, 38, + 0, 40, 0, 0, 1, 7, 0, 67, 0, 14, 0, 137, 0, 19, 185, 0, 1, 255, 241, 64, + 9, 15, 13, 0, 10, 80, 1, 1, 14, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 91, + 0, 0, 1, 204, 3, 62, 2, 38, 0, 40, 0, 0, 1, 7, 0, 143, 0, 26, 0, 137, + 0, 16, 64, 11, 1, 4, 14, 12, 0, 10, 80, 1, 1, 13, 79, 43, 43, 52, 0, 0, + 255, 255, 0, 91, 0, 0, 1, 204, 3, 58, 2, 38, 0, 40, 0, 0, 1, 7, 0, 105, + 0, 18, 0, 139, 0, 19, 185, 0, 1, 255, 249, 64, 9, 17, 13, 0, 10, 80, 1, 1, + 14, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 91, 0, 0, 1, 204, 3, 26, 2, 38, + 0, 40, 0, 0, 1, 7, 0, 131, 0, 18, 0, 139, 0, 26, 177, 2, 1, 184, 255, 249, + 64, 13, 14, 32, 0, 10, 80, 2, 1, 24, 79, 1, 1, 12, 79, 43, 43, 43, 52, 52, + 255, 255, 0, 89, 0, 0, 1, 155, 3, 62, 2, 38, 0, 44, 0, 0, 1, 7, 0, 67, + 0, 5, 0, 137, 0, 16, 64, 11, 1, 1, 15, 13, 4, 2, 80, 1, 9, 14, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, 62, 2, 38, 0, 44, 0, 0, + 1, 7, 0, 143, 0, 10, 0, 137, 0, 16, 64, 11, 1, 14, 14, 12, 4, 2, 80, 1, + 9, 13, 79, 43, 43, 52, 0, 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, 58, 2, 38, + 0, 44, 0, 0, 1, 7, 0, 105, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 17, 13, + 4, 2, 80, 1, 9, 14, 79, 43, 43, 52, 0, 0, 255, 255, 0, 89, 0, 0, 1, 155, + 3, 26, 2, 38, 0, 44, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 30, 64, 21, + 16, 21, 80, 21, 80, 27, 111, 27, 4, 175, 27, 1, 21, 2, 9, 24, 79, 1, 9, 12, + 79, 43, 43, 1, 16, 93, 113, 49, 0, 2, 0, 18, 255, 251, 1, 204, 2, 113, 0, 18, + 0, 36, 0, 96, 64, 21, 29, 40, 18, 0, 77, 29, 32, 17, 0, 77, 24, 24, 18, 0, + 77, 24, 32, 17, 0, 77, 16, 184, 255, 232, 179, 13, 0, 77, 3, 184, 255, 232, 64, 30, + 13, 0, 77, 27, 118, 0, 38, 35, 33, 19, 115, 11, 9, 7, 37, 36, 8, 121, 33, 11, + 11, 22, 30, 124, 14, 65, 22, 124, 5, 66, 0, 63, 237, 63, 237, 18, 57, 47, 51, 237, + 50, 1, 16, 214, 206, 51, 253, 50, 206, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, + 1, 20, 14, 2, 35, 34, 39, 17, 35, 53, 51, 53, 54, 51, 50, 30, 2, 1, 22, 22, + 51, 50, 62, 2, 53, 52, 38, 35, 34, 7, 21, 51, 21, 35, 1, 204, 41, 71, 98, 57, + 61, 61, 53, 53, 61, 61, 57, 98, 71, 41, 254, 206, 11, 24, 11, 42, 65, 45, 24, 91, + 88, 25, 18, 98, 98, 1, 54, 86, 120, 75, 34, 15, 1, 25, 64, 255, 15, 34, 76, 120, + 254, 186, 2, 1, 27, 59, 93, 65, 126, 118, 3, 196, 64, 255, 255, 0, 55, 0, 0, 1, + 189, 3, 28, 2, 38, 0, 49, 0, 0, 1, 7, 0, 117, 0, 0, 0, 139, 0, 16, 64, + 11, 1, 0, 32, 18, 7, 16, 80, 1, 8, 31, 79, 43, 43, 52, 0, 0, 255, 255, 0, + 29, 255, 243, 1, 216, 3, 62, 2, 38, 0, 50, 0, 0, 1, 7, 0, 67, 0, 5, 0, + 137, 0, 16, 64, 11, 2, 1, 35, 33, 0, 9, 80, 2, 4, 34, 79, 43, 43, 52, 0, + 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 62, 2, 38, 0, 50, 0, 0, 1, 7, 0, + 143, 0, 9, 0, 137, 0, 16, 64, 11, 2, 12, 34, 32, 0, 9, 80, 2, 4, 33, 79, + 43, 43, 52, 0, 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 58, 2, 38, 0, 50, 0, + 0, 1, 7, 0, 105, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 37, 33, 0, 9, 80, + 2, 4, 34, 79, 43, 43, 52, 0, 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 28, 2, + 38, 0, 50, 0, 0, 1, 7, 0, 117, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 46, + 32, 0, 9, 80, 2, 4, 45, 79, 43, 43, 52, 0, 0, 255, 255, 0, 29, 255, 243, 1, + 216, 3, 26, 2, 38, 0, 50, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, + 16, 3, 2, 0, 34, 52, 0, 9, 80, 3, 4, 44, 79, 2, 4, 32, 79, 43, 43, 43, + 52, 52, 0, 0, 0, 0, 1, 0, 70, 0, 82, 1, 174, 1, 187, 0, 11, 0, 45, 64, + 16, 8, 0, 9, 11, 6, 2, 5, 3, 9, 5, 8, 6, 11, 3, 0, 2, 0, 47, 51, + 25, 197, 50, 24, 220, 50, 25, 197, 50, 1, 24, 47, 51, 25, 197, 50, 24, 220, 50, 25, + 197, 50, 49, 48, 37, 39, 7, 39, 55, 39, 55, 23, 55, 23, 7, 23, 1, 124, 130, 130, + 50, 130, 130, 50, 130, 130, 50, 130, 130, 82, 131, 131, 50, 131, 130, 50, 130, 130, 50, 130, + 131, 0, 3, 0, 29, 255, 223, 1, 216, 2, 139, 0, 25, 0, 35, 0, 45, 1, 103, 185, + 0, 44, 255, 240, 179, 12, 0, 77, 44, 184, 255, 248, 64, 44, 11, 0, 77, 41, 56, 17, + 0, 77, 40, 24, 19, 0, 77, 40, 24, 15, 0, 77, 40, 16, 14, 0, 77, 39, 32, 20, + 0, 77, 35, 8, 17, 0, 77, 34, 16, 12, 0, 77, 34, 8, 11, 0, 77, 30, 184, 255, + 224, 179, 19, 0, 77, 29, 184, 255, 216, 64, 29, 20, 0, 77, 28, 16, 17, 0, 77, 24, + 40, 13, 0, 77, 24, 32, 12, 0, 77, 23, 32, 17, 0, 77, 23, 24, 14, 0, 77, 16, + 184, 255, 232, 179, 13, 0, 77, 11, 184, 255, 208, 179, 15, 0, 77, 11, 184, 255, 224, 179, + 14, 0, 77, 11, 184, 255, 216, 64, 9, 13, 0, 77, 3, 16, 13, 0, 77, 40, 184, 255, + 208, 179, 12, 0, 77, 39, 184, 255, 208, 179, 14, 0, 77, 39, 184, 255, 232, 179, 12, 0, + 77, 39, 184, 255, 216, 179, 11, 0, 77, 38, 184, 255, 184, 64, 9, 18, 0, 77, 29, 64, + 17, 0, 77, 29, 184, 255, 208, 64, 29, 12, 0, 77, 28, 32, 18, 0, 77, 28, 64, 17, + 0, 77, 28, 40, 16, 0, 77, 23, 40, 17, 0, 77, 11, 32, 17, 0, 77, 7, 184, 255, + 200, 179, 12, 0, 77, 6, 184, 255, 168, 64, 49, 16, 0, 77, 10, 29, 30, 20, 21, 9, + 21, 7, 40, 39, 23, 22, 21, 8, 22, 8, 120, 9, 21, 20, 9, 21, 9, 9, 26, 118, + 13, 47, 22, 22, 36, 118, 0, 46, 22, 21, 33, 124, 18, 70, 9, 8, 43, 124, 5, 69, + 0, 63, 237, 198, 50, 63, 237, 198, 50, 1, 16, 214, 237, 51, 47, 16, 222, 237, 51, 47, + 135, 43, 135, 125, 196, 16, 14, 196, 196, 196, 196, 16, 135, 14, 196, 196, 196, 196, 49, 48, + 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 52, + 62, 2, 51, 50, 23, 55, 23, 7, 22, 22, 21, 20, 14, 2, 35, 34, 39, 7, 39, 55, + 38, 38, 37, 52, 38, 39, 3, 22, 22, 51, 50, 54, 37, 20, 22, 23, 19, 38, 38, 35, + 34, 6, 29, 32, 58, 81, 50, 56, 47, 21, 62, 30, 31, 35, 33, 58, 82, 49, 62, 46, + 23, 61, 32, 30, 31, 1, 103, 11, 12, 191, 15, 39, 20, 70, 70, 254, 237, 6, 11, 190, + 15, 36, 21, 69, 66, 1, 54, 83, 122, 79, 39, 27, 45, 31, 61, 41, 123, 85, 83, 122, + 80, 38, 28, 48, 31, 66, 40, 121, 85, 50, 84, 31, 254, 118, 13, 10, 130, 122, 48, 83, + 31, 1, 136, 12, 10, 130, 255, 255, 0, 48, 255, 243, 1, 196, 3, 62, 2, 38, 0, 56, + 0, 0, 1, 7, 0, 67, 0, 0, 0, 137, 0, 19, 185, 0, 1, 255, 253, 64, 9, 29, + 27, 4, 20, 80, 1, 6, 28, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 48, 255, 243, + 1, 196, 3, 62, 2, 38, 0, 56, 0, 0, 1, 7, 0, 143, 0, 9, 0, 137, 0, 16, + 64, 11, 1, 13, 28, 26, 4, 20, 80, 1, 6, 27, 79, 43, 43, 52, 0, 0, 255, 255, + 0, 48, 255, 243, 1, 196, 3, 58, 2, 38, 0, 56, 0, 0, 1, 7, 0, 105, 0, 0, + 0, 139, 0, 16, 64, 11, 1, 0, 31, 27, 4, 20, 80, 1, 6, 28, 79, 43, 43, 52, + 0, 0, 255, 255, 0, 48, 255, 243, 1, 196, 3, 26, 2, 38, 0, 56, 0, 0, 1, 7, + 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, 28, 46, 4, 20, 80, 2, 6, + 38, 79, 1, 6, 26, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 13, 0, 0, + 1, 232, 3, 62, 2, 38, 0, 60, 0, 0, 1, 7, 0, 143, 0, 9, 0, 137, 0, 16, + 64, 11, 1, 12, 19, 17, 4, 12, 80, 1, 4, 18, 79, 43, 43, 52, 0, 0, 0, 2, + 0, 73, 0, 0, 1, 199, 2, 107, 0, 15, 0, 30, 0, 111, 64, 21, 28, 16, 16, 0, + 77, 24, 40, 16, 0, 77, 24, 24, 15, 0, 77, 24, 16, 14, 0, 77, 9, 184, 255, 232, + 179, 8, 0, 77, 6, 184, 255, 232, 179, 18, 0, 77, 6, 184, 255, 240, 179, 17, 0, 77, + 6, 184, 255, 224, 64, 31, 8, 0, 77, 26, 118, 7, 32, 20, 2, 13, 115, 0, 15, 16, + 15, 32, 15, 3, 8, 15, 31, 20, 121, 13, 15, 66, 19, 121, 2, 0, 65, 0, 63, 221, + 237, 63, 221, 237, 1, 16, 214, 94, 93, 237, 50, 50, 16, 222, 237, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 19, 51, 21, 54, 51, 50, 22, 21, 20, 14, 2, 35, 35, 21, 35, + 19, 34, 34, 7, 21, 51, 50, 62, 2, 53, 52, 46, 2, 73, 82, 31, 30, 115, 124, 35, + 64, 91, 55, 55, 82, 156, 25, 35, 14, 58, 35, 58, 42, 23, 25, 40, 51, 2, 107, 103, + 3, 91, 88, 59, 80, 51, 22, 128, 1, 191, 1, 249, 13, 32, 53, 41, 33, 43, 25, 10, + 0, 1, 0, 71, 255, 245, 1, 220, 2, 181, 0, 63, 1, 53, 185, 0, 62, 255, 240, 179, + 13, 0, 77, 62, 184, 255, 216, 179, 12, 0, 77, 62, 184, 255, 224, 180, 10, 11, 0, 76, + 62, 184, 255, 216, 179, 9, 0, 77, 62, 184, 255, 224, 64, 14, 8, 0, 77, 57, 8, 12, + 0, 77, 57, 16, 10, 0, 77, 49, 184, 255, 232, 179, 18, 0, 77, 49, 184, 255, 224, 64, + 24, 17, 0, 77, 42, 24, 13, 0, 77, 37, 16, 13, 0, 77, 36, 16, 11, 0, 77, 35, + 16, 13, 0, 77, 16, 184, 255, 232, 180, 12, 14, 0, 76, 16, 184, 255, 224, 179, 11, 0, + 77, 16, 184, 255, 216, 179, 10, 0, 77, 16, 184, 255, 224, 180, 8, 9, 0, 76, 13, 184, + 255, 224, 179, 17, 0, 77, 13, 184, 255, 216, 179, 16, 0, 77, 13, 184, 255, 248, 179, 14, + 0, 77, 13, 184, 255, 232, 179, 13, 0, 77, 12, 184, 255, 224, 180, 17, 18, 0, 76, 12, + 184, 255, 208, 179, 16, 0, 77, 3, 184, 255, 224, 64, 65, 11, 0, 77, 23, 23, 39, 130, + 8, 64, 9, 0, 77, 47, 8, 63, 8, 111, 8, 3, 8, 8, 15, 45, 130, 0, 64, 8, + 11, 72, 0, 0, 32, 130, 15, 65, 52, 127, 0, 53, 1, 8, 53, 64, 0, 45, 39, 8, + 15, 32, 45, 59, 32, 8, 8, 29, 48, 136, 59, 77, 53, 74, 29, 136, 18, 81, 0, 63, + 237, 63, 63, 237, 18, 57, 47, 57, 18, 57, 17, 51, 17, 51, 17, 51, 1, 16, 214, 94, + 93, 237, 16, 222, 237, 51, 47, 43, 237, 17, 51, 47, 93, 43, 237, 50, 47, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 1, 20, 14, 2, 7, 6, 6, 21, 20, 30, 4, 21, 20, 6, 35, 34, 46, + 2, 39, 55, 30, 3, 51, 50, 54, 53, 52, 46, 4, 53, 52, 54, 55, 54, 54, 53, 52, + 38, 35, 34, 6, 21, 17, 35, 17, 52, 62, 2, 51, 50, 30, 2, 1, 144, 15, 22, 28, + 12, 14, 13, 27, 40, 46, 40, 27, 82, 87, 16, 33, 29, 21, 5, 14, 5, 20, 26, 30, + 15, 41, 38, 27, 40, 48, 40, 27, 30, 23, 21, 33, 36, 40, 42, 45, 83, 23, 42, 61, + 38, 46, 64, 38, 17, 2, 38, 24, 40, 33, 28, 13, 16, 21, 15, 20, 26, 23, 24, 35, + 51, 39, 76, 77, 6, 8, 8, 3, 73, 3, 9, 9, 6, 40, 38, 27, 35, 27, 23, 29, + 39, 30, 36, 48, 23, 20, 40, 23, 38, 45, 68, 60, 254, 19, 1, 239, 44, 73, 52, 29, + 23, 40, 52, 255, 255, 0, 58, 255, 245, 1, 176, 2, 181, 2, 38, 0, 68, 0, 0, 1, + 6, 0, 67, 0, 0, 0, 16, 64, 11, 2, 1, 52, 50, 28, 19, 80, 2, 15, 51, 79, + 43, 43, 52, 255, 255, 0, 58, 255, 245, 1, 176, 2, 181, 2, 38, 0, 68, 0, 0, 1, + 6, 0, 143, 18, 0, 0, 16, 64, 11, 2, 27, 51, 49, 28, 19, 80, 2, 15, 50, 79, + 43, 43, 52, 255, 255, 0, 58, 255, 245, 1, 176, 2, 175, 2, 38, 0, 68, 0, 0, 1, + 6, 0, 105, 9, 0, 0, 16, 64, 11, 2, 14, 54, 50, 28, 19, 80, 2, 15, 51, 79, + 43, 43, 52, 255, 255, 0, 58, 255, 245, 1, 176, 2, 145, 2, 38, 0, 68, 0, 0, 1, + 6, 0, 117, 0, 0, 0, 16, 64, 11, 2, 5, 63, 49, 28, 19, 80, 2, 15, 62, 79, + 43, 43, 52, 255, 255, 0, 58, 255, 245, 1, 176, 2, 143, 2, 38, 0, 68, 0, 0, 1, + 6, 0, 131, 0, 0, 0, 23, 64, 16, 3, 2, 5, 51, 69, 28, 19, 80, 3, 15, 61, + 79, 2, 15, 49, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, + 184, 2, 38, 0, 68, 0, 0, 1, 6, 1, 99, 0, 0, 0, 20, 64, 13, 3, 2, 5, + 54, 49, 28, 19, 80, 3, 2, 15, 52, 79, 43, 52, 43, 52, 52, 0, 3, 0, 31, 255, + 245, 1, 222, 1, 219, 0, 52, 0, 66, 0, 75, 0, 187, 64, 43, 37, 24, 16, 0, 77, + 37, 16, 13, 14, 0, 76, 36, 24, 11, 12, 0, 76, 32, 32, 13, 0, 77, 32, 16, 12, + 0, 77, 32, 32, 11, 0, 77, 31, 16, 14, 0, 77, 25, 24, 18, 0, 77, 14, 184, 255, + 232, 179, 17, 0, 77, 7, 184, 255, 232, 64, 25, 11, 12, 0, 76, 75, 3, 12, 130, 62, + 42, 26, 65, 65, 34, 67, 130, 11, 18, 18, 11, 77, 56, 130, 34, 50, 184, 255, 192, 64, + 40, 19, 22, 72, 50, 50, 34, 76, 53, 137, 39, 12, 134, 75, 39, 75, 39, 75, 0, 59, + 136, 26, 29, 81, 17, 17, 15, 136, 23, 81, 3, 72, 136, 6, 80, 49, 49, 46, 136, 0, + 80, 0, 63, 237, 50, 47, 63, 237, 50, 63, 237, 50, 47, 63, 51, 237, 17, 57, 57, 47, + 47, 16, 237, 16, 237, 1, 16, 198, 50, 47, 43, 16, 237, 16, 206, 50, 47, 16, 237, 17, + 57, 47, 51, 51, 51, 237, 50, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 19, 50, 22, 23, 54, 54, 51, 50, 21, 20, 20, 7, 35, 20, 22, 51, 50, 55, 23, 14, + 3, 35, 34, 38, 39, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 53, + 52, 38, 35, 34, 6, 7, 39, 54, 54, 19, 34, 6, 21, 20, 22, 51, 50, 54, 55, 38, + 38, 39, 38, 55, 52, 46, 2, 35, 34, 6, 21, 150, 44, 56, 15, 16, 42, 26, 129, 1, + 185, 52, 41, 32, 37, 11, 4, 19, 24, 28, 13, 33, 51, 19, 27, 56, 29, 33, 49, 33, + 16, 17, 34, 49, 33, 12, 29, 12, 36, 38, 22, 42, 8, 9, 9, 53, 48, 33, 33, 31, + 32, 17, 39, 14, 11, 12, 2, 20, 209, 9, 15, 18, 8, 23, 36, 1, 219, 34, 30, 30, + 34, 236, 5, 17, 7, 72, 75, 22, 70, 4, 9, 8, 5, 23, 20, 23, 20, 25, 40, 51, + 27, 31, 55, 41, 23, 5, 6, 23, 47, 64, 12, 6, 68, 8, 12, 254, 252, 42, 36, 30, + 48, 16, 13, 25, 59, 32, 11, 62, 37, 49, 30, 12, 58, 70, 0, 1, 0, 49, 255, 87, + 1, 195, 1, 219, 0, 55, 0, 140, 185, 0, 46, 255, 224, 180, 13, 14, 0, 76, 40, 184, + 255, 224, 179, 14, 0, 77, 40, 184, 255, 232, 64, 9, 13, 0, 77, 24, 24, 8, 0, 77, + 5, 184, 255, 224, 180, 15, 21, 0, 76, 2, 184, 255, 216, 64, 48, 15, 21, 0, 76, 17, + 64, 3, 80, 3, 2, 3, 55, 0, 23, 11, 20, 20, 26, 34, 34, 52, 57, 43, 130, 26, + 56, 0, 20, 20, 56, 15, 64, 8, 56, 128, 51, 51, 48, 136, 23, 55, 81, 35, 35, 38, + 136, 31, 80, 0, 63, 237, 50, 47, 63, 51, 237, 50, 47, 26, 16, 220, 26, 205, 18, 57, + 47, 205, 1, 16, 214, 237, 16, 206, 50, 47, 17, 57, 47, 204, 51, 205, 50, 212, 93, 205, + 49, 48, 43, 43, 43, 43, 43, 43, 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, + 22, 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 38, 38, 53, 52, 62, 2, 51, 50, 22, + 23, 7, 38, 38, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 6, 7, + 1, 38, 26, 23, 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 13, + 7, 91, 110, 40, 70, 93, 53, 34, 67, 38, 19, 33, 55, 28, 36, 64, 47, 28, 26, 47, + 66, 40, 32, 59, 35, 12, 34, 70, 42, 33, 12, 30, 29, 10, 23, 19, 13, 7, 5, 51, + 4, 5, 20, 20, 11, 2, 11, 30, 14, 13, 119, 106, 63, 92, 60, 29, 9, 12, 71, 12, + 7, 19, 41, 65, 46, 44, 63, 41, 20, 7, 12, 69, 12, 11, 1, 255, 255, 0, 40, 255, + 245, 1, 199, 2, 181, 2, 38, 0, 72, 0, 0, 1, 6, 0, 67, 0, 0, 0, 19, 185, + 0, 2, 255, 255, 64, 9, 37, 35, 19, 2, 80, 2, 0, 36, 79, 43, 43, 52, 0, 255, + 255, 0, 40, 255, 245, 1, 199, 2, 181, 2, 38, 0, 72, 0, 0, 1, 6, 0, 143, 18, + 0, 0, 16, 64, 11, 2, 24, 36, 34, 19, 2, 80, 2, 0, 35, 79, 43, 43, 52, 255, + 255, 0, 40, 255, 245, 1, 199, 2, 175, 2, 38, 0, 72, 0, 0, 1, 6, 0, 105, 13, + 0, 0, 16, 64, 11, 2, 15, 39, 35, 19, 2, 80, 2, 0, 36, 79, 43, 43, 52, 255, + 255, 0, 40, 255, 245, 1, 199, 2, 143, 2, 38, 0, 72, 0, 0, 1, 6, 0, 131, 13, + 0, 0, 23, 64, 16, 3, 2, 15, 36, 54, 19, 2, 80, 3, 0, 46, 79, 2, 0, 34, + 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 181, 2, 38, 1, + 12, 0, 0, 1, 6, 0, 67, 221, 0, 0, 19, 185, 0, 1, 255, 216, 64, 9, 25, 23, + 1, 11, 80, 1, 2, 24, 79, 43, 43, 52, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, + 181, 2, 38, 1, 12, 0, 0, 1, 6, 0, 143, 230, 0, 0, 19, 185, 0, 1, 255, 232, + 64, 9, 24, 22, 1, 11, 80, 1, 2, 23, 79, 43, 43, 52, 0, 255, 255, 0, 54, 255, + 245, 1, 194, 2, 175, 2, 38, 1, 12, 0, 0, 1, 6, 0, 105, 221, 0, 0, 19, 185, + 0, 1, 255, 219, 64, 9, 27, 23, 1, 11, 80, 1, 2, 24, 79, 43, 43, 52, 0, 255, + 255, 0, 54, 255, 245, 1, 194, 2, 143, 2, 38, 1, 12, 0, 0, 1, 6, 0, 131, 221, + 0, 0, 26, 177, 2, 1, 184, 255, 219, 64, 13, 24, 42, 1, 11, 80, 2, 2, 34, 79, + 1, 2, 22, 79, 43, 43, 43, 52, 52, 0, 0, 0, 2, 0, 55, 255, 245, 1, 204, 2, + 181, 0, 34, 0, 53, 0, 208, 64, 16, 51, 24, 15, 0, 77, 51, 16, 14, 0, 77, 51, + 8, 13, 0, 77, 47, 184, 255, 240, 179, 15, 0, 77, 42, 184, 255, 232, 64, 40, 15, 0, + 77, 16, 24, 16, 0, 77, 16, 24, 10, 0, 77, 15, 40, 8, 9, 0, 76, 12, 32, 9, + 0, 77, 12, 24, 8, 0, 77, 11, 32, 16, 0, 77, 11, 16, 10, 0, 77, 7, 184, 255, + 240, 179, 16, 0, 77, 7, 184, 255, 240, 64, 62, 8, 9, 0, 76, 33, 1, 30, 4, 30, + 29, 0, 0, 25, 25, 26, 23, 29, 29, 20, 35, 130, 4, 55, 44, 130, 14, 54, 23, 1, + 24, 0, 34, 33, 26, 34, 25, 24, 41, 136, 17, 0, 17, 16, 17, 32, 17, 3, 8, 34, + 24, 17, 17, 24, 34, 3, 29, 30, 77, 49, 136, 9, 81, 0, 63, 237, 63, 51, 23, 57, + 47, 47, 47, 94, 93, 16, 237, 16, 205, 17, 57, 57, 16, 205, 17, 57, 57, 1, 16, 214, + 237, 16, 222, 237, 50, 50, 47, 57, 57, 51, 47, 51, 47, 17, 51, 17, 18, 57, 57, 49, + 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 7, 22, 22, 21, + 20, 14, 2, 35, 34, 46, 2, 53, 52, 54, 51, 50, 22, 23, 38, 38, 39, 7, 39, 55, + 38, 38, 39, 55, 22, 22, 23, 55, 3, 52, 38, 53, 38, 38, 35, 34, 6, 21, 20, 30, + 2, 51, 50, 62, 2, 1, 204, 96, 29, 39, 17, 44, 76, 59, 45, 68, 45, 23, 96, 83, + 38, 58, 14, 5, 28, 20, 107, 21, 92, 15, 31, 23, 46, 20, 51, 26, 110, 88, 1, 25, + 57, 23, 56, 52, 13, 25, 37, 24, 34, 45, 26, 10, 2, 75, 33, 49, 141, 90, 49, 101, + 83, 52, 38, 62, 76, 39, 114, 120, 29, 13, 36, 66, 31, 37, 56, 32, 17, 31, 17, 48, + 13, 43, 32, 38, 254, 140, 22, 18, 8, 27, 22, 90, 71, 29, 54, 41, 24, 37, 60, 76, + 255, 255, 0, 71, 0, 0, 1, 176, 2, 145, 2, 38, 0, 81, 0, 0, 1, 6, 0, 117, + 0, 0, 0, 19, 185, 0, 1, 255, 255, 64, 9, 34, 20, 0, 5, 80, 1, 2, 33, 79, + 43, 43, 52, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 181, 2, 38, 0, 82, 0, 0, + 1, 6, 0, 67, 9, 0, 0, 16, 64, 11, 2, 5, 35, 33, 9, 0, 80, 2, 14, 34, + 79, 43, 43, 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 181, 2, 38, 0, 82, 0, 0, + 1, 6, 0, 143, 9, 0, 0, 16, 64, 11, 2, 13, 34, 32, 9, 0, 80, 2, 14, 33, + 79, 43, 43, 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 175, 2, 38, 0, 82, 0, 0, + 1, 6, 0, 105, 0, 0, 0, 16, 64, 11, 2, 0, 37, 33, 9, 0, 80, 2, 14, 34, + 79, 43, 43, 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 145, 2, 38, 0, 82, 0, 0, + 1, 6, 0, 117, 0, 0, 0, 16, 64, 11, 2, 0, 46, 32, 9, 0, 80, 2, 14, 45, + 79, 43, 43, 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 143, 2, 38, 0, 82, 0, 0, + 1, 6, 0, 131, 0, 0, 0, 23, 64, 16, 3, 2, 0, 34, 52, 9, 0, 80, 3, 14, + 44, 79, 2, 14, 32, 79, 43, 43, 43, 52, 52, 0, 0, 3, 0, 46, 0, 36, 1, 199, + 1, 233, 0, 3, 0, 15, 0, 27, 0, 38, 64, 16, 16, 2, 4, 22, 3, 10, 10, 29, + 28, 7, 13, 3, 25, 19, 0, 3, 0, 47, 221, 222, 205, 16, 222, 205, 1, 17, 18, 57, + 47, 206, 51, 221, 206, 51, 49, 48, 19, 33, 21, 33, 5, 20, 6, 35, 34, 38, 53, 52, + 54, 51, 50, 22, 17, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 46, 1, 153, 254, + 103, 1, 6, 32, 26, 27, 33, 33, 27, 26, 32, 32, 26, 27, 33, 33, 27, 26, 32, 1, + 42, 70, 132, 24, 36, 36, 24, 25, 37, 37, 1, 51, 24, 37, 37, 24, 25, 36, 36, 0, + 3, 0, 40, 255, 224, 1, 204, 1, 240, 0, 26, 0, 36, 0, 46, 0, 157, 185, 0, 45, + 255, 232, 180, 15, 16, 0, 76, 45, 184, 255, 240, 64, 15, 14, 0, 77, 35, 24, 15, 16, + 0, 76, 35, 16, 14, 0, 77, 30, 184, 255, 248, 179, 15, 0, 77, 20, 184, 255, 240, 64, + 64, 8, 0, 77, 7, 16, 8, 0, 77, 25, 31, 30, 14, 4, 13, 26, 1, 40, 41, 11, + 4, 12, 0, 12, 13, 13, 27, 130, 17, 48, 26, 0, 0, 37, 130, 4, 47, 31, 40, 30, + 41, 4, 44, 34, 136, 22, 0, 26, 26, 11, 14, 1, 25, 4, 9, 22, 81, 44, 136, 9, + 13, 12, 12, 9, 80, 0, 63, 51, 47, 51, 16, 237, 63, 18, 23, 57, 51, 47, 51, 16, + 237, 17, 23, 57, 1, 16, 214, 237, 51, 47, 51, 16, 222, 237, 51, 47, 51, 17, 18, 23, + 57, 17, 18, 23, 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 55, 55, 38, 38, 53, 52, + 62, 2, 51, 50, 23, 55, 23, 7, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 7, 1, + 52, 38, 39, 7, 22, 22, 51, 50, 54, 39, 20, 22, 23, 55, 38, 38, 35, 34, 6, 45, + 45, 23, 27, 31, 56, 77, 45, 69, 48, 42, 47, 46, 24, 27, 31, 56, 78, 46, 33, 58, + 25, 42, 1, 28, 7, 9, 181, 14, 36, 21, 58, 68, 250, 7, 9, 180, 14, 37, 21, 57, + 67, 4, 62, 32, 83, 51, 55, 90, 63, 35, 36, 57, 36, 63, 31, 83, 51, 55, 89, 64, + 35, 19, 17, 57, 1, 8, 28, 50, 20, 245, 12, 10, 91, 78, 31, 46, 20, 244, 12, 11, + 91, 255, 255, 0, 68, 255, 246, 1, 173, 2, 181, 2, 38, 0, 88, 0, 0, 1, 6, 0, + 67, 0, 0, 0, 19, 185, 0, 1, 255, 254, 64, 9, 25, 23, 7, 0, 80, 1, 9, 24, + 79, 43, 43, 52, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, 181, 2, 38, 0, 88, 0, + 0, 1, 6, 0, 143, 9, 0, 0, 16, 64, 11, 1, 14, 24, 22, 7, 0, 80, 1, 9, + 23, 79, 43, 43, 52, 255, 255, 0, 68, 255, 246, 1, 173, 2, 175, 2, 38, 0, 88, 0, + 0, 1, 6, 0, 105, 0, 0, 0, 16, 64, 11, 1, 1, 27, 23, 7, 0, 80, 1, 9, + 24, 79, 43, 43, 52, 255, 255, 0, 68, 255, 246, 1, 173, 2, 143, 2, 38, 0, 88, 0, + 0, 1, 6, 0, 131, 0, 0, 0, 23, 64, 16, 2, 1, 1, 24, 42, 7, 0, 80, 2, + 9, 34, 79, 1, 9, 22, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 36, 255, 88, 1, + 205, 2, 181, 2, 38, 0, 92, 0, 0, 1, 6, 0, 143, 15, 0, 0, 16, 64, 11, 1, + 20, 35, 33, 32, 21, 80, 1, 9, 34, 79, 43, 43, 52, 0, 2, 0, 71, 255, 91, 1, + 204, 2, 181, 0, 20, 0, 37, 0, 124, 64, 31, 35, 32, 16, 0, 77, 35, 24, 15, 0, + 77, 35, 16, 14, 0, 77, 24, 32, 16, 0, 77, 24, 40, 15, 0, 77, 24, 16, 14, 0, + 77, 19, 184, 255, 232, 180, 8, 10, 0, 76, 2, 184, 255, 232, 179, 10, 0, 77, 2, 184, + 255, 224, 179, 9, 0, 77, 2, 184, 255, 232, 64, 30, 8, 0, 77, 21, 130, 0, 39, 30, + 13, 8, 127, 0, 10, 1, 8, 10, 38, 26, 136, 16, 80, 11, 12, 77, 10, 75, 33, 136, + 5, 81, 0, 63, 237, 63, 63, 51, 63, 237, 1, 16, 214, 94, 93, 237, 50, 50, 16, 222, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, 14, 2, 35, 34, 38, + 39, 21, 35, 17, 55, 21, 54, 54, 51, 50, 30, 2, 7, 52, 46, 2, 35, 34, 6, 7, + 17, 22, 22, 51, 50, 62, 2, 1, 204, 27, 51, 74, 47, 37, 56, 14, 83, 83, 29, 54, + 26, 42, 72, 53, 30, 85, 18, 33, 45, 26, 26, 47, 26, 14, 54, 29, 33, 47, 30, 14, + 231, 53, 89, 64, 36, 18, 11, 183, 3, 76, 14, 246, 15, 13, 33, 63, 90, 58, 43, 65, + 42, 21, 18, 17, 254, 243, 13, 22, 26, 45, 61, 255, 255, 0, 36, 255, 88, 1, 205, 2, + 143, 2, 38, 0, 92, 0, 0, 1, 6, 0, 131, 15, 0, 0, 23, 64, 16, 2, 1, 16, + 35, 53, 32, 21, 80, 2, 9, 45, 79, 1, 9, 33, 79, 43, 43, 43, 52, 52, 0, 255, + 255, 0, 9, 0, 0, 1, 235, 3, 6, 2, 38, 0, 36, 0, 0, 1, 7, 0, 138, 0, + 0, 0, 139, 0, 16, 64, 11, 2, 0, 23, 24, 4, 15, 80, 2, 9, 25, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, 123, 2, 38, 0, 68, 0, 0, 1, + 6, 0, 138, 9, 0, 0, 16, 64, 11, 2, 14, 49, 50, 28, 19, 80, 2, 15, 51, 79, + 43, 43, 52, 255, 255, 0, 9, 0, 0, 1, 235, 3, 40, 2, 38, 0, 36, 0, 0, 1, + 7, 1, 97, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 27, 41, 4, 15, 80, 2, 9, + 23, 79, 43, 43, 52, 0, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, 157, 2, 38, 0, + 68, 0, 0, 1, 6, 1, 97, 0, 0, 0, 16, 64, 11, 2, 5, 53, 67, 28, 19, 80, + 2, 15, 49, 79, 43, 43, 52, 0, 2, 0, 9, 255, 89, 1, 240, 2, 107, 0, 34, 0, + 41, 0, 117, 64, 61, 22, 38, 36, 35, 29, 23, 35, 23, 120, 24, 29, 20, 24, 24, 29, + 21, 39, 35, 30, 20, 35, 20, 120, 0, 30, 20, 0, 0, 30, 35, 0, 24, 17, 12, 6, + 0, 43, 24, 42, 8, 64, 14, 42, 128, 21, 22, 121, 39, 38, 38, 24, 35, 30, 29, 65, + 23, 24, 66, 20, 0, 68, 0, 63, 50, 63, 51, 63, 51, 51, 18, 57, 47, 51, 237, 50, + 26, 16, 220, 26, 205, 1, 16, 198, 16, 222, 222, 204, 205, 17, 18, 57, 135, 16, 43, 135, + 125, 196, 16, 196, 196, 135, 24, 16, 43, 135, 125, 196, 16, 14, 196, 5, 196, 196, 49, 48, + 37, 6, 6, 7, 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, 52, 54, + 55, 39, 35, 7, 35, 62, 3, 55, 51, 30, 3, 3, 6, 6, 7, 51, 38, 38, 1, 234, + 14, 21, 11, 13, 14, 36, 6, 20, 10, 7, 23, 36, 51, 44, 40, 23, 38, 238, 36, 84, + 17, 42, 49, 54, 30, 102, 29, 53, 47, 41, 224, 23, 54, 24, 200, 23, 53, 2, 8, 18, + 11, 14, 21, 13, 26, 3, 3, 54, 10, 34, 32, 29, 50, 19, 165, 162, 66, 154, 162, 163, + 74, 74, 162, 162, 153, 1, 223, 63, 166, 88, 90, 167, 0, 2, 0, 58, 255, 89, 1, 177, + 1, 219, 0, 52, 0, 67, 0, 154, 185, 0, 63, 255, 240, 179, 18, 0, 77, 63, 184, 255, + 232, 64, 26, 17, 0, 77, 44, 16, 17, 18, 0, 76, 35, 24, 11, 0, 77, 31, 24, 11, + 0, 77, 24, 24, 15, 17, 0, 76, 3, 184, 255, 224, 179, 12, 0, 77, 3, 184, 255, 232, + 180, 9, 11, 0, 76, 3, 184, 255, 224, 64, 46, 8, 0, 77, 57, 25, 41, 127, 5, 22, + 17, 11, 5, 69, 65, 130, 33, 50, 50, 33, 68, 13, 64, 19, 68, 128, 60, 137, 0, 38, + 16, 38, 2, 8, 38, 38, 0, 53, 136, 28, 81, 49, 49, 46, 136, 0, 80, 0, 63, 237, + 50, 47, 63, 237, 17, 57, 47, 94, 93, 237, 26, 16, 220, 26, 205, 1, 16, 198, 50, 47, + 16, 237, 16, 222, 220, 204, 205, 16, 237, 50, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 19, 50, 30, 2, 21, 17, 14, 3, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, + 38, 53, 52, 54, 55, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 23, 53, 52, + 46, 2, 35, 34, 6, 7, 39, 54, 54, 19, 50, 54, 55, 53, 38, 38, 35, 34, 14, 2, + 21, 20, 22, 247, 52, 71, 44, 18, 9, 26, 24, 18, 35, 6, 20, 11, 6, 22, 37, 51, + 47, 27, 27, 17, 37, 18, 38, 72, 56, 34, 35, 55, 71, 36, 49, 47, 9, 25, 43, 34, + 43, 64, 17, 10, 17, 79, 53, 31, 49, 16, 16, 45, 25, 23, 44, 34, 22, 61, 1, 219, + 26, 46, 66, 39, 254, 222, 6, 21, 25, 27, 12, 26, 3, 3, 54, 10, 36, 32, 21, 42, + 29, 2, 2, 13, 33, 58, 45, 40, 55, 34, 15, 11, 23, 21, 39, 32, 19, 12, 6, 68, + 8, 12, 254, 96, 4, 3, 138, 5, 6, 7, 18, 29, 22, 45, 35, 255, 255, 0, 46, 255, + 243, 1, 204, 3, 62, 2, 38, 0, 38, 0, 0, 1, 7, 0, 143, 0, 54, 0, 137, 0, + 16, 64, 11, 1, 55, 35, 33, 7, 0, 80, 1, 12, 34, 79, 43, 43, 52, 0, 0, 255, + 255, 0, 49, 255, 245, 1, 195, 2, 181, 2, 38, 0, 70, 0, 0, 1, 6, 0, 143, 45, + 0, 0, 16, 64, 11, 1, 49, 36, 34, 0, 26, 80, 1, 4, 35, 79, 43, 43, 52, 255, + 255, 0, 46, 255, 243, 1, 204, 3, 58, 2, 38, 0, 38, 0, 0, 1, 7, 0, 105, 0, + 54, 0, 139, 0, 16, 64, 11, 1, 51, 38, 34, 7, 0, 80, 1, 12, 35, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 49, 255, 245, 1, 195, 2, 175, 2, 38, 0, 70, 0, 0, 1, + 6, 0, 105, 50, 0, 0, 16, 64, 11, 1, 50, 39, 35, 0, 26, 80, 1, 4, 36, 79, + 43, 43, 52, 255, 255, 0, 46, 255, 243, 1, 204, 3, 34, 2, 38, 0, 38, 0, 0, 1, + 7, 1, 98, 0, 54, 0, 139, 0, 16, 64, 11, 1, 51, 35, 41, 7, 0, 80, 1, 12, + 33, 79, 43, 43, 52, 0, 0, 255, 255, 0, 49, 255, 245, 1, 195, 2, 151, 2, 38, 0, + 70, 0, 0, 1, 6, 1, 98, 54, 0, 0, 16, 64, 11, 1, 54, 36, 42, 0, 26, 80, + 1, 4, 34, 79, 43, 43, 52, 255, 255, 0, 46, 255, 243, 1, 204, 3, 61, 2, 38, 0, + 38, 0, 0, 1, 7, 1, 95, 0, 54, 0, 139, 0, 16, 64, 11, 1, 51, 33, 37, 7, + 0, 80, 1, 12, 38, 79, 43, 43, 52, 0, 0, 255, 255, 0, 49, 255, 245, 1, 195, 2, + 178, 2, 38, 0, 70, 0, 0, 1, 6, 1, 95, 50, 0, 0, 16, 64, 11, 1, 50, 34, + 38, 0, 26, 80, 1, 4, 39, 79, 43, 43, 52, 255, 255, 0, 54, 255, 251, 1, 204, 3, + 61, 2, 38, 0, 39, 0, 0, 1, 7, 1, 95, 255, 221, 0, 139, 0, 19, 185, 0, 2, + 255, 214, 64, 9, 29, 33, 7, 0, 80, 2, 9, 34, 79, 43, 43, 52, 0, 0, 0, 0, + 3, 0, 20, 255, 245, 1, 244, 2, 181, 0, 14, 0, 33, 0, 37, 0, 106, 64, 18, 28, + 32, 15, 16, 0, 76, 27, 16, 10, 0, 77, 27, 24, 8, 9, 0, 76, 10, 184, 255, 216, + 179, 14, 0, 77, 10, 184, 255, 240, 179, 13, 0, 77, 5, 184, 255, 240, 64, 35, 14, 0, + 77, 34, 37, 33, 14, 127, 17, 39, 8, 130, 25, 64, 9, 12, 72, 25, 38, 36, 37, 77, + 0, 3, 136, 33, 30, 80, 11, 136, 20, 81, 15, 16, 77, 0, 63, 51, 63, 237, 63, 51, + 237, 50, 63, 205, 1, 16, 214, 43, 237, 16, 222, 237, 50, 222, 205, 49, 48, 43, 43, 43, + 43, 43, 43, 1, 38, 38, 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 17, 55, 17, + 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 55, 7, 35, 53, 1, 25, + 11, 44, 25, 26, 36, 23, 11, 60, 48, 25, 35, 8, 82, 24, 75, 51, 44, 71, 50, 28, + 23, 44, 64, 40, 32, 46, 12, 219, 24, 55, 1, 110, 13, 23, 26, 45, 63, 36, 81, 88, + 6, 3, 2, 95, 14, 253, 88, 8, 16, 34, 63, 90, 56, 54, 89, 64, 36, 18, 10, 246, + 199, 199, 255, 255, 0, 18, 255, 251, 1, 204, 2, 113, 2, 6, 0, 171, 0, 0, 0, 2, + 0, 40, 255, 245, 1, 224, 2, 181, 0, 26, 0, 41, 0, 126, 185, 0, 37, 255, 232, 179, + 14, 0, 77, 37, 184, 255, 240, 179, 13, 0, 77, 32, 184, 255, 240, 64, 66, 14, 0, 77, + 21, 24, 15, 16, 0, 76, 20, 16, 9, 0, 77, 20, 32, 8, 0, 77, 16, 32, 8, 0, + 77, 27, 3, 1, 0, 127, 7, 6, 9, 43, 35, 130, 18, 42, 9, 0, 134, 6, 3, 3, + 5, 30, 136, 65, 23, 1, 0, 23, 16, 23, 32, 23, 3, 8, 23, 80, 38, 136, 13, 81, + 4, 5, 77, 0, 63, 51, 63, 237, 63, 94, 93, 93, 237, 18, 57, 47, 51, 237, 50, 1, + 16, 214, 237, 16, 222, 50, 205, 253, 205, 51, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 1, 35, 53, 51, 53, 55, 21, 51, 21, 35, 17, 6, 6, 35, 34, 46, 2, 53, 52, 62, + 2, 51, 50, 22, 23, 21, 38, 38, 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 1, + 76, 177, 177, 82, 66, 66, 26, 80, 54, 48, 79, 56, 31, 26, 50, 71, 44, 35, 52, 14, + 14, 49, 28, 31, 44, 28, 13, 72, 57, 29, 40, 9, 2, 36, 62, 69, 14, 83, 62, 253, + 233, 8, 16, 34, 63, 90, 56, 54, 89, 64, 36, 18, 10, 81, 13, 23, 26, 45, 63, 36, + 81, 88, 6, 3, 255, 255, 0, 91, 0, 0, 1, 204, 3, 6, 2, 38, 0, 40, 0, 0, + 1, 7, 0, 138, 0, 18, 0, 139, 0, 19, 185, 0, 1, 255, 249, 64, 9, 12, 13, 0, + 10, 80, 1, 1, 14, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 40, 255, 245, 1, 199, + 2, 123, 2, 38, 0, 72, 0, 0, 1, 6, 0, 138, 9, 0, 0, 16, 64, 11, 2, 11, + 34, 35, 19, 2, 80, 2, 0, 36, 79, 43, 43, 52, 255, 255, 0, 91, 0, 0, 1, 204, + 3, 40, 2, 38, 0, 40, 0, 0, 1, 7, 1, 97, 0, 18, 0, 139, 0, 19, 185, 0, + 1, 255, 249, 64, 9, 16, 30, 0, 10, 80, 1, 1, 12, 79, 43, 43, 52, 0, 0, 0, + 255, 255, 0, 40, 255, 245, 1, 199, 2, 157, 2, 38, 0, 72, 0, 0, 1, 6, 1, 97, + 9, 0, 0, 16, 64, 11, 2, 11, 38, 52, 19, 2, 80, 2, 0, 34, 79, 43, 43, 52, + 255, 255, 0, 91, 0, 0, 1, 204, 3, 34, 2, 38, 0, 40, 0, 0, 1, 7, 1, 98, + 0, 22, 0, 139, 0, 19, 185, 0, 1, 255, 253, 64, 9, 14, 20, 0, 10, 80, 1, 1, + 12, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 40, 255, 245, 1, 199, 2, 151, 2, 38, + 0, 72, 0, 0, 1, 6, 1, 98, 9, 0, 0, 16, 64, 11, 2, 11, 36, 42, 19, 2, + 80, 2, 0, 34, 79, 43, 43, 52, 0, 1, 0, 91, 255, 89, 1, 207, 2, 107, 0, 33, + 0, 74, 64, 37, 16, 11, 5, 33, 30, 30, 26, 26, 22, 33, 35, 28, 32, 115, 23, 34, + 31, 121, 28, 28, 32, 27, 121, 24, 65, 32, 32, 33, 121, 23, 7, 64, 13, 128, 0, 23, + 66, 0, 63, 51, 26, 220, 26, 205, 16, 237, 50, 47, 63, 237, 18, 57, 47, 237, 1, 16, + 214, 237, 50, 16, 206, 50, 50, 47, 50, 47, 16, 220, 204, 205, 49, 48, 37, 6, 7, 6, + 6, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, 52, 54, 55, 54, 54, 55, 33, + 17, 33, 21, 33, 21, 51, 21, 35, 21, 33, 1, 204, 25, 23, 13, 14, 36, 6, 20, 10, + 6, 22, 36, 51, 44, 21, 16, 8, 14, 5, 254, 229, 1, 91, 254, 247, 232, 232, 1, 31, + 2, 14, 23, 14, 21, 13, 26, 3, 3, 54, 10, 34, 32, 21, 38, 16, 8, 14, 4, 2, + 107, 70, 190, 70, 219, 0, 2, 0, 40, 255, 89, 1, 199, 1, 219, 0, 46, 0, 55, 0, + 183, 185, 0, 52, 255, 232, 64, 29, 14, 0, 77, 45, 16, 16, 0, 77, 45, 24, 15, 0, + 77, 45, 16, 8, 0, 77, 40, 16, 16, 0, 77, 39, 32, 16, 0, 77, 7, 184, 255, 232, + 179, 14, 0, 77, 7, 184, 255, 224, 180, 12, 13, 0, 76, 2, 184, 255, 224, 179, 17, 0, + 77, 2, 184, 255, 224, 179, 9, 0, 77, 2, 184, 255, 232, 179, 8, 0, 77, 1, 184, 255, + 208, 179, 18, 0, 77, 1, 184, 255, 232, 179, 17, 0, 77, 1, 184, 255, 216, 64, 39, 15, + 16, 0, 76, 29, 24, 18, 34, 12, 12, 47, 130, 3, 57, 55, 5, 130, 42, 56, 20, 64, + 26, 56, 128, 5, 134, 55, 55, 0, 11, 11, 8, 136, 37, 81, 50, 136, 0, 80, 0, 63, + 237, 63, 237, 50, 47, 17, 57, 47, 237, 26, 16, 220, 26, 205, 1, 16, 214, 237, 50, 16, + 222, 237, 51, 47, 51, 222, 204, 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 1, 50, 22, 21, 21, 33, 22, 22, 51, 50, 54, 55, 23, 6, 6, 7, + 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, 52, 54, 55, 54, 55, 6, + 6, 35, 34, 46, 2, 53, 52, 62, 2, 23, 54, 38, 35, 34, 14, 2, 7, 1, 3, 94, + 102, 254, 180, 5, 85, 77, 44, 62, 16, 11, 10, 35, 15, 13, 15, 36, 6, 20, 10, 6, + 22, 36, 51, 48, 23, 16, 9, 9, 8, 16, 8, 60, 91, 60, 30, 38, 62, 78, 153, 1, + 63, 51, 29, 47, 34, 20, 3, 1, 219, 117, 119, 29, 72, 75, 14, 8, 70, 8, 25, 17, + 14, 21, 13, 26, 3, 3, 54, 10, 36, 32, 21, 36, 16, 10, 7, 1, 1, 37, 64, 89, + 52, 62, 92, 60, 30, 198, 57, 71, 22, 36, 46, 24, 255, 255, 0, 91, 0, 0, 1, 204, + 3, 61, 2, 38, 0, 40, 0, 0, 1, 7, 1, 95, 0, 27, 0, 139, 0, 16, 64, 11, + 1, 1, 12, 16, 0, 10, 80, 1, 1, 17, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, + 255, 245, 1, 199, 2, 178, 2, 38, 0, 72, 0, 0, 1, 6, 1, 95, 9, 0, 0, 16, + 64, 11, 2, 11, 34, 38, 19, 2, 80, 2, 0, 39, 79, 43, 43, 52, 255, 255, 0, 46, + 255, 243, 1, 199, 3, 58, 2, 38, 0, 42, 0, 0, 1, 7, 0, 105, 0, 45, 0, 139, + 0, 16, 64, 11, 1, 44, 43, 39, 9, 1, 80, 1, 14, 40, 79, 43, 43, 52, 0, 0, + 255, 255, 0, 40, 255, 88, 1, 173, 2, 175, 2, 38, 0, 74, 0, 0, 1, 6, 0, 105, + 0, 0, 0, 16, 64, 11, 2, 15, 51, 47, 7, 16, 80, 2, 12, 48, 79, 43, 43, 52, + 255, 255, 0, 46, 255, 243, 1, 199, 3, 40, 2, 38, 0, 42, 0, 0, 1, 7, 1, 97, + 0, 54, 0, 139, 0, 16, 64, 11, 1, 53, 42, 56, 9, 1, 80, 1, 14, 38, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 40, 255, 88, 1, 173, 2, 157, 2, 38, 0, 74, 0, 0, + 1, 6, 1, 97, 0, 0, 0, 16, 64, 11, 2, 15, 50, 64, 7, 16, 80, 2, 12, 46, + 79, 43, 43, 52, 255, 255, 0, 46, 255, 243, 1, 199, 3, 34, 2, 38, 0, 42, 0, 0, + 1, 7, 1, 98, 0, 45, 0, 139, 0, 16, 64, 11, 1, 44, 40, 46, 9, 1, 80, 1, + 14, 38, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, 255, 88, 1, 173, 2, 151, 2, 38, + 0, 74, 0, 0, 1, 6, 1, 98, 0, 0, 0, 16, 64, 11, 2, 15, 48, 54, 7, 16, + 80, 2, 12, 46, 79, 43, 43, 52, 255, 255, 0, 46, 255, 86, 1, 199, 2, 121, 2, 38, + 0, 42, 0, 0, 1, 6, 1, 195, 18, 0, 0, 10, 182, 1, 13, 47, 41, 9, 1, 80, + 43, 52, 0, 0, 255, 255, 0, 40, 255, 88, 1, 173, 2, 185, 2, 38, 0, 74, 0, 0, + 1, 6, 1, 196, 22, 0, 0, 16, 64, 11, 2, 37, 48, 56, 7, 16, 80, 2, 12, 46, + 79, 43, 43, 52, 255, 255, 0, 45, 0, 0, 1, 199, 3, 58, 2, 38, 0, 43, 0, 0, + 1, 7, 0, 105, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 17, 13, 7, 1, 80, 1, + 0, 14, 79, 43, 43, 52, 0, 0, 0, 2, 0, 44, 0, 0, 1, 176, 3, 62, 0, 21, + 0, 27, 0, 138, 64, 21, 16, 32, 18, 0, 77, 16, 40, 17, 0, 77, 16, 24, 16, 0, + 77, 16, 16, 15, 0, 77, 9, 184, 255, 216, 179, 8, 0, 77, 8, 184, 255, 232, 179, 10, + 0, 77, 8, 184, 255, 216, 64, 46, 9, 0, 77, 13, 127, 12, 29, 64, 26, 27, 24, 23, + 96, 22, 25, 25, 28, 3, 21, 127, 0, 0, 1, 8, 0, 28, 17, 136, 6, 80, 27, 23, + 64, 25, 22, 24, 128, 26, 26, 24, 1, 2, 77, 13, 0, 74, 0, 63, 50, 63, 51, 206, + 50, 47, 26, 16, 205, 50, 26, 205, 50, 63, 237, 1, 16, 214, 94, 93, 237, 50, 17, 51, + 25, 47, 51, 26, 205, 50, 205, 50, 26, 24, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 51, 17, 55, 21, 54, 54, 51, 50, 30, 2, 21, 17, 35, 53, 52, 38, 35, 34, + 6, 7, 17, 17, 23, 7, 39, 7, 39, 71, 83, 20, 50, 24, 53, 71, 42, 18, 82, 48, + 62, 26, 49, 11, 110, 26, 84, 84, 26, 2, 157, 14, 226, 8, 9, 31, 56, 78, 47, 254, + 250, 244, 86, 71, 11, 5, 254, 127, 3, 62, 85, 40, 55, 55, 40, 0, 2, 0, 18, 0, + 0, 1, 226, 2, 107, 0, 19, 0, 23, 0, 85, 64, 44, 23, 14, 2, 115, 19, 17, 1, + 25, 22, 13, 5, 115, 10, 8, 0, 6, 1, 6, 24, 21, 0, 7, 10, 17, 13, 10, 4, + 121, 22, 0, 22, 1, 8, 10, 22, 10, 22, 6, 15, 11, 65, 2, 6, 66, 0, 63, 51, + 63, 51, 18, 57, 57, 47, 47, 94, 93, 16, 237, 17, 51, 51, 16, 205, 50, 50, 1, 16, + 214, 93, 206, 51, 237, 50, 50, 16, 222, 50, 206, 237, 50, 50, 49, 48, 1, 17, 35, 17, + 35, 17, 35, 17, 35, 53, 51, 53, 51, 21, 51, 53, 51, 21, 51, 21, 35, 35, 21, 51, + 1, 173, 83, 192, 83, 53, 53, 83, 192, 83, 53, 136, 192, 192, 1, 212, 254, 44, 1, 32, + 254, 224, 1, 212, 61, 90, 90, 90, 90, 61, 110, 0, 1, 0, 20, 0, 0, 1, 176, 2, + 181, 0, 29, 0, 135, 182, 21, 24, 15, 16, 0, 76, 14, 184, 255, 216, 179, 18, 0, 77, + 14, 184, 255, 240, 179, 17, 0, 77, 14, 184, 255, 216, 179, 9, 0, 77, 14, 184, 255, 224, + 179, 8, 0, 77, 13, 184, 255, 232, 179, 18, 0, 77, 13, 184, 255, 224, 64, 45, 10, 0, + 77, 18, 127, 17, 31, 8, 6, 4, 26, 127, 29, 1, 0, 27, 1, 27, 30, 18, 27, 74, + 7, 28, 4, 1, 1, 3, 22, 136, 0, 11, 16, 11, 32, 11, 64, 11, 4, 8, 11, 80, + 2, 3, 77, 0, 63, 51, 63, 94, 93, 237, 18, 57, 47, 51, 205, 50, 63, 51, 1, 16, + 214, 93, 50, 206, 253, 50, 204, 51, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 19, 51, 53, 55, 21, 51, 21, 35, 21, 54, 54, 51, 50, 30, 2, 21, 17, 35, 53, 52, + 38, 35, 34, 6, 7, 17, 35, 17, 35, 20, 66, 82, 162, 162, 19, 49, 22, 49, 67, 40, + 18, 82, 45, 55, 23, 49, 10, 82, 66, 2, 98, 69, 14, 83, 62, 91, 8, 9, 31, 56, + 78, 47, 254, 250, 244, 86, 71, 11, 5, 254, 127, 2, 36, 255, 255, 0, 89, 0, 0, 1, + 155, 3, 28, 2, 38, 0, 44, 0, 0, 1, 7, 0, 117, 0, 0, 0, 139, 0, 16, 64, + 11, 1, 0, 26, 12, 4, 2, 80, 1, 9, 25, 79, 43, 43, 52, 0, 0, 255, 255, 0, + 54, 255, 245, 1, 194, 2, 145, 2, 38, 1, 12, 0, 0, 1, 6, 0, 117, 221, 0, 0, + 19, 185, 0, 1, 255, 219, 64, 9, 36, 22, 1, 11, 80, 1, 2, 35, 79, 43, 43, 52, + 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, 6, 2, 38, 0, 44, 0, 0, 1, 7, 0, + 138, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 12, 13, 4, 2, 80, 1, 9, 14, 79, + 43, 43, 52, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 123, 2, 38, 1, 12, 0, + 0, 1, 6, 0, 138, 221, 0, 0, 19, 185, 0, 1, 255, 219, 64, 9, 22, 23, 1, 11, + 80, 1, 2, 24, 79, 43, 43, 52, 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, 40, 2, + 38, 0, 44, 0, 0, 1, 7, 1, 97, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 16, + 30, 4, 2, 80, 1, 9, 12, 79, 43, 43, 52, 0, 0, 255, 255, 0, 54, 255, 245, 1, + 194, 2, 157, 2, 38, 1, 12, 0, 0, 1, 6, 1, 97, 221, 0, 0, 19, 185, 0, 1, + 255, 219, 64, 9, 26, 40, 1, 11, 80, 1, 2, 22, 79, 43, 43, 52, 0, 0, 1, 0, + 89, 255, 89, 1, 155, 2, 107, 0, 33, 0, 65, 64, 32, 30, 27, 28, 25, 20, 15, 9, + 33, 2, 4, 1, 115, 28, 28, 35, 34, 11, 64, 17, 34, 128, 0, 29, 121, 31, 65, 1, + 28, 121, 4, 25, 66, 0, 63, 51, 237, 50, 63, 237, 50, 26, 16, 220, 26, 205, 1, 17, + 18, 57, 47, 253, 50, 205, 50, 220, 204, 205, 50, 16, 205, 50, 49, 48, 1, 17, 51, 21, + 35, 6, 7, 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, 52, 54, 55, + 54, 55, 35, 53, 51, 17, 35, 53, 33, 21, 1, 35, 120, 119, 16, 23, 13, 16, 36, 6, + 20, 10, 7, 23, 36, 51, 47, 22, 16, 13, 11, 119, 120, 120, 1, 66, 2, 37, 254, 33, + 70, 12, 23, 14, 21, 13, 26, 3, 3, 54, 10, 36, 32, 21, 37, 17, 16, 8, 70, 1, + 223, 70, 70, 0, 2, 0, 54, 255, 89, 1, 194, 2, 158, 0, 39, 0, 51, 0, 72, 64, + 38, 37, 24, 9, 13, 0, 76, 49, 43, 43, 39, 28, 23, 17, 34, 11, 4, 127, 1, 39, + 39, 53, 52, 19, 64, 25, 52, 128, 11, 7, 136, 34, 81, 46, 40, 0, 133, 3, 73, 0, + 63, 237, 222, 205, 63, 237, 51, 26, 16, 220, 26, 205, 1, 17, 18, 57, 47, 206, 253, 220, + 50, 222, 204, 205, 17, 51, 47, 205, 49, 48, 43, 19, 35, 53, 51, 17, 20, 22, 51, 50, + 54, 55, 23, 6, 6, 7, 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, + 52, 54, 55, 54, 54, 55, 34, 46, 2, 53, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, + 20, 6, 188, 134, 216, 38, 38, 29, 49, 14, 12, 30, 23, 7, 13, 15, 35, 6, 21, 10, + 6, 22, 37, 51, 47, 24, 16, 4, 8, 4, 44, 58, 35, 14, 21, 26, 38, 38, 26, 27, + 37, 37, 1, 139, 69, 254, 227, 69, 47, 14, 8, 70, 21, 21, 8, 14, 21, 13, 26, 3, + 3, 54, 10, 36, 32, 21, 37, 17, 3, 8, 2, 24, 48, 71, 47, 1, 101, 36, 31, 31, + 36, 36, 31, 31, 36, 255, 255, 0, 89, 0, 0, 1, 155, 3, 34, 2, 38, 0, 44, 0, + 0, 1, 7, 1, 98, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 14, 20, 4, 2, 80, + 1, 9, 12, 79, 43, 43, 52, 0, 0, 0, 1, 0, 54, 255, 245, 1, 194, 1, 208, 0, + 21, 0, 40, 64, 22, 19, 32, 9, 13, 0, 76, 11, 4, 127, 1, 21, 21, 23, 22, 7, + 136, 16, 81, 0, 133, 3, 73, 0, 63, 237, 63, 237, 1, 17, 18, 57, 47, 206, 253, 204, + 49, 48, 43, 19, 35, 53, 51, 17, 20, 22, 51, 50, 54, 55, 23, 14, 3, 35, 34, 46, + 2, 53, 188, 134, 216, 38, 38, 29, 49, 14, 12, 6, 22, 29, 35, 19, 44, 58, 35, 14, + 1, 139, 69, 254, 227, 69, 47, 14, 8, 70, 3, 9, 8, 6, 24, 48, 71, 47, 255, 255, + 0, 54, 255, 245, 1, 194, 2, 158, 2, 6, 0, 76, 0, 0, 0, 2, 0, 42, 255, 243, + 1, 215, 2, 107, 0, 3, 0, 19, 0, 40, 64, 20, 11, 11, 0, 18, 115, 5, 21, 0, + 115, 1, 20, 15, 124, 8, 70, 19, 2, 65, 1, 66, 0, 63, 63, 51, 63, 237, 1, 16, + 214, 237, 16, 222, 237, 17, 57, 47, 49, 48, 51, 35, 17, 51, 33, 17, 20, 6, 35, 34, + 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, 124, 82, 82, 1, 91, 87, 75, 35, 70, 27, + 33, 17, 47, 34, 39, 41, 2, 107, 254, 64, 98, 86, 25, 25, 67, 19, 27, 51, 63, 1, + 191, 0, 4, 0, 89, 255, 89, 1, 156, 2, 151, 0, 3, 0, 19, 0, 31, 0, 43, 0, + 71, 64, 39, 29, 131, 23, 23, 14, 127, 17, 45, 41, 131, 35, 35, 0, 7, 7, 3, 127, + 0, 0, 1, 8, 0, 44, 26, 138, 20, 15, 73, 11, 136, 4, 75, 38, 138, 32, 1, 73, + 0, 74, 0, 63, 63, 222, 237, 63, 237, 63, 222, 237, 1, 16, 214, 94, 93, 237, 51, 47, + 17, 51, 47, 237, 16, 222, 237, 50, 47, 237, 49, 48, 51, 17, 51, 17, 23, 34, 38, 39, + 55, 22, 22, 51, 50, 54, 53, 17, 51, 17, 20, 6, 19, 34, 38, 53, 52, 54, 51, 50, + 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 108, 82, 44, 11, + 34, 11, 10, 9, 23, 10, 44, 37, 82, 81, 40, 25, 35, 35, 25, 25, 35, 35, 228, 25, + 35, 35, 25, 25, 35, 35, 1, 208, 254, 48, 167, 5, 5, 68, 3, 4, 53, 51, 1, 200, + 254, 57, 90, 86, 2, 197, 33, 28, 27, 33, 33, 27, 28, 33, 33, 28, 27, 33, 33, 27, + 28, 33, 255, 255, 0, 54, 255, 243, 1, 165, 3, 58, 2, 38, 0, 45, 0, 0, 1, 7, + 0, 105, 0, 50, 0, 139, 0, 16, 64, 11, 1, 63, 25, 21, 11, 2, 80, 1, 1, 22, + 79, 43, 43, 52, 0, 0, 255, 255, 0, 71, 255, 86, 1, 135, 2, 175, 2, 38, 1, 93, + 0, 0, 1, 6, 0, 105, 20, 0, 0, 16, 64, 11, 1, 42, 25, 21, 11, 2, 80, 1, + 1, 22, 79, 43, 43, 52, 255, 255, 0, 64, 255, 86, 1, 235, 2, 107, 2, 38, 0, 46, + 0, 0, 1, 6, 1, 195, 239, 0, 0, 13, 185, 0, 1, 255, 207, 180, 32, 26, 16, 8, + 80, 43, 52, 0, 0, 0, 255, 255, 0, 71, 255, 86, 1, 222, 2, 181, 2, 38, 0, 78, + 0, 0, 1, 6, 1, 195, 239, 0, 0, 13, 185, 0, 1, 255, 210, 180, 32, 26, 13, 5, + 80, 43, 52, 0, 0, 0, 0, 2, 0, 64, 0, 0, 2, 6, 2, 167, 0, 13, 0, 34, + 0, 105, 64, 55, 31, 14, 17, 14, 120, 34, 31, 20, 34, 34, 31, 23, 17, 22, 17, 120, + 26, 23, 20, 26, 26, 23, 6, 7, 13, 0, 0, 14, 14, 22, 36, 31, 26, 115, 28, 35, + 17, 31, 26, 17, 17, 28, 29, 65, 28, 66, 23, 22, 66, 12, 6, 6, 34, 14, 65, 0, + 63, 51, 51, 47, 205, 63, 51, 63, 63, 18, 57, 25, 47, 51, 51, 1, 24, 47, 16, 214, + 237, 50, 16, 206, 50, 47, 51, 47, 221, 222, 205, 135, 16, 43, 135, 125, 196, 135, 24, 16, + 43, 135, 4, 125, 196, 49, 48, 1, 52, 52, 55, 54, 54, 55, 23, 6, 6, 21, 20, 22, + 23, 39, 6, 6, 7, 30, 3, 23, 35, 38, 38, 39, 17, 35, 17, 51, 17, 54, 54, 55, + 1, 135, 1, 3, 34, 25, 64, 19, 19, 1, 1, 93, 38, 80, 51, 31, 52, 45, 42, 21, + 93, 34, 87, 51, 82, 82, 42, 77, 30, 1, 208, 11, 18, 9, 46, 91, 40, 21, 40, 79, + 35, 9, 20, 11, 155, 77, 135, 77, 30, 70, 81, 94, 55, 93, 158, 45, 254, 216, 2, 107, + 254, 236, 67, 146, 63, 0, 1, 0, 71, 0, 0, 1, 222, 1, 208, 0, 22, 0, 101, 64, + 54, 6, 0, 5, 0, 129, 11, 6, 20, 11, 0, 20, 11, 6, 19, 16, 0, 20, 19, 20, + 0, 129, 16, 19, 20, 16, 19, 0, 16, 20, 20, 5, 24, 16, 11, 127, 0, 13, 1, 8, + 13, 23, 11, 16, 5, 20, 73, 14, 15, 73, 13, 74, 5, 6, 74, 0, 63, 51, 63, 63, + 51, 63, 18, 57, 57, 1, 16, 214, 94, 93, 237, 50, 16, 206, 50, 47, 16, 193, 135, 4, + 43, 16, 0, 193, 135, 5, 125, 16, 196, 135, 8, 24, 16, 43, 135, 5, 125, 196, 49, 48, + 55, 30, 3, 23, 35, 46, 3, 39, 21, 35, 17, 51, 21, 54, 54, 55, 51, 6, 6, 238, + 27, 68, 67, 60, 18, 98, 19, 56, 63, 63, 25, 83, 83, 55, 110, 44, 97, 43, 121, 255, + 20, 61, 70, 73, 31, 31, 65, 60, 50, 17, 223, 1, 208, 194, 48, 95, 51, 51, 108, 255, + 255, 0, 91, 0, 0, 1, 204, 3, 62, 2, 38, 0, 47, 0, 0, 1, 7, 0, 143, 255, + 194, 0, 137, 0, 19, 185, 0, 1, 255, 173, 64, 9, 8, 6, 2, 0, 80, 1, 3, 7, + 79, 43, 43, 52, 0, 0, 0, 0, 2, 0, 54, 255, 245, 1, 194, 3, 62, 0, 23, 0, + 27, 0, 85, 64, 52, 3, 24, 14, 0, 77, 3, 32, 13, 0, 77, 3, 24, 12, 0, 77, + 3, 32, 11, 0, 77, 3, 32, 9, 0, 77, 24, 128, 26, 26, 9, 127, 6, 6, 7, 19, + 29, 7, 28, 24, 27, 26, 25, 6, 133, 9, 77, 18, 18, 15, 136, 0, 81, 0, 63, 237, + 50, 47, 63, 237, 222, 205, 221, 205, 1, 16, 198, 16, 206, 17, 57, 47, 237, 51, 47, 26, + 205, 49, 48, 43, 43, 43, 43, 43, 5, 34, 46, 2, 53, 17, 35, 53, 51, 17, 20, 30, + 2, 51, 50, 54, 55, 23, 14, 3, 3, 7, 39, 55, 1, 82, 44, 58, 34, 14, 134, 216, + 9, 19, 28, 19, 29, 50, 14, 12, 6, 22, 30, 35, 32, 150, 19, 144, 11, 24, 48, 71, + 47, 1, 173, 70, 254, 13, 35, 44, 27, 10, 14, 8, 70, 3, 9, 8, 6, 3, 8, 54, + 49, 70, 255, 255, 0, 91, 255, 86, 1, 204, 2, 107, 2, 38, 0, 47, 0, 0, 1, 6, + 1, 195, 0, 0, 0, 13, 185, 0, 1, 255, 226, 180, 15, 9, 2, 0, 80, 43, 52, 0, + 0, 0, 255, 255, 0, 54, 255, 86, 1, 194, 2, 176, 2, 38, 0, 79, 0, 0, 1, 6, + 1, 195, 54, 0, 0, 10, 182, 1, 47, 33, 27, 7, 19, 80, 43, 52, 0, 0, 255, 255, + 0, 91, 0, 0, 1, 204, 2, 108, 2, 38, 0, 47, 0, 0, 1, 6, 1, 194, 44, 183, + 0, 10, 182, 1, 18, 8, 6, 2, 0, 80, 43, 52, 0, 0, 255, 255, 0, 54, 255, 245, + 1, 194, 2, 181, 2, 38, 0, 79, 0, 0, 1, 7, 1, 194, 0, 131, 0, 0, 0, 10, + 182, 1, 128, 26, 24, 7, 19, 80, 43, 52, 255, 255, 0, 91, 0, 0, 1, 204, 2, 107, + 2, 38, 0, 47, 0, 0, 1, 7, 1, 98, 0, 113, 254, 234, 0, 10, 182, 1, 87, 8, + 14, 2, 0, 80, 43, 52, 255, 255, 0, 54, 255, 245, 2, 27, 2, 176, 2, 38, 0, 79, + 0, 0, 1, 7, 1, 98, 0, 229, 254, 234, 0, 10, 182, 1, 227, 26, 32, 7, 19, 80, + 43, 52, 0, 1, 0, 18, 0, 0, 1, 204, 2, 107, 0, 13, 0, 66, 64, 32, 0, 15, + 10, 11, 9, 12, 115, 4, 5, 6, 3, 14, 12, 3, 4, 11, 10, 9, 6, 10, 5, 4, + 10, 4, 10, 4, 7, 65, 13, 121, 2, 66, 0, 63, 237, 63, 57, 57, 47, 47, 16, 205, + 17, 57, 57, 16, 205, 17, 57, 57, 1, 16, 214, 50, 205, 50, 253, 50, 205, 50, 16, 206, + 49, 48, 37, 21, 33, 17, 7, 39, 55, 17, 51, 21, 55, 23, 7, 21, 1, 204, 254, 165, + 66, 29, 95, 83, 107, 28, 135, 70, 70, 1, 0, 34, 59, 49, 1, 33, 246, 55, 59, 70, + 229, 0, 1, 0, 54, 255, 245, 1, 194, 2, 176, 0, 31, 0, 101, 64, 58, 3, 24, 11, + 12, 0, 76, 3, 32, 9, 10, 0, 76, 2, 16, 13, 0, 77, 15, 16, 27, 14, 17, 127, + 7, 8, 11, 9, 0, 6, 1, 8, 6, 6, 33, 32, 17, 6, 7, 16, 15, 14, 9, 15, + 8, 7, 15, 7, 15, 7, 23, 10, 133, 13, 77, 23, 136, 0, 81, 0, 63, 237, 63, 237, + 18, 57, 57, 47, 47, 16, 205, 17, 57, 57, 16, 205, 17, 57, 57, 1, 17, 18, 57, 47, + 94, 93, 51, 204, 205, 50, 253, 50, 204, 205, 50, 49, 48, 43, 43, 43, 5, 34, 46, 2, + 53, 53, 7, 39, 55, 53, 35, 53, 51, 17, 55, 23, 7, 21, 20, 30, 2, 51, 50, 54, + 55, 23, 14, 3, 1, 82, 44, 58, 34, 14, 66, 28, 94, 134, 216, 78, 28, 106, 9, 19, + 28, 19, 29, 50, 14, 12, 6, 22, 30, 35, 11, 24, 48, 71, 47, 126, 34, 55, 48, 244, + 70, 254, 241, 40, 55, 55, 168, 35, 44, 27, 10, 14, 8, 70, 3, 9, 8, 6, 255, 255, + 0, 55, 0, 0, 1, 189, 3, 62, 2, 38, 0, 49, 0, 0, 1, 7, 0, 143, 0, 9, + 0, 137, 0, 16, 64, 11, 1, 13, 20, 18, 7, 16, 80, 1, 8, 19, 79, 43, 43, 52, + 0, 0, 255, 255, 0, 71, 0, 0, 1, 176, 2, 181, 2, 38, 0, 81, 0, 0, 1, 6, + 0, 143, 9, 0, 0, 16, 64, 11, 1, 11, 22, 20, 0, 5, 80, 1, 2, 21, 79, 43, + 43, 52, 255, 255, 0, 55, 255, 86, 1, 189, 2, 107, 2, 38, 0, 49, 0, 0, 1, 6, + 1, 195, 248, 0, 0, 13, 185, 0, 1, 255, 244, 180, 27, 21, 7, 16, 80, 43, 52, 0, + 0, 0, 255, 255, 0, 71, 255, 86, 1, 176, 1, 218, 2, 38, 0, 81, 0, 0, 1, 6, + 1, 195, 239, 0, 0, 13, 185, 0, 1, 255, 233, 180, 29, 23, 0, 5, 80, 43, 52, 0, + 0, 0, 255, 255, 0, 55, 0, 0, 1, 189, 3, 61, 2, 38, 0, 49, 0, 0, 1, 7, + 1, 95, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 18, 22, 7, 16, 80, 1, 8, 23, + 79, 43, 43, 52, 0, 0, 255, 255, 0, 71, 0, 0, 1, 176, 2, 178, 2, 38, 0, 81, + 0, 0, 1, 6, 1, 95, 0, 0, 0, 19, 185, 0, 1, 255, 255, 64, 9, 20, 24, 0, + 5, 80, 1, 2, 25, 79, 43, 43, 52, 0, 0, 2, 0, 29, 0, 0, 1, 189, 2, 181, + 0, 15, 0, 27, 0, 170, 185, 0, 11, 255, 224, 179, 15, 0, 77, 9, 184, 255, 248, 179, + 14, 0, 77, 8, 184, 255, 208, 64, 9, 14, 0, 77, 2, 24, 16, 0, 77, 2, 184, 255, + 232, 64, 48, 15, 0, 77, 1, 32, 15, 0, 77, 1, 16, 14, 0, 77, 0, 12, 115, 79, + 15, 1, 15, 29, 20, 21, 27, 15, 16, 31, 16, 47, 16, 3, 16, 7, 3, 115, 0, 6, + 16, 6, 32, 6, 176, 6, 192, 6, 5, 8, 6, 184, 255, 192, 64, 22, 13, 16, 72, 6, + 28, 20, 16, 7, 3, 64, 15, 0, 77, 127, 3, 1, 3, 7, 7, 13, 65, 12, 184, 255, + 192, 64, 10, 15, 0, 77, 112, 12, 1, 12, 0, 4, 66, 0, 63, 51, 50, 93, 43, 63, + 51, 17, 51, 93, 43, 16, 214, 205, 1, 16, 214, 43, 94, 93, 237, 50, 222, 93, 221, 214, + 197, 16, 222, 113, 237, 50, 49, 48, 0, 43, 43, 43, 43, 43, 43, 43, 33, 38, 38, 39, + 17, 35, 17, 51, 30, 3, 23, 17, 51, 17, 1, 21, 20, 6, 7, 39, 54, 54, 53, 52, + 38, 39, 1, 114, 22, 53, 28, 70, 75, 14, 29, 27, 24, 9, 70, 254, 208, 28, 28, 56, + 17, 15, 1, 1, 96, 211, 114, 254, 91, 2, 107, 50, 103, 102, 97, 44, 1, 140, 253, 149, + 2, 181, 9, 51, 82, 46, 21, 35, 63, 35, 9, 20, 5, 255, 255, 0, 11, 0, 0, 1, + 176, 2, 181, 2, 38, 0, 81, 0, 0, 1, 7, 1, 94, 255, 71, 0, 0, 0, 19, 185, + 0, 1, 255, 72, 64, 9, 27, 20, 0, 5, 80, 1, 2, 26, 79, 43, 43, 52, 0, 0, + 0, 0, 1, 0, 55, 255, 89, 1, 189, 2, 107, 0, 32, 0, 83, 64, 47, 21, 9, 37, + 9, 2, 9, 0, 5, 0, 126, 14, 9, 20, 14, 9, 0, 14, 25, 25, 14, 115, 17, 34, + 5, 115, 16, 7, 32, 7, 2, 7, 33, 15, 5, 9, 65, 29, 124, 22, 15, 14, 1, 8, + 14, 0, 7, 66, 0, 63, 51, 50, 94, 93, 220, 237, 63, 51, 51, 1, 16, 214, 93, 237, + 16, 222, 237, 50, 47, 16, 193, 135, 4, 43, 135, 5, 125, 196, 1, 93, 49, 48, 37, 46, + 3, 39, 17, 35, 17, 51, 30, 3, 23, 17, 51, 17, 20, 14, 2, 35, 34, 38, 39, 55, + 22, 22, 51, 50, 54, 53, 1, 114, 20, 55, 64, 69, 32, 75, 84, 28, 64, 63, 56, 20, + 75, 8, 25, 49, 40, 13, 32, 10, 8, 8, 23, 7, 33, 23, 21, 44, 115, 126, 129, 59, + 254, 18, 2, 107, 49, 118, 121, 115, 47, 1, 194, 253, 149, 37, 62, 44, 24, 5, 2, 65, + 2, 2, 43, 41, 0, 1, 0, 71, 255, 89, 1, 176, 1, 218, 0, 33, 0, 89, 64, 16, + 26, 64, 18, 0, 77, 26, 40, 17, 0, 77, 26, 32, 16, 0, 77, 5, 184, 255, 232, 179, + 10, 0, 77, 5, 184, 255, 224, 179, 9, 0, 77, 5, 184, 255, 216, 64, 26, 8, 0, 77, + 15, 22, 127, 7, 35, 32, 127, 0, 33, 1, 8, 33, 34, 33, 74, 19, 137, 12, 75, 28, + 136, 3, 80, 0, 63, 237, 63, 237, 63, 1, 16, 214, 94, 93, 237, 16, 222, 253, 204, 49, + 48, 43, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 22, 21, 17, 20, 14, 2, 35, 34, + 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, 52, 46, 2, 35, 34, 6, 7, 17, 35, 71, + 45, 89, 39, 93, 95, 11, 30, 51, 40, 13, 32, 10, 8, 8, 22, 8, 33, 26, 16, 29, + 41, 24, 20, 45, 21, 83, 1, 195, 11, 12, 96, 106, 254, 240, 41, 63, 42, 21, 5, 2, + 65, 2, 2, 43, 41, 1, 16, 45, 56, 31, 12, 5, 4, 254, 120, 255, 255, 0, 29, 255, + 243, 1, 216, 3, 6, 2, 38, 0, 50, 0, 0, 1, 7, 0, 138, 0, 0, 0, 139, 0, + 16, 64, 11, 2, 0, 32, 33, 0, 9, 80, 2, 4, 34, 79, 43, 43, 52, 0, 0, 255, + 255, 0, 40, 255, 245, 1, 204, 2, 123, 2, 38, 0, 82, 0, 0, 1, 6, 0, 138, 0, + 0, 0, 16, 64, 11, 2, 0, 32, 33, 9, 0, 80, 2, 14, 34, 79, 43, 43, 52, 255, + 255, 0, 29, 255, 243, 1, 216, 3, 40, 2, 38, 0, 50, 0, 0, 1, 7, 1, 97, 0, + 0, 0, 139, 0, 16, 64, 11, 2, 0, 36, 50, 0, 9, 80, 2, 4, 32, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 157, 2, 38, 0, 82, 0, 0, 1, + 6, 1, 97, 0, 0, 0, 16, 64, 11, 2, 0, 36, 50, 9, 0, 80, 2, 14, 32, 79, + 43, 43, 52, 255, 255, 0, 29, 255, 243, 1, 216, 3, 62, 2, 38, 0, 50, 0, 0, 1, + 7, 1, 101, 0, 36, 0, 137, 0, 23, 64, 16, 3, 2, 35, 34, 36, 0, 9, 80, 3, + 4, 37, 79, 2, 4, 33, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 40, 255, + 245, 1, 204, 2, 181, 2, 38, 0, 82, 0, 0, 1, 6, 1, 101, 36, 0, 0, 23, 64, + 16, 3, 2, 36, 34, 36, 9, 0, 80, 3, 14, 37, 79, 2, 14, 33, 79, 43, 43, 43, + 52, 52, 0, 255, 255, 0, 55, 0, 0, 1, 207, 3, 62, 2, 38, 0, 53, 0, 0, 1, + 7, 0, 143, 0, 0, 0, 137, 0, 19, 185, 0, 2, 255, 251, 64, 9, 44, 42, 18, 8, + 80, 2, 23, 43, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 107, 0, 0, 1, 182, 2, + 181, 2, 38, 0, 85, 0, 0, 1, 6, 0, 143, 45, 0, 0, 16, 64, 11, 1, 26, 16, + 14, 0, 6, 80, 1, 2, 15, 79, 43, 43, 52, 255, 255, 0, 55, 255, 86, 1, 207, 2, + 113, 2, 38, 0, 53, 0, 0, 1, 6, 1, 195, 221, 0, 0, 13, 185, 0, 2, 255, 208, + 180, 51, 45, 18, 8, 80, 43, 52, 0, 0, 0, 255, 255, 0, 42, 255, 86, 1, 182, 1, + 218, 2, 38, 0, 85, 0, 0, 1, 7, 1, 195, 255, 127, 0, 0, 0, 13, 185, 0, 1, + 255, 100, 180, 23, 17, 0, 6, 80, 43, 52, 0, 255, 255, 0, 55, 0, 0, 1, 207, 3, + 61, 2, 38, 0, 53, 0, 0, 1, 7, 1, 95, 255, 230, 0, 139, 0, 19, 185, 0, 2, + 255, 221, 64, 9, 42, 46, 18, 8, 80, 2, 23, 47, 79, 43, 43, 52, 0, 0, 0, 255, + 255, 0, 107, 0, 0, 1, 182, 2, 178, 2, 38, 0, 85, 0, 0, 1, 6, 1, 95, 36, + 0, 0, 16, 64, 11, 1, 13, 14, 18, 0, 6, 80, 1, 2, 19, 79, 43, 43, 52, 255, + 255, 0, 55, 255, 243, 1, 189, 3, 62, 2, 38, 0, 54, 0, 0, 1, 7, 0, 143, 0, + 18, 0, 137, 0, 16, 64, 11, 1, 22, 52, 50, 46, 37, 80, 1, 15, 51, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 66, 255, 245, 1, 178, 2, 181, 2, 38, 0, 86, 0, 0, 1, + 6, 0, 143, 9, 0, 0, 16, 64, 11, 1, 13, 42, 40, 34, 27, 80, 1, 9, 41, 79, + 43, 43, 52, 255, 255, 0, 55, 255, 243, 1, 189, 3, 58, 2, 38, 0, 54, 0, 0, 1, + 7, 0, 105, 0, 9, 0, 139, 0, 16, 64, 11, 1, 9, 55, 51, 46, 37, 80, 1, 15, + 52, 79, 43, 43, 52, 0, 0, 255, 255, 0, 66, 255, 245, 1, 178, 2, 175, 2, 38, 0, + 86, 0, 0, 1, 6, 0, 105, 9, 0, 0, 16, 64, 11, 1, 9, 45, 41, 34, 27, 80, + 1, 9, 42, 79, 43, 43, 52, 0, 1, 0, 55, 255, 87, 1, 189, 2, 121, 0, 71, 1, + 33, 185, 0, 70, 255, 232, 180, 9, 10, 0, 76, 70, 184, 255, 224, 179, 8, 0, 77, 69, + 184, 255, 240, 179, 18, 0, 77, 69, 184, 255, 232, 179, 17, 0, 77, 66, 184, 255, 240, 179, + 13, 0, 77, 65, 184, 255, 224, 179, 15, 0, 77, 65, 184, 255, 216, 179, 8, 0, 77, 63, + 184, 255, 208, 179, 9, 0, 77, 61, 184, 255, 224, 179, 14, 0, 77, 56, 184, 255, 224, 179, + 18, 0, 77, 56, 184, 255, 216, 179, 17, 0, 77, 50, 184, 255, 224, 179, 17, 0, 77, 50, + 184, 255, 224, 179, 15, 0, 77, 50, 184, 255, 216, 64, 47, 14, 0, 77, 44, 24, 9, 10, + 0, 76, 44, 32, 8, 0, 77, 41, 24, 15, 0, 77, 37, 32, 10, 0, 77, 36, 24, 14, + 0, 77, 25, 32, 16, 0, 77, 25, 24, 14, 15, 0, 76, 25, 16, 13, 0, 77, 17, 3, + 184, 255, 192, 64, 54, 11, 14, 72, 3, 71, 0, 23, 11, 20, 20, 68, 26, 51, 51, 33, + 118, 68, 73, 26, 26, 58, 118, 0, 43, 1, 8, 43, 72, 0, 20, 20, 23, 15, 64, 8, + 72, 128, 63, 46, 30, 38, 23, 52, 52, 55, 124, 46, 69, 27, 27, 30, 124, 23, 70, 0, + 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 17, 18, 57, 26, 16, 220, 26, 205, 18, 57, + 47, 205, 1, 16, 214, 94, 93, 237, 51, 47, 16, 222, 237, 51, 47, 17, 18, 57, 47, 204, + 51, 221, 50, 213, 43, 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, + 39, 55, 22, 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 38, 38, 39, 55, 22, 22, 51, + 50, 54, 53, 52, 46, 2, 39, 46, 3, 53, 52, 54, 51, 50, 30, 2, 23, 7, 38, 38, + 35, 34, 6, 21, 20, 30, 2, 23, 30, 3, 21, 20, 6, 7, 1, 7, 26, 23, 9, 21, + 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 11, 6, 60, 84, 17, 25, 20, + 78, 56, 63, 66, 24, 40, 50, 26, 30, 55, 43, 25, 102, 91, 25, 49, 42, 33, 10, 26, + 20, 70, 43, 45, 66, 19, 33, 44, 26, 38, 63, 45, 25, 88, 83, 33, 12, 30, 29, 10, + 23, 19, 13, 7, 5, 51, 4, 5, 20, 20, 11, 2, 10, 27, 12, 3, 29, 11, 68, 11, + 29, 48, 48, 29, 41, 31, 23, 10, 12, 30, 40, 54, 37, 81, 91, 7, 10, 14, 7, 69, + 12, 24, 45, 45, 26, 36, 27, 22, 11, 16, 32, 44, 60, 43, 72, 86, 8, 0, 1, 0, + 66, 255, 87, 1, 178, 1, 219, 0, 62, 0, 255, 185, 0, 60, 255, 224, 179, 13, 0, 77, + 60, 184, 255, 240, 179, 12, 0, 77, 60, 184, 255, 232, 179, 11, 0, 77, 60, 184, 255, 216, + 180, 9, 10, 0, 76, 60, 184, 255, 208, 179, 8, 0, 77, 58, 184, 255, 224, 179, 13, 0, + 77, 57, 184, 255, 216, 179, 12, 0, 77, 57, 184, 255, 224, 179, 10, 0, 77, 55, 184, 255, + 200, 179, 9, 0, 77, 55, 184, 255, 224, 179, 8, 0, 77, 54, 184, 255, 232, 64, 101, 14, + 16, 0, 76, 39, 24, 11, 0, 77, 39, 32, 10, 0, 77, 39, 40, 9, 0, 77, 36, 32, + 13, 0, 77, 36, 40, 12, 0, 77, 36, 24, 10, 0, 77, 33, 16, 16, 0, 77, 33, 24, + 15, 0, 77, 25, 40, 16, 18, 0, 76, 17, 3, 62, 0, 23, 11, 20, 20, 59, 25, 44, + 44, 31, 130, 59, 64, 25, 25, 52, 130, 0, 38, 1, 8, 38, 63, 20, 20, 23, 15, 64, + 8, 63, 128, 55, 41, 29, 34, 23, 50, 136, 41, 80, 29, 136, 62, 23, 81, 0, 21, 81, + 0, 63, 51, 63, 51, 237, 63, 237, 17, 57, 17, 18, 57, 26, 16, 220, 26, 205, 17, 57, + 47, 1, 16, 214, 94, 93, 237, 51, 47, 16, 222, 237, 51, 47, 17, 18, 57, 47, 204, 51, + 221, 50, 213, 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, + 51, 50, 53, 52, 39, 39, 54, 54, 55, 38, 39, 55, 22, 22, 51, 50, 53, 52, 46, 4, + 53, 52, 54, 51, 50, 22, 23, 7, 46, 3, 35, 34, 21, 20, 30, 4, 21, 20, 6, 7, + 1, 7, 26, 23, 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 12, + 6, 86, 65, 16, 35, 77, 44, 113, 41, 61, 72, 61, 41, 91, 97, 38, 81, 29, 15, 8, + 28, 36, 41, 19, 108, 41, 62, 72, 62, 41, 77, 82, 33, 12, 30, 29, 10, 23, 19, 13, + 7, 5, 51, 4, 5, 20, 20, 11, 2, 11, 27, 13, 3, 29, 75, 16, 21, 57, 25, 32, + 24, 23, 34, 50, 40, 56, 75, 11, 9, 74, 4, 9, 7, 4, 59, 21, 29, 24, 25, 36, + 51, 39, 57, 66, 7, 0, 1, 0, 39, 255, 87, 1, 205, 2, 107, 0, 32, 0, 72, 180, + 29, 31, 24, 17, 3, 184, 255, 192, 64, 29, 11, 14, 72, 3, 0, 11, 20, 20, 26, 24, + 24, 34, 33, 30, 25, 121, 27, 65, 0, 20, 20, 24, 15, 64, 8, 128, 31, 24, 66, 0, + 63, 51, 26, 220, 26, 205, 17, 57, 47, 205, 63, 237, 50, 1, 17, 18, 57, 47, 206, 51, + 47, 204, 221, 213, 43, 205, 16, 212, 206, 49, 48, 5, 22, 22, 21, 20, 14, 2, 35, 34, + 38, 39, 55, 22, 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 35, 17, 35, 53, 33, 21, + 35, 17, 35, 1, 7, 26, 23, 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, + 7, 5, 15, 7, 13, 170, 1, 166, 170, 11, 33, 12, 30, 29, 10, 23, 19, 13, 7, 5, + 51, 4, 5, 20, 20, 11, 2, 13, 35, 14, 2, 37, 70, 70, 253, 219, 0, 1, 0, 63, + 255, 87, 1, 194, 2, 96, 0, 51, 0, 118, 64, 68, 25, 24, 14, 16, 0, 76, 25, 32, + 13, 0, 77, 25, 24, 12, 0, 77, 25, 32, 11, 0, 77, 17, 3, 0, 11, 20, 20, 29, + 48, 48, 37, 35, 38, 127, 32, 29, 29, 30, 37, 53, 0, 30, 1, 8, 30, 52, 0, 20, + 20, 51, 15, 64, 8, 52, 128, 44, 136, 23, 51, 81, 33, 34, 38, 29, 133, 35, 32, 73, + 0, 63, 51, 237, 50, 205, 50, 63, 51, 237, 26, 16, 220, 26, 205, 17, 57, 47, 205, 1, + 16, 198, 94, 93, 16, 206, 17, 57, 47, 51, 237, 50, 17, 51, 47, 18, 57, 47, 204, 221, + 213, 205, 49, 48, 43, 43, 43, 43, 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, + 22, 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 46, 3, 53, 53, 35, 53, 51, 53, 55, + 21, 51, 21, 35, 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 6, 7, 1, 70, 26, 23, + 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 13, 7, 37, 47, 27, + 10, 98, 98, 82, 196, 196, 10, 23, 36, 26, 36, 44, 20, 12, 13, 58, 42, 33, 12, 30, + 29, 10, 23, 19, 13, 7, 5, 51, 4, 5, 20, 20, 11, 2, 11, 30, 13, 5, 29, 47, + 65, 41, 216, 69, 130, 14, 144, 69, 216, 35, 44, 27, 10, 12, 10, 70, 6, 18, 2, 255, + 255, 0, 39, 0, 0, 1, 205, 3, 61, 2, 38, 0, 55, 0, 0, 1, 7, 1, 95, 0, + 0, 0, 139, 0, 16, 64, 11, 1, 0, 8, 12, 6, 0, 80, 1, 0, 13, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 63, 255, 245, 1, 194, 2, 181, 2, 38, 0, 87, 0, 0, 1, + 6, 1, 197, 104, 0, 0, 10, 182, 1, 97, 30, 28, 23, 13, 80, 43, 52, 0, 0, 0, + 1, 0, 39, 0, 0, 1, 205, 2, 107, 0, 15, 0, 55, 64, 27, 5, 3, 1, 6, 115, + 14, 12, 10, 9, 9, 16, 17, 2, 13, 121, 15, 6, 9, 121, 3, 12, 12, 8, 15, 65, + 8, 66, 0, 63, 63, 18, 57, 47, 51, 237, 50, 16, 237, 50, 1, 17, 18, 57, 47, 205, + 51, 204, 253, 204, 51, 205, 49, 48, 1, 21, 35, 21, 51, 21, 35, 17, 35, 17, 35, 53, + 51, 53, 35, 53, 1, 205, 170, 118, 118, 82, 119, 119, 170, 2, 107, 70, 200, 64, 254, 227, + 1, 29, 64, 200, 70, 0, 1, 0, 63, 255, 245, 1, 194, 2, 96, 0, 35, 0, 97, 64, + 53, 23, 32, 11, 0, 77, 22, 24, 12, 0, 77, 7, 0, 3, 127, 33, 26, 30, 30, 31, + 17, 17, 5, 5, 2, 37, 28, 28, 0, 31, 1, 8, 31, 36, 34, 35, 3, 30, 133, 33, + 7, 26, 4, 29, 29, 0, 33, 73, 16, 16, 13, 136, 20, 81, 0, 63, 237, 50, 47, 63, + 51, 57, 47, 51, 205, 50, 16, 237, 50, 205, 50, 1, 16, 198, 94, 93, 50, 47, 16, 206, + 50, 47, 50, 47, 17, 57, 47, 51, 51, 237, 50, 50, 49, 48, 43, 43, 19, 51, 21, 35, + 21, 51, 21, 35, 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 53, + 53, 35, 53, 51, 53, 35, 53, 51, 53, 55, 243, 196, 196, 196, 196, 10, 23, 36, 26, 36, + 44, 20, 12, 14, 61, 45, 52, 66, 37, 14, 98, 98, 98, 98, 82, 1, 208, 69, 122, 62, + 32, 35, 44, 27, 10, 12, 10, 70, 6, 20, 24, 48, 71, 47, 32, 62, 122, 69, 130, 14, + 255, 255, 0, 48, 255, 243, 1, 196, 3, 28, 2, 38, 0, 56, 0, 0, 1, 7, 0, 117, + 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 40, 26, 4, 20, 80, 1, 6, 39, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, 145, 2, 38, 0, 88, 0, 0, + 1, 6, 0, 117, 0, 0, 0, 16, 64, 11, 1, 1, 36, 22, 7, 0, 80, 1, 9, 35, + 79, 43, 43, 52, 255, 255, 0, 48, 255, 243, 1, 196, 3, 6, 2, 38, 0, 56, 0, 0, + 1, 7, 0, 138, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 26, 27, 4, 20, 80, 1, + 6, 28, 79, 43, 43, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, 123, 2, 38, + 0, 88, 0, 0, 1, 6, 0, 138, 0, 0, 0, 16, 64, 11, 1, 1, 22, 23, 7, 0, + 80, 1, 9, 24, 79, 43, 43, 52, 255, 255, 0, 48, 255, 243, 1, 196, 3, 40, 2, 38, + 0, 56, 0, 0, 1, 7, 1, 97, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 30, 44, + 4, 20, 80, 1, 6, 26, 79, 43, 43, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, + 2, 157, 2, 38, 0, 88, 0, 0, 1, 6, 1, 97, 0, 0, 0, 16, 64, 11, 1, 1, + 26, 40, 7, 0, 80, 1, 9, 22, 79, 43, 43, 52, 255, 255, 0, 48, 255, 243, 1, 196, + 3, 62, 2, 38, 0, 56, 0, 0, 1, 7, 1, 99, 0, 0, 0, 134, 0, 12, 183, 2, + 1, 0, 31, 26, 4, 20, 80, 43, 52, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, + 2, 184, 2, 38, 0, 88, 0, 0, 1, 6, 1, 99, 0, 0, 0, 12, 183, 2, 1, 1, + 27, 22, 7, 0, 80, 43, 52, 52, 255, 255, 0, 48, 255, 243, 1, 196, 3, 62, 2, 38, + 0, 56, 0, 0, 1, 7, 1, 101, 0, 27, 0, 137, 0, 23, 64, 16, 2, 1, 27, 28, + 30, 4, 20, 80, 2, 6, 31, 79, 1, 6, 27, 79, 43, 43, 43, 52, 52, 0, 0, 0, + 255, 255, 0, 68, 255, 246, 1, 173, 2, 181, 2, 38, 0, 88, 0, 0, 1, 6, 1, 101, + 27, 0, 0, 23, 64, 16, 2, 1, 28, 24, 26, 7, 0, 80, 2, 9, 27, 79, 1, 9, + 23, 79, 43, 43, 43, 52, 52, 0, 0, 1, 0, 48, 255, 89, 1, 196, 2, 107, 0, 43, + 0, 94, 182, 15, 16, 15, 16, 0, 76, 11, 184, 255, 232, 179, 16, 0, 77, 11, 184, 255, + 240, 64, 43, 15, 0, 77, 2, 32, 12, 0, 77, 2, 16, 11, 0, 77, 2, 24, 10, 0, + 77, 0, 41, 36, 30, 30, 5, 18, 115, 21, 45, 8, 115, 5, 44, 32, 38, 44, 19, 6, + 65, 27, 13, 124, 0, 70, 0, 63, 237, 51, 63, 51, 16, 220, 205, 1, 16, 214, 237, 16, + 222, 237, 18, 57, 47, 204, 205, 50, 49, 48, 43, 43, 43, 43, 43, 43, 23, 34, 46, 2, + 53, 17, 51, 17, 20, 30, 2, 51, 50, 62, 2, 53, 17, 51, 17, 20, 6, 7, 6, 6, + 7, 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, 52, 54, 240, 55, 73, + 45, 19, 82, 17, 31, 44, 28, 28, 44, 31, 17, 82, 37, 43, 11, 38, 14, 14, 15, 36, + 6, 20, 11, 6, 22, 37, 51, 47, 14, 24, 35, 63, 87, 52, 1, 150, 254, 115, 47, 63, + 38, 16, 16, 38, 63, 47, 1, 141, 254, 106, 69, 100, 27, 7, 28, 14, 14, 24, 13, 26, + 3, 3, 54, 10, 36, 32, 21, 30, 0, 1, 0, 68, 255, 89, 1, 173, 1, 208, 0, 42, + 0, 96, 185, 0, 34, 255, 232, 179, 16, 0, 77, 34, 184, 255, 240, 64, 51, 15, 0, 77, + 27, 16, 17, 0, 77, 26, 16, 19, 0, 77, 26, 24, 10, 0, 77, 26, 40, 8, 9, 0, + 76, 21, 16, 11, 5, 40, 127, 0, 44, 32, 127, 0, 29, 1, 8, 29, 43, 7, 13, 43, + 41, 30, 73, 35, 136, 0, 24, 81, 0, 63, 51, 237, 63, 51, 16, 220, 205, 1, 16, 214, + 94, 93, 237, 16, 222, 237, 222, 204, 205, 50, 49, 48, 43, 43, 43, 43, 43, 43, 37, 14, + 3, 21, 20, 51, 50, 54, 55, 23, 6, 35, 34, 38, 53, 52, 54, 55, 54, 55, 6, 6, + 35, 34, 46, 2, 53, 17, 51, 21, 20, 22, 51, 50, 62, 2, 55, 17, 51, 1, 173, 6, + 26, 27, 20, 36, 6, 20, 10, 7, 23, 36, 51, 48, 24, 16, 12, 12, 23, 43, 16, 53, + 70, 44, 18, 82, 51, 60, 13, 27, 24, 18, 3, 83, 13, 6, 22, 27, 29, 12, 26, 3, + 3, 54, 10, 36, 32, 21, 37, 16, 13, 8, 2, 4, 31, 57, 78, 47, 1, 5, 243, 86, + 72, 2, 3, 3, 1, 1, 136, 255, 255, 0, 32, 0, 0, 1, 212, 3, 58, 2, 38, 0, + 58, 0, 0, 1, 7, 0, 105, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 26, 22, 6, + 13, 80, 1, 6, 23, 79, 43, 43, 52, 0, 0, 255, 255, 0, 19, 0, 0, 1, 225, 2, + 175, 2, 38, 0, 90, 0, 0, 1, 6, 0, 105, 254, 0, 0, 19, 185, 0, 1, 255, 254, + 64, 9, 48, 44, 14, 37, 80, 1, 14, 45, 79, 43, 43, 52, 0, 255, 255, 0, 13, 0, + 0, 1, 232, 3, 58, 2, 38, 0, 60, 0, 0, 1, 7, 0, 105, 0, 0, 0, 139, 0, + 16, 64, 11, 1, 0, 22, 18, 4, 12, 80, 1, 4, 19, 79, 43, 43, 52, 0, 0, 255, + 255, 0, 36, 255, 88, 1, 205, 2, 175, 2, 38, 0, 92, 0, 0, 1, 6, 0, 105, 0, + 0, 0, 16, 64, 11, 1, 1, 38, 34, 32, 21, 80, 1, 9, 35, 79, 43, 43, 52, 255, + 255, 0, 54, 0, 0, 1, 199, 3, 62, 2, 38, 0, 61, 0, 0, 1, 7, 0, 143, 0, + 9, 0, 137, 0, 16, 64, 11, 1, 8, 20, 18, 8, 6, 80, 1, 16, 19, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 73, 0, 0, 1, 171, 2, 181, 2, 38, 0, 93, 0, 0, 1, + 6, 0, 143, 9, 0, 0, 16, 64, 11, 1, 13, 20, 18, 8, 6, 80, 1, 16, 19, 79, + 43, 43, 52, 255, 255, 0, 54, 0, 0, 1, 199, 3, 34, 2, 38, 0, 61, 0, 0, 1, + 7, 1, 98, 0, 0, 0, 139, 0, 19, 185, 0, 1, 255, 252, 64, 9, 20, 26, 8, 6, + 80, 1, 16, 18, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 73, 0, 0, 1, 171, 2, + 151, 2, 38, 0, 93, 0, 0, 1, 6, 1, 98, 0, 0, 0, 16, 64, 11, 1, 0, 20, + 26, 8, 6, 80, 1, 16, 18, 79, 43, 43, 52, 255, 255, 0, 54, 0, 0, 1, 199, 3, + 61, 2, 38, 0, 61, 0, 0, 1, 7, 1, 95, 0, 0, 0, 139, 0, 19, 185, 0, 1, + 255, 252, 64, 9, 18, 22, 8, 6, 80, 1, 16, 23, 79, 43, 43, 52, 0, 0, 0, 255, + 255, 0, 73, 0, 0, 1, 171, 2, 178, 2, 38, 0, 93, 0, 0, 1, 6, 1, 95, 0, + 0, 0, 16, 64, 11, 1, 0, 18, 22, 8, 6, 80, 1, 16, 23, 79, 43, 43, 52, 0, + 1, 0, 161, 0, 0, 1, 226, 2, 181, 0, 19, 0, 46, 185, 0, 15, 255, 232, 64, 21, + 17, 18, 0, 76, 19, 127, 0, 0, 21, 20, 9, 9, 21, 10, 10, 13, 136, 6, 77, 0, + 74, 0, 63, 63, 237, 50, 47, 1, 17, 51, 47, 17, 18, 57, 47, 237, 49, 48, 43, 51, + 17, 52, 62, 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 21, 17, 161, 30, 49, + 65, 36, 36, 73, 32, 15, 22, 66, 34, 21, 37, 28, 16, 1, 250, 54, 71, 44, 18, 16, + 11, 71, 11, 16, 11, 27, 45, 34, 254, 7, 255, 255, 0, 55, 255, 86, 1, 189, 2, 121, + 2, 38, 0, 54, 0, 0, 1, 6, 1, 195, 221, 0, 0, 13, 185, 0, 1, 255, 217, 180, + 59, 53, 46, 37, 80, 43, 52, 0, 0, 0, 255, 255, 0, 66, 255, 86, 1, 178, 1, 219, + 2, 38, 0, 86, 0, 0, 1, 6, 1, 195, 221, 0, 0, 13, 185, 0, 1, 255, 217, 180, + 49, 43, 34, 27, 80, 43, 52, 0, 0, 0, 255, 255, 0, 39, 255, 86, 1, 205, 2, 107, + 2, 38, 0, 55, 0, 0, 1, 6, 1, 195, 228, 0, 0, 13, 185, 0, 1, 255, 224, 180, + 17, 11, 6, 0, 80, 43, 52, 0, 0, 0, 255, 255, 0, 63, 255, 86, 1, 194, 2, 96, + 2, 38, 0, 87, 0, 0, 1, 6, 1, 195, 36, 0, 0, 10, 182, 1, 25, 37, 31, 23, + 13, 80, 43, 52, 0, 0, 0, 1, 0, 71, 255, 86, 1, 128, 1, 208, 0, 19, 0, 47, + 185, 0, 5, 255, 232, 64, 22, 9, 10, 0, 76, 18, 127, 3, 21, 11, 11, 0, 20, 12, + 12, 15, 136, 8, 82, 19, 133, 2, 73, 0, 63, 237, 63, 237, 50, 47, 1, 16, 198, 50, + 47, 16, 222, 237, 49, 48, 43, 19, 53, 33, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, + 22, 51, 50, 54, 53, 17, 114, 1, 14, 27, 45, 59, 33, 38, 77, 34, 25, 25, 61, 28, + 40, 52, 1, 139, 69, 254, 53, 48, 67, 42, 18, 16, 17, 70, 12, 17, 41, 59, 1, 135, + 0, 1, 0, 196, 1, 249, 1, 52, 2, 181, 0, 13, 0, 26, 64, 10, 12, 15, 14, 6, + 7, 7, 0, 13, 13, 6, 0, 47, 204, 1, 47, 205, 51, 47, 205, 17, 18, 57, 49, 48, + 1, 20, 20, 7, 6, 6, 7, 39, 54, 54, 53, 52, 38, 39, 1, 52, 1, 3, 31, 21, + 56, 17, 15, 1, 1, 2, 181, 10, 14, 8, 46, 75, 35, 21, 35, 63, 35, 9, 20, 5, + 0, 1, 0, 129, 2, 11, 1, 115, 2, 178, 0, 5, 0, 37, 64, 15, 3, 4, 1, 0, + 64, 2, 2, 7, 6, 3, 3, 1, 128, 2, 5, 0, 47, 51, 26, 205, 50, 47, 1, 17, + 18, 57, 25, 47, 26, 205, 50, 205, 50, 49, 48, 19, 55, 23, 55, 23, 7, 129, 34, 87, + 87, 34, 121, 2, 139, 39, 78, 78, 39, 128, 255, 255, 0, 123, 2, 59, 1, 121, 2, 123, + 2, 6, 0, 138, 0, 0, 0, 1, 0, 130, 2, 33, 1, 114, 2, 157, 0, 21, 0, 21, + 183, 17, 16, 5, 6, 16, 6, 11, 0, 0, 47, 221, 206, 50, 1, 47, 205, 222, 205, 49, + 48, 19, 34, 46, 2, 55, 51, 30, 3, 51, 50, 62, 2, 55, 51, 22, 14, 2, 250, 25, + 44, 33, 18, 1, 54, 1, 6, 15, 24, 19, 19, 25, 14, 6, 1, 54, 1, 18, 33, 44, + 2, 33, 17, 31, 46, 30, 10, 23, 19, 12, 12, 19, 23, 10, 30, 46, 31, 17, 0, 1, + 0, 190, 2, 30, 1, 54, 2, 151, 0, 11, 0, 13, 179, 9, 3, 6, 0, 0, 47, 205, + 1, 47, 205, 49, 48, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 250, 25, 35, + 35, 25, 25, 35, 35, 2, 30, 33, 28, 27, 33, 33, 27, 28, 33, 0, 2, 0, 158, 2, + 1, 1, 86, 2, 184, 0, 11, 0, 23, 0, 57, 185, 0, 11, 255, 224, 64, 17, 8, 15, + 0, 76, 7, 32, 8, 15, 0, 76, 5, 32, 8, 15, 0, 76, 1, 184, 255, 224, 64, 12, + 8, 15, 0, 76, 0, 12, 6, 18, 9, 15, 21, 3, 0, 47, 221, 222, 205, 1, 47, 205, + 222, 205, 49, 48, 43, 43, 43, 43, 1, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, + 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 86, 55, 37, 37, 55, 55, 37, + 37, 55, 45, 27, 20, 20, 27, 27, 20, 20, 27, 2, 93, 43, 49, 49, 43, 42, 49, 49, + 42, 23, 26, 26, 23, 24, 26, 26, 0, 1, 0, 171, 255, 89, 1, 73, 0, 7, 0, 22, + 0, 32, 64, 13, 8, 3, 21, 9, 15, 17, 64, 0, 23, 128, 8, 8, 23, 0, 17, 51, + 47, 26, 16, 220, 26, 205, 1, 47, 51, 204, 205, 50, 49, 48, 5, 34, 38, 53, 52, 54, + 55, 54, 55, 51, 6, 6, 7, 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, 1, 14, 51, + 48, 23, 16, 21, 14, 83, 11, 25, 13, 13, 16, 36, 6, 20, 10, 7, 23, 167, 36, 32, + 21, 37, 17, 23, 8, 8, 20, 14, 14, 21, 13, 26, 3, 3, 54, 10, 0, 2, 0, 100, + 2, 6, 1, 144, 2, 181, 0, 3, 0, 7, 0, 32, 64, 13, 7, 4, 5, 6, 3, 0, + 1, 2, 7, 3, 128, 5, 1, 0, 47, 51, 26, 205, 50, 1, 47, 51, 205, 50, 220, 50, + 205, 50, 49, 48, 19, 7, 39, 55, 23, 7, 39, 55, 253, 110, 43, 103, 197, 110, 43, 103, + 2, 131, 125, 32, 143, 50, 125, 32, 143, 255, 255, 0, 32, 0, 0, 1, 212, 3, 62, 2, + 38, 0, 58, 0, 0, 1, 7, 0, 67, 0, 0, 0, 137, 0, 19, 185, 0, 1, 255, 253, + 64, 9, 24, 22, 6, 13, 80, 1, 6, 23, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, + 19, 0, 0, 1, 225, 2, 181, 2, 38, 0, 90, 0, 0, 1, 6, 0, 67, 0, 0, 0, + 19, 185, 0, 1, 255, 253, 64, 9, 46, 44, 14, 37, 80, 1, 14, 45, 79, 43, 43, 52, + 0, 255, 255, 0, 32, 0, 0, 1, 212, 3, 62, 2, 38, 0, 58, 0, 0, 1, 7, 0, + 143, 0, 0, 0, 137, 0, 16, 64, 11, 1, 4, 23, 21, 6, 13, 80, 1, 6, 22, 79, + 43, 43, 52, 0, 0, 255, 255, 0, 19, 0, 0, 1, 225, 2, 181, 2, 38, 0, 90, 0, + 0, 1, 6, 0, 143, 0, 0, 0, 16, 64, 11, 1, 4, 45, 43, 14, 37, 80, 1, 14, + 44, 79, 43, 43, 52, 255, 255, 0, 32, 0, 0, 1, 212, 3, 26, 2, 38, 0, 58, 0, + 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, 23, 41, 6, 13, + 80, 2, 6, 33, 79, 1, 6, 21, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, + 19, 0, 0, 1, 225, 2, 143, 2, 38, 0, 90, 0, 0, 1, 6, 0, 131, 0, 0, 0, + 23, 64, 16, 2, 1, 0, 45, 63, 14, 37, 80, 2, 14, 55, 79, 1, 14, 43, 79, 43, + 43, 43, 52, 52, 0, 255, 255, 0, 13, 0, 0, 1, 232, 3, 62, 2, 38, 0, 60, 0, + 0, 1, 7, 0, 67, 0, 0, 0, 137, 0, 19, 185, 0, 1, 255, 252, 64, 9, 20, 18, + 4, 12, 80, 1, 4, 19, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 36, 255, 88, 1, + 205, 2, 181, 2, 38, 0, 92, 0, 0, 1, 6, 0, 67, 0, 0, 0, 19, 185, 0, 1, + 255, 254, 64, 9, 36, 34, 32, 21, 80, 1, 9, 35, 79, 43, 43, 52, 0, 0, 1, 0, + 25, 0, 0, 1, 218, 2, 107, 0, 3, 0, 35, 64, 18, 0, 2, 1, 2, 141, 3, 0, + 20, 3, 0, 3, 1, 2, 3, 86, 0, 1, 85, 0, 63, 51, 63, 51, 1, 47, 47, 135, + 43, 135, 125, 196, 49, 48, 51, 35, 1, 51, 95, 70, 1, 123, 70, 2, 107, 0, 3, 0, + 116, 1, 18, 1, 128, 2, 121, 0, 11, 0, 31, 0, 43, 0, 130, 181, 29, 16, 21, 0, + 77, 25, 184, 255, 224, 179, 21, 0, 77, 19, 184, 255, 232, 64, 15, 21, 0, 77, 15, 16, + 21, 0, 77, 11, 24, 11, 13, 0, 76, 7, 184, 255, 232, 180, 11, 13, 0, 76, 5, 184, + 255, 232, 64, 40, 11, 13, 0, 76, 1, 16, 11, 13, 0, 76, 38, 32, 38, 32, 12, 22, + 150, 0, 12, 150, 6, 0, 207, 35, 1, 35, 64, 25, 28, 72, 35, 48, 41, 1, 41, 41, + 3, 27, 152, 9, 184, 1, 1, 179, 17, 152, 3, 99, 0, 63, 237, 63, 237, 17, 57, 47, + 113, 205, 43, 93, 1, 47, 220, 237, 16, 237, 17, 57, 57, 47, 47, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 19, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 55, 52, 46, + 2, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 62, 2, 39, 20, 6, 35, 34, 38, 53, + 52, 54, 51, 50, 22, 116, 71, 63, 63, 71, 71, 63, 63, 71, 202, 6, 16, 26, 20, 20, + 26, 16, 7, 7, 16, 26, 20, 20, 26, 16, 6, 30, 21, 17, 17, 20, 20, 17, 17, 21, + 1, 198, 87, 92, 92, 87, 88, 92, 92, 88, 25, 46, 33, 20, 20, 33, 46, 25, 26, 45, + 33, 20, 20, 33, 45, 28, 15, 23, 23, 15, 16, 23, 23, 0, 2, 0, 105, 1, 25, 1, + 128, 2, 114, 0, 14, 0, 19, 0, 121, 185, 0, 16, 255, 224, 179, 16, 0, 77, 16, 184, + 255, 232, 64, 69, 15, 0, 77, 14, 32, 21, 0, 77, 12, 32, 24, 0, 77, 12, 16, 21, + 0, 77, 12, 8, 20, 0, 77, 11, 24, 23, 0, 77, 11, 16, 22, 0, 77, 11, 24, 21, + 0, 77, 11, 16, 20, 0, 77, 9, 18, 14, 16, 20, 0, 77, 14, 15, 15, 7, 150, 1, + 4, 21, 4, 8, 9, 1, 18, 18, 6, 15, 14, 96, 6, 184, 1, 0, 0, 63, 63, 51, + 18, 57, 47, 51, 51, 205, 50, 1, 16, 222, 50, 253, 50, 17, 51, 43, 205, 50, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 21, 51, 21, 35, 21, 35, 53, 35, 53, + 62, 3, 55, 7, 6, 6, 7, 51, 1, 83, 45, 45, 60, 174, 12, 39, 48, 52, 26, 3, + 28, 58, 21, 107, 2, 114, 208, 53, 84, 84, 41, 22, 58, 60, 58, 22, 74, 29, 71, 34, + 0, 1, 0, 127, 1, 18, 1, 119, 2, 114, 0, 29, 0, 132, 185, 0, 29, 255, 216, 179, + 15, 0, 77, 29, 184, 255, 224, 179, 14, 0, 77, 29, 184, 255, 216, 179, 13, 0, 77, 29, + 184, 255, 224, 179, 12, 0, 77, 29, 184, 255, 216, 179, 11, 0, 77, 1, 184, 255, 240, 179, + 16, 0, 77, 1, 184, 255, 224, 64, 38, 11, 15, 0, 76, 15, 24, 24, 0, 77, 24, 150, + 21, 18, 23, 23, 13, 150, 0, 27, 150, 18, 6, 6, 18, 18, 152, 27, 27, 10, 24, 152, + 21, 96, 7, 7, 10, 152, 3, 184, 1, 1, 0, 63, 237, 50, 47, 63, 237, 18, 57, 47, + 237, 1, 47, 50, 47, 16, 237, 220, 237, 51, 47, 16, 214, 237, 49, 48, 0, 43, 1, 43, + 43, 43, 43, 43, 43, 43, 1, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, + 52, 46, 2, 35, 54, 54, 55, 51, 21, 35, 6, 6, 7, 22, 22, 1, 119, 71, 75, 29, + 58, 15, 13, 14, 45, 28, 48, 36, 15, 37, 61, 46, 6, 8, 2, 193, 140, 2, 1, 4, + 85, 76, 1, 127, 48, 61, 13, 8, 53, 5, 13, 31, 20, 15, 25, 17, 10, 45, 91, 42, + 56, 18, 36, 19, 5, 57, 0, 2, 0, 125, 1, 18, 1, 130, 2, 116, 0, 24, 0, 37, + 1, 84, 185, 0, 29, 255, 200, 179, 24, 0, 77, 29, 184, 255, 216, 64, 16, 22, 23, 0, + 76, 24, 24, 13, 0, 77, 24, 32, 11, 12, 0, 76, 19, 184, 255, 232, 179, 16, 0, 77, + 19, 184, 255, 224, 180, 14, 15, 0, 76, 19, 184, 255, 232, 180, 12, 13, 0, 76, 19, 184, + 255, 224, 179, 11, 0, 77, 15, 184, 255, 208, 179, 17, 0, 77, 15, 184, 255, 232, 179, 16, + 0, 77, 15, 184, 255, 216, 179, 15, 0, 77, 15, 184, 255, 232, 179, 14, 0, 77, 15, 184, + 255, 224, 179, 13, 0, 77, 15, 184, 255, 216, 179, 12, 0, 77, 15, 184, 255, 232, 179, 11, + 0, 77, 14, 184, 255, 208, 179, 11, 0, 77, 8, 184, 255, 216, 179, 24, 0, 77, 8, 184, + 255, 232, 179, 22, 0, 77, 8, 184, 255, 232, 179, 20, 0, 77, 8, 184, 255, 240, 179, 19, + 0, 77, 7, 184, 255, 216, 179, 23, 0, 77, 7, 184, 255, 216, 179, 21, 0, 77, 7, 184, + 255, 208, 179, 16, 0, 77, 7, 184, 255, 224, 179, 15, 0, 77, 7, 184, 255, 232, 179, 14, + 0, 77, 6, 184, 255, 208, 179, 24, 0, 77, 6, 184, 255, 216, 179, 23, 0, 77, 6, 184, + 255, 200, 179, 22, 0, 77, 6, 184, 255, 208, 179, 21, 0, 77, 6, 184, 255, 216, 64, 38, + 19, 20, 0, 76, 1, 32, 27, 0, 77, 20, 16, 28, 0, 77, 19, 16, 28, 0, 77, 9, + 27, 150, 0, 35, 150, 17, 4, 4, 17, 0, 25, 152, 12, 12, 3, 30, 152, 22, 184, 1, + 1, 179, 4, 152, 3, 96, 0, 63, 237, 63, 237, 17, 57, 47, 237, 1, 47, 204, 50, 47, + 16, 237, 16, 237, 50, 49, 48, 0, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 19, 52, 54, 55, 23, 14, 3, 7, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, + 35, 34, 38, 55, 34, 7, 6, 22, 51, 50, 62, 2, 53, 52, 38, 125, 124, 107, 6, 30, + 54, 44, 32, 6, 18, 33, 14, 34, 48, 30, 13, 15, 31, 47, 32, 68, 68, 130, 35, 33, + 2, 32, 43, 17, 23, 15, 6, 31, 1, 165, 100, 105, 2, 55, 1, 11, 22, 31, 21, 8, + 4, 18, 30, 40, 22, 20, 40, 34, 21, 78, 95, 11, 49, 60, 12, 18, 22, 9, 29, 30, + 0, 1, 0, 134, 1, 25, 1, 133, 2, 114, 0, 14, 0, 79, 185, 0, 11, 255, 240, 179, + 22, 0, 77, 11, 184, 255, 248, 64, 41, 18, 0, 77, 4, 40, 19, 0, 77, 4, 24, 17, + 0, 77, 3, 16, 21, 0, 77, 3, 24, 20, 0, 77, 3, 16, 19, 0, 77, 6, 0, 150, + 14, 5, 150, 9, 16, 5, 152, 8, 96, 0, 184, 1, 0, 0, 63, 63, 237, 1, 16, 222, + 237, 222, 237, 204, 49, 48, 43, 43, 43, 43, 43, 43, 43, 19, 62, 3, 55, 35, 53, 51, + 21, 14, 3, 7, 186, 4, 24, 34, 42, 21, 177, 255, 18, 45, 40, 30, 4, 1, 25, 38, + 81, 77, 67, 24, 58, 49, 18, 64, 80, 89, 45, 0, 3, 0, 119, 1, 18, 1, 125, 2, + 121, 0, 27, 0, 41, 0, 53, 2, 166, 64, 11, 38, 40, 24, 0, 77, 38, 32, 17, 0, + 77, 26, 184, 255, 232, 179, 16, 0, 77, 26, 184, 255, 240, 179, 15, 0, 77, 26, 184, 255, + 232, 179, 14, 0, 77, 24, 184, 255, 240, 179, 18, 0, 77, 24, 184, 255, 232, 179, 17, 0, + 77, 20, 184, 255, 216, 180, 12, 17, 0, 76, 20, 184, 255, 224, 64, 31, 11, 0, 77, 15, + 32, 11, 17, 0, 76, 12, 32, 18, 0, 77, 12, 40, 17, 0, 77, 6, 32, 12, 17, 0, + 76, 6, 40, 11, 0, 77, 1, 184, 255, 224, 64, 10, 11, 17, 0, 76, 51, 8, 22, 0, + 77, 50, 184, 255, 232, 179, 46, 0, 77, 50, 184, 255, 240, 179, 43, 0, 77, 50, 184, 255, + 232, 179, 41, 0, 77, 49, 184, 255, 208, 179, 46, 0, 77, 49, 184, 255, 224, 179, 43, 0, + 77, 49, 184, 255, 208, 179, 41, 0, 77, 49, 184, 255, 224, 179, 32, 0, 77, 49, 184, 255, + 240, 179, 31, 0, 77, 49, 184, 255, 232, 179, 29, 0, 77, 49, 184, 255, 208, 180, 25, 27, + 0, 76, 49, 184, 255, 224, 179, 24, 0, 77, 49, 184, 255, 232, 64, 147, 21, 22, 0, 76, + 41, 48, 46, 0, 77, 40, 24, 46, 0, 77, 40, 24, 28, 0, 77, 40, 16, 27, 0, 77, + 40, 24, 26, 0, 77, 40, 16, 25, 0, 77, 40, 24, 24, 0, 77, 40, 24, 18, 0, 77, + 39, 16, 27, 0, 77, 38, 48, 46, 0, 77, 38, 24, 41, 0, 77, 38, 16, 31, 0, 77, + 38, 40, 30, 0, 77, 38, 24, 26, 28, 0, 76, 38, 16, 25, 0, 77, 38, 32, 24, 0, + 77, 38, 24, 23, 0, 77, 38, 16, 22, 0, 77, 38, 24, 17, 0, 77, 37, 64, 46, 0, + 77, 37, 40, 41, 0, 77, 37, 40, 31, 0, 77, 37, 24, 29, 0, 77, 37, 40, 28, 0, + 77, 37, 56, 25, 27, 0, 76, 37, 24, 21, 0, 77, 37, 48, 20, 0, 77, 37, 40, 18, + 0, 77, 26, 184, 255, 240, 179, 30, 0, 77, 26, 184, 255, 232, 179, 23, 0, 77, 26, 184, + 255, 200, 64, 9, 22, 0, 77, 24, 32, 30, 0, 77, 20, 184, 255, 216, 179, 32, 0, 77, + 20, 184, 255, 232, 180, 29, 30, 0, 76, 20, 184, 255, 240, 179, 20, 0, 77, 20, 184, 255, + 240, 179, 18, 0, 77, 15, 184, 255, 232, 64, 9, 32, 0, 77, 15, 24, 31, 0, 77, 15, + 184, 255, 232, 64, 14, 29, 0, 77, 12, 24, 41, 0, 77, 12, 40, 30, 0, 77, 10, 184, + 255, 240, 179, 23, 0, 77, 10, 184, 255, 216, 64, 14, 22, 0, 77, 6, 24, 30, 0, 77, + 6, 16, 29, 0, 77, 5, 184, 255, 240, 179, 31, 0, 77, 1, 184, 255, 216, 64, 73, 31, + 0, 77, 1, 16, 30, 0, 77, 1, 24, 29, 0, 77, 25, 51, 39, 11, 4, 22, 48, 150, + 14, 14, 8, 42, 150, 22, 22, 255, 36, 1, 36, 150, 0, 28, 150, 8, 39, 16, 24, 0, + 77, 91, 39, 1, 63, 39, 1, 39, 152, 25, 11, 95, 51, 143, 51, 2, 127, 51, 223, 51, + 2, 143, 51, 1, 51, 45, 152, 17, 99, 33, 152, 3, 184, 1, 1, 0, 63, 237, 63, 237, + 47, 93, 113, 114, 51, 51, 237, 113, 113, 43, 1, 47, 237, 220, 237, 93, 51, 47, 237, 17, + 51, 47, 237, 18, 23, 57, 49, 48, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 1, 20, 6, 35, 34, 46, 2, 53, 52, 54, 55, 38, 38, + 53, 52, 54, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 7, 20, 30, 2, 51, 50, 54, + 53, 52, 38, 39, 6, 6, 55, 52, 38, 35, 34, 6, 21, 20, 22, 23, 54, 54, 1, 125, + 67, 65, 38, 50, 30, 12, 32, 21, 20, 24, 65, 56, 33, 46, 29, 14, 26, 21, 32, 23, + 198, 7, 16, 26, 19, 37, 31, 51, 45, 19, 21, 128, 27, 33, 33, 27, 38, 42, 18, 22, + 1, 119, 45, 56, 19, 29, 34, 16, 25, 44, 14, 15, 42, 23, 40, 58, 18, 27, 33, 16, + 25, 40, 14, 16, 40, 32, 7, 16, 13, 9, 27, 18, 25, 28, 11, 14, 30, 148, 11, 29, + 28, 14, 18, 33, 8, 13, 28, 0, 2, 0, 132, 1, 24, 1, 137, 2, 121, 0, 22, 0, + 35, 0, 140, 64, 12, 28, 24, 24, 0, 77, 28, 32, 22, 23, 0, 76, 22, 184, 255, 216, + 64, 87, 11, 13, 0, 76, 18, 16, 25, 0, 77, 17, 8, 25, 0, 77, 17, 24, 16, 0, + 77, 17, 32, 11, 15, 0, 76, 13, 24, 14, 16, 0, 76, 13, 40, 11, 13, 0, 76, 6, + 24, 23, 24, 0, 76, 6, 32, 22, 0, 77, 6, 24, 21, 0, 77, 6, 32, 14, 16, 0, + 76, 5, 56, 21, 0, 77, 7, 26, 150, 0, 34, 150, 15, 4, 4, 15, 23, 152, 10, 10, + 3, 29, 152, 20, 99, 4, 152, 3, 95, 0, 63, 237, 63, 237, 17, 57, 47, 237, 1, 47, + 51, 47, 16, 237, 220, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 1, 20, 6, 35, 39, 54, 54, 55, 6, 6, 35, 34, 46, 2, 53, 52, 62, + 2, 51, 50, 22, 7, 50, 54, 55, 54, 38, 35, 34, 14, 2, 21, 20, 1, 137, 123, 116, + 2, 65, 92, 13, 18, 33, 14, 34, 48, 30, 13, 15, 31, 47, 32, 67, 69, 130, 18, 34, + 16, 2, 32, 43, 17, 23, 15, 7, 1, 231, 100, 107, 54, 2, 42, 43, 8, 5, 18, 31, + 40, 21, 19, 41, 34, 21, 77, 95, 4, 6, 49, 60, 12, 18, 21, 10, 58, 255, 255, 0, + 116, 255, 250, 1, 128, 1, 97, 2, 7, 1, 111, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 126, 0, 1, 1, 127, 1, 90, 2, 7, 0, 148, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 124, 0, 1, 1, 120, 1, 97, 2, 7, 0, 141, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 126, 255, 250, 1, 118, 1, 97, 2, 7, 0, 142, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 105, 0, 1, 1, 128, 1, 90, 2, 7, 1, 112, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 127, 255, 250, 1, 119, 1, 90, 2, 7, 1, 113, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 125, 255, 250, 1, 130, 1, 92, 2, 7, 1, 114, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 134, 0, 1, 1, 133, 1, 90, 2, 7, 1, 115, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 119, 255, 250, 1, 125, 1, 97, 2, 7, 1, 116, 0, 0, 254, 232, 0, 0, 255, 255, 0, + 132, 0, 0, 1, 137, 1, 97, 2, 7, 1, 117, 0, 0, 254, 232, 0, 0, 0, 2, 0, + 53, 255, 243, 1, 173, 2, 181, 0, 33, 0, 47, 0, 192, 64, 32, 35, 24, 17, 0, 77, + 35, 40, 15, 0, 77, 35, 16, 9, 0, 77, 28, 32, 12, 0, 77, 28, 24, 11, 0, 77, + 28, 32, 9, 10, 0, 76, 23, 184, 255, 240, 179, 16, 0, 77, 13, 184, 255, 240, 179, 18, + 0, 77, 13, 184, 255, 240, 179, 15, 0, 77, 9, 184, 255, 216, 179, 9, 0, 77, 8, 184, + 255, 240, 180, 13, 14, 0, 76, 8, 184, 255, 232, 179, 12, 0, 77, 8, 184, 255, 224, 64, + 54, 10, 11, 0, 76, 3, 16, 12, 0, 77, 3, 24, 11, 0, 77, 3, 16, 10, 0, 77, + 3, 24, 9, 0, 77, 37, 11, 22, 22, 11, 49, 34, 14, 0, 33, 33, 31, 0, 48, 34, + 0, 33, 31, 14, 32, 32, 25, 6, 21, 21, 18, 25, 92, 42, 6, 0, 47, 205, 63, 205, + 50, 47, 17, 18, 57, 47, 51, 51, 205, 50, 50, 1, 16, 196, 50, 50, 47, 16, 205, 50, + 16, 206, 50, 47, 16, 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 55, 17, 52, 62, 2, 51, 50, 30, 2, 21, 20, 6, 7, 21, 20, + 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 53, 53, 7, 39, 55, 54, 54, 53, + 52, 46, 2, 35, 34, 14, 2, 21, 144, 24, 40, 54, 29, 38, 47, 27, 9, 102, 84, 42, + 45, 29, 38, 16, 33, 23, 64, 43, 44, 60, 36, 15, 59, 32, 173, 57, 64, 4, 12, 21, + 17, 14, 24, 18, 11, 228, 1, 2, 61, 81, 46, 19, 28, 45, 54, 26, 95, 157, 70, 39, + 63, 57, 22, 11, 62, 20, 23, 26, 45, 59, 32, 7, 42, 48, 130, 52, 121, 76, 15, 30, + 24, 15, 10, 30, 53, 43, 0, 2, 0, 27, 255, 244, 1, 217, 1, 134, 0, 32, 0, 49, + 0, 66, 64, 25, 70, 14, 86, 14, 2, 5, 14, 1, 12, 13, 13, 33, 32, 51, 43, 3, + 21, 50, 0, 46, 46, 9, 38, 26, 12, 184, 255, 192, 182, 9, 14, 72, 12, 12, 9, 16, + 0, 47, 205, 50, 47, 43, 47, 205, 18, 57, 47, 205, 1, 16, 214, 205, 50, 16, 222, 205, + 51, 47, 51, 49, 48, 0, 93, 93, 55, 34, 21, 21, 20, 22, 23, 22, 22, 51, 50, 54, + 55, 51, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 30, 2, 21, 21, 39, 52, + 39, 38, 38, 35, 34, 6, 7, 6, 21, 21, 20, 51, 33, 50, 53, 112, 4, 3, 2, 28, + 68, 42, 44, 73, 27, 32, 29, 94, 54, 47, 81, 60, 35, 35, 60, 81, 47, 46, 81, 61, + 35, 82, 5, 26, 69, 40, 41, 69, 27, 6, 4, 1, 20, 3, 183, 2, 110, 4, 5, 3, + 29, 31, 37, 30, 35, 43, 32, 54, 73, 41, 42, 74, 54, 32, 32, 54, 74, 42, 5, 125, + 6, 7, 26, 31, 32, 27, 6, 8, 107, 4, 4, 0, 3, 0, 12, 255, 249, 1, 224, 2, + 114, 0, 3, 0, 46, 0, 57, 1, 29, 185, 0, 42, 255, 232, 179, 17, 0, 77, 41, 184, + 255, 232, 179, 21, 0, 77, 41, 184, 255, 240, 179, 20, 0, 77, 41, 184, 255, 232, 179, 19, + 0, 77, 41, 184, 255, 224, 179, 18, 0, 77, 41, 184, 255, 232, 179, 16, 0, 77, 41, 184, + 255, 224, 179, 15, 0, 77, 41, 184, 255, 232, 179, 14, 0, 77, 37, 184, 255, 224, 179, 19, + 0, 77, 37, 184, 255, 232, 180, 16, 18, 0, 76, 37, 184, 255, 240, 180, 14, 15, 0, 76, + 32, 184, 255, 224, 179, 24, 0, 77, 32, 184, 255, 232, 179, 23, 0, 77, 32, 184, 255, 224, + 180, 19, 22, 0, 76, 32, 184, 255, 216, 179, 18, 0, 77, 32, 184, 255, 232, 64, 81, 17, + 0, 77, 2, 0, 3, 0, 156, 58, 2, 20, 58, 58, 2, 52, 150, 50, 53, 47, 1, 1, + 47, 26, 26, 14, 14, 46, 39, 37, 19, 150, 34, 34, 39, 3, 3, 10, 150, 39, 53, 97, + 57, 47, 47, 54, 50, 96, 37, 63, 14, 79, 14, 2, 14, 152, 48, 15, 64, 15, 2, 15, + 15, 29, 4, 4, 7, 152, 44, 104, 25, 25, 22, 152, 29, 102, 2, 3, 89, 0, 1, 91, + 0, 63, 51, 63, 51, 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 47, 113, 237, 113, 57, + 63, 51, 51, 47, 205, 63, 1, 47, 237, 51, 47, 17, 51, 47, 237, 50, 16, 205, 50, 47, + 50, 47, 47, 51, 47, 16, 220, 50, 237, 135, 16, 43, 135, 125, 196, 49, 48, 1, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 51, 35, 1, 51, 3, 22, + 22, 51, 50, 54, 53, 52, 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, + 39, 54, 54, 51, 50, 30, 2, 21, 20, 6, 7, 22, 21, 20, 14, 2, 35, 34, 39, 1, + 54, 54, 55, 51, 21, 35, 53, 6, 6, 7, 82, 70, 1, 123, 70, 159, 11, 33, 20, 23, + 32, 38, 38, 12, 22, 26, 28, 25, 14, 14, 36, 12, 19, 15, 49, 26, 17, 32, 25, 15, + 15, 15, 42, 12, 26, 41, 30, 47, 37, 254, 241, 35, 47, 24, 41, 59, 20, 33, 18, 2, + 107, 253, 204, 4, 8, 13, 16, 22, 12, 50, 11, 18, 14, 10, 10, 5, 43, 9, 13, 7, + 15, 25, 18, 15, 30, 11, 20, 45, 14, 29, 23, 14, 14, 2, 42, 14, 28, 23, 250, 168, + 11, 14, 6, 0, 3, 0, 21, 255, 249, 1, 227, 2, 120, 0, 3, 0, 34, 0, 76, 1, + 61, 185, 0, 71, 255, 224, 180, 20, 21, 0, 76, 71, 184, 255, 232, 180, 17, 19, 0, 76, + 71, 184, 255, 224, 180, 14, 16, 0, 76, 64, 184, 255, 200, 179, 16, 0, 77, 64, 184, 255, + 208, 180, 14, 15, 0, 76, 63, 184, 255, 224, 179, 24, 0, 77, 63, 184, 255, 232, 179, 23, + 0, 77, 63, 184, 255, 224, 179, 22, 0, 77, 63, 184, 255, 232, 180, 19, 21, 0, 76, 63, + 184, 255, 224, 179, 18, 0, 77, 63, 184, 255, 216, 179, 17, 0, 77, 31, 184, 255, 224, 179, + 21, 0, 77, 31, 184, 255, 232, 179, 20, 0, 77, 31, 184, 255, 224, 180, 18, 19, 0, 76, + 28, 184, 255, 240, 179, 21, 0, 77, 28, 184, 255, 232, 180, 17, 20, 0, 76, 28, 184, 255, + 216, 180, 15, 16, 0, 76, 28, 184, 255, 224, 179, 14, 0, 77, 28, 184, 255, 208, 64, 79, + 13, 0, 77, 24, 24, 21, 22, 0, 76, 67, 50, 150, 65, 69, 57, 76, 45, 45, 76, 41, + 150, 69, 0, 2, 1, 2, 156, 3, 0, 20, 3, 0, 3, 3, 69, 78, 16, 150, 4, 29, + 22, 23, 9, 1, 1, 34, 150, 9, 67, 45, 46, 46, 60, 35, 35, 38, 74, 104, 56, 56, + 53, 60, 102, 22, 22, 19, 152, 26, 99, 34, 152, 6, 97, 2, 3, 89, 0, 1, 91, 0, + 63, 51, 63, 51, 63, 237, 63, 237, 50, 47, 63, 205, 50, 47, 63, 205, 50, 47, 17, 57, + 47, 205, 57, 1, 47, 237, 51, 47, 16, 192, 50, 47, 198, 237, 16, 206, 50, 47, 135, 43, + 135, 125, 196, 1, 24, 16, 253, 196, 50, 47, 16, 198, 16, 212, 237, 50, 49, 48, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 51, 35, + 1, 51, 5, 21, 35, 38, 52, 53, 52, 54, 55, 55, 54, 54, 53, 52, 38, 35, 34, 6, + 7, 39, 54, 54, 51, 50, 22, 21, 20, 14, 2, 7, 19, 22, 22, 51, 50, 54, 53, 52, + 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, + 2, 21, 20, 7, 22, 21, 20, 14, 2, 35, 34, 39, 104, 70, 1, 123, 70, 254, 249, 198, + 1, 41, 26, 22, 23, 19, 23, 16, 15, 32, 12, 33, 18, 51, 26, 48, 47, 27, 37, 40, + 13, 208, 11, 33, 20, 23, 32, 38, 38, 12, 22, 26, 28, 25, 14, 14, 36, 12, 19, 15, + 49, 26, 17, 32, 25, 15, 30, 42, 12, 26, 41, 30, 47, 37, 2, 107, 193, 50, 3, 17, + 3, 32, 35, 16, 15, 14, 22, 14, 17, 16, 12, 13, 39, 19, 19, 50, 32, 26, 36, 28, + 22, 12, 254, 141, 4, 8, 13, 16, 22, 12, 50, 11, 18, 14, 10, 10, 5, 43, 9, 13, + 7, 15, 25, 18, 32, 24, 19, 46, 14, 29, 23, 14, 14, 0, 5, 255, 255, 255, 249, 1, + 215, 2, 114, 0, 31, 0, 35, 0, 46, 0, 57, 0, 68, 0, 253, 64, 12, 49, 48, 22, + 0, 77, 30, 40, 14, 21, 0, 76, 24, 184, 255, 224, 180, 14, 21, 0, 76, 18, 184, 255, + 200, 179, 23, 0, 77, 18, 184, 255, 208, 179, 22, 0, 77, 14, 184, 255, 208, 64, 17, 14, + 21, 0, 76, 8, 32, 14, 21, 0, 76, 4, 40, 22, 23, 0, 76, 59, 184, 255, 240, 64, + 112, 23, 0, 77, 51, 32, 24, 0, 77, 51, 24, 23, 0, 77, 51, 32, 22, 0, 77, 49, + 24, 23, 0, 77, 49, 16, 22, 0, 77, 48, 32, 23, 24, 0, 76, 18, 24, 24, 0, 77, + 4, 32, 24, 0, 77, 41, 150, 39, 42, 36, 32, 34, 33, 34, 156, 35, 32, 20, 35, 35, + 32, 33, 36, 35, 35, 22, 3, 50, 61, 19, 4, 6, 63, 150, 16, 16, 22, 58, 150, 6, + 6, 52, 150, 0, 47, 150, 22, 42, 97, 46, 36, 36, 43, 39, 96, 34, 35, 89, 32, 33, + 19, 61, 61, 11, 55, 3, 50, 50, 27, 104, 66, 11, 102, 0, 63, 205, 63, 57, 17, 51, + 205, 17, 57, 17, 51, 47, 51, 63, 51, 63, 51, 51, 47, 205, 63, 1, 47, 237, 220, 237, + 51, 47, 237, 17, 51, 47, 237, 18, 23, 57, 17, 51, 47, 47, 51, 135, 16, 43, 135, 125, + 196, 1, 24, 16, 220, 50, 237, 49, 48, 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, + 43, 43, 43, 43, 43, 43, 43, 43, 55, 52, 54, 55, 38, 38, 53, 52, 62, 2, 51, 50, + 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, 35, 34, 46, 2, 7, 35, 1, 51, + 5, 54, 54, 55, 51, 21, 35, 53, 6, 6, 7, 1, 52, 38, 39, 6, 21, 20, 22, 51, + 50, 54, 39, 20, 22, 23, 54, 53, 52, 38, 35, 34, 6, 255, 18, 25, 15, 19, 17, 28, + 36, 19, 18, 36, 28, 17, 15, 23, 20, 26, 19, 30, 39, 20, 21, 39, 30, 18, 186, 70, + 1, 123, 70, 254, 80, 35, 47, 24, 41, 59, 20, 33, 18, 1, 123, 41, 26, 31, 32, 17, + 19, 30, 89, 30, 22, 29, 22, 21, 14, 24, 69, 12, 36, 11, 9, 28, 23, 18, 27, 18, + 8, 9, 18, 27, 17, 14, 28, 13, 9, 29, 25, 19, 29, 19, 10, 8, 18, 29, 48, 2, + 107, 58, 14, 28, 23, 250, 168, 11, 14, 6, 254, 68, 18, 15, 8, 16, 25, 14, 12, 13, + 130, 14, 15, 6, 17, 18, 10, 13, 13, 0, 5, 0, 11, 255, 249, 1, 215, 2, 121, 0, + 31, 0, 35, 0, 79, 0, 90, 0, 101, 1, 162, 185, 0, 84, 255, 232, 179, 24, 0, 77, + 84, 184, 255, 224, 179, 22, 0, 77, 83, 184, 255, 216, 64, 19, 23, 0, 77, 82, 80, 24, + 0, 77, 82, 40, 23, 0, 77, 82, 64, 22, 0, 77, 74, 184, 255, 224, 180, 14, 21, 0, + 76, 74, 184, 255, 208, 180, 11, 12, 0, 76, 70, 184, 255, 224, 179, 24, 0, 77, 70, 184, + 255, 224, 180, 14, 21, 0, 76, 69, 184, 255, 224, 179, 22, 0, 77, 69, 184, 255, 232, 180, + 14, 21, 0, 76, 64, 184, 255, 224, 64, 11, 17, 24, 0, 76, 30, 40, 14, 21, 0, 76, + 24, 184, 255, 224, 180, 14, 21, 0, 76, 19, 184, 255, 224, 179, 22, 0, 77, 18, 184, 255, + 216, 179, 24, 0, 77, 18, 184, 255, 208, 179, 22, 0, 77, 14, 184, 255, 216, 64, 136, 14, + 21, 0, 76, 8, 40, 14, 21, 0, 76, 4, 24, 24, 0, 77, 4, 48, 22, 0, 77, 3, + 40, 22, 0, 77, 82, 32, 23, 0, 77, 82, 8, 22, 0, 77, 18, 40, 23, 0, 77, 4, + 32, 23, 0, 77, 51, 150, 66, 66, 42, 150, 72, 79, 32, 34, 33, 34, 156, 35, 32, 20, + 35, 35, 32, 33, 33, 79, 58, 58, 79, 46, 46, 79, 35, 35, 22, 3, 83, 94, 19, 4, + 6, 96, 150, 16, 16, 22, 91, 150, 6, 6, 85, 150, 0, 80, 150, 31, 22, 1, 22, 69, + 111, 46, 1, 46, 48, 47, 64, 47, 96, 47, 3, 47, 47, 61, 36, 36, 39, 152, 77, 100, + 57, 57, 54, 152, 61, 99, 34, 35, 89, 32, 33, 91, 19, 94, 94, 184, 255, 224, 64, 22, + 29, 0, 77, 52, 94, 1, 94, 11, 88, 152, 3, 83, 75, 83, 1, 83, 27, 104, 99, 152, + 11, 102, 0, 63, 237, 63, 57, 113, 17, 51, 237, 17, 57, 113, 43, 17, 51, 63, 51, 63, + 51, 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 47, 113, 205, 113, 57, 1, 47, 113, 237, + 220, 237, 51, 47, 237, 17, 51, 47, 237, 18, 23, 57, 17, 51, 47, 47, 51, 47, 17, 51, + 47, 17, 51, 47, 135, 16, 43, 135, 125, 196, 1, 24, 16, 221, 237, 51, 47, 237, 49, 48, + 0, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 52, 54, 55, 38, 38, 53, 52, 62, 2, 51, + 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, 35, 34, 46, 2, 7, 35, 1, + 51, 5, 22, 22, 51, 50, 54, 53, 52, 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, + 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, + 35, 34, 39, 1, 52, 38, 39, 6, 21, 20, 22, 51, 50, 54, 39, 20, 22, 23, 54, 53, + 52, 38, 35, 34, 6, 255, 17, 26, 14, 20, 17, 28, 36, 19, 18, 36, 28, 17, 14, 23, + 19, 26, 19, 30, 39, 20, 21, 39, 30, 18, 175, 69, 1, 122, 71, 254, 86, 11, 33, 20, + 23, 33, 39, 38, 12, 23, 25, 28, 25, 14, 14, 36, 12, 19, 15, 49, 26, 17, 32, 25, + 15, 15, 15, 20, 23, 12, 27, 41, 30, 47, 37, 1, 137, 41, 26, 31, 32, 17, 19, 30, + 89, 30, 22, 29, 22, 21, 14, 24, 69, 12, 36, 12, 8, 28, 23, 18, 27, 18, 8, 9, + 18, 27, 17, 14, 29, 12, 9, 29, 25, 19, 29, 19, 10, 8, 18, 29, 48, 2, 107, 189, + 5, 8, 13, 17, 21, 12, 50, 11, 18, 15, 9, 10, 5, 43, 9, 13, 7, 15, 25, 18, + 15, 29, 11, 10, 33, 23, 14, 29, 23, 14, 14, 254, 200, 18, 15, 8, 16, 25, 14, 12, + 13, 130, 14, 15, 6, 17, 18, 10, 13, 13, 0, 5, 0, 11, 255, 249, 1, 215, 2, 114, + 0, 31, 0, 35, 0, 46, 0, 57, 0, 85, 1, 251, 185, 0, 62, 255, 232, 180, 17, 20, + 0, 76, 62, 184, 255, 224, 179, 16, 0, 77, 62, 184, 255, 216, 180, 14, 15, 0, 76, 60, + 184, 255, 232, 180, 16, 20, 0, 76, 60, 184, 255, 224, 179, 15, 0, 77, 60, 184, 255, 216, + 64, 25, 14, 0, 77, 30, 16, 21, 0, 77, 30, 24, 19, 20, 0, 76, 30, 32, 18, 0, + 77, 30, 24, 17, 0, 77, 24, 184, 255, 232, 179, 20, 0, 77, 24, 184, 255, 240, 180, 17, + 19, 0, 76, 18, 184, 255, 208, 179, 22, 0, 77, 14, 184, 255, 216, 179, 20, 0, 77, 14, + 184, 255, 224, 179, 19, 0, 77, 14, 184, 255, 240, 179, 18, 0, 77, 14, 184, 255, 224, 64, + 63, 17, 0, 77, 8, 24, 20, 21, 0, 76, 8, 16, 19, 0, 77, 8, 24, 17, 18, 0, + 76, 5, 16, 22, 0, 77, 4, 40, 22, 0, 77, 39, 16, 22, 0, 77, 38, 40, 22, 0, + 77, 37, 24, 31, 33, 0, 76, 37, 32, 30, 0, 77, 37, 32, 23, 24, 0, 76, 30, 24, + 22, 0, 77, 25, 184, 255, 248, 179, 35, 0, 77, 24, 184, 255, 240, 179, 35, 0, 77, 8, + 184, 255, 240, 64, 74, 22, 0, 77, 4, 24, 35, 0, 77, 52, 39, 1, 34, 32, 35, 32, + 156, 86, 34, 20, 86, 86, 34, 33, 33, 67, 67, 77, 83, 83, 74, 150, 61, 85, 16, 58, + 1, 58, 150, 82, 32, 47, 0, 77, 82, 77, 3, 39, 50, 19, 4, 16, 47, 150, 6, 41, + 150, 0, 36, 150, 22, 35, 35, 22, 52, 150, 16, 22, 159, 77, 191, 77, 2, 77, 58, 184, + 255, 192, 179, 47, 0, 77, 58, 184, 255, 192, 64, 24, 31, 0, 77, 48, 58, 64, 58, 80, + 58, 112, 58, 144, 58, 176, 58, 6, 58, 58, 71, 85, 152, 82, 96, 68, 184, 255, 208, 179, + 32, 0, 77, 68, 184, 255, 192, 179, 31, 0, 77, 68, 184, 255, 224, 64, 50, 28, 0, 77, + 64, 68, 1, 68, 68, 71, 152, 64, 100, 34, 35, 89, 32, 33, 91, 19, 48, 50, 1, 50, + 39, 3, 39, 39, 32, 29, 0, 77, 39, 24, 23, 24, 0, 76, 64, 39, 1, 39, 11, 44, + 152, 27, 104, 55, 152, 11, 102, 0, 63, 237, 63, 237, 17, 57, 113, 43, 43, 17, 51, 16, + 201, 113, 50, 63, 51, 63, 51, 63, 237, 50, 47, 113, 43, 43, 43, 63, 237, 18, 57, 47, + 113, 43, 43, 205, 113, 1, 47, 212, 237, 17, 51, 47, 16, 253, 212, 237, 212, 237, 18, 23, + 57, 47, 51, 43, 237, 114, 50, 220, 237, 51, 47, 17, 51, 47, 51, 47, 135, 16, 43, 135, + 125, 196, 0, 113, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, + 52, 54, 55, 38, 38, 53, 52, 62, 2, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, + 20, 14, 2, 35, 34, 46, 2, 7, 35, 1, 51, 3, 52, 38, 39, 6, 21, 20, 22, 51, + 50, 54, 39, 20, 22, 23, 54, 53, 52, 38, 35, 34, 6, 3, 22, 22, 21, 20, 6, 35, + 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 62, 3, 55, 51, 21, 35, 255, + 17, 26, 14, 20, 17, 28, 36, 19, 18, 36, 28, 17, 14, 23, 19, 26, 19, 30, 39, 20, + 21, 39, 30, 18, 175, 69, 1, 122, 71, 48, 41, 26, 31, 32, 17, 19, 30, 89, 30, 22, + 29, 22, 21, 14, 24, 221, 56, 54, 58, 59, 24, 46, 12, 14, 10, 35, 21, 26, 34, 47, + 64, 3, 3, 3, 2, 1, 147, 96, 69, 12, 36, 12, 8, 28, 23, 18, 27, 18, 8, 9, + 18, 27, 17, 14, 29, 12, 9, 29, 25, 19, 29, 19, 10, 8, 18, 29, 48, 2, 107, 253, + 218, 18, 15, 8, 16, 25, 14, 12, 13, 130, 14, 15, 6, 17, 18, 10, 13, 13, 1, 87, + 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, 28, 29, 21, 50, + 0, 5, 0, 11, 255, 249, 1, 215, 2, 114, 0, 31, 0, 35, 0, 46, 0, 57, 0, 72, + 0, 210, 64, 12, 30, 32, 17, 21, 0, 76, 30, 24, 16, 0, 77, 24, 184, 255, 224, 180, + 17, 21, 0, 76, 24, 184, 255, 232, 179, 16, 0, 77, 20, 184, 255, 216, 179, 16, 0, 77, + 14, 184, 255, 224, 180, 17, 21, 0, 76, 14, 184, 255, 232, 64, 93, 16, 0, 77, 8, 24, + 17, 21, 0, 76, 8, 32, 16, 0, 77, 32, 34, 33, 34, 156, 35, 32, 20, 35, 35, 32, + 33, 33, 112, 64, 1, 64, 58, 150, 72, 63, 150, 67, 3, 39, 50, 19, 4, 16, 47, 150, + 6, 41, 150, 0, 36, 150, 22, 35, 35, 22, 52, 150, 16, 22, 67, 63, 152, 65, 96, 58, + 97, 34, 35, 89, 32, 33, 91, 19, 50, 66, 50, 1, 52, 50, 1, 50, 11, 44, 152, 3, + 39, 39, 27, 104, 55, 152, 11, 102, 0, 63, 237, 63, 57, 17, 51, 237, 17, 57, 113, 113, + 17, 51, 63, 51, 63, 51, 63, 63, 237, 50, 1, 47, 212, 237, 17, 51, 47, 16, 253, 220, + 237, 212, 237, 18, 23, 57, 47, 237, 222, 237, 204, 93, 50, 47, 135, 16, 43, 135, 125, 196, + 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 52, 54, 55, 38, 38, 53, 52, + 62, 2, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, 35, 34, 46, 2, + 7, 35, 1, 51, 3, 52, 38, 39, 6, 21, 20, 22, 51, 50, 54, 39, 20, 22, 23, 54, + 53, 52, 38, 35, 34, 6, 39, 62, 3, 55, 35, 53, 51, 21, 14, 3, 7, 255, 17, 26, + 14, 20, 17, 28, 36, 19, 18, 36, 28, 17, 14, 23, 19, 26, 19, 30, 39, 20, 21, 39, + 30, 18, 175, 69, 1, 122, 71, 48, 41, 26, 31, 32, 17, 19, 30, 89, 30, 22, 29, 22, + 21, 14, 24, 253, 6, 14, 18, 25, 18, 104, 175, 24, 30, 20, 13, 6, 69, 12, 36, 12, + 8, 28, 23, 18, 27, 18, 8, 9, 18, 27, 17, 14, 29, 12, 9, 29, 25, 19, 29, 19, + 10, 8, 18, 29, 48, 2, 107, 253, 218, 18, 15, 8, 16, 25, 14, 12, 13, 130, 14, 15, + 6, 17, 18, 10, 13, 13, 180, 34, 52, 45, 43, 26, 50, 41, 27, 44, 47, 54, 37, 0, + 3, 0, 11, 255, 247, 1, 215, 2, 114, 0, 10, 0, 38, 0, 42, 0, 152, 185, 0, 15, + 255, 216, 180, 14, 20, 0, 76, 13, 184, 255, 216, 180, 14, 20, 0, 76, 21, 184, 255, 232, + 64, 45, 28, 0, 77, 39, 41, 40, 41, 156, 42, 39, 20, 42, 39, 42, 42, 14, 38, 11, + 30, 35, 20, 20, 30, 14, 37, 37, 27, 150, 14, 40, 40, 0, 5, 150, 3, 6, 0, 41, + 42, 89, 39, 40, 91, 30, 11, 184, 255, 192, 64, 22, 28, 32, 72, 11, 11, 24, 38, 152, + 35, 101, 24, 152, 17, 104, 6, 97, 10, 0, 0, 7, 3, 96, 0, 63, 51, 51, 47, 205, + 63, 63, 237, 63, 237, 18, 57, 47, 43, 205, 63, 51, 63, 51, 1, 47, 220, 50, 237, 17, + 51, 47, 47, 237, 51, 47, 16, 204, 50, 47, 50, 16, 205, 50, 17, 51, 47, 135, 43, 135, + 125, 196, 49, 48, 0, 43, 1, 43, 43, 19, 54, 54, 55, 51, 21, 35, 53, 6, 6, 7, + 1, 22, 22, 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, + 62, 3, 55, 51, 21, 35, 5, 35, 1, 51, 16, 35, 47, 24, 41, 59, 20, 33, 18, 1, + 72, 56, 54, 58, 59, 24, 46, 12, 14, 10, 35, 21, 26, 34, 47, 64, 3, 3, 3, 2, + 1, 147, 96, 254, 228, 69, 1, 122, 71, 2, 49, 14, 28, 23, 250, 168, 11, 14, 6, 254, + 162, 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, 28, 29, 21, + 50, 200, 2, 107, 0, 3, 0, 21, 255, 247, 1, 228, 2, 121, 0, 27, 0, 31, 0, 60, + 1, 16, 185, 0, 57, 255, 224, 179, 21, 0, 77, 57, 184, 255, 232, 179, 20, 0, 77, 57, + 184, 255, 240, 179, 19, 0, 77, 57, 184, 255, 232, 179, 18, 0, 77, 54, 184, 255, 224, 64, + 20, 14, 21, 0, 76, 50, 32, 22, 0, 77, 50, 24, 21, 0, 77, 50, 32, 20, 0, 77, + 4, 184, 255, 216, 180, 14, 21, 0, 76, 2, 184, 255, 208, 64, 68, 14, 21, 0, 76, 42, + 150, 55, 55, 32, 35, 28, 30, 29, 30, 156, 31, 28, 20, 31, 31, 28, 29, 29, 60, 35, + 49, 49, 35, 31, 31, 3, 27, 0, 19, 24, 9, 9, 19, 3, 26, 26, 16, 150, 3, 48, + 48, 45, 152, 52, 99, 60, 152, 34, 97, 30, 31, 89, 28, 29, 91, 63, 19, 79, 19, 2, + 19, 152, 0, 184, 255, 192, 64, 11, 28, 33, 72, 0, 0, 13, 27, 152, 24, 101, 10, 184, + 255, 208, 179, 33, 0, 77, 10, 184, 255, 216, 180, 31, 32, 0, 76, 10, 184, 255, 208, 179, + 30, 0, 77, 10, 184, 255, 192, 64, 10, 28, 29, 0, 76, 10, 10, 13, 152, 6, 104, 0, + 63, 237, 50, 47, 43, 43, 43, 43, 63, 237, 18, 57, 47, 43, 237, 113, 63, 51, 63, 51, + 63, 237, 63, 237, 50, 47, 1, 47, 237, 51, 47, 16, 204, 50, 47, 50, 16, 205, 50, 17, + 51, 47, 47, 51, 47, 17, 51, 51, 47, 135, 16, 43, 135, 125, 196, 1, 24, 16, 205, 50, + 47, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 22, 22, 21, 20, 6, + 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 62, 3, 55, 51, 21, 35, + 5, 35, 1, 51, 5, 21, 35, 53, 52, 54, 55, 55, 54, 54, 53, 52, 38, 35, 34, 6, + 7, 39, 54, 54, 51, 50, 22, 21, 20, 14, 2, 7, 1, 105, 56, 54, 58, 59, 24, 46, + 12, 14, 10, 35, 21, 26, 34, 47, 64, 3, 3, 3, 2, 1, 147, 96, 254, 253, 70, 1, + 123, 70, 254, 247, 198, 40, 26, 22, 23, 19, 23, 16, 15, 32, 12, 32, 17, 51, 26, 48, + 47, 27, 37, 41, 13, 163, 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, + 23, 31, 28, 29, 21, 50, 200, 2, 107, 195, 50, 23, 32, 35, 16, 15, 14, 25, 14, 17, + 16, 13, 13, 40, 19, 19, 50, 32, 26, 37, 28, 24, 12, 0, 3, 0, 19, 255, 247, 1, + 220, 2, 121, 0, 42, 0, 70, 0, 74, 0, 243, 185, 0, 47, 255, 208, 180, 14, 21, 0, + 76, 45, 184, 255, 208, 180, 14, 21, 0, 76, 37, 184, 255, 232, 180, 14, 21, 0, 76, 34, + 184, 255, 208, 180, 14, 21, 0, 76, 28, 184, 255, 224, 64, 57, 17, 24, 0, 76, 71, 73, + 72, 73, 156, 74, 71, 20, 74, 71, 74, 74, 46, 70, 43, 150, 62, 67, 52, 52, 62, 46, + 69, 69, 59, 150, 46, 72, 72, 42, 33, 15, 150, 30, 30, 6, 150, 35, 42, 22, 22, 42, + 10, 10, 42, 73, 74, 89, 71, 72, 91, 62, 43, 184, 255, 192, 64, 11, 28, 33, 72, 43, + 43, 56, 70, 152, 67, 101, 53, 184, 255, 192, 179, 29, 0, 77, 53, 184, 255, 216, 64, 36, + 28, 0, 77, 53, 53, 56, 152, 49, 104, 33, 111, 10, 1, 10, 48, 11, 64, 11, 96, 11, + 3, 11, 11, 25, 0, 0, 3, 152, 40, 100, 21, 21, 18, 152, 25, 99, 0, 63, 237, 50, + 47, 63, 237, 50, 47, 17, 57, 47, 113, 205, 113, 57, 63, 237, 50, 47, 43, 43, 63, 237, + 18, 57, 47, 43, 205, 63, 51, 63, 51, 1, 47, 51, 47, 17, 51, 47, 16, 221, 237, 51, + 47, 237, 50, 17, 51, 47, 47, 237, 51, 47, 16, 204, 50, 47, 50, 16, 237, 50, 17, 51, + 47, 135, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, 43, 19, 22, 22, 51, 50, 54, + 53, 52, 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, + 50, 30, 2, 21, 20, 6, 7, 22, 21, 20, 14, 2, 35, 34, 39, 5, 22, 22, 21, 20, + 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 62, 3, 55, 51, 21, + 35, 5, 35, 1, 51, 34, 11, 33, 20, 23, 33, 39, 38, 12, 23, 25, 28, 25, 14, 14, + 36, 12, 19, 15, 49, 26, 17, 32, 25, 15, 15, 15, 43, 12, 27, 41, 30, 47, 37, 1, + 86, 56, 54, 58, 59, 24, 46, 12, 14, 10, 35, 21, 26, 34, 47, 64, 3, 3, 3, 2, + 1, 147, 96, 254, 245, 70, 1, 123, 70, 1, 174, 5, 8, 13, 17, 21, 12, 50, 11, 18, + 15, 9, 10, 5, 43, 9, 13, 7, 15, 25, 18, 15, 30, 11, 20, 45, 14, 29, 23, 14, + 14, 218, 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, 28, 29, + 21, 50, 200, 2, 107, 0, 4, 0, 15, 255, 247, 1, 229, 2, 114, 0, 27, 0, 40, 0, + 45, 0, 49, 0, 200, 64, 16, 40, 24, 22, 0, 77, 39, 32, 22, 0, 77, 38, 32, 22, + 0, 77, 4, 184, 255, 216, 180, 14, 21, 0, 76, 2, 184, 255, 208, 64, 62, 14, 21, 0, + 76, 30, 29, 32, 150, 35, 41, 35, 48, 46, 49, 46, 156, 47, 48, 20, 47, 48, 40, 35, + 47, 47, 44, 37, 49, 49, 3, 27, 0, 150, 19, 24, 9, 9, 19, 3, 26, 26, 16, 150, + 3, 48, 49, 89, 46, 47, 91, 41, 40, 96, 37, 29, 44, 32, 35, 34, 97, 19, 0, 184, + 255, 192, 64, 11, 28, 33, 72, 0, 0, 13, 27, 152, 24, 101, 10, 184, 255, 216, 179, 29, + 0, 77, 10, 184, 255, 208, 64, 9, 28, 0, 77, 10, 10, 13, 152, 6, 104, 0, 63, 237, + 50, 47, 43, 43, 63, 237, 18, 57, 47, 43, 205, 63, 221, 50, 205, 50, 50, 63, 51, 63, + 51, 63, 51, 1, 47, 237, 51, 47, 16, 204, 50, 47, 50, 16, 237, 50, 17, 51, 47, 47, + 51, 51, 47, 206, 50, 135, 43, 135, 125, 196, 1, 17, 51, 24, 16, 253, 50, 205, 49, 48, + 43, 43, 43, 43, 43, 37, 22, 22, 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, + 54, 53, 52, 38, 35, 62, 3, 55, 51, 21, 35, 3, 21, 51, 21, 35, 21, 35, 53, 35, + 53, 54, 54, 55, 23, 6, 6, 7, 51, 3, 35, 1, 51, 1, 105, 56, 54, 58, 59, 24, + 46, 12, 14, 10, 35, 21, 26, 34, 47, 64, 3, 3, 3, 2, 1, 147, 96, 160, 35, 35, + 59, 130, 27, 47, 32, 24, 22, 33, 16, 71, 39, 70, 1, 123, 70, 163, 2, 43, 39, 40, + 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, 28, 29, 21, 50, 1, 170, 152, 50, + 48, 48, 41, 46, 75, 40, 43, 27, 56, 26, 254, 38, 2, 107, 0, 4, 255, 255, 255, 247, + 1, 192, 2, 114, 0, 21, 0, 32, 0, 43, 0, 47, 0, 184, 182, 15, 32, 14, 21, 0, + 76, 10, 184, 255, 224, 180, 15, 21, 0, 76, 10, 184, 255, 216, 179, 14, 0, 77, 7, 184, + 255, 224, 180, 15, 21, 0, 76, 6, 184, 255, 216, 64, 85, 14, 0, 77, 19, 16, 29, 0, + 77, 44, 46, 45, 46, 156, 47, 44, 20, 47, 47, 44, 45, 45, 22, 15, 26, 1, 26, 150, + 25, 29, 22, 47, 47, 8, 3, 35, 150, 16, 41, 150, 8, 0, 0, 8, 44, 48, 46, 47, + 89, 45, 28, 97, 32, 47, 22, 63, 22, 79, 22, 3, 22, 22, 29, 26, 96, 33, 152, 3, + 5, 5, 38, 77, 0, 1, 0, 127, 21, 143, 21, 2, 21, 102, 38, 152, 13, 104, 0, 63, + 237, 63, 113, 205, 113, 18, 57, 47, 51, 237, 63, 51, 51, 47, 93, 205, 63, 47, 63, 51, + 17, 51, 1, 47, 51, 47, 16, 253, 212, 237, 50, 17, 51, 47, 47, 221, 50, 237, 113, 17, + 51, 47, 135, 16, 43, 135, 125, 196, 49, 48, 0, 43, 1, 43, 43, 43, 43, 43, 37, 6, + 6, 7, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 53, 52, 62, 2, 51, 1, 54, + 54, 55, 51, 21, 35, 53, 6, 6, 7, 1, 34, 7, 20, 22, 51, 50, 54, 53, 52, 38, + 5, 35, 1, 51, 1, 168, 47, 59, 13, 23, 18, 48, 45, 12, 24, 35, 23, 55, 49, 21, + 44, 67, 46, 254, 109, 35, 47, 24, 41, 59, 20, 33, 18, 1, 52, 23, 22, 25, 22, 20, + 21, 21, 254, 218, 70, 1, 123, 70, 209, 2, 24, 27, 13, 52, 35, 17, 33, 26, 15, 61, + 48, 31, 58, 44, 26, 1, 46, 14, 28, 23, 250, 168, 11, 14, 6, 254, 118, 14, 34, 30, + 25, 14, 16, 23, 119, 2, 107, 0, 4, 0, 28, 255, 247, 1, 221, 2, 114, 0, 21, 0, + 49, 0, 60, 0, 64, 1, 4, 185, 0, 26, 255, 216, 180, 14, 21, 0, 76, 24, 184, 255, + 208, 64, 11, 14, 21, 0, 76, 15, 32, 14, 21, 0, 76, 10, 184, 255, 224, 180, 14, 21, + 0, 76, 7, 184, 255, 216, 64, 78, 14, 21, 0, 76, 61, 63, 62, 63, 156, 64, 61, 20, + 64, 61, 84, 64, 1, 64, 64, 8, 3, 52, 150, 16, 64, 25, 28, 72, 16, 58, 150, 8, + 0, 0, 27, 8, 1, 91, 8, 1, 8, 66, 62, 62, 41, 48, 48, 4, 38, 1, 38, 25, + 49, 22, 41, 46, 31, 31, 41, 63, 64, 89, 61, 62, 91, 41, 64, 28, 31, 72, 41, 152, + 148, 22, 180, 22, 2, 22, 184, 255, 192, 64, 11, 28, 32, 72, 22, 22, 35, 49, 152, 46, + 96, 32, 184, 255, 192, 64, 41, 34, 0, 77, 180, 32, 1, 115, 32, 1, 2, 97, 32, 1, + 48, 32, 1, 32, 32, 35, 152, 28, 100, 50, 152, 3, 5, 5, 55, 0, 152, 127, 21, 143, + 21, 2, 21, 102, 55, 152, 13, 104, 0, 63, 237, 63, 113, 237, 18, 57, 47, 51, 237, 63, + 237, 50, 47, 113, 113, 95, 113, 113, 43, 63, 237, 18, 57, 47, 43, 113, 237, 43, 63, 51, + 63, 51, 1, 47, 50, 47, 50, 16, 205, 50, 220, 205, 113, 51, 47, 17, 51, 47, 16, 198, + 93, 113, 50, 47, 16, 253, 220, 43, 237, 50, 17, 51, 47, 93, 135, 43, 135, 125, 196, 49, + 48, 1, 43, 43, 43, 43, 43, 37, 6, 6, 7, 54, 51, 50, 22, 21, 20, 14, 2, 35, + 34, 38, 53, 52, 62, 2, 51, 1, 22, 22, 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, + 51, 50, 54, 53, 52, 38, 35, 62, 3, 55, 51, 21, 35, 19, 34, 7, 20, 22, 51, 50, + 54, 53, 52, 38, 5, 35, 1, 51, 1, 168, 47, 59, 13, 23, 18, 48, 45, 12, 24, 35, + 23, 55, 49, 21, 44, 67, 46, 254, 212, 56, 54, 58, 59, 24, 46, 12, 14, 10, 35, 21, + 26, 34, 47, 64, 3, 3, 3, 2, 1, 147, 96, 219, 23, 22, 25, 22, 20, 21, 21, 254, + 247, 70, 1, 123, 70, 209, 2, 24, 27, 13, 52, 35, 17, 33, 26, 15, 61, 48, 31, 58, + 44, 26, 1, 24, 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, + 28, 29, 21, 50, 254, 55, 14, 34, 30, 25, 14, 16, 23, 119, 2, 107, 0, 3, 255, 255, + 0, 0, 1, 211, 2, 114, 0, 10, 0, 25, 0, 29, 0, 98, 64, 55, 26, 28, 27, 28, + 156, 29, 26, 20, 29, 26, 29, 29, 20, 25, 150, 11, 11, 17, 16, 150, 20, 27, 27, 0, + 5, 150, 3, 7, 0, 27, 26, 30, 28, 29, 89, 20, 16, 152, 19, 101, 11, 91, 6, 97, + 10, 0, 64, 8, 13, 72, 0, 0, 7, 3, 96, 0, 63, 51, 51, 47, 43, 205, 63, 63, + 63, 237, 50, 63, 51, 17, 51, 51, 1, 47, 221, 50, 237, 17, 51, 47, 47, 237, 205, 57, + 47, 237, 17, 51, 47, 135, 43, 135, 125, 196, 49, 48, 19, 54, 54, 55, 51, 21, 35, 53, + 6, 6, 7, 1, 62, 3, 55, 35, 53, 51, 21, 14, 3, 7, 33, 35, 1, 51, 16, 35, + 47, 24, 41, 59, 20, 33, 18, 1, 25, 6, 14, 18, 26, 18, 104, 175, 24, 30, 21, 13, + 6, 254, 208, 70, 1, 123, 70, 2, 49, 14, 28, 23, 250, 168, 11, 14, 6, 253, 255, 34, + 52, 45, 43, 26, 50, 41, 27, 44, 46, 55, 37, 2, 107, 0, 3, 0, 21, 0, 0, 1, + 227, 2, 121, 0, 3, 0, 32, 0, 47, 0, 125, 185, 0, 31, 255, 232, 179, 25, 0, 77, + 26, 184, 255, 216, 64, 62, 14, 21, 0, 76, 39, 33, 150, 47, 42, 0, 2, 1, 2, 156, + 3, 0, 20, 3, 0, 3, 3, 38, 150, 42, 14, 150, 27, 4, 4, 27, 6, 1, 1, 32, + 150, 6, 21, 21, 6, 42, 38, 152, 40, 101, 33, 91, 20, 20, 17, 152, 24, 99, 32, 152, + 6, 97, 2, 3, 89, 0, 1, 91, 0, 63, 51, 63, 51, 63, 237, 63, 237, 50, 47, 63, + 63, 237, 50, 1, 47, 51, 47, 16, 237, 51, 47, 16, 205, 50, 47, 16, 237, 47, 237, 51, + 47, 135, 43, 135, 125, 196, 1, 24, 16, 222, 237, 204, 49, 48, 43, 43, 51, 35, 1, 51, + 5, 21, 35, 53, 52, 54, 55, 55, 54, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, + 51, 50, 22, 21, 20, 14, 2, 7, 19, 62, 3, 55, 35, 53, 51, 21, 14, 3, 7, 104, + 70, 1, 123, 70, 254, 248, 198, 40, 26, 22, 23, 19, 23, 16, 15, 32, 12, 32, 17, 51, + 26, 48, 47, 27, 37, 41, 13, 222, 6, 14, 18, 26, 18, 104, 175, 24, 30, 21, 13, 6, + 2, 107, 195, 50, 23, 32, 35, 16, 15, 14, 25, 14, 17, 16, 13, 13, 40, 19, 19, 50, + 32, 26, 37, 29, 23, 12, 254, 88, 34, 52, 45, 43, 26, 50, 41, 27, 44, 46, 55, 37, + 0, 3, 0, 19, 0, 0, 1, 214, 2, 121, 0, 42, 0, 57, 0, 61, 0, 164, 185, 0, + 37, 255, 224, 180, 14, 21, 0, 76, 28, 184, 255, 224, 64, 88, 17, 21, 0, 76, 58, 60, + 59, 60, 156, 61, 58, 20, 61, 58, 61, 61, 52, 57, 150, 43, 43, 49, 48, 150, 52, 59, + 59, 42, 33, 15, 150, 30, 30, 6, 150, 35, 42, 22, 22, 42, 10, 10, 42, 60, 61, 89, + 58, 59, 91, 52, 48, 152, 50, 101, 43, 91, 33, 63, 10, 79, 10, 111, 10, 3, 10, 152, + 48, 11, 64, 11, 96, 11, 3, 11, 11, 25, 0, 0, 3, 152, 40, 100, 21, 21, 18, 152, + 25, 99, 0, 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 47, 113, 237, 113, 57, 63, 63, + 237, 50, 63, 51, 63, 51, 1, 47, 51, 47, 17, 51, 47, 16, 221, 237, 51, 47, 237, 50, + 17, 51, 47, 47, 237, 205, 57, 47, 237, 17, 51, 47, 135, 43, 135, 125, 196, 49, 48, 1, + 43, 43, 19, 22, 22, 51, 50, 54, 53, 52, 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, + 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 6, 7, 22, 21, 20, 14, 2, + 35, 34, 39, 1, 62, 3, 55, 35, 53, 51, 21, 14, 3, 7, 33, 35, 1, 51, 34, 11, + 33, 20, 23, 33, 39, 38, 12, 23, 25, 28, 25, 14, 14, 36, 12, 19, 15, 49, 26, 17, + 32, 25, 15, 15, 15, 43, 12, 27, 41, 30, 47, 37, 1, 39, 6, 14, 18, 26, 18, 104, + 175, 24, 30, 21, 13, 6, 254, 230, 70, 1, 123, 70, 1, 174, 5, 8, 13, 17, 21, 12, + 50, 11, 18, 15, 9, 10, 5, 43, 9, 13, 7, 15, 25, 18, 15, 30, 11, 20, 45, 14, + 29, 23, 14, 14, 254, 131, 34, 52, 45, 43, 26, 50, 41, 27, 44, 46, 55, 37, 2, 107, + 0, 4, 0, 15, 0, 0, 1, 224, 2, 114, 0, 14, 0, 27, 0, 32, 0, 36, 0, 110, + 64, 60, 33, 35, 34, 35, 156, 36, 33, 20, 36, 36, 33, 34, 34, 24, 27, 28, 28, 16, + 19, 150, 22, 22, 17, 31, 24, 36, 36, 9, 14, 150, 0, 0, 7, 5, 150, 9, 35, 36, + 89, 33, 34, 91, 28, 27, 96, 24, 16, 31, 152, 19, 22, 21, 97, 9, 5, 152, 7, 101, + 0, 91, 0, 63, 63, 237, 50, 63, 221, 50, 237, 50, 50, 63, 51, 63, 51, 63, 51, 1, + 47, 237, 205, 57, 47, 237, 17, 51, 47, 47, 51, 205, 57, 47, 237, 50, 51, 17, 51, 17, + 51, 47, 135, 16, 43, 135, 125, 196, 49, 48, 33, 62, 3, 55, 35, 53, 51, 21, 14, 3, + 7, 3, 21, 51, 21, 35, 21, 35, 53, 35, 53, 54, 54, 55, 23, 6, 6, 7, 51, 3, + 35, 1, 51, 1, 67, 6, 14, 18, 26, 18, 104, 175, 24, 30, 21, 13, 6, 178, 35, 35, + 59, 130, 27, 47, 32, 24, 22, 33, 16, 71, 44, 70, 1, 123, 70, 34, 52, 45, 43, 26, + 50, 41, 27, 44, 46, 55, 37, 2, 114, 152, 50, 48, 48, 41, 46, 75, 40, 43, 27, 56, + 26, 254, 38, 2, 107, 0, 3, 0, 13, 0, 0, 1, 220, 2, 114, 0, 27, 0, 42, 0, + 46, 0, 234, 185, 0, 4, 255, 208, 180, 14, 21, 0, 76, 2, 184, 255, 216, 180, 14, 21, + 0, 76, 17, 184, 255, 240, 179, 34, 0, 77, 11, 184, 255, 224, 179, 31, 0, 77, 10, 184, + 255, 192, 64, 83, 31, 0, 77, 43, 45, 44, 45, 156, 46, 43, 20, 46, 43, 46, 46, 37, + 28, 150, 42, 37, 34, 33, 150, 37, 44, 44, 19, 26, 26, 16, 150, 3, 27, 0, 150, 19, + 24, 24, 42, 43, 0, 76, 24, 19, 9, 9, 19, 45, 46, 89, 43, 44, 91, 37, 33, 152, + 35, 101, 28, 91, 111, 19, 1, 63, 19, 79, 19, 111, 19, 127, 19, 159, 19, 5, 19, 152, + 96, 0, 1, 144, 0, 1, 0, 184, 255, 192, 64, 11, 28, 32, 72, 0, 0, 13, 27, 152, + 24, 96, 10, 184, 255, 192, 179, 47, 0, 77, 10, 184, 255, 192, 64, 14, 29, 0, 77, 48, + 10, 80, 10, 2, 10, 10, 13, 152, 6, 100, 0, 63, 237, 50, 47, 113, 43, 43, 63, 237, + 18, 57, 47, 43, 113, 114, 237, 113, 114, 63, 63, 237, 50, 63, 51, 63, 51, 1, 47, 51, + 47, 17, 51, 43, 16, 237, 50, 220, 237, 51, 47, 17, 51, 47, 47, 253, 205, 16, 222, 237, + 17, 51, 47, 135, 43, 135, 125, 196, 49, 48, 0, 43, 43, 43, 1, 43, 43, 19, 22, 22, + 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 62, 3, 55, + 51, 21, 35, 19, 62, 3, 55, 35, 53, 51, 21, 14, 3, 7, 33, 35, 1, 51, 102, 56, + 54, 58, 59, 24, 46, 12, 14, 10, 35, 21, 26, 34, 47, 64, 3, 3, 3, 2, 1, 147, + 96, 218, 6, 14, 18, 26, 18, 104, 175, 24, 30, 21, 13, 6, 254, 215, 70, 1, 123, 70, + 2, 27, 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, 28, 29, + 21, 50, 253, 192, 34, 52, 45, 43, 26, 50, 41, 27, 44, 46, 55, 37, 2, 107, 0, 4, + 0, 21, 0, 0, 1, 218, 2, 123, 0, 3, 0, 25, 0, 40, 0, 52, 0, 195, 64, 12, + 22, 24, 18, 0, 77, 19, 32, 14, 21, 0, 76, 14, 184, 255, 216, 180, 14, 21, 0, 76, + 11, 184, 255, 216, 64, 104, 14, 21, 0, 76, 23, 32, 32, 0, 77, 22, 32, 32, 0, 77, + 5, 16, 32, 0, 77, 87, 5, 1, 40, 150, 26, 26, 35, 32, 31, 150, 35, 0, 2, 1, + 2, 156, 3, 0, 20, 3, 0, 3, 3, 35, 50, 150, 12, 4, 4, 128, 12, 160, 12, 176, + 12, 3, 12, 7, 44, 150, 20, 1, 1, 20, 35, 31, 33, 101, 26, 91, 41, 152, 7, 128, + 9, 144, 9, 176, 9, 3, 9, 9, 47, 108, 4, 124, 4, 2, 94, 4, 1, 4, 25, 90, + 47, 152, 17, 100, 2, 3, 89, 0, 1, 91, 0, 63, 51, 63, 51, 63, 237, 63, 205, 113, + 113, 18, 57, 47, 113, 51, 237, 63, 63, 205, 50, 1, 47, 51, 47, 16, 253, 50, 204, 113, + 50, 47, 16, 237, 47, 51, 47, 135, 43, 135, 125, 196, 1, 24, 16, 253, 205, 17, 57, 47, + 237, 49, 48, 0, 113, 43, 43, 43, 1, 43, 43, 43, 43, 51, 35, 1, 51, 5, 6, 6, + 7, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 53, 52, 62, 2, 51, 19, 62, 3, + 55, 35, 53, 51, 21, 14, 3, 7, 3, 34, 6, 7, 20, 22, 51, 50, 54, 53, 52, 38, + 95, 70, 1, 123, 70, 254, 242, 47, 58, 13, 19, 21, 47, 46, 12, 24, 35, 24, 54, 49, + 21, 43, 67, 46, 116, 6, 14, 18, 26, 18, 104, 175, 24, 30, 21, 13, 6, 252, 12, 22, + 11, 25, 21, 20, 21, 21, 2, 107, 34, 2, 24, 26, 12, 52, 35, 17, 33, 26, 15, 61, + 48, 31, 58, 44, 26, 253, 133, 34, 52, 45, 43, 26, 50, 41, 27, 44, 46, 55, 37, 1, + 239, 8, 6, 34, 30, 25, 14, 16, 23, 0, 4, 255, 255, 255, 247, 1, 213, 2, 114, 0, + 21, 0, 32, 0, 42, 0, 46, 0, 186, 185, 0, 18, 255, 240, 179, 18, 0, 77, 15, 184, + 255, 216, 64, 17, 14, 21, 0, 76, 10, 40, 14, 21, 0, 76, 7, 40, 14, 21, 0, 76, + 19, 184, 255, 232, 64, 72, 29, 0, 77, 43, 45, 44, 45, 156, 46, 43, 20, 46, 46, 43, + 44, 44, 22, 26, 150, 25, 29, 22, 46, 46, 3, 35, 150, 16, 40, 150, 8, 0, 0, 143, + 8, 1, 8, 128, 16, 1, 16, 44, 43, 47, 45, 46, 89, 28, 97, 32, 22, 64, 10, 13, + 72, 22, 22, 29, 25, 96, 33, 152, 3, 5, 64, 30, 33, 72, 5, 5, 37, 0, 184, 255, + 192, 64, 12, 28, 29, 0, 76, 0, 152, 21, 104, 37, 152, 13, 102, 0, 63, 237, 63, 237, + 43, 18, 57, 47, 43, 51, 237, 63, 51, 51, 47, 43, 205, 63, 63, 51, 17, 51, 51, 1, + 47, 113, 204, 113, 50, 47, 16, 237, 16, 237, 50, 51, 47, 47, 221, 50, 237, 17, 51, 47, + 135, 16, 43, 135, 125, 196, 49, 48, 0, 43, 1, 43, 43, 43, 43, 37, 54, 54, 55, 6, + 35, 34, 38, 53, 52, 62, 2, 51, 50, 22, 21, 20, 14, 2, 35, 1, 54, 54, 55, 51, + 21, 35, 53, 6, 6, 7, 1, 50, 55, 38, 35, 34, 6, 21, 20, 22, 5, 35, 1, 51, + 1, 30, 46, 58, 13, 22, 18, 47, 45, 12, 24, 35, 23, 55, 49, 21, 44, 67, 46, 254, + 237, 35, 47, 24, 41, 59, 20, 33, 18, 1, 80, 20, 24, 1, 45, 20, 21, 21, 254, 234, + 70, 1, 123, 70, 41, 2, 23, 26, 11, 52, 35, 17, 33, 25, 16, 61, 48, 31, 58, 44, + 26, 2, 58, 14, 28, 23, 250, 168, 11, 14, 6, 254, 130, 13, 65, 25, 14, 16, 23, 131, + 2, 107, 0, 4, 0, 21, 255, 247, 1, 222, 2, 121, 0, 21, 0, 50, 0, 60, 0, 64, + 0, 208, 185, 0, 44, 255, 216, 180, 14, 21, 0, 76, 18, 184, 255, 240, 179, 18, 0, 77, + 15, 184, 255, 216, 64, 17, 14, 21, 0, 76, 10, 32, 14, 21, 0, 76, 7, 40, 14, 21, + 0, 76, 18, 184, 255, 232, 179, 30, 0, 77, 17, 184, 255, 232, 64, 89, 30, 0, 77, 61, + 63, 62, 63, 156, 64, 61, 20, 64, 64, 61, 62, 62, 25, 32, 150, 45, 22, 22, 45, 50, + 25, 39, 39, 25, 64, 64, 16, 58, 150, 8, 0, 0, 15, 8, 31, 8, 127, 8, 143, 8, + 4, 8, 3, 53, 150, 16, 63, 64, 89, 61, 62, 91, 38, 38, 35, 152, 42, 99, 50, 152, + 24, 97, 51, 152, 3, 15, 5, 31, 5, 2, 5, 64, 30, 33, 72, 5, 5, 55, 0, 21, + 104, 55, 152, 13, 102, 0, 63, 237, 63, 205, 18, 57, 47, 43, 113, 51, 237, 63, 237, 63, + 237, 50, 47, 63, 51, 63, 51, 1, 47, 253, 50, 204, 113, 50, 47, 16, 237, 17, 51, 47, + 47, 51, 47, 16, 205, 205, 50, 47, 16, 237, 17, 51, 47, 135, 16, 43, 135, 125, 196, 49, + 48, 0, 43, 43, 1, 43, 43, 43, 43, 43, 37, 54, 54, 55, 6, 35, 34, 38, 53, 52, + 62, 2, 51, 50, 22, 21, 20, 14, 2, 35, 3, 21, 35, 53, 52, 54, 55, 55, 54, 54, + 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 22, 21, 20, 14, 2, 7, 1, 50, + 55, 38, 35, 34, 6, 21, 20, 22, 7, 35, 1, 51, 1, 30, 46, 58, 13, 22, 18, 47, + 45, 12, 24, 35, 23, 55, 49, 21, 44, 67, 46, 72, 198, 40, 26, 22, 23, 19, 23, 16, + 15, 32, 12, 32, 17, 51, 26, 48, 47, 27, 37, 41, 13, 1, 21, 20, 24, 1, 45, 20, + 21, 21, 248, 70, 1, 123, 70, 41, 2, 23, 26, 11, 52, 35, 17, 33, 25, 16, 61, 48, + 31, 58, 44, 26, 1, 177, 50, 23, 32, 35, 16, 15, 14, 25, 14, 17, 16, 13, 13, 40, + 19, 19, 50, 32, 26, 37, 28, 24, 12, 254, 219, 13, 65, 25, 14, 16, 23, 131, 2, 107, + 0, 5, 0, 15, 255, 247, 1, 226, 2, 114, 0, 21, 0, 34, 0, 44, 0, 49, 0, 53, + 0, 176, 185, 0, 48, 255, 232, 179, 23, 0, 77, 46, 184, 255, 224, 179, 23, 0, 77, 18, + 184, 255, 248, 179, 18, 0, 77, 15, 184, 255, 224, 64, 84, 14, 21, 0, 76, 10, 32, 14, + 21, 0, 76, 7, 40, 14, 21, 0, 76, 50, 52, 51, 52, 156, 53, 50, 20, 53, 53, 50, + 51, 51, 48, 31, 34, 45, 45, 29, 24, 26, 150, 23, 150, 29, 53, 53, 3, 37, 150, 16, + 42, 150, 8, 0, 0, 8, 16, 52, 53, 89, 50, 51, 91, 45, 34, 96, 31, 23, 48, 26, + 29, 28, 97, 35, 152, 3, 5, 5, 39, 0, 152, 21, 104, 39, 152, 13, 102, 0, 63, 237, + 63, 237, 18, 57, 47, 51, 237, 63, 221, 50, 205, 50, 50, 63, 51, 63, 51, 63, 51, 1, + 47, 204, 50, 47, 16, 237, 16, 237, 50, 51, 47, 47, 237, 253, 205, 17, 51, 17, 51, 47, + 51, 51, 47, 135, 16, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, 37, 54, + 54, 55, 6, 35, 34, 38, 53, 52, 62, 2, 51, 50, 22, 21, 20, 14, 2, 35, 3, 21, + 51, 21, 35, 21, 35, 53, 35, 53, 54, 54, 55, 19, 50, 55, 38, 35, 34, 6, 21, 20, + 22, 3, 6, 6, 7, 51, 3, 35, 1, 51, 1, 30, 46, 58, 13, 22, 18, 47, 45, 12, + 24, 35, 23, 55, 49, 21, 44, 67, 46, 87, 35, 35, 59, 130, 27, 47, 32, 248, 20, 24, + 1, 45, 20, 21, 21, 202, 22, 33, 16, 71, 42, 70, 1, 123, 70, 41, 2, 23, 26, 11, + 52, 35, 17, 33, 25, 16, 61, 48, 31, 58, 44, 26, 2, 123, 152, 50, 48, 48, 41, 46, + 75, 40, 254, 17, 13, 65, 25, 14, 16, 23, 1, 196, 27, 56, 26, 254, 38, 2, 107, 0, + 4, 0, 13, 255, 247, 1, 213, 2, 114, 0, 21, 0, 49, 0, 59, 0, 63, 0, 245, 185, + 0, 26, 255, 216, 180, 14, 21, 0, 76, 24, 184, 255, 208, 180, 14, 21, 0, 76, 18, 184, + 255, 248, 179, 18, 0, 77, 15, 184, 255, 216, 64, 22, 14, 21, 0, 76, 10, 32, 14, 21, + 0, 76, 7, 40, 14, 21, 0, 76, 27, 32, 13, 0, 77, 23, 184, 255, 216, 179, 13, 0, + 77, 14, 184, 255, 216, 179, 13, 0, 77, 11, 184, 255, 216, 64, 94, 13, 0, 77, 6, 48, + 13, 0, 77, 60, 62, 61, 62, 156, 63, 60, 20, 63, 63, 60, 61, 61, 41, 48, 48, 38, + 150, 79, 25, 1, 25, 49, 22, 41, 46, 41, 31, 31, 65, 41, 1, 41, 63, 63, 3, 52, + 150, 16, 57, 150, 8, 0, 0, 8, 16, 62, 63, 89, 60, 61, 91, 41, 152, 22, 22, 35, + 49, 152, 46, 96, 32, 32, 35, 152, 64, 28, 1, 28, 100, 50, 152, 5, 5, 54, 0, 152, + 21, 104, 54, 152, 79, 13, 1, 13, 102, 0, 63, 93, 237, 63, 237, 18, 57, 47, 237, 63, + 93, 237, 50, 47, 63, 237, 18, 57, 47, 237, 63, 51, 63, 51, 1, 47, 204, 50, 47, 16, + 237, 16, 237, 50, 51, 47, 47, 93, 51, 47, 17, 51, 16, 205, 50, 220, 93, 237, 51, 47, + 17, 51, 47, 135, 16, 43, 135, 125, 196, 49, 48, 0, 43, 43, 43, 43, 43, 1, 43, 43, + 43, 43, 43, 43, 37, 54, 54, 55, 6, 35, 34, 38, 53, 52, 62, 2, 51, 50, 22, 21, + 20, 14, 2, 35, 3, 22, 22, 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, + 53, 52, 38, 35, 62, 3, 55, 51, 21, 35, 1, 50, 55, 38, 35, 34, 6, 21, 20, 22, + 5, 35, 1, 51, 1, 30, 46, 58, 13, 22, 18, 47, 45, 12, 24, 35, 23, 55, 49, 21, + 44, 67, 46, 189, 56, 54, 58, 59, 24, 46, 12, 14, 10, 35, 21, 26, 34, 47, 64, 3, + 3, 3, 2, 1, 147, 96, 1, 8, 20, 24, 1, 45, 20, 21, 21, 254, 250, 70, 1, 123, + 70, 41, 2, 23, 26, 11, 52, 35, 17, 33, 25, 16, 61, 48, 31, 58, 44, 26, 2, 36, + 2, 43, 39, 40, 48, 13, 8, 48, 5, 14, 16, 19, 23, 19, 23, 31, 28, 29, 21, 50, + 254, 67, 13, 65, 25, 14, 16, 23, 131, 2, 107, 0, 4, 0, 11, 255, 247, 1, 213, 2, + 114, 0, 3, 0, 25, 0, 40, 0, 50, 0, 155, 185, 0, 22, 255, 248, 179, 18, 0, 77, + 19, 184, 255, 216, 64, 84, 14, 21, 0, 76, 14, 32, 14, 21, 0, 76, 11, 40, 14, 21, + 0, 76, 40, 150, 26, 26, 31, 95, 35, 1, 35, 32, 0, 2, 1, 2, 156, 3, 0, 20, + 3, 3, 0, 1, 1, 80, 32, 1, 32, 7, 43, 150, 20, 48, 150, 12, 4, 4, 12, 20, + 3, 3, 20, 35, 31, 152, 33, 96, 26, 97, 41, 152, 7, 9, 9, 45, 4, 152, 25, 104, + 45, 152, 17, 102, 2, 3, 89, 0, 1, 91, 0, 63, 51, 63, 51, 63, 237, 63, 237, 18, + 57, 47, 51, 237, 63, 63, 237, 50, 1, 47, 51, 47, 16, 204, 50, 47, 16, 237, 16, 237, + 50, 47, 93, 51, 47, 135, 16, 43, 135, 125, 196, 1, 24, 16, 205, 93, 50, 57, 47, 237, + 49, 48, 43, 43, 43, 43, 51, 35, 1, 51, 3, 54, 54, 55, 6, 35, 34, 38, 53, 52, + 62, 2, 51, 50, 22, 21, 20, 14, 2, 35, 3, 62, 3, 55, 35, 53, 51, 21, 14, 3, + 7, 23, 50, 55, 52, 35, 34, 6, 21, 20, 22, 80, 69, 1, 122, 71, 174, 46, 59, 13, + 21, 20, 47, 45, 12, 24, 35, 23, 55, 49, 21, 44, 67, 46, 221, 6, 14, 18, 25, 18, + 104, 175, 24, 30, 20, 13, 6, 240, 21, 23, 46, 20, 21, 21, 2, 107, 253, 190, 2, 23, + 27, 12, 52, 35, 17, 33, 25, 16, 61, 48, 31, 58, 44, 26, 1, 129, 34, 52, 45, 43, + 26, 50, 41, 27, 44, 47, 54, 37, 245, 13, 65, 25, 14, 16, 23, 0, 6, 0, 19, 255, + 247, 1, 225, 2, 121, 0, 31, 0, 53, 0, 63, 0, 76, 0, 87, 0, 91, 1, 84, 185, + 0, 47, 255, 216, 64, 23, 14, 21, 0, 76, 42, 24, 14, 21, 0, 76, 39, 32, 14, 21, + 0, 76, 30, 48, 14, 21, 0, 76, 24, 184, 255, 224, 180, 14, 21, 0, 76, 19, 184, 255, + 240, 179, 16, 0, 77, 14, 184, 255, 216, 64, 54, 14, 21, 0, 76, 8, 40, 14, 21, 0, + 76, 70, 32, 24, 0, 77, 70, 40, 23, 0, 77, 70, 32, 22, 0, 77, 67, 32, 24, 0, + 77, 67, 24, 22, 23, 0, 76, 66, 24, 24, 0, 77, 66, 32, 22, 23, 0, 76, 50, 24, + 18, 21, 0, 76, 34, 184, 255, 224, 179, 17, 0, 77, 34, 184, 255, 232, 179, 16, 0, 77, + 20, 184, 255, 224, 180, 19, 21, 0, 76, 20, 184, 255, 216, 179, 18, 0, 77, 20, 184, 255, + 208, 179, 17, 0, 77, 20, 184, 255, 224, 64, 100, 16, 0, 77, 4, 24, 22, 24, 0, 76, + 4, 24, 16, 0, 77, 88, 90, 89, 90, 156, 91, 88, 20, 91, 88, 91, 91, 35, 56, 150, + 48, 61, 150, 40, 32, 32, 40, 48, 89, 89, 0, 19, 80, 69, 3, 4, 6, 82, 150, 16, + 16, 64, 150, 22, 0, 77, 150, 6, 6, 71, 150, 0, 90, 91, 89, 88, 89, 91, 54, 152, + 35, 37, 37, 58, 32, 152, 53, 104, 58, 152, 45, 102, 19, 80, 152, 69, 3, 69, 69, 85, + 74, 152, 112, 27, 1, 27, 100, 85, 152, 11, 99, 0, 63, 237, 63, 93, 237, 18, 57, 17, + 51, 16, 233, 50, 63, 237, 63, 237, 18, 57, 47, 51, 237, 63, 51, 63, 51, 1, 47, 237, + 51, 47, 237, 16, 220, 237, 51, 47, 237, 18, 23, 57, 17, 51, 47, 47, 204, 50, 47, 16, + 237, 16, 237, 50, 51, 47, 135, 43, 135, 125, 196, 49, 48, 0, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 19, + 52, 54, 55, 38, 38, 53, 52, 62, 2, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, + 20, 14, 2, 35, 34, 46, 2, 1, 54, 54, 55, 6, 35, 34, 38, 53, 52, 62, 2, 51, + 50, 22, 21, 20, 14, 2, 35, 55, 50, 55, 38, 35, 34, 6, 21, 20, 22, 3, 52, 46, + 2, 39, 6, 21, 20, 22, 51, 50, 54, 39, 20, 22, 23, 54, 53, 52, 38, 35, 34, 6, + 19, 35, 1, 51, 19, 17, 26, 15, 19, 17, 28, 36, 19, 18, 36, 27, 17, 14, 23, 19, + 26, 19, 30, 39, 20, 21, 38, 30, 18, 1, 11, 46, 58, 13, 22, 18, 47, 45, 12, 24, + 35, 23, 55, 49, 21, 44, 67, 46, 78, 20, 24, 1, 45, 20, 21, 21, 172, 11, 19, 24, + 13, 30, 31, 17, 20, 29, 88, 31, 21, 28, 21, 22, 14, 23, 15, 70, 1, 123, 70, 1, + 187, 12, 37, 11, 9, 28, 23, 18, 26, 18, 8, 9, 18, 26, 17, 15, 28, 13, 9, 29, + 25, 19, 29, 19, 10, 8, 18, 29, 254, 131, 2, 23, 26, 11, 52, 35, 17, 33, 25, 16, + 61, 48, 31, 58, 44, 26, 140, 13, 65, 25, 14, 16, 23, 1, 56, 9, 12, 9, 7, 4, + 14, 27, 14, 12, 13, 130, 14, 15, 6, 17, 18, 10, 13, 13, 253, 198, 2, 107, 0, 2, + 0, 38, 255, 245, 1, 191, 2, 181, 0, 32, 0, 50, 0, 146, 64, 17, 49, 24, 17, 0, + 77, 45, 24, 13, 0, 77, 45, 16, 11, 12, 0, 76, 41, 184, 255, 248, 179, 16, 0, 77, + 35, 184, 255, 224, 179, 15, 0, 77, 35, 184, 255, 240, 64, 21, 13, 14, 0, 76, 32, 16, + 13, 0, 77, 32, 32, 11, 12, 0, 76, 19, 24, 17, 0, 77, 16, 184, 255, 240, 64, 14, + 14, 0, 77, 15, 24, 13, 0, 77, 14, 8, 12, 0, 77, 9, 184, 255, 216, 64, 26, 14, + 0, 77, 30, 48, 130, 12, 52, 38, 130, 22, 4, 4, 22, 51, 33, 136, 27, 27, 7, 43, + 136, 17, 104, 0, 7, 0, 47, 205, 63, 237, 17, 57, 47, 237, 1, 16, 198, 50, 47, 16, + 237, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 19, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 53, + 52, 62, 2, 51, 50, 22, 23, 38, 38, 7, 34, 14, 2, 21, 20, 30, 2, 51, 50, 62, + 2, 53, 38, 38, 190, 26, 46, 20, 12, 26, 61, 31, 72, 94, 55, 22, 22, 53, 89, 67, + 44, 67, 45, 22, 26, 53, 79, 54, 38, 58, 17, 6, 78, 24, 35, 52, 33, 16, 13, 25, + 39, 26, 42, 54, 32, 14, 26, 58, 2, 110, 11, 9, 69, 11, 11, 58, 96, 124, 66, 60, + 128, 105, 67, 36, 60, 78, 42, 44, 86, 67, 42, 23, 13, 103, 111, 248, 31, 50, 63, 31, + 27, 51, 39, 23, 52, 80, 95, 42, 25, 21, 0, 2, 0, 9, 0, 0, 1, 235, 2, 107, + 0, 11, 0, 22, 0, 71, 64, 39, 6, 18, 12, 18, 120, 11, 6, 20, 11, 11, 6, 5, + 17, 12, 17, 120, 0, 5, 20, 0, 0, 5, 12, 0, 11, 24, 0, 23, 11, 68, 12, 6, + 5, 65, 18, 17, 121, 0, 68, 0, 63, 237, 50, 63, 51, 51, 63, 1, 16, 198, 16, 206, + 17, 57, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 125, 196, 49, 48, 51, 62, 3, + 55, 51, 30, 3, 23, 3, 14, 3, 7, 33, 46, 3, 9, 23, 44, 45, 50, 30, 102, 27, + 53, 49, 42, 17, 242, 10, 33, 38, 40, 18, 1, 21, 18, 40, 38, 32, 89, 157, 149, 146, + 78, 68, 162, 165, 158, 66, 2, 35, 27, 96, 125, 149, 80, 80, 149, 125, 96, 0, 1, 0, + 58, 255, 159, 1, 186, 2, 107, 0, 7, 0, 27, 64, 11, 2, 1, 9, 5, 6, 8, 4, + 7, 89, 2, 6, 0, 47, 51, 63, 205, 1, 16, 214, 205, 16, 222, 205, 49, 48, 1, 17, + 35, 17, 35, 17, 35, 17, 1, 186, 82, 220, 82, 2, 107, 253, 52, 2, 134, 253, 122, 2, + 204, 0, 1, 0, 49, 255, 159, 1, 191, 2, 107, 0, 23, 0, 84, 64, 42, 0, 19, 0, + 3, 19, 120, 15, 10, 20, 15, 15, 10, 18, 18, 4, 25, 0, 3, 3, 120, 7, 10, 20, + 7, 7, 10, 15, 15, 7, 24, 10, 10, 0, 0, 3, 15, 19, 16, 65, 7, 3, 6, 0, + 47, 205, 50, 63, 205, 50, 17, 57, 25, 47, 51, 1, 24, 47, 16, 198, 50, 47, 135, 16, + 43, 125, 16, 196, 1, 24, 16, 206, 50, 47, 135, 16, 43, 8, 125, 16, 196, 49, 48, 1, + 6, 6, 7, 33, 21, 33, 53, 54, 54, 55, 46, 3, 39, 53, 33, 21, 33, 30, 3, 1, + 76, 56, 98, 33, 1, 46, 254, 114, 30, 99, 65, 48, 65, 44, 26, 7, 1, 138, 254, 216, + 14, 43, 50, 52, 1, 15, 83, 150, 66, 69, 59, 63, 150, 98, 73, 98, 66, 39, 14, 56, + 70, 23, 68, 76, 78, 0, 1, 0, 18, 0, 0, 1, 226, 2, 121, 0, 45, 0, 96, 185, + 0, 7, 255, 216, 179, 14, 0, 77, 7, 184, 255, 224, 64, 46, 13, 0, 77, 3, 24, 14, + 0, 77, 3, 32, 13, 0, 77, 15, 19, 19, 24, 118, 10, 16, 16, 10, 47, 41, 37, 37, + 34, 118, 0, 40, 40, 0, 46, 19, 37, 37, 15, 41, 121, 18, 39, 68, 29, 124, 5, 69, + 0, 63, 237, 63, 51, 237, 50, 50, 17, 51, 1, 16, 198, 50, 47, 16, 237, 50, 47, 51, + 16, 206, 50, 47, 16, 237, 50, 47, 51, 49, 48, 43, 43, 43, 43, 19, 52, 62, 2, 51, + 50, 30, 2, 21, 20, 14, 2, 7, 51, 21, 35, 53, 62, 3, 53, 52, 46, 2, 35, 34, + 14, 2, 21, 20, 22, 23, 21, 35, 53, 51, 46, 3, 32, 35, 60, 79, 45, 45, 79, 60, + 35, 18, 26, 32, 13, 101, 197, 24, 36, 24, 12, 16, 32, 49, 33, 33, 49, 32, 16, 42, + 54, 199, 103, 17, 31, 26, 15, 1, 76, 75, 113, 75, 38, 38, 75, 113, 75, 40, 76, 67, + 57, 22, 70, 51, 24, 65, 75, 80, 39, 45, 80, 62, 36, 37, 61, 81, 45, 78, 144, 60, + 51, 70, 25, 62, 67, 72, 0, 1, 0, 46, 0, 228, 1, 199, 1, 42, 0, 3, 0, 13, + 179, 3, 2, 0, 3, 0, 47, 205, 1, 47, 47, 49, 48, 19, 33, 21, 33, 46, 1, 153, + 254, 103, 1, 42, 70, 255, 255, 0, 25, 0, 0, 1, 218, 2, 107, 2, 6, 1, 110, 0, + 0, 255, 255, 0, 177, 0, 202, 1, 68, 1, 99, 2, 7, 0, 17, 0, 0, 0, 214, 0, + 0, 0, 1, 0, 29, 255, 243, 1, 226, 2, 187, 0, 14, 0, 46, 64, 20, 8, 7, 4, + 4, 1, 5, 6, 16, 13, 1, 0, 4, 8, 92, 5, 6, 14, 14, 13, 1, 0, 47, 205, + 50, 47, 47, 51, 63, 51, 1, 47, 221, 205, 16, 222, 205, 17, 57, 25, 47, 51, 51, 49, + 48, 19, 55, 22, 22, 23, 19, 51, 3, 35, 46, 3, 39, 7, 29, 131, 29, 43, 20, 157, + 73, 193, 74, 11, 22, 23, 27, 16, 65, 1, 57, 43, 80, 123, 62, 2, 96, 253, 56, 36, + 67, 69, 73, 42, 21, 0, 3, 0, 30, 0, 136, 1, 214, 1, 133, 0, 11, 0, 43, 0, + 55, 0, 57, 64, 27, 31, 15, 53, 3, 3, 23, 47, 39, 9, 23, 50, 34, 34, 15, 3, + 53, 31, 4, 18, 6, 28, 18, 44, 12, 12, 0, 18, 0, 47, 205, 51, 47, 205, 16, 220, + 205, 18, 23, 57, 51, 47, 205, 1, 47, 205, 47, 205, 17, 57, 47, 205, 57, 57, 49, 48, + 55, 50, 54, 55, 38, 38, 35, 34, 6, 21, 20, 22, 23, 34, 38, 39, 6, 6, 35, 34, + 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, + 39, 50, 54, 53, 52, 38, 35, 34, 6, 7, 22, 22, 152, 20, 35, 16, 15, 37, 19, 23, + 33, 33, 224, 36, 53, 14, 15, 51, 36, 16, 41, 36, 25, 25, 36, 41, 16, 36, 51, 15, + 15, 52, 36, 16, 41, 36, 24, 24, 36, 41, 19, 22, 33, 33, 22, 20, 36, 16, 15, 37, + 194, 37, 32, 31, 37, 34, 34, 35, 34, 58, 40, 23, 23, 40, 12, 29, 49, 37, 37, 48, + 29, 12, 41, 23, 23, 41, 12, 29, 48, 37, 37, 49, 29, 12, 58, 34, 35, 34, 34, 36, + 32, 32, 37, 0, 1, 0, 75, 255, 91, 1, 168, 2, 181, 0, 23, 0, 29, 64, 12, 7, + 12, 19, 23, 23, 25, 24, 20, 16, 8, 4, 90, 0, 63, 205, 47, 205, 1, 17, 18, 57, + 47, 206, 221, 206, 49, 48, 19, 52, 54, 51, 50, 50, 23, 21, 35, 34, 6, 21, 17, 20, + 6, 35, 34, 34, 39, 53, 51, 50, 54, 53, 208, 83, 88, 3, 19, 23, 39, 51, 44, 81, + 88, 5, 18, 23, 39, 51, 43, 1, 250, 90, 97, 1, 71, 62, 51, 254, 25, 89, 97, 1, + 71, 62, 51, 255, 255, 0, 37, 0, 95, 1, 207, 1, 177, 2, 54, 0, 97, 0, 96, 0, + 6, 0, 97, 0, 162, 0, 0, 0, 1, 0, 46, 0, 14, 1, 199, 1, 253, 0, 19, 0, + 66, 64, 33, 15, 12, 11, 8, 4, 7, 16, 18, 1, 2, 5, 4, 17, 6, 7, 7, 10, + 13, 16, 17, 17, 3, 0, 8, 6, 5, 11, 2, 12, 1, 16, 15, 18, 0, 47, 51, 205, + 221, 50, 222, 50, 221, 205, 51, 1, 47, 51, 51, 47, 205, 47, 51, 51, 47, 205, 17, 23, + 57, 17, 18, 23, 57, 49, 48, 55, 51, 55, 35, 53, 51, 55, 23, 7, 51, 21, 35, 7, + 51, 21, 35, 7, 39, 55, 35, 46, 136, 61, 197, 233, 59, 58, 42, 101, 137, 61, 198, 234, + 58, 59, 42, 100, 202, 119, 71, 117, 32, 85, 71, 119, 71, 117, 32, 85, 255, 255, 0, 46, + 0, 1, 1, 199, 2, 3, 2, 39, 1, 159, 0, 0, 255, 29, 0, 6, 0, 31, 253, 61, + 255, 255, 0, 46, 0, 1, 1, 199, 2, 3, 2, 39, 1, 159, 0, 0, 255, 29, 0, 6, + 0, 33, 253, 61, 0, 2, 0, 39, 255, 241, 1, 205, 2, 123, 0, 17, 0, 33, 0, 140, + 64, 26, 25, 32, 15, 0, 77, 23, 40, 15, 0, 77, 21, 40, 15, 0, 77, 15, 24, 15, + 0, 77, 12, 32, 15, 0, 77, 7, 184, 255, 224, 179, 13, 0, 77, 3, 184, 255, 224, 64, + 29, 13, 0, 77, 5, 23, 23, 31, 18, 10, 31, 28, 0, 13, 31, 31, 35, 34, 28, 18, + 10, 0, 0, 5, 31, 32, 22, 0, 77, 31, 184, 255, 208, 179, 17, 0, 77, 31, 184, 255, + 192, 64, 13, 16, 0, 77, 31, 13, 23, 48, 16, 17, 0, 76, 23, 5, 0, 47, 51, 43, + 47, 51, 43, 43, 43, 18, 57, 25, 47, 51, 51, 51, 1, 17, 18, 57, 47, 51, 221, 24, + 205, 25, 16, 221, 24, 205, 17, 51, 17, 51, 49, 48, 0, 43, 43, 43, 43, 43, 43, 43, + 19, 62, 3, 55, 30, 3, 23, 6, 6, 7, 46, 3, 37, 46, 3, 39, 14, 3, 7, 22, + 22, 23, 54, 54, 39, 30, 54, 51, 50, 26, 26, 50, 51, 54, 30, 59, 100, 52, 26, 50, + 51, 54, 1, 50, 18, 30, 30, 30, 17, 17, 31, 29, 31, 17, 34, 56, 35, 34, 56, 1, + 54, 49, 87, 79, 73, 37, 37, 73, 79, 87, 49, 98, 154, 73, 37, 73, 79, 86, 50, 31, + 54, 49, 45, 24, 24, 46, 49, 53, 31, 61, 96, 46, 46, 94, 0, 3, 0, 28, 0, 0, + 1, 204, 2, 181, 0, 3, 0, 15, 0, 38, 0, 77, 64, 42, 18, 32, 12, 0, 77, 7, + 131, 13, 1, 127, 0, 40, 32, 30, 22, 34, 127, 37, 16, 35, 39, 1, 35, 76, 23, 23, + 26, 136, 20, 77, 33, 36, 133, 16, 10, 138, 4, 2, 2, 30, 16, 73, 0, 63, 51, 51, + 16, 222, 237, 16, 237, 50, 63, 237, 50, 47, 63, 51, 1, 16, 214, 50, 206, 253, 204, 51, + 206, 16, 222, 237, 212, 237, 49, 48, 43, 33, 35, 17, 51, 39, 34, 38, 53, 52, 54, 51, + 50, 22, 21, 20, 6, 5, 53, 52, 54, 51, 50, 23, 7, 38, 38, 35, 34, 6, 21, 21, + 51, 21, 35, 17, 35, 17, 35, 53, 1, 192, 83, 83, 42, 22, 31, 31, 22, 23, 31, 31, + 254, 164, 86, 90, 47, 24, 12, 10, 23, 19, 56, 44, 123, 123, 83, 53, 1, 208, 84, 30, + 25, 25, 29, 29, 25, 25, 30, 84, 42, 90, 97, 6, 72, 4, 3, 63, 54, 41, 69, 254, + 117, 1, 139, 69, 0, 3, 0, 28, 0, 0, 1, 204, 2, 181, 0, 3, 0, 15, 0, 38, + 0, 68, 64, 36, 7, 131, 13, 1, 127, 0, 40, 32, 30, 22, 33, 127, 37, 16, 36, 39, + 1, 35, 76, 23, 23, 26, 136, 20, 77, 33, 36, 133, 30, 16, 73, 10, 138, 4, 2, 73, + 0, 63, 222, 237, 63, 51, 237, 50, 63, 237, 50, 47, 63, 51, 1, 16, 214, 50, 205, 253, + 204, 51, 205, 16, 222, 237, 212, 237, 49, 48, 33, 35, 17, 51, 39, 34, 38, 53, 52, 54, + 51, 50, 22, 21, 20, 6, 5, 53, 52, 54, 51, 50, 23, 7, 38, 38, 35, 34, 6, 21, + 21, 51, 21, 35, 17, 35, 17, 35, 53, 1, 192, 83, 83, 42, 22, 31, 31, 22, 23, 31, + 31, 254, 164, 86, 90, 47, 24, 12, 10, 23, 19, 56, 44, 123, 123, 83, 53, 1, 208, 84, + 30, 25, 25, 29, 29, 25, 25, 30, 84, 42, 90, 97, 6, 72, 4, 3, 63, 54, 41, 69, + 254, 117, 1, 139, 69, 0, 2, 0, 28, 255, 247, 1, 235, 2, 181, 0, 11, 0, 34, 0, + 68, 64, 36, 11, 11, 3, 127, 6, 36, 28, 26, 18, 29, 127, 33, 12, 32, 35, 31, 76, + 19, 19, 22, 136, 16, 77, 29, 32, 133, 26, 12, 73, 4, 5, 77, 11, 136, 0, 81, 0, + 63, 237, 63, 51, 63, 51, 237, 50, 63, 237, 50, 47, 63, 1, 16, 214, 50, 205, 253, 204, + 51, 205, 16, 220, 237, 51, 47, 49, 48, 5, 38, 38, 53, 17, 55, 17, 20, 30, 2, 23, + 1, 53, 52, 54, 51, 50, 23, 7, 38, 38, 35, 34, 6, 21, 21, 51, 21, 35, 17, 35, + 17, 35, 53, 1, 224, 68, 56, 83, 5, 12, 20, 15, 254, 102, 86, 90, 47, 24, 12, 10, + 23, 19, 56, 44, 123, 123, 83, 53, 9, 2, 62, 66, 2, 46, 14, 253, 210, 21, 26, 16, + 8, 3, 1, 147, 42, 90, 97, 6, 72, 4, 3, 63, 54, 41, 69, 254, 117, 1, 139, 69, + 0, 2, 0, 28, 255, 247, 1, 235, 2, 181, 0, 11, 0, 34, 0, 68, 64, 36, 11, 11, + 3, 127, 6, 36, 28, 26, 18, 29, 127, 33, 12, 32, 35, 31, 76, 19, 19, 22, 136, 16, + 77, 29, 32, 133, 26, 12, 73, 4, 5, 77, 11, 136, 0, 81, 0, 63, 237, 63, 51, 63, + 51, 237, 50, 63, 237, 50, 47, 63, 1, 16, 214, 50, 205, 253, 204, 51, 205, 16, 220, 237, + 51, 47, 49, 48, 5, 38, 38, 53, 17, 55, 17, 20, 30, 2, 23, 1, 53, 52, 54, 51, + 50, 23, 7, 38, 38, 35, 34, 6, 21, 21, 51, 21, 35, 17, 35, 17, 35, 53, 1, 224, + 68, 56, 83, 5, 12, 20, 15, 254, 102, 86, 90, 47, 24, 12, 10, 23, 19, 56, 44, 123, + 123, 83, 53, 9, 2, 62, 66, 2, 46, 14, 253, 210, 21, 26, 16, 8, 3, 1, 147, 42, + 90, 97, 6, 72, 4, 3, 63, 54, 41, 69, 254, 117, 1, 139, 69, 255, 255, 0, 116, 1, + 125, 1, 128, 2, 228, 2, 6, 1, 111, 0, 107, 255, 255, 0, 135, 1, 132, 1, 136, 2, + 221, 2, 6, 0, 148, 9, 107, 255, 255, 0, 124, 1, 132, 1, 120, 2, 228, 2, 6, 0, + 141, 0, 107, 255, 255, 0, 128, 1, 125, 1, 120, 2, 228, 2, 6, 0, 142, 2, 107, 255, + 255, 0, 105, 1, 132, 1, 128, 2, 221, 2, 6, 1, 112, 0, 107, 255, 255, 0, 119, 1, + 125, 1, 111, 2, 221, 2, 6, 1, 113, 248, 107, 255, 255, 0, 117, 1, 125, 1, 122, 2, + 223, 2, 6, 1, 114, 248, 107, 255, 255, 0, 126, 1, 132, 1, 125, 2, 221, 2, 6, 1, + 115, 248, 107, 255, 255, 0, 119, 1, 125, 1, 125, 2, 228, 2, 6, 1, 116, 0, 107, 255, + 255, 0, 124, 1, 131, 1, 129, 2, 228, 2, 6, 1, 117, 248, 107, 255, 255, 0, 116, 255, + 96, 1, 128, 0, 199, 2, 7, 1, 111, 0, 0, 254, 78, 0, 0, 255, 255, 0, 135, 255, + 103, 1, 136, 0, 192, 2, 7, 0, 148, 0, 9, 254, 78, 0, 0, 255, 255, 0, 124, 255, + 103, 1, 120, 0, 199, 2, 7, 0, 141, 0, 0, 254, 78, 0, 0, 255, 255, 0, 128, 255, + 96, 1, 120, 0, 199, 2, 7, 0, 142, 0, 2, 254, 78, 0, 0, 255, 255, 0, 105, 255, + 103, 1, 128, 0, 192, 2, 7, 1, 112, 0, 0, 254, 78, 0, 0, 255, 255, 0, 119, 255, + 96, 1, 111, 0, 192, 2, 7, 1, 113, 255, 248, 254, 78, 0, 0, 255, 255, 0, 117, 255, + 96, 1, 122, 0, 194, 2, 7, 1, 114, 255, 248, 254, 78, 0, 0, 255, 255, 0, 126, 255, + 103, 1, 125, 0, 192, 2, 7, 1, 115, 255, 248, 254, 78, 0, 0, 255, 255, 0, 119, 255, + 96, 1, 125, 0, 199, 2, 7, 1, 116, 0, 0, 254, 78, 0, 0, 255, 255, 0, 124, 255, + 102, 1, 129, 0, 199, 2, 7, 1, 117, 255, 248, 254, 78, 0, 0, 0, 1, 0, 210, 1, + 238, 1, 33, 2, 181, 0, 3, 0, 17, 181, 0, 64, 3, 3, 128, 2, 0, 47, 26, 205, + 1, 47, 26, 205, 49, 48, 1, 7, 35, 53, 1, 33, 24, 55, 2, 181, 199, 199, 0, 1, + 0, 171, 255, 86, 1, 64, 255, 211, 0, 14, 0, 19, 182, 10, 1, 0, 7, 10, 0, 15, + 0, 16, 222, 222, 205, 1, 47, 205, 206, 49, 48, 23, 51, 22, 22, 21, 20, 6, 35, 34, + 39, 53, 51, 50, 54, 53, 238, 80, 1, 1, 61, 46, 20, 22, 15, 33, 19, 45, 5, 11, + 4, 57, 48, 6, 48, 29, 29, 0, 1, 0, 185, 2, 32, 1, 59, 2, 185, 0, 15, 0, + 17, 181, 10, 15, 4, 9, 10, 0, 0, 47, 222, 205, 1, 47, 221, 206, 49, 48, 1, 35, + 38, 52, 53, 52, 62, 2, 55, 23, 14, 3, 21, 1, 9, 79, 1, 18, 29, 36, 18, 29, + 11, 18, 14, 7, 2, 32, 5, 11, 3, 32, 47, 32, 19, 4, 40, 8, 16, 22, 32, 24, + 0, 1, 0, 210, 2, 8, 1, 33, 2, 181, 0, 3, 0, 17, 181, 0, 64, 3, 3, 128, + 2, 0, 47, 26, 205, 1, 47, 26, 205, 49, 48, 1, 7, 35, 53, 1, 33, 24, 55, 2, + 181, 173, 173, 255, 255, 0, 113, 255, 131, 1, 130, 2, 231, 2, 6, 0, 11, 0, 42, 255, + 255, 0, 113, 255, 131, 1, 130, 2, 231, 2, 6, 0, 12, 0, 42, 255, 255, 0, 140, 1, + 13, 1, 104, 1, 91, 2, 6, 0, 16, 0, 54, 255, 255, 0, 69, 255, 133, 1, 175, 2, + 229, 2, 6, 0, 18, 0, 42, 255, 255, 0, 40, 255, 181, 1, 212, 2, 181, 2, 6, 0, + 35, 0, 60, 255, 255, 0, 143, 255, 133, 1, 126, 2, 229, 2, 6, 0, 62, 0, 42, 255, + 255, 0, 70, 255, 133, 1, 174, 2, 229, 2, 6, 0, 63, 0, 42, 255, 255, 0, 118, 255, + 133, 1, 101, 2, 229, 2, 6, 0, 64, 0, 42, 255, 255, 0, 79, 255, 133, 1, 171, 2, + 229, 2, 6, 0, 94, 0, 42, 255, 255, 0, 73, 255, 133, 1, 165, 2, 229, 2, 6, 0, + 96, 0, 42, 255, 255, 0, 144, 0, 111, 1, 85, 1, 250, 2, 6, 0, 108, 0, 55, 255, + 255, 0, 114, 0, 196, 1, 130, 1, 226, 2, 6, 0, 114, 0, 23, 255, 255, 0, 69, 1, + 18, 1, 175, 1, 88, 2, 6, 0, 115, 0, 38, 255, 255, 0, 0, 1, 18, 1, 244, 1, + 88, 2, 6, 0, 116, 0, 38, 255, 255, 0, 159, 0, 111, 1, 100, 1, 250, 2, 6, 0, + 120, 0, 55, 255, 255, 0, 182, 255, 250, 1, 60, 2, 112, 2, 7, 0, 124, 0, 0, 0, + 159, 0, 0, 255, 255, 0, 63, 0, 133, 1, 157, 1, 228, 2, 6, 0, 134, 0, 54, 255, + 255, 0, 85, 0, 133, 1, 181, 1, 228, 2, 6, 0, 150, 0, 54, 255, 255, 0, 92, 255, + 248, 1, 154, 2, 115, 2, 7, 0, 154, 0, 0, 0, 162, 0, 0, 0, 2, 0, 20, 255, + 245, 1, 204, 2, 181, 0, 26, 0, 41, 0, 153, 64, 28, 36, 24, 16, 0, 77, 36, 32, + 15, 0, 77, 36, 24, 14, 0, 77, 31, 40, 15, 16, 0, 76, 31, 24, 13, 14, 0, 76, + 14, 184, 255, 224, 180, 8, 10, 0, 76, 10, 184, 255, 224, 179, 10, 0, 77, 10, 184, 255, + 224, 179, 8, 0, 77, 9, 184, 255, 208, 64, 50, 9, 0, 77, 33, 130, 12, 43, 41, 2, + 0, 3, 127, 24, 22, 0, 21, 1, 21, 42, 3, 21, 0, 24, 24, 7, 25, 26, 77, 27, + 30, 136, 20, 17, 81, 41, 38, 136, 4, 0, 7, 16, 7, 32, 7, 64, 7, 4, 8, 7, + 80, 0, 63, 94, 93, 51, 237, 50, 63, 51, 237, 50, 63, 51, 18, 57, 47, 51, 205, 50, + 1, 16, 214, 93, 205, 51, 253, 50, 205, 51, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 19, 51, 21, 35, 21, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, + 34, 38, 39, 17, 35, 53, 51, 53, 55, 17, 22, 22, 51, 50, 54, 53, 52, 46, 2, 35, + 34, 6, 7, 168, 162, 162, 15, 54, 34, 45, 70, 48, 26, 30, 56, 78, 48, 54, 82, 26, + 66, 66, 82, 18, 36, 16, 64, 73, 13, 27, 44, 30, 28, 51, 14, 2, 98, 62, 101, 9, + 19, 36, 64, 89, 54, 56, 90, 63, 34, 16, 8, 2, 23, 62, 69, 14, 253, 147, 5, 5, + 85, 85, 36, 63, 45, 26, 23, 13, 0, 3, 0, 18, 255, 251, 1, 226, 2, 113, 0, 34, + 0, 49, 0, 62, 0, 199, 64, 47, 58, 56, 18, 0, 77, 58, 40, 17, 0, 77, 54, 40, + 18, 0, 77, 54, 48, 17, 0, 77, 47, 64, 18, 0, 77, 46, 48, 17, 0, 77, 46, 24, + 16, 0, 77, 41, 48, 17, 18, 0, 76, 41, 16, 16, 0, 77, 34, 184, 255, 232, 179, 9, + 0, 77, 33, 184, 255, 232, 180, 10, 12, 0, 76, 24, 184, 255, 232, 179, 12, 0, 77, 24, + 184, 255, 240, 179, 11, 0, 77, 24, 184, 255, 224, 179, 10, 0, 77, 24, 184, 255, 232, 64, + 55, 9, 0, 77, 17, 16, 12, 0, 77, 17, 24, 11, 0, 77, 29, 56, 118, 26, 26, 44, + 118, 32, 64, 35, 62, 115, 0, 6, 32, 6, 2, 8, 6, 9, 0, 15, 1, 15, 63, 12, + 12, 6, 59, 121, 20, 29, 35, 121, 50, 50, 20, 65, 39, 124, 0, 67, 0, 63, 237, 63, + 57, 47, 237, 57, 16, 237, 50, 50, 47, 1, 16, 214, 93, 221, 222, 94, 93, 237, 50, 16, + 222, 237, 51, 47, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 5, 34, 46, 2, 39, 17, 6, 6, 21, 20, 23, 7, 38, 38, 53, + 52, 62, 2, 51, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 6, 3, 21, 22, + 22, 51, 50, 62, 2, 53, 52, 46, 2, 35, 39, 51, 50, 62, 2, 53, 52, 38, 35, 34, + 6, 7, 1, 31, 14, 33, 35, 33, 13, 38, 33, 4, 67, 2, 5, 44, 72, 90, 47, 15, + 36, 61, 45, 26, 45, 38, 51, 60, 91, 150, 11, 25, 11, 22, 41, 31, 18, 21, 35, 45, + 24, 34, 24, 18, 38, 30, 20, 46, 44, 9, 20, 11, 5, 2, 3, 6, 4, 2, 24, 5, + 32, 29, 16, 17, 8, 6, 25, 13, 50, 57, 28, 7, 16, 38, 62, 46, 44, 74, 14, 14, + 76, 60, 93, 93, 1, 38, 221, 2, 2, 10, 26, 45, 35, 32, 42, 25, 10, 68, 8, 23, + 38, 30, 54, 45, 1, 2, 0, 2, 0, 54, 255, 251, 1, 195, 2, 107, 0, 16, 0, 31, + 0, 121, 64, 22, 24, 32, 16, 0, 77, 24, 24, 15, 0, 77, 20, 32, 15, 16, 0, 76, + 19, 24, 14, 0, 77, 8, 184, 255, 232, 179, 10, 0, 77, 8, 184, 255, 224, 179, 8, 0, + 77, 5, 184, 255, 232, 180, 17, 18, 0, 76, 5, 184, 255, 224, 179, 10, 0, 77, 5, 184, + 255, 232, 64, 28, 8, 0, 77, 22, 118, 7, 16, 16, 7, 33, 1, 29, 115, 13, 32, 28, + 121, 1, 1, 17, 0, 121, 14, 65, 17, 124, 10, 67, 0, 63, 237, 63, 237, 18, 57, 47, + 237, 1, 16, 214, 237, 50, 16, 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 19, 21, 51, 50, 30, 2, 21, 20, 6, 35, 34, 38, 39, 17, 33, 21, 3, + 50, 62, 2, 53, 52, 46, 2, 35, 35, 21, 22, 22, 136, 66, 59, 93, 64, 33, 127, 119, + 35, 83, 33, 1, 86, 187, 34, 58, 43, 25, 24, 45, 63, 39, 62, 26, 29, 2, 37, 166, + 20, 45, 74, 53, 99, 97, 6, 9, 2, 97, 70, 254, 27, 13, 29, 48, 36, 37, 49, 28, + 12, 248, 3, 1, 0, 2, 0, 71, 255, 245, 1, 204, 2, 177, 0, 20, 0, 35, 0, 137, + 64, 42, 30, 24, 16, 0, 77, 30, 40, 15, 0, 77, 30, 24, 14, 0, 77, 25, 48, 15, + 16, 0, 76, 25, 40, 14, 0, 77, 25, 16, 13, 0, 77, 11, 24, 16, 0, 77, 11, 16, + 15, 0, 77, 6, 184, 255, 240, 179, 10, 0, 77, 6, 184, 255, 224, 179, 9, 0, 77, 6, + 184, 255, 232, 64, 35, 8, 0, 77, 27, 130, 9, 20, 20, 9, 37, 1, 21, 127, 0, 17, + 1, 8, 17, 36, 0, 133, 18, 77, 21, 24, 136, 17, 14, 81, 35, 32, 136, 1, 4, 80, + 0, 63, 51, 237, 50, 63, 51, 237, 50, 63, 237, 1, 16, 214, 94, 93, 237, 50, 16, 206, + 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 21, 54, + 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 17, 33, 21, 1, 22, 22, 51, + 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 154, 15, 57, 35, 47, 74, 51, 27, 32, 58, + 82, 50, 55, 86, 26, 1, 83, 255, 0, 19, 38, 17, 69, 78, 14, 30, 47, 33, 29, 54, + 14, 2, 107, 172, 9, 19, 36, 64, 89, 54, 56, 90, 63, 34, 16, 8, 2, 164, 70, 253, + 221, 5, 5, 85, 85, 36, 63, 45, 26, 23, 13, 0, 2, 0, 11, 255, 245, 1, 204, 2, + 181, 0, 21, 0, 35, 0, 131, 64, 21, 30, 32, 14, 0, 77, 30, 16, 13, 0, 77, 25, + 32, 14, 0, 77, 25, 24, 13, 0, 77, 10, 184, 255, 224, 179, 8, 0, 77, 9, 184, 255, + 224, 179, 16, 0, 77, 9, 184, 255, 232, 179, 15, 0, 77, 9, 184, 255, 240, 179, 10, 0, + 77, 9, 184, 255, 232, 64, 34, 9, 0, 77, 27, 130, 12, 37, 3, 22, 127, 0, 0, 20, + 1, 8, 20, 36, 22, 24, 136, 20, 17, 81, 35, 32, 136, 4, 7, 80, 0, 0, 21, 3, + 77, 0, 63, 205, 57, 25, 47, 24, 63, 51, 237, 50, 63, 51, 237, 50, 1, 16, 214, 94, + 93, 206, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 54, + 54, 55, 21, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 17, 19, 22, + 51, 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 11, 32, 74, 39, 16, 54, 35, 47, 74, + 51, 27, 32, 58, 82, 50, 55, 83, 26, 82, 37, 35, 69, 78, 14, 30, 47, 33, 29, 52, + 14, 2, 120, 19, 32, 10, 246, 9, 19, 36, 64, 89, 54, 56, 90, 63, 34, 16, 8, 2, + 38, 254, 21, 10, 85, 85, 36, 63, 45, 26, 23, 13, 0, 2, 0, 9, 255, 251, 1, 195, + 2, 113, 0, 16, 0, 33, 0, 150, 185, 0, 24, 255, 240, 179, 16, 0, 77, 23, 184, 255, + 216, 179, 16, 0, 77, 23, 184, 255, 208, 179, 15, 0, 77, 23, 184, 255, 224, 180, 8, 10, + 0, 76, 21, 184, 255, 216, 179, 16, 0, 77, 21, 184, 255, 224, 179, 15, 0, 77, 21, 184, + 255, 216, 179, 10, 0, 77, 21, 184, 255, 232, 179, 9, 0, 77, 21, 184, 255, 216, 64, 41, + 8, 0, 77, 14, 24, 14, 0, 77, 3, 24, 14, 0, 77, 0, 118, 22, 35, 17, 9, 115, + 30, 0, 28, 1, 8, 28, 34, 30, 30, 29, 33, 8, 124, 17, 17, 33, 65, 12, 124, 25, + 67, 0, 63, 237, 63, 57, 47, 237, 16, 205, 57, 25, 47, 1, 24, 16, 214, 94, 93, 206, + 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 52, + 46, 2, 35, 34, 34, 7, 17, 22, 22, 51, 50, 62, 2, 39, 54, 50, 51, 50, 21, 20, + 6, 35, 34, 38, 39, 17, 39, 54, 54, 55, 1, 113, 25, 42, 57, 32, 13, 33, 13, 19, + 39, 16, 26, 50, 40, 25, 215, 11, 36, 14, 236, 121, 109, 34, 83, 33, 62, 32, 71, 42, + 194, 40, 52, 31, 13, 2, 254, 252, 3, 1, 13, 30, 50, 237, 2, 202, 100, 99, 6, 9, + 1, 230, 67, 19, 32, 11, 0, 1, 0, 42, 255, 243, 1, 198, 2, 121, 0, 31, 0, 129, + 64, 17, 30, 40, 18, 0, 77, 30, 32, 17, 0, 77, 30, 24, 15, 16, 0, 76, 26, 184, + 255, 232, 179, 13, 0, 77, 20, 184, 255, 232, 64, 65, 13, 14, 0, 76, 15, 40, 16, 0, + 77, 14, 40, 18, 0, 77, 14, 24, 17, 0, 77, 8, 8, 12, 0, 77, 8, 40, 11, 0, + 77, 4, 16, 17, 18, 0, 76, 4, 24, 12, 0, 77, 4, 40, 11, 0, 77, 6, 118, 23, + 33, 13, 13, 31, 32, 0, 0, 3, 124, 28, 70, 12, 12, 9, 124, 18, 69, 0, 63, 237, + 50, 47, 63, 237, 50, 47, 1, 16, 198, 50, 47, 16, 222, 237, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, + 6, 7, 39, 62, 3, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 63, 35, 62, + 29, 83, 98, 89, 88, 29, 64, 35, 21, 15, 41, 44, 44, 18, 53, 91, 66, 38, 40, 69, + 93, 53, 45, 77, 35, 94, 19, 15, 122, 128, 120, 130, 13, 20, 65, 10, 16, 10, 5, 38, + 79, 122, 84, 83, 122, 79, 39, 19, 20, 0, 1, 0, 46, 255, 243, 1, 235, 2, 190, 0, + 46, 0, 150, 64, 11, 22, 24, 14, 0, 77, 22, 32, 13, 0, 77, 18, 184, 255, 224, 180, + 17, 18, 0, 76, 18, 184, 255, 208, 179, 16, 0, 77, 18, 184, 255, 192, 179, 15, 0, 77, + 11, 184, 255, 232, 180, 17, 18, 0, 76, 11, 184, 255, 232, 180, 11, 12, 0, 76, 5, 184, + 255, 232, 179, 18, 0, 77, 5, 184, 255, 240, 179, 17, 0, 77, 5, 184, 255, 232, 180, 11, + 12, 0, 76, 5, 184, 255, 240, 64, 29, 9, 10, 0, 76, 32, 0, 0, 38, 17, 48, 8, + 118, 25, 47, 42, 35, 30, 0, 0, 3, 124, 30, 69, 16, 16, 13, 124, 20, 70, 0, 63, + 237, 50, 47, 63, 237, 50, 47, 16, 220, 205, 1, 16, 214, 237, 16, 222, 206, 51, 47, 51, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 38, 38, 35, 34, 14, 2, + 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, + 50, 23, 54, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 1, 132, 28, 47, 23, + 36, 59, 42, 23, 24, 42, 58, 35, 26, 58, 30, 21, 32, 71, 41, 50, 86, 63, 35, 39, + 65, 85, 45, 36, 29, 13, 46, 42, 10, 27, 8, 13, 5, 18, 5, 15, 19, 14, 10, 2, + 18, 16, 14, 37, 66, 92, 55, 64, 94, 62, 30, 15, 19, 68, 20, 19, 39, 79, 122, 83, + 76, 120, 83, 44, 11, 49, 31, 6, 5, 61, 3, 4, 19, 31, 38, 0, 1, 0, 49, 255, + 245, 1, 230, 2, 50, 0, 49, 0, 74, 181, 24, 48, 14, 0, 77, 11, 184, 255, 232, 179, + 13, 0, 77, 6, 184, 255, 224, 64, 28, 13, 0, 77, 35, 0, 0, 41, 17, 51, 8, 130, + 27, 50, 45, 38, 0, 5, 136, 32, 80, 16, 16, 13, 136, 22, 81, 1, 73, 0, 63, 63, + 237, 50, 47, 63, 237, 50, 220, 205, 1, 16, 214, 237, 16, 222, 206, 51, 47, 51, 49, 48, + 43, 43, 43, 1, 46, 3, 35, 34, 6, 21, 20, 30, 2, 51, 50, 54, 55, 23, 14, 3, + 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 54, 54, 51, 50, 22, 23, 7, 38, + 38, 35, 34, 14, 2, 1, 130, 5, 22, 27, 31, 15, 73, 79, 18, 39, 60, 43, 33, 55, + 16, 12, 7, 27, 35, 40, 18, 58, 87, 59, 30, 32, 60, 84, 53, 14, 28, 14, 10, 50, + 45, 11, 27, 9, 14, 7, 16, 6, 18, 20, 11, 5, 1, 128, 1, 7, 6, 5, 87, 85, + 38, 62, 44, 24, 11, 8, 69, 5, 8, 7, 4, 36, 64, 89, 53, 53, 90, 65, 37, 3, + 2, 52, 39, 6, 5, 60, 3, 3, 20, 31, 41, 255, 255, 0, 18, 255, 251, 1, 204, 2, + 113, 2, 6, 0, 171, 0, 0, 0, 2, 0, 18, 255, 251, 1, 228, 2, 113, 0, 27, 0, + 42, 0, 109, 64, 77, 38, 72, 14, 0, 77, 38, 32, 13, 0, 77, 37, 24, 18, 0, 77, + 37, 16, 17, 0, 77, 34, 16, 17, 18, 0, 76, 33, 24, 14, 0, 77, 33, 16, 13, 0, + 77, 7, 24, 14, 0, 77, 3, 24, 14, 0, 77, 36, 118, 5, 44, 41, 115, 0, 14, 16, + 14, 32, 14, 3, 14, 17, 0, 23, 1, 8, 23, 43, 31, 124, 10, 67, 20, 14, 41, 121, + 0, 65, 0, 63, 253, 50, 204, 63, 237, 1, 16, 214, 94, 93, 213, 214, 93, 237, 16, 222, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 50, 30, 2, 21, 20, 14, 2, + 35, 34, 38, 39, 17, 6, 6, 21, 20, 23, 7, 38, 38, 53, 52, 62, 2, 19, 22, 22, + 51, 50, 62, 2, 53, 52, 38, 35, 34, 6, 7, 1, 8, 47, 80, 59, 34, 34, 59, 80, + 47, 26, 57, 22, 38, 33, 4, 67, 2, 5, 51, 75, 85, 12, 8, 16, 6, 31, 48, 33, + 17, 66, 65, 8, 16, 4, 2, 113, 34, 76, 120, 85, 86, 120, 75, 34, 9, 6, 2, 24, + 5, 32, 29, 16, 17, 8, 6, 25, 13, 53, 57, 27, 5, 253, 212, 2, 1, 27, 59, 93, + 65, 126, 118, 2, 1, 0, 2, 0, 49, 255, 251, 1, 191, 2, 107, 0, 16, 0, 31, 0, + 127, 185, 0, 30, 255, 216, 179, 16, 0, 77, 29, 184, 255, 224, 179, 15, 0, 77, 29, 184, + 255, 232, 179, 14, 0, 77, 25, 184, 255, 232, 179, 16, 0, 77, 25, 184, 255, 216, 179, 15, + 0, 77, 25, 184, 255, 248, 64, 48, 14, 0, 77, 11, 16, 18, 0, 77, 11, 24, 17, 0, + 77, 11, 32, 8, 0, 77, 7, 32, 8, 0, 77, 15, 20, 115, 3, 33, 27, 118, 9, 0, + 0, 9, 32, 21, 121, 15, 15, 1, 17, 124, 6, 67, 0, 121, 1, 65, 0, 63, 237, 63, + 237, 17, 57, 47, 237, 1, 16, 198, 50, 47, 16, 237, 16, 222, 237, 50, 49, 48, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 19, 53, 33, 17, 6, 6, 35, 34, 38, 53, 52, 62, + 2, 51, 51, 53, 3, 50, 54, 55, 53, 35, 34, 14, 2, 21, 20, 30, 2, 104, 1, 87, + 34, 83, 35, 119, 127, 33, 64, 93, 59, 66, 73, 18, 29, 26, 62, 39, 63, 45, 24, 25, + 43, 58, 2, 37, 70, 253, 159, 9, 6, 97, 99, 53, 74, 45, 20, 166, 254, 27, 2, 2, + 248, 12, 28, 49, 37, 36, 48, 29, 13, 0, 2, 0, 40, 255, 245, 1, 173, 2, 177, 0, + 20, 0, 35, 0, 95, 185, 0, 31, 255, 232, 180, 13, 14, 0, 76, 31, 184, 255, 240, 179, + 12, 0, 77, 26, 184, 255, 240, 64, 42, 14, 0, 77, 15, 24, 15, 16, 0, 76, 14, 32, + 8, 0, 77, 20, 35, 127, 4, 37, 29, 130, 12, 1, 1, 12, 36, 21, 24, 136, 20, 17, + 80, 35, 32, 136, 4, 7, 81, 1, 133, 2, 77, 0, 63, 237, 63, 51, 237, 50, 63, 51, + 237, 50, 1, 16, 198, 50, 47, 16, 237, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, + 1, 35, 53, 33, 17, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 21, + 38, 38, 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 1, 90, 254, 1, 81, 27, 84, + 56, 50, 82, 58, 32, 27, 52, 73, 47, 37, 56, 14, 14, 54, 29, 33, 47, 30, 14, 76, + 61, 31, 43, 10, 2, 107, 70, 253, 92, 8, 16, 34, 63, 90, 56, 54, 89, 64, 36, 18, + 10, 81, 13, 23, 26, 45, 63, 36, 81, 88, 6, 3, 0, 2, 0, 39, 255, 91, 1, 204, + 1, 219, 0, 40, 0, 60, 0, 225, 185, 0, 58, 255, 232, 64, 30, 15, 16, 0, 76, 54, + 24, 16, 0, 77, 54, 16, 15, 0, 77, 48, 40, 18, 0, 77, 48, 32, 17, 0, 77, 48, + 16, 15, 0, 77, 44, 184, 255, 224, 180, 17, 18, 0, 76, 44, 184, 255, 232, 179, 15, 0, + 77, 39, 184, 255, 224, 64, 25, 9, 0, 77, 33, 32, 9, 0, 77, 29, 16, 11, 0, 77, + 28, 24, 9, 0, 77, 25, 24, 17, 18, 0, 76, 9, 184, 255, 232, 180, 15, 16, 0, 76, + 9, 184, 255, 224, 180, 13, 14, 0, 76, 9, 184, 255, 232, 179, 12, 0, 77, 9, 184, 255, + 224, 180, 10, 11, 0, 76, 7, 184, 255, 224, 179, 16, 0, 77, 6, 184, 255, 224, 180, 14, + 15, 0, 76, 3, 184, 255, 240, 64, 35, 11, 0, 77, 46, 5, 41, 23, 130, 8, 8, 51, + 130, 0, 62, 41, 130, 31, 14, 14, 31, 61, 46, 5, 5, 18, 56, 136, 36, 80, 15, 15, + 18, 137, 11, 75, 0, 63, 237, 50, 47, 63, 237, 18, 57, 17, 51, 1, 16, 198, 50, 47, + 16, 237, 16, 222, 237, 51, 47, 237, 18, 57, 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 14, 2, 7, 22, 22, + 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 62, 2, 53, 52, 38, 39, 46, 3, + 53, 52, 62, 2, 51, 50, 30, 2, 5, 20, 30, 2, 23, 62, 3, 53, 52, 46, 2, 35, + 34, 14, 2, 1, 204, 16, 35, 56, 40, 31, 41, 90, 78, 44, 79, 17, 15, 9, 68, 44, + 12, 32, 27, 19, 45, 41, 35, 64, 50, 29, 23, 50, 80, 58, 55, 79, 51, 25, 254, 177, + 20, 33, 43, 23, 38, 50, 30, 12, 13, 29, 48, 35, 32, 47, 30, 15, 1, 7, 32, 63, + 57, 49, 16, 19, 50, 38, 53, 51, 16, 6, 68, 5, 19, 2, 7, 13, 11, 24, 39, 26, + 23, 45, 56, 73, 50, 37, 73, 59, 36, 34, 57, 78, 41, 36, 55, 42, 32, 13, 12, 38, + 46, 52, 26, 28, 51, 39, 23, 21, 38, 50, 0, 1, 0, 40, 0, 0, 1, 153, 2, 107, + 0, 11, 0, 50, 64, 25, 6, 6, 2, 115, 11, 13, 8, 8, 4, 4, 1, 12, 3, 121, + 6, 6, 10, 2, 121, 11, 68, 7, 121, 10, 65, 0, 63, 237, 63, 237, 17, 57, 47, 237, + 1, 16, 198, 50, 47, 50, 47, 16, 222, 237, 50, 47, 49, 48, 51, 53, 33, 53, 35, 53, + 51, 53, 33, 53, 33, 17, 40, 1, 31, 232, 232, 254, 248, 1, 90, 70, 219, 70, 190, 70, + 253, 149, 0, 2, 0, 25, 255, 243, 1, 216, 2, 121, 0, 29, 0, 38, 0, 162, 64, 22, + 35, 24, 17, 18, 0, 76, 35, 40, 13, 0, 77, 35, 16, 12, 0, 77, 35, 8, 11, 0, + 77, 32, 184, 255, 232, 64, 92, 13, 0, 77, 24, 24, 14, 0, 77, 24, 16, 8, 0, 77, + 21, 24, 13, 0, 77, 20, 16, 13, 0, 77, 16, 32, 13, 0, 77, 10, 24, 18, 0, 77, + 10, 32, 17, 0, 77, 10, 24, 15, 16, 0, 76, 1, 24, 17, 18, 0, 76, 1, 40, 16, + 0, 77, 1, 64, 13, 0, 77, 1, 32, 11, 0, 77, 38, 0, 118, 18, 40, 30, 118, 26, + 8, 8, 26, 39, 0, 121, 38, 38, 2, 33, 124, 23, 70, 7, 7, 2, 124, 13, 69, 0, + 63, 237, 50, 47, 63, 237, 18, 57, 47, 237, 1, 16, 198, 50, 47, 16, 237, 16, 222, 237, + 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 1, 38, 35, 34, 14, 2, 7, 39, 62, 3, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, + 38, 53, 52, 54, 55, 23, 6, 22, 51, 50, 62, 2, 55, 1, 132, 12, 172, 19, 35, 31, + 24, 7, 21, 5, 28, 40, 48, 25, 66, 97, 65, 31, 36, 63, 85, 49, 102, 112, 2, 1, + 80, 1, 73, 61, 34, 53, 36, 20, 2, 1, 74, 233, 8, 12, 12, 4, 65, 5, 14, 13, + 9, 48, 86, 117, 69, 82, 122, 81, 41, 154, 155, 8, 21, 5, 69, 100, 105, 37, 59, 73, + 36, 0, 1, 0, 40, 255, 244, 1, 212, 2, 118, 0, 54, 0, 186, 185, 0, 50, 255, 240, + 180, 14, 16, 0, 76, 40, 184, 255, 208, 179, 18, 0, 77, 40, 184, 255, 232, 64, 56, 17, + 0, 77, 34, 24, 18, 0, 77, 34, 16, 17, 0, 77, 33, 32, 18, 0, 77, 33, 24, 17, + 0, 77, 33, 32, 8, 10, 0, 76, 29, 24, 17, 18, 0, 76, 25, 32, 17, 0, 77, 21, + 64, 18, 0, 77, 21, 40, 17, 0, 77, 21, 24, 8, 0, 77, 15, 184, 255, 232, 180, 13, + 14, 0, 76, 8, 184, 255, 232, 179, 16, 0, 77, 4, 184, 255, 240, 64, 37, 16, 0, 77, + 41, 41, 0, 0, 13, 56, 28, 48, 118, 31, 31, 6, 118, 23, 55, 28, 0, 121, 54, 54, + 9, 36, 42, 42, 45, 124, 36, 69, 12, 12, 9, 124, 18, 70, 0, 63, 237, 50, 47, 63, + 237, 50, 47, 17, 18, 57, 47, 237, 57, 1, 16, 214, 237, 51, 47, 237, 50, 16, 206, 50, + 47, 50, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 1, 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 23, 14, 3, 35, 34, 46, 2, + 53, 52, 62, 2, 55, 38, 38, 53, 52, 62, 2, 51, 50, 30, 2, 23, 7, 38, 38, 35, + 34, 6, 21, 20, 30, 2, 51, 51, 1, 108, 42, 41, 73, 54, 32, 87, 71, 57, 84, 22, + 25, 11, 36, 48, 59, 34, 54, 89, 63, 34, 22, 38, 50, 27, 54, 55, 30, 54, 75, 44, + 28, 53, 46, 36, 12, 27, 20, 80, 48, 54, 67, 34, 53, 64, 30, 33, 1, 36, 10, 26, + 47, 36, 62, 53, 29, 11, 66, 5, 15, 14, 10, 20, 44, 69, 50, 36, 54, 40, 26, 7, + 17, 76, 43, 41, 61, 39, 19, 6, 10, 14, 7, 65, 11, 21, 51, 41, 32, 41, 24, 9, + 0, 1, 0, 3, 255, 89, 1, 195, 2, 107, 0, 23, 0, 45, 64, 22, 21, 21, 18, 25, + 20, 0, 115, 8, 15, 24, 23, 121, 20, 20, 24, 19, 121, 16, 65, 12, 124, 5, 0, 47, + 237, 63, 237, 18, 57, 47, 237, 1, 16, 214, 204, 237, 50, 16, 206, 50, 47, 49, 48, 51, + 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, 33, 21, 33, 21, 51, + 21, 35, 182, 11, 29, 49, 39, 13, 28, 10, 8, 9, 17, 8, 32, 23, 1, 95, 254, 243, + 237, 237, 39, 62, 43, 23, 3, 2, 66, 2, 1, 43, 41, 2, 122, 70, 193, 69, 0, 1, + 0, 46, 255, 243, 1, 235, 2, 190, 0, 47, 0, 166, 181, 28, 16, 8, 0, 77, 27, 184, + 255, 232, 179, 14, 0, 77, 27, 184, 255, 248, 179, 13, 0, 77, 24, 184, 255, 232, 179, 13, + 0, 77, 23, 184, 255, 208, 179, 14, 0, 77, 11, 184, 255, 232, 180, 17, 18, 0, 76, 11, + 184, 255, 216, 179, 14, 0, 77, 11, 184, 255, 224, 179, 13, 0, 77, 5, 184, 255, 240, 179, + 18, 0, 77, 5, 184, 255, 232, 179, 17, 0, 77, 5, 184, 255, 216, 179, 14, 0, 77, 5, + 184, 255, 224, 64, 33, 13, 0, 77, 39, 33, 0, 0, 17, 115, 18, 49, 8, 118, 25, 48, + 43, 36, 30, 17, 17, 13, 0, 3, 124, 33, 30, 69, 16, 13, 124, 19, 22, 70, 0, 63, + 51, 237, 50, 63, 51, 237, 50, 18, 57, 47, 16, 220, 205, 1, 16, 214, 237, 16, 222, 237, + 51, 47, 51, 204, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 38, + 38, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, 53, 51, 17, 6, 6, 35, 34, + 38, 53, 52, 62, 2, 51, 50, 22, 23, 54, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, + 14, 2, 1, 132, 26, 48, 22, 41, 60, 41, 20, 20, 42, 66, 46, 29, 32, 8, 82, 19, + 84, 57, 120, 129, 41, 67, 86, 44, 16, 31, 14, 13, 46, 42, 10, 27, 8, 13, 5, 18, + 5, 15, 19, 14, 10, 2, 18, 16, 14, 41, 69, 91, 49, 56, 92, 66, 37, 8, 4, 234, + 254, 222, 7, 21, 168, 155, 81, 121, 81, 40, 5, 6, 49, 31, 6, 5, 61, 3, 4, 19, + 31, 38, 0, 2, 0, 13, 255, 92, 1, 232, 2, 107, 0, 37, 0, 51, 1, 53, 64, 16, + 51, 16, 17, 0, 77, 34, 24, 18, 0, 77, 34, 24, 14, 0, 77, 30, 184, 255, 232, 64, + 45, 14, 0, 77, 22, 32, 18, 0, 77, 22, 48, 17, 0, 77, 17, 32, 11, 0, 77, 17, + 40, 10, 0, 77, 16, 24, 16, 0, 77, 16, 16, 15, 0, 77, 16, 24, 13, 14, 0, 76, + 16, 32, 12, 0, 77, 12, 184, 255, 232, 179, 16, 0, 77, 12, 184, 255, 240, 179, 15, 0, + 77, 12, 184, 255, 232, 180, 13, 14, 0, 76, 12, 184, 255, 224, 179, 12, 0, 77, 11, 184, + 255, 224, 179, 11, 0, 77, 11, 184, 255, 216, 179, 10, 0, 77, 6, 184, 255, 216, 64, 10, + 17, 18, 0, 76, 3, 8, 14, 0, 77, 32, 184, 255, 232, 64, 34, 15, 0, 77, 48, 64, + 31, 0, 77, 48, 118, 9, 23, 27, 32, 27, 120, 26, 23, 20, 26, 26, 23, 5, 37, 32, + 37, 120, 0, 5, 20, 0, 0, 5, 42, 184, 255, 192, 64, 55, 31, 0, 77, 42, 118, 19, + 38, 32, 19, 15, 9, 1, 9, 19, 32, 19, 32, 9, 3, 26, 32, 0, 48, 0, 2, 0, + 53, 63, 26, 111, 26, 127, 26, 3, 111, 26, 127, 26, 2, 26, 52, 0, 37, 65, 38, 32, + 5, 23, 23, 27, 26, 65, 45, 121, 14, 0, 47, 237, 63, 51, 57, 17, 51, 51, 51, 63, + 51, 1, 16, 198, 93, 113, 16, 198, 93, 17, 23, 57, 25, 47, 24, 47, 47, 93, 17, 18, + 57, 16, 237, 43, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 125, 196, 1, 24, 16, + 237, 43, 49, 48, 0, 43, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 1, 14, 3, 7, 23, 22, 22, 21, 20, 14, 2, 35, 34, + 46, 2, 53, 52, 54, 55, 55, 38, 38, 39, 51, 30, 3, 23, 62, 3, 55, 3, 7, 6, + 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 39, 1, 232, 12, 42, 51, 59, 30, 55, 11, + 16, 12, 29, 48, 37, 37, 48, 29, 12, 13, 14, 56, 55, 97, 42, 86, 16, 32, 36, 42, + 27, 21, 46, 42, 33, 9, 154, 34, 8, 10, 27, 26, 26, 27, 10, 8, 2, 107, 31, 104, + 126, 138, 66, 108, 22, 48, 17, 20, 43, 36, 24, 24, 36, 43, 20, 17, 42, 28, 109, 114, + 237, 113, 45, 85, 93, 107, 66, 54, 120, 109, 89, 24, 253, 234, 64, 16, 28, 14, 24, 35, + 35, 24, 14, 29, 15, 0, 1, 0, 36, 255, 246, 1, 206, 2, 181, 0, 45, 0, 148, 185, + 0, 43, 255, 232, 180, 12, 16, 0, 76, 43, 184, 255, 224, 64, 25, 11, 0, 77, 21, 48, + 11, 0, 77, 21, 32, 9, 10, 0, 76, 20, 32, 14, 0, 77, 20, 24, 12, 0, 77, 16, + 184, 255, 224, 179, 14, 0, 77, 16, 184, 255, 232, 179, 12, 0, 77, 15, 184, 255, 208, 179, + 11, 0, 77, 15, 184, 255, 224, 179, 10, 0, 77, 15, 184, 255, 216, 64, 34, 9, 0, 77, + 0, 127, 23, 23, 34, 10, 127, 13, 47, 36, 33, 127, 34, 46, 32, 29, 136, 37, 40, 80, + 35, 36, 77, 34, 74, 5, 136, 18, 81, 11, 73, 0, 63, 63, 237, 63, 63, 51, 63, 51, + 237, 50, 1, 16, 214, 237, 50, 16, 222, 237, 17, 57, 47, 237, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 37, 20, 30, 2, 51, 50, 62, 2, 53, 17, 51, 17, 20, + 14, 2, 35, 34, 46, 2, 53, 53, 52, 46, 2, 35, 34, 6, 7, 17, 35, 17, 55, 21, + 54, 54, 51, 50, 30, 2, 21, 1, 27, 7, 13, 19, 12, 12, 18, 13, 6, 79, 11, 29, + 50, 40, 40, 50, 28, 10, 9, 13, 17, 8, 11, 24, 8, 78, 78, 11, 33, 15, 20, 39, + 32, 19, 187, 39, 48, 26, 9, 8, 26, 48, 39, 1, 22, 254, 222, 39, 68, 49, 28, 28, + 50, 68, 39, 138, 28, 35, 19, 6, 10, 5, 254, 126, 2, 167, 14, 238, 9, 10, 14, 34, + 57, 43, 0, 1, 0, 68, 255, 243, 1, 200, 2, 107, 0, 21, 0, 69, 64, 41, 19, 24, + 12, 0, 77, 19, 16, 11, 0, 77, 19, 32, 10, 0, 77, 5, 115, 0, 0, 1, 13, 13, + 4, 23, 0, 1, 1, 8, 1, 22, 12, 12, 9, 124, 16, 70, 5, 0, 121, 2, 65, 0, + 63, 237, 50, 63, 237, 50, 47, 1, 16, 198, 94, 93, 16, 206, 50, 47, 17, 57, 47, 237, + 49, 48, 43, 43, 43, 19, 35, 53, 33, 21, 35, 17, 20, 22, 51, 50, 54, 55, 23, 6, + 6, 35, 34, 46, 2, 53, 188, 120, 1, 83, 137, 43, 49, 26, 41, 11, 16, 12, 63, 32, + 46, 62, 37, 16, 2, 37, 70, 70, 254, 128, 61, 44, 14, 6, 69, 9, 15, 21, 44, 69, + 48, 0, 1, 0, 89, 0, 0, 1, 155, 2, 107, 0, 19, 0, 74, 64, 38, 16, 16, 9, + 10, 19, 19, 6, 3, 1, 5, 115, 14, 12, 0, 10, 1, 8, 10, 10, 21, 20, 0, 15, + 121, 17, 4, 11, 121, 1, 14, 14, 17, 65, 5, 10, 121, 8, 68, 0, 63, 237, 50, 63, + 57, 47, 51, 237, 50, 16, 237, 50, 1, 17, 18, 57, 47, 94, 93, 206, 51, 253, 50, 206, + 205, 50, 47, 16, 205, 50, 47, 49, 48, 1, 21, 51, 21, 35, 21, 51, 21, 33, 53, 51, + 53, 35, 53, 51, 53, 35, 53, 33, 21, 1, 35, 91, 91, 120, 254, 190, 120, 92, 92, 120, + 1, 66, 2, 37, 194, 65, 220, 70, 70, 220, 65, 194, 70, 70, 0, 1, 0, 64, 0, 0, + 1, 251, 2, 119, 0, 29, 0, 110, 64, 62, 13, 13, 18, 0, 29, 0, 120, 11, 13, 20, + 11, 11, 13, 19, 13, 18, 13, 120, 24, 19, 20, 24, 24, 19, 47, 11, 1, 11, 5, 5, + 18, 31, 24, 29, 25, 115, 0, 26, 16, 26, 2, 8, 26, 30, 29, 24, 13, 13, 26, 27, + 65, 26, 68, 18, 19, 68, 11, 0, 9, 124, 2, 69, 0, 63, 237, 50, 50, 63, 51, 63, + 63, 18, 57, 25, 47, 51, 51, 1, 24, 16, 214, 94, 93, 237, 50, 50, 16, 206, 50, 47, + 51, 93, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 8, 125, 196, 49, 48, 1, 54, + 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 7, 7, 30, 3, 23, 35, 46, 3, 39, 17, + 35, 17, 51, 17, 1, 48, 53, 58, 23, 49, 20, 36, 14, 26, 10, 19, 35, 29, 105, 32, + 73, 70, 62, 21, 93, 25, 58, 65, 69, 35, 82, 82, 2, 45, 74, 21, 22, 57, 14, 13, + 43, 40, 142, 26, 73, 87, 97, 50, 46, 88, 76, 63, 23, 254, 216, 2, 107, 254, 236, 0, + 1, 0, 71, 0, 0, 1, 222, 2, 181, 0, 36, 0, 94, 64, 52, 0, 0, 5, 33, 30, + 33, 129, 34, 0, 20, 34, 34, 0, 6, 0, 5, 0, 129, 11, 6, 20, 11, 6, 0, 11, + 34, 34, 5, 38, 30, 22, 22, 11, 127, 0, 13, 1, 8, 13, 37, 33, 34, 73, 26, 137, + 19, 77, 13, 74, 6, 5, 74, 0, 63, 51, 63, 63, 237, 63, 51, 1, 16, 214, 94, 93, + 237, 50, 47, 50, 16, 206, 50, 47, 16, 0, 193, 135, 5, 43, 135, 125, 196, 135, 24, 16, + 43, 135, 8, 125, 196, 49, 48, 55, 30, 3, 23, 35, 46, 3, 39, 21, 35, 17, 52, 62, + 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21, 17, 54, 54, 55, 51, 6, 6, 238, + 27, 68, 67, 60, 18, 98, 19, 56, 63, 63, 25, 83, 11, 30, 51, 41, 13, 32, 10, 8, + 8, 23, 7, 33, 26, 55, 110, 44, 97, 43, 121, 255, 20, 61, 70, 73, 31, 31, 65, 60, + 50, 17, 223, 2, 14, 41, 63, 42, 21, 5, 2, 65, 2, 2, 43, 41, 254, 241, 48, 95, + 51, 51, 108, 0, 1, 0, 54, 255, 245, 1, 194, 2, 176, 0, 31, 0, 66, 64, 34, 27, + 27, 16, 14, 17, 127, 11, 9, 7, 0, 6, 1, 8, 6, 6, 33, 32, 17, 6, 134, 14, + 9, 9, 23, 10, 133, 13, 77, 26, 26, 23, 136, 0, 81, 0, 63, 237, 50, 47, 63, 237, + 18, 57, 47, 51, 237, 50, 1, 17, 18, 57, 47, 94, 93, 205, 51, 204, 253, 50, 205, 50, + 47, 49, 48, 5, 34, 46, 2, 53, 53, 35, 53, 51, 53, 35, 53, 51, 17, 51, 21, 35, + 21, 20, 30, 2, 51, 50, 54, 55, 23, 14, 3, 1, 82, 44, 58, 34, 14, 134, 134, 134, + 216, 132, 132, 9, 19, 28, 19, 29, 50, 14, 12, 6, 22, 30, 35, 11, 24, 48, 71, 47, + 149, 62, 228, 70, 254, 214, 62, 149, 35, 44, 27, 10, 14, 8, 70, 3, 9, 8, 6, 0, + 1, 0, 29, 0, 0, 1, 212, 2, 181, 0, 39, 0, 163, 64, 97, 30, 40, 19, 0, 77, + 149, 29, 1, 134, 29, 1, 19, 40, 19, 0, 77, 19, 48, 18, 0, 77, 124, 19, 1, 108, + 18, 1, 33, 33, 3, 14, 8, 3, 8, 129, 9, 14, 20, 9, 9, 14, 35, 0, 3, 0, + 129, 39, 35, 20, 39, 39, 35, 17, 17, 3, 3, 9, 39, 41, 25, 25, 9, 40, 34, 15, + 16, 33, 31, 18, 32, 32, 14, 17, 16, 16, 32, 16, 48, 16, 3, 16, 16, 35, 3, 14, + 14, 9, 21, 137, 28, 77, 8, 9, 74, 39, 0, 74, 0, 63, 50, 63, 51, 63, 237, 18, + 57, 17, 51, 51, 51, 47, 93, 205, 17, 51, 47, 57, 57, 205, 17, 57, 57, 1, 16, 198, + 50, 47, 16, 206, 17, 57, 17, 51, 47, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, + 125, 196, 1, 17, 51, 24, 47, 49, 48, 93, 93, 43, 43, 93, 93, 43, 33, 38, 38, 39, + 14, 3, 7, 35, 62, 3, 55, 39, 7, 39, 55, 38, 38, 35, 34, 6, 7, 39, 54, 54, + 51, 50, 22, 23, 55, 23, 7, 30, 3, 23, 1, 119, 22, 60, 35, 26, 45, 38, 29, 9, + 82, 13, 41, 51, 57, 30, 19, 94, 20, 89, 14, 33, 25, 13, 17, 5, 12, 5, 32, 22, + 52, 62, 21, 111, 21, 108, 31, 56, 49, 41, 15, 91, 198, 91, 47, 103, 101, 93, 36, 50, + 118, 124, 124, 55, 46, 32, 56, 31, 26, 27, 3, 2, 66, 2, 5, 52, 43, 38, 56, 37, + 73, 146, 139, 129, 56, 0, 1, 0, 45, 255, 243, 1, 199, 2, 107, 0, 37, 0, 72, 64, + 41, 11, 24, 12, 0, 77, 11, 16, 11, 0, 77, 27, 115, 22, 5, 24, 24, 13, 35, 115, + 0, 39, 16, 115, 13, 38, 36, 14, 25, 25, 14, 65, 22, 19, 124, 5, 8, 70, 32, 124, + 2, 70, 0, 63, 237, 63, 51, 237, 50, 63, 51, 47, 17, 51, 1, 16, 214, 237, 16, 222, + 237, 17, 57, 47, 51, 51, 237, 49, 48, 43, 43, 37, 6, 35, 34, 38, 39, 6, 6, 35, + 34, 46, 2, 53, 17, 51, 17, 20, 22, 51, 50, 54, 55, 38, 53, 53, 51, 21, 20, 30, + 2, 51, 50, 54, 55, 17, 51, 1, 199, 54, 45, 25, 41, 17, 20, 37, 29, 27, 52, 39, + 24, 75, 30, 36, 14, 20, 10, 17, 75, 4, 13, 25, 21, 5, 17, 7, 75, 11, 24, 14, + 12, 14, 12, 17, 42, 72, 56, 1, 189, 254, 73, 59, 65, 7, 8, 43, 60, 210, 204, 21, + 44, 36, 23, 2, 2, 2, 47, 0, 1, 255, 207, 255, 89, 1, 189, 2, 107, 0, 31, 0, + 76, 64, 46, 9, 10, 25, 10, 2, 21, 1, 1, 6, 1, 1, 1, 10, 15, 10, 126, 6, + 1, 20, 6, 1, 6, 115, 9, 33, 15, 115, 24, 0, 31, 16, 31, 2, 31, 32, 28, 124, + 21, 6, 10, 68, 7, 65, 15, 1, 65, 0, 63, 51, 63, 63, 51, 47, 237, 1, 16, 214, + 93, 204, 237, 16, 222, 253, 135, 43, 135, 125, 196, 1, 93, 93, 93, 49, 48, 19, 51, 30, + 3, 23, 17, 51, 17, 35, 46, 3, 39, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, + 51, 50, 54, 53, 55, 84, 31, 65, 60, 54, 21, 75, 75, 15, 53, 66, 72, 34, 11, 29, + 49, 39, 13, 28, 10, 15, 10, 16, 8, 33, 22, 2, 107, 57, 117, 115, 111, 49, 1, 193, + 253, 149, 46, 120, 130, 135, 63, 254, 18, 39, 62, 43, 23, 3, 2, 66, 2, 1, 43, 41, + 0, 1, 0, 71, 255, 91, 1, 176, 1, 218, 0, 19, 0, 82, 182, 12, 16, 15, 16, 0, + 76, 5, 184, 255, 224, 179, 18, 0, 77, 5, 184, 255, 232, 179, 17, 0, 77, 5, 184, 255, + 232, 180, 8, 10, 0, 76, 4, 184, 255, 224, 64, 23, 17, 0, 77, 8, 127, 7, 21, 18, + 127, 0, 19, 1, 8, 19, 20, 19, 74, 8, 75, 14, 136, 3, 80, 0, 63, 237, 63, 63, + 1, 16, 214, 94, 93, 237, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 19, 54, 54, 51, + 50, 22, 21, 17, 35, 17, 52, 46, 2, 35, 34, 6, 7, 17, 35, 71, 45, 89, 39, 93, + 95, 82, 16, 29, 41, 24, 20, 45, 21, 83, 1, 195, 11, 12, 96, 106, 254, 75, 1, 170, + 45, 56, 31, 12, 5, 4, 254, 116, 0, 3, 0, 29, 255, 243, 1, 216, 2, 121, 0, 19, + 0, 26, 0, 33, 0, 205, 182, 33, 24, 13, 14, 0, 76, 28, 184, 255, 240, 179, 14, 0, + 77, 28, 184, 255, 224, 179, 13, 0, 77, 26, 184, 255, 232, 179, 14, 0, 77, 26, 184, 255, + 224, 64, 25, 13, 0, 77, 21, 24, 14, 0, 77, 21, 32, 13, 0, 77, 17, 24, 15, 16, + 0, 76, 17, 16, 8, 0, 77, 13, 184, 255, 224, 179, 16, 0, 77, 13, 184, 255, 232, 179, + 15, 0, 77, 13, 184, 255, 232, 64, 14, 8, 0, 77, 12, 16, 13, 0, 77, 8, 16, 13, + 0, 77, 7, 184, 255, 232, 180, 15, 16, 0, 76, 7, 184, 255, 240, 64, 53, 8, 0, 77, + 3, 32, 16, 0, 77, 3, 24, 15, 0, 77, 3, 16, 8, 0, 77, 31, 23, 118, 10, 35, + 30, 24, 118, 0, 64, 11, 16, 72, 0, 34, 24, 121, 15, 30, 31, 30, 79, 30, 3, 30, + 30, 5, 20, 124, 15, 70, 27, 124, 5, 69, 0, 63, 237, 63, 237, 17, 57, 47, 93, 237, + 1, 16, 214, 43, 237, 50, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 52, 62, 2, 51, 50, 30, 2, 21, + 20, 14, 2, 35, 34, 46, 2, 23, 50, 54, 55, 33, 22, 22, 19, 34, 6, 7, 33, 38, + 38, 29, 32, 58, 81, 50, 49, 82, 58, 33, 33, 58, 82, 49, 50, 81, 58, 32, 219, 66, + 68, 5, 254, 238, 5, 65, 65, 64, 66, 5, 1, 18, 5, 69, 1, 54, 83, 122, 79, 39, + 39, 79, 122, 83, 83, 122, 80, 38, 38, 80, 122, 169, 114, 108, 108, 114, 1, 248, 112, 106, + 106, 112, 0, 2, 0, 29, 255, 243, 1, 238, 2, 203, 0, 32, 0, 44, 0, 200, 185, 0, + 43, 255, 240, 64, 21, 13, 14, 0, 76, 41, 16, 14, 0, 77, 41, 24, 13, 0, 77, 37, + 16, 13, 14, 0, 76, 35, 184, 255, 240, 179, 14, 0, 77, 35, 184, 255, 232, 64, 19, 13, + 0, 77, 30, 40, 16, 0, 77, 30, 24, 15, 0, 77, 30, 16, 8, 0, 77, 26, 184, 255, + 232, 179, 16, 0, 77, 26, 184, 255, 224, 179, 15, 0, 77, 26, 184, 255, 232, 179, 8, 0, + 77, 19, 184, 255, 240, 179, 16, 0, 77, 19, 184, 255, 232, 179, 15, 0, 77, 18, 184, 255, + 240, 64, 53, 16, 0, 77, 8, 24, 18, 0, 77, 8, 16, 17, 0, 77, 3, 16, 15, 16, + 0, 76, 3, 16, 8, 0, 77, 10, 17, 39, 118, 20, 7, 23, 46, 33, 118, 0, 64, 11, + 16, 72, 0, 45, 36, 124, 28, 70, 20, 7, 7, 42, 124, 13, 5, 69, 0, 63, 206, 237, + 51, 17, 51, 63, 237, 1, 16, 214, 43, 237, 16, 222, 50, 50, 237, 220, 205, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 52, + 62, 2, 51, 50, 23, 54, 54, 53, 52, 38, 39, 51, 22, 20, 21, 20, 6, 7, 22, 22, + 21, 20, 14, 2, 35, 34, 46, 2, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, + 29, 32, 58, 81, 50, 80, 53, 20, 10, 1, 1, 82, 1, 36, 34, 23, 25, 33, 58, 82, + 49, 50, 81, 58, 32, 84, 66, 69, 70, 70, 70, 70, 69, 66, 1, 54, 83, 122, 79, 39, + 49, 23, 45, 29, 9, 20, 5, 10, 17, 5, 43, 76, 32, 39, 111, 72, 83, 122, 80, 38, + 38, 80, 122, 83, 122, 130, 130, 122, 122, 130, 130, 0, 2, 0, 40, 255, 245, 1, 220, 2, + 49, 0, 31, 0, 43, 0, 152, 64, 12, 42, 32, 15, 16, 0, 76, 42, 16, 14, 0, 77, + 40, 184, 255, 224, 180, 15, 16, 0, 76, 40, 184, 255, 240, 179, 14, 0, 77, 36, 184, 255, + 224, 179, 16, 0, 77, 36, 184, 255, 232, 179, 15, 0, 77, 36, 184, 255, 240, 64, 29, 14, + 0, 77, 34, 40, 16, 0, 77, 34, 32, 15, 0, 77, 34, 16, 14, 0, 77, 12, 24, 8, + 0, 77, 8, 24, 8, 0, 77, 2, 184, 255, 240, 64, 31, 8, 0, 77, 20, 27, 32, 130, + 30, 17, 0, 45, 38, 130, 10, 64, 9, 12, 72, 10, 44, 35, 136, 30, 23, 17, 15, 80, + 41, 136, 5, 81, 0, 63, 237, 63, 51, 206, 51, 237, 1, 16, 214, 43, 237, 16, 222, 50, + 50, 237, 220, 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, + 20, 14, 2, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 23, 54, 54, 53, 52, 38, 39, + 51, 22, 20, 21, 20, 6, 7, 22, 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, + 1, 204, 31, 56, 78, 46, 45, 77, 56, 31, 31, 56, 77, 45, 72, 54, 16, 7, 1, 1, + 79, 1, 28, 30, 42, 85, 68, 58, 57, 67, 67, 57, 58, 68, 232, 55, 89, 64, 35, 35, + 64, 89, 55, 55, 90, 63, 35, 42, 22, 43, 29, 8, 21, 5, 11, 16, 5, 42, 70, 31, + 62, 92, 79, 91, 91, 79, 78, 91, 91, 0, 2, 0, 45, 255, 243, 1, 216, 2, 121, 0, + 32, 0, 52, 0, 174, 185, 0, 50, 255, 232, 64, 14, 17, 0, 77, 46, 24, 17, 0, 77, + 40, 24, 17, 0, 77, 36, 184, 255, 232, 64, 14, 17, 0, 77, 30, 32, 19, 0, 77, 30, + 48, 18, 0, 77, 30, 184, 255, 232, 179, 17, 0, 77, 26, 184, 255, 224, 179, 19, 0, 77, + 26, 184, 255, 216, 64, 9, 18, 0, 77, 26, 24, 17, 0, 77, 25, 184, 255, 240, 180, 9, + 10, 0, 76, 11, 184, 255, 240, 64, 10, 13, 0, 77, 3, 40, 18, 19, 0, 76, 3, 184, + 255, 224, 64, 37, 17, 0, 77, 43, 118, 20, 7, 23, 64, 9, 12, 72, 23, 15, 115, 12, + 54, 33, 118, 0, 53, 38, 124, 28, 70, 14, 68, 20, 18, 124, 9, 69, 48, 124, 7, 5, + 69, 0, 63, 51, 237, 63, 237, 50, 63, 63, 237, 1, 16, 214, 237, 16, 222, 253, 222, 43, + 50, 50, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, + 52, 62, 2, 51, 50, 23, 54, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34, 7, 22, + 22, 21, 20, 14, 2, 35, 34, 46, 2, 55, 20, 30, 2, 51, 50, 62, 2, 53, 52, 46, + 2, 35, 34, 14, 2, 45, 19, 37, 53, 34, 48, 33, 38, 48, 55, 62, 78, 20, 31, 20, + 19, 15, 16, 20, 38, 55, 34, 35, 53, 36, 19, 78, 8, 16, 25, 17, 17, 25, 17, 8, + 8, 17, 25, 17, 17, 25, 16, 8, 1, 54, 86, 123, 78, 36, 34, 33, 82, 95, 254, 57, + 1, 183, 56, 68, 22, 39, 114, 78, 87, 122, 78, 36, 36, 78, 122, 87, 55, 93, 68, 38, + 38, 68, 93, 55, 57, 94, 66, 36, 36, 66, 94, 0, 2, 0, 27, 255, 91, 1, 191, 1, + 219, 0, 38, 0, 50, 0, 168, 64, 12, 37, 24, 9, 0, 77, 36, 24, 17, 18, 0, 76, + 32, 184, 255, 224, 179, 18, 0, 77, 32, 184, 255, 232, 179, 17, 0, 77, 31, 184, 255, 240, + 179, 11, 0, 77, 31, 184, 255, 232, 180, 9, 10, 0, 76, 14, 184, 255, 208, 179, 9, 0, + 77, 13, 184, 255, 224, 180, 11, 16, 0, 76, 13, 184, 255, 216, 179, 10, 0, 77, 13, 184, + 255, 192, 64, 54, 8, 0, 77, 3, 16, 17, 18, 0, 76, 3, 24, 10, 11, 0, 76, 2, + 24, 9, 0, 77, 45, 130, 26, 8, 15, 29, 31, 29, 2, 29, 19, 127, 16, 52, 39, 130, + 0, 51, 42, 136, 34, 81, 18, 75, 26, 24, 136, 8, 11, 80, 48, 136, 5, 80, 0, 63, + 237, 63, 51, 237, 50, 63, 63, 237, 1, 16, 214, 237, 16, 222, 253, 222, 93, 50, 50, 237, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 52, 62, 2, 51, + 50, 22, 23, 54, 54, 51, 50, 30, 2, 21, 17, 35, 17, 52, 46, 2, 35, 34, 7, 22, + 22, 21, 20, 14, 2, 35, 34, 46, 2, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, + 6, 27, 24, 38, 49, 26, 21, 42, 17, 14, 44, 26, 39, 47, 25, 8, 79, 4, 10, 20, + 15, 20, 17, 11, 11, 24, 39, 49, 26, 26, 50, 39, 24, 78, 27, 33, 34, 26, 26, 34, + 33, 27, 232, 71, 94, 55, 23, 15, 17, 11, 20, 27, 52, 74, 47, 254, 73, 1, 165, 41, + 55, 34, 15, 20, 27, 74, 48, 71, 94, 55, 23, 23, 56, 93, 71, 84, 89, 89, 84, 85, + 88, 88, 0, 2, 0, 18, 0, 0, 1, 213, 2, 113, 0, 25, 0, 35, 0, 124, 185, 0, + 6, 255, 216, 179, 10, 0, 77, 6, 184, 255, 224, 179, 9, 0, 77, 3, 184, 255, 224, 179, + 18, 0, 77, 3, 184, 255, 232, 179, 17, 0, 77, 2, 184, 255, 216, 180, 17, 18, 0, 76, + 2, 184, 255, 224, 179, 10, 0, 77, 2, 184, 255, 232, 64, 36, 9, 0, 77, 34, 118, 5, + 37, 9, 29, 115, 0, 12, 16, 12, 32, 12, 3, 8, 12, 15, 21, 36, 9, 121, 30, 30, + 0, 11, 68, 18, 18, 12, 26, 124, 0, 65, 0, 63, 237, 50, 50, 47, 63, 18, 57, 47, + 237, 1, 16, 214, 221, 222, 94, 93, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 1, 50, 30, 2, 21, 20, 6, 35, 35, 21, 35, 17, 6, 6, 21, 20, 23, 7, + 38, 38, 53, 52, 62, 2, 23, 34, 6, 7, 21, 51, 50, 54, 53, 52, 1, 30, 48, 69, + 45, 21, 91, 91, 46, 82, 38, 33, 4, 67, 2, 5, 48, 76, 96, 63, 18, 34, 8, 42, + 52, 50, 2, 113, 28, 51, 70, 43, 97, 105, 231, 2, 34, 5, 32, 29, 16, 17, 8, 6, + 25, 13, 52, 58, 27, 5, 71, 1, 2, 250, 60, 69, 124, 0, 2, 0, 71, 255, 91, 1, + 204, 2, 181, 0, 33, 0, 48, 0, 151, 64, 16, 46, 16, 14, 0, 77, 36, 32, 14, 0, + 77, 36, 24, 13, 0, 77, 31, 184, 255, 232, 179, 9, 0, 77, 31, 184, 255, 240, 64, 9, + 8, 0, 77, 14, 16, 15, 0, 77, 3, 184, 255, 240, 179, 16, 0, 77, 3, 184, 255, 224, + 179, 15, 0, 77, 3, 184, 255, 240, 179, 10, 0, 77, 2, 184, 255, 224, 179, 16, 0, 77, + 2, 184, 255, 232, 179, 9, 0, 77, 2, 184, 255, 224, 64, 32, 8, 0, 77, 34, 130, 0, + 50, 41, 27, 19, 8, 127, 0, 10, 1, 8, 10, 49, 37, 136, 29, 80, 23, 137, 16, 77, + 10, 75, 44, 136, 5, 81, 0, 63, 237, 63, 63, 237, 63, 237, 1, 16, 214, 94, 93, 253, + 204, 51, 51, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 37, 20, 14, 2, 35, 34, 38, 39, 21, 35, 17, 52, 62, 2, 51, 50, 22, 23, 7, 38, + 38, 35, 34, 6, 21, 21, 54, 51, 50, 30, 2, 7, 52, 38, 35, 34, 6, 7, 17, 22, + 22, 51, 50, 62, 2, 1, 204, 27, 51, 74, 47, 37, 56, 14, 83, 11, 30, 51, 41, 13, + 32, 10, 8, 8, 23, 7, 33, 26, 46, 46, 46, 79, 57, 32, 85, 76, 61, 29, 44, 11, + 14, 54, 29, 33, 47, 30, 14, 231, 53, 89, 64, 36, 18, 11, 183, 2, 179, 41, 63, 42, + 21, 5, 2, 65, 2, 2, 43, 41, 85, 18, 34, 63, 90, 56, 81, 89, 12, 3, 254, 224, + 13, 22, 26, 45, 61, 0, 2, 0, 55, 255, 159, 1, 235, 2, 181, 0, 27, 0, 42, 0, + 118, 185, 0, 27, 255, 216, 179, 16, 0, 77, 27, 184, 255, 224, 179, 8, 0, 77, 2, 184, + 255, 240, 179, 16, 0, 77, 2, 184, 255, 192, 64, 48, 8, 0, 77, 3, 9, 14, 9, 120, + 8, 3, 20, 8, 3, 8, 8, 38, 118, 0, 44, 14, 14, 32, 23, 19, 115, 0, 20, 16, + 20, 2, 20, 43, 14, 3, 18, 121, 32, 32, 20, 28, 124, 22, 25, 65, 20, 68, 8, 9, + 0, 47, 51, 63, 63, 206, 237, 18, 57, 47, 237, 50, 50, 1, 16, 214, 93, 237, 50, 50, + 50, 47, 16, 222, 237, 51, 47, 135, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, 1, + 20, 6, 7, 30, 3, 23, 35, 46, 3, 39, 6, 34, 35, 35, 21, 35, 17, 51, 21, 54, + 51, 50, 22, 39, 34, 6, 7, 21, 51, 50, 62, 2, 53, 52, 46, 2, 1, 175, 60, 51, + 21, 46, 45, 42, 17, 93, 15, 38, 42, 43, 21, 6, 21, 4, 70, 83, 83, 37, 31, 112, + 113, 218, 23, 43, 9, 53, 36, 57, 41, 22, 22, 36, 49, 1, 174, 57, 88, 23, 37, 88, + 94, 96, 44, 43, 92, 89, 83, 35, 1, 244, 2, 181, 71, 3, 98, 27, 1, 2, 239, 10, + 27, 47, 38, 36, 46, 27, 11, 0, 1, 0, 55, 255, 243, 1, 190, 2, 121, 0, 49, 1, + 15, 185, 0, 49, 255, 232, 179, 18, 0, 77, 49, 184, 255, 224, 179, 17, 0, 77, 45, 184, + 255, 224, 179, 15, 0, 77, 44, 184, 255, 232, 179, 14, 0, 77, 43, 184, 255, 224, 179, 10, + 0, 77, 43, 184, 255, 216, 179, 9, 0, 77, 40, 184, 255, 240, 179, 8, 0, 77, 39, 184, + 255, 224, 179, 15, 0, 77, 39, 184, 255, 216, 179, 10, 0, 77, 36, 184, 255, 200, 179, 10, + 0, 77, 36, 184, 255, 224, 179, 9, 0, 77, 36, 184, 255, 216, 64, 61, 8, 0, 77, 30, + 24, 17, 18, 0, 76, 30, 40, 16, 0, 77, 30, 32, 15, 0, 77, 30, 24, 14, 0, 77, + 24, 40, 18, 0, 77, 24, 32, 17, 0, 77, 19, 24, 14, 0, 77, 15, 32, 8, 0, 77, + 14, 16, 13, 0, 77, 11, 24, 10, 0, 77, 11, 40, 8, 9, 0, 76, 6, 184, 255, 216, + 179, 14, 0, 77, 6, 184, 255, 232, 179, 13, 0, 77, 5, 184, 255, 232, 179, 16, 0, 77, + 5, 184, 255, 224, 64, 32, 15, 0, 77, 22, 118, 37, 4, 4, 37, 51, 47, 118, 12, 29, + 29, 12, 50, 42, 9, 28, 28, 25, 124, 17, 34, 69, 3, 3, 0, 124, 9, 70, 0, 63, + 237, 50, 47, 63, 57, 237, 50, 47, 17, 57, 1, 16, 198, 50, 47, 16, 237, 16, 206, 50, + 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 50, 54, 55, 23, 14, 3, 35, + 34, 38, 53, 52, 62, 2, 55, 62, 3, 53, 52, 38, 35, 34, 6, 7, 39, 62, 3, 51, + 50, 22, 21, 20, 14, 2, 7, 14, 3, 21, 20, 22, 1, 11, 56, 78, 20, 25, 9, 34, + 45, 58, 33, 102, 110, 25, 46, 63, 38, 26, 44, 33, 19, 66, 45, 43, 70, 20, 26, 10, + 33, 42, 48, 26, 91, 102, 25, 43, 55, 30, 26, 50, 40, 24, 66, 58, 29, 11, 68, 6, + 14, 14, 9, 87, 81, 43, 60, 44, 32, 16, 11, 22, 27, 36, 26, 45, 45, 24, 12, 69, + 7, 14, 10, 7, 91, 81, 37, 54, 40, 30, 12, 10, 23, 31, 41, 29, 48, 48, 0, 1, + 0, 65, 255, 245, 1, 177, 1, 219, 0, 39, 0, 246, 185, 0, 38, 255, 232, 179, 16, 0, + 77, 38, 184, 255, 240, 179, 15, 0, 77, 37, 184, 255, 224, 179, 9, 0, 77, 37, 184, 255, + 216, 179, 8, 0, 77, 35, 184, 255, 216, 179, 12, 0, 77, 35, 184, 255, 232, 179, 10, 0, + 77, 34, 184, 255, 224, 179, 13, 0, 77, 32, 184, 255, 232, 179, 12, 0, 77, 32, 184, 255, + 224, 179, 11, 0, 77, 32, 184, 255, 232, 179, 10, 0, 77, 32, 184, 255, 216, 64, 43, 8, + 9, 0, 76, 17, 24, 15, 16, 0, 76, 17, 16, 14, 0, 77, 14, 32, 13, 0, 77, 14, + 40, 12, 0, 77, 14, 24, 10, 0, 77, 11, 24, 11, 12, 0, 76, 11, 32, 8, 10, 0, + 76, 7, 184, 255, 200, 179, 14, 0, 77, 6, 184, 255, 224, 180, 17, 18, 0, 76, 6, 184, + 255, 216, 180, 15, 16, 0, 76, 6, 184, 255, 224, 64, 35, 14, 0, 77, 19, 130, 33, 6, + 6, 33, 41, 27, 27, 0, 130, 0, 12, 1, 8, 12, 40, 37, 9, 26, 26, 21, 136, 16, + 30, 80, 5, 5, 2, 136, 9, 81, 0, 63, 237, 50, 47, 63, 57, 237, 50, 47, 17, 57, + 1, 16, 214, 94, 93, 237, 51, 47, 16, 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 20, + 51, 50, 54, 55, 23, 6, 6, 35, 34, 38, 53, 52, 62, 4, 53, 52, 35, 34, 14, 2, + 7, 39, 54, 54, 51, 50, 22, 21, 20, 14, 4, 148, 114, 43, 77, 35, 16, 36, 80, 48, + 106, 98, 41, 62, 72, 62, 41, 108, 20, 40, 36, 28, 8, 15, 29, 81, 39, 96, 91, 41, + 61, 72, 61, 41, 116, 57, 21, 16, 75, 16, 16, 69, 63, 39, 51, 36, 25, 24, 29, 21, + 59, 4, 7, 9, 4, 74, 9, 11, 75, 56, 40, 50, 34, 23, 24, 32, 255, 255, 0, 40, + 0, 0, 1, 191, 2, 107, 2, 6, 3, 157, 0, 0, 0, 2, 0, 43, 255, 91, 1, 185, + 2, 181, 0, 31, 0, 44, 0, 140, 185, 0, 30, 255, 224, 179, 10, 0, 77, 30, 184, 255, + 216, 180, 8, 9, 0, 76, 29, 184, 255, 232, 179, 13, 0, 77, 29, 184, 255, 224, 64, 72, + 11, 12, 0, 76, 26, 16, 13, 0, 77, 26, 32, 12, 0, 77, 26, 24, 11, 0, 77, 25, + 32, 8, 10, 0, 76, 21, 32, 10, 12, 0, 76, 21, 40, 9, 0, 77, 21, 32, 8, 0, + 77, 20, 24, 13, 0, 77, 38, 0, 23, 1, 8, 23, 15, 6, 0, 127, 32, 15, 15, 46, + 45, 16, 18, 44, 41, 35, 28, 77, 5, 136, 10, 75, 0, 63, 237, 63, 221, 222, 50, 205, + 50, 1, 17, 18, 57, 47, 51, 253, 206, 16, 220, 94, 93, 205, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, 30, 2, 51, 51, 21, 6, 34, 35, 34, 46, + 2, 53, 17, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 21, 39, 52, 38, 35, + 34, 6, 21, 20, 22, 51, 50, 54, 55, 1, 52, 15, 25, 34, 20, 39, 8, 24, 5, 50, + 68, 42, 18, 30, 38, 30, 44, 28, 13, 12, 29, 49, 38, 75, 62, 82, 31, 30, 29, 29, + 26, 32, 20, 28, 13, 22, 33, 44, 27, 11, 71, 1, 26, 50, 73, 48, 1, 184, 18, 21, + 33, 43, 21, 16, 42, 38, 25, 86, 76, 24, 35, 39, 37, 20, 20, 39, 15, 14, 0, 1, + 0, 63, 255, 89, 1, 199, 2, 96, 0, 50, 0, 148, 185, 0, 33, 255, 232, 179, 18, 0, + 77, 33, 184, 255, 224, 180, 15, 16, 0, 76, 33, 184, 255, 216, 179, 14, 0, 77, 33, 184, + 255, 224, 180, 12, 13, 0, 76, 33, 184, 255, 216, 64, 64, 11, 0, 77, 3, 16, 13, 0, + 77, 3, 24, 12, 0, 77, 3, 32, 11, 0, 77, 46, 130, 31, 14, 14, 31, 52, 12, 15, + 127, 9, 6, 0, 7, 1, 8, 7, 51, 48, 39, 1, 15, 39, 1, 39, 39, 47, 43, 137, + 36, 75, 27, 74, 10, 11, 15, 6, 133, 12, 9, 73, 25, 21, 136, 0, 81, 0, 63, 237, + 50, 63, 51, 237, 50, 205, 50, 63, 63, 237, 1, 47, 51, 47, 93, 93, 16, 214, 94, 93, + 221, 50, 237, 50, 16, 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 5, 34, 46, 2, 53, 53, 35, 53, 51, 53, 55, 21, 51, 21, 35, 21, 20, 30, 2, 51, + 50, 62, 2, 55, 30, 3, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, + 53, 52, 52, 39, 6, 1, 66, 49, 63, 36, 13, 98, 98, 82, 187, 187, 10, 23, 36, 26, + 19, 36, 30, 22, 4, 1, 2, 2, 1, 9, 26, 49, 39, 13, 31, 10, 7, 5, 25, 7, + 35, 23, 1, 24, 6, 23, 46, 69, 47, 216, 69, 130, 14, 144, 69, 216, 35, 44, 27, 10, + 3, 3, 4, 1, 6, 19, 21, 21, 7, 39, 61, 44, 23, 5, 2, 61, 2, 3, 45, 40, + 4, 6, 6, 3, 0, 1, 0, 18, 0, 0, 1, 205, 2, 107, 0, 20, 0, 40, 64, 19, + 2, 115, 5, 5, 15, 1, 22, 9, 15, 21, 12, 12, 2, 5, 121, 20, 65, 4, 68, 0, + 63, 63, 237, 50, 50, 47, 1, 16, 214, 205, 16, 206, 17, 57, 47, 237, 49, 48, 1, 21, + 35, 17, 35, 17, 35, 34, 6, 21, 20, 23, 7, 38, 38, 53, 52, 62, 2, 51, 1, 205, + 152, 82, 66, 34, 39, 4, 67, 2, 5, 29, 48, 62, 33, 2, 107, 70, 253, 219, 2, 37, + 37, 32, 16, 17, 8, 6, 25, 13, 40, 53, 31, 12, 0, 1, 0, 63, 255, 245, 1, 204, + 2, 181, 0, 39, 0, 90, 185, 0, 37, 255, 232, 64, 50, 17, 18, 0, 76, 27, 32, 12, + 0, 77, 19, 24, 11, 12, 0, 76, 32, 32, 13, 13, 2, 41, 0, 3, 127, 25, 22, 0, + 23, 1, 8, 23, 40, 33, 33, 36, 136, 29, 77, 3, 22, 133, 0, 25, 73, 12, 12, 9, + 136, 16, 81, 0, 63, 237, 50, 47, 63, 51, 237, 50, 63, 237, 50, 47, 1, 16, 214, 94, + 93, 221, 50, 237, 50, 16, 206, 50, 47, 50, 47, 49, 48, 43, 43, 43, 19, 51, 21, 35, + 21, 20, 30, 2, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 53, 53, 35, 53, 51, + 53, 52, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 6, 21, 243, 187, 187, 10, 23, 36, + 26, 36, 44, 20, 12, 14, 58, 48, 52, 66, 37, 14, 98, 98, 85, 103, 42, 57, 12, 15, + 12, 45, 33, 65, 47, 1, 208, 69, 216, 35, 44, 27, 10, 12, 10, 70, 6, 20, 24, 48, + 71, 47, 216, 69, 42, 89, 98, 10, 5, 72, 5, 11, 61, 51, 0, 1, 0, 39, 255, 89, + 1, 205, 2, 107, 0, 20, 0, 42, 64, 21, 19, 7, 0, 115, 16, 0, 14, 1, 8, 14, + 14, 22, 21, 20, 15, 121, 17, 65, 3, 124, 9, 0, 47, 237, 63, 237, 50, 1, 17, 18, + 57, 47, 94, 93, 206, 253, 204, 206, 49, 48, 5, 20, 22, 51, 50, 54, 55, 23, 6, 35, + 34, 46, 2, 53, 17, 35, 53, 33, 21, 35, 1, 35, 23, 32, 8, 17, 9, 8, 22, 28, + 39, 50, 29, 11, 170, 1, 166, 170, 15, 41, 43, 1, 2, 66, 5, 23, 43, 62, 39, 2, + 37, 70, 70, 0, 1, 0, 48, 255, 243, 1, 238, 2, 203, 0, 40, 0, 109, 185, 0, 39, + 255, 200, 179, 8, 0, 77, 38, 184, 255, 224, 179, 10, 0, 77, 38, 184, 255, 232, 64, 14, + 9, 0, 77, 15, 16, 18, 0, 77, 15, 24, 17, 0, 77, 11, 184, 255, 240, 64, 39, 17, + 18, 0, 76, 3, 32, 10, 0, 77, 3, 24, 9, 0, 77, 2, 40, 8, 0, 77, 23, 30, + 18, 115, 36, 42, 8, 115, 5, 41, 35, 26, 19, 19, 6, 65, 13, 124, 0, 70, 0, 63, + 237, 63, 51, 16, 206, 205, 1, 16, 214, 237, 16, 222, 237, 220, 205, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 23, 34, 46, 2, 53, 17, 51, 17, 20, 30, 2, 51, 50, 62, + 2, 53, 17, 51, 50, 54, 53, 52, 38, 39, 51, 22, 20, 21, 20, 14, 2, 7, 17, 20, + 14, 2, 223, 50, 67, 41, 17, 82, 11, 23, 35, 24, 24, 35, 23, 11, 64, 13, 20, 1, + 1, 82, 1, 9, 23, 37, 27, 17, 41, 67, 13, 31, 57, 80, 49, 1, 159, 254, 106, 44, + 59, 36, 16, 16, 36, 59, 44, 1, 150, 31, 31, 9, 20, 5, 10, 17, 5, 20, 41, 34, + 25, 4, 254, 157, 49, 80, 57, 31, 0, 1, 0, 68, 255, 246, 1, 220, 2, 49, 0, 34, + 0, 78, 185, 0, 13, 255, 232, 179, 18, 0, 77, 13, 184, 255, 224, 64, 38, 17, 0, 77, + 6, 24, 10, 0, 77, 6, 32, 8, 9, 0, 76, 22, 29, 18, 127, 34, 36, 11, 127, 0, + 8, 1, 8, 8, 35, 34, 25, 18, 18, 9, 73, 14, 136, 3, 81, 0, 63, 237, 63, 51, + 16, 206, 205, 1, 16, 214, 94, 93, 237, 16, 222, 237, 221, 205, 49, 48, 43, 43, 43, 43, + 37, 6, 6, 35, 34, 46, 2, 53, 17, 51, 21, 20, 22, 51, 50, 54, 55, 17, 51, 50, + 54, 53, 52, 38, 39, 51, 22, 20, 21, 20, 14, 2, 7, 1, 126, 23, 79, 51, 46, 62, + 37, 16, 82, 39, 48, 20, 38, 5, 57, 23, 15, 1, 1, 82, 1, 9, 21, 37, 27, 13, + 7, 16, 31, 57, 78, 47, 1, 5, 243, 86, 72, 7, 2, 1, 136, 32, 31, 8, 21, 5, + 11, 16, 5, 21, 41, 34, 24, 4, 0, 1, 0, 18, 255, 242, 1, 226, 2, 107, 0, 43, + 0, 147, 181, 33, 24, 13, 0, 77, 29, 184, 255, 232, 64, 14, 13, 0, 77, 11, 24, 14, + 0, 77, 11, 16, 8, 0, 77, 7, 184, 255, 232, 179, 14, 0, 77, 7, 184, 255, 240, 179, + 8, 0, 77, 1, 184, 255, 240, 64, 59, 16, 0, 77, 1, 127, 41, 175, 41, 191, 41, 3, + 41, 41, 36, 118, 4, 0, 0, 4, 45, 17, 24, 16, 0, 77, 17, 0, 21, 16, 21, 112, + 21, 160, 21, 176, 21, 5, 21, 21, 26, 118, 14, 18, 18, 14, 44, 41, 21, 21, 1, 17, + 121, 42, 20, 65, 31, 124, 9, 70, 0, 63, 237, 63, 51, 237, 50, 50, 17, 51, 1, 16, + 198, 50, 47, 16, 237, 50, 47, 93, 51, 43, 16, 206, 50, 47, 16, 237, 50, 47, 93, 51, + 43, 49, 48, 43, 43, 43, 43, 43, 43, 1, 35, 22, 22, 21, 20, 14, 2, 35, 34, 46, + 2, 53, 52, 54, 55, 35, 53, 51, 21, 14, 3, 21, 20, 30, 2, 51, 50, 62, 2, 53, + 52, 46, 2, 39, 53, 51, 1, 226, 109, 48, 46, 27, 55, 82, 54, 54, 82, 55, 27, 47, + 47, 107, 197, 24, 38, 25, 14, 16, 33, 51, 35, 35, 51, 33, 16, 14, 25, 38, 24, 199, + 2, 37, 61, 149, 74, 56, 101, 76, 46, 46, 76, 101, 56, 74, 149, 61, 70, 60, 26, 68, + 77, 82, 40, 42, 76, 57, 34, 34, 57, 76, 42, 40, 82, 77, 68, 26, 60, 0, 1, 0, + 45, 255, 243, 1, 201, 2, 110, 0, 33, 0, 118, 181, 32, 16, 15, 0, 77, 31, 184, 255, + 232, 179, 16, 0, 77, 31, 184, 255, 232, 64, 25, 8, 0, 77, 21, 56, 15, 0, 77, 21, + 16, 14, 0, 77, 17, 8, 17, 18, 0, 76, 16, 16, 13, 0, 77, 13, 184, 255, 224, 179, + 18, 0, 77, 13, 184, 255, 232, 179, 17, 0, 77, 3, 184, 255, 232, 64, 24, 14, 0, 77, + 26, 26, 11, 19, 118, 0, 35, 11, 115, 8, 34, 22, 124, 29, 65, 9, 65, 14, 124, 5, + 70, 0, 63, 237, 63, 63, 237, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 14, 2, 35, 34, 38, 53, 17, 51, 17, + 20, 22, 51, 50, 62, 2, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, + 1, 201, 34, 59, 81, 47, 91, 100, 82, 46, 63, 29, 51, 37, 22, 57, 72, 12, 15, 6, + 2, 5, 33, 13, 55, 75, 45, 20, 1, 62, 90, 126, 79, 36, 105, 123, 1, 148, 254, 128, + 92, 85, 24, 58, 98, 74, 119, 121, 1, 1, 69, 2, 1, 46, 81, 111, 0, 1, 0, 13, + 0, 0, 2, 22, 2, 116, 0, 27, 0, 89, 64, 49, 10, 5, 10, 11, 5, 120, 4, 1, + 20, 4, 4, 1, 11, 10, 10, 120, 26, 25, 20, 26, 25, 26, 115, 0, 1, 1, 8, 1, + 1, 19, 4, 28, 25, 19, 25, 11, 22, 124, 16, 69, 26, 10, 1, 1, 5, 4, 65, 0, + 68, 0, 63, 63, 51, 57, 17, 51, 51, 63, 237, 50, 50, 1, 47, 51, 16, 198, 17, 57, + 47, 94, 93, 253, 135, 43, 125, 16, 196, 135, 24, 16, 43, 8, 125, 16, 196, 49, 48, 51, + 53, 38, 38, 39, 51, 30, 3, 23, 55, 62, 3, 51, 50, 22, 23, 7, 38, 35, 34, 6, + 7, 3, 21, 210, 59, 102, 36, 92, 10, 33, 39, 41, 20, 90, 11, 23, 26, 29, 17, 27, + 45, 18, 37, 26, 24, 13, 24, 14, 104, 230, 99, 191, 99, 35, 78, 82, 81, 36, 223, 29, + 38, 22, 9, 24, 19, 57, 27, 25, 35, 254, 251, 234, 0, 1, 0, 19, 255, 88, 1, 232, + 1, 220, 0, 41, 0, 114, 64, 64, 74, 21, 1, 57, 21, 1, 21, 25, 30, 25, 129, 24, + 21, 20, 24, 24, 21, 103, 6, 1, 6, 33, 30, 33, 129, 3, 6, 20, 3, 3, 6, 30, + 24, 3, 15, 3, 1, 8, 3, 39, 43, 14, 14, 24, 42, 33, 3, 3, 0, 136, 36, 80, + 30, 6, 21, 21, 11, 25, 24, 73, 18, 136, 11, 75, 0, 63, 237, 63, 51, 18, 57, 17, + 51, 51, 63, 237, 50, 47, 50, 1, 16, 198, 50, 47, 16, 206, 50, 94, 93, 17, 18, 57, + 135, 16, 43, 135, 125, 196, 1, 93, 135, 24, 16, 43, 135, 125, 196, 1, 93, 93, 49, 48, + 1, 34, 6, 7, 6, 6, 7, 14, 3, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 55, + 38, 38, 39, 51, 30, 3, 23, 54, 54, 55, 54, 54, 51, 50, 22, 23, 7, 38, 1, 181, + 22, 21, 6, 25, 53, 33, 17, 36, 44, 54, 35, 19, 45, 8, 15, 10, 31, 15, 44, 51, + 20, 53, 91, 30, 90, 9, 24, 31, 37, 20, 22, 32, 18, 11, 47, 51, 17, 31, 17, 14, + 12, 1, 150, 27, 27, 106, 180, 80, 40, 58, 38, 18, 10, 4, 67, 5, 6, 43, 49, 107, + 240, 123, 40, 93, 98, 99, 46, 70, 134, 79, 50, 55, 7, 6, 65, 8, 0, 1, 0, 54, + 0, 0, 1, 199, 2, 107, 0, 25, 0, 110, 64, 54, 10, 10, 0, 21, 19, 16, 14, 13, + 22, 13, 1, 3, 6, 8, 9, 0, 9, 22, 13, 22, 120, 0, 9, 20, 0, 0, 9, 4, + 4, 0, 27, 23, 23, 17, 17, 13, 26, 0, 22, 121, 25, 6, 16, 121, 3, 19, 19, 25, + 65, 13, 9, 121, 12, 68, 0, 63, 237, 50, 63, 57, 47, 51, 237, 50, 16, 237, 50, 1, + 16, 198, 50, 47, 50, 47, 16, 206, 50, 47, 135, 16, 43, 135, 125, 196, 135, 14, 196, 5, + 196, 196, 14, 196, 16, 135, 14, 196, 5, 196, 196, 14, 196, 1, 17, 51, 24, 47, 49, 48, + 1, 6, 6, 7, 51, 21, 35, 6, 6, 7, 33, 21, 33, 53, 54, 54, 55, 35, 53, 51, + 54, 54, 55, 33, 53, 33, 1, 191, 27, 69, 36, 119, 159, 36, 65, 26, 1, 51, 254, 111, + 29, 67, 35, 97, 136, 33, 65, 30, 254, 229, 1, 122, 2, 43, 39, 104, 57, 64, 59, 113, + 49, 70, 54, 57, 121, 59, 64, 54, 97, 43, 70, 0, 1, 0, 73, 0, 0, 1, 171, 1, + 208, 0, 25, 0, 108, 64, 55, 10, 10, 0, 21, 19, 16, 13, 22, 13, 1, 3, 6, 9, + 0, 9, 22, 13, 22, 129, 0, 9, 20, 0, 0, 9, 4, 4, 0, 27, 23, 23, 17, 17, + 0, 13, 1, 8, 13, 26, 0, 22, 133, 25, 6, 16, 3, 19, 19, 25, 73, 13, 9, 133, + 12, 74, 0, 63, 237, 50, 63, 57, 47, 51, 205, 50, 16, 237, 50, 1, 16, 198, 94, 93, + 50, 47, 50, 47, 16, 206, 50, 47, 135, 16, 43, 135, 125, 196, 135, 196, 196, 14, 196, 16, + 135, 5, 196, 196, 14, 196, 1, 17, 51, 24, 47, 49, 48, 1, 6, 6, 7, 51, 21, 35, + 6, 6, 7, 51, 21, 33, 53, 54, 54, 55, 35, 53, 51, 54, 54, 55, 35, 53, 33, 1, + 164, 18, 56, 32, 98, 142, 27, 51, 20, 255, 254, 158, 19, 54, 30, 77, 120, 27, 49, 19, + 228, 1, 78, 1, 146, 20, 66, 42, 59, 37, 74, 34, 70, 55, 35, 83, 42, 59, 35, 63, + 23, 69, 0, 1, 0, 24, 255, 243, 1, 207, 2, 107, 0, 37, 0, 186, 64, 17, 35, 32, + 16, 0, 77, 32, 24, 16, 0, 77, 25, 24, 13, 14, 0, 76, 19, 184, 255, 232, 179, 18, + 0, 77, 19, 184, 255, 216, 179, 17, 0, 77, 19, 184, 255, 216, 179, 8, 0, 77, 16, 184, + 255, 200, 179, 18, 0, 77, 16, 184, 255, 232, 179, 17, 0, 77, 16, 184, 255, 200, 179, 8, + 0, 77, 15, 184, 255, 232, 179, 10, 0, 77, 15, 184, 255, 208, 64, 57, 9, 0, 77, 32, + 14, 1, 15, 5, 31, 5, 47, 5, 3, 8, 5, 14, 9, 14, 120, 0, 5, 20, 0, 0, + 5, 9, 9, 34, 118, 17, 39, 0, 0, 27, 27, 16, 6, 1, 6, 38, 36, 124, 0, 14, + 14, 8, 28, 28, 31, 124, 22, 70, 9, 5, 121, 8, 65, 0, 63, 237, 50, 63, 237, 50, + 47, 17, 57, 47, 51, 237, 1, 16, 198, 93, 50, 47, 50, 47, 16, 222, 237, 51, 47, 135, + 16, 43, 135, 125, 196, 1, 94, 93, 93, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 19, 62, 3, 55, 33, 53, 33, 21, 14, 3, 7, 22, 22, 21, 20, 14, 2, 35, + 34, 46, 2, 39, 55, 22, 22, 51, 50, 54, 53, 52, 35, 35, 166, 22, 49, 47, 41, 14, + 254, 226, 1, 140, 14, 42, 49, 53, 25, 93, 104, 30, 62, 94, 64, 35, 60, 48, 36, 10, + 26, 20, 86, 56, 81, 88, 198, 17, 1, 93, 22, 55, 55, 50, 18, 70, 49, 20, 52, 57, + 59, 27, 7, 94, 80, 41, 69, 50, 27, 10, 14, 15, 5, 68, 11, 30, 64, 57, 118, 0, + 1, 0, 67, 255, 243, 1, 206, 2, 107, 0, 44, 0, 209, 185, 0, 41, 255, 240, 179, 10, + 0, 77, 41, 184, 255, 224, 64, 49, 9, 0, 77, 28, 32, 10, 0, 77, 28, 40, 9, 0, + 77, 27, 8, 18, 0, 77, 27, 16, 17, 0, 77, 27, 40, 8, 0, 77, 23, 16, 17, 0, + 77, 23, 16, 10, 0, 77, 23, 24, 9, 0, 77, 23, 32, 8, 0, 77, 16, 184, 255, 216, + 180, 17, 18, 0, 76, 16, 184, 255, 224, 179, 16, 0, 77, 15, 184, 255, 248, 179, 16, 0, + 77, 8, 184, 255, 224, 179, 16, 0, 77, 4, 184, 255, 224, 179, 16, 0, 77, 4, 184, 255, + 240, 64, 47, 13, 15, 0, 76, 39, 30, 35, 30, 120, 44, 39, 20, 44, 39, 44, 44, 15, + 15, 38, 46, 35, 35, 6, 118, 0, 25, 1, 8, 25, 45, 35, 39, 121, 36, 44, 1, 124, + 30, 30, 36, 65, 14, 14, 9, 124, 20, 70, 0, 63, 237, 50, 47, 63, 57, 47, 237, 51, + 16, 237, 50, 1, 16, 214, 94, 93, 237, 51, 47, 16, 206, 50, 47, 50, 47, 135, 43, 135, + 125, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 1, 35, 34, 14, 2, 21, 20, 22, 51, 50, 62, 2, 55, 23, 14, 3, 35, 34, + 46, 2, 53, 52, 62, 2, 55, 46, 3, 39, 53, 33, 21, 33, 30, 3, 23, 1, 82, 17, + 34, 62, 48, 28, 81, 66, 21, 43, 37, 30, 9, 26, 9, 34, 44, 53, 27, 51, 84, 60, + 33, 29, 48, 63, 34, 22, 46, 44, 36, 12, 1, 105, 255, 0, 12, 36, 42, 43, 19, 1, + 41, 11, 29, 47, 36, 61, 55, 6, 10, 12, 5, 68, 5, 13, 11, 7, 22, 45, 70, 48, + 45, 64, 44, 25, 5, 27, 58, 56, 51, 20, 52, 70, 18, 50, 55, 55, 22, 0, 1, 0, + 63, 255, 91, 1, 194, 1, 208, 0, 40, 0, 175, 185, 0, 37, 255, 224, 64, 60, 9, 0, + 77, 24, 32, 10, 0, 77, 23, 16, 18, 0, 77, 23, 24, 17, 0, 77, 23, 16, 16, 0, + 77, 23, 40, 9, 0, 77, 23, 32, 8, 0, 77, 19, 16, 17, 18, 0, 76, 19, 24, 16, + 0, 77, 19, 24, 9, 0, 77, 19, 32, 8, 0, 77, 18, 24, 16, 0, 77, 8, 184, 255, + 232, 179, 15, 0, 77, 4, 184, 255, 240, 64, 46, 15, 0, 77, 35, 26, 31, 26, 129, 40, + 35, 20, 40, 35, 40, 40, 13, 13, 34, 42, 31, 31, 6, 130, 0, 21, 1, 8, 21, 41, + 31, 35, 133, 32, 40, 1, 137, 26, 26, 32, 73, 12, 12, 9, 137, 16, 75, 0, 63, 237, + 50, 47, 63, 57, 47, 237, 51, 16, 237, 50, 1, 16, 214, 94, 93, 237, 51, 47, 16, 206, + 50, 47, 50, 47, 135, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 37, 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 23, 6, + 6, 35, 34, 46, 2, 53, 52, 62, 2, 55, 46, 3, 39, 53, 33, 21, 35, 30, 3, 23, + 1, 84, 15, 34, 66, 51, 31, 81, 72, 43, 73, 20, 18, 22, 83, 49, 53, 86, 61, 33, + 29, 50, 66, 38, 22, 47, 44, 38, 12, 1, 91, 244, 11, 37, 42, 44, 20, 142, 9, 25, + 44, 35, 58, 67, 16, 10, 68, 11, 16, 24, 48, 73, 48, 44, 61, 41, 23, 5, 25, 58, + 58, 53, 20, 48, 69, 18, 50, 54, 55, 22, 0, 1, 0, 49, 255, 87, 1, 167, 1, 208, + 0, 44, 0, 148, 185, 0, 30, 255, 224, 180, 17, 18, 0, 76, 30, 184, 255, 208, 179, 13, + 0, 77, 25, 184, 255, 216, 64, 76, 10, 11, 0, 76, 12, 40, 18, 0, 77, 12, 56, 17, + 0, 77, 8, 32, 16, 0, 77, 2, 32, 12, 13, 0, 76, 4, 23, 1, 17, 23, 21, 23, + 129, 14, 17, 20, 14, 14, 17, 21, 21, 10, 130, 28, 46, 14, 14, 18, 38, 130, 0, 0, + 0, 18, 1, 8, 18, 45, 33, 17, 42, 14, 13, 134, 6, 42, 23, 23, 20, 42, 75, 21, + 17, 133, 20, 73, 0, 63, 237, 50, 63, 18, 57, 47, 18, 57, 237, 51, 17, 18, 57, 1, + 16, 198, 94, 93, 50, 47, 237, 17, 51, 47, 16, 222, 237, 51, 47, 135, 16, 43, 135, 125, + 196, 1, 93, 49, 48, 43, 43, 43, 43, 43, 43, 43, 23, 52, 62, 2, 55, 62, 3, 53, + 52, 38, 39, 53, 54, 54, 55, 35, 53, 33, 21, 6, 7, 30, 3, 21, 20, 14, 2, 7, + 14, 3, 21, 20, 22, 23, 7, 38, 38, 49, 20, 35, 45, 25, 32, 59, 46, 27, 78, 96, + 46, 74, 22, 244, 1, 89, 57, 97, 43, 64, 42, 21, 33, 58, 77, 45, 12, 31, 27, 18, + 6, 2, 65, 5, 11, 102, 29, 38, 24, 14, 6, 8, 13, 21, 34, 29, 40, 43, 2, 56, + 40, 74, 26, 69, 51, 74, 86, 6, 21, 34, 50, 35, 43, 53, 35, 20, 10, 3, 7, 14, + 21, 17, 14, 20, 5, 14, 11, 31, 0, 1, 0, 57, 0, 0, 1, 189, 2, 121, 0, 40, + 0, 194, 64, 22, 38, 16, 14, 0, 77, 38, 16, 8, 0, 77, 37, 24, 9, 0, 77, 29, + 24, 8, 9, 0, 76, 23, 184, 255, 232, 179, 14, 0, 77, 23, 184, 255, 240, 179, 13, 0, + 77, 20, 184, 255, 232, 179, 12, 0, 77, 20, 184, 255, 224, 180, 10, 11, 0, 76, 20, 184, + 255, 200, 179, 9, 0, 77, 20, 184, 255, 216, 64, 10, 8, 0, 77, 15, 24, 9, 10, 0, + 76, 10, 184, 255, 224, 64, 55, 17, 18, 0, 76, 6, 32, 17, 18, 0, 76, 24, 27, 21, + 31, 1, 39, 34, 4, 118, 21, 32, 32, 25, 25, 21, 42, 31, 118, 34, 40, 40, 13, 13, + 0, 34, 1, 8, 34, 41, 27, 39, 24, 1, 1, 18, 31, 121, 34, 68, 12, 12, 7, 124, + 18, 69, 0, 63, 237, 50, 47, 63, 237, 17, 57, 47, 51, 205, 50, 1, 16, 198, 94, 93, + 50, 47, 50, 47, 16, 237, 16, 206, 50, 47, 50, 47, 16, 237, 17, 57, 57, 17, 18, 57, + 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 51, 54, 54, + 53, 52, 38, 35, 34, 14, 2, 7, 39, 62, 3, 51, 50, 22, 21, 20, 6, 7, 51, 21, + 35, 7, 6, 6, 7, 33, 21, 33, 38, 62, 2, 55, 35, 93, 169, 32, 43, 60, 42, 30, + 45, 33, 23, 6, 41, 13, 33, 43, 55, 34, 92, 94, 29, 29, 77, 137, 50, 38, 53, 2, + 1, 29, 254, 137, 4, 18, 36, 49, 27, 103, 1, 66, 32, 64, 40, 54, 48, 14, 20, 19, + 6, 59, 13, 26, 21, 13, 86, 83, 38, 69, 35, 64, 52, 38, 69, 29, 70, 41, 71, 63, + 56, 27, 0, 1, 0, 40, 255, 243, 1, 186, 2, 107, 0, 37, 0, 154, 64, 24, 23, 24, + 17, 18, 0, 76, 23, 40, 13, 14, 0, 76, 11, 32, 17, 18, 0, 76, 10, 64, 16, 0, + 77, 6, 184, 255, 240, 179, 15, 0, 77, 5, 184, 255, 216, 179, 16, 0, 77, 5, 184, 255, + 224, 179, 15, 0, 77, 5, 184, 255, 224, 179, 8, 0, 77, 2, 184, 255, 232, 179, 16, 0, + 77, 2, 184, 255, 224, 179, 15, 0, 77, 2, 184, 255, 216, 64, 35, 8, 0, 77, 32, 32, + 20, 118, 3, 39, 33, 0, 118, 28, 25, 25, 11, 11, 29, 38, 33, 28, 121, 30, 25, 124, + 0, 0, 30, 65, 12, 12, 15, 124, 8, 70, 0, 63, 237, 50, 47, 63, 57, 47, 237, 16, + 237, 50, 1, 16, 198, 50, 47, 50, 47, 51, 237, 50, 16, 222, 237, 51, 47, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 22, 22, 21, 20, 14, 2, 35, 34, 38, + 39, 55, 22, 22, 51, 50, 62, 2, 53, 52, 46, 2, 35, 54, 54, 55, 35, 53, 33, 21, + 35, 14, 3, 186, 128, 128, 37, 61, 81, 43, 39, 80, 35, 15, 25, 70, 37, 28, 53, 41, + 25, 28, 60, 96, 69, 7, 9, 4, 87, 1, 121, 217, 1, 4, 4, 4, 1, 124, 3, 109, + 92, 50, 71, 46, 22, 16, 16, 70, 14, 17, 12, 27, 43, 31, 34, 53, 36, 19, 68, 111, + 57, 70, 70, 12, 46, 50, 47, 0, 1, 0, 58, 255, 245, 1, 180, 1, 208, 0, 35, 0, + 159, 185, 0, 34, 255, 232, 179, 19, 0, 77, 34, 184, 255, 224, 179, 12, 0, 77, 34, 184, + 255, 232, 179, 11, 0, 77, 34, 184, 255, 224, 180, 9, 10, 0, 76, 34, 184, 255, 232, 64, + 14, 8, 0, 77, 19, 80, 18, 0, 77, 19, 40, 17, 0, 77, 1, 184, 255, 224, 179, 19, + 0, 77, 1, 184, 255, 240, 179, 11, 0, 77, 1, 184, 255, 224, 179, 10, 0, 77, 1, 184, + 255, 232, 64, 36, 8, 9, 0, 76, 28, 28, 17, 130, 0, 37, 29, 30, 130, 24, 21, 21, + 8, 8, 25, 36, 20, 137, 30, 30, 14, 29, 24, 134, 26, 73, 9, 9, 14, 136, 3, 81, + 0, 63, 237, 50, 47, 63, 237, 50, 18, 57, 47, 237, 1, 16, 198, 50, 47, 50, 47, 51, + 237, 50, 16, 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 37, 20, 6, 35, 34, 46, 2, 39, 55, 30, 3, 51, 50, 54, 53, 52, 38, 35, 35, 54, + 54, 55, 35, 53, 33, 21, 35, 7, 51, 50, 30, 2, 1, 180, 104, 100, 25, 51, 44, 32, + 6, 15, 5, 28, 39, 46, 23, 57, 66, 91, 103, 45, 6, 9, 2, 73, 1, 103, 214, 10, + 19, 48, 82, 60, 34, 140, 67, 84, 6, 9, 8, 3, 70, 3, 8, 9, 6, 38, 43, 47, + 38, 51, 79, 43, 66, 66, 109, 16, 36, 57, 0, 1, 0, 62, 255, 245, 1, 206, 2, 96, + 0, 36, 0, 208, 64, 32, 26, 40, 18, 0, 77, 26, 24, 12, 0, 77, 17, 32, 17, 18, + 0, 76, 17, 40, 16, 0, 77, 17, 32, 15, 0, 77, 17, 40, 14, 0, 77, 12, 184, 255, + 240, 179, 12, 0, 77, 12, 184, 255, 232, 179, 11, 0, 77, 12, 184, 255, 224, 179, 10, 0, + 77, 12, 184, 255, 200, 179, 9, 0, 77, 12, 184, 255, 216, 179, 8, 0, 77, 9, 184, 255, + 208, 179, 18, 0, 77, 9, 184, 255, 224, 179, 17, 0, 77, 9, 184, 255, 208, 179, 13, 0, + 77, 8, 184, 255, 176, 179, 17, 0, 77, 8, 184, 255, 232, 179, 10, 0, 77, 7, 184, 255, + 248, 64, 40, 17, 0, 77, 0, 3, 127, 34, 31, 31, 32, 23, 130, 11, 2, 2, 11, 38, + 17, 17, 0, 32, 1, 8, 32, 37, 35, 36, 77, 3, 31, 133, 0, 34, 73, 18, 18, 21, + 136, 14, 81, 0, 63, 237, 50, 47, 63, 51, 237, 50, 63, 51, 1, 16, 198, 94, 93, 50, + 47, 16, 206, 50, 47, 16, 237, 17, 57, 47, 51, 237, 50, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 51, 21, 35, 21, 20, 30, 4, + 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 53, 52, 46, 4, 53, 53, 35, 53, + 51, 53, 55, 242, 188, 188, 33, 48, 58, 48, 33, 98, 106, 48, 80, 36, 16, 35, 77, 43, + 115, 33, 48, 58, 48, 33, 98, 98, 82, 1, 208, 69, 31, 37, 41, 25, 18, 30, 49, 43, + 63, 69, 16, 16, 75, 16, 21, 57, 27, 30, 20, 20, 36, 61, 52, 33, 69, 130, 14, 0, + 2, 0, 71, 255, 91, 1, 206, 1, 218, 0, 11, 0, 25, 0, 104, 185, 0, 25, 255, 232, + 64, 69, 8, 9, 0, 76, 10, 32, 17, 18, 0, 76, 10, 40, 15, 0, 77, 10, 16, 14, + 0, 77, 10, 8, 13, 0, 77, 9, 16, 10, 0, 77, 8, 32, 17, 18, 0, 76, 2, 40, + 16, 0, 77, 2, 24, 15, 0, 77, 0, 130, 12, 27, 7, 17, 127, 0, 19, 1, 8, 19, + 26, 3, 136, 23, 80, 7, 136, 17, 17, 19, 75, 0, 63, 51, 47, 237, 63, 237, 1, 16, + 214, 94, 93, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, + 52, 38, 35, 34, 6, 7, 17, 62, 3, 55, 20, 14, 2, 7, 21, 35, 17, 54, 54, 51, + 50, 22, 1, 121, 69, 63, 38, 40, 13, 39, 80, 64, 40, 85, 49, 84, 112, 63, 83, 29, + 87, 59, 101, 115, 1, 12, 62, 71, 10, 5, 254, 156, 15, 36, 54, 77, 54, 71, 101, 73, + 51, 20, 115, 2, 91, 11, 25, 111, 255, 255, 0, 212, 255, 91, 1, 33, 2, 187, 2, 6, + 0, 95, 0, 0, 255, 255, 0, 121, 255, 91, 1, 124, 2, 187, 2, 54, 0, 95, 165, 0, + 0, 6, 0, 95, 91, 0, 0, 0, 0, 1, 0, 35, 255, 91, 1, 208, 2, 187, 0, 19, + 0, 83, 64, 44, 17, 13, 12, 4, 8, 6, 2, 9, 127, 19, 15, 0, 12, 1, 12, 12, + 21, 20, 5, 16, 134, 19, 2, 19, 9, 12, 134, 15, 6, 15, 15, 19, 31, 19, 2, 8, + 19, 15, 19, 15, 11, 75, 0, 83, 0, 63, 63, 57, 57, 47, 47, 94, 93, 17, 51, 16, + 237, 50, 17, 51, 16, 237, 50, 1, 17, 18, 57, 47, 93, 51, 51, 253, 50, 50, 205, 50, + 16, 205, 50, 49, 48, 19, 51, 17, 51, 21, 35, 21, 51, 21, 35, 17, 35, 17, 35, 53, + 51, 53, 35, 53, 51, 211, 77, 176, 176, 176, 176, 77, 176, 176, 176, 176, 2, 187, 254, 202, + 66, 105, 66, 254, 195, 1, 61, 66, 105, 66, 255, 255, 0, 181, 255, 244, 1, 59, 2, 107, + 2, 6, 0, 4, 0, 0, 0, 4, 0, 27, 255, 251, 1, 243, 3, 49, 0, 5, 0, 23, + 0, 40, 0, 52, 0, 129, 64, 66, 46, 118, 29, 52, 115, 64, 38, 4, 4, 5, 2, 5, + 0, 0, 96, 5, 5, 6, 21, 21, 15, 11, 20, 15, 20, 126, 6, 11, 20, 6, 6, 11, + 15, 15, 12, 6, 6, 12, 44, 124, 34, 66, 49, 124, 24, 65, 6, 20, 121, 22, 64, 4, + 0, 0, 3, 1, 128, 2, 5, 22, 65, 15, 11, 121, 14, 68, 0, 63, 237, 50, 63, 222, + 50, 26, 205, 50, 50, 17, 51, 26, 16, 237, 50, 63, 237, 63, 237, 1, 47, 51, 47, 17, + 51, 47, 135, 16, 43, 135, 125, 196, 1, 17, 51, 24, 47, 18, 57, 25, 47, 26, 205, 24, + 47, 17, 51, 25, 16, 205, 24, 47, 47, 26, 237, 220, 237, 49, 48, 1, 55, 23, 55, 23, + 7, 23, 14, 3, 7, 51, 21, 35, 53, 62, 3, 55, 35, 53, 51, 37, 50, 30, 2, 21, + 20, 14, 2, 35, 34, 38, 39, 17, 54, 54, 19, 22, 50, 51, 50, 53, 52, 38, 35, 34, + 34, 7, 1, 13, 29, 86, 86, 29, 115, 95, 13, 32, 34, 31, 12, 122, 194, 17, 28, 27, + 30, 19, 99, 172, 254, 138, 45, 63, 40, 18, 11, 36, 66, 55, 17, 41, 18, 23, 37, 11, + 5, 8, 5, 83, 42, 43, 4, 7, 5, 3, 16, 33, 78, 78, 33, 121, 108, 44, 121, 132, + 133, 55, 70, 54, 73, 122, 115, 117, 68, 70, 6, 44, 82, 117, 73, 51, 110, 93, 60, 4, + 5, 2, 99, 6, 4, 253, 210, 1, 243, 125, 120, 1, 0, 4, 0, 27, 255, 251, 1, 253, + 2, 137, 0, 5, 0, 23, 0, 40, 0, 52, 0, 176, 64, 21, 48, 32, 16, 0, 77, 48, + 24, 15, 0, 77, 45, 40, 16, 0, 77, 45, 32, 15, 0, 77, 33, 184, 255, 208, 179, 18, + 0, 77, 33, 184, 255, 216, 179, 17, 0, 77, 26, 184, 255, 216, 179, 18, 0, 77, 26, 184, + 255, 232, 64, 63, 17, 0, 77, 46, 118, 29, 52, 115, 64, 38, 5, 3, 1, 96, 0, 0, + 6, 21, 21, 15, 11, 20, 15, 20, 132, 6, 11, 20, 6, 6, 11, 15, 12, 6, 6, 12, + 44, 124, 34, 66, 49, 124, 24, 65, 6, 20, 133, 22, 5, 1, 64, 4, 2, 128, 3, 0, + 22, 73, 15, 11, 133, 14, 76, 0, 63, 237, 50, 63, 222, 205, 26, 221, 50, 26, 205, 50, + 16, 237, 50, 63, 237, 63, 237, 1, 47, 51, 47, 16, 205, 135, 16, 43, 135, 125, 196, 1, + 17, 51, 24, 47, 18, 57, 25, 47, 26, 205, 51, 205, 24, 47, 26, 237, 220, 237, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 43, 1, 39, 55, 23, 55, 23, 7, 14, 3, 7, 51, 21, + 35, 53, 62, 3, 55, 35, 53, 51, 37, 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, + 17, 54, 54, 19, 22, 50, 51, 50, 53, 52, 38, 35, 34, 34, 7, 1, 157, 97, 30, 67, + 66, 30, 27, 9, 27, 30, 28, 10, 104, 172, 10, 28, 29, 29, 11, 98, 163, 254, 135, 45, + 63, 40, 18, 11, 36, 66, 55, 17, 41, 18, 23, 37, 11, 5, 8, 5, 83, 42, 43, 4, + 7, 5, 2, 12, 89, 36, 54, 54, 36, 211, 24, 76, 90, 97, 45, 70, 55, 40, 95, 93, + 84, 28, 69, 161, 44, 82, 117, 73, 51, 110, 93, 60, 4, 5, 2, 99, 6, 4, 253, 210, + 1, 243, 125, 120, 1, 0, 4, 0, 5, 255, 245, 1, 253, 2, 181, 0, 5, 0, 19, 0, + 38, 0, 56, 0, 153, 182, 32, 24, 10, 11, 0, 76, 16, 184, 255, 224, 179, 18, 0, 77, + 16, 184, 255, 240, 179, 17, 0, 77, 11, 184, 255, 232, 64, 67, 18, 0, 77, 5, 3, 1, + 96, 0, 0, 39, 54, 54, 48, 44, 53, 48, 53, 132, 39, 44, 20, 39, 39, 44, 48, 45, + 39, 39, 45, 38, 19, 127, 22, 14, 127, 30, 5, 1, 64, 4, 2, 128, 3, 0, 53, 133, + 55, 73, 48, 78, 44, 133, 47, 76, 39, 73, 9, 137, 35, 80, 17, 137, 25, 81, 20, 21, + 77, 0, 63, 51, 63, 237, 63, 237, 63, 63, 237, 63, 63, 237, 222, 205, 26, 221, 50, 26, + 205, 50, 1, 47, 237, 220, 237, 50, 47, 51, 47, 16, 205, 135, 16, 43, 135, 125, 196, 1, + 17, 51, 24, 47, 18, 57, 25, 47, 26, 205, 51, 205, 49, 48, 43, 43, 43, 43, 1, 39, + 55, 23, 55, 23, 5, 38, 38, 35, 34, 14, 2, 21, 20, 22, 51, 50, 55, 17, 55, 17, + 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 5, 14, 3, 7, 51, 21, + 35, 53, 62, 3, 55, 35, 53, 51, 1, 157, 97, 30, 67, 66, 30, 254, 191, 7, 28, 15, + 13, 22, 17, 9, 41, 28, 28, 14, 72, 17, 58, 39, 36, 53, 35, 17, 21, 34, 44, 23, + 20, 33, 8, 1, 47, 9, 27, 30, 28, 10, 104, 172, 10, 28, 29, 29, 11, 98, 163, 2, + 12, 89, 36, 54, 54, 36, 237, 13, 17, 16, 40, 67, 51, 97, 86, 7, 2, 111, 14, 253, + 88, 8, 16, 35, 65, 89, 54, 70, 93, 56, 24, 18, 10, 45, 24, 76, 90, 97, 45, 70, + 55, 40, 95, 93, 84, 28, 69, 0, 2, 0, 36, 0, 0, 1, 217, 2, 107, 0, 12, 0, + 18, 0, 41, 64, 21, 0, 5, 115, 8, 20, 13, 18, 115, 15, 19, 6, 16, 65, 18, 121, + 15, 68, 0, 124, 12, 68, 0, 63, 237, 63, 237, 63, 51, 1, 16, 214, 253, 205, 16, 222, + 253, 206, 49, 48, 37, 22, 62, 2, 53, 17, 51, 17, 20, 6, 35, 35, 39, 21, 35, 17, + 51, 17, 1, 37, 36, 40, 19, 3, 82, 68, 90, 22, 41, 216, 82, 69, 1, 15, 31, 46, + 31, 1, 172, 254, 47, 75, 79, 70, 70, 2, 107, 253, 219, 0, 3, 0, 54, 255, 89, 1, + 216, 2, 151, 0, 5, 0, 17, 0, 33, 0, 52, 64, 27, 15, 9, 9, 21, 28, 115, 31, + 35, 0, 5, 115, 2, 34, 12, 6, 29, 73, 25, 136, 18, 75, 3, 65, 5, 121, 2, 68, + 0, 63, 237, 63, 63, 237, 63, 222, 205, 1, 16, 214, 253, 205, 16, 222, 253, 204, 51, 47, + 205, 49, 48, 37, 21, 35, 17, 51, 17, 1, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, + 6, 3, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, 51, 17, 20, 6, 1, 40, 242, + 82, 1, 22, 23, 34, 34, 23, 25, 33, 33, 143, 11, 34, 11, 11, 9, 23, 10, 43, 37, + 82, 81, 70, 70, 2, 107, 253, 219, 1, 217, 32, 28, 27, 33, 33, 27, 28, 32, 253, 58, + 5, 5, 68, 3, 4, 53, 51, 1, 200, 254, 57, 90, 86, 0, 3, 0, 99, 255, 89, 1, + 162, 2, 181, 0, 11, 0, 23, 0, 39, 0, 54, 64, 28, 21, 15, 15, 27, 34, 127, 37, + 41, 11, 6, 127, 3, 40, 18, 12, 35, 73, 31, 136, 24, 75, 4, 5, 77, 11, 136, 0, + 81, 0, 63, 237, 63, 51, 63, 237, 63, 222, 205, 1, 16, 214, 253, 206, 16, 222, 253, 204, + 51, 47, 205, 49, 48, 23, 38, 38, 53, 17, 55, 17, 20, 30, 2, 23, 19, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 3, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, + 51, 17, 20, 6, 221, 67, 55, 82, 5, 12, 20, 15, 128, 23, 34, 34, 23, 24, 33, 33, + 142, 11, 34, 11, 10, 9, 23, 10, 43, 38, 82, 81, 9, 2, 62, 66, 2, 46, 14, 253, + 210, 21, 26, 16, 8, 3, 1, 226, 32, 28, 27, 33, 33, 27, 28, 32, 253, 58, 5, 5, + 68, 3, 4, 53, 51, 1, 200, 254, 57, 90, 86, 0, 2, 0, 36, 0, 0, 1, 217, 2, + 107, 0, 11, 0, 23, 0, 57, 64, 29, 0, 5, 8, 25, 22, 17, 18, 20, 23, 16, 12, + 15, 24, 17, 22, 68, 19, 65, 23, 16, 65, 14, 68, 0, 124, 11, 68, 6, 65, 0, 63, + 63, 237, 63, 63, 51, 63, 63, 51, 1, 16, 214, 205, 50, 50, 220, 205, 50, 50, 16, 222, + 221, 206, 49, 48, 37, 50, 62, 2, 53, 17, 51, 17, 20, 6, 35, 39, 21, 35, 17, 51, + 19, 39, 53, 51, 17, 35, 3, 1, 61, 31, 34, 17, 3, 71, 70, 86, 219, 62, 66, 119, + 9, 62, 66, 119, 69, 15, 30, 46, 31, 1, 172, 254, 47, 75, 79, 251, 251, 2, 107, 254, + 76, 183, 253, 253, 149, 1, 180, 0, 3, 0, 36, 255, 89, 1, 220, 2, 151, 0, 11, 0, + 26, 0, 38, 0, 115, 181, 38, 96, 18, 0, 77, 32, 184, 255, 160, 64, 60, 18, 0, 77, + 37, 31, 32, 31, 132, 38, 37, 20, 38, 38, 37, 32, 33, 36, 15, 15, 36, 64, 14, 19, + 72, 36, 21, 9, 131, 3, 3, 21, 115, 24, 40, 38, 28, 80, 29, 1, 29, 39, 32, 37, + 68, 34, 65, 38, 31, 65, 29, 68, 6, 138, 0, 22, 73, 18, 136, 12, 75, 0, 63, 237, + 63, 222, 237, 63, 63, 51, 63, 63, 51, 1, 16, 214, 93, 205, 50, 16, 222, 237, 50, 47, + 237, 16, 206, 43, 50, 47, 16, 205, 50, 135, 16, 43, 135, 125, 196, 49, 48, 0, 43, 43, + 1, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 3, 34, 38, 39, 55, 22, 51, 50, + 54, 53, 17, 51, 17, 20, 6, 1, 21, 35, 17, 51, 19, 39, 53, 51, 17, 35, 3, 1, + 163, 23, 34, 34, 23, 24, 33, 33, 138, 11, 34, 11, 11, 19, 23, 43, 39, 71, 72, 254, + 227, 62, 66, 119, 9, 62, 66, 119, 2, 31, 32, 28, 27, 33, 33, 27, 28, 32, 253, 58, + 5, 5, 68, 7, 53, 51, 1, 200, 254, 57, 90, 86, 1, 162, 251, 2, 107, 254, 76, 183, + 253, 253, 149, 1, 180, 0, 3, 0, 36, 255, 89, 1, 216, 2, 151, 0, 21, 0, 33, 0, + 49, 0, 77, 185, 0, 6, 255, 216, 64, 41, 9, 16, 0, 76, 31, 25, 25, 44, 37, 37, + 11, 127, 175, 8, 191, 8, 2, 8, 44, 127, 47, 51, 19, 127, 0, 50, 28, 22, 45, 73, + 41, 136, 34, 75, 10, 21, 76, 16, 136, 3, 80, 0, 63, 237, 63, 51, 63, 237, 63, 222, + 205, 1, 16, 214, 237, 16, 214, 253, 222, 93, 237, 50, 47, 17, 51, 47, 205, 49, 48, 43, + 19, 54, 54, 51, 50, 30, 2, 21, 17, 35, 17, 52, 46, 2, 35, 34, 6, 7, 17, 35, + 1, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 3, 34, 38, 39, 55, 22, 22, 51, + 50, 54, 53, 17, 51, 17, 20, 6, 36, 32, 63, 28, 32, 48, 33, 17, 75, 10, 16, 21, + 12, 8, 27, 9, 75, 1, 122, 23, 34, 34, 23, 25, 33, 33, 143, 11, 34, 11, 11, 9, + 28, 10, 43, 39, 75, 81, 1, 195, 11, 12, 13, 37, 69, 56, 254, 213, 1, 30, 39, 45, + 24, 7, 5, 4, 254, 120, 2, 31, 32, 28, 27, 33, 33, 27, 28, 32, 253, 58, 5, 5, + 68, 3, 4, 53, 51, 1, 200, 254, 57, 90, 86, 255, 255, 0, 9, 0, 0, 1, 235, 3, + 61, 2, 38, 0, 36, 0, 0, 1, 7, 1, 95, 0, 0, 0, 139, 0, 16, 64, 11, 2, + 0, 23, 27, 4, 15, 80, 2, 9, 28, 79, 43, 43, 52, 0, 0, 255, 255, 0, 58, 255, + 245, 1, 176, 2, 178, 2, 38, 0, 68, 0, 0, 1, 6, 1, 95, 0, 0, 0, 16, 64, + 11, 2, 5, 49, 53, 28, 19, 80, 2, 15, 54, 79, 43, 43, 52, 255, 255, 0, 89, 0, + 0, 1, 155, 3, 61, 2, 38, 0, 44, 0, 0, 1, 7, 1, 95, 0, 0, 0, 139, 0, + 16, 64, 11, 1, 0, 12, 16, 4, 2, 80, 1, 9, 17, 79, 43, 43, 52, 0, 0, 255, + 255, 0, 54, 255, 245, 1, 194, 2, 178, 2, 38, 1, 12, 0, 0, 1, 6, 1, 95, 221, + 0, 0, 19, 185, 0, 1, 255, 219, 64, 9, 22, 26, 1, 11, 80, 1, 2, 27, 79, 43, + 43, 52, 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 61, 2, 38, 0, 50, 0, 0, 1, + 7, 1, 95, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 32, 36, 0, 9, 80, 2, 4, + 37, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 178, 2, 38, 0, + 82, 0, 0, 1, 6, 1, 95, 0, 0, 0, 16, 64, 11, 2, 0, 32, 36, 9, 0, 80, + 2, 14, 37, 79, 43, 43, 52, 255, 255, 0, 48, 255, 243, 1, 196, 3, 61, 2, 38, 0, + 56, 0, 0, 1, 7, 1, 95, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 26, 30, 4, + 20, 80, 1, 6, 31, 79, 43, 43, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, + 178, 2, 38, 0, 88, 0, 0, 1, 6, 1, 95, 0, 0, 0, 16, 64, 11, 1, 1, 22, + 26, 7, 0, 80, 1, 9, 27, 79, 43, 43, 52, 0, 4, 0, 48, 255, 243, 1, 196, 3, + 61, 0, 11, 0, 23, 0, 27, 0, 53, 0, 87, 64, 49, 9, 128, 3, 144, 3, 2, 3, + 3, 27, 15, 21, 64, 16, 19, 72, 21, 64, 9, 12, 72, 21, 21, 26, 27, 26, 27, 26, + 33, 46, 115, 49, 55, 36, 115, 33, 54, 24, 27, 18, 6, 12, 0, 47, 34, 65, 41, 124, + 28, 70, 0, 63, 237, 63, 51, 222, 50, 221, 50, 222, 205, 1, 16, 214, 237, 16, 222, 237, + 18, 57, 57, 47, 47, 17, 51, 47, 43, 43, 205, 17, 51, 47, 93, 205, 49, 48, 19, 34, + 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, + 20, 6, 39, 51, 21, 35, 19, 34, 46, 2, 53, 17, 51, 17, 20, 30, 2, 51, 50, 62, + 2, 53, 17, 51, 17, 20, 14, 2, 160, 21, 27, 27, 21, 21, 27, 27, 159, 20, 28, 28, + 20, 20, 28, 28, 223, 226, 226, 113, 55, 77, 48, 22, 82, 17, 31, 44, 28, 28, 44, 31, + 17, 82, 22, 48, 77, 2, 135, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, + 23, 22, 27, 182, 57, 252, 239, 32, 58, 84, 52, 1, 130, 254, 135, 47, 63, 38, 16, 16, + 38, 63, 47, 1, 121, 254, 126, 52, 84, 58, 32, 255, 255, 0, 68, 255, 246, 1, 173, 2, + 204, 2, 38, 0, 88, 0, 0, 1, 6, 2, 167, 0, 0, 0, 30, 64, 21, 3, 2, 1, + 1, 24, 42, 7, 0, 80, 3, 9, 48, 79, 2, 9, 34, 79, 1, 9, 22, 79, 43, 43, + 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 48, 255, 243, 1, 196, 3, 62, 2, 38, 0, + 56, 0, 0, 1, 6, 2, 174, 0, 0, 0, 30, 64, 21, 3, 2, 1, 0, 44, 38, 4, + 20, 80, 3, 6, 42, 79, 2, 6, 30, 79, 1, 6, 27, 79, 43, 43, 43, 43, 52, 52, + 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, 251, 2, 38, 0, 88, 0, 0, 1, + 6, 2, 170, 0, 0, 0, 30, 64, 21, 3, 2, 1, 1, 24, 42, 7, 0, 80, 3, 9, + 48, 79, 2, 9, 34, 79, 1, 9, 22, 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 255, + 255, 0, 48, 255, 243, 1, 196, 3, 62, 2, 38, 0, 56, 0, 0, 1, 6, 2, 175, 0, + 0, 0, 30, 64, 21, 3, 2, 1, 0, 28, 46, 4, 20, 80, 3, 6, 55, 79, 2, 6, + 38, 79, 1, 6, 26, 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 68, 255, + 246, 1, 173, 2, 230, 2, 38, 0, 88, 0, 0, 1, 6, 2, 171, 0, 0, 0, 30, 64, + 21, 3, 2, 1, 1, 24, 42, 7, 0, 80, 3, 9, 51, 79, 2, 9, 34, 79, 1, 9, + 22, 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 48, 255, 243, 1, 196, 3, + 62, 2, 38, 0, 56, 0, 0, 1, 6, 2, 173, 0, 0, 0, 30, 64, 21, 3, 2, 1, + 0, 32, 50, 4, 20, 80, 3, 6, 42, 79, 2, 6, 30, 79, 1, 6, 28, 79, 43, 43, + 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, 251, 2, 38, 0, + 88, 0, 0, 1, 6, 2, 169, 0, 0, 0, 30, 64, 21, 3, 2, 1, 1, 24, 42, 7, + 0, 80, 3, 9, 48, 79, 2, 9, 34, 79, 1, 9, 22, 79, 43, 43, 43, 43, 52, 52, + 52, 0, 0, 0, 2, 0, 45, 255, 245, 1, 204, 1, 219, 0, 26, 0, 35, 0, 95, 185, + 0, 29, 255, 240, 64, 58, 15, 16, 0, 76, 9, 32, 16, 0, 77, 9, 32, 13, 14, 0, + 76, 2, 16, 19, 20, 0, 76, 1, 32, 18, 0, 77, 1, 24, 17, 0, 77, 35, 7, 130, + 22, 37, 14, 14, 3, 36, 27, 130, 4, 7, 134, 35, 35, 0, 13, 13, 10, 136, 17, 80, + 30, 136, 0, 81, 0, 63, 237, 63, 237, 50, 47, 17, 57, 47, 237, 1, 47, 237, 16, 198, + 50, 47, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 23, 34, 38, 53, 52, 52, + 55, 33, 38, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 39, + 6, 22, 51, 50, 62, 2, 55, 241, 94, 102, 1, 1, 71, 5, 80, 78, 44, 62, 16, 11, + 15, 78, 49, 60, 91, 60, 30, 38, 62, 79, 150, 1, 61, 51, 29, 45, 33, 19, 3, 11, + 117, 119, 5, 18, 7, 72, 75, 15, 7, 69, 8, 18, 37, 64, 89, 52, 62, 91, 61, 30, + 199, 57, 72, 22, 36, 47, 24, 0, 5, 0, 9, 0, 0, 1, 235, 3, 61, 0, 11, 0, + 23, 0, 27, 0, 43, 0, 50, 0, 137, 64, 70, 26, 26, 21, 15, 9, 30, 47, 45, 44, + 37, 31, 44, 31, 120, 32, 37, 20, 32, 32, 37, 29, 48, 44, 38, 28, 44, 28, 120, 43, + 38, 20, 43, 43, 38, 27, 27, 3, 9, 9, 44, 44, 32, 43, 52, 32, 51, 28, 43, 68, + 29, 30, 121, 48, 47, 47, 37, 32, 24, 27, 18, 6, 12, 0, 44, 38, 37, 65, 31, 32, + 68, 0, 63, 51, 63, 51, 51, 222, 50, 221, 50, 222, 205, 17, 18, 57, 47, 51, 237, 50, + 63, 51, 1, 16, 198, 16, 206, 17, 57, 17, 51, 47, 205, 50, 47, 135, 16, 43, 135, 125, + 196, 16, 196, 196, 135, 24, 16, 43, 135, 125, 196, 16, 14, 196, 5, 196, 196, 1, 24, 16, + 222, 205, 50, 47, 49, 48, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, + 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 51, 21, 35, 1, 39, 35, 7, 35, 62, + 3, 55, 51, 30, 3, 23, 3, 6, 6, 7, 51, 38, 38, 160, 21, 27, 27, 21, 21, 27, + 27, 159, 20, 28, 28, 20, 20, 28, 28, 223, 226, 226, 1, 11, 42, 229, 40, 84, 17, 42, + 49, 54, 30, 102, 29, 53, 47, 42, 17, 242, 23, 50, 24, 191, 23, 48, 2, 135, 27, 22, + 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 182, 57, 252, 252, 162, 162, + 66, 148, 154, 157, 74, 74, 157, 154, 148, 66, 2, 15, 63, 146, 88, 90, 147, 255, 255, 0, + 58, 255, 245, 1, 176, 2, 204, 2, 38, 0, 68, 0, 0, 1, 6, 2, 167, 0, 0, 0, + 30, 64, 21, 4, 3, 2, 5, 51, 69, 28, 19, 80, 4, 15, 75, 79, 3, 15, 61, 79, + 2, 15, 49, 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 0, 4, 0, 9, 0, 0, 1, + 235, 3, 61, 0, 15, 0, 22, 0, 34, 0, 38, 0, 127, 64, 64, 37, 38, 38, 32, 26, + 26, 2, 19, 17, 16, 9, 3, 16, 3, 120, 4, 9, 20, 4, 4, 9, 1, 20, 16, 10, + 0, 16, 0, 120, 15, 10, 20, 15, 15, 10, 16, 16, 4, 15, 40, 4, 39, 35, 38, 29, + 23, 9, 1, 2, 121, 20, 19, 19, 3, 16, 10, 9, 65, 4, 3, 68, 15, 0, 68, 0, + 63, 50, 63, 51, 63, 51, 51, 18, 57, 47, 51, 237, 50, 16, 222, 221, 222, 205, 1, 16, + 198, 16, 206, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, 16, 196, 196, 135, 24, 16, + 43, 135, 125, 196, 16, 14, 196, 5, 196, 196, 1, 51, 24, 47, 205, 51, 47, 205, 49, 48, + 33, 39, 35, 7, 35, 62, 3, 55, 51, 30, 3, 23, 3, 6, 6, 7, 51, 38, 38, 39, + 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 51, 21, 35, 1, 148, 42, 229, 40, + 84, 17, 42, 49, 54, 30, 102, 29, 53, 47, 42, 17, 242, 23, 50, 24, 191, 23, 48, 22, + 21, 28, 28, 21, 21, 28, 28, 134, 226, 226, 162, 162, 66, 148, 154, 157, 74, 74, 157, 154, + 148, 66, 2, 15, 63, 146, 88, 90, 147, 180, 27, 23, 23, 27, 27, 23, 23, 27, 182, 57, + 255, 255, 0, 58, 255, 245, 1, 176, 2, 204, 2, 38, 0, 68, 0, 0, 1, 6, 2, 168, + 0, 0, 0, 23, 64, 16, 3, 2, 5, 61, 62, 28, 19, 80, 3, 15, 63, 79, 2, 15, + 49, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 27, 0, 0, 1, 226, 3, 6, 2, 38, + 0, 161, 0, 0, 1, 7, 0, 138, 0, 89, 0, 139, 0, 16, 64, 11, 2, 84, 23, 24, + 4, 16, 80, 2, 7, 25, 79, 43, 43, 52, 0, 0, 255, 255, 0, 31, 255, 245, 1, 222, + 2, 123, 2, 38, 0, 193, 0, 0, 1, 6, 0, 138, 9, 0, 0, 16, 64, 11, 3, 4, + 76, 77, 33, 7, 80, 3, 0, 78, 79, 43, 43, 52, 0, 1, 0, 46, 255, 243, 1, 218, + 2, 121, 0, 45, 0, 193, 185, 0, 40, 255, 224, 179, 18, 0, 77, 40, 184, 255, 216, 179, + 17, 0, 77, 40, 184, 255, 240, 180, 11, 12, 0, 76, 39, 184, 255, 240, 179, 16, 0, 77, + 35, 184, 255, 248, 179, 16, 0, 77, 34, 184, 255, 232, 179, 18, 0, 77, 34, 184, 255, 240, + 179, 17, 0, 77, 34, 184, 255, 232, 179, 12, 0, 77, 34, 184, 255, 240, 179, 11, 0, 77, + 26, 184, 255, 232, 180, 15, 18, 0, 76, 26, 184, 255, 224, 179, 14, 0, 77, 26, 184, 255, + 232, 64, 49, 13, 0, 77, 15, 24, 14, 0, 77, 15, 16, 13, 0, 77, 3, 1, 0, 115, + 9, 28, 28, 7, 6, 9, 47, 37, 118, 18, 46, 29, 29, 32, 124, 23, 9, 1, 121, 2, + 6, 2, 4, 2, 4, 2, 23, 69, 42, 124, 13, 70, 0, 63, 237, 63, 57, 57, 47, 47, + 17, 51, 16, 237, 50, 16, 237, 50, 47, 1, 16, 214, 237, 16, 222, 50, 205, 51, 47, 16, + 253, 205, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, + 35, 53, 51, 53, 51, 21, 51, 21, 35, 21, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, + 51, 50, 30, 2, 23, 7, 38, 38, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, + 1, 91, 71, 71, 83, 44, 44, 19, 80, 52, 53, 85, 62, 33, 38, 64, 87, 49, 32, 48, + 34, 22, 6, 27, 21, 58, 32, 35, 58, 42, 23, 21, 40, 59, 38, 25, 27, 7, 174, 65, + 86, 86, 65, 159, 7, 21, 43, 82, 121, 77, 78, 120, 82, 43, 10, 14, 15, 4, 69, 18, + 23, 36, 66, 93, 57, 56, 92, 66, 37, 8, 4, 0, 2, 0, 40, 255, 88, 1, 226, 1, + 219, 0, 34, 0, 53, 0, 152, 185, 0, 48, 255, 240, 179, 14, 0, 77, 43, 184, 255, 232, + 179, 14, 0, 77, 43, 184, 255, 240, 179, 13, 0, 77, 43, 184, 255, 232, 64, 76, 12, 0, + 77, 32, 24, 17, 18, 0, 76, 32, 16, 16, 0, 77, 11, 24, 15, 16, 0, 76, 6, 24, + 15, 16, 0, 76, 5, 16, 17, 18, 0, 76, 5, 24, 15, 16, 0, 76, 38, 36, 35, 34, + 127, 19, 17, 21, 55, 45, 130, 8, 27, 27, 8, 54, 20, 35, 38, 17, 38, 50, 136, 3, + 38, 3, 38, 3, 13, 54, 31, 136, 24, 75, 42, 136, 13, 80, 0, 63, 237, 63, 237, 17, + 18, 57, 57, 47, 47, 16, 237, 17, 51, 16, 205, 50, 1, 16, 198, 50, 47, 16, 237, 16, + 222, 50, 206, 253, 50, 204, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, + 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 21, 51, 21, 35, 21, 20, + 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 53, 35, 53, 51, 53, 38, 38, 35, + 34, 6, 21, 20, 30, 2, 51, 50, 54, 55, 1, 73, 13, 54, 35, 39, 68, 51, 29, 27, + 53, 76, 50, 57, 80, 28, 71, 71, 104, 106, 42, 69, 26, 15, 25, 62, 37, 67, 59, 90, + 90, 12, 38, 32, 60, 62, 18, 30, 39, 22, 28, 51, 16, 43, 8, 18, 27, 55, 85, 58, + 51, 85, 62, 35, 17, 8, 175, 61, 178, 108, 96, 14, 10, 73, 11, 14, 58, 65, 187, 61, + 116, 4, 7, 88, 73, 40, 57, 37, 17, 18, 12, 255, 255, 0, 46, 255, 243, 1, 199, 3, + 61, 2, 38, 0, 42, 0, 0, 1, 7, 1, 95, 0, 54, 0, 139, 0, 16, 64, 11, 1, + 53, 38, 42, 9, 1, 80, 1, 14, 43, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, 255, + 88, 1, 173, 2, 178, 2, 38, 0, 74, 0, 0, 1, 6, 1, 95, 18, 0, 0, 16, 64, + 11, 2, 33, 46, 50, 7, 16, 80, 2, 12, 51, 79, 43, 43, 52, 255, 255, 0, 64, 0, + 0, 1, 235, 3, 61, 2, 38, 0, 46, 0, 0, 1, 7, 1, 95, 0, 0, 0, 139, 0, + 19, 185, 0, 1, 255, 229, 64, 9, 23, 27, 16, 8, 80, 1, 0, 28, 79, 43, 43, 52, + 0, 0, 0, 0, 2, 0, 43, 0, 0, 1, 222, 3, 62, 0, 22, 0, 28, 0, 133, 64, + 69, 6, 0, 5, 0, 129, 11, 6, 20, 11, 0, 20, 11, 6, 19, 16, 0, 20, 19, 20, + 0, 129, 16, 19, 20, 16, 19, 0, 16, 20, 20, 5, 30, 64, 28, 27, 23, 96, 25, 25, + 16, 11, 127, 0, 13, 1, 8, 13, 29, 11, 16, 5, 20, 73, 27, 23, 64, 26, 24, 128, + 25, 28, 14, 15, 77, 13, 74, 5, 6, 74, 0, 63, 51, 63, 63, 51, 222, 205, 26, 221, + 50, 26, 205, 50, 63, 18, 57, 57, 1, 16, 214, 94, 93, 237, 50, 50, 25, 47, 26, 205, + 205, 51, 26, 24, 16, 206, 50, 47, 16, 193, 135, 4, 43, 16, 0, 193, 135, 5, 125, 16, + 196, 135, 8, 24, 16, 43, 135, 5, 125, 196, 49, 48, 55, 30, 3, 23, 35, 46, 3, 39, + 21, 35, 17, 55, 17, 54, 54, 55, 51, 6, 6, 3, 55, 23, 55, 23, 7, 238, 27, 68, + 67, 60, 18, 98, 19, 56, 63, 63, 25, 83, 83, 55, 110, 44, 97, 43, 121, 253, 26, 84, + 84, 26, 110, 255, 20, 61, 70, 73, 31, 31, 65, 60, 50, 17, 223, 2, 137, 14, 254, 119, + 48, 95, 51, 51, 108, 1, 229, 40, 54, 54, 40, 85, 0, 2, 0, 29, 255, 89, 1, 216, + 2, 121, 0, 36, 0, 48, 0, 179, 185, 0, 47, 255, 240, 179, 14, 0, 77, 47, 184, 255, + 248, 64, 20, 13, 0, 77, 45, 24, 14, 0, 77, 45, 16, 13, 0, 77, 41, 16, 13, 14, + 0, 76, 39, 184, 255, 240, 180, 13, 14, 0, 76, 23, 184, 255, 216, 180, 8, 12, 0, 76, + 19, 184, 255, 232, 180, 8, 12, 0, 76, 18, 184, 255, 232, 179, 16, 0, 77, 18, 184, 255, + 240, 64, 63, 15, 0, 77, 14, 24, 15, 16, 0, 76, 13, 24, 8, 12, 0, 76, 8, 16, + 16, 0, 77, 8, 32, 15, 0, 77, 8, 24, 8, 12, 0, 76, 6, 3, 35, 26, 29, 29, + 37, 43, 118, 21, 50, 37, 118, 11, 64, 11, 16, 72, 11, 49, 31, 0, 49, 46, 124, 16, + 69, 40, 124, 26, 6, 70, 0, 63, 51, 237, 63, 237, 16, 220, 205, 1, 16, 214, 43, 237, + 16, 222, 237, 17, 57, 47, 51, 204, 205, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 5, 34, 38, 53, 52, 54, 55, 46, 3, 53, 52, 62, 2, + 51, 50, 30, 2, 21, 20, 6, 7, 14, 3, 21, 20, 51, 50, 54, 55, 23, 6, 3, 20, + 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 36, 51, 47, 33, 17, 48, 80, 56, 31, + 32, 59, 81, 50, 49, 81, 59, 32, 55, 47, 9, 33, 32, 24, 36, 6, 20, 11, 6, 22, + 216, 67, 69, 70, 69, 69, 70, 69, 67, 167, 36, 32, 23, 46, 17, 1, 40, 80, 120, 82, + 83, 122, 79, 39, 39, 79, 122, 83, 110, 140, 36, 7, 24, 30, 32, 14, 26, 3, 3, 54, + 10, 1, 221, 122, 130, 130, 122, 122, 130, 130, 0, 2, 0, 40, 255, 89, 1, 204, 1, 219, + 0, 39, 0, 51, 0, 198, 64, 12, 50, 32, 15, 16, 0, 76, 50, 24, 14, 0, 77, 48, + 184, 255, 224, 180, 15, 16, 0, 76, 48, 184, 255, 232, 179, 14, 0, 77, 44, 184, 255, 224, + 180, 15, 16, 0, 76, 44, 184, 255, 240, 64, 19, 14, 0, 77, 42, 40, 16, 0, 77, 42, + 32, 15, 0, 77, 42, 16, 14, 0, 77, 26, 184, 255, 240, 180, 17, 18, 0, 76, 26, 184, + 255, 216, 179, 10, 0, 77, 25, 184, 255, 224, 180, 8, 9, 0, 76, 21, 184, 255, 232, 64, + 11, 8, 9, 0, 76, 15, 24, 8, 9, 0, 76, 11, 184, 255, 240, 64, 43, 16, 0, 77, + 10, 24, 8, 9, 0, 76, 8, 3, 32, 38, 38, 28, 32, 32, 46, 40, 130, 23, 53, 46, + 130, 13, 64, 9, 12, 72, 13, 52, 34, 0, 52, 43, 136, 18, 80, 49, 136, 28, 8, 81, + 0, 63, 51, 237, 63, 237, 16, 220, 205, 1, 16, 214, 43, 237, 16, 222, 237, 17, 57, 47, + 51, 51, 47, 16, 205, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 5, 34, 38, 53, 52, 54, 55, 54, 55, 46, 3, 53, 52, 62, 2, 51, + 50, 30, 2, 21, 20, 6, 7, 6, 6, 7, 6, 6, 21, 20, 51, 50, 54, 55, 23, 6, + 19, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 22, 51, 48, 23, 16, 8, 8, + 42, 71, 52, 29, 31, 56, 77, 45, 46, 78, 56, 31, 52, 45, 23, 37, 18, 13, 14, 36, + 6, 20, 10, 7, 23, 61, 68, 58, 57, 67, 67, 57, 58, 68, 167, 36, 32, 21, 37, 17, + 8, 6, 3, 38, 63, 86, 52, 55, 90, 63, 35, 35, 63, 90, 55, 72, 107, 31, 14, 24, + 19, 14, 21, 13, 26, 3, 3, 54, 10, 1, 143, 79, 91, 91, 79, 78, 91, 91, 255, 255, + 0, 29, 255, 89, 1, 216, 3, 6, 2, 38, 2, 66, 0, 0, 1, 7, 0, 138, 0, 0, + 0, 139, 0, 16, 64, 11, 2, 0, 49, 50, 10, 20, 80, 2, 15, 51, 79, 43, 43, 52, + 0, 0, 255, 255, 0, 40, 255, 89, 1, 204, 2, 123, 2, 38, 2, 67, 0, 0, 1, 6, + 0, 138, 0, 0, 0, 16, 64, 11, 2, 0, 52, 53, 12, 22, 80, 2, 17, 54, 79, 43, + 43, 52, 255, 255, 0, 24, 255, 243, 1, 207, 3, 61, 2, 38, 2, 15, 0, 0, 1, 7, + 1, 95, 0, 0, 0, 139, 0, 16, 64, 11, 1, 6, 38, 42, 27, 16, 80, 1, 7, 43, + 79, 43, 43, 52, 0, 0, 255, 255, 0, 44, 255, 91, 1, 175, 2, 178, 2, 38, 2, 163, + 0, 0, 1, 6, 1, 95, 0, 0, 0, 16, 64, 11, 1, 12, 41, 45, 27, 18, 80, 1, + 7, 46, 79, 43, 43, 52, 255, 255, 0, 71, 255, 86, 1, 151, 2, 178, 2, 38, 1, 93, + 0, 0, 1, 6, 1, 95, 36, 0, 0, 16, 64, 11, 1, 58, 20, 24, 11, 2, 80, 1, + 1, 25, 79, 43, 43, 52, 0, 3, 0, 27, 255, 251, 1, 223, 2, 113, 0, 17, 0, 34, + 0, 46, 0, 140, 64, 11, 42, 24, 15, 0, 77, 39, 24, 15, 0, 77, 26, 184, 255, 224, + 179, 18, 0, 77, 26, 184, 255, 232, 179, 17, 0, 77, 26, 184, 255, 224, 179, 16, 0, 77, + 20, 184, 255, 232, 179, 18, 0, 77, 20, 184, 255, 224, 64, 49, 16, 17, 0, 76, 40, 118, + 31, 23, 1, 23, 45, 115, 32, 5, 14, 9, 14, 126, 0, 5, 20, 0, 0, 5, 15, 15, + 9, 6, 0, 0, 6, 38, 124, 28, 66, 43, 124, 18, 65, 0, 14, 121, 17, 65, 9, 5, + 121, 8, 68, 0, 63, 237, 50, 63, 237, 50, 63, 237, 63, 237, 1, 47, 51, 47, 16, 205, + 50, 47, 135, 16, 43, 135, 125, 196, 1, 24, 47, 237, 220, 93, 237, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 1, 14, 3, 7, 51, 21, 35, 53, 62, 3, 55, 35, 53, 51, 37, 50, + 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 17, 54, 54, 19, 22, 50, 51, 50, 53, 52, + 38, 35, 34, 34, 7, 1, 223, 13, 32, 34, 31, 12, 122, 194, 17, 28, 27, 30, 19, 99, + 172, 254, 138, 45, 63, 40, 18, 11, 36, 66, 55, 17, 41, 18, 23, 37, 11, 5, 8, 5, + 83, 42, 43, 4, 7, 5, 2, 43, 44, 121, 132, 133, 55, 70, 54, 73, 122, 115, 117, 68, + 70, 6, 44, 82, 117, 73, 51, 110, 93, 60, 4, 5, 2, 99, 6, 4, 253, 210, 1, 243, + 125, 120, 1, 0, 3, 0, 27, 255, 251, 1, 226, 2, 113, 0, 17, 0, 34, 0, 46, 0, + 124, 64, 13, 42, 24, 14, 15, 0, 76, 39, 24, 14, 15, 0, 76, 26, 184, 255, 224, 180, + 16, 18, 0, 76, 20, 184, 255, 224, 64, 55, 16, 18, 0, 76, 40, 118, 47, 23, 111, 23, + 2, 23, 46, 115, 32, 5, 14, 9, 14, 132, 0, 5, 20, 0, 0, 5, 15, 15, 0, 9, + 1, 8, 9, 6, 0, 0, 6, 38, 124, 28, 66, 43, 124, 18, 65, 0, 14, 133, 17, 73, + 9, 5, 133, 8, 76, 0, 63, 237, 50, 63, 237, 50, 63, 237, 63, 237, 1, 47, 51, 47, + 16, 205, 94, 93, 50, 47, 135, 16, 43, 135, 125, 196, 1, 24, 47, 237, 220, 93, 237, 49, + 48, 43, 43, 43, 43, 1, 14, 3, 7, 51, 21, 35, 53, 62, 3, 55, 35, 53, 51, 37, + 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 17, 54, 54, 19, 22, 50, 51, 50, 53, + 52, 38, 35, 34, 34, 7, 1, 226, 9, 27, 30, 28, 10, 104, 172, 10, 28, 29, 29, 11, + 98, 163, 254, 135, 45, 63, 40, 18, 11, 36, 66, 55, 17, 41, 18, 23, 37, 11, 5, 8, + 5, 83, 42, 43, 4, 7, 5, 1, 146, 24, 76, 90, 97, 45, 70, 55, 40, 95, 93, 84, + 28, 69, 161, 44, 82, 117, 73, 51, 110, 93, 60, 4, 5, 2, 99, 6, 4, 253, 210, 1, + 243, 125, 120, 1, 0, 3, 0, 5, 255, 245, 1, 235, 2, 181, 0, 13, 0, 32, 0, 50, + 0, 123, 182, 27, 16, 10, 11, 0, 76, 10, 184, 255, 216, 179, 18, 0, 77, 10, 184, 255, + 240, 179, 17, 0, 77, 5, 184, 255, 240, 64, 53, 18, 0, 77, 38, 47, 42, 47, 132, 33, + 38, 20, 33, 33, 38, 48, 48, 0, 42, 1, 8, 42, 39, 33, 33, 39, 32, 0, 127, 15, + 8, 130, 24, 33, 47, 133, 49, 73, 42, 38, 133, 41, 76, 3, 137, 29, 80, 11, 137, 19, + 81, 14, 15, 77, 0, 63, 51, 63, 237, 63, 237, 63, 237, 50, 63, 237, 50, 1, 47, 237, + 220, 253, 192, 47, 51, 47, 16, 205, 94, 93, 50, 47, 135, 16, 43, 135, 125, 196, 49, 48, + 1, 43, 43, 43, 43, 19, 38, 38, 35, 34, 14, 2, 21, 20, 22, 51, 50, 55, 17, 55, + 17, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 22, 23, 5, 14, 3, 7, 51, + 21, 35, 53, 62, 3, 55, 35, 53, 51, 188, 7, 28, 15, 13, 22, 17, 9, 41, 28, 28, + 14, 72, 17, 58, 39, 36, 53, 35, 17, 21, 34, 44, 23, 20, 33, 8, 1, 47, 9, 27, + 30, 28, 10, 104, 172, 10, 28, 29, 29, 11, 98, 163, 1, 120, 13, 17, 16, 40, 67, 51, + 97, 86, 7, 2, 111, 14, 253, 88, 8, 16, 35, 65, 89, 54, 70, 93, 56, 24, 18, 10, + 45, 24, 76, 90, 97, 45, 70, 55, 40, 95, 93, 84, 28, 69, 255, 255, 0, 46, 255, 243, + 1, 199, 3, 62, 2, 38, 0, 42, 0, 0, 1, 7, 0, 143, 0, 56, 0, 137, 0, 16, + 64, 11, 1, 59, 40, 38, 9, 1, 80, 1, 14, 39, 79, 43, 43, 52, 0, 0, 255, 255, + 0, 40, 255, 88, 1, 173, 2, 181, 2, 38, 0, 74, 0, 0, 1, 6, 0, 143, 41, 0, + 0, 16, 64, 11, 2, 60, 48, 46, 7, 16, 80, 2, 12, 47, 79, 43, 43, 52, 0, 1, + 0, 36, 255, 243, 1, 210, 2, 107, 0, 33, 0, 72, 182, 23, 32, 10, 16, 0, 76, 18, + 184, 255, 232, 64, 33, 10, 16, 0, 76, 32, 28, 115, 29, 33, 2, 115, 26, 26, 29, 12, + 115, 15, 27, 121, 32, 32, 29, 0, 30, 65, 29, 68, 7, 124, 20, 70, 13, 73, 0, 63, + 63, 237, 63, 63, 51, 18, 57, 47, 237, 1, 47, 237, 47, 57, 47, 237, 51, 16, 237, 50, + 49, 48, 43, 43, 19, 51, 17, 20, 30, 2, 51, 50, 62, 2, 53, 17, 51, 17, 20, 14, + 2, 35, 34, 46, 2, 53, 53, 35, 17, 35, 17, 51, 17, 51, 216, 79, 5, 11, 17, 12, + 12, 18, 12, 6, 78, 11, 28, 49, 38, 38, 48, 28, 10, 102, 78, 78, 102, 2, 107, 254, + 89, 43, 55, 31, 11, 11, 31, 55, 43, 1, 12, 254, 244, 50, 77, 54, 28, 28, 54, 77, + 50, 92, 254, 224, 2, 107, 254, 251, 0, 2, 0, 73, 255, 91, 1, 205, 2, 113, 0, 13, + 0, 25, 0, 108, 64, 21, 21, 48, 15, 0, 77, 21, 24, 14, 0, 77, 17, 16, 18, 0, + 77, 17, 8, 17, 0, 77, 7, 184, 255, 224, 179, 16, 0, 77, 7, 184, 255, 240, 179, 10, + 0, 77, 7, 184, 255, 232, 180, 8, 9, 0, 76, 6, 184, 255, 232, 64, 27, 16, 0, 77, + 19, 118, 8, 27, 14, 13, 115, 0, 1, 1, 8, 1, 26, 14, 124, 13, 68, 25, 22, 124, + 2, 5, 65, 1, 0, 47, 63, 51, 237, 50, 63, 237, 1, 16, 214, 94, 93, 237, 50, 16, + 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 23, 35, 17, 54, 54, 51, 50, 22, + 21, 20, 14, 2, 7, 53, 62, 3, 53, 52, 38, 35, 34, 6, 7, 155, 82, 29, 90, 52, + 106, 111, 47, 83, 112, 64, 45, 81, 61, 35, 73, 59, 33, 45, 12, 165, 2, 237, 13, 28, + 116, 113, 78, 121, 95, 72, 29, 78, 25, 55, 74, 98, 68, 73, 82, 13, 5, 255, 255, 0, + 55, 0, 0, 1, 189, 3, 62, 2, 38, 0, 49, 0, 0, 1, 7, 0, 67, 0, 0, 0, + 137, 0, 19, 185, 0, 1, 255, 253, 64, 9, 21, 19, 7, 16, 80, 1, 8, 20, 79, 43, + 43, 52, 0, 0, 0, 255, 255, 0, 71, 0, 0, 1, 176, 2, 181, 2, 38, 0, 81, 0, + 0, 1, 6, 0, 67, 243, 0, 0, 19, 185, 0, 1, 255, 238, 64, 9, 23, 21, 0, 5, + 80, 1, 2, 22, 79, 43, 43, 52, 0, 0, 4, 0, 9, 0, 0, 1, 235, 3, 62, 0, + 25, 0, 32, 0, 44, 0, 48, 0, 153, 185, 0, 25, 255, 216, 64, 79, 8, 17, 0, 76, + 21, 40, 8, 17, 0, 76, 0, 33, 39, 45, 47, 47, 20, 39, 39, 10, 29, 27, 26, 17, + 11, 26, 11, 120, 12, 17, 20, 12, 12, 17, 30, 9, 8, 2, 8, 26, 8, 120, 7, 2, + 20, 7, 2, 26, 12, 7, 50, 12, 49, 45, 48, 47, 46, 46, 23, 36, 42, 9, 10, 121, + 30, 29, 29, 12, 42, 42, 26, 2, 17, 11, 12, 68, 8, 7, 68, 0, 63, 51, 63, 51, + 47, 51, 51, 51, 47, 18, 57, 47, 51, 237, 50, 16, 222, 205, 50, 47, 205, 221, 205, 1, + 16, 198, 16, 222, 17, 57, 135, 43, 135, 125, 196, 16, 196, 196, 135, 24, 16, 43, 135, 125, + 196, 16, 14, 196, 5, 196, 196, 1, 51, 24, 47, 205, 50, 47, 205, 16, 222, 205, 49, 48, + 43, 43, 1, 20, 7, 30, 3, 23, 35, 39, 35, 7, 35, 62, 3, 55, 38, 38, 53, 52, + 54, 51, 50, 22, 7, 6, 6, 7, 51, 38, 38, 55, 52, 38, 35, 34, 6, 21, 20, 22, + 51, 50, 54, 55, 7, 39, 55, 1, 78, 23, 24, 49, 48, 42, 17, 87, 37, 238, 36, 84, + 16, 43, 49, 50, 24, 11, 12, 48, 35, 33, 50, 85, 23, 50, 28, 200, 26, 50, 22, 25, + 18, 18, 25, 25, 18, 18, 25, 41, 140, 19, 134, 2, 110, 35, 23, 57, 144, 152, 149, 62, + 162, 162, 62, 150, 152, 142, 56, 11, 30, 19, 38, 44, 44, 123, 63, 149, 95, 94, 153, 145, + 21, 23, 23, 21, 21, 24, 24, 164, 44, 49, 60, 255, 255, 0, 58, 255, 245, 1, 176, 3, + 45, 2, 38, 0, 68, 0, 0, 1, 6, 2, 166, 0, 0, 0, 15, 64, 9, 4, 3, 2, + 5, 58, 49, 28, 19, 80, 43, 52, 52, 52, 0, 255, 255, 0, 27, 0, 0, 1, 226, 3, + 62, 2, 38, 0, 161, 0, 0, 1, 7, 0, 143, 0, 101, 0, 137, 0, 16, 64, 11, 2, + 100, 25, 23, 4, 16, 80, 2, 7, 24, 79, 43, 43, 52, 0, 0, 255, 255, 0, 31, 255, + 245, 1, 222, 2, 181, 2, 38, 0, 193, 0, 0, 1, 6, 0, 143, 34, 0, 0, 16, 64, + 11, 3, 33, 78, 76, 33, 7, 80, 3, 0, 77, 79, 43, 43, 52, 255, 255, 0, 29, 255, + 223, 1, 216, 3, 62, 2, 38, 0, 179, 0, 0, 1, 7, 0, 143, 0, 21, 0, 137, 0, + 16, 64, 11, 3, 24, 48, 46, 0, 12, 80, 3, 8, 47, 79, 43, 43, 52, 0, 0, 255, + 255, 0, 40, 255, 224, 1, 204, 2, 181, 2, 38, 0, 211, 0, 0, 1, 6, 0, 143, 23, + 0, 0, 16, 64, 11, 3, 27, 49, 47, 3, 16, 80, 3, 12, 48, 79, 43, 43, 52, 255, + 255, 0, 9, 0, 0, 1, 235, 3, 62, 2, 38, 0, 36, 0, 0, 1, 7, 2, 165, 0, + 0, 0, 137, 0, 23, 64, 16, 3, 2, 0, 30, 24, 4, 15, 80, 3, 9, 29, 79, 2, + 9, 25, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, + 181, 2, 38, 0, 68, 0, 0, 1, 6, 2, 165, 0, 0, 0, 23, 64, 16, 3, 2, 5, + 56, 50, 28, 19, 80, 3, 15, 55, 79, 2, 15, 51, 79, 43, 43, 43, 52, 52, 0, 255, + 255, 0, 9, 0, 0, 1, 235, 3, 40, 2, 38, 0, 36, 0, 0, 1, 7, 2, 164, 0, + 0, 0, 139, 0, 16, 64, 11, 2, 0, 41, 27, 4, 15, 80, 2, 9, 28, 79, 43, 43, + 52, 0, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, 157, 2, 38, 0, 68, 0, 0, 1, + 6, 2, 164, 0, 0, 0, 16, 64, 11, 2, 5, 67, 53, 28, 19, 80, 2, 15, 54, 79, + 43, 43, 52, 255, 255, 0, 91, 0, 0, 1, 204, 3, 62, 2, 38, 0, 40, 0, 0, 1, + 7, 2, 165, 0, 0, 0, 137, 0, 26, 177, 2, 1, 184, 255, 231, 64, 13, 19, 13, 0, + 10, 80, 2, 1, 18, 79, 1, 1, 14, 79, 43, 43, 43, 52, 52, 255, 255, 0, 40, 255, + 245, 1, 199, 2, 181, 2, 38, 0, 72, 0, 0, 1, 6, 2, 165, 0, 0, 0, 23, 64, + 16, 3, 2, 2, 41, 35, 19, 2, 80, 3, 0, 40, 79, 2, 0, 36, 79, 43, 43, 43, + 52, 52, 0, 255, 255, 0, 91, 0, 0, 1, 204, 3, 40, 2, 38, 0, 40, 0, 0, 1, + 7, 2, 164, 0, 27, 0, 139, 0, 16, 64, 11, 1, 1, 30, 16, 0, 10, 80, 1, 1, + 17, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, 255, 245, 1, 199, 2, 157, 2, 38, 0, + 72, 0, 0, 1, 6, 2, 164, 18, 0, 0, 16, 64, 11, 2, 20, 52, 38, 19, 2, 80, + 2, 0, 39, 79, 43, 43, 52, 255, 255, 0, 83, 0, 0, 1, 155, 3, 62, 2, 38, 0, + 44, 0, 0, 1, 7, 2, 165, 255, 239, 0, 137, 0, 26, 177, 2, 1, 184, 255, 239, 64, + 13, 19, 13, 4, 2, 80, 2, 9, 18, 79, 1, 9, 14, 79, 43, 43, 43, 52, 52, 255, + 255, 0, 47, 255, 245, 1, 194, 2, 181, 2, 38, 1, 12, 0, 0, 1, 6, 2, 165, 203, + 0, 0, 26, 177, 2, 1, 184, 255, 201, 64, 13, 29, 23, 1, 11, 80, 2, 2, 28, 79, + 1, 2, 24, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, + 40, 2, 38, 0, 44, 0, 0, 1, 7, 2, 164, 0, 0, 0, 139, 0, 16, 64, 11, 1, + 0, 30, 16, 4, 2, 80, 1, 9, 17, 79, 43, 43, 52, 0, 0, 255, 255, 0, 54, 255, + 245, 1, 194, 2, 157, 2, 38, 1, 12, 0, 0, 1, 6, 2, 164, 221, 0, 0, 19, 185, + 0, 1, 255, 219, 64, 9, 40, 26, 1, 11, 80, 1, 2, 27, 79, 43, 43, 52, 0, 255, + 255, 0, 29, 255, 243, 1, 216, 3, 62, 2, 38, 0, 50, 0, 0, 1, 7, 2, 165, 255, + 239, 0, 137, 0, 26, 177, 3, 2, 184, 255, 239, 64, 13, 39, 33, 0, 9, 80, 3, 4, + 38, 79, 2, 4, 34, 79, 43, 43, 43, 52, 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, + 181, 2, 38, 0, 82, 0, 0, 1, 6, 2, 165, 239, 0, 0, 26, 177, 3, 2, 184, 255, + 239, 64, 13, 39, 33, 9, 0, 80, 3, 14, 38, 79, 2, 14, 34, 79, 43, 43, 43, 52, + 52, 0, 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 40, 2, 38, 0, 50, 0, 0, 1, + 7, 2, 164, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 50, 36, 0, 9, 80, 2, 4, + 37, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 157, 2, 38, 0, + 82, 0, 0, 1, 6, 2, 164, 0, 0, 0, 16, 64, 11, 2, 0, 50, 36, 9, 0, 80, + 2, 14, 37, 79, 43, 43, 52, 255, 255, 0, 55, 0, 0, 1, 207, 3, 62, 2, 38, 0, + 53, 0, 0, 1, 7, 2, 165, 255, 230, 0, 137, 0, 26, 177, 3, 2, 184, 255, 221, 64, + 13, 49, 43, 18, 8, 80, 3, 23, 48, 79, 2, 23, 44, 79, 43, 43, 43, 52, 52, 255, + 255, 0, 83, 0, 0, 1, 182, 2, 181, 2, 38, 0, 85, 0, 0, 1, 6, 2, 165, 239, + 0, 0, 26, 177, 2, 1, 184, 255, 217, 64, 13, 21, 15, 0, 6, 80, 2, 2, 20, 79, + 1, 2, 16, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 55, 0, 0, 1, 207, 3, + 40, 2, 38, 0, 53, 0, 0, 1, 7, 2, 164, 255, 230, 0, 139, 0, 19, 185, 0, 2, + 255, 221, 64, 9, 60, 46, 18, 8, 80, 2, 23, 47, 79, 43, 43, 52, 0, 0, 0, 255, + 255, 0, 107, 0, 0, 1, 182, 2, 157, 2, 38, 0, 85, 0, 0, 1, 6, 2, 164, 27, + 0, 0, 16, 64, 11, 1, 4, 32, 18, 0, 6, 80, 1, 2, 19, 79, 43, 43, 52, 255, + 255, 0, 48, 255, 243, 1, 196, 3, 62, 2, 38, 0, 56, 0, 0, 1, 7, 2, 165, 255, + 248, 0, 137, 0, 26, 177, 2, 1, 184, 255, 248, 64, 13, 33, 27, 4, 20, 80, 2, 6, + 32, 79, 1, 6, 28, 79, 43, 43, 43, 52, 52, 255, 255, 0, 68, 255, 246, 1, 173, 2, + 181, 2, 38, 0, 88, 0, 0, 1, 6, 2, 165, 239, 0, 0, 26, 177, 2, 1, 184, 255, + 241, 64, 13, 29, 23, 7, 0, 80, 2, 9, 28, 79, 1, 9, 24, 79, 43, 43, 43, 52, + 52, 0, 0, 255, 255, 0, 48, 255, 243, 1, 196, 3, 40, 2, 38, 0, 56, 0, 0, 1, + 7, 2, 164, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 44, 30, 4, 20, 80, 1, 6, + 31, 79, 43, 43, 52, 0, 0, 255, 255, 0, 68, 255, 246, 1, 173, 2, 157, 2, 38, 0, + 88, 0, 0, 1, 6, 2, 164, 0, 0, 0, 16, 64, 11, 1, 1, 40, 26, 7, 0, 80, + 1, 9, 27, 79, 43, 43, 52, 0, 1, 0, 30, 255, 91, 1, 213, 2, 120, 0, 50, 0, + 191, 185, 0, 41, 255, 208, 179, 11, 0, 77, 40, 184, 255, 216, 179, 12, 0, 77, 38, 184, + 255, 224, 180, 14, 15, 0, 76, 37, 184, 255, 232, 179, 17, 0, 77, 37, 184, 255, 224, 179, + 16, 0, 77, 35, 184, 255, 240, 180, 14, 15, 0, 76, 31, 184, 255, 224, 64, 88, 8, 0, + 77, 26, 32, 18, 0, 77, 26, 40, 17, 0, 77, 26, 24, 16, 0, 77, 26, 32, 15, 0, + 77, 20, 40, 15, 0, 77, 20, 24, 14, 0, 77, 16, 32, 13, 0, 77, 16, 24, 12, 0, + 77, 16, 16, 11, 0, 77, 15, 24, 16, 0, 77, 7, 48, 13, 0, 77, 36, 18, 118, 33, + 33, 5, 118, 39, 52, 47, 47, 12, 12, 25, 51, 36, 11, 121, 12, 12, 28, 0, 124, 44, + 24, 24, 21, 124, 28, 69, 0, 63, 237, 50, 47, 47, 237, 17, 57, 47, 237, 57, 1, 16, + 198, 50, 47, 50, 47, 16, 222, 237, 51, 47, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 23, 50, 62, 2, 53, 52, 46, 2, + 35, 35, 53, 51, 50, 62, 2, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, + 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, 35, 34, 34, 39, 55, 22, 22, 87, 61, + 109, 81, 47, 42, 66, 81, 39, 34, 27, 46, 78, 56, 31, 73, 77, 53, 81, 20, 27, 23, + 99, 60, 50, 85, 61, 35, 61, 57, 68, 76, 63, 106, 137, 74, 10, 33, 10, 5, 8, 25, + 90, 15, 39, 66, 51, 45, 58, 34, 14, 68, 17, 33, 51, 34, 59, 67, 23, 11, 68, 14, + 23, 22, 48, 74, 52, 49, 90, 24, 20, 102, 64, 72, 96, 59, 25, 2, 75, 1, 1, 0, + 1, 0, 57, 255, 91, 1, 177, 1, 220, 0, 49, 0, 188, 64, 36, 34, 32, 16, 0, 77, + 34, 40, 15, 0, 77, 34, 16, 14, 0, 77, 26, 48, 16, 0, 77, 26, 32, 15, 0, 77, + 21, 24, 16, 0, 77, 21, 32, 12, 0, 77, 13, 184, 255, 224, 180, 14, 15, 0, 76, 13, + 184, 255, 232, 179, 13, 0, 77, 10, 184, 255, 216, 180, 17, 18, 0, 76, 6, 184, 255, 224, + 179, 18, 0, 77, 6, 184, 255, 232, 179, 17, 0, 77, 3, 184, 255, 216, 179, 18, 0, 77, + 3, 184, 255, 224, 179, 17, 0, 77, 3, 184, 255, 232, 180, 8, 10, 0, 76, 2, 184, 255, + 216, 64, 34, 17, 0, 77, 8, 36, 130, 5, 5, 24, 130, 11, 51, 31, 31, 17, 17, 45, + 50, 8, 30, 133, 31, 31, 0, 17, 137, 16, 75, 44, 44, 39, 136, 0, 80, 0, 63, 237, + 50, 47, 63, 237, 17, 57, 47, 237, 57, 1, 16, 198, 50, 47, 50, 47, 16, 222, 237, 51, + 47, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 19, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, 35, 39, 62, 5, 53, + 52, 46, 2, 35, 35, 53, 50, 62, 2, 53, 52, 38, 35, 34, 14, 2, 7, 39, 62, 3, + 209, 43, 75, 55, 31, 55, 44, 58, 61, 67, 107, 132, 64, 6, 25, 63, 65, 62, 48, 29, + 42, 61, 67, 25, 11, 36, 67, 52, 31, 63, 57, 23, 44, 37, 27, 6, 15, 8, 32, 42, + 47, 1, 220, 18, 38, 60, 43, 41, 71, 18, 13, 78, 48, 62, 82, 49, 20, 69, 1, 5, + 11, 19, 31, 44, 30, 33, 40, 21, 6, 69, 10, 24, 39, 29, 43, 47, 6, 8, 9, 3, + 72, 3, 8, 7, 6, 255, 255, 0, 45, 0, 0, 1, 199, 3, 61, 2, 38, 0, 43, 0, + 0, 1, 7, 1, 95, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 12, 16, 7, 1, 80, + 1, 0, 17, 79, 43, 43, 52, 0, 0, 0, 2, 0, 44, 0, 0, 1, 176, 3, 62, 0, + 21, 0, 27, 0, 128, 64, 21, 16, 32, 18, 0, 77, 16, 40, 17, 0, 77, 16, 24, 16, + 0, 77, 16, 16, 15, 0, 77, 9, 184, 255, 216, 179, 8, 0, 77, 8, 184, 255, 232, 179, + 10, 0, 77, 8, 184, 255, 216, 64, 41, 9, 0, 77, 13, 127, 12, 29, 64, 26, 24, 22, + 96, 27, 27, 3, 21, 127, 0, 0, 1, 8, 0, 28, 17, 136, 6, 80, 26, 22, 64, 25, + 23, 128, 24, 27, 1, 2, 77, 13, 0, 74, 0, 63, 50, 63, 51, 222, 205, 26, 221, 50, + 26, 205, 50, 63, 237, 1, 16, 214, 94, 93, 237, 50, 50, 25, 47, 26, 205, 51, 205, 26, + 24, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 51, 17, 55, 21, 54, 54, 51, + 50, 30, 2, 21, 17, 35, 53, 52, 38, 35, 34, 6, 7, 17, 3, 55, 23, 55, 23, 7, + 71, 83, 20, 50, 24, 53, 71, 42, 18, 82, 48, 62, 26, 49, 11, 110, 26, 84, 84, 26, + 110, 2, 137, 14, 206, 8, 9, 31, 56, 78, 47, 254, 250, 244, 86, 71, 11, 5, 254, 127, + 3, 22, 40, 54, 54, 40, 85, 0, 1, 0, 45, 255, 91, 1, 199, 2, 120, 0, 19, 0, + 59, 185, 0, 17, 255, 224, 64, 34, 8, 12, 0, 76, 4, 40, 16, 0, 77, 4, 24, 15, + 0, 77, 4, 16, 14, 0, 77, 2, 115, 19, 21, 8, 115, 11, 20, 5, 124, 14, 69, 10, + 68, 1, 0, 47, 63, 63, 237, 1, 16, 214, 237, 16, 222, 237, 49, 48, 43, 43, 43, 43, + 5, 35, 17, 52, 38, 35, 34, 6, 7, 17, 35, 17, 54, 54, 51, 50, 30, 2, 21, 1, + 199, 82, 63, 72, 29, 64, 18, 82, 33, 107, 63, 59, 80, 48, 20, 165, 2, 16, 102, 96, + 9, 5, 253, 221, 2, 91, 11, 18, 37, 65, 91, 54, 0, 3, 0, 25, 255, 88, 1, 244, + 2, 181, 0, 14, 0, 53, 0, 66, 0, 167, 182, 47, 32, 10, 15, 0, 76, 42, 184, 255, + 224, 180, 10, 15, 0, 76, 38, 184, 255, 224, 64, 33, 10, 15, 0, 76, 24, 40, 17, 18, + 0, 76, 24, 32, 8, 10, 0, 76, 19, 40, 18, 0, 77, 19, 24, 17, 0, 77, 19, 32, + 8, 10, 0, 76, 10, 184, 255, 232, 179, 16, 0, 77, 10, 184, 255, 224, 64, 48, 15, 0, + 77, 49, 50, 50, 57, 32, 127, 48, 29, 15, 14, 14, 64, 8, 130, 21, 67, 64, 40, 32, + 51, 35, 50, 50, 57, 48, 54, 49, 49, 61, 45, 75, 30, 31, 77, 3, 133, 26, 80, 54, + 35, 35, 11, 133, 18, 81, 0, 63, 237, 50, 47, 205, 63, 237, 63, 51, 63, 205, 51, 47, + 18, 57, 57, 51, 17, 18, 57, 57, 1, 47, 205, 16, 214, 237, 18, 57, 47, 51, 51, 51, + 237, 50, 51, 47, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 38, 38, + 35, 34, 14, 2, 21, 20, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 38, 53, 52, 62, + 2, 51, 50, 22, 23, 53, 55, 17, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, + 38, 39, 7, 39, 55, 38, 52, 55, 34, 6, 7, 21, 20, 22, 51, 50, 54, 53, 52, 38, + 240, 10, 36, 22, 18, 24, 16, 7, 43, 37, 20, 25, 8, 1, 12, 29, 14, 76, 85, 17, + 35, 51, 34, 26, 41, 11, 82, 17, 34, 21, 24, 39, 28, 15, 14, 29, 46, 31, 47, 59, + 16, 67, 43, 94, 1, 140, 19, 26, 14, 32, 26, 26, 26, 25, 1, 112, 13, 23, 26, 47, + 63, 36, 81, 88, 10, 4, 68, 8, 9, 127, 113, 54, 89, 64, 36, 21, 10, 235, 14, 253, + 139, 13, 13, 21, 34, 47, 25, 22, 46, 37, 23, 41, 37, 81, 38, 112, 9, 10, 27, 20, + 16, 22, 32, 40, 39, 26, 27, 38, 0, 2, 0, 36, 255, 252, 1, 208, 2, 107, 0, 47, + 0, 65, 0, 131, 181, 58, 24, 16, 0, 77, 55, 184, 255, 232, 64, 20, 16, 0, 77, 22, + 16, 16, 0, 77, 18, 32, 8, 0, 77, 17, 32, 17, 18, 0, 76, 13, 184, 255, 216, 179, + 18, 0, 77, 13, 184, 255, 208, 179, 17, 0, 77, 12, 184, 255, 224, 179, 8, 0, 77, 8, + 184, 255, 240, 64, 34, 16, 0, 77, 5, 41, 118, 0, 0, 61, 118, 10, 67, 25, 35, 118, + 28, 28, 53, 118, 20, 66, 25, 5, 48, 124, 38, 38, 44, 31, 65, 56, 124, 15, 66, 0, + 63, 237, 63, 51, 57, 47, 237, 57, 57, 1, 16, 214, 237, 51, 47, 237, 50, 16, 222, 237, + 51, 47, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 14, 2, 7, + 30, 3, 21, 20, 14, 2, 35, 34, 46, 2, 53, 52, 62, 2, 55, 38, 38, 53, 52, 54, + 55, 51, 6, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 39, 51, 22, 22, 7, 34, 14, + 2, 21, 20, 22, 51, 50, 62, 2, 53, 52, 46, 2, 1, 167, 9, 18, 28, 19, 23, 42, + 31, 19, 24, 52, 80, 57, 57, 82, 52, 24, 18, 31, 42, 23, 38, 35, 7, 8, 82, 5, + 9, 43, 47, 47, 43, 9, 5, 82, 8, 7, 173, 27, 48, 36, 21, 75, 57, 27, 48, 36, + 21, 21, 36, 48, 1, 225, 22, 42, 38, 29, 9, 9, 27, 38, 51, 32, 41, 68, 51, 28, + 28, 50, 69, 41, 32, 51, 38, 27, 9, 18, 79, 43, 43, 60, 35, 32, 61, 32, 60, 63, + 63, 60, 32, 61, 32, 35, 60, 225, 13, 28, 43, 31, 63, 54, 13, 28, 44, 32, 31, 43, + 28, 13, 0, 2, 0, 33, 255, 245, 1, 212, 2, 181, 0, 11, 0, 53, 0, 156, 64, 21, + 45, 24, 17, 0, 77, 45, 16, 16, 0, 77, 45, 24, 15, 0, 77, 45, 32, 14, 0, 77, + 43, 184, 255, 232, 180, 16, 17, 0, 76, 43, 184, 255, 240, 64, 10, 14, 15, 0, 76, 26, + 24, 8, 0, 77, 20, 184, 255, 232, 64, 10, 8, 0, 77, 10, 24, 13, 16, 0, 76, 8, + 184, 255, 224, 180, 13, 16, 0, 76, 4, 184, 255, 232, 64, 41, 13, 16, 0, 76, 2, 24, + 13, 16, 0, 76, 15, 47, 130, 12, 12, 0, 130, 18, 55, 31, 41, 130, 34, 34, 6, 130, + 28, 54, 31, 15, 3, 136, 44, 44, 50, 37, 77, 9, 136, 23, 81, 0, 63, 237, 63, 51, + 57, 47, 237, 57, 57, 1, 16, 214, 237, 51, 47, 237, 50, 16, 222, 237, 51, 47, 237, 50, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 52, 38, 35, 34, 6, + 21, 20, 22, 51, 50, 54, 19, 20, 6, 7, 22, 22, 21, 20, 14, 2, 35, 34, 46, 2, + 53, 52, 54, 55, 38, 38, 53, 52, 54, 55, 51, 6, 6, 21, 20, 22, 51, 50, 54, 53, + 52, 38, 39, 51, 22, 22, 1, 130, 74, 61, 61, 75, 75, 61, 61, 74, 52, 43, 35, 45, + 63, 32, 58, 80, 47, 48, 80, 58, 32, 63, 45, 35, 43, 9, 5, 80, 5, 6, 53, 52, + 51, 53, 6, 5, 80, 5, 9, 210, 69, 80, 80, 69, 69, 80, 80, 1, 149, 51, 79, 15, + 22, 100, 69, 52, 82, 57, 30, 31, 57, 82, 51, 69, 100, 22, 15, 79, 51, 38, 71, 38, + 32, 62, 32, 72, 65, 65, 72, 32, 62, 32, 38, 71, 0, 1, 0, 54, 255, 89, 1, 199, + 2, 107, 0, 33, 0, 64, 64, 33, 15, 23, 115, 6, 6, 5, 30, 25, 30, 120, 0, 5, + 20, 0, 5, 0, 35, 31, 31, 25, 34, 0, 30, 121, 33, 65, 19, 12, 25, 5, 121, 24, + 68, 0, 63, 237, 50, 220, 205, 63, 237, 50, 1, 16, 198, 50, 47, 16, 222, 135, 43, 135, + 125, 196, 1, 51, 24, 47, 253, 204, 49, 48, 1, 14, 3, 7, 33, 21, 20, 14, 2, 35, + 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 53, 33, 53, 62, 3, 55, 33, 53, 33, 1, + 191, 32, 79, 82, 77, 29, 1, 51, 11, 28, 52, 40, 13, 32, 10, 8, 8, 22, 8, 33, + 27, 254, 191, 31, 75, 78, 78, 36, 254, 229, 1, 122, 2, 43, 44, 121, 132, 133, 55, 70, + 41, 63, 42, 21, 5, 2, 65, 2, 2, 43, 41, 15, 54, 63, 133, 128, 120, 51, 70, 0, + 1, 0, 73, 255, 89, 1, 171, 1, 208, 0, 33, 0, 64, 64, 33, 15, 23, 127, 6, 6, + 5, 30, 25, 30, 129, 0, 5, 20, 0, 5, 0, 35, 31, 31, 25, 34, 0, 30, 133, 33, + 73, 19, 12, 25, 5, 133, 24, 76, 0, 63, 237, 50, 220, 205, 63, 237, 50, 1, 16, 198, + 50, 47, 16, 222, 135, 43, 135, 125, 196, 1, 51, 24, 47, 253, 204, 49, 48, 1, 14, 3, + 7, 51, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 53, 33, 53, + 62, 3, 55, 35, 53, 33, 1, 164, 18, 62, 71, 70, 27, 255, 9, 26, 48, 39, 13, 32, + 10, 7, 5, 25, 8, 34, 23, 254, 233, 21, 63, 68, 65, 24, 228, 1, 78, 1, 146, 21, + 75, 91, 100, 45, 70, 39, 61, 44, 23, 5, 2, 61, 2, 3, 45, 40, 19, 55, 40, 95, + 93, 84, 28, 69, 255, 255, 0, 9, 0, 0, 1, 235, 3, 49, 2, 38, 0, 36, 0, 0, + 1, 7, 1, 98, 0, 2, 0, 154, 0, 16, 64, 11, 2, 2, 25, 31, 4, 15, 80, 2, + 9, 23, 79, 43, 43, 52, 0, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, 151, 2, 38, + 0, 68, 0, 0, 1, 6, 1, 98, 0, 0, 0, 16, 64, 11, 2, 5, 51, 57, 28, 19, + 80, 2, 15, 49, 79, 43, 43, 52, 0, 1, 0, 91, 255, 87, 1, 204, 2, 107, 0, 38, + 0, 91, 177, 17, 3, 184, 255, 192, 64, 43, 11, 14, 72, 3, 36, 0, 23, 11, 20, 20, + 24, 31, 31, 27, 27, 34, 40, 29, 33, 115, 24, 39, 32, 121, 29, 29, 33, 28, 121, 25, + 65, 33, 121, 24, 0, 20, 20, 24, 15, 8, 35, 24, 68, 0, 63, 51, 220, 205, 18, 57, + 47, 205, 16, 237, 63, 237, 18, 57, 47, 237, 1, 16, 214, 237, 50, 16, 206, 50, 47, 50, + 47, 17, 57, 47, 204, 51, 221, 50, 213, 43, 205, 49, 48, 5, 22, 22, 21, 20, 14, 2, + 35, 34, 38, 39, 55, 22, 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 35, 17, 33, 21, + 33, 21, 51, 21, 35, 21, 33, 21, 35, 6, 6, 1, 39, 26, 23, 9, 21, 35, 26, 23, + 40, 11, 10, 11, 24, 15, 32, 37, 7, 5, 15, 7, 163, 1, 91, 254, 247, 232, 232, 1, + 31, 148, 5, 9, 33, 12, 30, 29, 10, 23, 19, 13, 7, 5, 51, 4, 5, 20, 20, 11, + 2, 13, 35, 14, 2, 107, 70, 190, 70, 219, 70, 8, 18, 0, 2, 0, 40, 255, 87, 1, + 199, 1, 219, 0, 48, 0, 57, 0, 218, 185, 0, 54, 255, 240, 179, 14, 0, 77, 40, 184, + 255, 224, 180, 13, 14, 0, 76, 40, 184, 255, 232, 179, 12, 0, 77, 35, 184, 255, 240, 179, + 20, 0, 77, 35, 184, 255, 248, 179, 19, 0, 77, 35, 184, 255, 216, 179, 16, 0, 77, 35, + 184, 255, 240, 179, 15, 0, 77, 35, 184, 255, 240, 179, 9, 0, 77, 34, 184, 255, 224, 179, + 18, 0, 77, 34, 184, 255, 216, 179, 17, 0, 77, 34, 184, 255, 232, 179, 16, 0, 77, 34, + 184, 255, 216, 64, 15, 15, 0, 77, 31, 16, 16, 0, 77, 31, 24, 15, 0, 77, 17, 3, + 184, 255, 192, 64, 46, 11, 14, 72, 3, 48, 0, 23, 11, 20, 20, 28, 49, 130, 37, 45, + 45, 37, 59, 57, 38, 130, 28, 58, 0, 20, 20, 48, 15, 8, 58, 38, 134, 57, 57, 33, + 44, 44, 41, 136, 23, 48, 81, 52, 136, 33, 80, 0, 63, 237, 63, 51, 237, 50, 47, 17, + 57, 47, 237, 16, 220, 205, 18, 57, 47, 205, 1, 16, 214, 237, 50, 16, 206, 50, 47, 16, + 237, 18, 57, 47, 204, 51, 221, 50, 213, 43, 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 5, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, + 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 46, 3, 53, 52, 62, 2, 51, 50, 22, 21, + 21, 33, 22, 22, 51, 50, 54, 55, 23, 6, 6, 7, 19, 52, 38, 35, 34, 14, 2, 7, + 1, 27, 26, 23, 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 13, + 6, 50, 74, 49, 25, 38, 62, 78, 41, 94, 102, 254, 180, 5, 85, 77, 44, 62, 16, 11, + 14, 70, 45, 77, 62, 51, 29, 47, 34, 20, 3, 33, 12, 30, 29, 10, 23, 19, 13, 7, + 5, 51, 4, 5, 20, 20, 11, 2, 11, 29, 14, 6, 41, 63, 82, 47, 62, 92, 60, 30, + 117, 119, 29, 72, 75, 14, 8, 70, 8, 16, 2, 1, 32, 59, 69, 22, 36, 46, 24, 0, + 5, 0, 30, 255, 243, 1, 217, 3, 61, 0, 11, 0, 23, 0, 27, 0, 47, 0, 57, 0, + 202, 185, 0, 56, 255, 240, 64, 20, 14, 0, 77, 54, 16, 13, 14, 0, 76, 52, 24, 14, + 0, 77, 52, 16, 13, 0, 77, 50, 184, 255, 232, 179, 14, 0, 77, 50, 184, 255, 240, 64, + 19, 13, 0, 77, 46, 24, 8, 0, 77, 45, 24, 16, 0, 77, 45, 16, 15, 0, 77, 41, + 184, 255, 232, 180, 15, 16, 0, 76, 40, 184, 255, 232, 179, 8, 0, 77, 36, 184, 255, 232, + 179, 8, 0, 77, 35, 184, 255, 232, 179, 16, 0, 77, 35, 184, 255, 240, 64, 56, 15, 0, + 77, 31, 24, 16, 0, 77, 31, 32, 15, 0, 77, 30, 16, 8, 0, 77, 26, 26, 21, 15, + 9, 27, 27, 3, 9, 9, 28, 53, 118, 38, 59, 48, 118, 28, 64, 11, 16, 72, 28, 58, + 51, 124, 43, 70, 24, 27, 18, 6, 12, 0, 55, 124, 33, 65, 0, 63, 237, 222, 50, 221, + 50, 222, 205, 63, 237, 1, 16, 214, 43, 237, 16, 222, 237, 18, 57, 47, 205, 50, 47, 16, + 222, 205, 50, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, 52, + 54, 51, 50, 22, 21, 20, 6, 39, 51, 21, 35, 3, 52, 62, 2, 51, 50, 30, 2, 21, + 20, 14, 2, 35, 34, 46, 2, 55, 20, 22, 51, 50, 53, 52, 35, 34, 6, 160, 21, 27, + 27, 21, 21, 27, 27, 159, 20, 28, 28, 20, 20, 28, 28, 223, 226, 226, 107, 32, 58, 81, + 50, 49, 82, 58, 33, 33, 58, 82, 49, 50, 81, 58, 32, 84, 66, 69, 140, 140, 69, 66, + 2, 135, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 182, 57, + 254, 40, 83, 118, 76, 36, 36, 76, 118, 83, 83, 119, 76, 35, 35, 76, 119, 83, 122, 120, + 242, 242, 120, 255, 255, 0, 40, 255, 245, 1, 204, 2, 204, 2, 38, 0, 82, 0, 0, 1, + 6, 2, 167, 0, 0, 0, 30, 64, 21, 4, 3, 2, 0, 34, 52, 9, 0, 80, 4, 14, + 58, 79, 3, 14, 44, 79, 2, 14, 32, 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 0, + 4, 0, 30, 255, 243, 1, 217, 3, 61, 0, 29, 0, 33, 0, 53, 0, 63, 0, 255, 185, + 0, 62, 255, 240, 64, 20, 14, 0, 77, 60, 24, 13, 14, 0, 76, 58, 24, 14, 0, 77, + 58, 16, 13, 0, 77, 56, 184, 255, 232, 179, 14, 0, 77, 56, 184, 255, 240, 64, 15, 13, + 0, 77, 52, 24, 8, 0, 77, 51, 32, 15, 16, 0, 76, 47, 184, 255, 240, 179, 16, 0, + 77, 47, 184, 255, 232, 179, 15, 0, 77, 46, 184, 255, 232, 179, 8, 0, 77, 42, 184, 255, + 232, 179, 8, 0, 77, 41, 184, 255, 232, 64, 28, 15, 16, 0, 76, 37, 24, 15, 16, 0, + 76, 36, 24, 8, 0, 77, 18, 16, 15, 16, 0, 76, 18, 24, 13, 14, 0, 76, 3, 184, + 255, 224, 179, 16, 0, 77, 3, 184, 255, 240, 179, 15, 0, 77, 3, 184, 255, 232, 179, 14, + 0, 77, 3, 184, 255, 224, 64, 47, 13, 0, 77, 32, 32, 29, 0, 15, 33, 33, 14, 15, + 15, 34, 59, 118, 44, 65, 54, 118, 34, 64, 11, 16, 72, 34, 64, 57, 124, 49, 70, 30, + 33, 20, 29, 29, 20, 11, 26, 5, 14, 14, 5, 61, 124, 39, 65, 0, 63, 237, 206, 50, + 47, 16, 205, 220, 205, 50, 47, 16, 222, 205, 63, 237, 1, 16, 214, 43, 237, 16, 222, 237, + 18, 57, 47, 205, 51, 47, 16, 220, 205, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 14, 3, 35, 34, 38, + 39, 38, 38, 35, 34, 6, 7, 39, 62, 3, 51, 50, 22, 23, 22, 22, 51, 50, 54, 55, + 39, 51, 21, 35, 3, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, + 55, 20, 22, 51, 50, 53, 52, 35, 34, 6, 1, 132, 3, 16, 22, 30, 17, 16, 30, 13, + 15, 18, 11, 15, 23, 6, 40, 3, 15, 22, 28, 18, 17, 29, 13, 16, 17, 11, 15, 24, + 6, 211, 227, 227, 106, 32, 58, 81, 50, 49, 82, 58, 33, 33, 58, 82, 49, 50, 81, 58, + 32, 84, 66, 69, 140, 140, 69, 66, 2, 215, 11, 26, 22, 16, 10, 8, 7, 7, 25, 13, + 18, 11, 26, 23, 16, 10, 8, 8, 6, 24, 13, 84, 57, 254, 40, 83, 118, 76, 36, 36, + 76, 118, 83, 83, 119, 76, 35, 35, 76, 119, 83, 122, 120, 242, 242, 120, 255, 255, 0, 40, + 255, 245, 1, 204, 2, 204, 2, 38, 0, 82, 0, 0, 1, 6, 2, 172, 0, 0, 0, 23, + 64, 16, 3, 2, 0, 47, 32, 9, 0, 80, 3, 14, 64, 79, 2, 14, 46, 79, 43, 43, + 43, 52, 52, 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 34, 2, 38, 0, 50, 0, 0, + 1, 7, 1, 98, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 34, 40, 0, 9, 80, 2, + 4, 32, 79, 43, 43, 52, 0, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 151, 2, 38, + 0, 82, 0, 0, 1, 6, 1, 98, 0, 0, 0, 16, 64, 11, 2, 0, 34, 40, 9, 0, + 80, 2, 14, 32, 79, 43, 43, 52, 0, 4, 0, 30, 255, 243, 1, 217, 3, 61, 0, 11, + 0, 15, 0, 35, 0, 45, 0, 192, 185, 0, 44, 255, 232, 179, 14, 0, 77, 44, 184, 255, + 248, 64, 24, 13, 0, 77, 42, 24, 14, 0, 77, 42, 16, 13, 0, 77, 40, 32, 14, 0, + 77, 40, 16, 13, 0, 77, 38, 184, 255, 232, 179, 14, 0, 77, 38, 184, 255, 248, 64, 15, + 13, 0, 77, 33, 24, 15, 16, 0, 76, 33, 24, 8, 0, 77, 29, 184, 255, 240, 179, 16, + 0, 77, 29, 184, 255, 232, 179, 15, 0, 77, 29, 184, 255, 232, 179, 8, 0, 77, 23, 184, + 255, 232, 180, 15, 16, 0, 76, 23, 184, 255, 224, 64, 45, 8, 0, 77, 19, 24, 15, 16, + 0, 76, 19, 24, 8, 0, 77, 14, 15, 9, 3, 3, 16, 41, 118, 26, 47, 36, 118, 16, + 64, 11, 16, 72, 16, 46, 39, 124, 31, 70, 12, 15, 6, 0, 43, 124, 21, 65, 0, 63, + 237, 222, 221, 222, 205, 63, 237, 1, 16, 214, 43, 237, 16, 222, 237, 18, 57, 47, 205, 214, + 205, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 51, 21, 35, 3, 52, 62, 2, + 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 55, 20, 22, 51, 50, 53, 52, 35, + 34, 6, 250, 21, 28, 28, 21, 21, 28, 28, 134, 226, 226, 107, 32, 58, 81, 50, 49, 82, + 58, 33, 33, 58, 82, 49, 50, 81, 58, 32, 84, 66, 69, 140, 140, 69, 66, 2, 135, 27, + 23, 23, 27, 27, 23, 23, 27, 182, 57, 254, 40, 83, 118, 76, 36, 36, 76, 118, 83, 83, + 119, 76, 35, 35, 76, 119, 83, 122, 120, 242, 242, 120, 255, 255, 0, 40, 255, 245, 1, 204, + 2, 204, 2, 38, 0, 82, 0, 0, 1, 6, 2, 168, 0, 0, 0, 23, 64, 16, 3, 2, + 0, 44, 45, 9, 0, 80, 3, 14, 46, 79, 2, 14, 32, 79, 43, 43, 43, 52, 52, 0, + 255, 255, 0, 13, 0, 0, 1, 232, 3, 6, 2, 38, 0, 60, 0, 0, 1, 7, 0, 138, + 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 17, 18, 4, 12, 80, 1, 4, 19, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 36, 255, 88, 1, 205, 2, 123, 2, 38, 0, 92, 0, 0, + 1, 6, 0, 138, 0, 0, 0, 16, 64, 11, 1, 1, 33, 34, 32, 21, 80, 1, 9, 35, + 79, 43, 43, 52, 0, 2, 0, 54, 255, 88, 1, 179, 2, 176, 0, 25, 0, 38, 0, 95, + 182, 14, 24, 9, 12, 0, 76, 9, 184, 255, 224, 180, 9, 12, 0, 76, 5, 184, 255, 224, + 64, 37, 9, 12, 0, 76, 36, 7, 40, 29, 25, 127, 15, 22, 23, 16, 17, 17, 23, 39, + 22, 133, 25, 77, 18, 15, 29, 29, 33, 0, 2, 26, 33, 12, 17, 16, 16, 12, 75, 0, + 63, 51, 47, 51, 16, 221, 222, 205, 50, 18, 57, 17, 51, 51, 63, 237, 1, 16, 198, 50, + 47, 51, 16, 221, 50, 237, 50, 16, 222, 205, 49, 48, 43, 43, 43, 55, 54, 51, 50, 30, + 2, 21, 20, 14, 2, 35, 34, 38, 39, 7, 39, 55, 38, 52, 53, 17, 35, 53, 51, 19, + 34, 6, 7, 21, 20, 22, 51, 50, 54, 53, 52, 38, 235, 37, 44, 27, 44, 31, 17, 15, + 32, 50, 35, 51, 64, 17, 67, 43, 93, 1, 99, 181, 69, 23, 31, 15, 36, 32, 32, 32, + 31, 64, 26, 21, 34, 47, 25, 22, 46, 37, 23, 41, 37, 81, 38, 112, 8, 13, 8, 2, + 95, 70, 253, 108, 20, 16, 22, 32, 40, 39, 26, 27, 38, 0, 2, 0, 37, 255, 88, 1, + 244, 1, 218, 0, 44, 0, 57, 0, 109, 182, 35, 32, 8, 13, 0, 76, 30, 184, 255, 216, + 180, 8, 13, 0, 76, 26, 184, 255, 216, 180, 8, 13, 0, 76, 17, 184, 255, 216, 64, 40, + 9, 14, 0, 76, 9, 127, 10, 58, 37, 38, 38, 36, 44, 127, 20, 48, 55, 28, 48, 36, + 45, 37, 20, 39, 38, 23, 45, 52, 33, 38, 37, 37, 33, 75, 5, 136, 14, 80, 10, 76, + 0, 63, 63, 237, 63, 51, 47, 51, 16, 221, 222, 205, 17, 57, 57, 17, 18, 57, 57, 1, + 47, 221, 222, 50, 237, 50, 50, 47, 51, 16, 214, 237, 49, 48, 43, 43, 43, 43, 19, 52, + 46, 2, 35, 34, 6, 7, 17, 35, 17, 54, 54, 51, 50, 30, 2, 21, 21, 54, 54, 51, + 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 7, 39, 55, 52, 38, 38, 52, 53, 23, + 34, 6, 7, 21, 20, 22, 51, 50, 54, 53, 52, 38, 240, 7, 17, 27, 19, 15, 30, 5, + 83, 22, 72, 48, 42, 55, 33, 13, 17, 34, 21, 24, 39, 28, 15, 14, 29, 46, 31, 47, + 59, 16, 67, 43, 94, 1, 1, 141, 19, 26, 14, 32, 26, 26, 26, 25, 1, 3, 43, 55, + 32, 12, 8, 2, 254, 121, 1, 195, 8, 15, 24, 48, 71, 47, 220, 13, 13, 21, 34, 47, + 25, 22, 46, 37, 23, 41, 37, 81, 38, 112, 4, 16, 19, 16, 4, 13, 20, 16, 22, 32, + 40, 39, 26, 27, 38, 0, 2, 0, 63, 255, 88, 1, 179, 2, 96, 0, 32, 0, 45, 0, + 121, 182, 15, 32, 8, 13, 0, 76, 10, 184, 255, 224, 180, 8, 13, 0, 76, 6, 184, 255, + 216, 64, 51, 8, 13, 0, 76, 8, 43, 36, 36, 29, 32, 127, 26, 16, 23, 23, 24, 31, + 47, 17, 18, 18, 0, 24, 1, 8, 24, 46, 27, 28, 32, 23, 133, 29, 26, 73, 36, 16, + 33, 17, 0, 19, 18, 3, 33, 40, 13, 18, 17, 17, 13, 75, 0, 63, 51, 47, 51, 16, + 221, 222, 205, 17, 57, 57, 17, 18, 57, 57, 63, 51, 237, 50, 205, 50, 1, 16, 198, 94, + 93, 50, 47, 51, 16, 206, 17, 57, 47, 51, 51, 237, 50, 50, 16, 222, 205, 49, 48, 43, + 43, 43, 55, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 7, 39, 55, + 38, 52, 53, 17, 35, 53, 51, 53, 55, 21, 51, 21, 35, 19, 34, 6, 7, 21, 20, 22, + 51, 50, 54, 53, 52, 38, 243, 18, 32, 23, 27, 44, 31, 17, 15, 32, 50, 35, 51, 56, + 17, 67, 43, 93, 1, 98, 98, 82, 187, 187, 61, 23, 23, 15, 28, 32, 32, 32, 31, 64, + 13, 13, 21, 34, 47, 25, 22, 46, 37, 23, 41, 37, 81, 38, 112, 8, 13, 8, 1, 128, + 69, 130, 14, 144, 69, 254, 145, 20, 16, 22, 32, 40, 39, 26, 27, 38, 0, 3, 0, 27, + 255, 245, 1, 217, 2, 181, 0, 30, 0, 47, 0, 64, 0, 163, 185, 0, 59, 255, 232, 180, + 17, 18, 0, 76, 53, 184, 255, 232, 179, 18, 0, 77, 53, 184, 255, 240, 64, 29, 17, 0, + 77, 24, 16, 12, 0, 77, 24, 24, 11, 0, 77, 24, 32, 10, 0, 77, 24, 40, 9, 0, + 77, 20, 16, 9, 0, 77, 12, 184, 255, 240, 179, 11, 0, 77, 8, 184, 255, 240, 179, 13, + 0, 77, 8, 184, 255, 232, 179, 12, 0, 77, 8, 184, 255, 224, 64, 40, 11, 0, 77, 16, + 31, 2, 47, 127, 63, 30, 48, 48, 22, 39, 130, 10, 66, 56, 130, 22, 65, 51, 137, 27, + 80, 61, 137, 19, 81, 34, 137, 13, 81, 44, 137, 5, 80, 0, 1, 77, 0, 63, 51, 63, + 237, 63, 237, 63, 237, 63, 237, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 51, 51, 237, + 50, 50, 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 55, 21, + 54, 54, 51, 50, 30, 2, 21, 20, 6, 35, 34, 38, 39, 6, 6, 35, 34, 38, 53, 52, + 62, 2, 51, 50, 22, 23, 19, 22, 22, 51, 50, 62, 2, 53, 52, 46, 2, 35, 34, 6, + 7, 35, 38, 38, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, 213, 74, 14, 32, + 18, 22, 44, 35, 21, 75, 64, 24, 42, 17, 16, 40, 23, 72, 73, 22, 36, 46, 23, 20, + 31, 8, 74, 8, 20, 8, 15, 27, 20, 11, 8, 15, 21, 13, 14, 27, 11, 74, 7, 26, + 15, 13, 22, 17, 9, 11, 19, 24, 14, 14, 23, 4, 2, 167, 14, 246, 13, 15, 24, 56, + 93, 70, 122, 121, 13, 9, 9, 13, 130, 113, 70, 93, 56, 24, 18, 10, 254, 133, 5, 6, + 18, 42, 67, 48, 54, 68, 39, 14, 21, 15, 13, 23, 14, 39, 68, 54, 48, 67, 42, 18, + 7, 3, 0, 3, 0, 27, 255, 91, 1, 217, 1, 219, 0, 30, 0, 47, 0, 64, 0, 110, + 185, 0, 42, 255, 240, 180, 17, 18, 0, 76, 36, 184, 255, 224, 180, 17, 18, 0, 76, 22, + 184, 255, 232, 64, 53, 11, 0, 77, 9, 24, 9, 0, 77, 6, 16, 10, 11, 0, 76, 6, + 32, 9, 0, 77, 14, 28, 64, 127, 0, 31, 31, 8, 56, 130, 20, 66, 39, 130, 8, 65, + 30, 75, 51, 137, 25, 81, 61, 137, 17, 80, 34, 137, 11, 80, 44, 137, 3, 81, 0, 63, + 237, 63, 237, 63, 237, 63, 237, 63, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 51, 237, + 50, 57, 49, 48, 43, 43, 43, 43, 43, 43, 55, 6, 6, 35, 34, 46, 2, 53, 52, 54, + 51, 50, 22, 23, 54, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 39, 21, 35, 17, + 38, 38, 35, 34, 14, 2, 21, 20, 30, 2, 51, 50, 54, 55, 51, 22, 22, 51, 50, 62, + 2, 53, 52, 46, 2, 35, 34, 6, 7, 213, 14, 32, 18, 23, 43, 35, 21, 75, 64, 24, + 42, 17, 16, 39, 24, 72, 73, 22, 36, 46, 23, 20, 31, 8, 74, 8, 20, 8, 15, 27, + 20, 11, 8, 15, 21, 13, 14, 27, 11, 74, 7, 26, 15, 13, 22, 16, 10, 11, 19, 25, + 13, 14, 23, 4, 18, 14, 15, 24, 56, 93, 70, 123, 120, 13, 9, 9, 13, 130, 113, 70, + 93, 56, 24, 18, 11, 183, 2, 49, 6, 5, 18, 41, 67, 49, 54, 68, 39, 14, 21, 16, + 13, 24, 14, 39, 68, 54, 49, 67, 41, 18, 7, 4, 0, 3, 0, 9, 255, 166, 1, 235, + 2, 182, 0, 25, 0, 33, 0, 36, 0, 157, 64, 83, 18, 3, 19, 3, 126, 4, 18, 20, + 4, 4, 18, 19, 19, 6, 29, 27, 26, 13, 7, 26, 7, 120, 8, 13, 20, 8, 8, 13, + 33, 36, 1, 0, 14, 0, 26, 0, 120, 25, 14, 20, 25, 14, 26, 8, 25, 38, 4, 4, + 8, 37, 0, 25, 68, 19, 18, 18, 13, 5, 2, 1, 6, 121, 36, 35, 30, 34, 31, 20, + 17, 4, 13, 29, 29, 8, 26, 14, 13, 65, 7, 8, 68, 4, 3, 0, 47, 51, 63, 51, + 63, 51, 51, 18, 57, 47, 18, 23, 57, 51, 51, 51, 237, 50, 50, 50, 17, 51, 47, 51, + 63, 51, 1, 16, 198, 50, 47, 16, 222, 17, 57, 135, 43, 135, 125, 196, 16, 196, 196, 14, + 196, 135, 5, 24, 16, 43, 135, 125, 196, 16, 14, 196, 5, 196, 196, 1, 51, 24, 47, 135, + 16, 43, 135, 125, 196, 49, 48, 33, 39, 35, 7, 39, 55, 35, 7, 35, 62, 3, 55, 51, + 22, 22, 23, 55, 23, 7, 30, 3, 23, 3, 6, 6, 7, 51, 55, 38, 38, 23, 7, 51, + 1, 148, 37, 88, 71, 63, 66, 82, 36, 84, 17, 42, 49, 54, 30, 102, 5, 9, 6, 39, + 61, 63, 19, 36, 33, 30, 13, 242, 23, 54, 24, 82, 58, 11, 18, 64, 29, 57, 162, 252, + 18, 234, 162, 66, 154, 162, 163, 74, 16, 28, 16, 135, 16, 222, 59, 121, 117, 111, 48, 2, + 35, 63, 166, 88, 206, 33, 52, 193, 100, 0, 2, 0, 46, 255, 166, 1, 217, 2, 182, 0, + 35, 0, 43, 0, 222, 185, 0, 42, 255, 232, 179, 18, 0, 77, 42, 184, 255, 240, 179, 17, + 0, 77, 42, 184, 255, 240, 64, 20, 13, 0, 77, 41, 16, 11, 0, 77, 40, 8, 13, 0, + 77, 40, 24, 11, 12, 0, 76, 38, 184, 255, 232, 180, 15, 16, 0, 76, 25, 184, 255, 232, + 64, 10, 15, 16, 0, 76, 15, 32, 14, 0, 77, 1, 184, 255, 216, 179, 18, 0, 77, 1, + 184, 255, 232, 179, 17, 0, 77, 1, 184, 255, 208, 179, 16, 0, 77, 1, 184, 255, 216, 64, + 57, 15, 0, 77, 9, 39, 40, 20, 21, 8, 21, 23, 29, 30, 6, 7, 22, 22, 22, 0, + 0, 26, 45, 7, 8, 8, 36, 118, 12, 44, 40, 29, 27, 27, 41, 124, 17, 22, 21, 21, + 23, 20, 17, 69, 39, 35, 35, 30, 32, 124, 3, 8, 7, 7, 9, 6, 3, 70, 0, 63, + 51, 51, 51, 47, 51, 16, 237, 50, 50, 47, 50, 63, 51, 51, 51, 47, 51, 16, 237, 50, + 47, 50, 50, 1, 16, 214, 237, 51, 47, 205, 16, 206, 50, 47, 50, 47, 125, 135, 196, 196, + 196, 196, 1, 24, 221, 125, 135, 196, 196, 196, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 37, 6, 6, 35, 34, 38, 39, 7, 39, 55, 38, 38, 53, + 52, 62, 2, 51, 50, 22, 23, 55, 23, 7, 22, 22, 23, 7, 38, 39, 3, 22, 51, 50, + 54, 55, 37, 20, 22, 23, 19, 35, 34, 6, 1, 204, 35, 79, 45, 17, 33, 15, 23, 64, + 25, 59, 69, 40, 71, 98, 59, 8, 16, 8, 18, 62, 17, 16, 32, 16, 24, 28, 32, 133, + 27, 28, 29, 64, 34, 254, 204, 36, 32, 129, 9, 94, 94, 26, 20, 19, 3, 5, 85, 18, + 91, 34, 144, 113, 79, 120, 82, 42, 1, 1, 63, 16, 60, 5, 14, 9, 68, 15, 10, 254, + 33, 8, 15, 19, 216, 75, 102, 30, 1, 201, 136, 0, 2, 0, 40, 255, 181, 1, 195, 2, + 37, 0, 36, 0, 45, 0, 195, 185, 0, 43, 255, 224, 64, 19, 12, 0, 77, 41, 16, 14, + 0, 77, 41, 8, 11, 0, 77, 40, 8, 16, 0, 77, 39, 184, 255, 240, 64, 98, 12, 0, + 77, 35, 40, 13, 0, 77, 3, 32, 16, 0, 77, 3, 40, 14, 15, 0, 76, 3, 48, 13, + 0, 77, 2, 16, 15, 0, 77, 2, 32, 14, 0, 77, 2, 24, 13, 0, 77, 2, 32, 8, + 0, 77, 11, 18, 19, 31, 32, 10, 32, 34, 40, 41, 8, 9, 33, 9, 10, 10, 26, 26, + 14, 47, 32, 33, 33, 37, 130, 0, 46, 33, 32, 32, 29, 40, 25, 25, 19, 22, 136, 34, + 31, 29, 81, 18, 15, 15, 41, 136, 5, 10, 9, 9, 11, 8, 5, 80, 0, 63, 51, 51, + 51, 47, 51, 16, 237, 50, 47, 50, 63, 51, 51, 237, 50, 50, 47, 50, 17, 51, 47, 51, + 1, 16, 214, 237, 51, 47, 205, 16, 206, 50, 47, 50, 47, 221, 125, 135, 196, 196, 196, 196, + 16, 135, 196, 196, 196, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 55, 52, 62, 2, 51, 50, 50, 23, 55, 23, 7, 22, 22, 23, 7, 38, 38, 39, + 3, 22, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 39, 7, 39, 55, 38, 38, 55, 20, + 22, 23, 19, 34, 14, 2, 40, 41, 72, 95, 54, 6, 12, 7, 24, 55, 20, 14, 28, 16, + 19, 17, 30, 15, 105, 12, 25, 14, 33, 62, 35, 12, 35, 74, 44, 33, 30, 22, 56, 21, + 64, 74, 84, 42, 36, 102, 37, 66, 49, 28, 231, 63, 92, 60, 29, 1, 75, 19, 62, 3, + 6, 5, 71, 5, 8, 2, 254, 181, 2, 2, 7, 12, 69, 13, 11, 6, 70, 19, 66, 25, + 111, 85, 55, 71, 20, 1, 61, 20, 41, 64, 0, 1, 0, 36, 0, 0, 1, 204, 2, 107, + 0, 13, 0, 45, 64, 22, 0, 15, 11, 9, 12, 115, 6, 4, 3, 14, 12, 3, 121, 9, + 6, 6, 7, 65, 13, 121, 2, 68, 0, 63, 237, 63, 57, 47, 51, 237, 50, 1, 16, 214, + 205, 51, 253, 50, 205, 16, 206, 49, 48, 37, 21, 33, 17, 35, 53, 51, 17, 51, 17, 51, + 21, 35, 21, 1, 204, 254, 161, 73, 73, 82, 141, 141, 70, 70, 1, 33, 67, 1, 7, 254, + 249, 67, 219, 0, 2, 0, 18, 255, 221, 1, 246, 2, 165, 0, 12, 0, 15, 0, 86, 64, + 43, 4, 5, 3, 14, 10, 13, 11, 13, 11, 12, 0, 115, 8, 6, 0, 3, 1, 8, 3, + 3, 17, 16, 13, 6, 5, 7, 14, 121, 10, 0, 3, 12, 4, 12, 11, 11, 10, 65, 5, + 4, 4, 2, 68, 0, 63, 51, 47, 51, 63, 51, 47, 51, 17, 18, 57, 57, 16, 237, 50, + 17, 57, 57, 1, 17, 18, 57, 47, 94, 93, 51, 204, 253, 205, 50, 51, 17, 18, 57, 57, + 16, 205, 50, 49, 48, 1, 17, 35, 53, 7, 39, 19, 17, 35, 53, 33, 55, 23, 7, 55, + 35, 1, 17, 82, 120, 53, 173, 170, 1, 134, 37, 54, 229, 93, 93, 1, 27, 254, 229, 154, + 189, 34, 1, 17, 1, 21, 70, 58, 34, 242, 148, 0, 1, 0, 63, 255, 91, 1, 177, 1, + 219, 0, 63, 0, 188, 185, 0, 29, 255, 232, 179, 12, 0, 77, 29, 184, 255, 224, 179, 11, + 0, 77, 29, 184, 255, 216, 179, 10, 0, 77, 29, 184, 255, 208, 179, 9, 0, 77, 27, 184, + 255, 216, 179, 15, 0, 77, 26, 184, 255, 224, 179, 13, 0, 77, 26, 184, 255, 232, 179, 12, + 0, 77, 26, 184, 255, 240, 64, 76, 10, 0, 77, 8, 24, 10, 11, 0, 76, 8, 40, 9, + 0, 77, 6, 40, 13, 0, 77, 5, 48, 12, 0, 77, 5, 24, 10, 0, 77, 2, 16, 14, + 0, 77, 42, 42, 28, 13, 13, 0, 130, 28, 65, 34, 55, 55, 21, 130, 0, 7, 1, 8, + 7, 64, 38, 137, 45, 75, 55, 136, 56, 56, 24, 10, 59, 137, 3, 34, 31, 78, 14, 14, + 19, 136, 10, 80, 0, 63, 237, 50, 47, 63, 51, 57, 237, 17, 57, 50, 47, 237, 63, 237, + 1, 16, 214, 94, 93, 237, 51, 47, 51, 16, 222, 237, 51, 47, 17, 51, 47, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 52, 46, 4, 53, 52, 54, + 51, 50, 22, 23, 7, 46, 3, 35, 34, 21, 20, 30, 4, 21, 20, 6, 35, 34, 38, 39, + 23, 22, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 39, 46, 3, 39, 55, 22, + 22, 51, 50, 62, 2, 1, 94, 41, 61, 72, 61, 41, 91, 97, 38, 81, 29, 14, 8, 29, + 36, 41, 19, 109, 41, 61, 72, 61, 41, 93, 107, 16, 19, 11, 55, 24, 67, 54, 8, 22, + 11, 8, 11, 34, 11, 36, 51, 39, 35, 21, 18, 32, 31, 32, 19, 28, 42, 69, 32, 23, + 42, 32, 19, 116, 25, 32, 24, 23, 34, 50, 40, 56, 75, 11, 9, 74, 4, 9, 7, 4, + 59, 21, 29, 24, 25, 36, 51, 39, 54, 65, 1, 1, 49, 21, 30, 2, 2, 67, 3, 3, + 10, 20, 28, 18, 15, 33, 30, 26, 8, 73, 17, 8, 4, 10, 17, 0, 1, 0, 74, 255, + 91, 1, 205, 1, 208, 0, 42, 0, 165, 64, 21, 29, 32, 18, 0, 77, 29, 16, 15, 0, + 77, 29, 16, 12, 0, 77, 29, 24, 11, 0, 77, 13, 184, 255, 216, 179, 16, 0, 77, 12, + 184, 255, 216, 179, 14, 0, 77, 12, 184, 255, 224, 179, 13, 0, 77, 11, 184, 255, 232, 179, + 16, 0, 77, 7, 184, 255, 232, 179, 17, 0, 77, 5, 184, 255, 240, 179, 18, 0, 77, 5, + 184, 255, 240, 179, 15, 0, 77, 5, 184, 255, 232, 64, 40, 9, 0, 77, 5, 39, 34, 39, + 129, 0, 5, 20, 0, 0, 5, 19, 19, 0, 44, 40, 40, 0, 34, 1, 8, 34, 43, 0, + 39, 133, 41, 73, 34, 5, 134, 33, 76, 15, 136, 22, 75, 0, 63, 237, 63, 237, 50, 63, + 237, 50, 1, 16, 198, 94, 93, 50, 47, 16, 206, 50, 47, 135, 16, 43, 135, 125, 196, 1, + 43, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 14, 3, 7, 30, 3, + 23, 30, 3, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 39, 46, 3, 35, 35, 53, + 62, 3, 55, 35, 53, 33, 1, 164, 19, 61, 71, 72, 30, 21, 34, 29, 22, 8, 15, 30, + 32, 36, 21, 4, 22, 11, 9, 11, 34, 11, 30, 43, 36, 32, 18, 10, 29, 38, 48, 29, + 18, 21, 63, 67, 65, 24, 229, 1, 79, 1, 146, 21, 73, 92, 103, 49, 4, 17, 20, 20, + 8, 15, 32, 26, 16, 1, 2, 68, 3, 3, 15, 24, 32, 18, 10, 26, 24, 16, 55, 40, + 95, 93, 83, 29, 69, 0, 1, 0, 68, 0, 0, 1, 193, 2, 121, 0, 35, 0, 116, 185, + 0, 32, 255, 224, 179, 16, 0, 77, 30, 184, 255, 232, 179, 16, 0, 77, 27, 184, 255, 232, + 180, 14, 15, 0, 76, 24, 184, 255, 232, 179, 10, 0, 77, 24, 184, 255, 240, 179, 9, 0, + 77, 24, 184, 255, 232, 64, 39, 8, 0, 77, 18, 32, 16, 0, 77, 18, 40, 15, 0, 77, + 10, 118, 25, 35, 115, 17, 0, 2, 16, 2, 2, 2, 2, 37, 36, 30, 1, 16, 13, 124, + 7, 1, 22, 69, 1, 68, 0, 63, 63, 18, 57, 237, 50, 17, 57, 1, 17, 18, 57, 47, + 93, 206, 253, 220, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 51, 35, 53, 52, 62, + 2, 55, 54, 54, 53, 52, 38, 35, 34, 6, 7, 39, 62, 3, 51, 50, 22, 21, 20, 14, + 2, 7, 14, 3, 21, 250, 82, 14, 28, 43, 30, 34, 48, 71, 52, 49, 78, 19, 28, 10, + 38, 47, 54, 27, 102, 103, 16, 29, 41, 24, 23, 33, 22, 11, 187, 36, 52, 40, 32, 17, + 20, 48, 38, 45, 47, 28, 12, 67, 7, 16, 13, 8, 90, 69, 34, 48, 36, 30, 15, 15, + 26, 29, 38, 27, 0, 1, 0, 85, 0, 0, 1, 169, 1, 220, 0, 37, 0, 145, 185, 0, + 29, 255, 232, 179, 18, 0, 77, 29, 184, 255, 240, 179, 17, 0, 77, 26, 184, 255, 232, 179, + 13, 0, 77, 26, 184, 255, 224, 179, 12, 0, 77, 26, 184, 255, 232, 179, 11, 0, 77, 26, + 184, 255, 224, 179, 10, 0, 77, 26, 184, 255, 216, 64, 56, 8, 9, 0, 76, 21, 16, 17, + 0, 77, 21, 32, 16, 0, 77, 21, 24, 15, 0, 77, 21, 32, 14, 0, 77, 20, 32, 18, + 0, 77, 10, 130, 27, 37, 127, 19, 0, 2, 16, 2, 2, 2, 2, 39, 38, 32, 1, 18, + 18, 13, 136, 7, 1, 24, 80, 1, 76, 0, 63, 63, 18, 57, 237, 50, 47, 17, 57, 1, + 17, 18, 57, 47, 93, 206, 253, 220, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 51, 35, 53, 52, 62, 2, 55, 54, 54, 53, 52, 38, 35, 34, 14, 2, 7, + 39, 62, 3, 51, 50, 22, 21, 20, 14, 2, 7, 14, 3, 21, 254, 80, 15, 27, 38, 22, + 26, 41, 57, 42, 18, 39, 37, 30, 9, 26, 9, 35, 44, 49, 24, 88, 91, 16, 26, 35, + 18, 17, 27, 21, 11, 114, 30, 43, 34, 27, 14, 15, 38, 27, 35, 28, 8, 11, 13, 5, + 69, 5, 14, 12, 8, 68, 62, 27, 41, 32, 24, 12, 11, 20, 23, 29, 19, 0, 3, 0, + 18, 255, 251, 1, 195, 2, 113, 0, 30, 0, 49, 0, 64, 0, 197, 64, 18, 54, 16, 15, + 16, 0, 76, 46, 24, 16, 0, 77, 42, 24, 15, 16, 0, 76, 29, 184, 255, 224, 180, 17, + 18, 0, 76, 29, 184, 255, 232, 180, 9, 10, 0, 76, 27, 184, 255, 232, 179, 18, 0, 77, + 27, 184, 255, 216, 179, 17, 0, 77, 23, 184, 255, 232, 179, 18, 0, 77, 23, 184, 255, 224, + 179, 17, 0, 77, 18, 184, 255, 208, 179, 18, 0, 77, 18, 184, 255, 216, 179, 17, 0, 77, + 18, 184, 255, 224, 180, 9, 10, 0, 76, 17, 184, 255, 240, 64, 47, 18, 0, 77, 25, 56, + 118, 20, 20, 44, 118, 28, 66, 50, 34, 32, 35, 115, 9, 7, 6, 65, 25, 31, 121, 50, + 35, 6, 121, 9, 32, 9, 191, 50, 1, 50, 9, 50, 9, 39, 61, 124, 15, 65, 39, 124, + 0, 66, 0, 63, 237, 63, 237, 18, 57, 57, 47, 47, 93, 17, 51, 16, 237, 50, 16, 237, + 57, 1, 16, 214, 205, 51, 253, 50, 205, 51, 16, 222, 237, 51, 47, 237, 50, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 23, 34, 46, 2, 39, 53, 35, 53, + 51, 17, 62, 3, 51, 50, 30, 2, 21, 20, 14, 2, 7, 22, 22, 21, 20, 6, 3, 21, + 51, 21, 35, 21, 22, 22, 51, 50, 62, 2, 53, 52, 46, 2, 35, 39, 51, 50, 62, 2, + 53, 52, 46, 2, 35, 34, 6, 7, 217, 15, 38, 40, 38, 15, 53, 53, 15, 38, 39, 38, + 15, 44, 75, 56, 31, 14, 25, 33, 19, 51, 69, 111, 186, 109, 109, 10, 29, 29, 28, 54, + 40, 25, 22, 38, 50, 27, 78, 59, 23, 46, 36, 22, 19, 33, 43, 24, 23, 36, 8, 5, + 2, 3, 6, 4, 134, 62, 1, 148, 4, 6, 3, 2, 16, 38, 62, 46, 22, 41, 36, 27, + 7, 14, 75, 60, 93, 93, 1, 38, 83, 62, 76, 2, 2, 10, 27, 44, 35, 31, 42, 25, + 11, 68, 10, 22, 38, 29, 27, 38, 24, 10, 1, 2, 0, 2, 0, 18, 255, 243, 1, 226, + 2, 107, 0, 20, 0, 33, 0, 152, 185, 0, 32, 255, 216, 179, 18, 0, 77, 32, 184, 255, + 224, 179, 17, 0, 77, 32, 184, 255, 240, 64, 17, 15, 16, 0, 76, 23, 32, 17, 18, 0, + 76, 23, 16, 15, 16, 0, 76, 20, 184, 255, 240, 180, 11, 12, 0, 76, 20, 184, 255, 232, + 179, 10, 0, 77, 20, 184, 255, 240, 64, 51, 9, 0, 77, 1, 24, 10, 12, 0, 76, 1, + 16, 9, 0, 77, 11, 26, 115, 16, 14, 18, 35, 10, 29, 115, 7, 5, 0, 3, 16, 3, + 32, 3, 3, 8, 3, 34, 28, 17, 4, 121, 14, 10, 7, 7, 12, 8, 65, 21, 124, 0, + 70, 0, 63, 237, 63, 51, 57, 47, 51, 51, 237, 50, 50, 1, 16, 214, 94, 93, 206, 51, + 237, 50, 16, 222, 50, 206, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 23, 34, 38, 53, 53, 35, 53, 51, 53, 51, 21, 51, 53, 51, 21, 51, 21, 35, 21, 20, + 6, 39, 50, 62, 2, 53, 53, 35, 21, 20, 30, 2, 250, 97, 82, 53, 53, 83, 192, 83, + 53, 53, 82, 97, 22, 36, 25, 13, 192, 13, 25, 35, 13, 112, 105, 102, 61, 252, 252, 252, + 252, 61, 102, 104, 113, 71, 13, 35, 60, 47, 93, 93, 47, 60, 35, 13, 255, 255, 0, 9, + 0, 0, 1, 235, 2, 107, 2, 6, 3, 150, 0, 0, 0, 3, 0, 91, 255, 151, 1, 211, + 2, 168, 0, 15, 0, 19, 0, 23, 0, 112, 64, 63, 3, 21, 22, 17, 18, 6, 6, 2, + 7, 0, 13, 12, 9, 4, 1, 8, 8, 10, 10, 14, 25, 16, 20, 115, 4, 1, 2, 2, + 0, 4, 16, 4, 32, 4, 3, 8, 4, 24, 12, 23, 121, 9, 16, 16, 5, 20, 8, 7, + 7, 19, 121, 5, 65, 13, 20, 121, 4, 2, 1, 1, 0, 4, 68, 0, 63, 51, 51, 47, + 51, 16, 237, 50, 63, 237, 51, 47, 51, 17, 18, 57, 47, 51, 237, 50, 1, 16, 198, 94, + 93, 50, 47, 205, 16, 237, 50, 16, 206, 50, 47, 50, 47, 18, 23, 57, 205, 17, 23, 57, + 49, 48, 51, 7, 39, 55, 35, 17, 33, 55, 23, 3, 51, 21, 35, 7, 51, 21, 1, 51, + 55, 35, 17, 51, 55, 35, 246, 34, 64, 29, 86, 1, 36, 21, 63, 101, 57, 80, 73, 190, + 254, 225, 123, 64, 187, 27, 73, 100, 105, 17, 88, 2, 107, 61, 17, 254, 208, 70, 219, 70, + 1, 103, 190, 254, 33, 219, 0, 4, 0, 38, 255, 181, 1, 201, 2, 37, 0, 37, 0, 47, + 0, 52, 0, 56, 0, 111, 64, 61, 6, 51, 52, 13, 14, 27, 6, 28, 5, 30, 55, 56, + 38, 39, 3, 6, 29, 4, 5, 5, 48, 130, 9, 21, 21, 9, 58, 47, 53, 130, 33, 28, + 29, 29, 33, 57, 13, 56, 134, 52, 38, 38, 0, 55, 20, 20, 14, 17, 136, 30, 27, 24, + 81, 51, 39, 42, 137, 6, 3, 0, 80, 0, 63, 50, 50, 237, 50, 50, 63, 51, 51, 237, + 50, 50, 47, 50, 17, 57, 47, 51, 237, 50, 1, 16, 198, 50, 47, 205, 16, 237, 50, 16, + 206, 50, 47, 16, 237, 51, 47, 205, 17, 23, 57, 17, 18, 23, 57, 49, 48, 1, 50, 22, + 23, 55, 23, 7, 22, 22, 21, 20, 20, 7, 35, 7, 22, 22, 51, 50, 54, 55, 23, 6, + 6, 35, 34, 38, 39, 7, 39, 55, 38, 38, 53, 52, 62, 2, 23, 55, 34, 38, 35, 34, + 14, 2, 7, 51, 52, 38, 39, 7, 7, 22, 23, 55, 1, 3, 8, 15, 8, 24, 56, 23, + 53, 57, 1, 188, 46, 15, 34, 19, 44, 62, 16, 11, 15, 78, 49, 23, 40, 18, 24, 55, + 24, 54, 53, 39, 62, 79, 8, 42, 2, 6, 2, 32, 48, 33, 19, 2, 249, 24, 25, 36, + 166, 3, 44, 37, 1, 219, 1, 1, 76, 19, 72, 23, 108, 88, 5, 15, 7, 143, 5, 3, + 14, 8, 68, 8, 18, 5, 5, 74, 19, 77, 31, 109, 70, 62, 92, 60, 30, 200, 131, 1, + 22, 37, 48, 25, 38, 59, 17, 114, 63, 79, 36, 115, 0, 1, 0, 54, 255, 243, 1, 226, + 2, 107, 0, 27, 0, 65, 64, 35, 14, 24, 11, 14, 0, 76, 26, 24, 23, 115, 5, 3, + 6, 29, 0, 0, 15, 28, 6, 23, 121, 3, 26, 26, 1, 16, 16, 19, 124, 12, 70, 27, + 121, 1, 65, 0, 63, 237, 63, 237, 50, 47, 17, 57, 47, 51, 237, 50, 1, 16, 198, 50, + 47, 16, 222, 50, 205, 253, 205, 51, 49, 48, 43, 19, 53, 33, 17, 51, 21, 35, 21, 20, + 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 53, 35, 53, 51, 53, 127, 1, + 28, 71, 71, 19, 45, 77, 58, 59, 81, 18, 33, 18, 62, 40, 62, 60, 125, 125, 2, 37, + 70, 254, 249, 67, 90, 44, 78, 57, 33, 34, 16, 67, 14, 32, 68, 81, 82, 67, 193, 0, + 2, 0, 71, 255, 86, 1, 205, 2, 158, 0, 11, 0, 39, 0, 78, 64, 41, 9, 3, 3, + 38, 35, 127, 17, 15, 18, 41, 36, 36, 12, 12, 27, 40, 18, 35, 134, 15, 0, 38, 16, + 38, 2, 8, 38, 38, 14, 28, 28, 31, 136, 24, 82, 6, 0, 39, 133, 14, 73, 0, 63, + 237, 222, 205, 63, 237, 50, 47, 17, 57, 47, 94, 93, 51, 237, 50, 1, 16, 198, 50, 47, + 50, 47, 16, 222, 50, 205, 237, 50, 50, 47, 205, 49, 48, 1, 34, 38, 53, 52, 54, 51, + 50, 22, 21, 20, 6, 7, 53, 33, 21, 51, 21, 35, 21, 20, 14, 2, 35, 34, 38, 39, + 55, 22, 22, 51, 50, 54, 53, 53, 35, 53, 51, 53, 1, 52, 26, 38, 38, 26, 27, 37, + 37, 221, 1, 14, 77, 77, 27, 45, 59, 33, 38, 77, 34, 25, 25, 61, 28, 40, 52, 188, + 188, 2, 24, 36, 31, 31, 36, 36, 31, 31, 36, 141, 69, 187, 63, 209, 48, 67, 42, 18, + 16, 17, 70, 12, 17, 41, 59, 210, 63, 118, 0, 2, 0, 29, 255, 89, 2, 0, 2, 121, + 0, 34, 0, 48, 0, 168, 185, 0, 47, 255, 232, 179, 14, 0, 77, 47, 184, 255, 248, 64, + 19, 13, 0, 77, 45, 24, 14, 0, 77, 45, 16, 13, 0, 77, 40, 16, 14, 0, 77, 37, + 184, 255, 240, 179, 14, 0, 77, 37, 184, 255, 232, 64, 14, 13, 0, 77, 32, 24, 15, 0, + 77, 32, 24, 8, 0, 77, 28, 184, 255, 224, 179, 18, 0, 77, 28, 184, 255, 232, 180, 15, + 17, 0, 76, 7, 184, 255, 232, 179, 15, 0, 77, 7, 184, 255, 240, 64, 41, 8, 0, 77, + 3, 24, 15, 0, 77, 3, 24, 8, 0, 77, 26, 43, 118, 18, 10, 50, 35, 118, 0, 64, + 11, 16, 72, 0, 49, 14, 124, 21, 49, 27, 38, 124, 30, 70, 46, 124, 5, 69, 0, 63, + 237, 63, 237, 50, 16, 220, 237, 1, 16, 214, 43, 237, 16, 222, 204, 237, 50, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 52, 62, 2, 51, 50, + 30, 2, 21, 17, 20, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 53, 53, 6, + 6, 35, 34, 46, 2, 55, 20, 22, 51, 50, 62, 2, 53, 52, 38, 35, 34, 6, 29, 30, + 53, 75, 45, 46, 75, 54, 30, 15, 22, 5, 20, 5, 8, 8, 28, 11, 35, 43, 24, 8, + 11, 67, 45, 45, 75, 53, 30, 84, 57, 60, 31, 46, 31, 15, 61, 62, 60, 57, 1, 54, + 83, 122, 79, 39, 39, 79, 122, 83, 254, 187, 41, 43, 2, 2, 65, 2, 5, 21, 42, 63, + 41, 61, 32, 42, 38, 80, 122, 83, 122, 130, 28, 60, 96, 68, 122, 130, 130, 0, 2, 0, + 40, 255, 89, 1, 242, 1, 218, 0, 32, 0, 47, 0, 118, 185, 0, 46, 255, 224, 179, 14, + 0, 77, 46, 184, 255, 232, 179, 13, 0, 77, 36, 184, 255, 240, 64, 65, 14, 0, 77, 11, + 16, 15, 16, 0, 76, 11, 16, 8, 9, 0, 76, 5, 32, 15, 16, 0, 76, 5, 16, 10, + 0, 77, 5, 24, 9, 0, 77, 5, 32, 8, 0, 77, 41, 32, 127, 24, 17, 49, 33, 130, + 8, 64, 9, 12, 72, 8, 48, 20, 137, 27, 75, 45, 136, 13, 80, 41, 38, 136, 0, 3, + 81, 0, 63, 51, 237, 50, 63, 237, 63, 237, 1, 16, 214, 43, 237, 16, 222, 204, 237, 50, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 6, 6, 35, 34, 46, 2, 53, 52, + 62, 2, 51, 50, 22, 23, 17, 20, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, + 53, 39, 20, 30, 2, 51, 50, 54, 55, 17, 38, 38, 35, 34, 6, 1, 73, 14, 53, 32, + 44, 71, 49, 26, 31, 55, 78, 48, 52, 81, 27, 20, 26, 6, 20, 6, 8, 8, 30, 11, + 37, 46, 27, 10, 204, 13, 28, 43, 30, 28, 50, 13, 11, 35, 32, 56, 71, 18, 10, 19, + 36, 64, 89, 53, 56, 90, 63, 34, 17, 8, 254, 48, 41, 43, 2, 2, 65, 2, 5, 21, + 42, 63, 41, 231, 36, 61, 45, 26, 22, 13, 1, 37, 4, 6, 89, 0, 2, 0, 18, 0, + 0, 1, 215, 2, 113, 0, 30, 0, 45, 0, 149, 181, 39, 24, 15, 0, 77, 30, 184, 255, + 208, 179, 16, 0, 77, 30, 184, 255, 248, 179, 10, 0, 77, 30, 184, 255, 232, 179, 9, 0, + 77, 30, 184, 255, 224, 64, 9, 8, 0, 77, 2, 24, 15, 0, 77, 1, 184, 255, 232, 64, + 52, 16, 0, 77, 3, 9, 14, 9, 120, 8, 3, 20, 8, 8, 3, 14, 14, 0, 19, 8, + 8, 41, 118, 0, 47, 35, 19, 115, 24, 22, 0, 20, 1, 8, 20, 46, 14, 3, 21, 121, + 35, 24, 24, 20, 31, 124, 28, 65, 20, 68, 9, 8, 68, 0, 63, 51, 63, 63, 237, 18, + 57, 47, 51, 237, 50, 50, 1, 16, 214, 94, 93, 206, 51, 237, 50, 16, 222, 237, 51, 47, + 17, 18, 57, 47, 135, 16, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, + 1, 20, 6, 7, 30, 3, 23, 35, 46, 3, 39, 6, 34, 35, 35, 21, 35, 53, 35, 53, + 51, 17, 54, 54, 51, 50, 22, 39, 34, 6, 7, 21, 51, 50, 62, 2, 53, 52, 46, 2, + 1, 184, 60, 50, 15, 37, 38, 36, 15, 93, 14, 33, 33, 33, 15, 6, 24, 3, 53, 82, + 64, 64, 31, 70, 32, 112, 113, 219, 23, 24, 10, 36, 36, 57, 41, 22, 22, 37, 49, 1, + 174, 57, 87, 24, 24, 62, 69, 73, 34, 34, 70, 65, 56, 20, 1, 244, 244, 68, 1, 42, + 8, 7, 98, 27, 1, 2, 239, 10, 27, 47, 38, 36, 46, 27, 11, 0, 1, 0, 33, 0, + 0, 1, 174, 1, 218, 0, 21, 0, 47, 64, 23, 10, 23, 19, 17, 20, 127, 4, 2, 1, + 22, 20, 1, 134, 17, 4, 4, 0, 14, 136, 7, 80, 0, 76, 0, 63, 63, 237, 18, 57, + 47, 51, 237, 50, 1, 16, 214, 205, 51, 253, 50, 205, 16, 206, 49, 48, 51, 53, 35, 53, + 51, 53, 54, 51, 50, 22, 23, 7, 38, 38, 35, 34, 7, 21, 51, 21, 35, 21, 99, 66, + 66, 102, 104, 31, 59, 35, 15, 32, 49, 29, 62, 62, 166, 166, 183, 63, 193, 35, 5, 8, + 73, 9, 5, 17, 139, 63, 183, 0, 2, 0, 21, 0, 0, 1, 223, 2, 107, 0, 27, 0, + 33, 0, 105, 64, 56, 28, 17, 28, 10, 17, 120, 18, 26, 20, 18, 18, 26, 21, 21, 18, + 26, 115, 1, 28, 10, 10, 120, 9, 1, 20, 9, 9, 1, 6, 6, 9, 1, 1, 35, 34, + 17, 18, 65, 32, 31, 23, 4, 20, 14, 13, 1, 26, 28, 3, 7, 7, 10, 9, 65, 0, + 68, 0, 63, 63, 51, 57, 47, 23, 57, 51, 51, 51, 205, 50, 50, 50, 63, 51, 1, 17, + 18, 57, 47, 205, 50, 47, 135, 16, 43, 125, 16, 196, 1, 24, 16, 253, 205, 50, 47, 135, + 16, 43, 8, 125, 16, 196, 49, 48, 51, 53, 38, 38, 39, 35, 53, 51, 38, 39, 51, 22, + 22, 23, 51, 54, 54, 55, 51, 6, 7, 51, 21, 35, 6, 6, 7, 21, 3, 54, 54, 55, + 35, 22, 210, 30, 54, 24, 75, 52, 33, 25, 93, 11, 27, 16, 167, 15, 26, 13, 90, 27, + 31, 52, 76, 23, 53, 29, 40, 17, 30, 14, 124, 30, 230, 49, 94, 48, 64, 65, 69, 35, + 66, 33, 34, 65, 35, 69, 65, 64, 47, 93, 49, 232, 1, 45, 31, 59, 30, 60, 0, 2, + 0, 42, 255, 88, 1, 221, 1, 208, 0, 39, 0, 46, 0, 163, 64, 85, 25, 27, 30, 33, + 24, 33, 22, 20, 43, 41, 40, 33, 23, 40, 23, 129, 24, 33, 20, 24, 24, 33, 19, 44, + 40, 16, 40, 12, 9, 6, 15, 6, 16, 40, 16, 129, 15, 6, 20, 15, 15, 6, 40, 40, + 15, 28, 28, 24, 48, 39, 39, 11, 11, 15, 47, 44, 43, 30, 9, 27, 20, 19, 12, 33, + 6, 40, 40, 31, 12, 47, 12, 2, 12, 12, 15, 3, 136, 36, 75, 23, 24, 73, 16, 15, + 73, 0, 63, 51, 63, 51, 63, 237, 17, 57, 47, 93, 57, 17, 51, 51, 17, 51, 51, 51, + 205, 50, 50, 50, 1, 16, 198, 50, 47, 50, 47, 16, 206, 50, 47, 17, 57, 25, 47, 135, + 24, 16, 43, 135, 125, 196, 135, 196, 196, 16, 135, 196, 196, 135, 24, 16, 43, 135, 125, 196, + 16, 14, 196, 5, 196, 196, 14, 196, 16, 135, 5, 196, 196, 14, 196, 49, 48, 23, 22, 22, + 51, 50, 54, 55, 38, 38, 39, 35, 53, 51, 38, 38, 39, 51, 22, 22, 23, 51, 54, 54, + 55, 51, 6, 6, 7, 51, 21, 35, 6, 6, 7, 6, 6, 35, 34, 38, 39, 55, 54, 54, + 55, 35, 22, 22, 57, 10, 32, 14, 50, 55, 22, 28, 53, 23, 90, 67, 17, 29, 13, 88, + 10, 27, 17, 141, 11, 23, 12, 84, 12, 24, 14, 60, 79, 20, 43, 23, 35, 89, 74, 19, + 45, 8, 234, 12, 21, 11, 101, 13, 28, 87, 5, 6, 43, 49, 52, 115, 60, 60, 46, 92, + 45, 39, 94, 50, 43, 90, 50, 47, 91, 45, 60, 63, 118, 54, 80, 74, 10, 4, 240, 34, + 67, 34, 35, 68, 0, 1, 0, 44, 255, 91, 1, 175, 1, 208, 0, 40, 0, 130, 64, 16, + 36, 16, 15, 0, 77, 32, 32, 16, 0, 77, 32, 24, 15, 0, 77, 21, 184, 255, 232, 180, + 17, 18, 0, 76, 17, 184, 255, 232, 180, 17, 18, 0, 76, 17, 184, 255, 224, 64, 47, 16, + 0, 77, 5, 14, 9, 14, 129, 0, 5, 20, 0, 0, 5, 9, 9, 34, 130, 19, 42, 0, + 0, 1, 8, 0, 0, 27, 27, 6, 41, 40, 137, 0, 14, 14, 7, 28, 28, 31, 136, 24, + 75, 9, 5, 133, 7, 73, 0, 63, 237, 50, 63, 237, 50, 47, 17, 57, 47, 51, 237, 1, + 16, 198, 50, 47, 50, 47, 94, 93, 16, 222, 237, 51, 47, 135, 16, 43, 135, 125, 196, 49, + 48, 1, 43, 43, 43, 43, 43, 43, 55, 62, 3, 55, 35, 53, 33, 21, 14, 3, 7, 30, + 3, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 46, 2, 35, + 35, 154, 19, 44, 42, 37, 12, 244, 1, 91, 12, 37, 44, 47, 22, 38, 66, 50, 28, 33, + 62, 86, 52, 49, 83, 22, 18, 20, 73, 42, 73, 76, 30, 50, 63, 34, 15, 196, 22, 55, + 54, 50, 18, 69, 48, 20, 53, 58, 58, 25, 5, 23, 41, 61, 44, 48, 73, 48, 24, 16, + 11, 70, 10, 16, 65, 58, 35, 44, 25, 9, 0, 1, 0, 130, 2, 33, 1, 114, 2, 157, + 0, 21, 0, 21, 183, 5, 6, 17, 16, 0, 11, 5, 17, 0, 47, 51, 220, 205, 1, 47, + 205, 222, 205, 49, 48, 19, 50, 30, 2, 7, 35, 46, 3, 35, 34, 14, 2, 7, 35, 38, + 62, 2, 250, 25, 44, 33, 18, 1, 54, 1, 6, 14, 25, 19, 19, 24, 15, 6, 1, 54, + 1, 18, 33, 44, 2, 157, 17, 32, 46, 29, 10, 23, 19, 12, 12, 19, 23, 10, 29, 46, + 32, 17, 0, 2, 0, 100, 2, 6, 1, 144, 2, 181, 0, 3, 0, 7, 0, 36, 64, 15, + 4, 7, 5, 0, 3, 64, 2, 1, 6, 5, 0, 4, 128, 2, 6, 0, 47, 51, 26, 205, + 50, 1, 47, 51, 220, 50, 26, 205, 50, 16, 205, 50, 49, 48, 1, 23, 7, 39, 39, 23, + 7, 39, 1, 41, 103, 43, 110, 97, 103, 43, 110, 2, 181, 143, 32, 125, 50, 143, 32, 125, + 0, 3, 0, 167, 2, 1, 1, 77, 3, 45, 0, 3, 0, 15, 0, 27, 0, 79, 185, 0, + 15, 255, 224, 64, 17, 8, 17, 0, 76, 11, 32, 8, 17, 0, 76, 9, 40, 8, 17, 0, + 76, 5, 184, 255, 216, 64, 23, 8, 17, 0, 76, 4, 16, 22, 64, 0, 128, 2, 2, 10, + 22, 0, 3, 2, 1, 1, 13, 19, 25, 7, 0, 47, 221, 222, 205, 50, 47, 205, 221, 205, + 1, 47, 205, 50, 47, 26, 205, 26, 16, 222, 205, 49, 48, 43, 43, 43, 43, 1, 7, 39, + 55, 23, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 7, 52, 38, 35, 34, 6, 21, + 20, 22, 51, 50, 54, 1, 77, 141, 19, 135, 25, 50, 33, 35, 48, 48, 35, 33, 50, 40, + 25, 18, 18, 25, 25, 18, 18, 25, 2, 235, 53, 49, 70, 217, 38, 45, 45, 38, 38, 44, + 44, 38, 20, 23, 23, 20, 21, 24, 24, 0, 3, 0, 112, 2, 12, 1, 132, 2, 204, 0, + 11, 0, 23, 0, 27, 0, 39, 64, 18, 26, 26, 21, 146, 15, 9, 27, 27, 3, 146, 9, + 24, 27, 18, 6, 146, 12, 0, 0, 47, 50, 253, 50, 222, 205, 1, 47, 237, 50, 47, 16, + 222, 237, 50, 47, 49, 48, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, + 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 51, 21, 35, 160, 21, 27, 27, 21, 21, + 27, 27, 159, 20, 28, 28, 20, 20, 28, 28, 223, 226, 226, 2, 12, 27, 22, 23, 26, 26, + 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 192, 57, 0, 2, 0, 137, 2, 12, 1, + 107, 2, 204, 0, 11, 0, 15, 0, 26, 64, 11, 14, 15, 15, 9, 146, 3, 12, 15, 6, + 146, 0, 0, 47, 253, 222, 205, 1, 47, 237, 51, 47, 205, 49, 48, 19, 34, 38, 53, 52, + 54, 51, 50, 22, 21, 20, 6, 39, 51, 21, 35, 250, 21, 28, 28, 21, 21, 28, 28, 134, + 226, 226, 2, 12, 27, 23, 23, 27, 27, 23, 23, 27, 192, 57, 0, 3, 0, 107, 2, 12, + 1, 137, 2, 251, 0, 11, 0, 23, 0, 27, 0, 102, 64, 11, 27, 24, 17, 0, 77, 27, + 16, 16, 0, 77, 24, 184, 255, 232, 179, 20, 0, 77, 24, 184, 255, 232, 64, 45, 17, 0, + 77, 24, 27, 26, 112, 25, 160, 25, 176, 25, 3, 25, 25, 21, 146, 127, 15, 1, 15, 3, + 146, 64, 112, 9, 1, 9, 27, 24, 128, 25, 31, 26, 47, 26, 63, 26, 3, 26, 18, 6, + 146, 12, 0, 0, 47, 50, 237, 50, 220, 113, 50, 26, 205, 50, 1, 47, 93, 26, 237, 222, + 93, 237, 51, 47, 93, 51, 205, 50, 49, 48, 43, 43, 43, 43, 19, 34, 38, 53, 52, 54, + 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 23, + 7, 39, 155, 20, 28, 28, 20, 21, 28, 28, 169, 21, 28, 28, 21, 20, 28, 28, 162, 85, + 40, 99, 2, 12, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, + 239, 126, 34, 113, 0, 3, 0, 107, 2, 12, 1, 137, 2, 251, 0, 11, 0, 23, 0, 27, + 0, 102, 185, 0, 25, 255, 240, 64, 62, 16, 0, 77, 24, 24, 21, 0, 77, 24, 16, 20, + 0, 77, 24, 24, 17, 0, 77, 24, 25, 26, 111, 27, 1, 127, 27, 159, 27, 175, 27, 191, + 27, 4, 27, 27, 9, 21, 146, 127, 15, 1, 15, 3, 146, 64, 9, 25, 24, 128, 27, 26, + 64, 26, 31, 72, 26, 26, 18, 6, 146, 12, 0, 0, 47, 50, 237, 50, 51, 47, 43, 51, + 26, 205, 50, 1, 47, 26, 237, 222, 93, 237, 17, 51, 47, 93, 113, 51, 205, 50, 49, 48, + 43, 43, 43, 43, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 39, 23, 7, 39, 155, 20, 28, 28, 20, 21, 28, 28, + 169, 21, 28, 28, 21, 20, 28, 28, 68, 54, 99, 40, 2, 12, 27, 22, 23, 26, 26, 23, + 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 239, 47, 113, 34, 0, 3, 0, 107, 2, 12, + 1, 137, 2, 230, 0, 11, 0, 23, 0, 29, 0, 58, 64, 28, 28, 26, 24, 96, 29, 29, + 9, 21, 146, 15, 3, 146, 9, 27, 25, 28, 24, 26, 31, 29, 1, 29, 29, 18, 6, 146, + 12, 0, 0, 47, 50, 237, 50, 51, 47, 113, 205, 221, 50, 205, 50, 1, 47, 237, 222, 237, + 18, 57, 25, 47, 26, 205, 51, 205, 49, 48, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, + 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 55, 23, 55, 23, 7, + 155, 20, 28, 28, 20, 21, 28, 28, 169, 21, 28, 28, 21, 20, 28, 28, 226, 26, 84, 84, + 26, 110, 2, 12, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, + 178, 40, 54, 54, 40, 85, 0, 2, 0, 113, 2, 11, 1, 132, 2, 204, 0, 29, 0, 33, + 0, 73, 64, 12, 18, 24, 14, 0, 77, 18, 32, 12, 13, 0, 76, 3, 184, 255, 232, 64, + 25, 12, 0, 77, 29, 0, 16, 33, 33, 14, 16, 31, 31, 1, 30, 33, 20, 29, 29, 20, + 11, 26, 5, 14, 14, 5, 0, 47, 51, 47, 16, 205, 220, 205, 50, 47, 16, 222, 205, 1, + 47, 51, 47, 47, 205, 51, 47, 16, 220, 205, 49, 48, 43, 43, 43, 1, 14, 3, 35, 34, + 38, 39, 38, 38, 35, 34, 6, 7, 39, 62, 3, 51, 50, 22, 23, 22, 22, 51, 50, 54, + 55, 39, 51, 21, 35, 1, 132, 3, 16, 22, 30, 17, 16, 30, 13, 15, 18, 11, 15, 23, + 6, 40, 3, 15, 22, 28, 18, 17, 29, 13, 16, 17, 11, 15, 24, 6, 211, 227, 227, 2, + 92, 11, 26, 22, 16, 10, 8, 7, 7, 25, 13, 18, 11, 26, 23, 16, 10, 8, 8, 6, + 24, 13, 94, 57, 0, 3, 0, 80, 2, 145, 1, 164, 3, 62, 0, 3, 0, 15, 0, 27, + 0, 44, 64, 19, 0, 3, 2, 1, 1, 25, 19, 7, 13, 22, 10, 4, 64, 0, 128, 2, + 2, 16, 4, 0, 47, 51, 51, 47, 26, 205, 26, 16, 205, 50, 1, 47, 205, 220, 205, 51, + 47, 51, 205, 50, 49, 48, 19, 23, 7, 39, 7, 34, 38, 53, 52, 54, 51, 50, 22, 21, + 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 226, 70, 40, 84, 43, 21, + 28, 28, 21, 20, 28, 28, 222, 20, 28, 28, 20, 20, 29, 29, 3, 62, 107, 34, 95, 127, + 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 0, 3, 0, 80, + 2, 145, 1, 164, 3, 62, 0, 3, 0, 15, 0, 27, 0, 52, 64, 23, 3, 0, 0, 13, + 7, 25, 1, 2, 2, 19, 25, 10, 22, 16, 64, 0, 3, 128, 2, 1, 1, 4, 16, 0, + 47, 51, 51, 47, 51, 26, 205, 50, 26, 16, 205, 50, 1, 47, 205, 51, 47, 51, 16, 220, + 205, 51, 47, 51, 49, 48, 1, 7, 39, 55, 23, 34, 38, 53, 52, 54, 51, 50, 22, 21, + 20, 6, 33, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 1, 74, 86, 40, 72, 95, + 20, 28, 28, 20, 21, 28, 28, 254, 249, 20, 29, 29, 20, 20, 28, 28, 3, 16, 95, 34, + 107, 173, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 0, 3, + 0, 80, 2, 145, 1, 164, 3, 62, 0, 11, 0, 23, 0, 29, 0, 60, 64, 26, 21, 15, + 15, 29, 3, 64, 9, 9, 28, 26, 24, 96, 29, 28, 24, 64, 27, 25, 128, 26, 29, 29, + 18, 6, 12, 0, 0, 47, 50, 205, 50, 51, 47, 205, 26, 221, 50, 26, 205, 50, 1, 25, + 47, 26, 205, 51, 205, 51, 24, 47, 26, 205, 17, 51, 47, 205, 49, 48, 19, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, + 39, 55, 23, 55, 23, 7, 129, 20, 29, 29, 20, 20, 28, 28, 222, 20, 28, 28, 20, 21, + 28, 28, 226, 26, 57, 57, 26, 83, 2, 145, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, + 23, 26, 26, 23, 22, 27, 133, 40, 35, 35, 40, 66, 255, 255, 0, 91, 0, 0, 1, 204, + 3, 62, 2, 38, 0, 40, 0, 0, 1, 7, 0, 67, 0, 14, 0, 137, 0, 19, 185, 0, + 1, 255, 241, 64, 9, 15, 13, 0, 10, 80, 1, 1, 14, 79, 43, 43, 52, 0, 0, 0, + 255, 255, 0, 91, 0, 0, 1, 204, 3, 26, 2, 38, 0, 40, 0, 0, 1, 7, 0, 131, + 0, 18, 0, 139, 0, 26, 177, 2, 1, 184, 255, 249, 64, 13, 14, 32, 0, 10, 80, 2, + 1, 24, 79, 1, 1, 12, 79, 43, 43, 43, 52, 52, 0, 1, 0, 18, 255, 254, 1, 204, + 2, 107, 0, 36, 0, 121, 64, 31, 23, 32, 18, 0, 77, 23, 32, 16, 0, 77, 23, 24, + 15, 0, 77, 18, 40, 18, 0, 77, 18, 24, 16, 0, 77, 18, 32, 15, 0, 77, 4, 184, + 255, 232, 64, 45, 9, 10, 0, 76, 35, 35, 20, 118, 5, 38, 28, 15, 13, 31, 13, 2, + 13, 13, 36, 115, 0, 31, 1, 8, 31, 32, 37, 36, 31, 121, 33, 28, 25, 124, 0, 2, + 2, 33, 65, 30, 68, 17, 124, 10, 67, 0, 63, 237, 63, 63, 57, 47, 51, 237, 50, 16, + 237, 50, 1, 16, 214, 221, 94, 93, 237, 50, 47, 93, 50, 16, 222, 237, 51, 47, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 19, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 39, + 55, 22, 22, 51, 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 17, 35, 17, 35, 53, 33, + 21, 35, 185, 45, 43, 88, 99, 21, 42, 63, 43, 13, 27, 11, 3, 5, 15, 13, 49, 51, + 17, 30, 41, 24, 19, 39, 21, 82, 85, 1, 101, 190, 1, 120, 13, 108, 93, 39, 69, 52, + 30, 1, 2, 65, 1, 1, 70, 52, 38, 51, 32, 13, 7, 6, 254, 205, 2, 37, 70, 70, + 255, 255, 0, 54, 0, 0, 1, 204, 3, 62, 2, 38, 2, 195, 0, 0, 1, 7, 0, 143, + 0, 71, 0, 137, 0, 16, 64, 11, 1, 68, 12, 10, 8, 2, 80, 1, 1, 11, 79, 43, + 43, 52, 0, 0, 0, 1, 0, 38, 255, 243, 1, 204, 2, 121, 0, 38, 0, 217, 64, 12, + 37, 16, 13, 14, 0, 76, 31, 24, 13, 0, 77, 26, 184, 255, 240, 180, 17, 18, 0, 76, + 26, 184, 255, 232, 180, 15, 16, 0, 76, 26, 184, 255, 224, 179, 14, 0, 77, 17, 184, 255, + 240, 179, 18, 0, 77, 17, 184, 255, 224, 179, 17, 0, 77, 17, 184, 255, 216, 179, 12, 0, + 77, 17, 184, 255, 224, 179, 11, 0, 77, 17, 184, 255, 232, 179, 10, 0, 77, 17, 184, 255, + 240, 179, 9, 0, 77, 16, 184, 255, 240, 179, 16, 0, 77, 9, 184, 255, 240, 179, 18, 0, + 77, 9, 184, 255, 232, 179, 17, 0, 77, 9, 184, 255, 224, 180, 11, 12, 0, 76, 2, 184, + 255, 240, 179, 18, 0, 77, 2, 184, 255, 232, 179, 17, 0, 77, 2, 184, 255, 224, 64, 31, + 16, 0, 77, 14, 14, 3, 3, 24, 40, 12, 15, 118, 34, 39, 14, 121, 13, 13, 0, 23, + 23, 18, 124, 29, 70, 4, 4, 7, 124, 0, 69, 0, 63, 237, 50, 47, 63, 237, 50, 47, + 17, 57, 47, 237, 1, 16, 214, 237, 50, 16, 206, 50, 47, 50, 47, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 50, 22, 23, 7, + 38, 38, 35, 34, 14, 2, 7, 51, 21, 35, 22, 22, 51, 50, 62, 2, 55, 23, 14, 3, + 35, 34, 46, 2, 53, 52, 62, 2, 1, 39, 61, 85, 18, 21, 17, 70, 49, 43, 65, 45, + 25, 4, 228, 229, 7, 96, 85, 19, 40, 36, 29, 8, 21, 7, 27, 41, 54, 33, 57, 96, + 69, 38, 36, 68, 94, 2, 121, 29, 11, 64, 9, 24, 31, 55, 78, 47, 70, 103, 120, 7, + 11, 12, 6, 66, 5, 13, 14, 9, 43, 82, 120, 78, 78, 120, 82, 43, 0, 1, 0, 55, + 255, 243, 1, 190, 2, 121, 0, 49, 0, 216, 64, 11, 44, 24, 14, 0, 77, 44, 16, 13, + 0, 77, 39, 184, 255, 232, 179, 10, 0, 77, 39, 184, 255, 240, 179, 9, 0, 77, 36, 184, + 255, 240, 179, 13, 0, 77, 36, 184, 255, 208, 179, 10, 0, 77, 35, 184, 255, 240, 179, 15, + 0, 77, 27, 184, 255, 232, 179, 17, 0, 77, 26, 184, 255, 224, 179, 18, 0, 77, 20, 184, + 255, 232, 179, 18, 0, 77, 20, 184, 255, 240, 179, 17, 0, 77, 20, 184, 255, 224, 180, 15, + 16, 0, 76, 20, 184, 255, 232, 179, 14, 0, 77, 19, 184, 255, 224, 64, 62, 14, 0, 77, + 11, 16, 14, 15, 0, 76, 11, 32, 9, 10, 0, 76, 2, 16, 17, 0, 77, 1, 40, 18, + 0, 77, 21, 21, 3, 118, 38, 51, 46, 46, 28, 118, 0, 13, 16, 13, 2, 13, 50, 89, + 8, 1, 8, 41, 25, 33, 16, 47, 47, 0, 124, 41, 70, 22, 22, 25, 124, 16, 69, 0, + 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 17, 18, 57, 93, 1, 16, 214, 93, 237, 51, + 47, 16, 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 55, 50, 54, 53, 52, 46, 2, 39, 46, 3, 53, 52, 54, 51, + 50, 30, 2, 23, 7, 38, 38, 35, 34, 6, 21, 20, 30, 2, 23, 30, 3, 21, 20, 6, + 35, 34, 46, 2, 39, 55, 22, 22, 234, 63, 66, 24, 40, 50, 26, 30, 55, 43, 25, 102, + 91, 25, 49, 42, 33, 10, 25, 20, 71, 43, 45, 66, 19, 33, 44, 26, 38, 63, 46, 25, + 110, 102, 33, 58, 45, 34, 9, 24, 20, 79, 58, 48, 48, 29, 41, 31, 23, 10, 12, 30, + 40, 54, 37, 81, 91, 7, 10, 14, 7, 70, 12, 25, 45, 45, 26, 36, 27, 22, 11, 16, + 32, 44, 60, 43, 81, 87, 9, 14, 14, 6, 70, 11, 31, 0, 1, 0, 90, 0, 0, 1, + 155, 2, 107, 0, 11, 0, 43, 64, 21, 8, 5, 6, 11, 2, 1, 115, 6, 6, 12, 13, + 0, 7, 121, 9, 65, 1, 6, 121, 4, 68, 0, 63, 237, 50, 63, 237, 50, 1, 17, 18, + 57, 47, 253, 205, 50, 16, 205, 50, 49, 48, 1, 17, 51, 21, 33, 53, 51, 17, 35, 53, + 33, 21, 1, 35, 120, 254, 191, 119, 119, 1, 65, 2, 37, 254, 33, 70, 70, 1, 223, 70, + 70, 255, 255, 0, 90, 0, 0, 1, 155, 3, 26, 2, 38, 2, 182, 0, 0, 1, 7, 0, + 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, 14, 32, 4, 2, 80, 2, 9, 24, + 79, 1, 9, 12, 79, 43, 43, 43, 52, 52, 0, 0, 0, 0, 1, 0, 54, 255, 243, 1, + 164, 2, 107, 0, 19, 0, 74, 64, 23, 16, 24, 15, 16, 0, 76, 10, 24, 14, 0, 77, + 10, 32, 12, 13, 0, 76, 10, 24, 11, 0, 77, 5, 184, 255, 240, 64, 22, 17, 18, 0, + 76, 18, 115, 3, 21, 0, 0, 11, 20, 12, 12, 15, 124, 8, 70, 0, 121, 1, 65, 0, + 63, 237, 63, 237, 50, 47, 1, 16, 198, 50, 47, 16, 222, 237, 49, 48, 43, 43, 43, 43, + 43, 19, 53, 33, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, + 127, 1, 37, 19, 47, 79, 60, 60, 82, 19, 33, 19, 63, 42, 64, 63, 2, 37, 70, 254, + 92, 44, 78, 57, 33, 34, 16, 67, 14, 32, 68, 81, 1, 86, 0, 2, 0, 9, 255, 247, + 1, 222, 2, 107, 0, 28, 0, 40, 0, 86, 185, 0, 1, 255, 240, 64, 12, 11, 13, 0, + 76, 37, 25, 115, 10, 11, 115, 24, 24, 184, 255, 192, 64, 31, 9, 12, 72, 10, 24, 10, + 24, 17, 32, 118, 3, 42, 17, 41, 35, 124, 0, 0, 29, 11, 121, 24, 65, 17, 124, 16, + 70, 29, 124, 6, 70, 0, 63, 237, 63, 237, 63, 237, 18, 57, 47, 237, 1, 16, 198, 16, + 222, 237, 17, 57, 57, 47, 47, 43, 16, 237, 16, 237, 50, 49, 48, 43, 1, 50, 22, 21, + 20, 6, 35, 34, 38, 39, 17, 35, 20, 14, 2, 7, 39, 62, 5, 53, 51, 21, 54, 54, + 19, 50, 54, 53, 52, 38, 35, 34, 7, 21, 22, 22, 1, 81, 69, 72, 73, 77, 23, 48, + 26, 68, 5, 27, 59, 54, 9, 20, 27, 18, 10, 4, 1, 216, 8, 16, 6, 35, 31, 37, + 34, 13, 12, 8, 16, 1, 140, 100, 97, 95, 111, 8, 8, 2, 28, 160, 204, 122, 58, 14, + 73, 6, 24, 47, 76, 119, 168, 115, 225, 1, 1, 254, 179, 60, 76, 63, 64, 3, 255, 3, + 2, 0, 2, 0, 45, 255, 249, 1, 222, 2, 107, 0, 22, 0, 35, 0, 79, 185, 0, 2, + 255, 232, 64, 40, 13, 0, 77, 20, 33, 115, 17, 9, 9, 13, 26, 118, 3, 37, 16, 12, + 115, 13, 36, 18, 65, 29, 124, 0, 11, 121, 16, 0, 16, 0, 16, 13, 14, 65, 13, 68, + 23, 124, 6, 70, 0, 63, 237, 63, 63, 18, 57, 57, 47, 47, 16, 237, 16, 237, 63, 1, + 16, 214, 237, 50, 16, 222, 237, 17, 57, 47, 51, 237, 50, 49, 48, 43, 1, 50, 22, 21, + 20, 6, 35, 34, 38, 39, 17, 35, 17, 35, 17, 51, 21, 51, 53, 51, 21, 54, 54, 19, + 50, 54, 53, 52, 38, 35, 34, 34, 7, 21, 22, 22, 1, 81, 69, 72, 73, 77, 23, 48, + 26, 113, 73, 73, 113, 74, 8, 16, 6, 35, 31, 37, 34, 6, 13, 6, 8, 16, 1, 135, + 95, 97, 95, 111, 8, 8, 1, 44, 254, 203, 2, 107, 240, 240, 230, 1, 1, 254, 184, 60, + 76, 63, 59, 2, 251, 3, 2, 0, 1, 0, 18, 0, 0, 1, 191, 2, 107, 0, 25, 0, + 107, 185, 0, 20, 255, 232, 179, 12, 0, 77, 20, 184, 255, 240, 179, 11, 0, 77, 20, 184, + 255, 232, 179, 10, 0, 77, 20, 184, 255, 224, 64, 44, 9, 0, 77, 2, 24, 18, 0, 77, + 2, 40, 17, 0, 77, 25, 115, 24, 15, 13, 1, 8, 13, 13, 24, 27, 6, 14, 115, 9, + 10, 26, 25, 68, 3, 124, 18, 18, 8, 14, 9, 121, 11, 65, 8, 68, 0, 63, 63, 237, + 50, 18, 57, 47, 237, 63, 1, 16, 214, 221, 237, 50, 16, 206, 50, 47, 94, 93, 16, 237, + 49, 48, 43, 43, 43, 43, 43, 43, 37, 52, 38, 35, 34, 6, 7, 17, 35, 17, 35, 53, + 33, 21, 35, 21, 54, 54, 51, 50, 30, 2, 21, 21, 35, 1, 108, 40, 51, 26, 51, 11, + 82, 85, 1, 101, 190, 14, 56, 29, 48, 63, 37, 15, 83, 167, 83, 70, 10, 4, 254, 206, + 2, 37, 70, 70, 174, 5, 9, 28, 56, 83, 55, 167, 255, 255, 0, 64, 0, 0, 1, 235, + 3, 62, 2, 38, 0, 46, 0, 0, 1, 7, 0, 143, 255, 255, 0, 137, 0, 19, 185, 0, + 1, 255, 232, 64, 9, 25, 23, 16, 8, 80, 1, 0, 24, 79, 43, 43, 52, 0, 0, 0, + 255, 255, 0, 55, 0, 0, 1, 189, 3, 62, 2, 38, 2, 200, 0, 0, 1, 7, 0, 67, + 0, 4, 0, 137, 0, 16, 64, 11, 1, 0, 21, 19, 0, 9, 80, 1, 1, 20, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 9, 255, 248, 1, 238, 3, 35, 2, 38, 2, 211, 0, 0, + 1, 7, 3, 139, 0, 0, 0, 139, 0, 19, 185, 0, 1, 255, 254, 64, 9, 41, 49, 11, + 21, 80, 1, 11, 38, 79, 43, 43, 52, 0, 0, 0, 0, 1, 0, 49, 255, 91, 1, 198, + 2, 107, 0, 11, 0, 44, 64, 22, 6, 115, 9, 9, 10, 2, 115, 5, 13, 1, 115, 10, + 12, 3, 11, 65, 8, 6, 1, 121, 10, 68, 0, 63, 237, 51, 206, 63, 51, 1, 16, 214, + 237, 16, 222, 237, 17, 57, 47, 237, 49, 48, 19, 17, 51, 17, 51, 17, 35, 21, 35, 53, + 35, 17, 131, 240, 83, 164, 78, 163, 2, 107, 253, 219, 2, 37, 253, 149, 165, 165, 2, 107, + 255, 255, 0, 9, 0, 0, 1, 235, 2, 107, 2, 6, 0, 36, 0, 0, 255, 255, 0, 54, + 255, 251, 1, 195, 2, 107, 2, 6, 1, 219, 0, 0, 255, 255, 0, 54, 255, 251, 1, 195, + 2, 113, 2, 6, 0, 37, 0, 0, 0, 1, 0, 54, 0, 0, 1, 204, 2, 107, 0, 9, + 0, 37, 64, 18, 3, 11, 6, 6, 5, 115, 0, 9, 10, 5, 0, 121, 8, 68, 4, 121, + 1, 65, 0, 63, 237, 63, 237, 50, 1, 16, 214, 213, 237, 50, 47, 16, 206, 49, 48, 55, + 17, 33, 21, 35, 17, 51, 21, 33, 53, 143, 1, 61, 235, 134, 254, 207, 70, 2, 37, 70, + 254, 33, 70, 70, 0, 2, 0, 18, 255, 91, 1, 217, 2, 107, 0, 16, 0, 25, 0, 101, + 64, 20, 17, 115, 10, 11, 115, 25, 0, 10, 1, 8, 10, 25, 10, 25, 4, 16, 115, 13, + 27, 23, 184, 255, 216, 180, 17, 18, 0, 76, 23, 184, 255, 232, 179, 16, 0, 77, 23, 184, + 255, 240, 64, 22, 15, 0, 77, 23, 4, 4, 0, 115, 3, 26, 17, 121, 10, 65, 23, 12, + 4, 121, 15, 1, 0, 68, 0, 63, 205, 50, 237, 50, 50, 63, 237, 1, 16, 214, 237, 51, + 47, 51, 43, 43, 43, 16, 222, 237, 17, 57, 57, 47, 47, 94, 93, 16, 237, 16, 237, 49, + 48, 51, 21, 35, 53, 51, 62, 3, 55, 55, 33, 17, 51, 21, 35, 53, 3, 7, 14, 3, + 7, 51, 17, 96, 78, 36, 35, 36, 17, 5, 3, 3, 1, 25, 39, 78, 164, 2, 2, 6, + 15, 30, 27, 203, 165, 235, 48, 109, 121, 132, 72, 67, 253, 219, 235, 165, 2, 37, 67, 50, + 108, 107, 102, 45, 1, 223, 255, 255, 0, 91, 0, 0, 1, 204, 2, 107, 2, 6, 0, 40, + 0, 0, 0, 1, 0, 4, 0, 0, 1, 241, 2, 107, 0, 45, 0, 138, 64, 76, 27, 39, + 0, 33, 16, 33, 2, 33, 39, 44, 39, 120, 38, 33, 20, 38, 38, 33, 24, 44, 115, 1, + 6, 18, 12, 18, 21, 18, 120, 17, 12, 20, 17, 17, 12, 21, 1, 1, 7, 28, 28, 159, + 38, 1, 38, 47, 17, 17, 7, 46, 38, 39, 68, 28, 27, 65, 24, 21, 21, 12, 44, 1, + 1, 33, 12, 12, 22, 65, 18, 17, 65, 7, 6, 68, 0, 68, 0, 63, 63, 51, 63, 51, + 63, 57, 17, 51, 51, 17, 51, 17, 51, 17, 51, 63, 51, 63, 51, 1, 16, 198, 51, 47, + 16, 206, 93, 50, 47, 17, 57, 47, 51, 135, 16, 43, 135, 125, 196, 1, 17, 51, 24, 16, + 237, 50, 135, 16, 43, 135, 125, 196, 1, 93, 17, 51, 49, 48, 51, 17, 14, 3, 7, 35, + 62, 3, 55, 46, 3, 39, 51, 22, 22, 23, 17, 51, 17, 54, 54, 55, 51, 14, 3, 7, + 30, 3, 23, 35, 46, 3, 39, 17, 213, 20, 35, 32, 28, 12, 82, 12, 34, 40, 43, 21, + 18, 34, 35, 35, 18, 82, 29, 57, 31, 74, 30, 58, 29, 82, 18, 36, 34, 34, 18, 21, + 43, 41, 34, 12, 83, 12, 28, 32, 36, 19, 1, 45, 24, 70, 81, 86, 40, 43, 94, 88, + 78, 27, 34, 66, 69, 76, 44, 77, 133, 57, 1, 11, 254, 247, 57, 132, 76, 44, 76, 69, + 66, 34, 27, 78, 88, 94, 43, 40, 85, 81, 70, 24, 254, 212, 0, 1, 0, 38, 255, 244, + 1, 209, 2, 118, 0, 52, 0, 185, 64, 21, 48, 24, 16, 0, 77, 44, 24, 16, 0, 77, + 37, 32, 14, 0, 77, 37, 16, 13, 0, 77, 31, 184, 255, 208, 179, 18, 0, 77, 31, 184, + 255, 216, 179, 17, 0, 77, 31, 184, 255, 224, 179, 8, 0, 77, 27, 184, 255, 232, 180, 17, + 18, 0, 76, 23, 184, 255, 224, 179, 18, 0, 77, 23, 184, 255, 232, 179, 17, 0, 77, 19, + 184, 255, 216, 180, 17, 18, 0, 76, 19, 184, 255, 224, 64, 54, 8, 10, 0, 76, 14, 32, + 17, 18, 0, 76, 4, 16, 15, 16, 0, 76, 4, 24, 14, 0, 77, 24, 6, 118, 21, 21, + 46, 118, 29, 54, 52, 52, 13, 13, 39, 53, 24, 52, 121, 0, 0, 16, 40, 40, 43, 124, + 34, 70, 12, 12, 9, 124, 16, 69, 0, 63, 237, 50, 47, 63, 237, 50, 47, 17, 57, 47, + 237, 57, 1, 16, 198, 50, 47, 50, 47, 16, 222, 237, 51, 47, 237, 50, 49, 48, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 51, 50, 62, 2, 53, 52, + 38, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 21, 20, 6, 7, 30, 3, 21, 20, + 14, 2, 35, 34, 46, 2, 39, 55, 22, 22, 51, 50, 54, 53, 52, 46, 2, 35, 35, 141, + 33, 30, 64, 53, 34, 67, 54, 48, 79, 20, 27, 23, 96, 56, 44, 75, 54, 30, 55, 54, + 27, 49, 38, 22, 34, 63, 88, 54, 34, 59, 49, 36, 10, 25, 21, 84, 57, 72, 86, 32, + 54, 73, 41, 42, 1, 106, 9, 24, 41, 32, 41, 51, 21, 11, 65, 15, 22, 19, 39, 61, + 41, 43, 76, 17, 7, 26, 40, 54, 36, 50, 69, 44, 20, 10, 14, 15, 5, 66, 11, 29, + 53, 62, 36, 47, 26, 10, 0, 1, 0, 55, 0, 0, 1, 189, 2, 107, 0, 17, 0, 76, + 64, 47, 41, 8, 73, 8, 2, 10, 8, 1, 5, 17, 37, 17, 2, 8, 17, 12, 17, 120, + 3, 8, 20, 3, 3, 8, 12, 115, 9, 19, 3, 115, 0, 0, 16, 0, 2, 0, 18, 3, + 17, 68, 11, 68, 12, 8, 65, 2, 65, 0, 63, 63, 51, 63, 63, 51, 1, 16, 214, 93, + 237, 16, 222, 237, 135, 16, 43, 135, 125, 196, 1, 93, 93, 93, 49, 48, 51, 17, 51, 17, + 62, 3, 55, 51, 17, 35, 17, 14, 3, 7, 55, 75, 30, 48, 51, 61, 41, 84, 75, 28, + 53, 56, 60, 34, 2, 107, 254, 36, 73, 111, 105, 112, 75, 253, 149, 1, 238, 53, 105, 118, + 135, 83, 255, 255, 0, 55, 0, 0, 1, 189, 3, 35, 2, 38, 2, 200, 0, 0, 1, 7, + 3, 139, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 21, 29, 0, 9, 80, 1, 1, 18, + 79, 43, 43, 52, 0, 0, 255, 255, 0, 64, 0, 0, 1, 235, 2, 107, 2, 6, 0, 46, + 0, 0, 0, 1, 0, 13, 255, 247, 1, 199, 2, 107, 0, 21, 0, 90, 181, 12, 16, 13, + 0, 77, 6, 184, 255, 240, 179, 18, 0, 77, 6, 184, 255, 232, 179, 17, 0, 77, 6, 184, + 255, 240, 180, 11, 12, 0, 76, 5, 184, 255, 240, 64, 28, 18, 0, 77, 0, 115, 0, 17, + 1, 8, 17, 17, 9, 20, 115, 19, 23, 9, 22, 20, 68, 0, 121, 17, 65, 9, 124, 8, + 70, 0, 63, 237, 63, 237, 63, 1, 16, 198, 16, 222, 237, 17, 57, 47, 94, 93, 237, 49, + 48, 43, 43, 43, 43, 43, 19, 6, 6, 7, 14, 3, 7, 39, 54, 54, 55, 62, 3, 53, + 33, 17, 35, 17, 238, 3, 12, 22, 11, 30, 43, 57, 38, 9, 44, 48, 20, 10, 13, 7, + 3, 1, 41, 82, 2, 37, 102, 180, 81, 40, 70, 52, 31, 2, 72, 7, 65, 69, 36, 94, + 108, 118, 59, 253, 149, 2, 37, 255, 255, 0, 32, 0, 0, 1, 212, 2, 107, 2, 6, 0, + 48, 0, 0, 255, 255, 0, 45, 0, 0, 1, 199, 2, 107, 2, 6, 0, 43, 0, 0, 255, + 255, 0, 29, 255, 243, 1, 216, 2, 121, 2, 6, 0, 50, 0, 0, 0, 1, 0, 45, 0, + 0, 1, 199, 2, 107, 0, 7, 0, 32, 64, 16, 0, 115, 7, 9, 3, 115, 4, 8, 2, + 121, 5, 65, 4, 68, 0, 68, 0, 63, 63, 63, 237, 1, 16, 214, 237, 16, 222, 237, 49, + 48, 33, 17, 35, 17, 35, 17, 33, 17, 1, 117, 246, 82, 1, 154, 2, 37, 253, 219, 2, + 107, 253, 149, 255, 255, 0, 73, 0, 0, 1, 199, 2, 113, 2, 6, 0, 51, 0, 0, 255, + 255, 0, 46, 255, 243, 1, 204, 2, 121, 2, 6, 0, 38, 0, 0, 255, 255, 0, 39, 0, + 0, 1, 205, 2, 107, 2, 6, 0, 55, 0, 0, 0, 1, 0, 9, 255, 248, 1, 238, 2, + 107, 0, 37, 0, 116, 185, 0, 29, 255, 240, 179, 14, 0, 77, 27, 184, 255, 240, 64, 59, + 8, 0, 77, 3, 24, 13, 0, 77, 26, 20, 17, 20, 120, 21, 26, 20, 21, 21, 26, 6, + 16, 9, 10, 0, 76, 6, 12, 17, 12, 120, 11, 6, 20, 11, 11, 6, 17, 11, 21, 39, + 34, 34, 11, 38, 26, 17, 6, 6, 11, 0, 124, 31, 70, 21, 20, 65, 12, 11, 65, 0, + 63, 51, 63, 51, 63, 237, 18, 57, 17, 51, 51, 1, 16, 198, 50, 47, 16, 206, 17, 57, + 135, 16, 43, 135, 125, 196, 1, 43, 135, 24, 16, 43, 135, 125, 196, 49, 48, 1, 43, 43, + 43, 55, 50, 62, 2, 55, 55, 46, 3, 39, 51, 30, 3, 23, 54, 54, 55, 51, 14, 3, + 7, 14, 3, 35, 34, 38, 39, 55, 22, 22, 113, 24, 36, 29, 23, 11, 8, 37, 70, 61, + 50, 17, 90, 15, 41, 47, 51, 24, 37, 64, 27, 89, 20, 39, 39, 39, 20, 18, 38, 51, + 71, 49, 20, 45, 8, 15, 11, 32, 63, 13, 22, 32, 19, 14, 58, 127, 122, 109, 40, 38, + 92, 99, 99, 46, 89, 185, 100, 63, 108, 99, 93, 48, 42, 78, 60, 36, 9, 5, 70, 5, + 8, 0, 3, 0, 42, 0, 0, 1, 212, 2, 147, 0, 21, 0, 28, 0, 33, 0, 151, 64, + 17, 33, 16, 13, 14, 0, 76, 30, 24, 14, 0, 77, 30, 16, 13, 0, 77, 27, 184, 255, + 232, 180, 13, 14, 0, 76, 24, 184, 255, 232, 179, 14, 0, 77, 24, 184, 255, 240, 64, 27, + 13, 0, 77, 29, 24, 13, 0, 77, 32, 6, 14, 115, 25, 3, 17, 17, 0, 29, 24, 14, + 0, 77, 29, 118, 9, 35, 22, 184, 255, 232, 64, 38, 13, 14, 0, 76, 22, 118, 31, 0, + 1, 64, 0, 80, 0, 112, 0, 192, 0, 208, 0, 5, 47, 0, 1, 0, 34, 32, 25, 124, + 14, 17, 16, 68, 31, 26, 124, 6, 3, 4, 0, 47, 221, 50, 237, 50, 63, 221, 50, 237, + 50, 1, 16, 214, 93, 93, 113, 237, 43, 16, 214, 237, 43, 17, 57, 47, 51, 51, 237, 50, + 50, 43, 49, 48, 43, 43, 43, 43, 43, 43, 19, 52, 54, 55, 53, 51, 21, 22, 22, 21, + 20, 14, 2, 7, 21, 35, 53, 46, 3, 55, 20, 22, 23, 17, 6, 6, 5, 52, 39, 17, + 54, 42, 97, 80, 73, 79, 97, 25, 47, 65, 39, 73, 40, 65, 47, 25, 82, 45, 50, 50, + 45, 1, 6, 94, 94, 1, 76, 118, 124, 11, 74, 74, 11, 124, 118, 59, 90, 63, 36, 6, + 78, 78, 6, 36, 63, 90, 59, 82, 92, 11, 1, 114, 11, 93, 81, 160, 24, 254, 144, 23, + 255, 255, 0, 25, 0, 0, 1, 219, 2, 107, 2, 6, 0, 59, 0, 0, 0, 1, 0, 45, + 255, 91, 1, 217, 2, 107, 0, 11, 0, 40, 64, 20, 3, 115, 6, 10, 115, 7, 13, 2, + 115, 11, 12, 6, 2, 121, 9, 11, 68, 4, 0, 65, 0, 63, 50, 63, 206, 237, 50, 1, + 16, 214, 237, 16, 222, 237, 213, 237, 49, 48, 19, 51, 17, 51, 17, 51, 17, 51, 21, 35, + 53, 33, 45, 82, 225, 82, 39, 78, 254, 162, 2, 107, 253, 219, 2, 37, 253, 219, 235, 165, + 0, 1, 0, 54, 0, 0, 1, 191, 2, 107, 0, 23, 0, 77, 64, 16, 19, 48, 10, 0, + 77, 19, 24, 9, 0, 77, 19, 40, 8, 0, 77, 3, 184, 255, 224, 179, 18, 0, 77, 3, + 184, 255, 232, 64, 23, 17, 0, 77, 8, 12, 115, 11, 25, 0, 115, 21, 24, 5, 124, 16, + 16, 12, 22, 65, 12, 68, 9, 65, 0, 63, 63, 63, 18, 57, 47, 237, 1, 16, 214, 237, + 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 19, 20, 30, 2, 51, 50, 54, 55, 17, + 51, 17, 35, 53, 6, 6, 35, 34, 46, 2, 53, 53, 51, 137, 11, 28, 48, 36, 32, 59, + 14, 82, 82, 15, 66, 35, 60, 76, 43, 16, 83, 1, 184, 38, 57, 38, 18, 10, 4, 1, + 60, 253, 149, 232, 5, 9, 31, 58, 82, 51, 179, 0, 1, 0, 45, 0, 0, 1, 199, 2, + 107, 0, 11, 0, 46, 64, 23, 6, 115, 3, 3, 11, 7, 115, 10, 13, 2, 115, 11, 12, + 6, 2, 121, 11, 68, 8, 4, 4, 0, 65, 0, 63, 50, 47, 50, 63, 237, 50, 1, 16, + 214, 237, 16, 222, 237, 17, 57, 47, 237, 49, 48, 19, 51, 17, 51, 17, 51, 17, 51, 17, + 51, 17, 33, 45, 75, 93, 75, 92, 75, 254, 102, 2, 107, 253, 219, 1, 58, 254, 198, 2, + 37, 253, 149, 0, 1, 0, 45, 255, 91, 1, 217, 2, 107, 0, 15, 0, 65, 64, 37, 6, + 115, 3, 3, 15, 7, 115, 79, 10, 95, 10, 175, 10, 191, 10, 4, 10, 14, 115, 11, 17, + 2, 115, 15, 16, 10, 6, 2, 121, 13, 15, 68, 8, 4, 4, 0, 65, 0, 63, 50, 47, + 50, 63, 206, 237, 50, 50, 1, 16, 214, 237, 16, 222, 237, 213, 93, 237, 17, 57, 47, 237, + 49, 48, 19, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 21, 35, 53, 33, 45, 75, + 82, 75, 82, 75, 39, 78, 254, 162, 2, 107, 253, 219, 1, 58, 254, 198, 2, 37, 253, 219, + 235, 165, 0, 2, 0, 18, 255, 249, 1, 204, 2, 107, 0, 19, 0, 36, 0, 128, 64, 31, + 35, 32, 15, 0, 77, 34, 24, 16, 0, 77, 34, 16, 14, 0, 77, 23, 48, 16, 0, 77, + 23, 32, 14, 0, 77, 22, 40, 15, 0, 77, 18, 184, 255, 232, 179, 10, 0, 77, 18, 184, + 255, 240, 179, 9, 0, 77, 2, 184, 255, 216, 179, 18, 0, 77, 2, 184, 255, 224, 179, 17, + 0, 77, 2, 184, 255, 240, 64, 27, 9, 10, 0, 76, 20, 118, 0, 38, 28, 12, 115, 9, + 10, 37, 25, 124, 15, 15, 32, 9, 121, 12, 65, 32, 124, 5, 70, 0, 63, 237, 63, 237, + 18, 57, 47, 237, 1, 16, 214, 221, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 37, 20, 14, 2, 35, 34, 38, 39, 17, 35, 53, 51, 21, 54, + 51, 50, 30, 2, 7, 52, 46, 2, 35, 34, 6, 7, 17, 22, 22, 51, 50, 62, 2, 1, + 204, 34, 58, 79, 46, 31, 66, 34, 94, 176, 25, 25, 48, 79, 57, 32, 84, 20, 38, 52, + 33, 9, 20, 10, 13, 24, 12, 28, 49, 36, 20, 194, 56, 77, 47, 21, 8, 8, 2, 28, + 70, 226, 3, 23, 48, 77, 54, 38, 51, 30, 13, 1, 1, 254, 254, 2, 1, 13, 30, 50, + 0, 3, 0, 36, 255, 250, 1, 208, 2, 107, 0, 14, 0, 29, 0, 33, 0, 69, 64, 42, + 28, 16, 17, 18, 0, 76, 18, 24, 17, 18, 0, 76, 15, 118, 15, 0, 1, 8, 0, 33, + 115, 32, 35, 9, 24, 115, 6, 34, 33, 68, 30, 65, 20, 124, 12, 12, 7, 65, 27, 124, + 3, 67, 0, 63, 237, 63, 57, 47, 237, 63, 63, 1, 16, 214, 237, 50, 16, 222, 253, 222, + 94, 93, 237, 49, 48, 43, 43, 37, 20, 6, 35, 34, 38, 39, 17, 51, 21, 54, 54, 51, + 50, 22, 7, 52, 46, 2, 35, 34, 6, 7, 21, 22, 22, 51, 50, 54, 19, 51, 17, 35, + 1, 71, 91, 83, 26, 65, 26, 78, 11, 20, 10, 82, 90, 81, 10, 22, 38, 28, 8, 16, + 10, 12, 21, 10, 48, 41, 140, 78, 78, 194, 100, 100, 7, 8, 2, 98, 227, 2, 2, 103, + 99, 30, 48, 35, 19, 2, 2, 254, 3, 2, 65, 1, 235, 253, 149, 0, 2, 0, 45, 255, + 250, 1, 204, 2, 107, 0, 14, 0, 31, 0, 88, 64, 27, 29, 48, 15, 16, 0, 76, 29, + 24, 14, 0, 77, 18, 64, 16, 0, 77, 18, 48, 15, 0, 77, 18, 24, 14, 0, 77, 14, + 184, 255, 224, 179, 8, 0, 77, 1, 184, 255, 232, 64, 22, 8, 0, 77, 15, 118, 0, 33, + 9, 24, 115, 6, 32, 20, 124, 12, 12, 7, 65, 27, 124, 3, 67, 0, 63, 237, 63, 57, + 47, 237, 1, 16, 214, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 37, + 20, 6, 35, 34, 38, 39, 17, 51, 21, 54, 50, 51, 50, 22, 7, 52, 46, 2, 35, 34, + 34, 7, 17, 22, 22, 51, 50, 62, 2, 1, 204, 131, 128, 37, 82, 37, 82, 17, 34, 18, + 136, 128, 84, 27, 48, 68, 40, 17, 32, 17, 15, 38, 28, 33, 61, 46, 28, 194, 100, 100, + 6, 9, 2, 98, 225, 2, 100, 102, 38, 51, 31, 13, 2, 254, 253, 2, 1, 13, 31, 50, + 0, 1, 0, 46, 255, 243, 1, 213, 2, 121, 0, 38, 0, 165, 64, 84, 37, 40, 18, 0, + 77, 37, 32, 16, 17, 0, 76, 30, 24, 18, 0, 77, 30, 16, 17, 0, 77, 30, 32, 13, + 0, 77, 30, 24, 11, 12, 0, 76, 23, 8, 16, 0, 77, 22, 16, 18, 0, 77, 22, 24, + 17, 0, 77, 22, 56, 13, 0, 77, 13, 24, 18, 0, 77, 13, 16, 17, 0, 77, 13, 32, + 16, 0, 77, 13, 24, 14, 15, 0, 76, 7, 24, 13, 0, 77, 3, 16, 13, 0, 77, 2, + 184, 255, 232, 64, 31, 14, 0, 77, 27, 24, 118, 5, 40, 36, 36, 25, 25, 15, 39, 25, + 121, 26, 26, 0, 16, 16, 21, 124, 10, 70, 35, 35, 32, 124, 0, 69, 0, 63, 237, 50, + 47, 63, 237, 50, 47, 17, 57, 47, 237, 1, 16, 198, 50, 47, 50, 47, 16, 222, 237, 50, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, + 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 39, 55, 30, 3, 51, 50, 54, 55, 35, + 53, 51, 46, 3, 35, 34, 6, 7, 39, 54, 54, 212, 58, 95, 67, 37, 39, 69, 96, 57, + 33, 53, 41, 28, 7, 21, 8, 29, 36, 40, 19, 85, 97, 7, 230, 229, 4, 26, 45, 65, + 43, 49, 70, 17, 21, 18, 85, 2, 121, 41, 82, 121, 79, 80, 121, 81, 41, 9, 14, 13, + 5, 66, 6, 12, 11, 7, 115, 108, 70, 47, 78, 55, 31, 24, 9, 64, 11, 29, 0, 2, + 0, 45, 255, 243, 1, 217, 2, 121, 0, 24, 0, 44, 0, 134, 182, 16, 40, 17, 18, 0, + 76, 12, 184, 255, 216, 179, 18, 0, 77, 12, 184, 255, 224, 179, 17, 0, 77, 6, 184, 255, + 216, 179, 18, 0, 77, 6, 184, 255, 224, 64, 27, 17, 0, 77, 3, 32, 17, 18, 0, 76, + 2, 24, 10, 0, 77, 2, 16, 9, 0, 77, 35, 118, 9, 46, 25, 118, 1, 19, 184, 255, + 192, 64, 31, 9, 12, 72, 19, 0, 21, 115, 22, 45, 20, 121, 15, 0, 31, 0, 2, 0, + 0, 22, 23, 65, 22, 68, 30, 124, 14, 70, 40, 124, 4, 69, 0, 63, 237, 63, 237, 63, + 63, 18, 57, 47, 93, 237, 1, 16, 214, 253, 50, 222, 43, 50, 237, 16, 222, 237, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 43, 19, 51, 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, + 35, 34, 46, 2, 39, 35, 17, 35, 17, 51, 19, 20, 30, 2, 51, 50, 62, 2, 53, 52, + 46, 2, 35, 34, 14, 2, 123, 61, 5, 74, 63, 36, 54, 38, 19, 20, 38, 55, 34, 34, + 52, 36, 20, 1, 60, 78, 78, 139, 8, 16, 25, 17, 17, 25, 17, 8, 8, 17, 25, 17, + 17, 25, 16, 8, 1, 102, 146, 129, 36, 78, 123, 86, 87, 122, 78, 36, 34, 72, 114, 81, + 254, 224, 2, 107, 254, 203, 55, 93, 68, 38, 38, 68, 93, 55, 57, 94, 66, 36, 36, 66, + 94, 0, 2, 0, 57, 0, 0, 1, 202, 2, 113, 0, 28, 0, 43, 0, 150, 185, 0, 31, + 255, 248, 64, 98, 14, 0, 77, 9, 48, 15, 16, 0, 76, 9, 16, 10, 0, 77, 9, 24, + 8, 9, 0, 76, 7, 16, 16, 0, 77, 7, 24, 15, 0, 77, 6, 56, 10, 0, 77, 6, + 48, 9, 0, 77, 6, 56, 8, 0, 77, 4, 16, 18, 0, 77, 4, 8, 17, 0, 77, 28, + 5, 0, 5, 120, 23, 28, 20, 23, 28, 23, 23, 40, 18, 115, 17, 45, 0, 0, 34, 118, + 0, 8, 1, 8, 8, 44, 23, 5, 19, 121, 40, 40, 11, 18, 68, 29, 124, 11, 65, 28, + 0, 68, 0, 63, 50, 63, 237, 63, 18, 57, 47, 237, 50, 50, 1, 16, 214, 94, 93, 237, + 51, 47, 16, 222, 237, 50, 50, 47, 135, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 51, 62, 3, 55, 38, 38, 53, 52, 54, 51, 50, 30, 2, + 23, 17, 35, 53, 35, 34, 34, 39, 14, 3, 7, 19, 34, 14, 2, 21, 20, 30, 2, 51, + 51, 53, 38, 38, 57, 15, 36, 36, 35, 15, 52, 60, 114, 111, 16, 40, 41, 39, 15, 82, + 71, 3, 20, 7, 14, 33, 34, 34, 15, 156, 27, 49, 37, 22, 22, 41, 58, 35, 54, 10, + 42, 36, 74, 68, 60, 23, 25, 86, 58, 97, 98, 2, 3, 6, 4, 253, 158, 243, 1, 21, + 57, 65, 68, 33, 2, 43, 12, 29, 48, 36, 38, 46, 26, 9, 239, 2, 3, 255, 255, 0, + 58, 255, 245, 1, 176, 1, 219, 2, 6, 0, 68, 0, 0, 0, 2, 0, 45, 255, 244, 1, + 204, 2, 181, 0, 34, 0, 53, 0, 161, 64, 21, 48, 24, 15, 0, 77, 48, 16, 14, 0, + 77, 42, 32, 15, 0, 77, 42, 16, 14, 0, 77, 38, 184, 255, 232, 180, 14, 15, 0, 76, + 33, 184, 255, 232, 64, 19, 9, 0, 77, 19, 8, 10, 0, 77, 13, 24, 16, 0, 77, 13, + 24, 8, 0, 77, 9, 184, 255, 192, 179, 16, 0, 77, 8, 184, 255, 224, 179, 8, 0, 77, + 5, 184, 255, 216, 179, 8, 0, 77, 4, 184, 255, 216, 179, 16, 0, 77, 4, 184, 255, 216, + 64, 30, 9, 0, 77, 45, 130, 6, 27, 27, 6, 55, 0, 53, 130, 16, 54, 53, 50, 137, + 0, 3, 3, 40, 27, 136, 26, 77, 40, 136, 11, 81, 0, 63, 237, 63, 237, 18, 57, 47, + 51, 237, 50, 1, 16, 214, 237, 50, 16, 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 22, 21, 20, 14, 2, + 35, 34, 46, 2, 53, 52, 62, 2, 55, 62, 3, 55, 23, 14, 3, 7, 6, 6, 7, 20, + 30, 2, 51, 50, 62, 2, 53, 52, 46, 2, 35, 34, 6, 7, 134, 26, 68, 33, 99, 100, + 25, 51, 80, 54, 62, 79, 46, 18, 21, 58, 101, 80, 25, 35, 28, 22, 12, 9, 6, 14, + 24, 39, 31, 86, 92, 15, 10, 27, 47, 37, 33, 48, 30, 15, 12, 30, 50, 38, 36, 63, + 18, 1, 155, 22, 24, 122, 109, 47, 86, 66, 39, 47, 80, 107, 60, 78, 133, 102, 67, 12, + 4, 5, 4, 3, 3, 72, 2, 3, 3, 5, 3, 11, 89, 236, 42, 76, 59, 34, 27, 46, + 61, 34, 30, 59, 45, 28, 35, 23, 0, 3, 0, 71, 255, 248, 1, 195, 1, 220, 0, 14, + 0, 27, 0, 50, 0, 128, 185, 0, 48, 255, 232, 180, 10, 11, 0, 76, 48, 184, 255, 224, + 179, 9, 0, 77, 48, 184, 255, 232, 179, 8, 0, 77, 38, 184, 255, 232, 180, 12, 13, 0, + 76, 38, 184, 255, 240, 179, 11, 0, 77, 38, 184, 255, 224, 64, 45, 10, 0, 77, 6, 16, + 18, 0, 77, 6, 8, 17, 0, 77, 43, 18, 130, 40, 40, 8, 130, 46, 52, 27, 0, 127, + 0, 31, 1, 8, 31, 51, 43, 14, 134, 27, 27, 3, 23, 136, 35, 80, 3, 136, 28, 81, + 0, 63, 237, 63, 237, 18, 57, 47, 237, 57, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, + 51, 47, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 55, 22, 22, 51, 50, 62, + 2, 53, 52, 46, 2, 35, 35, 55, 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 21, 19, + 34, 38, 39, 17, 54, 54, 51, 50, 30, 2, 21, 20, 6, 7, 22, 22, 21, 20, 14, 2, + 152, 10, 52, 26, 26, 47, 35, 21, 19, 32, 44, 25, 97, 86, 48, 63, 21, 35, 44, 22, + 21, 40, 14, 85, 54, 86, 26, 26, 86, 54, 36, 70, 54, 33, 34, 29, 38, 46, 33, 58, + 78, 63, 2, 3, 7, 18, 30, 23, 22, 30, 18, 7, 61, 29, 41, 21, 25, 14, 4, 2, + 1, 131, 254, 230, 10, 6, 1, 196, 6, 10, 12, 30, 50, 38, 35, 47, 14, 14, 51, 48, + 42, 56, 33, 14, 0, 1, 0, 107, 0, 0, 1, 184, 1, 208, 0, 5, 0, 26, 64, 12, + 3, 7, 5, 127, 0, 6, 4, 133, 1, 73, 0, 74, 0, 63, 63, 237, 1, 16, 214, 237, + 16, 206, 49, 48, 51, 17, 33, 21, 35, 17, 107, 1, 77, 251, 1, 208, 69, 254, 117, 0, + 2, 0, 27, 255, 127, 1, 208, 1, 208, 0, 15, 0, 23, 0, 77, 185, 0, 21, 255, 248, + 179, 9, 0, 77, 21, 184, 255, 232, 64, 34, 8, 0, 77, 18, 130, 6, 6, 1, 16, 127, + 8, 12, 127, 9, 25, 23, 130, 1, 13, 127, 0, 24, 11, 14, 23, 8, 1, 133, 13, 74, + 18, 133, 6, 73, 0, 63, 237, 63, 237, 50, 50, 205, 50, 1, 16, 214, 237, 213, 237, 16, + 222, 237, 213, 237, 17, 57, 47, 237, 49, 48, 43, 43, 55, 51, 62, 3, 55, 33, 17, 51, + 21, 35, 53, 33, 21, 35, 37, 17, 35, 20, 14, 2, 7, 27, 36, 30, 34, 17, 6, 1, + 1, 18, 39, 78, 254, 231, 78, 1, 60, 113, 8, 19, 32, 23, 70, 43, 90, 97, 105, 59, + 254, 118, 199, 129, 129, 199, 1, 69, 40, 89, 86, 79, 31, 255, 255, 0, 40, 255, 245, 1, + 199, 1, 219, 2, 6, 0, 72, 0, 0, 0, 1, 0, 7, 0, 0, 1, 235, 1, 208, 0, + 49, 0, 168, 64, 95, 0, 11, 16, 11, 2, 11, 11, 6, 17, 22, 17, 129, 16, 11, 20, + 16, 16, 11, 11, 5, 0, 5, 129, 6, 11, 20, 6, 6, 11, 36, 36, 41, 30, 25, 30, + 129, 31, 36, 20, 31, 31, 36, 36, 42, 47, 42, 129, 41, 36, 20, 41, 41, 36, 47, 0, + 22, 127, 25, 25, 31, 6, 6, 16, 51, 41, 41, 31, 50, 0, 47, 47, 36, 22, 25, 25, + 11, 36, 36, 24, 48, 73, 41, 42, 73, 31, 30, 74, 24, 74, 16, 17, 74, 6, 5, 73, + 0, 63, 51, 63, 51, 63, 63, 51, 63, 51, 63, 18, 57, 17, 51, 51, 17, 51, 17, 51, + 17, 51, 1, 16, 198, 50, 47, 16, 206, 50, 47, 17, 57, 47, 237, 50, 51, 135, 16, 43, + 135, 125, 196, 135, 24, 16, 43, 135, 8, 125, 196, 135, 5, 24, 16, 43, 135, 125, 196, 135, + 24, 16, 43, 135, 8, 125, 196, 1, 93, 49, 48, 1, 62, 3, 55, 51, 14, 3, 7, 30, + 3, 23, 35, 46, 3, 39, 21, 35, 53, 14, 3, 7, 35, 62, 3, 55, 46, 3, 39, 51, + 30, 3, 23, 53, 51, 1, 30, 12, 28, 27, 26, 10, 83, 16, 35, 36, 36, 16, 21, 44, + 42, 37, 14, 82, 10, 30, 33, 35, 15, 73, 16, 35, 33, 30, 10, 82, 14, 38, 42, 43, + 21, 16, 36, 36, 35, 15, 82, 10, 26, 28, 28, 12, 73, 1, 13, 21, 51, 52, 50, 21, + 26, 57, 58, 55, 22, 20, 59, 66, 70, 31, 26, 58, 57, 52, 20, 213, 214, 20, 52, 57, + 59, 26, 31, 70, 66, 59, 20, 22, 55, 58, 58, 25, 21, 51, 53, 51, 21, 197, 0, 1, + 0, 72, 255, 245, 1, 191, 1, 220, 0, 44, 0, 139, 64, 11, 31, 40, 18, 0, 77, 31, + 32, 17, 0, 77, 17, 184, 255, 224, 179, 11, 0, 77, 17, 184, 255, 232, 180, 9, 10, 0, + 76, 17, 184, 255, 224, 179, 8, 0, 77, 6, 184, 255, 232, 179, 12, 0, 77, 6, 184, 255, + 200, 179, 11, 0, 77, 6, 184, 255, 224, 64, 40, 10, 0, 77, 13, 38, 130, 8, 8, 29, + 130, 16, 46, 33, 33, 0, 0, 0, 22, 1, 8, 22, 45, 13, 33, 134, 34, 34, 3, 23, + 23, 26, 136, 19, 81, 44, 44, 41, 136, 3, 80, 0, 63, 237, 50, 47, 63, 237, 50, 47, + 17, 57, 47, 237, 57, 1, 16, 198, 94, 93, 50, 47, 50, 47, 16, 222, 237, 51, 47, 237, + 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 30, 2, 21, 20, + 14, 2, 7, 22, 22, 21, 20, 6, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, + 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 86, 33, 79, 39, 38, 70, + 54, 32, 14, 22, 25, 12, 38, 51, 113, 97, 60, 87, 18, 17, 15, 78, 55, 66, 60, 60, + 51, 98, 92, 51, 50, 56, 60, 28, 73, 26, 1, 196, 11, 13, 13, 32, 51, 38, 18, 32, + 26, 18, 4, 14, 53, 48, 67, 73, 18, 8, 70, 5, 19, 38, 32, 36, 42, 66, 34, 29, + 31, 36, 14, 12, 0, 1, 0, 63, 0, 0, 1, 182, 1, 208, 0, 17, 0, 80, 64, 49, + 36, 8, 1, 73, 17, 89, 17, 121, 17, 3, 56, 17, 1, 43, 17, 1, 17, 8, 3, 8, + 132, 12, 17, 20, 12, 12, 17, 3, 127, 0, 19, 12, 127, 0, 9, 1, 8, 9, 18, 3, + 17, 73, 11, 73, 12, 8, 74, 2, 74, 0, 63, 63, 51, 63, 63, 51, 1, 16, 214, 94, + 93, 237, 16, 222, 237, 135, 16, 43, 135, 125, 196, 1, 93, 93, 93, 93, 49, 48, 1, 17, + 35, 17, 14, 3, 7, 35, 17, 51, 17, 62, 3, 55, 1, 182, 81, 27, 59, 59, 54, 21, + 74, 80, 23, 54, 58, 58, 28, 1, 208, 254, 48, 1, 98, 34, 92, 97, 94, 37, 1, 208, + 254, 178, 39, 91, 91, 83, 30, 255, 255, 0, 63, 0, 0, 1, 182, 2, 152, 2, 38, 2, + 232, 0, 0, 1, 6, 3, 139, 12, 0, 0, 16, 64, 11, 1, 11, 21, 29, 9, 0, 80, + 1, 0, 18, 79, 43, 43, 52, 255, 255, 0, 71, 0, 0, 1, 222, 1, 208, 2, 6, 1, + 21, 0, 0, 0, 1, 0, 13, 255, 247, 1, 173, 1, 208, 0, 21, 0, 82, 64, 18, 12, + 24, 15, 16, 0, 76, 11, 24, 15, 16, 0, 76, 11, 32, 11, 0, 77, 7, 184, 255, 216, + 180, 17, 18, 0, 76, 7, 184, 255, 224, 64, 25, 12, 13, 0, 76, 0, 127, 17, 17, 9, + 20, 127, 19, 23, 9, 22, 20, 74, 0, 133, 17, 73, 9, 133, 8, 81, 0, 63, 237, 63, + 237, 63, 1, 16, 198, 16, 222, 237, 17, 57, 47, 237, 49, 48, 43, 43, 43, 43, 43, 19, + 20, 14, 2, 7, 6, 6, 7, 39, 54, 54, 55, 62, 2, 52, 53, 33, 17, 35, 17, 235, + 3, 7, 12, 10, 20, 82, 76, 12, 44, 51, 15, 13, 13, 6, 1, 18, 83, 1, 139, 30, + 67, 67, 65, 28, 57, 82, 8, 70, 8, 49, 35, 30, 76, 84, 84, 37, 254, 48, 1, 139, + 0, 1, 0, 27, 0, 0, 1, 217, 1, 208, 0, 36, 0, 124, 64, 75, 90, 16, 106, 16, + 2, 43, 16, 59, 16, 75, 16, 3, 16, 31, 26, 31, 132, 13, 16, 20, 13, 16, 26, 23, + 100, 10, 1, 82, 10, 1, 52, 10, 68, 10, 2, 35, 10, 1, 10, 32, 0, 32, 132, 13, + 10, 20, 13, 13, 10, 13, 3, 23, 130, 17, 22, 38, 0, 3, 130, 9, 4, 37, 26, 16, + 73, 0, 10, 73, 31, 13, 32, 32, 23, 4, 74, 0, 63, 51, 51, 47, 51, 51, 63, 51, + 63, 51, 1, 16, 214, 50, 237, 50, 16, 222, 50, 237, 17, 57, 135, 16, 43, 135, 125, 196, + 1, 93, 93, 93, 93, 17, 51, 135, 24, 43, 135, 125, 196, 1, 93, 93, 49, 48, 19, 6, + 6, 7, 35, 62, 3, 55, 51, 22, 22, 23, 54, 54, 55, 51, 30, 3, 23, 35, 38, 38, + 39, 14, 3, 7, 35, 46, 3, 119, 8, 1, 3, 80, 1, 7, 9, 11, 6, 77, 19, 52, + 40, 41, 53, 20, 76, 6, 11, 9, 6, 2, 80, 3, 3, 7, 13, 21, 19, 22, 15, 82, + 14, 22, 19, 21, 1, 86, 91, 173, 78, 55, 118, 120, 118, 53, 48, 144, 100, 100, 144, 48, + 53, 118, 120, 118, 55, 78, 180, 84, 31, 53, 56, 63, 42, 42, 63, 56, 53, 0, 1, 0, + 71, 0, 0, 1, 173, 1, 208, 0, 11, 0, 57, 64, 32, 9, 1, 127, 0, 13, 8, 4, + 127, 0, 5, 1, 5, 12, 10, 73, 3, 133, 15, 8, 31, 8, 2, 8, 8, 8, 5, 6, + 73, 5, 74, 1, 74, 0, 63, 63, 63, 18, 57, 47, 94, 93, 237, 63, 1, 16, 214, 93, + 237, 50, 16, 222, 237, 50, 49, 48, 33, 35, 53, 35, 21, 35, 17, 51, 21, 51, 53, 51, + 1, 173, 83, 192, 83, 83, 192, 83, 205, 205, 1, 208, 189, 189, 255, 255, 0, 40, 255, 245, + 1, 204, 1, 219, 2, 6, 0, 82, 0, 0, 0, 1, 0, 71, 0, 0, 1, 173, 1, 208, + 0, 7, 0, 38, 64, 20, 1, 127, 0, 9, 4, 127, 0, 5, 1, 8, 5, 8, 3, 133, + 6, 73, 5, 74, 1, 74, 0, 63, 63, 63, 237, 1, 16, 214, 94, 93, 237, 16, 222, 237, + 49, 48, 33, 35, 17, 35, 17, 35, 17, 33, 1, 173, 83, 192, 83, 1, 102, 1, 139, 254, + 117, 1, 208, 255, 255, 0, 71, 255, 91, 1, 204, 1, 218, 2, 6, 0, 83, 0, 0, 255, + 255, 0, 49, 255, 245, 1, 195, 1, 219, 2, 6, 0, 70, 0, 0, 0, 1, 0, 58, 0, + 0, 1, 186, 1, 208, 0, 7, 0, 38, 64, 19, 1, 3, 127, 6, 0, 4, 1, 8, 4, + 4, 9, 8, 2, 5, 133, 7, 73, 4, 74, 0, 63, 63, 237, 50, 1, 17, 18, 57, 47, + 94, 93, 206, 253, 206, 49, 48, 1, 21, 35, 17, 35, 17, 35, 53, 1, 186, 151, 82, 151, + 1, 208, 69, 254, 117, 1, 139, 69, 255, 255, 0, 36, 255, 88, 1, 205, 1, 208, 2, 6, + 0, 92, 0, 0, 0, 3, 0, 26, 255, 91, 1, 218, 2, 181, 0, 6, 0, 13, 0, 39, + 0, 154, 185, 0, 31, 255, 240, 179, 18, 0, 77, 31, 184, 255, 248, 64, 26, 17, 0, 77, + 12, 32, 16, 0, 77, 12, 40, 14, 15, 0, 76, 8, 40, 15, 16, 0, 76, 8, 32, 14, + 0, 77, 5, 184, 255, 208, 179, 16, 0, 77, 5, 184, 255, 224, 180, 14, 15, 0, 76, 2, + 184, 255, 216, 180, 15, 16, 0, 76, 2, 184, 255, 208, 64, 41, 14, 0, 77, 10, 130, 0, + 34, 1, 8, 34, 29, 7, 39, 127, 16, 0, 130, 21, 26, 3, 16, 16, 41, 40, 27, 28, + 77, 13, 4, 136, 29, 26, 73, 7, 3, 136, 39, 16, 76, 15, 75, 0, 63, 63, 51, 237, + 50, 63, 51, 237, 50, 63, 51, 1, 17, 18, 57, 47, 51, 51, 221, 237, 16, 253, 50, 50, + 221, 94, 93, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 20, 22, 23, + 17, 6, 6, 23, 54, 54, 53, 52, 38, 39, 17, 35, 53, 46, 3, 53, 52, 62, 2, 55, + 53, 55, 21, 30, 3, 21, 20, 14, 2, 7, 108, 61, 44, 44, 61, 178, 44, 62, 62, 44, + 73, 38, 67, 52, 30, 30, 52, 67, 38, 73, 38, 68, 52, 30, 30, 52, 68, 38, 232, 78, + 85, 2, 1, 74, 2, 85, 243, 2, 85, 78, 78, 85, 2, 253, 206, 162, 1, 32, 60, 87, + 55, 55, 87, 60, 32, 1, 212, 14, 226, 1, 32, 60, 87, 55, 55, 87, 60, 32, 1, 255, + 255, 0, 29, 0, 0, 1, 216, 1, 208, 2, 6, 0, 91, 0, 0, 0, 1, 0, 71, 255, + 127, 1, 208, 1, 208, 0, 11, 0, 46, 64, 24, 9, 127, 0, 4, 127, 1, 13, 8, 127, + 0, 5, 1, 8, 5, 12, 10, 6, 73, 0, 8, 133, 3, 5, 74, 0, 63, 206, 237, 50, + 63, 51, 1, 16, 222, 94, 93, 237, 16, 222, 237, 213, 237, 49, 48, 37, 51, 21, 35, 53, + 33, 17, 51, 17, 51, 17, 51, 1, 169, 39, 78, 254, 197, 83, 189, 82, 70, 199, 129, 1, + 208, 254, 118, 1, 138, 0, 1, 0, 54, 0, 0, 1, 173, 1, 208, 0, 23, 0, 59, 64, + 36, 20, 32, 10, 11, 0, 76, 20, 24, 9, 0, 77, 20, 32, 8, 0, 77, 7, 11, 127, + 10, 25, 1, 127, 22, 24, 4, 136, 17, 17, 11, 23, 73, 11, 74, 8, 73, 0, 63, 63, + 63, 18, 57, 47, 237, 1, 16, 214, 237, 16, 222, 237, 50, 49, 48, 43, 43, 43, 19, 21, + 20, 22, 51, 50, 54, 55, 53, 51, 17, 35, 53, 14, 3, 35, 34, 46, 2, 53, 53, 136, + 57, 50, 36, 48, 19, 83, 83, 7, 25, 31, 34, 16, 40, 66, 47, 26, 1, 208, 136, 53, + 42, 7, 5, 219, 254, 48, 179, 2, 5, 5, 4, 17, 38, 63, 46, 137, 0, 1, 0, 45, + 0, 0, 1, 199, 1, 208, 0, 11, 0, 48, 64, 24, 7, 127, 4, 4, 0, 8, 127, 11, + 13, 3, 127, 0, 12, 9, 1, 5, 5, 1, 73, 7, 3, 133, 0, 74, 0, 63, 237, 50, + 63, 51, 47, 17, 51, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 237, 49, 48, 51, 17, + 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 45, 75, 93, 75, 92, 75, 1, 208, 254, 118, + 1, 31, 254, 225, 1, 138, 254, 48, 0, 1, 0, 45, 255, 127, 1, 208, 1, 208, 0, 15, + 0, 65, 64, 37, 14, 127, 11, 11, 7, 15, 127, 79, 2, 95, 2, 175, 2, 191, 2, 4, + 2, 6, 127, 3, 17, 10, 127, 7, 16, 12, 12, 0, 8, 73, 14, 2, 10, 133, 5, 7, + 74, 0, 63, 206, 237, 50, 50, 63, 51, 51, 47, 1, 16, 214, 237, 16, 222, 237, 213, 93, + 237, 17, 57, 47, 237, 49, 48, 1, 51, 17, 51, 21, 35, 53, 33, 17, 51, 17, 51, 17, + 51, 17, 51, 1, 94, 75, 39, 78, 254, 171, 75, 77, 75, 78, 1, 208, 254, 118, 199, 129, + 1, 208, 254, 118, 1, 31, 254, 225, 0, 2, 0, 18, 255, 246, 1, 208, 1, 208, 0, 20, + 0, 37, 0, 91, 185, 0, 14, 255, 232, 179, 11, 0, 77, 14, 184, 255, 208, 179, 10, 0, + 77, 14, 184, 255, 232, 179, 9, 0, 77, 10, 184, 255, 232, 180, 10, 11, 0, 76, 10, 184, + 255, 224, 64, 26, 9, 0, 77, 24, 130, 12, 39, 32, 3, 127, 0, 1, 38, 29, 137, 7, + 7, 3, 21, 137, 17, 81, 0, 133, 3, 73, 0, 63, 237, 63, 237, 17, 57, 47, 237, 1, + 16, 214, 221, 237, 50, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 19, 35, 53, 51, 21, + 54, 54, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 38, 39, 55, 50, 54, 53, 52, 46, + 2, 35, 34, 6, 7, 21, 30, 3, 109, 91, 173, 14, 58, 25, 36, 64, 48, 28, 27, 50, + 71, 43, 43, 82, 39, 169, 48, 54, 16, 28, 37, 21, 23, 47, 17, 5, 20, 24, 26, 1, + 139, 69, 177, 3, 7, 17, 36, 58, 40, 42, 59, 38, 17, 9, 11, 48, 41, 46, 22, 32, + 21, 10, 3, 5, 159, 1, 2, 1, 1, 0, 3, 0, 45, 255, 246, 1, 199, 1, 208, 0, + 12, 0, 29, 0, 33, 0, 83, 185, 0, 24, 255, 232, 179, 13, 0, 77, 21, 184, 255, 232, + 179, 14, 0, 77, 21, 184, 255, 240, 64, 33, 13, 0, 77, 10, 130, 15, 23, 1, 8, 23, + 31, 127, 30, 35, 15, 4, 127, 29, 34, 31, 74, 0, 137, 18, 18, 13, 7, 137, 26, 81, + 32, 13, 73, 0, 63, 51, 63, 237, 17, 57, 47, 237, 63, 1, 16, 214, 237, 50, 16, 222, + 253, 222, 94, 93, 237, 49, 48, 43, 43, 43, 55, 34, 6, 7, 21, 22, 22, 51, 50, 54, + 53, 52, 38, 39, 51, 21, 54, 54, 51, 50, 30, 2, 21, 20, 6, 35, 34, 38, 39, 5, + 35, 17, 51, 180, 16, 29, 12, 8, 34, 13, 33, 41, 46, 161, 78, 11, 37, 20, 28, 51, + 39, 23, 87, 69, 35, 63, 33, 1, 154, 78, 78, 230, 3, 5, 159, 2, 3, 41, 46, 45, + 40, 234, 177, 3, 7, 17, 36, 58, 40, 84, 72, 9, 11, 10, 1, 208, 0, 2, 0, 71, + 255, 246, 1, 204, 1, 208, 0, 14, 0, 31, 0, 98, 185, 0, 26, 255, 224, 179, 11, 0, + 77, 26, 184, 255, 216, 180, 9, 10, 0, 76, 23, 184, 255, 224, 179, 11, 0, 77, 23, 184, + 255, 216, 179, 10, 0, 77, 23, 184, 255, 232, 64, 33, 9, 0, 77, 6, 32, 17, 0, 77, + 5, 24, 18, 0, 77, 3, 130, 25, 33, 17, 12, 127, 31, 32, 8, 137, 20, 20, 15, 0, + 137, 28, 81, 15, 73, 0, 63, 63, 237, 17, 57, 47, 237, 1, 16, 214, 237, 50, 16, 222, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 55, 50, 54, 53, 52, 46, 2, 35, 34, 6, + 7, 21, 22, 22, 3, 51, 21, 54, 54, 51, 50, 30, 2, 21, 20, 6, 35, 34, 38, 39, + 254, 58, 64, 19, 33, 45, 25, 26, 55, 19, 12, 61, 156, 83, 16, 64, 29, 40, 72, 54, + 31, 115, 96, 47, 87, 44, 58, 41, 46, 22, 32, 21, 10, 3, 5, 159, 2, 3, 1, 150, + 177, 3, 7, 17, 36, 58, 40, 84, 72, 9, 11, 0, 1, 0, 59, 255, 245, 1, 204, 1, + 219, 0, 36, 0, 80, 64, 48, 23, 40, 14, 0, 77, 14, 40, 14, 0, 77, 14, 32, 13, + 0, 77, 14, 16, 12, 0, 77, 20, 17, 130, 0, 38, 29, 29, 18, 18, 8, 37, 28, 28, + 25, 136, 32, 18, 134, 19, 19, 32, 80, 9, 9, 12, 136, 5, 81, 0, 63, 237, 50, 47, + 63, 57, 47, 237, 16, 237, 50, 47, 1, 16, 198, 50, 47, 50, 47, 16, 222, 237, 50, 49, + 48, 43, 43, 43, 43, 37, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 62, 2, + 55, 35, 53, 51, 46, 3, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 1, 204, 35, + 65, 93, 57, 51, 81, 19, 12, 20, 73, 38, 36, 61, 46, 28, 3, 213, 211, 4, 28, 44, + 58, 34, 39, 53, 29, 19, 24, 70, 50, 56, 92, 66, 36, 234, 58, 91, 63, 33, 15, 9, + 69, 9, 12, 20, 37, 54, 33, 67, 30, 49, 34, 19, 10, 11, 71, 8, 13, 34, 62, 90, + 0, 2, 0, 54, 255, 245, 1, 217, 1, 219, 0, 26, 0, 38, 0, 135, 185, 0, 24, 255, + 232, 179, 11, 0, 77, 24, 184, 255, 240, 179, 10, 0, 77, 20, 184, 255, 232, 64, 76, 10, + 11, 0, 76, 14, 24, 11, 0, 77, 14, 40, 10, 0, 77, 3, 16, 12, 13, 0, 76, 3, + 24, 11, 0, 77, 3, 16, 10, 0, 77, 33, 130, 22, 40, 27, 130, 12, 32, 5, 48, 5, + 64, 5, 3, 5, 11, 7, 127, 32, 8, 1, 8, 39, 36, 136, 17, 80, 6, 133, 15, 11, + 31, 11, 2, 8, 11, 11, 8, 9, 73, 8, 74, 30, 136, 0, 81, 0, 63, 237, 63, 63, + 18, 57, 47, 94, 93, 237, 63, 237, 1, 16, 214, 93, 253, 50, 222, 93, 50, 237, 16, 222, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 5, 34, 46, 2, 39, 35, 21, 35, 17, + 51, 21, 51, 62, 3, 51, 50, 30, 2, 21, 20, 14, 2, 39, 20, 22, 51, 50, 54, 53, + 52, 38, 35, 34, 6, 1, 80, 25, 47, 38, 26, 3, 65, 78, 78, 64, 3, 26, 38, 47, + 24, 26, 50, 39, 24, 23, 39, 49, 87, 26, 34, 34, 26, 26, 34, 34, 26, 11, 20, 48, + 79, 60, 196, 1, 208, 199, 61, 81, 48, 20, 23, 55, 94, 71, 71, 94, 55, 23, 243, 84, + 89, 89, 84, 85, 88, 88, 0, 2, 0, 40, 0, 0, 1, 173, 1, 220, 0, 26, 0, 37, + 0, 127, 185, 0, 32, 255, 232, 64, 77, 17, 18, 0, 76, 17, 16, 11, 0, 77, 17, 40, + 9, 10, 0, 76, 17, 32, 8, 0, 77, 13, 16, 11, 0, 77, 13, 56, 8, 10, 0, 76, + 12, 6, 3, 6, 129, 7, 12, 20, 7, 7, 12, 3, 3, 15, 37, 25, 127, 24, 39, 7, + 7, 33, 130, 0, 15, 1, 8, 15, 38, 12, 3, 3, 26, 134, 37, 37, 20, 25, 74, 30, + 133, 20, 80, 7, 6, 74, 0, 63, 51, 63, 237, 63, 18, 57, 47, 237, 50, 47, 50, 1, + 16, 214, 94, 93, 237, 51, 47, 16, 222, 237, 50, 17, 57, 47, 135, 16, 43, 135, 125, 196, + 49, 48, 1, 43, 43, 43, 43, 43, 43, 37, 34, 38, 39, 6, 6, 7, 35, 62, 3, 55, + 38, 38, 53, 52, 62, 2, 51, 50, 22, 23, 17, 35, 53, 53, 38, 38, 35, 34, 6, 21, + 20, 22, 51, 51, 1, 20, 14, 25, 11, 29, 52, 21, 84, 11, 28, 30, 30, 14, 50, 35, + 29, 52, 71, 42, 59, 80, 28, 83, 10, 43, 30, 51, 62, 64, 51, 81, 180, 1, 1, 43, + 97, 42, 26, 55, 51, 47, 18, 18, 67, 38, 39, 58, 39, 20, 10, 8, 254, 54, 180, 223, + 2, 3, 42, 45, 45, 34, 255, 255, 0, 40, 255, 245, 1, 199, 2, 181, 2, 38, 0, 72, + 0, 0, 1, 6, 0, 67, 1, 0, 0, 16, 64, 11, 2, 0, 37, 35, 19, 2, 80, 2, + 0, 36, 79, 43, 43, 52, 255, 255, 0, 40, 255, 245, 1, 199, 2, 143, 2, 38, 0, 72, + 0, 0, 1, 6, 0, 131, 13, 0, 0, 23, 64, 16, 3, 2, 15, 36, 54, 19, 2, 80, + 3, 0, 46, 79, 2, 0, 34, 79, 43, 43, 43, 52, 52, 0, 0, 1, 0, 20, 255, 89, + 1, 176, 2, 181, 0, 43, 0, 139, 64, 11, 35, 24, 18, 0, 77, 35, 16, 16, 0, 77, + 19, 184, 255, 224, 180, 14, 15, 0, 76, 19, 184, 255, 232, 179, 13, 0, 77, 14, 184, 255, + 232, 179, 17, 0, 77, 14, 184, 255, 224, 64, 55, 8, 10, 0, 76, 15, 25, 31, 25, 2, + 25, 25, 40, 32, 127, 17, 45, 7, 6, 4, 40, 127, 43, 1, 0, 41, 1, 41, 44, 41, + 74, 29, 137, 22, 75, 7, 42, 4, 1, 1, 3, 36, 136, 0, 11, 16, 11, 32, 11, 3, + 8, 11, 80, 2, 3, 77, 0, 63, 51, 63, 94, 93, 237, 18, 57, 47, 51, 205, 50, 63, + 237, 63, 1, 16, 214, 93, 50, 206, 253, 50, 204, 51, 16, 222, 237, 17, 57, 47, 93, 49, + 48, 43, 43, 43, 43, 43, 43, 19, 51, 53, 55, 21, 51, 21, 35, 21, 54, 54, 51, 50, + 30, 2, 21, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 17, 52, + 38, 35, 34, 6, 7, 17, 35, 17, 35, 20, 66, 82, 162, 162, 19, 49, 22, 49, 67, 40, + 18, 11, 30, 52, 40, 13, 32, 10, 8, 8, 22, 8, 33, 27, 45, 55, 23, 49, 10, 82, + 66, 2, 98, 69, 14, 83, 62, 91, 8, 9, 31, 56, 78, 47, 254, 250, 41, 63, 42, 21, + 5, 2, 65, 2, 2, 43, 41, 1, 3, 86, 71, 11, 5, 254, 127, 2, 36, 255, 255, 0, + 107, 0, 0, 1, 184, 2, 181, 2, 38, 2, 227, 0, 0, 1, 6, 0, 143, 54, 0, 0, + 16, 64, 11, 1, 34, 8, 6, 0, 2, 80, 1, 1, 7, 79, 43, 43, 52, 0, 1, 0, + 49, 255, 245, 1, 194, 1, 219, 0, 36, 0, 88, 185, 0, 23, 255, 192, 179, 14, 0, 77, + 23, 184, 255, 216, 179, 13, 0, 77, 23, 184, 255, 232, 179, 12, 0, 77, 14, 184, 255, 216, + 64, 29, 14, 0, 77, 8, 8, 29, 38, 17, 20, 130, 0, 37, 19, 134, 18, 18, 5, 28, + 28, 25, 136, 32, 81, 9, 9, 12, 136, 5, 80, 0, 63, 237, 50, 47, 63, 237, 50, 47, + 17, 57, 47, 237, 1, 16, 214, 237, 50, 16, 206, 50, 47, 49, 48, 43, 43, 43, 43, 55, + 52, 62, 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 7, 51, 21, 35, 30, 3, + 51, 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 49, 36, 66, 92, 56, 50, 70, 24, 19, + 29, 53, 39, 34, 58, 44, 28, 4, 211, 213, 3, 28, 46, 61, 36, 38, 73, 20, 12, 19, + 81, 51, 57, 93, 65, 35, 234, 55, 90, 62, 34, 13, 8, 71, 11, 10, 19, 34, 49, 30, + 67, 33, 54, 37, 20, 12, 9, 69, 9, 15, 33, 63, 91, 255, 255, 0, 66, 255, 245, 1, + 178, 1, 219, 2, 6, 0, 86, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 158, 2, + 6, 0, 76, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 143, 2, 38, 1, 12, 0, + 0, 1, 6, 0, 131, 220, 0, 0, 26, 177, 2, 1, 184, 255, 218, 64, 13, 24, 42, 1, + 11, 80, 2, 2, 34, 79, 1, 2, 22, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, + 71, 255, 86, 1, 128, 2, 158, 2, 6, 0, 77, 0, 0, 0, 2, 0, 13, 255, 246, 1, + 222, 1, 208, 0, 29, 0, 41, 0, 119, 185, 0, 23, 255, 224, 179, 13, 0, 77, 23, 184, + 255, 232, 179, 12, 0, 77, 23, 184, 255, 224, 179, 11, 0, 77, 20, 184, 255, 232, 64, 17, + 11, 16, 0, 76, 35, 15, 127, 0, 1, 127, 14, 160, 14, 176, 14, 2, 14, 184, 255, 192, + 64, 31, 9, 12, 72, 0, 14, 0, 14, 8, 30, 130, 21, 43, 8, 42, 33, 137, 18, 18, + 14, 39, 136, 26, 81, 1, 133, 14, 73, 8, 136, 7, 81, 0, 63, 237, 63, 237, 63, 237, + 17, 57, 47, 237, 1, 16, 198, 16, 222, 237, 17, 57, 57, 47, 47, 43, 93, 16, 237, 16, + 237, 50, 49, 48, 43, 43, 43, 43, 19, 35, 21, 20, 14, 2, 7, 39, 62, 3, 53, 53, + 51, 21, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 52, 38, 35, 34, 7, + 21, 22, 22, 51, 50, 54, 240, 68, 7, 29, 59, 52, 12, 31, 35, 16, 4, 214, 22, 26, + 55, 62, 20, 37, 51, 31, 23, 50, 26, 161, 25, 32, 11, 20, 8, 14, 7, 33, 26, 1, + 139, 34, 83, 130, 94, 56, 7, 70, 7, 43, 80, 118, 82, 73, 174, 7, 82, 69, 43, 59, + 37, 17, 8, 8, 139, 38, 45, 5, 161, 1, 1, 39, 0, 2, 0, 54, 255, 246, 1, 222, + 1, 208, 0, 23, 0, 34, 0, 103, 185, 0, 17, 255, 232, 179, 13, 0, 77, 14, 184, 255, + 240, 180, 15, 16, 0, 76, 14, 184, 255, 232, 64, 44, 13, 14, 0, 76, 10, 30, 127, 7, + 23, 23, 3, 24, 130, 15, 36, 6, 2, 127, 16, 3, 1, 3, 35, 27, 137, 12, 1, 134, + 6, 12, 6, 12, 6, 4, 32, 136, 20, 81, 8, 73, 4, 73, 3, 74, 0, 63, 63, 63, + 63, 237, 17, 57, 57, 47, 47, 16, 237, 16, 237, 1, 16, 214, 93, 237, 50, 16, 222, 237, + 17, 57, 47, 51, 237, 50, 49, 48, 43, 43, 43, 55, 35, 21, 35, 17, 51, 21, 51, 53, + 51, 21, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 52, 38, 35, 34, 7, + 21, 22, 51, 50, 54, 240, 113, 73, 73, 113, 73, 23, 25, 55, 62, 20, 37, 51, 31, 23, + 50, 26, 161, 25, 32, 11, 20, 16, 13, 33, 26, 211, 211, 1, 208, 187, 187, 175, 8, 82, + 69, 43, 59, 37, 17, 8, 8, 139, 38, 45, 5, 160, 3, 39, 255, 255, 0, 20, 0, 0, + 1, 176, 2, 181, 2, 6, 1, 2, 0, 0, 255, 255, 0, 71, 0, 0, 1, 222, 2, 181, + 2, 38, 1, 21, 0, 0, 1, 6, 0, 143, 34, 0, 0, 16, 64, 11, 1, 13, 25, 23, + 13, 5, 80, 1, 14, 24, 79, 43, 43, 52, 255, 255, 0, 63, 0, 0, 1, 182, 2, 181, + 2, 38, 2, 232, 0, 0, 1, 6, 0, 67, 4, 0, 0, 16, 64, 11, 1, 0, 21, 19, + 9, 0, 80, 1, 0, 20, 79, 43, 43, 52, 255, 255, 0, 36, 255, 88, 1, 205, 2, 152, + 2, 38, 0, 92, 0, 0, 1, 6, 3, 139, 18, 0, 0, 16, 64, 11, 1, 19, 36, 44, + 32, 21, 80, 1, 9, 33, 79, 43, 43, 52, 0, 1, 0, 71, 255, 127, 1, 173, 1, 208, + 0, 11, 0, 50, 64, 26, 7, 127, 10, 10, 11, 3, 127, 6, 13, 2, 127, 0, 11, 1, + 8, 11, 12, 9, 7, 2, 133, 11, 74, 4, 0, 73, 0, 63, 50, 63, 237, 51, 206, 1, + 16, 214, 94, 93, 237, 16, 222, 237, 17, 57, 47, 237, 49, 48, 19, 51, 17, 51, 17, 51, + 17, 35, 21, 35, 53, 35, 71, 83, 192, 83, 140, 78, 140, 1, 208, 254, 118, 1, 138, 254, + 48, 129, 129, 0, 2, 0, 39, 255, 244, 1, 204, 2, 181, 0, 17, 0, 60, 0, 179, 181, + 55, 24, 8, 0, 77, 51, 184, 255, 232, 179, 8, 0, 77, 45, 184, 255, 200, 179, 9, 0, + 77, 43, 184, 255, 216, 179, 16, 0, 77, 41, 184, 255, 224, 64, 51, 15, 0, 77, 22, 24, + 15, 0, 77, 22, 32, 14, 0, 77, 22, 24, 13, 0, 77, 22, 40, 12, 0, 77, 22, 32, + 11, 0, 77, 22, 40, 9, 10, 0, 76, 19, 24, 13, 0, 77, 16, 32, 16, 0, 77, 10, + 24, 15, 16, 0, 76, 6, 184, 255, 232, 180, 15, 16, 0, 76, 1, 184, 255, 224, 64, 34, + 16, 0, 77, 18, 0, 21, 13, 130, 48, 30, 30, 48, 62, 38, 130, 21, 21, 3, 130, 58, + 61, 43, 0, 18, 18, 24, 8, 136, 53, 81, 33, 136, 24, 77, 0, 63, 237, 63, 237, 17, + 57, 17, 51, 51, 1, 16, 214, 237, 51, 47, 237, 16, 206, 50, 47, 16, 237, 17, 57, 57, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 6, + 6, 21, 20, 30, 2, 51, 50, 62, 2, 53, 52, 46, 2, 39, 38, 38, 53, 52, 54, 51, + 50, 50, 54, 54, 55, 23, 6, 6, 35, 34, 14, 2, 21, 20, 30, 2, 23, 30, 3, 21, + 20, 14, 2, 35, 34, 46, 2, 53, 52, 54, 255, 64, 68, 14, 30, 48, 35, 32, 48, 31, + 15, 22, 35, 43, 86, 34, 42, 90, 78, 24, 35, 27, 24, 14, 5, 14, 67, 44, 12, 31, + 29, 19, 12, 23, 32, 20, 36, 64, 49, 29, 23, 50, 80, 58, 54, 80, 51, 25, 83, 1, + 152, 18, 97, 67, 33, 60, 46, 27, 25, 44, 59, 33, 41, 59, 44, 31, 54, 24, 60, 34, + 63, 58, 1, 1, 2, 71, 2, 1, 1, 9, 18, 18, 14, 20, 20, 21, 14, 24, 49, 61, + 79, 54, 42, 82, 65, 40, 38, 64, 86, 48, 84, 115, 0, 2, 0, 18, 255, 251, 1, 213, + 2, 147, 0, 21, 0, 38, 0, 152, 64, 42, 30, 48, 15, 16, 0, 76, 29, 56, 18, 0, + 77, 29, 32, 17, 0, 77, 25, 40, 18, 0, 77, 25, 32, 17, 0, 77, 25, 24, 16, 0, + 77, 25, 32, 15, 0, 77, 24, 32, 18, 0, 77, 8, 184, 255, 232, 179, 10, 0, 77, 8, + 184, 255, 216, 179, 9, 0, 77, 5, 184, 255, 232, 179, 10, 0, 77, 5, 184, 255, 224, 64, + 37, 9, 0, 77, 27, 118, 7, 40, 33, 21, 19, 0, 115, 16, 13, 14, 39, 0, 13, 121, + 16, 19, 16, 33, 121, 1, 0, 1, 1, 16, 1, 16, 1, 17, 22, 124, 9, 67, 0, 63, + 237, 47, 57, 57, 47, 47, 93, 16, 237, 17, 51, 16, 237, 50, 1, 16, 214, 221, 50, 253, + 50, 205, 51, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 19, 21, 51, 50, 30, 2, 21, 20, 35, 34, 38, 39, 17, 35, 53, 51, 53, 51, 21, 51, + 21, 3, 50, 62, 2, 53, 52, 46, 2, 35, 35, 21, 30, 2, 50, 189, 52, 56, 86, 57, + 29, 224, 34, 72, 32, 89, 89, 82, 167, 108, 31, 51, 37, 20, 20, 38, 55, 36, 49, 12, + 15, 12, 12, 2, 4, 133, 20, 45, 74, 53, 196, 6, 9, 1, 250, 70, 73, 73, 70, 254, + 60, 13, 29, 48, 36, 37, 49, 28, 12, 248, 2, 1, 1, 0, 2, 0, 18, 255, 246, 1, + 204, 2, 181, 0, 24, 0, 39, 0, 99, 185, 0, 17, 255, 224, 180, 9, 10, 0, 76, 14, + 184, 255, 232, 64, 48, 9, 10, 0, 76, 28, 130, 16, 41, 34, 6, 4, 7, 127, 1, 23, + 24, 40, 7, 23, 134, 1, 4, 1, 31, 137, 11, 15, 1, 31, 1, 63, 1, 79, 1, 4, + 8, 1, 11, 1, 11, 3, 25, 137, 19, 81, 2, 3, 77, 0, 63, 51, 63, 237, 17, 57, + 57, 47, 47, 94, 93, 16, 237, 17, 51, 16, 237, 50, 1, 16, 214, 221, 50, 253, 50, 205, + 51, 16, 222, 237, 49, 48, 43, 43, 19, 51, 53, 55, 21, 51, 21, 35, 21, 54, 54, 51, + 50, 30, 2, 21, 20, 6, 35, 34, 38, 39, 17, 35, 1, 50, 54, 53, 52, 38, 35, 34, + 6, 7, 21, 30, 3, 18, 89, 82, 159, 159, 14, 58, 25, 36, 63, 47, 28, 102, 87, 43, + 82, 39, 89, 1, 2, 48, 54, 60, 42, 23, 47, 17, 6, 20, 24, 26, 1, 208, 215, 14, + 229, 68, 109, 3, 7, 17, 36, 58, 40, 84, 72, 9, 11, 1, 130, 254, 174, 41, 46, 45, + 40, 3, 5, 159, 1, 2, 1, 1, 0, 3, 0, 29, 255, 243, 1, 216, 2, 121, 0, 19, + 0, 36, 0, 53, 0, 231, 64, 11, 44, 16, 14, 0, 77, 44, 8, 13, 0, 77, 42, 184, + 255, 240, 180, 13, 14, 0, 76, 28, 184, 255, 240, 179, 18, 0, 77, 28, 184, 255, 248, 179, + 17, 0, 77, 27, 184, 255, 232, 64, 45, 14, 0, 77, 25, 24, 14, 0, 77, 25, 16, 13, + 0, 77, 25, 24, 12, 0, 77, 25, 16, 11, 0, 77, 24, 16, 17, 18, 0, 76, 18, 16, + 8, 0, 77, 17, 16, 16, 0, 77, 17, 24, 15, 0, 77, 13, 184, 255, 232, 179, 16, 0, + 77, 13, 184, 255, 240, 179, 15, 0, 77, 12, 184, 255, 232, 179, 8, 0, 77, 8, 184, 255, + 232, 179, 8, 0, 77, 7, 184, 255, 232, 179, 16, 0, 77, 7, 184, 255, 224, 64, 48, 15, + 0, 77, 3, 16, 15, 16, 0, 76, 3, 16, 8, 0, 77, 46, 23, 118, 10, 55, 40, 29, + 118, 0, 64, 11, 16, 72, 0, 54, 40, 37, 32, 46, 49, 23, 20, 29, 32, 32, 5, 43, + 124, 15, 70, 26, 124, 5, 69, 0, 63, 237, 63, 237, 17, 57, 47, 51, 220, 50, 205, 50, + 16, 205, 50, 1, 16, 214, 43, 237, 50, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 52, 62, + 2, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 37, 50, 54, 55, 38, 38, 35, + 34, 6, 7, 54, 54, 51, 50, 30, 2, 7, 34, 6, 7, 22, 22, 51, 50, 54, 55, 6, + 6, 35, 34, 46, 2, 29, 32, 59, 81, 50, 49, 81, 59, 32, 32, 59, 81, 49, 50, 81, + 59, 32, 1, 53, 14, 26, 10, 3, 69, 67, 66, 66, 4, 14, 38, 28, 21, 36, 34, 34, + 132, 24, 36, 11, 8, 65, 61, 62, 68, 8, 12, 26, 18, 21, 36, 34, 35, 1, 54, 83, + 122, 79, 39, 39, 79, 122, 83, 83, 122, 80, 38, 38, 80, 122, 78, 14, 11, 112, 120, 118, + 111, 16, 21, 20, 25, 20, 3, 30, 18, 95, 101, 103, 97, 10, 10, 20, 24, 20, 0, 3, + 0, 40, 255, 245, 1, 204, 1, 219, 0, 19, 0, 35, 0, 52, 0, 160, 185, 0, 43, 255, + 224, 179, 16, 0, 77, 43, 184, 255, 216, 179, 15, 0, 77, 43, 184, 255, 240, 64, 27, 14, + 0, 77, 41, 48, 15, 16, 0, 76, 41, 24, 14, 0, 77, 34, 24, 17, 18, 0, 76, 34, + 16, 13, 14, 0, 76, 24, 184, 255, 240, 180, 15, 16, 0, 76, 18, 184, 255, 232, 64, 14, + 8, 0, 77, 12, 16, 8, 0, 77, 8, 16, 8, 0, 77, 2, 184, 255, 240, 64, 38, 8, + 0, 77, 39, 29, 130, 0, 54, 45, 23, 130, 31, 10, 47, 10, 63, 10, 3, 10, 53, 29, + 31, 39, 36, 23, 20, 45, 48, 48, 26, 42, 136, 15, 80, 26, 136, 5, 81, 0, 63, 237, + 63, 237, 18, 57, 47, 51, 205, 50, 220, 50, 205, 50, 1, 16, 214, 93, 237, 50, 16, 222, + 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, 14, 2, + 35, 34, 46, 2, 53, 52, 62, 2, 51, 50, 30, 2, 5, 34, 6, 7, 22, 22, 51, 50, + 54, 55, 6, 35, 34, 46, 2, 55, 50, 54, 55, 38, 38, 35, 34, 6, 7, 54, 54, 51, + 50, 30, 2, 1, 204, 31, 56, 78, 46, 45, 77, 56, 31, 31, 56, 77, 45, 46, 78, 56, + 31, 254, 236, 19, 30, 8, 8, 64, 50, 52, 66, 6, 20, 32, 21, 34, 32, 32, 122, 16, + 24, 9, 8, 65, 51, 51, 65, 7, 11, 29, 22, 20, 34, 32, 32, 232, 55, 89, 64, 35, + 35, 64, 89, 55, 55, 90, 63, 35, 35, 63, 90, 58, 20, 13, 63, 70, 74, 66, 18, 14, + 16, 14, 15, 13, 10, 63, 72, 74, 65, 11, 14, 14, 16, 14, 0, 1, 0, 13, 0, 0, + 1, 253, 2, 116, 0, 27, 0, 72, 64, 39, 22, 23, 22, 19, 23, 120, 11, 12, 20, 11, + 11, 12, 22, 19, 19, 120, 18, 13, 20, 18, 13, 18, 28, 13, 11, 3, 19, 18, 65, 22, + 12, 13, 68, 23, 11, 6, 124, 0, 69, 0, 63, 237, 50, 50, 63, 51, 51, 63, 51, 1, + 47, 51, 47, 16, 214, 135, 43, 125, 16, 196, 135, 24, 16, 43, 8, 125, 16, 196, 49, 48, + 1, 50, 22, 23, 7, 38, 35, 34, 14, 2, 7, 3, 35, 46, 3, 39, 51, 22, 18, 23, + 19, 62, 3, 1, 179, 24, 36, 14, 37, 15, 17, 7, 9, 8, 8, 6, 120, 98, 23, 41, + 40, 42, 25, 89, 29, 63, 36, 96, 7, 14, 24, 36, 2, 116, 19, 12, 57, 16, 6, 17, + 29, 24, 254, 32, 75, 138, 146, 162, 98, 138, 254, 238, 126, 1, 164, 30, 47, 33, 17, 0, + 1, 0, 30, 0, 0, 1, 233, 1, 220, 0, 25, 0, 84, 64, 47, 0, 11, 10, 11, 129, + 25, 0, 20, 25, 25, 0, 15, 25, 1, 8, 25, 19, 27, 1, 5, 10, 5, 129, 4, 1, + 20, 4, 1, 4, 26, 52, 10, 1, 10, 25, 11, 22, 136, 16, 80, 5, 4, 73, 10, 0, + 1, 74, 0, 63, 51, 51, 63, 51, 63, 237, 50, 50, 1, 47, 93, 16, 214, 135, 43, 135, + 125, 196, 1, 24, 16, 206, 50, 94, 93, 135, 16, 43, 135, 125, 196, 49, 48, 33, 35, 38, + 38, 39, 51, 30, 3, 23, 19, 62, 3, 51, 50, 22, 23, 7, 38, 35, 34, 6, 7, 1, + 3, 75, 42, 79, 33, 90, 10, 24, 27, 28, 14, 83, 8, 18, 26, 36, 26, 17, 34, 18, + 14, 13, 29, 23, 20, 10, 95, 238, 131, 44, 99, 97, 91, 36, 1, 18, 24, 39, 27, 15, + 7, 6, 65, 8, 28, 26, 0, 2, 0, 55, 255, 87, 1, 226, 3, 35, 0, 27, 0, 41, + 0, 128, 64, 74, 16, 17, 22, 115, 11, 39, 38, 31, 32, 32, 0, 10, 56, 8, 1, 42, + 8, 1, 9, 8, 1, 6, 27, 38, 27, 2, 8, 27, 24, 27, 126, 3, 8, 20, 3, 3, + 8, 24, 115, 10, 64, 8, 12, 72, 10, 11, 43, 3, 115, 0, 0, 16, 0, 2, 0, 42, + 3, 27, 68, 17, 16, 10, 121, 23, 68, 24, 8, 65, 38, 32, 35, 28, 2, 65, 0, 63, + 222, 221, 206, 50, 63, 51, 63, 237, 220, 25, 197, 24, 63, 51, 1, 16, 214, 93, 237, 16, + 222, 221, 43, 237, 135, 16, 43, 135, 125, 196, 1, 93, 93, 93, 93, 17, 18, 57, 24, 47, + 197, 214, 197, 16, 253, 222, 25, 197, 49, 48, 51, 17, 51, 17, 62, 3, 55, 51, 17, 51, + 22, 14, 2, 7, 39, 62, 3, 55, 35, 17, 6, 2, 7, 19, 34, 38, 39, 55, 22, 22, + 51, 50, 54, 55, 23, 6, 6, 55, 79, 15, 51, 60, 66, 30, 86, 39, 1, 16, 29, 41, + 23, 60, 9, 23, 21, 18, 5, 26, 75, 112, 35, 108, 56, 70, 8, 63, 8, 34, 29, 29, + 34, 8, 62, 8, 69, 2, 107, 254, 34, 43, 120, 131, 130, 54, 253, 223, 31, 66, 64, 59, + 23, 38, 9, 28, 35, 39, 20, 1, 234, 149, 255, 0, 85, 2, 166, 57, 51, 17, 29, 35, + 35, 29, 17, 51, 57, 0, 2, 0, 63, 255, 108, 1, 227, 2, 152, 0, 27, 0, 41, 0, + 118, 64, 65, 5, 6, 11, 127, 2, 39, 38, 31, 32, 32, 1, 19, 57, 27, 1, 43, 27, + 1, 27, 18, 13, 18, 129, 22, 27, 20, 22, 22, 27, 13, 127, 1, 64, 8, 12, 72, 1, + 2, 43, 22, 127, 0, 19, 1, 8, 19, 42, 13, 27, 73, 38, 32, 35, 28, 21, 73, 22, + 18, 74, 6, 5, 1, 133, 12, 74, 0, 63, 237, 220, 25, 197, 24, 63, 51, 63, 222, 221, + 206, 50, 63, 51, 1, 16, 214, 94, 93, 237, 16, 222, 221, 43, 237, 135, 16, 43, 135, 125, + 196, 1, 93, 93, 17, 18, 57, 24, 47, 205, 222, 205, 16, 253, 222, 25, 197, 49, 48, 1, + 17, 51, 22, 6, 7, 39, 62, 3, 55, 35, 17, 14, 3, 7, 35, 17, 51, 17, 62, 3, + 55, 39, 34, 38, 39, 55, 22, 22, 51, 50, 54, 55, 23, 6, 6, 1, 186, 39, 2, 54, + 41, 58, 6, 19, 19, 17, 5, 34, 27, 61, 60, 56, 21, 74, 80, 23, 56, 59, 60, 28, + 106, 56, 70, 8, 63, 8, 34, 29, 29, 34, 8, 62, 8, 69, 1, 208, 254, 117, 63, 116, + 38, 35, 6, 24, 31, 35, 17, 1, 98, 34, 92, 97, 94, 37, 1, 208, 254, 178, 39, 91, + 91, 83, 30, 75, 57, 51, 17, 29, 35, 35, 29, 17, 51, 57, 0, 2, 0, 18, 255, 251, + 1, 213, 2, 107, 0, 22, 0, 37, 0, 120, 64, 26, 31, 40, 15, 0, 77, 30, 32, 16, + 0, 77, 26, 32, 16, 0, 77, 26, 16, 14, 0, 77, 25, 40, 15, 0, 77, 8, 184, 255, + 224, 180, 9, 10, 0, 76, 5, 184, 255, 232, 64, 41, 9, 10, 0, 76, 28, 118, 7, 39, + 34, 22, 20, 0, 115, 17, 14, 15, 38, 0, 14, 121, 17, 20, 17, 34, 121, 1, 0, 1, + 16, 1, 2, 17, 1, 17, 1, 18, 65, 23, 124, 10, 67, 0, 63, 237, 63, 57, 57, 47, + 47, 93, 16, 237, 17, 51, 16, 237, 50, 1, 16, 214, 221, 50, 253, 50, 205, 51, 16, 222, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 19, 21, 51, 50, 30, 2, 21, 20, 6, 35, + 34, 38, 39, 17, 35, 53, 51, 53, 51, 21, 51, 21, 3, 50, 62, 2, 53, 52, 46, 2, + 35, 35, 21, 22, 22, 171, 61, 56, 88, 61, 32, 120, 113, 34, 81, 32, 71, 71, 82, 122, + 54, 31, 54, 40, 23, 23, 41, 58, 36, 58, 24, 27, 1, 229, 102, 20, 45, 74, 53, 99, + 97, 6, 9, 1, 219, 64, 70, 70, 64, 254, 91, 13, 29, 48, 36, 37, 49, 28, 12, 248, + 3, 1, 0, 2, 0, 18, 255, 246, 1, 204, 1, 232, 0, 28, 0, 45, 0, 145, 64, 21, + 34, 32, 18, 0, 77, 34, 24, 17, 0, 77, 31, 24, 18, 0, 77, 31, 16, 17, 0, 77, + 20, 184, 255, 224, 179, 12, 0, 77, 20, 184, 255, 232, 180, 10, 11, 0, 76, 16, 184, 255, + 232, 180, 11, 12, 0, 76, 16, 184, 255, 224, 64, 50, 10, 0, 77, 32, 130, 18, 47, 40, + 6, 4, 7, 127, 1, 27, 28, 46, 7, 27, 134, 1, 4, 1, 37, 137, 13, 47, 1, 63, + 1, 2, 0, 13, 16, 13, 64, 13, 80, 13, 4, 8, 1, 13, 1, 13, 2, 29, 137, 23, + 81, 2, 0, 47, 63, 237, 17, 57, 57, 47, 47, 94, 93, 93, 16, 237, 17, 51, 16, 237, + 50, 1, 16, 214, 221, 50, 253, 50, 205, 51, 16, 222, 237, 49, 48, 43, 43, 43, 43, 43, + 43, 43, 43, 19, 51, 53, 51, 21, 51, 21, 35, 21, 62, 3, 51, 50, 30, 2, 21, 20, + 14, 2, 35, 34, 38, 39, 17, 35, 19, 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 21, + 30, 3, 18, 72, 82, 158, 158, 7, 25, 30, 31, 12, 36, 66, 51, 30, 29, 53, 72, 43, + 44, 90, 39, 72, 249, 48, 63, 19, 31, 40, 21, 22, 56, 17, 6, 22, 27, 29, 1, 170, + 62, 62, 58, 81, 1, 4, 3, 2, 17, 36, 58, 40, 42, 59, 38, 17, 9, 11, 1, 102, + 254, 202, 41, 46, 22, 32, 21, 10, 3, 5, 159, 1, 2, 1, 1, 0, 2, 0, 73, 0, + 0, 1, 199, 2, 113, 0, 21, 0, 36, 0, 213, 182, 33, 16, 17, 18, 0, 76, 33, 184, + 255, 240, 64, 9, 16, 0, 77, 10, 16, 14, 0, 77, 7, 184, 255, 240, 179, 15, 0, 77, + 7, 184, 255, 240, 179, 12, 0, 77, 7, 184, 255, 232, 179, 11, 0, 77, 6, 184, 255, 240, + 179, 16, 0, 77, 6, 184, 255, 224, 180, 9, 10, 0, 76, 3, 184, 255, 224, 179, 16, 0, + 77, 3, 184, 255, 232, 179, 15, 0, 77, 3, 184, 255, 224, 179, 10, 0, 77, 3, 184, 255, + 232, 179, 9, 0, 77, 2, 184, 255, 232, 179, 16, 0, 77, 2, 184, 255, 224, 64, 49, 15, + 0, 77, 30, 10, 31, 9, 9, 33, 7, 32, 8, 32, 31, 8, 31, 8, 31, 26, 35, 118, + 5, 38, 26, 15, 115, 0, 16, 1, 8, 16, 37, 10, 9, 7, 14, 121, 33, 32, 30, 26, + 26, 0, 16, 68, 22, 124, 0, 65, 0, 63, 237, 63, 18, 57, 47, 51, 204, 51, 253, 50, + 206, 51, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, 18, 57, 57, 47, 47, 17, 51, 17, + 18, 57, 57, 51, 17, 18, 57, 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 19, 50, 30, 2, 21, 20, 7, 23, 7, 39, 6, 6, 35, 35, 21, 35, + 17, 62, 3, 23, 34, 6, 7, 21, 51, 50, 50, 55, 39, 55, 23, 54, 53, 52, 235, 55, + 83, 55, 27, 97, 63, 58, 68, 17, 32, 19, 72, 82, 18, 43, 43, 41, 23, 26, 48, 12, + 68, 10, 17, 8, 43, 56, 51, 49, 2, 113, 28, 51, 70, 43, 124, 49, 107, 33, 119, 3, + 5, 231, 2, 98, 4, 6, 4, 1, 71, 1, 2, 250, 2, 74, 34, 90, 30, 79, 124, 0, + 2, 0, 71, 255, 91, 1, 204, 1, 218, 0, 22, 0, 41, 0, 180, 64, 32, 29, 56, 15, + 0, 77, 29, 24, 14, 0, 77, 29, 16, 13, 0, 77, 25, 16, 17, 18, 0, 76, 25, 16, + 13, 0, 77, 21, 32, 15, 0, 77, 21, 184, 255, 232, 180, 8, 9, 0, 76, 20, 184, 255, + 232, 179, 16, 0, 77, 3, 184, 255, 232, 179, 12, 0, 77, 2, 184, 255, 232, 179, 14, 0, + 77, 2, 184, 255, 232, 179, 12, 0, 77, 2, 184, 255, 224, 64, 48, 11, 0, 77, 6, 40, + 5, 41, 5, 24, 3, 23, 4, 23, 41, 4, 41, 4, 41, 34, 27, 130, 0, 43, 34, 13, + 127, 0, 14, 1, 8, 14, 42, 30, 136, 18, 80, 14, 75, 40, 24, 23, 37, 136, 6, 5, + 3, 9, 81, 0, 63, 51, 206, 51, 253, 204, 51, 51, 63, 63, 237, 1, 16, 214, 94, 93, + 237, 50, 16, 222, 237, 18, 57, 57, 47, 47, 17, 51, 17, 18, 57, 57, 51, 17, 18, 57, + 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, 6, 7, 23, + 7, 39, 6, 6, 35, 34, 38, 39, 21, 35, 17, 54, 54, 51, 50, 30, 2, 7, 23, 54, + 54, 53, 52, 38, 35, 34, 6, 7, 17, 22, 22, 51, 50, 50, 55, 39, 1, 204, 44, 39, + 52, 56, 52, 14, 30, 16, 37, 56, 14, 83, 27, 85, 55, 50, 82, 58, 32, 175, 53, 20, + 17, 76, 61, 34, 39, 11, 14, 54, 29, 9, 15, 9, 54, 231, 66, 102, 32, 89, 32, 90, + 5, 6, 18, 11, 183, 2, 103, 8, 16, 34, 63, 90, 97, 93, 23, 70, 41, 81, 89, 6, + 4, 254, 219, 13, 22, 1, 93, 0, 1, 0, 54, 0, 0, 1, 204, 2, 225, 0, 11, 0, + 40, 64, 20, 2, 115, 5, 13, 8, 7, 115, 0, 11, 12, 7, 0, 121, 10, 68, 6, 121, + 3, 1, 65, 0, 63, 206, 237, 63, 237, 50, 1, 16, 214, 221, 253, 205, 16, 222, 237, 49, + 48, 55, 17, 51, 53, 51, 21, 35, 17, 51, 21, 33, 53, 143, 238, 79, 235, 134, 254, 207, + 70, 2, 37, 118, 188, 254, 33, 70, 70, 0, 1, 0, 107, 0, 0, 1, 184, 2, 68, 0, + 7, 0, 31, 64, 15, 2, 127, 5, 9, 7, 127, 0, 8, 6, 133, 3, 1, 73, 0, 74, + 0, 63, 63, 206, 237, 1, 16, 214, 237, 16, 222, 237, 49, 48, 51, 17, 33, 53, 51, 21, + 35, 17, 107, 1, 2, 75, 251, 1, 208, 116, 185, 254, 117, 0, 1, 0, 54, 0, 0, 1, + 204, 2, 107, 0, 17, 0, 62, 64, 31, 7, 19, 11, 11, 14, 9, 13, 115, 4, 0, 17, + 2, 2, 17, 18, 12, 1, 121, 9, 4, 4, 5, 13, 0, 121, 16, 68, 8, 121, 5, 65, + 0, 63, 237, 63, 237, 50, 17, 57, 47, 51, 237, 50, 1, 16, 198, 50, 47, 16, 221, 50, + 253, 50, 205, 50, 47, 16, 206, 49, 48, 55, 53, 35, 53, 51, 17, 33, 21, 35, 21, 51, + 21, 35, 21, 51, 21, 33, 53, 143, 89, 89, 1, 61, 235, 134, 134, 134, 254, 207, 70, 214, + 67, 1, 12, 70, 198, 67, 214, 70, 70, 0, 1, 0, 33, 0, 0, 1, 184, 1, 208, 0, + 13, 0, 47, 64, 23, 7, 15, 11, 9, 12, 127, 4, 1, 2, 14, 12, 1, 134, 9, 4, + 4, 0, 8, 133, 5, 73, 0, 74, 0, 63, 63, 237, 18, 57, 47, 51, 237, 50, 1, 16, + 214, 221, 50, 253, 50, 205, 16, 206, 49, 48, 51, 53, 35, 53, 51, 53, 33, 21, 35, 21, + 51, 21, 35, 21, 107, 74, 74, 1, 77, 251, 158, 158, 183, 63, 218, 69, 149, 63, 183, 0, + 1, 0, 45, 255, 91, 1, 208, 2, 107, 0, 43, 0, 114, 185, 0, 42, 255, 232, 64, 34, + 8, 0, 77, 20, 24, 14, 0, 77, 20, 16, 13, 0, 77, 15, 24, 17, 0, 77, 14, 24, + 17, 0, 77, 14, 24, 14, 0, 77, 14, 16, 13, 0, 77, 2, 184, 255, 232, 64, 34, 8, + 0, 77, 32, 32, 17, 118, 0, 45, 34, 28, 115, 29, 15, 8, 1, 8, 8, 29, 44, 22, + 124, 39, 39, 29, 33, 121, 30, 65, 29, 68, 12, 124, 5, 0, 47, 237, 63, 63, 237, 18, + 57, 47, 237, 1, 16, 198, 50, 47, 93, 16, 237, 50, 16, 222, 237, 51, 47, 49, 48, 43, + 43, 43, 43, 43, 43, 43, 43, 37, 20, 14, 2, 35, 34, 34, 39, 55, 22, 22, 51, 50, + 62, 2, 53, 52, 46, 2, 35, 34, 14, 2, 7, 17, 35, 17, 33, 21, 33, 21, 62, 3, + 51, 50, 30, 2, 1, 208, 29, 57, 85, 55, 13, 26, 11, 2, 5, 15, 13, 34, 57, 42, + 24, 23, 42, 57, 34, 14, 30, 26, 21, 6, 82, 1, 99, 254, 239, 7, 24, 30, 31, 14, + 58, 87, 58, 28, 113, 57, 102, 75, 44, 2, 67, 1, 1, 27, 53, 79, 52, 55, 78, 50, + 24, 3, 5, 5, 2, 254, 207, 2, 107, 70, 177, 3, 6, 5, 3, 39, 72, 102, 0, 1, + 0, 71, 255, 90, 1, 207, 1, 208, 0, 35, 0, 124, 64, 21, 20, 24, 16, 0, 77, 20, + 16, 15, 0, 77, 16, 16, 16, 0, 77, 16, 24, 15, 0, 77, 2, 184, 255, 224, 179, 9, + 0, 77, 2, 184, 255, 216, 179, 8, 0, 77, 1, 184, 255, 232, 64, 44, 10, 0, 77, 29, + 29, 18, 130, 3, 37, 31, 25, 127, 26, 32, 11, 1, 15, 11, 31, 11, 2, 11, 11, 0, + 26, 1, 8, 26, 36, 21, 137, 0, 0, 26, 30, 134, 27, 73, 26, 74, 15, 137, 8, 75, + 0, 63, 237, 63, 63, 237, 18, 57, 47, 237, 1, 16, 198, 94, 93, 50, 47, 93, 93, 16, + 237, 50, 16, 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 1, 50, 22, 21, + 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, + 21, 35, 17, 33, 21, 35, 21, 62, 3, 1, 5, 106, 96, 24, 48, 71, 47, 10, 22, 8, + 5, 5, 11, 8, 57, 62, 66, 70, 20, 52, 19, 83, 1, 70, 243, 7, 25, 30, 31, 1, + 30, 117, 107, 48, 84, 61, 35, 1, 2, 66, 1, 1, 77, 84, 85, 71, 6, 5, 207, 1, + 208, 68, 125, 3, 5, 5, 2, 0, 1, 0, 4, 255, 91, 1, 235, 2, 107, 0, 49, 0, + 193, 64, 110, 15, 12, 1, 0, 33, 16, 33, 32, 33, 3, 8, 33, 33, 28, 43, 48, 43, + 120, 38, 33, 20, 38, 38, 33, 33, 27, 24, 27, 120, 28, 33, 20, 28, 28, 33, 12, 12, + 7, 18, 21, 18, 120, 17, 12, 20, 17, 17, 12, 48, 24, 49, 115, 0, 12, 6, 1, 6, + 120, 7, 12, 20, 7, 7, 12, 1, 21, 0, 0, 38, 7, 28, 28, 38, 38, 42, 115, 39, + 51, 17, 17, 7, 50, 41, 38, 121, 43, 68, 28, 27, 65, 24, 21, 21, 12, 48, 1, 1, + 33, 12, 12, 22, 65, 17, 18, 65, 7, 6, 68, 0, 68, 0, 63, 63, 51, 63, 51, 63, + 57, 17, 51, 51, 17, 51, 17, 51, 17, 51, 63, 51, 63, 237, 206, 1, 16, 198, 50, 47, + 16, 222, 237, 51, 47, 51, 47, 17, 18, 57, 47, 51, 51, 135, 16, 43, 135, 125, 196, 1, + 24, 16, 237, 50, 50, 135, 16, 43, 135, 8, 125, 196, 135, 5, 24, 16, 43, 135, 125, 196, + 135, 24, 16, 43, 135, 8, 125, 196, 1, 94, 93, 93, 49, 48, 51, 17, 14, 3, 7, 35, + 62, 3, 55, 46, 3, 39, 51, 22, 22, 23, 17, 51, 17, 54, 54, 55, 51, 14, 3, 7, + 30, 3, 23, 51, 21, 35, 53, 35, 46, 3, 39, 17, 195, 17, 30, 28, 24, 10, 82, 10, + 30, 35, 38, 19, 14, 32, 32, 31, 13, 82, 24, 49, 26, 73, 29, 54, 28, 82, 14, 33, + 35, 35, 15, 17, 33, 32, 28, 12, 40, 78, 24, 11, 27, 31, 34, 18, 1, 46, 24, 71, + 81, 86, 40, 45, 93, 86, 77, 30, 30, 70, 75, 77, 36, 77, 134, 57, 1, 12, 254, 244, + 57, 133, 78, 35, 75, 75, 72, 31, 25, 62, 68, 72, 34, 235, 165, 40, 87, 81, 71, 24, + 254, 209, 0, 1, 0, 7, 255, 127, 1, 224, 1, 208, 0, 49, 0, 182, 64, 104, 15, 36, + 1, 0, 9, 16, 9, 32, 9, 3, 8, 17, 12, 9, 3, 0, 3, 129, 4, 9, 20, 4, + 4, 9, 36, 36, 31, 42, 47, 42, 129, 41, 36, 20, 41, 41, 36, 0, 22, 127, 25, 36, + 30, 25, 30, 129, 31, 36, 20, 31, 31, 36, 47, 160, 25, 176, 25, 2, 25, 25, 12, 31, + 4, 4, 12, 12, 16, 127, 13, 51, 41, 41, 31, 50, 0, 47, 47, 36, 22, 25, 25, 9, + 36, 36, 24, 48, 73, 41, 42, 73, 31, 30, 74, 24, 74, 15, 15, 12, 133, 17, 74, 4, + 3, 73, 0, 63, 51, 63, 237, 51, 47, 63, 63, 51, 63, 51, 63, 18, 57, 17, 51, 51, + 17, 51, 17, 51, 17, 51, 1, 16, 198, 50, 47, 16, 222, 237, 51, 47, 51, 47, 17, 18, + 57, 47, 93, 51, 135, 16, 43, 135, 125, 196, 1, 24, 16, 237, 50, 135, 16, 43, 135, 8, + 125, 196, 135, 5, 24, 16, 43, 135, 125, 196, 1, 17, 51, 94, 93, 93, 49, 48, 1, 54, + 54, 55, 51, 14, 3, 7, 22, 22, 23, 51, 21, 35, 53, 35, 46, 3, 39, 21, 35, 53, + 14, 3, 7, 35, 62, 3, 55, 46, 3, 39, 51, 30, 3, 23, 53, 51, 1, 21, 23, 52, + 19, 83, 13, 32, 35, 37, 18, 34, 62, 24, 41, 79, 10, 9, 27, 31, 32, 15, 73, 15, + 32, 31, 27, 10, 82, 12, 34, 39, 40, 20, 15, 35, 34, 30, 11, 82, 9, 24, 25, 26, + 11, 73, 1, 21, 43, 103, 41, 21, 55, 58, 60, 25, 36, 92, 47, 199, 129, 25, 56, 55, + 51, 20, 207, 218, 20, 52, 59, 60, 27, 32, 68, 66, 58, 21, 24, 58, 60, 56, 21, 22, + 52, 54, 52, 21, 201, 0, 1, 0, 38, 255, 87, 1, 209, 2, 118, 0, 76, 1, 72, 185, + 0, 73, 255, 240, 179, 19, 0, 77, 73, 184, 255, 232, 179, 18, 0, 77, 73, 184, 255, 216, + 179, 17, 0, 77, 73, 184, 255, 224, 179, 8, 0, 77, 69, 184, 255, 224, 180, 17, 18, 0, + 76, 65, 184, 255, 224, 180, 17, 18, 0, 76, 61, 184, 255, 240, 179, 19, 0, 77, 61, 184, + 255, 224, 179, 18, 0, 77, 61, 184, 255, 232, 64, 47, 8, 10, 0, 76, 56, 16, 18, 0, + 77, 56, 24, 17, 0, 77, 50, 40, 17, 0, 77, 46, 16, 15, 16, 0, 76, 46, 24, 14, + 0, 77, 37, 24, 16, 0, 77, 33, 32, 16, 0, 77, 26, 24, 13, 17, 0, 76, 5, 184, + 255, 232, 179, 21, 0, 77, 5, 184, 255, 224, 179, 20, 0, 77, 5, 184, 255, 232, 180, 18, + 19, 0, 76, 5, 184, 255, 224, 179, 17, 0, 77, 5, 184, 255, 232, 180, 15, 16, 0, 76, + 2, 184, 255, 216, 180, 19, 20, 0, 76, 2, 184, 255, 208, 180, 16, 18, 0, 76, 2, 184, + 255, 216, 64, 11, 15, 0, 77, 66, 48, 118, 63, 63, 71, 17, 3, 184, 255, 192, 64, 51, + 11, 14, 72, 3, 76, 0, 23, 15, 11, 1, 8, 11, 20, 20, 28, 35, 118, 71, 78, 55, + 55, 41, 41, 28, 77, 0, 20, 20, 23, 15, 8, 77, 54, 54, 51, 124, 58, 66, 41, 121, + 42, 42, 58, 69, 29, 29, 32, 124, 76, 23, 70, 0, 63, 51, 237, 50, 47, 63, 57, 47, + 237, 57, 16, 237, 50, 47, 16, 220, 205, 18, 57, 47, 205, 1, 16, 198, 50, 47, 50, 47, + 16, 222, 237, 18, 57, 47, 204, 94, 93, 51, 221, 50, 213, 43, 205, 17, 51, 47, 237, 50, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 23, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, + 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 46, 3, 39, 55, 22, 22, 51, 50, 54, 53, + 52, 46, 2, 35, 35, 53, 51, 50, 62, 2, 53, 52, 38, 35, 34, 6, 7, 39, 54, 54, + 51, 50, 30, 2, 21, 20, 6, 7, 30, 3, 21, 20, 14, 2, 7, 254, 26, 23, 9, 21, + 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 12, 6, 31, 54, 43, 33, 9, + 25, 21, 84, 57, 72, 86, 32, 54, 73, 41, 42, 33, 30, 64, 53, 34, 67, 54, 48, 79, + 20, 27, 23, 96, 56, 44, 75, 54, 30, 55, 54, 27, 49, 38, 22, 28, 52, 74, 46, 33, + 12, 30, 29, 10, 23, 19, 13, 7, 5, 51, 4, 5, 20, 20, 11, 2, 11, 27, 13, 1, + 10, 13, 14, 5, 66, 11, 29, 53, 62, 36, 47, 26, 10, 70, 9, 24, 41, 32, 41, 51, + 21, 11, 65, 15, 22, 19, 39, 61, 41, 43, 76, 17, 7, 26, 40, 54, 36, 45, 65, 44, + 24, 3, 0, 1, 0, 72, 255, 87, 1, 191, 1, 220, 0, 69, 0, 214, 185, 0, 66, 255, + 224, 179, 11, 0, 77, 66, 184, 255, 216, 180, 9, 10, 0, 76, 55, 184, 255, 232, 180, 11, + 12, 0, 76, 55, 184, 255, 224, 179, 10, 0, 77, 5, 184, 255, 224, 180, 19, 20, 0, 76, + 5, 184, 255, 216, 180, 17, 18, 0, 76, 5, 184, 255, 232, 179, 16, 0, 77, 5, 184, 255, + 224, 179, 15, 0, 77, 2, 184, 255, 208, 180, 16, 20, 0, 76, 2, 184, 255, 216, 64, 11, + 15, 0, 77, 62, 42, 130, 57, 57, 65, 17, 3, 184, 255, 192, 64, 53, 11, 14, 72, 3, + 68, 0, 23, 15, 11, 1, 11, 20, 20, 26, 33, 130, 65, 71, 49, 49, 37, 37, 0, 26, + 1, 8, 26, 70, 0, 20, 20, 23, 15, 8, 70, 48, 48, 45, 136, 52, 62, 37, 134, 38, + 38, 52, 80, 27, 30, 136, 68, 23, 81, 0, 63, 51, 237, 50, 63, 57, 47, 237, 57, 16, + 237, 50, 47, 16, 220, 205, 18, 57, 47, 205, 1, 16, 198, 94, 93, 50, 47, 50, 47, 16, + 222, 237, 18, 57, 47, 204, 93, 51, 221, 50, 213, 43, 205, 17, 51, 47, 237, 50, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 23, 22, 22, 21, 20, 14, 2, 35, 34, 38, + 39, 55, 22, 22, 51, 50, 53, 52, 39, 39, 54, 54, 55, 38, 38, 39, 55, 22, 22, 51, + 50, 54, 53, 52, 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 39, 54, + 54, 51, 50, 30, 2, 21, 20, 14, 2, 7, 22, 22, 21, 20, 6, 7, 6, 254, 26, 23, + 9, 21, 35, 26, 23, 40, 11, 10, 11, 24, 15, 32, 37, 7, 4, 12, 6, 49, 71, 16, + 17, 15, 78, 55, 66, 60, 60, 51, 98, 92, 51, 50, 56, 60, 28, 73, 26, 18, 33, 79, + 39, 38, 70, 54, 32, 14, 22, 25, 12, 38, 51, 97, 84, 7, 33, 12, 30, 29, 10, 23, + 19, 13, 7, 5, 51, 4, 5, 20, 20, 11, 2, 11, 28, 13, 2, 15, 8, 70, 5, 19, + 38, 32, 36, 42, 66, 34, 29, 31, 36, 14, 12, 73, 11, 13, 13, 32, 51, 38, 18, 32, + 26, 18, 4, 14, 53, 48, 62, 72, 5, 11, 0, 1, 0, 64, 255, 91, 1, 217, 2, 107, + 0, 24, 0, 101, 64, 57, 3, 3, 6, 24, 21, 24, 120, 0, 3, 20, 0, 0, 3, 11, + 3, 6, 3, 120, 16, 11, 20, 16, 16, 11, 0, 0, 6, 10, 115, 7, 26, 21, 16, 115, + 0, 18, 1, 8, 18, 25, 0, 24, 65, 21, 16, 3, 3, 18, 19, 65, 18, 68, 9, 6, + 121, 11, 68, 0, 63, 237, 206, 63, 63, 18, 57, 17, 51, 51, 63, 51, 1, 16, 214, 94, + 93, 237, 50, 16, 222, 237, 197, 50, 47, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, + 8, 125, 196, 49, 48, 1, 6, 6, 7, 22, 22, 23, 51, 21, 35, 53, 35, 46, 3, 39, + 17, 35, 17, 51, 17, 54, 54, 55, 1, 214, 49, 117, 68, 53, 102, 42, 40, 78, 22, 25, + 50, 56, 61, 35, 82, 82, 65, 119, 45, 2, 107, 73, 144, 72, 45, 135, 80, 235, 165, 46, + 88, 76, 63, 23, 254, 216, 2, 107, 254, 236, 67, 146, 63, 0, 1, 0, 71, 255, 127, 1, + 208, 1, 208, 0, 26, 0, 60, 64, 30, 24, 24, 5, 9, 127, 6, 28, 20, 15, 127, 17, + 27, 24, 23, 23, 18, 15, 0, 20, 20, 17, 18, 73, 17, 74, 8, 5, 133, 10, 74, 0, + 63, 237, 206, 63, 63, 18, 57, 17, 51, 51, 17, 51, 47, 51, 1, 16, 214, 237, 50, 16, + 222, 237, 197, 50, 47, 49, 48, 55, 30, 3, 23, 51, 21, 35, 53, 35, 46, 3, 39, 21, + 35, 17, 51, 21, 54, 54, 55, 51, 6, 6, 238, 19, 48, 49, 49, 21, 40, 78, 9, 19, + 56, 61, 62, 25, 83, 83, 55, 110, 44, 97, 43, 121, 255, 15, 41, 49, 54, 26, 199, 129, + 31, 65, 60, 50, 17, 223, 1, 208, 194, 48, 95, 51, 51, 108, 0, 1, 0, 48, 0, 0, + 1, 235, 2, 107, 0, 30, 0, 126, 64, 70, 0, 3, 1, 8, 5, 5, 8, 30, 25, 30, + 120, 0, 5, 20, 0, 0, 5, 9, 5, 8, 5, 120, 12, 9, 20, 12, 9, 25, 12, 22, + 175, 15, 191, 15, 2, 15, 15, 18, 0, 0, 8, 32, 21, 17, 115, 18, 31, 0, 30, 65, + 14, 14, 12, 16, 21, 25, 21, 23, 23, 5, 21, 21, 18, 19, 65, 18, 68, 8, 9, 68, + 0, 63, 51, 63, 63, 18, 57, 47, 51, 51, 47, 17, 51, 16, 205, 50, 50, 47, 63, 51, + 1, 16, 214, 237, 50, 16, 206, 50, 47, 17, 57, 47, 93, 51, 221, 50, 135, 43, 135, 125, + 196, 135, 24, 16, 43, 135, 8, 125, 196, 49, 48, 1, 94, 93, 1, 14, 3, 7, 22, 22, + 23, 35, 38, 38, 39, 21, 35, 53, 35, 17, 35, 17, 51, 17, 51, 53, 51, 21, 62, 3, + 55, 1, 214, 11, 27, 37, 49, 33, 48, 85, 45, 93, 44, 78, 38, 65, 43, 82, 82, 43, + 65, 28, 42, 31, 25, 11, 2, 107, 33, 63, 68, 77, 48, 60, 158, 112, 106, 145, 37, 137, + 135, 254, 226, 2, 107, 254, 246, 135, 134, 41, 69, 62, 60, 33, 0, 1, 0, 54, 0, 0, + 1, 222, 1, 208, 0, 34, 0, 132, 64, 75, 0, 0, 16, 0, 32, 0, 3, 8, 0, 0, + 30, 6, 11, 6, 129, 5, 0, 20, 5, 5, 0, 0, 29, 24, 29, 129, 30, 0, 20, 30, + 0, 30, 30, 5, 24, 11, 21, 175, 14, 191, 14, 2, 14, 14, 17, 5, 36, 20, 15, 127, + 17, 35, 30, 29, 73, 13, 13, 11, 15, 20, 24, 20, 22, 22, 0, 20, 20, 17, 18, 73, + 17, 74, 5, 6, 74, 0, 63, 51, 63, 63, 18, 57, 47, 51, 51, 47, 17, 51, 16, 205, + 50, 50, 47, 63, 51, 1, 16, 214, 237, 50, 16, 206, 17, 57, 47, 93, 51, 205, 50, 17, + 51, 47, 135, 43, 135, 125, 196, 135, 24, 16, 43, 135, 8, 125, 196, 1, 94, 93, 49, 48, + 37, 30, 3, 23, 35, 46, 3, 39, 21, 35, 53, 35, 21, 35, 17, 51, 21, 51, 53, 51, + 21, 62, 3, 55, 51, 14, 3, 1, 45, 24, 49, 45, 41, 18, 98, 16, 33, 34, 36, 19, + 61, 45, 82, 82, 45, 61, 21, 33, 28, 25, 14, 97, 20, 34, 37, 42, 255, 23, 60, 68, + 71, 33, 28, 59, 55, 50, 19, 98, 101, 214, 1, 208, 193, 103, 80, 27, 43, 39, 39, 22, + 28, 49, 48, 52, 0, 1, 0, 18, 0, 0, 1, 235, 2, 107, 0, 28, 0, 121, 64, 69, + 3, 3, 6, 28, 25, 28, 120, 0, 3, 20, 0, 0, 3, 7, 3, 6, 3, 120, 12, 7, + 20, 12, 12, 7, 0, 0, 6, 30, 12, 25, 23, 21, 24, 115, 18, 16, 0, 15, 1, 15, + 29, 0, 28, 65, 25, 12, 3, 24, 15, 21, 3, 15, 18, 31, 18, 47, 18, 3, 8, 18, + 18, 14, 19, 65, 14, 68, 6, 7, 68, 0, 63, 51, 63, 63, 18, 57, 47, 94, 93, 57, + 51, 205, 50, 17, 51, 51, 63, 51, 1, 16, 214, 93, 205, 51, 253, 50, 205, 51, 51, 16, + 206, 50, 47, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 8, 125, 196, 49, 48, 1, + 6, 6, 7, 22, 22, 23, 35, 46, 3, 39, 17, 35, 17, 35, 53, 51, 53, 51, 21, 51, + 21, 35, 21, 54, 54, 55, 1, 214, 49, 96, 64, 64, 118, 48, 93, 25, 50, 56, 61, 35, + 82, 71, 71, 82, 54, 54, 65, 99, 40, 2, 107, 73, 143, 73, 54, 173, 103, 46, 88, 76, + 63, 23, 254, 216, 1, 229, 64, 70, 70, 64, 142, 67, 145, 64, 0, 1, 0, 18, 0, 0, + 1, 222, 1, 232, 0, 31, 0, 128, 64, 72, 0, 0, 5, 26, 24, 26, 129, 27, 0, 20, + 27, 27, 0, 6, 0, 5, 0, 129, 11, 6, 20, 11, 6, 0, 11, 27, 27, 5, 33, 11, + 24, 22, 20, 23, 127, 17, 15, 0, 14, 1, 8, 14, 32, 27, 26, 73, 23, 14, 20, 17, + 11, 24, 20, 24, 36, 24, 2, 24, 17, 64, 8, 13, 72, 17, 17, 13, 18, 13, 74, 5, + 6, 74, 0, 63, 51, 63, 47, 18, 57, 47, 43, 57, 93, 17, 51, 17, 51, 205, 50, 63, + 51, 1, 16, 214, 94, 93, 205, 51, 253, 50, 205, 51, 51, 16, 206, 50, 47, 16, 0, 193, + 135, 5, 43, 135, 125, 196, 135, 24, 16, 43, 135, 8, 125, 196, 49, 48, 37, 30, 3, 23, + 35, 46, 3, 39, 21, 35, 17, 35, 53, 51, 53, 51, 21, 51, 21, 35, 21, 54, 55, 51, + 14, 3, 1, 0, 27, 62, 61, 54, 18, 98, 19, 50, 56, 58, 25, 82, 72, 72, 82, 55, + 55, 103, 88, 97, 21, 51, 54, 54, 253, 20, 61, 69, 72, 31, 31, 65, 60, 50, 17, 223, + 1, 112, 58, 62, 62, 58, 98, 91, 103, 26, 55, 55, 52, 0, 1, 0, 18, 0, 0, 1, + 235, 2, 107, 0, 24, 0, 100, 64, 55, 3, 3, 0, 9, 14, 9, 120, 8, 3, 20, 8, + 8, 3, 3, 0, 24, 21, 3, 21, 24, 120, 0, 3, 20, 0, 3, 0, 0, 8, 26, 14, + 21, 115, 17, 0, 18, 1, 8, 18, 25, 0, 24, 65, 21, 14, 16, 17, 121, 20, 65, 16, + 68, 8, 9, 68, 0, 63, 51, 63, 63, 237, 18, 57, 57, 63, 51, 1, 16, 214, 94, 93, + 221, 237, 50, 16, 206, 50, 47, 135, 43, 16, 0, 193, 135, 5, 125, 16, 196, 135, 24, 16, + 43, 135, 8, 125, 196, 49, 48, 1, 6, 6, 7, 30, 3, 23, 35, 46, 3, 39, 17, 35, + 17, 35, 53, 51, 17, 54, 54, 55, 1, 214, 36, 92, 64, 25, 58, 56, 53, 21, 93, 20, + 47, 52, 56, 29, 82, 94, 176, 59, 87, 35, 2, 107, 67, 140, 82, 21, 71, 88, 100, 50, + 50, 92, 78, 59, 17, 254, 216, 2, 37, 70, 254, 236, 72, 138, 66, 0, 1, 0, 17, 0, + 0, 1, 222, 1, 208, 0, 24, 0, 98, 64, 54, 0, 0, 5, 21, 18, 21, 129, 22, 0, + 20, 22, 22, 0, 6, 0, 5, 0, 129, 11, 6, 20, 11, 6, 0, 11, 22, 22, 5, 26, + 11, 18, 127, 15, 0, 14, 1, 8, 14, 25, 22, 21, 73, 18, 11, 13, 14, 133, 17, 73, + 13, 74, 5, 6, 74, 0, 63, 51, 63, 63, 237, 18, 57, 57, 63, 51, 1, 16, 214, 94, + 93, 205, 237, 50, 16, 206, 50, 47, 16, 0, 193, 135, 5, 43, 135, 125, 196, 135, 24, 16, + 43, 135, 8, 125, 196, 49, 48, 37, 30, 3, 23, 35, 46, 3, 39, 21, 35, 17, 35, 53, + 51, 21, 54, 54, 55, 51, 6, 6, 1, 19, 24, 55, 56, 50, 18, 98, 19, 46, 50, 51, + 24, 82, 91, 173, 52, 86, 35, 97, 42, 87, 255, 19, 61, 70, 74, 31, 31, 66, 60, 51, + 15, 223, 1, 139, 69, 194, 51, 97, 46, 53, 102, 0, 1, 0, 45, 255, 91, 1, 217, 2, + 107, 0, 15, 0, 60, 64, 33, 15, 7, 115, 2, 6, 115, 3, 17, 14, 10, 115, 11, 16, + 9, 121, 15, 14, 31, 14, 2, 14, 14, 11, 0, 12, 65, 11, 68, 5, 2, 121, 7, 68, + 0, 63, 237, 206, 63, 63, 51, 18, 57, 47, 93, 237, 1, 16, 214, 237, 50, 16, 222, 237, + 213, 237, 50, 49, 48, 1, 51, 17, 51, 21, 35, 53, 35, 17, 35, 17, 35, 17, 51, 17, + 51, 1, 96, 82, 39, 78, 43, 225, 82, 82, 225, 2, 107, 253, 219, 235, 165, 1, 32, 254, + 224, 2, 107, 254, 251, 0, 1, 0, 71, 255, 127, 1, 208, 1, 208, 0, 15, 0, 66, 64, + 37, 13, 5, 127, 0, 4, 127, 1, 17, 12, 8, 127, 0, 9, 1, 9, 16, 7, 133, 15, + 12, 31, 12, 2, 8, 12, 12, 9, 14, 10, 73, 9, 74, 3, 0, 133, 5, 74, 0, 63, + 237, 206, 63, 63, 51, 18, 57, 47, 94, 93, 237, 1, 16, 214, 93, 237, 50, 16, 222, 237, + 213, 237, 50, 49, 48, 37, 51, 21, 35, 53, 35, 53, 35, 21, 35, 17, 51, 21, 51, 53, + 51, 1, 169, 39, 78, 43, 189, 83, 83, 189, 82, 70, 199, 129, 205, 205, 1, 208, 189, 189, + 0, 1, 0, 45, 0, 0, 1, 226, 2, 107, 0, 13, 0, 58, 64, 31, 5, 13, 115, 2, + 1, 15, 11, 7, 115, 8, 14, 2, 121, 13, 13, 9, 6, 121, 15, 11, 31, 11, 2, 11, + 11, 8, 9, 65, 4, 8, 68, 0, 63, 51, 63, 18, 57, 47, 93, 237, 17, 51, 16, 237, + 1, 16, 214, 237, 50, 16, 222, 221, 237, 50, 49, 48, 1, 21, 35, 17, 35, 17, 35, 17, + 35, 17, 51, 17, 51, 17, 1, 226, 94, 82, 179, 82, 82, 179, 2, 107, 70, 253, 219, 1, + 32, 254, 224, 2, 107, 254, 251, 1, 5, 0, 1, 0, 71, 0, 0, 1, 226, 1, 208, 0, + 13, 0, 59, 64, 33, 5, 13, 127, 2, 1, 15, 11, 7, 127, 0, 8, 16, 8, 2, 8, + 14, 2, 133, 13, 73, 6, 133, 15, 11, 1, 11, 11, 8, 9, 73, 4, 8, 74, 0, 63, + 51, 63, 18, 57, 47, 93, 237, 63, 237, 1, 16, 214, 93, 237, 50, 16, 222, 213, 237, 50, + 49, 48, 1, 21, 35, 17, 35, 53, 35, 21, 35, 17, 51, 21, 51, 53, 1, 226, 91, 82, + 155, 83, 83, 155, 1, 208, 69, 254, 117, 205, 205, 1, 208, 189, 189, 0, 1, 0, 54, 255, + 91, 1, 208, 2, 107, 0, 35, 0, 136, 64, 13, 24, 16, 17, 18, 0, 76, 20, 16, 19, + 20, 0, 76, 10, 184, 255, 216, 180, 17, 18, 0, 76, 6, 184, 255, 240, 179, 12, 0, 77, + 6, 184, 255, 232, 180, 9, 11, 0, 76, 5, 184, 255, 240, 64, 52, 9, 0, 77, 0, 29, + 115, 30, 15, 14, 1, 14, 30, 14, 30, 34, 23, 118, 31, 7, 1, 7, 72, 9, 73, 7, + 37, 33, 115, 16, 34, 32, 34, 48, 34, 3, 34, 36, 25, 124, 4, 4, 34, 32, 121, 35, + 65, 30, 34, 68, 18, 124, 12, 0, 47, 237, 63, 51, 63, 237, 18, 57, 47, 237, 1, 16, + 214, 93, 237, 16, 222, 43, 93, 237, 17, 57, 57, 47, 47, 93, 16, 237, 50, 49, 48, 43, + 43, 43, 43, 43, 43, 1, 21, 54, 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 39, 53, + 22, 22, 51, 50, 62, 2, 53, 52, 35, 34, 6, 7, 17, 35, 17, 35, 17, 35, 17, 1, + 26, 10, 17, 14, 74, 67, 21, 39, 58, 37, 10, 8, 3, 8, 7, 24, 31, 18, 7, 73, + 9, 16, 9, 73, 82, 73, 2, 107, 225, 1, 1, 130, 134, 81, 113, 71, 32, 2, 69, 1, + 1, 31, 60, 86, 56, 187, 1, 1, 254, 190, 2, 37, 253, 219, 2, 107, 0, 1, 0, 54, + 255, 91, 1, 208, 1, 208, 0, 34, 0, 108, 185, 0, 25, 255, 232, 179, 14, 0, 77, 25, + 184, 255, 240, 179, 13, 0, 77, 25, 184, 255, 232, 180, 11, 12, 0, 76, 25, 184, 255, 240, + 64, 42, 10, 0, 77, 20, 12, 127, 13, 15, 34, 1, 34, 13, 34, 13, 17, 6, 130, 26, + 36, 16, 127, 16, 17, 1, 17, 35, 3, 137, 31, 75, 8, 136, 23, 23, 17, 15, 133, 18, + 73, 13, 17, 74, 0, 63, 51, 63, 237, 18, 57, 47, 237, 63, 237, 1, 16, 214, 93, 237, + 16, 222, 237, 17, 57, 57, 47, 47, 93, 16, 237, 50, 49, 48, 43, 43, 43, 43, 5, 22, + 22, 51, 50, 54, 53, 52, 35, 34, 6, 35, 21, 35, 17, 35, 17, 35, 17, 51, 21, 54, + 54, 51, 50, 22, 21, 20, 14, 2, 35, 34, 38, 39, 1, 35, 3, 8, 7, 49, 31, 73, + 5, 21, 8, 73, 82, 73, 228, 10, 25, 6, 74, 67, 21, 39, 58, 37, 5, 13, 5, 94, + 1, 1, 92, 83, 135, 1, 213, 1, 139, 254, 117, 1, 208, 181, 2, 1, 103, 109, 65, 91, + 57, 26, 1, 1, 0, 2, 0, 29, 255, 92, 1, 217, 2, 121, 0, 44, 0, 58, 0, 236, + 181, 50, 32, 13, 0, 77, 42, 184, 255, 240, 179, 18, 0, 77, 42, 184, 255, 232, 179, 17, + 0, 77, 42, 184, 255, 224, 179, 12, 0, 77, 42, 184, 255, 232, 179, 11, 0, 77, 42, 184, + 255, 240, 64, 14, 9, 0, 77, 25, 24, 14, 0, 77, 25, 16, 8, 0, 77, 18, 184, 255, + 216, 180, 16, 18, 0, 76, 10, 184, 255, 232, 179, 12, 0, 77, 10, 184, 255, 240, 179, 11, + 0, 77, 10, 184, 255, 224, 179, 10, 0, 77, 10, 184, 255, 232, 64, 16, 9, 0, 77, 6, + 16, 11, 12, 0, 76, 6, 24, 9, 10, 0, 76, 2, 184, 255, 240, 179, 18, 0, 77, 2, + 184, 255, 240, 180, 11, 13, 0, 76, 1, 184, 255, 240, 64, 46, 17, 0, 77, 16, 48, 19, + 45, 118, 23, 3, 19, 5, 5, 28, 53, 118, 11, 19, 19, 36, 36, 11, 60, 0, 118, 28, + 59, 56, 124, 8, 40, 37, 37, 40, 124, 33, 69, 48, 3, 124, 16, 23, 70, 19, 124, 20, + 0, 47, 237, 63, 51, 237, 50, 63, 237, 50, 47, 16, 222, 237, 1, 16, 214, 237, 16, 206, + 50, 47, 50, 47, 16, 237, 17, 57, 47, 18, 57, 57, 237, 17, 57, 57, 49, 48, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 20, 22, 23, + 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, 22, 22, 23, 7, 38, 38, 39, 46, + 3, 53, 52, 62, 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 23, 20, 22, 23, + 62, 3, 53, 52, 38, 35, 34, 6, 111, 58, 51, 18, 77, 66, 56, 72, 18, 36, 57, 39, + 20, 63, 45, 11, 69, 97, 29, 47, 79, 57, 33, 41, 72, 98, 56, 37, 68, 20, 21, 26, + 50, 23, 43, 70, 50, 27, 172, 8, 8, 25, 35, 22, 10, 21, 26, 29, 32, 1, 54, 107, + 121, 18, 73, 86, 127, 114, 103, 104, 41, 81, 71, 53, 13, 41, 50, 2, 69, 5, 81, 67, + 3, 40, 79, 119, 80, 78, 120, 82, 43, 14, 11, 67, 11, 11, 36, 66, 94, 149, 42, 77, + 35, 9, 41, 54, 63, 30, 67, 65, 82, 0, 2, 0, 40, 255, 127, 1, 214, 1, 219, 0, + 11, 0, 63, 0, 213, 64, 12, 58, 16, 8, 0, 77, 53, 16, 8, 9, 0, 76, 44, 184, + 255, 192, 180, 16, 18, 0, 76, 34, 184, 255, 232, 179, 13, 0, 77, 34, 184, 255, 224, 179, + 12, 0, 77, 34, 184, 255, 232, 179, 11, 0, 77, 34, 184, 255, 224, 179, 10, 0, 77, 33, + 184, 255, 232, 64, 15, 14, 0, 77, 29, 16, 14, 0, 77, 28, 32, 10, 13, 0, 76, 22, + 184, 255, 232, 179, 16, 0, 77, 22, 184, 255, 240, 180, 14, 15, 0, 76, 17, 184, 255, 232, + 64, 62, 15, 16, 0, 76, 4, 32, 16, 18, 0, 76, 4, 16, 15, 0, 77, 23, 52, 26, + 3, 41, 46, 46, 36, 0, 130, 26, 15, 26, 1, 63, 26, 63, 26, 55, 6, 130, 36, 65, + 20, 130, 55, 64, 9, 137, 31, 15, 12, 12, 15, 137, 60, 80, 23, 3, 137, 41, 52, 81, + 46, 137, 47, 75, 0, 63, 237, 63, 51, 237, 50, 63, 237, 50, 47, 16, 222, 237, 1, 16, + 214, 237, 16, 222, 237, 17, 57, 57, 47, 47, 93, 16, 237, 17, 51, 47, 57, 57, 18, 57, + 57, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 20, + 22, 23, 54, 54, 53, 52, 38, 35, 34, 6, 55, 38, 38, 35, 34, 14, 2, 21, 20, 22, + 23, 38, 38, 53, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 7, 30, 3, 23, 7, + 46, 3, 39, 38, 38, 53, 52, 62, 2, 51, 50, 22, 23, 1, 26, 9, 6, 44, 53, 23, + 30, 30, 29, 47, 8, 33, 18, 31, 54, 41, 23, 46, 54, 7, 8, 15, 32, 51, 36, 34, + 49, 32, 15, 19, 36, 52, 33, 10, 34, 35, 33, 10, 11, 24, 55, 52, 46, 16, 95, 113, + 37, 62, 81, 44, 26, 46, 8, 165, 34, 55, 22, 8, 76, 54, 41, 55, 55, 167, 3, 7, + 21, 44, 65, 44, 72, 90, 14, 24, 55, 32, 39, 66, 48, 28, 25, 44, 58, 33, 35, 63, + 52, 37, 9, 19, 24, 14, 6, 1, 61, 1, 14, 28, 44, 32, 5, 126, 115, 58, 90, 60, + 31, 8, 3, 255, 255, 0, 46, 255, 87, 1, 204, 2, 121, 2, 6, 0, 162, 0, 0, 255, + 255, 0, 49, 255, 87, 1, 195, 1, 219, 2, 6, 0, 194, 0, 0, 0, 1, 0, 39, 255, + 91, 1, 205, 2, 107, 0, 11, 0, 42, 64, 21, 7, 115, 4, 1, 3, 115, 10, 8, 8, + 13, 12, 2, 9, 121, 11, 65, 6, 3, 121, 8, 68, 0, 63, 237, 206, 63, 237, 50, 1, + 17, 18, 57, 47, 206, 253, 206, 221, 237, 49, 48, 1, 21, 35, 17, 51, 21, 35, 53, 35, + 17, 35, 53, 1, 205, 170, 39, 78, 43, 170, 2, 107, 70, 254, 33, 235, 165, 2, 37, 70, + 0, 1, 0, 58, 255, 127, 1, 186, 1, 208, 0, 11, 0, 48, 64, 25, 10, 127, 7, 4, + 6, 127, 1, 0, 11, 1, 8, 11, 11, 13, 12, 9, 6, 133, 11, 74, 5, 0, 133, 2, + 73, 0, 63, 237, 50, 63, 237, 206, 1, 17, 18, 57, 47, 94, 93, 206, 253, 206, 221, 237, + 49, 48, 19, 35, 53, 33, 21, 35, 17, 51, 21, 35, 53, 35, 209, 151, 1, 128, 151, 39, + 78, 43, 1, 139, 69, 69, 254, 187, 199, 129, 255, 255, 0, 13, 0, 0, 1, 232, 2, 107, + 2, 6, 0, 60, 0, 0, 0, 1, 0, 30, 255, 91, 1, 214, 1, 208, 0, 20, 0, 84, + 64, 46, 15, 10, 15, 20, 10, 129, 9, 6, 20, 9, 9, 6, 15, 20, 20, 129, 0, 3, + 20, 0, 3, 0, 3, 127, 9, 0, 6, 1, 8, 6, 6, 21, 22, 0, 20, 73, 15, 3, + 6, 6, 5, 10, 9, 73, 5, 75, 0, 63, 63, 51, 18, 57, 17, 51, 51, 63, 51, 1, + 17, 18, 57, 47, 94, 93, 205, 253, 221, 135, 43, 125, 16, 196, 135, 24, 16, 43, 8, 125, + 16, 196, 49, 48, 1, 6, 6, 7, 21, 35, 53, 38, 38, 39, 51, 30, 3, 23, 62, 3, + 55, 1, 214, 37, 97, 46, 82, 46, 95, 37, 90, 12, 31, 35, 37, 17, 16, 37, 36, 31, + 12, 1, 208, 128, 231, 94, 176, 178, 94, 230, 127, 44, 99, 97, 91, 36, 36, 91, 97, 99, + 44, 0, 1, 0, 13, 0, 0, 1, 232, 2, 107, 0, 24, 0, 86, 64, 46, 20, 16, 11, + 16, 120, 17, 20, 20, 17, 20, 17, 22, 23, 115, 1, 11, 8, 8, 120, 7, 4, 20, 7, + 4, 7, 4, 2, 1, 1, 25, 26, 16, 17, 65, 23, 1, 121, 20, 11, 4, 4, 8, 7, + 65, 0, 68, 0, 63, 63, 51, 57, 47, 51, 51, 237, 50, 63, 51, 1, 17, 18, 57, 47, + 205, 51, 220, 135, 43, 125, 16, 196, 1, 24, 16, 253, 205, 220, 135, 43, 135, 125, 196, 49, + 48, 51, 53, 35, 53, 51, 38, 38, 39, 51, 22, 22, 23, 62, 3, 55, 51, 6, 6, 7, + 51, 21, 35, 21, 210, 128, 122, 60, 90, 41, 92, 33, 71, 43, 23, 38, 35, 33, 17, 90, + 41, 92, 59, 125, 129, 189, 66, 97, 176, 91, 80, 148, 81, 42, 76, 75, 75, 41, 91, 173, + 100, 66, 189, 0, 1, 0, 30, 255, 91, 1, 214, 1, 208, 0, 26, 0, 84, 64, 46, 12, + 16, 21, 16, 129, 15, 12, 20, 15, 12, 15, 9, 3, 26, 21, 26, 129, 0, 3, 20, 0, + 3, 0, 4, 6, 127, 11, 9, 9, 28, 27, 21, 16, 15, 73, 21, 3, 12, 134, 9, 74, + 8, 75, 26, 0, 73, 0, 63, 50, 63, 63, 237, 50, 50, 63, 51, 1, 47, 17, 18, 57, + 47, 205, 253, 205, 221, 135, 43, 135, 125, 196, 1, 24, 16, 220, 135, 43, 135, 125, 196, 49, + 48, 1, 6, 6, 7, 51, 21, 35, 21, 35, 53, 35, 53, 51, 38, 38, 39, 51, 30, 3, + 23, 62, 3, 55, 1, 214, 32, 83, 41, 99, 123, 82, 122, 99, 42, 81, 32, 90, 12, 31, + 35, 37, 17, 16, 37, 36, 31, 12, 1, 208, 112, 203, 88, 61, 165, 165, 61, 88, 204, 111, + 44, 99, 97, 91, 36, 36, 91, 97, 99, 44, 0, 1, 0, 25, 255, 91, 1, 217, 2, 107, + 0, 25, 0, 86, 64, 47, 16, 2, 15, 2, 120, 23, 16, 20, 23, 16, 23, 23, 24, 10, + 18, 11, 18, 120, 19, 10, 20, 19, 19, 10, 19, 1, 115, 24, 27, 15, 15, 11, 26, 18, + 19, 65, 16, 15, 65, 10, 11, 68, 23, 121, 0, 2, 68, 0, 63, 206, 237, 63, 51, 63, + 51, 63, 51, 1, 16, 198, 50, 47, 16, 222, 237, 51, 135, 16, 43, 135, 125, 196, 1, 17, + 51, 24, 47, 135, 43, 135, 125, 196, 49, 48, 5, 53, 35, 46, 3, 39, 6, 6, 7, 35, + 54, 54, 55, 3, 51, 23, 55, 51, 3, 22, 22, 23, 51, 21, 1, 139, 23, 11, 27, 32, + 36, 20, 36, 66, 30, 89, 33, 85, 50, 158, 91, 118, 131, 89, 166, 38, 67, 30, 40, 165, + 165, 27, 68, 72, 72, 31, 56, 145, 69, 74, 173, 80, 1, 36, 237, 237, 254, 223, 62, 131, + 67, 235, 0, 1, 0, 29, 255, 127, 1, 208, 1, 208, 0, 27, 0, 82, 64, 45, 12, 20, + 13, 20, 129, 21, 12, 20, 21, 12, 21, 21, 1, 127, 26, 29, 18, 2, 17, 2, 129, 25, + 18, 20, 25, 25, 18, 17, 17, 13, 28, 25, 20, 21, 73, 18, 17, 73, 12, 13, 74, 25, + 133, 2, 74, 0, 63, 237, 63, 51, 63, 51, 63, 51, 1, 47, 16, 198, 50, 47, 135, 16, + 43, 135, 125, 196, 1, 24, 16, 222, 237, 51, 47, 135, 43, 135, 125, 196, 49, 48, 5, 53, + 35, 46, 3, 39, 14, 3, 7, 35, 54, 54, 55, 39, 51, 23, 55, 51, 7, 22, 22, 23, + 51, 21, 1, 130, 14, 10, 27, 32, 35, 18, 18, 39, 37, 31, 11, 85, 33, 93, 46, 165, + 93, 123, 115, 88, 153, 32, 62, 28, 40, 129, 129, 20, 48, 51, 50, 22, 23, 50, 51, 48, + 19, 60, 127, 57, 220, 162, 162, 215, 42, 91, 46, 199, 0, 1, 0, 18, 255, 91, 1, 217, + 2, 107, 0, 15, 0, 57, 64, 31, 4, 115, 7, 7, 11, 115, 8, 17, 160, 1, 176, 1, + 2, 1, 2, 115, 13, 14, 16, 2, 13, 121, 5, 15, 65, 7, 4, 121, 10, 11, 68, 0, + 63, 205, 237, 50, 63, 51, 237, 50, 1, 16, 214, 221, 253, 205, 93, 16, 222, 237, 51, 47, + 237, 49, 48, 1, 21, 35, 17, 51, 17, 51, 17, 51, 21, 35, 53, 33, 17, 35, 53, 1, + 14, 85, 167, 82, 39, 78, 254, 220, 85, 2, 107, 70, 254, 33, 2, 37, 253, 219, 235, 165, + 2, 37, 70, 0, 1, 0, 18, 255, 127, 1, 208, 1, 208, 0, 15, 0, 57, 64, 31, 4, + 127, 7, 7, 11, 127, 8, 17, 160, 1, 176, 1, 2, 1, 2, 127, 13, 14, 16, 2, 13, + 133, 5, 15, 73, 7, 4, 133, 10, 11, 74, 0, 63, 205, 237, 50, 63, 51, 237, 50, 1, + 16, 214, 221, 253, 205, 93, 16, 222, 237, 51, 47, 237, 49, 48, 1, 21, 35, 17, 51, 17, + 51, 17, 51, 21, 35, 53, 33, 17, 35, 53, 1, 14, 85, 158, 82, 39, 78, 254, 229, 85, + 1, 207, 69, 254, 188, 1, 138, 254, 118, 199, 129, 1, 138, 69, 0, 1, 0, 54, 255, 91, + 1, 217, 2, 107, 0, 27, 0, 86, 64, 16, 23, 40, 8, 0, 77, 22, 32, 10, 0, 77, + 22, 24, 9, 0, 77, 3, 184, 255, 232, 179, 18, 0, 77, 3, 184, 255, 240, 64, 28, 17, + 0, 77, 9, 16, 115, 11, 15, 115, 12, 29, 0, 115, 25, 28, 5, 124, 20, 20, 16, 9, + 26, 65, 14, 11, 121, 16, 68, 0, 63, 237, 206, 63, 51, 18, 57, 47, 237, 1, 16, 214, + 237, 16, 222, 237, 213, 237, 50, 49, 48, 43, 43, 43, 43, 43, 19, 20, 30, 2, 51, 50, + 54, 55, 17, 51, 17, 51, 21, 35, 53, 35, 53, 6, 6, 35, 34, 46, 2, 53, 53, 51, + 137, 8, 25, 45, 36, 32, 55, 14, 82, 39, 78, 43, 16, 61, 35, 60, 73, 40, 13, 83, + 1, 184, 38, 57, 38, 18, 10, 4, 1, 60, 253, 219, 235, 165, 232, 5, 9, 31, 58, 82, + 51, 179, 0, 1, 0, 54, 255, 127, 1, 208, 1, 208, 0, 27, 0, 69, 64, 42, 14, 16, + 13, 0, 77, 14, 24, 11, 12, 0, 76, 14, 32, 8, 10, 0, 76, 26, 5, 127, 0, 4, + 127, 1, 29, 19, 127, 16, 28, 22, 137, 11, 11, 5, 26, 17, 73, 3, 0, 133, 5, 74, + 0, 63, 237, 206, 63, 51, 18, 57, 47, 237, 1, 16, 214, 237, 16, 222, 237, 213, 237, 50, + 49, 48, 43, 43, 43, 37, 51, 21, 35, 53, 35, 53, 14, 3, 35, 34, 46, 2, 53, 53, + 51, 21, 20, 22, 51, 50, 54, 55, 53, 51, 1, 169, 39, 78, 43, 8, 25, 31, 33, 16, + 40, 65, 46, 25, 82, 53, 50, 37, 48, 19, 82, 70, 199, 129, 180, 2, 5, 4, 4, 16, + 38, 62, 46, 137, 136, 54, 41, 7, 5, 219, 0, 1, 0, 54, 0, 0, 1, 191, 2, 107, + 0, 26, 0, 91, 185, 0, 2, 255, 224, 180, 17, 18, 0, 76, 2, 184, 255, 232, 179, 16, + 0, 77, 2, 184, 255, 224, 64, 35, 15, 0, 77, 16, 5, 19, 4, 4, 24, 9, 13, 115, + 12, 28, 0, 115, 16, 24, 1, 24, 27, 6, 4, 3, 124, 18, 16, 19, 19, 13, 10, 25, + 65, 13, 68, 0, 63, 63, 51, 18, 57, 47, 51, 205, 253, 205, 51, 1, 16, 214, 93, 237, + 16, 222, 237, 50, 17, 57, 47, 51, 205, 50, 49, 48, 43, 43, 43, 19, 20, 22, 23, 53, + 51, 21, 54, 54, 55, 17, 51, 17, 35, 53, 6, 7, 21, 35, 53, 46, 3, 53, 53, 51, + 137, 35, 49, 67, 24, 42, 11, 82, 82, 25, 52, 67, 51, 65, 37, 14, 83, 1, 184, 66, + 72, 10, 113, 115, 2, 8, 3, 1, 60, 253, 149, 232, 8, 5, 115, 115, 4, 34, 57, 78, + 48, 179, 0, 1, 0, 54, 0, 0, 1, 173, 1, 208, 0, 27, 0, 65, 64, 34, 24, 16, + 11, 0, 77, 7, 19, 4, 20, 20, 26, 11, 14, 127, 13, 29, 1, 127, 26, 28, 7, 5, + 4, 136, 20, 18, 21, 21, 14, 11, 27, 73, 14, 74, 0, 63, 63, 51, 18, 57, 47, 51, + 205, 253, 205, 51, 1, 16, 214, 237, 16, 222, 237, 50, 17, 57, 47, 51, 205, 50, 49, 48, + 43, 19, 21, 20, 22, 23, 53, 51, 21, 54, 54, 55, 53, 51, 17, 35, 53, 6, 6, 7, + 21, 35, 53, 46, 3, 53, 53, 136, 42, 38, 62, 22, 32, 14, 83, 83, 10, 36, 22, 62, + 36, 60, 43, 23, 1, 208, 136, 46, 43, 5, 82, 82, 2, 5, 4, 219, 254, 48, 179, 3, + 8, 2, 83, 80, 2, 19, 38, 61, 44, 137, 0, 1, 0, 45, 0, 0, 1, 196, 2, 107, + 0, 21, 0, 86, 64, 17, 13, 40, 17, 18, 0, 76, 13, 24, 16, 0, 77, 13, 16, 15, + 0, 77, 5, 184, 255, 232, 179, 10, 0, 77, 5, 184, 255, 224, 179, 9, 0, 77, 5, 184, + 255, 208, 64, 22, 8, 0, 77, 10, 115, 9, 23, 0, 18, 115, 19, 22, 14, 124, 3, 3, + 19, 20, 65, 10, 19, 68, 0, 63, 51, 63, 18, 57, 47, 237, 1, 16, 214, 237, 50, 16, + 222, 237, 49, 48, 43, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 30, 2, 21, 21, 35, + 53, 52, 38, 35, 34, 6, 7, 17, 35, 17, 51, 127, 17, 65, 38, 63, 80, 45, 17, 82, + 57, 78, 32, 62, 14, 82, 82, 1, 140, 5, 9, 32, 60, 84, 52, 182, 182, 78, 78, 8, + 5, 254, 187, 2, 107, 255, 255, 0, 71, 0, 0, 1, 176, 2, 181, 2, 6, 0, 75, 0, + 0, 0, 2, 0, 18, 255, 243, 1, 219, 2, 121, 0, 38, 0, 47, 0, 191, 185, 0, 33, + 255, 240, 179, 18, 0, 77, 33, 184, 255, 232, 179, 17, 0, 77, 33, 184, 255, 216, 180, 15, + 16, 0, 76, 33, 184, 255, 232, 179, 10, 0, 77, 33, 184, 255, 248, 64, 30, 9, 0, 77, + 31, 32, 15, 16, 0, 76, 31, 16, 10, 0, 77, 31, 8, 9, 0, 77, 12, 32, 16, 0, + 77, 12, 24, 15, 0, 77, 8, 184, 255, 224, 179, 18, 0, 77, 8, 184, 255, 216, 179, 17, + 0, 77, 8, 184, 255, 208, 179, 16, 0, 77, 2, 184, 255, 248, 64, 46, 13, 14, 0, 76, + 39, 118, 35, 7, 7, 35, 49, 47, 0, 118, 29, 0, 15, 16, 15, 32, 15, 3, 8, 15, + 26, 118, 20, 48, 15, 0, 121, 29, 23, 47, 47, 3, 42, 124, 32, 69, 6, 6, 3, 124, + 10, 70, 0, 63, 237, 50, 47, 63, 237, 18, 57, 47, 204, 51, 237, 50, 1, 16, 214, 253, + 220, 94, 93, 50, 237, 50, 16, 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 19, 22, 22, 51, 50, 54, 55, 23, 6, 6, 35, 34, + 46, 2, 39, 46, 3, 53, 52, 54, 55, 23, 6, 21, 20, 22, 23, 54, 54, 51, 50, 22, + 21, 20, 6, 7, 39, 52, 38, 35, 34, 14, 2, 7, 237, 4, 51, 67, 34, 47, 7, 22, + 7, 67, 46, 53, 73, 46, 21, 1, 28, 50, 37, 22, 5, 2, 67, 4, 36, 32, 8, 86, + 69, 76, 80, 2, 1, 75, 41, 36, 21, 30, 19, 10, 1, 1, 33, 115, 118, 24, 8, 65, + 10, 26, 45, 81, 111, 66, 3, 17, 31, 49, 35, 13, 25, 6, 8, 17, 16, 32, 36, 1, + 137, 137, 159, 151, 8, 21, 5, 70, 100, 104, 37, 58, 73, 36, 0, 2, 0, 18, 255, 245, + 1, 199, 1, 219, 0, 38, 0, 47, 0, 121, 185, 0, 44, 255, 240, 64, 21, 15, 16, 0, + 76, 37, 8, 20, 0, 77, 37, 24, 18, 19, 0, 76, 37, 16, 17, 0, 77, 7, 184, 255, + 224, 179, 15, 0, 77, 1, 184, 255, 216, 64, 43, 17, 18, 0, 76, 39, 130, 3, 12, 12, + 3, 49, 47, 5, 130, 34, 0, 20, 16, 20, 2, 20, 31, 130, 25, 48, 20, 5, 134, 34, + 28, 47, 47, 0, 11, 11, 8, 136, 15, 81, 42, 136, 0, 80, 0, 63, 237, 63, 237, 50, + 47, 17, 57, 47, 204, 51, 237, 50, 1, 16, 214, 253, 220, 93, 50, 237, 50, 16, 206, 50, + 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 1, 50, 22, 21, 21, 35, 22, 22, 51, + 50, 54, 55, 23, 6, 6, 35, 34, 46, 2, 39, 46, 3, 53, 52, 54, 55, 23, 6, 21, + 20, 22, 23, 62, 3, 23, 52, 38, 35, 34, 14, 2, 7, 1, 50, 72, 77, 224, 4, 53, + 50, 26, 38, 10, 11, 10, 52, 32, 44, 66, 46, 24, 2, 26, 47, 35, 21, 5, 2, 67, + 4, 32, 29, 5, 31, 43, 51, 94, 38, 30, 15, 26, 18, 12, 1, 1, 219, 124, 112, 29, + 72, 75, 14, 8, 70, 8, 18, 33, 60, 82, 48, 3, 17, 30, 47, 34, 13, 25, 6, 8, + 17, 16, 29, 37, 3, 50, 75, 49, 24, 198, 61, 67, 22, 36, 46, 24, 0, 2, 0, 18, + 255, 91, 1, 219, 2, 121, 0, 41, 0, 50, 0, 229, 185, 0, 36, 255, 240, 179, 18, 0, + 77, 36, 184, 255, 232, 179, 17, 0, 77, 36, 184, 255, 216, 180, 15, 16, 0, 76, 36, 184, + 255, 240, 179, 10, 0, 77, 36, 184, 255, 200, 64, 51, 9, 0, 77, 34, 32, 15, 16, 0, + 76, 34, 8, 10, 0, 77, 34, 16, 9, 0, 77, 15, 40, 15, 0, 77, 15, 8, 12, 0, + 77, 15, 24, 11, 0, 77, 15, 16, 9, 10, 0, 76, 14, 40, 16, 0, 77, 14, 24, 15, + 0, 77, 8, 184, 255, 216, 180, 17, 18, 0, 76, 8, 184, 255, 224, 179, 16, 0, 77, 2, + 184, 255, 240, 179, 14, 0, 77, 2, 184, 255, 248, 64, 52, 13, 0, 77, 10, 115, 13, 13, + 18, 42, 118, 38, 7, 7, 38, 52, 50, 0, 118, 32, 0, 18, 16, 18, 32, 18, 3, 8, + 18, 29, 118, 23, 51, 18, 0, 121, 32, 26, 50, 50, 3, 45, 124, 35, 69, 6, 6, 3, + 124, 13, 11, 10, 70, 0, 63, 205, 51, 237, 50, 47, 63, 237, 18, 57, 47, 204, 51, 237, + 50, 1, 16, 214, 253, 220, 94, 93, 50, 237, 50, 16, 206, 50, 47, 16, 237, 17, 57, 47, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 19, 22, 22, 51, 50, 54, 55, 23, 6, 6, 7, 21, 35, 53, 46, 3, 39, 46, 3, + 53, 52, 54, 55, 23, 6, 21, 20, 22, 23, 54, 54, 51, 50, 22, 21, 20, 6, 7, 39, + 52, 38, 35, 34, 14, 2, 7, 237, 4, 51, 67, 34, 47, 7, 22, 6, 48, 35, 78, 39, + 56, 35, 16, 1, 28, 50, 37, 22, 5, 2, 67, 4, 36, 32, 8, 86, 69, 76, 80, 2, + 1, 75, 41, 36, 21, 30, 19, 10, 1, 1, 33, 115, 118, 24, 8, 65, 8, 21, 5, 154, + 158, 9, 52, 78, 100, 58, 3, 17, 31, 49, 35, 13, 25, 6, 8, 17, 16, 32, 36, 1, + 137, 137, 159, 151, 8, 21, 5, 70, 100, 104, 37, 58, 73, 36, 0, 2, 0, 18, 255, 127, + 1, 199, 1, 219, 0, 39, 0, 48, 0, 146, 185, 0, 45, 255, 232, 64, 22, 15, 16, 0, + 76, 38, 16, 17, 18, 0, 76, 19, 24, 12, 0, 77, 19, 16, 10, 11, 0, 76, 7, 184, + 255, 232, 180, 15, 16, 0, 76, 1, 184, 255, 216, 179, 18, 0, 77, 1, 184, 255, 224, 64, + 51, 17, 0, 77, 15, 127, 18, 18, 21, 40, 130, 12, 3, 50, 48, 5, 130, 35, 0, 21, + 16, 21, 32, 21, 3, 8, 21, 32, 130, 26, 49, 13, 21, 5, 134, 35, 29, 48, 48, 0, + 11, 11, 8, 136, 18, 16, 15, 81, 43, 136, 0, 80, 0, 63, 237, 63, 205, 51, 237, 50, + 47, 17, 57, 47, 204, 51, 237, 50, 1, 47, 16, 214, 253, 220, 94, 93, 50, 237, 50, 16, + 222, 50, 237, 17, 57, 47, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 1, 50, 22, 21, + 21, 35, 22, 22, 51, 50, 54, 55, 23, 6, 6, 7, 21, 35, 53, 38, 38, 39, 46, 3, + 53, 52, 54, 55, 23, 6, 21, 20, 22, 23, 62, 3, 23, 52, 38, 35, 34, 14, 2, 7, + 1, 50, 72, 77, 224, 4, 53, 50, 26, 38, 10, 11, 8, 31, 21, 79, 66, 68, 3, 26, + 47, 35, 21, 5, 2, 67, 4, 32, 29, 5, 31, 43, 51, 94, 38, 30, 15, 26, 18, 12, + 1, 1, 219, 124, 112, 29, 72, 75, 14, 8, 70, 6, 13, 4, 121, 123, 16, 117, 85, 3, + 17, 30, 47, 34, 13, 25, 6, 8, 17, 16, 29, 37, 3, 50, 75, 49, 24, 198, 61, 67, + 22, 36, 46, 24, 255, 255, 0, 89, 0, 0, 1, 155, 2, 107, 2, 6, 0, 44, 0, 0, + 255, 255, 0, 4, 0, 0, 1, 241, 3, 35, 2, 38, 2, 198, 0, 0, 1, 7, 3, 139, + 0, 0, 0, 139, 0, 19, 185, 0, 1, 255, 255, 64, 9, 49, 57, 7, 38, 80, 1, 17, + 46, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 7, 0, 0, 1, 235, 2, 152, 2, 38, + 2, 230, 0, 0, 1, 6, 3, 139, 0, 0, 0, 16, 64, 11, 1, 0, 53, 61, 31, 16, + 80, 1, 5, 50, 79, 43, 43, 52, 0, 1, 0, 46, 255, 91, 1, 216, 2, 107, 0, 43, + 0, 135, 64, 22, 35, 24, 17, 18, 0, 76, 34, 32, 14, 0, 77, 34, 16, 13, 0, 77, + 30, 24, 14, 0, 77, 20, 184, 255, 240, 179, 15, 0, 77, 19, 184, 255, 232, 179, 15, 0, + 77, 19, 184, 255, 232, 179, 9, 0, 77, 14, 184, 255, 224, 64, 42, 8, 0, 77, 12, 6, + 1, 6, 120, 7, 12, 20, 7, 12, 7, 7, 32, 118, 17, 45, 1, 25, 25, 40, 115, 42, + 44, 37, 124, 1, 12, 12, 42, 43, 65, 42, 68, 29, 124, 22, 6, 7, 65, 0, 63, 51, + 47, 237, 63, 63, 18, 57, 47, 51, 237, 1, 16, 214, 237, 50, 47, 50, 16, 222, 237, 51, + 47, 135, 43, 135, 125, 196, 49, 48, 1, 43, 43, 43, 43, 43, 43, 43, 43, 19, 17, 62, + 3, 55, 51, 14, 3, 7, 30, 3, 21, 20, 14, 2, 35, 34, 34, 39, 55, 22, 22, 51, + 50, 54, 53, 52, 46, 2, 35, 34, 6, 7, 17, 35, 17, 128, 30, 67, 65, 59, 21, 102, + 25, 56, 60, 63, 31, 48, 82, 62, 35, 26, 52, 77, 52, 13, 27, 11, 3, 5, 15, 13, + 60, 78, 41, 62, 70, 28, 12, 26, 13, 82, 2, 107, 254, 229, 30, 75, 77, 72, 29, 33, + 69, 71, 69, 31, 4, 30, 59, 91, 66, 56, 95, 70, 40, 2, 67, 1, 1, 96, 98, 64, + 75, 38, 11, 1, 1, 254, 230, 2, 107, 0, 1, 0, 71, 255, 90, 1, 204, 1, 208, 0, + 39, 0, 117, 64, 17, 31, 48, 15, 0, 77, 31, 16, 13, 14, 0, 76, 27, 32, 15, 0, + 77, 13, 184, 255, 232, 179, 9, 0, 77, 12, 184, 255, 240, 64, 43, 10, 0, 77, 29, 130, + 14, 0, 5, 5, 129, 6, 11, 20, 6, 11, 5, 6, 6, 14, 41, 22, 22, 0, 35, 127, + 37, 40, 11, 34, 137, 11, 11, 37, 38, 73, 37, 74, 26, 137, 19, 75, 6, 73, 0, 63, + 63, 237, 63, 63, 18, 57, 47, 237, 1, 47, 16, 214, 237, 50, 50, 47, 16, 206, 50, 47, + 0, 193, 135, 5, 43, 4, 125, 16, 196, 1, 24, 16, 237, 49, 48, 43, 43, 43, 43, 43, + 19, 62, 3, 55, 51, 14, 3, 7, 22, 22, 21, 20, 14, 2, 35, 34, 38, 39, 55, 22, + 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 21, 35, 17, 51, 154, 22, 58, 59, 53, + 17, 97, 20, 49, 54, 54, 24, 92, 104, 25, 48, 72, 47, 11, 22, 8, 5, 5, 11, 8, + 57, 65, 87, 81, 13, 32, 6, 83, 83, 1, 6, 21, 53, 55, 53, 20, 23, 49, 49, 48, + 22, 5, 116, 103, 43, 78, 59, 35, 1, 2, 66, 1, 1, 76, 72, 86, 78, 3, 2, 208, + 1, 208, 0, 1, 0, 13, 255, 87, 1, 226, 2, 107, 0, 33, 0, 99, 185, 0, 6, 255, + 224, 180, 17, 18, 0, 76, 6, 184, 255, 240, 179, 12, 0, 77, 6, 184, 255, 248, 179, 11, + 0, 77, 3, 184, 255, 248, 64, 34, 13, 0, 77, 25, 26, 31, 115, 20, 0, 115, 17, 17, + 9, 32, 115, 19, 20, 35, 9, 34, 26, 25, 19, 121, 32, 68, 0, 121, 17, 65, 9, 121, + 8, 70, 0, 63, 237, 63, 237, 63, 237, 220, 25, 197, 1, 24, 16, 198, 16, 222, 213, 237, + 17, 57, 47, 237, 16, 253, 222, 25, 197, 49, 48, 43, 43, 43, 43, 19, 6, 6, 7, 14, + 3, 7, 39, 54, 54, 55, 62, 3, 53, 33, 17, 51, 22, 14, 2, 7, 39, 62, 3, 55, + 35, 17, 238, 3, 12, 22, 11, 30, 43, 57, 38, 9, 44, 48, 20, 10, 13, 7, 3, 1, + 28, 39, 1, 16, 29, 41, 23, 60, 9, 23, 21, 18, 5, 29, 2, 37, 102, 180, 81, 40, + 70, 52, 31, 2, 72, 7, 65, 69, 36, 94, 108, 118, 59, 253, 223, 31, 66, 64, 59, 23, + 38, 9, 28, 35, 39, 20, 2, 37, 0, 1, 0, 13, 255, 108, 1, 227, 1, 208, 0, 31, + 0, 86, 181, 11, 32, 11, 0, 77, 7, 184, 255, 240, 179, 13, 0, 77, 7, 184, 255, 232, + 64, 34, 12, 0, 77, 23, 24, 29, 127, 20, 0, 127, 17, 17, 9, 30, 127, 19, 20, 33, + 9, 32, 24, 23, 19, 133, 30, 74, 0, 133, 17, 73, 9, 133, 8, 81, 0, 63, 237, 63, + 237, 63, 237, 220, 25, 197, 1, 24, 16, 198, 16, 222, 213, 237, 17, 57, 47, 237, 16, 253, + 222, 25, 197, 49, 48, 43, 43, 43, 19, 20, 14, 2, 7, 6, 6, 7, 39, 54, 54, 55, + 62, 2, 52, 53, 33, 17, 51, 22, 6, 7, 39, 62, 3, 55, 35, 17, 235, 3, 7, 12, + 10, 20, 82, 76, 12, 44, 51, 15, 13, 13, 6, 1, 31, 39, 2, 54, 41, 58, 6, 19, + 19, 17, 5, 36, 1, 139, 30, 67, 67, 65, 28, 57, 82, 8, 70, 8, 49, 35, 30, 76, + 84, 84, 37, 254, 117, 63, 116, 38, 35, 6, 24, 31, 35, 17, 1, 139, 0, 1, 0, 45, + 255, 89, 1, 199, 2, 107, 0, 25, 0, 53, 64, 28, 25, 10, 17, 115, 2, 27, 24, 20, + 115, 21, 26, 19, 121, 15, 24, 31, 24, 2, 24, 24, 21, 0, 22, 65, 21, 68, 14, 7, + 0, 47, 205, 63, 63, 51, 18, 57, 47, 93, 237, 1, 16, 214, 237, 50, 16, 222, 253, 204, + 51, 49, 48, 1, 51, 17, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, 53, + 17, 35, 17, 35, 17, 51, 17, 51, 1, 117, 82, 11, 30, 52, 40, 13, 32, 10, 8, 8, + 23, 7, 33, 27, 246, 82, 82, 246, 2, 107, 253, 149, 41, 63, 42, 21, 5, 2, 65, 2, + 2, 43, 41, 1, 47, 254, 224, 2, 107, 254, 251, 0, 1, 0, 71, 255, 89, 1, 173, 1, + 208, 0, 25, 0, 61, 64, 34, 23, 8, 15, 127, 0, 27, 22, 18, 127, 0, 19, 1, 19, + 26, 17, 133, 15, 22, 31, 22, 2, 8, 22, 22, 19, 24, 20, 73, 19, 74, 12, 137, 5, + 75, 0, 63, 237, 63, 63, 51, 18, 57, 47, 94, 93, 237, 1, 16, 214, 93, 237, 50, 16, + 222, 253, 204, 51, 49, 48, 33, 20, 14, 2, 35, 34, 38, 39, 55, 22, 22, 51, 50, 54, + 53, 53, 35, 21, 35, 17, 51, 21, 51, 53, 51, 1, 173, 11, 30, 52, 40, 13, 32, 11, + 8, 8, 23, 8, 32, 27, 192, 83, 83, 192, 83, 41, 63, 42, 21, 5, 2, 65, 2, 2, + 43, 41, 220, 205, 1, 208, 189, 189, 0, 1, 0, 45, 255, 87, 1, 226, 2, 107, 0, 23, + 0, 71, 64, 37, 8, 9, 14, 115, 3, 23, 15, 115, 2, 3, 25, 22, 18, 115, 19, 24, + 17, 121, 15, 22, 31, 22, 2, 22, 22, 19, 0, 20, 65, 19, 68, 9, 8, 2, 121, 15, + 68, 0, 63, 237, 220, 25, 197, 24, 63, 63, 51, 18, 57, 47, 93, 237, 1, 16, 214, 237, + 50, 16, 222, 213, 237, 50, 16, 253, 222, 25, 197, 49, 48, 1, 51, 17, 51, 22, 14, 2, + 7, 39, 62, 3, 55, 35, 17, 35, 17, 35, 17, 51, 17, 51, 1, 104, 82, 39, 1, 16, + 29, 41, 23, 60, 9, 23, 21, 18, 5, 29, 233, 82, 82, 233, 2, 107, 253, 223, 31, 66, + 64, 59, 23, 38, 9, 28, 35, 39, 20, 1, 32, 254, 224, 2, 107, 254, 251, 0, 1, 0, + 71, 255, 108, 1, 227, 1, 208, 0, 21, 0, 71, 64, 36, 4, 5, 10, 127, 1, 19, 11, + 127, 0, 1, 23, 18, 13, 127, 0, 15, 1, 8, 15, 22, 13, 133, 18, 18, 15, 20, 16, + 73, 15, 74, 5, 4, 0, 133, 11, 74, 0, 63, 237, 220, 25, 197, 24, 63, 63, 51, 18, + 57, 47, 237, 1, 16, 214, 94, 93, 237, 50, 16, 222, 213, 237, 50, 16, 253, 222, 25, 197, + 49, 48, 37, 51, 22, 6, 7, 39, 62, 3, 55, 35, 53, 35, 21, 35, 17, 51, 21, 51, + 53, 51, 1, 186, 39, 2, 54, 41, 58, 6, 19, 19, 17, 5, 36, 206, 83, 83, 206, 82, + 69, 63, 116, 38, 35, 6, 24, 31, 35, 17, 205, 205, 1, 208, 189, 189, 0, 1, 0, 54, + 255, 91, 1, 191, 2, 107, 0, 27, 0, 80, 64, 16, 23, 24, 10, 0, 77, 23, 16, 9, + 0, 77, 22, 16, 10, 0, 77, 3, 184, 255, 224, 64, 30, 17, 18, 0, 76, 9, 16, 115, + 11, 15, 115, 12, 11, 29, 0, 115, 25, 28, 5, 124, 20, 20, 12, 9, 26, 65, 15, 121, + 13, 12, 68, 0, 63, 205, 237, 63, 51, 18, 57, 47, 237, 1, 16, 214, 237, 16, 222, 213, + 237, 16, 237, 50, 49, 48, 43, 43, 43, 43, 19, 20, 30, 2, 51, 50, 54, 55, 17, 51, + 17, 35, 21, 35, 53, 51, 53, 6, 6, 35, 34, 46, 2, 53, 53, 51, 137, 11, 28, 48, + 36, 32, 59, 14, 82, 42, 79, 39, 15, 66, 35, 60, 76, 43, 16, 83, 1, 184, 38, 57, + 38, 18, 10, 4, 1, 60, 253, 149, 165, 235, 162, 5, 9, 31, 58, 82, 51, 179, 0, 1, + 0, 54, 255, 127, 1, 173, 1, 208, 0, 27, 0, 69, 64, 41, 24, 24, 11, 0, 77, 24, + 32, 10, 0, 77, 24, 24, 9, 0, 77, 8, 15, 127, 10, 14, 127, 11, 10, 29, 1, 127, + 26, 28, 4, 136, 21, 21, 11, 8, 27, 73, 14, 133, 12, 11, 74, 0, 63, 205, 237, 63, + 51, 18, 57, 47, 237, 1, 16, 214, 237, 16, 222, 213, 237, 16, 237, 50, 49, 48, 43, 43, + 43, 19, 21, 20, 22, 51, 50, 54, 55, 53, 51, 17, 35, 21, 35, 53, 51, 53, 14, 3, + 35, 34, 46, 2, 53, 53, 136, 57, 50, 36, 48, 19, 83, 43, 79, 39, 7, 25, 31, 34, + 16, 40, 66, 47, 26, 1, 208, 136, 53, 42, 7, 5, 219, 254, 48, 129, 199, 109, 2, 5, + 5, 4, 17, 38, 63, 46, 137, 0, 1, 0, 32, 255, 87, 1, 226, 2, 107, 0, 38, 0, + 196, 185, 0, 38, 255, 240, 179, 12, 0, 77, 38, 184, 255, 224, 179, 11, 0, 77, 3, 184, + 255, 248, 180, 16, 19, 0, 76, 3, 184, 255, 240, 179, 15, 0, 77, 3, 184, 255, 240, 179, + 13, 0, 77, 2, 184, 255, 248, 64, 10, 13, 0, 77, 1, 40, 11, 12, 0, 76, 11, 184, + 255, 232, 64, 70, 18, 0, 77, 11, 12, 17, 115, 6, 25, 38, 0, 38, 123, 26, 25, 20, + 26, 26, 25, 24, 1, 0, 1, 123, 23, 24, 20, 23, 23, 24, 0, 26, 23, 23, 18, 115, + 2, 32, 5, 48, 5, 2, 5, 6, 40, 26, 31, 115, 37, 32, 39, 26, 38, 65, 24, 0, + 25, 25, 31, 32, 68, 12, 11, 5, 121, 18, 68, 23, 1, 65, 0, 63, 51, 63, 237, 220, + 25, 197, 24, 63, 51, 51, 47, 51, 51, 63, 51, 1, 16, 214, 50, 237, 50, 16, 214, 213, + 93, 50, 237, 50, 17, 18, 57, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 125, 196, + 1, 24, 16, 253, 222, 25, 197, 43, 49, 48, 43, 43, 43, 43, 43, 43, 43, 19, 19, 51, + 22, 18, 23, 51, 22, 14, 2, 7, 39, 62, 3, 55, 35, 46, 3, 39, 3, 35, 3, 14, + 3, 7, 35, 62, 3, 55, 51, 239, 85, 77, 18, 17, 6, 39, 1, 16, 29, 41, 23, 60, + 9, 23, 21, 18, 5, 24, 1, 2, 3, 3, 2, 79, 71, 81, 1, 3, 3, 3, 1, 80, + 3, 8, 11, 15, 9, 76, 1, 55, 1, 52, 130, 254, 243, 146, 31, 66, 64, 59, 23, 38, + 9, 28, 35, 39, 20, 54, 126, 134, 138, 65, 254, 230, 1, 26, 65, 137, 135, 126, 54, 76, + 160, 158, 154, 71, 0, 1, 0, 27, 255, 108, 1, 227, 1, 208, 0, 44, 0, 173, 64, 35, + 24, 25, 30, 127, 21, 16, 24, 14, 15, 0, 76, 16, 40, 13, 0, 77, 16, 32, 11, 12, + 0, 76, 16, 39, 34, 39, 132, 13, 16, 20, 13, 16, 34, 31, 10, 184, 255, 224, 179, 15, + 0, 77, 10, 184, 255, 216, 180, 13, 14, 0, 76, 10, 184, 255, 224, 179, 12, 0, 77, 10, + 184, 255, 216, 64, 46, 11, 0, 77, 10, 40, 0, 40, 132, 13, 10, 20, 13, 13, 10, 13, + 3, 31, 127, 17, 20, 21, 46, 0, 3, 127, 9, 4, 45, 25, 24, 20, 133, 31, 74, 34, + 16, 73, 0, 10, 73, 39, 13, 40, 40, 4, 74, 0, 63, 51, 47, 51, 51, 63, 51, 63, + 51, 63, 237, 220, 25, 197, 1, 24, 16, 214, 50, 237, 50, 16, 222, 213, 50, 237, 17, 57, + 135, 16, 43, 135, 125, 196, 1, 43, 43, 43, 43, 17, 51, 135, 24, 43, 135, 125, 196, 1, + 43, 43, 43, 24, 16, 253, 222, 25, 197, 49, 48, 19, 6, 6, 7, 35, 62, 3, 55, 51, + 22, 22, 23, 54, 54, 55, 51, 22, 22, 23, 51, 22, 6, 7, 39, 62, 3, 55, 35, 38, + 38, 39, 14, 3, 7, 35, 46, 3, 119, 8, 1, 3, 80, 1, 7, 9, 11, 6, 77, 20, + 48, 29, 32, 46, 21, 77, 11, 15, 5, 39, 2, 54, 41, 58, 6, 19, 19, 17, 5, 32, + 2, 3, 7, 9, 16, 16, 21, 14, 82, 14, 19, 16, 16, 1, 86, 91, 173, 78, 55, 118, + 120, 118, 53, 54, 149, 89, 89, 149, 54, 91, 206, 98, 63, 116, 38, 35, 6, 24, 31, 35, + 17, 78, 179, 85, 37, 54, 53, 59, 42, 42, 59, 53, 54, 255, 255, 0, 89, 0, 0, 1, + 155, 2, 107, 2, 6, 0, 44, 0, 0, 255, 255, 0, 9, 0, 0, 1, 235, 3, 35, 2, + 38, 0, 36, 0, 0, 1, 7, 3, 139, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 26, + 34, 4, 15, 80, 2, 9, 23, 79, 43, 43, 52, 0, 0, 255, 255, 0, 58, 255, 245, 1, + 176, 2, 152, 2, 38, 0, 68, 0, 0, 1, 6, 3, 139, 0, 0, 0, 16, 64, 11, 2, + 4, 52, 60, 28, 19, 80, 2, 15, 49, 79, 43, 43, 52, 255, 255, 0, 9, 0, 0, 1, + 235, 3, 26, 2, 38, 0, 36, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, + 16, 3, 2, 0, 25, 43, 4, 15, 80, 3, 9, 35, 79, 2, 9, 23, 79, 43, 43, 43, + 52, 52, 0, 0, 0, 255, 255, 0, 58, 255, 245, 1, 176, 2, 143, 2, 38, 0, 68, 0, + 0, 1, 6, 0, 131, 0, 0, 0, 23, 64, 16, 3, 2, 5, 51, 69, 28, 19, 80, 3, + 15, 61, 79, 2, 15, 49, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 27, 0, 0, 1, + 226, 2, 107, 2, 6, 0, 161, 0, 0, 255, 255, 0, 31, 255, 245, 1, 222, 1, 219, 2, + 6, 0, 193, 0, 0, 255, 255, 0, 91, 0, 0, 1, 204, 3, 35, 2, 38, 0, 40, 0, + 0, 1, 7, 3, 139, 0, 18, 0, 139, 0, 19, 185, 0, 1, 255, 248, 64, 9, 15, 23, + 0, 10, 80, 1, 1, 12, 79, 43, 43, 52, 0, 0, 0, 255, 255, 0, 40, 255, 245, 1, + 199, 2, 152, 2, 38, 0, 72, 0, 0, 1, 6, 3, 139, 0, 0, 0, 16, 64, 11, 2, + 2, 37, 45, 19, 2, 80, 2, 0, 34, 79, 43, 43, 52, 255, 255, 0, 25, 255, 243, 1, + 216, 2, 121, 2, 6, 1, 232, 0, 0, 255, 255, 0, 45, 255, 245, 1, 204, 1, 219, 2, + 6, 2, 53, 0, 0, 255, 255, 0, 25, 255, 243, 1, 216, 3, 26, 2, 38, 1, 232, 0, + 0, 1, 7, 0, 131, 255, 239, 0, 139, 0, 26, 177, 3, 2, 184, 255, 241, 64, 13, 41, + 59, 25, 17, 80, 3, 12, 51, 79, 2, 12, 39, 79, 43, 43, 43, 52, 52, 255, 255, 0, + 45, 255, 245, 1, 204, 2, 143, 2, 38, 2, 53, 0, 0, 1, 6, 0, 131, 248, 0, 0, + 26, 177, 3, 2, 184, 255, 246, 64, 13, 38, 56, 2, 21, 80, 3, 16, 48, 79, 2, 16, + 36, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 4, 0, 0, 1, 241, 3, 26, 2, + 38, 2, 198, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, + 48, 66, 7, 38, 80, 2, 17, 58, 79, 1, 17, 46, 79, 43, 43, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 7, 0, 0, 1, 235, 2, 143, 2, 38, 2, 230, 0, 0, 1, 6, 0, + 131, 0, 0, 0, 23, 64, 16, 2, 1, 1, 52, 70, 31, 16, 80, 2, 5, 62, 79, 1, + 5, 50, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 38, 255, 244, 1, 209, 3, 26, 2, + 38, 2, 199, 0, 0, 1, 7, 0, 131, 255, 248, 0, 139, 0, 26, 177, 2, 1, 184, 255, + 247, 64, 13, 55, 73, 39, 28, 80, 2, 15, 65, 79, 1, 15, 53, 79, 43, 43, 43, 52, + 52, 255, 255, 0, 72, 255, 245, 1, 191, 2, 143, 2, 38, 2, 231, 0, 0, 1, 6, 0, + 131, 248, 0, 0, 26, 177, 2, 1, 184, 255, 239, 64, 13, 47, 65, 22, 15, 80, 2, 2, + 57, 79, 1, 2, 45, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 24, 255, 243, 1, + 207, 2, 107, 2, 6, 2, 15, 0, 0, 255, 255, 0, 44, 255, 91, 1, 175, 1, 208, 2, + 6, 2, 163, 0, 0, 255, 255, 0, 55, 0, 0, 1, 189, 3, 6, 2, 38, 2, 200, 0, + 0, 1, 7, 0, 138, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 18, 19, 0, 9, 80, + 1, 1, 20, 79, 43, 43, 52, 0, 0, 255, 255, 0, 63, 0, 0, 1, 182, 2, 123, 2, + 38, 2, 232, 0, 0, 1, 6, 0, 138, 0, 0, 0, 16, 64, 11, 1, 0, 18, 19, 9, + 0, 80, 1, 0, 20, 79, 43, 43, 52, 255, 255, 0, 55, 0, 0, 1, 189, 3, 26, 2, + 38, 2, 200, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, + 20, 38, 0, 9, 80, 2, 1, 30, 79, 1, 1, 18, 79, 43, 43, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 63, 0, 0, 1, 182, 2, 143, 2, 38, 2, 232, 0, 0, 1, 6, 0, + 131, 0, 0, 0, 23, 64, 16, 2, 1, 0, 20, 38, 9, 0, 80, 2, 0, 30, 79, 1, + 0, 18, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 29, 255, 243, 1, 216, 3, 26, 2, + 38, 0, 50, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 3, 2, 0, + 34, 52, 0, 9, 80, 3, 4, 44, 79, 2, 4, 32, 79, 43, 43, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 143, 2, 38, 0, 82, 0, 0, 1, 6, 0, + 131, 0, 0, 0, 23, 64, 16, 3, 2, 0, 34, 52, 9, 0, 80, 3, 14, 44, 79, 2, + 14, 32, 79, 43, 43, 43, 52, 52, 0, 0, 3, 0, 29, 255, 243, 1, 216, 2, 121, 0, + 19, 0, 26, 0, 33, 0, 136, 181, 33, 16, 14, 0, 77, 28, 184, 255, 240, 179, 14, 0, + 77, 26, 184, 255, 240, 179, 14, 0, 77, 26, 184, 255, 232, 64, 20, 13, 0, 77, 21, 16, + 14, 0, 77, 21, 24, 13, 0, 77, 17, 16, 15, 16, 0, 76, 13, 184, 255, 240, 180, 15, + 16, 0, 76, 7, 184, 255, 232, 64, 42, 15, 16, 0, 76, 3, 16, 16, 0, 77, 3, 24, + 15, 0, 77, 31, 23, 118, 10, 35, 30, 24, 118, 0, 64, 11, 16, 72, 0, 34, 24, 121, + 30, 30, 5, 20, 124, 15, 70, 27, 124, 5, 69, 0, 63, 237, 63, 237, 17, 57, 47, 237, + 1, 16, 214, 43, 237, 50, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 19, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 23, + 50, 54, 55, 33, 22, 22, 19, 34, 6, 7, 33, 38, 38, 29, 32, 59, 81, 50, 49, 81, + 59, 32, 32, 59, 81, 49, 50, 81, 59, 32, 220, 66, 68, 5, 254, 237, 5, 66, 65, 64, + 67, 5, 1, 19, 6, 68, 1, 54, 83, 122, 79, 39, 39, 79, 122, 83, 83, 122, 80, 38, + 38, 80, 122, 169, 114, 107, 107, 114, 1, 248, 111, 105, 105, 111, 0, 3, 0, 40, 255, 245, + 1, 204, 1, 219, 0, 19, 0, 26, 0, 33, 0, 115, 64, 12, 33, 32, 15, 16, 0, 76, + 33, 16, 14, 0, 77, 28, 184, 255, 216, 179, 16, 0, 77, 28, 184, 255, 224, 179, 15, 0, + 77, 28, 184, 255, 240, 179, 14, 0, 77, 26, 184, 255, 232, 64, 43, 15, 16, 0, 76, 21, + 24, 15, 16, 0, 76, 31, 23, 130, 0, 35, 30, 24, 130, 10, 64, 9, 12, 72, 10, 34, + 24, 134, 63, 30, 79, 30, 2, 30, 30, 20, 27, 136, 15, 80, 20, 136, 5, 81, 0, 63, + 237, 63, 237, 18, 57, 47, 93, 237, 1, 16, 214, 43, 237, 50, 16, 222, 237, 50, 49, 48, + 43, 43, 43, 43, 43, 43, 43, 37, 20, 14, 2, 35, 34, 46, 2, 53, 52, 62, 2, 51, + 50, 30, 2, 7, 50, 54, 55, 35, 22, 22, 19, 34, 6, 7, 51, 38, 38, 1, 204, 31, + 56, 78, 46, 45, 77, 56, 31, 31, 56, 77, 45, 46, 78, 56, 31, 211, 54, 68, 6, 254, + 8, 65, 53, 50, 67, 8, 252, 8, 68, 232, 55, 89, 64, 35, 35, 64, 89, 55, 55, 90, + 63, 35, 35, 63, 90, 224, 74, 71, 72, 73, 1, 83, 68, 66, 66, 68, 255, 255, 0, 29, + 255, 243, 1, 216, 3, 26, 2, 38, 3, 117, 0, 0, 1, 7, 0, 131, 0, 0, 0, 139, + 0, 23, 64, 16, 4, 3, 0, 36, 54, 0, 9, 80, 4, 4, 46, 79, 3, 4, 34, 79, + 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 143, 2, 38, + 3, 118, 0, 0, 1, 6, 0, 131, 0, 0, 0, 23, 64, 16, 4, 3, 0, 36, 54, 9, + 0, 80, 4, 14, 46, 79, 3, 14, 34, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 46, + 255, 243, 1, 213, 3, 26, 2, 38, 2, 221, 0, 0, 1, 7, 0, 131, 255, 239, 0, 139, + 0, 26, 177, 2, 1, 184, 255, 232, 64, 13, 41, 59, 15, 4, 80, 2, 0, 51, 79, 1, + 0, 39, 79, 43, 43, 43, 52, 52, 255, 255, 0, 59, 255, 245, 1, 204, 2, 143, 2, 38, + 2, 253, 0, 0, 1, 6, 0, 131, 239, 0, 0, 26, 177, 2, 1, 184, 255, 230, 64, 13, + 39, 57, 8, 0, 80, 2, 31, 49, 79, 1, 31, 37, 79, 43, 43, 43, 52, 52, 0, 0, + 255, 255, 0, 9, 255, 248, 1, 238, 3, 6, 2, 38, 2, 211, 0, 0, 1, 7, 0, 138, + 0, 9, 0, 139, 0, 16, 64, 11, 1, 7, 38, 39, 11, 21, 80, 1, 11, 40, 79, 43, + 43, 52, 0, 0, 255, 255, 0, 36, 255, 88, 1, 205, 2, 123, 2, 38, 0, 92, 0, 0, + 1, 6, 0, 138, 18, 0, 0, 16, 64, 11, 1, 19, 33, 34, 32, 21, 80, 1, 9, 35, + 79, 43, 43, 52, 255, 255, 0, 9, 255, 248, 1, 238, 3, 26, 2, 38, 2, 211, 0, 0, + 1, 7, 0, 131, 0, 9, 0, 139, 0, 23, 64, 16, 2, 1, 7, 40, 58, 11, 21, 80, + 2, 11, 50, 79, 1, 11, 38, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 36, + 255, 88, 1, 205, 2, 143, 2, 38, 0, 92, 0, 0, 1, 6, 0, 131, 18, 0, 0, 23, + 64, 16, 2, 1, 19, 35, 53, 32, 21, 80, 2, 9, 45, 79, 1, 9, 33, 79, 43, 43, + 43, 52, 52, 0, 255, 255, 0, 9, 255, 248, 1, 238, 3, 62, 2, 38, 2, 211, 0, 0, + 1, 7, 1, 101, 0, 36, 0, 137, 0, 23, 64, 16, 2, 1, 34, 40, 42, 11, 21, 80, + 2, 11, 43, 79, 1, 11, 39, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 36, + 255, 88, 1, 205, 2, 181, 2, 38, 0, 92, 0, 0, 1, 6, 1, 101, 45, 0, 0, 23, + 64, 16, 2, 1, 46, 35, 37, 32, 21, 80, 2, 9, 38, 79, 1, 9, 34, 79, 43, 43, + 43, 52, 52, 0, 255, 255, 0, 54, 0, 0, 1, 191, 3, 26, 2, 38, 2, 215, 0, 0, + 1, 7, 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, 26, 44, 20, 10, 80, + 2, 9, 36, 79, 1, 9, 24, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 54, + 0, 0, 1, 173, 2, 143, 2, 38, 2, 247, 0, 0, 1, 6, 0, 131, 0, 0, 0, 23, + 64, 16, 2, 1, 8, 26, 44, 21, 9, 80, 2, 0, 36, 79, 1, 0, 24, 79, 43, 43, + 43, 52, 52, 0, 0, 1, 0, 54, 255, 91, 1, 204, 2, 107, 0, 11, 0, 40, 64, 20, + 3, 13, 9, 115, 6, 5, 115, 0, 11, 12, 5, 0, 121, 8, 10, 68, 4, 121, 1, 65, + 0, 63, 237, 63, 206, 237, 50, 1, 16, 214, 221, 253, 221, 237, 16, 206, 49, 48, 55, 17, + 33, 21, 35, 17, 51, 21, 35, 53, 35, 53, 143, 1, 61, 235, 134, 79, 226, 70, 2, 37, + 70, 254, 33, 235, 165, 70, 0, 1, 0, 107, 255, 127, 1, 184, 1, 208, 0, 9, 0, 36, + 64, 18, 4, 11, 7, 127, 0, 6, 127, 1, 10, 5, 133, 2, 73, 9, 6, 133, 1, 74, + 0, 63, 237, 206, 63, 237, 1, 16, 214, 237, 221, 237, 16, 206, 49, 48, 51, 35, 17, 33, + 21, 35, 17, 51, 21, 35, 163, 56, 1, 77, 251, 53, 79, 1, 208, 69, 254, 187, 199, 255, + 255, 0, 36, 255, 250, 1, 208, 3, 26, 2, 38, 2, 219, 0, 0, 1, 7, 0, 131, 0, + 0, 0, 139, 0, 23, 64, 16, 4, 3, 0, 36, 54, 6, 31, 80, 4, 7, 46, 79, 3, + 7, 34, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 0, 45, 255, 246, 1, 199, 2, + 143, 2, 38, 2, 251, 0, 0, 1, 6, 0, 131, 0, 0, 0, 23, 64, 16, 4, 3, 0, + 36, 54, 13, 30, 80, 4, 13, 46, 79, 3, 13, 34, 79, 43, 43, 43, 52, 52, 0, 0, + 4, 0, 36, 0, 0, 1, 226, 2, 120, 0, 11, 0, 23, 0, 27, 0, 39, 0, 157, 185, + 0, 10, 255, 240, 180, 14, 15, 0, 76, 10, 184, 255, 232, 64, 24, 13, 0, 77, 8, 16, + 15, 0, 77, 8, 16, 13, 0, 77, 4, 16, 15, 0, 77, 4, 24, 13, 0, 77, 2, 184, + 255, 240, 179, 15, 0, 77, 2, 184, 255, 232, 64, 53, 13, 14, 0, 76, 24, 24, 6, 12, + 18, 0, 25, 25, 0, 41, 38, 32, 33, 32, 126, 39, 38, 20, 39, 39, 38, 39, 29, 33, + 36, 79, 35, 1, 35, 29, 30, 40, 33, 38, 68, 35, 65, 39, 32, 65, 15, 3, 24, 27, + 30, 68, 21, 9, 69, 0, 63, 205, 63, 220, 221, 222, 205, 63, 51, 63, 63, 51, 1, 16, + 214, 221, 220, 93, 205, 51, 17, 51, 135, 16, 43, 135, 125, 196, 1, 24, 16, 198, 50, 47, + 16, 221, 222, 205, 50, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 1, 20, 6, 35, + 34, 38, 53, 52, 54, 51, 50, 22, 7, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, + 3, 51, 21, 35, 39, 21, 35, 17, 51, 19, 39, 53, 51, 17, 35, 3, 1, 226, 37, 43, + 43, 38, 38, 43, 43, 37, 107, 15, 12, 11, 16, 16, 11, 12, 15, 54, 161, 161, 223, 62, + 66, 119, 9, 62, 66, 119, 1, 207, 78, 92, 92, 78, 78, 91, 91, 79, 56, 56, 56, 56, + 56, 55, 55, 254, 197, 69, 117, 251, 2, 107, 254, 76, 183, 253, 253, 149, 1, 180, 0, 1, + 0, 0, 0, 236, 1, 244, 1, 50, 0, 3, 0, 13, 179, 3, 2, 0, 3, 0, 47, 205, + 1, 47, 47, 49, 48, 17, 33, 21, 33, 1, 244, 254, 12, 1, 50, 70, 0, 1, 0, 31, + 255, 243, 1, 212, 2, 120, 0, 60, 0, 232, 64, 17, 48, 24, 13, 0, 77, 48, 16, 12, + 0, 77, 48, 24, 10, 11, 0, 76, 43, 184, 255, 232, 180, 17, 18, 0, 76, 43, 184, 255, + 224, 179, 16, 0, 77, 37, 184, 255, 240, 179, 18, 0, 77, 37, 184, 255, 232, 179, 17, 0, + 77, 19, 184, 255, 240, 179, 18, 0, 77, 19, 184, 255, 232, 179, 17, 0, 77, 19, 184, 255, + 248, 179, 12, 0, 77, 19, 184, 255, 240, 64, 84, 9, 11, 0, 76, 31, 24, 24, 33, 30, + 26, 23, 4, 21, 35, 53, 56, 60, 2, 4, 50, 4, 118, 21, 42, 42, 21, 62, 0, 54, + 54, 35, 118, 50, 13, 13, 0, 50, 16, 50, 32, 50, 3, 8, 50, 61, 26, 60, 121, 2, + 23, 2, 33, 53, 121, 56, 30, 56, 175, 2, 191, 2, 2, 15, 56, 31, 56, 2, 2, 56, + 2, 56, 16, 41, 41, 38, 124, 45, 70, 12, 12, 9, 124, 16, 69, 0, 63, 237, 50, 47, + 63, 237, 50, 47, 17, 57, 57, 47, 47, 93, 93, 17, 51, 16, 237, 50, 17, 51, 16, 237, + 50, 1, 16, 198, 94, 93, 50, 47, 16, 237, 51, 47, 51, 16, 204, 50, 47, 16, 237, 17, + 23, 57, 17, 18, 23, 57, 50, 47, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 19, 53, 33, 54, 53, 52, 46, 2, 35, 34, 6, 7, 39, 54, 54, 51, 50, 30, + 2, 21, 20, 7, 51, 21, 35, 6, 6, 7, 7, 51, 21, 33, 6, 21, 20, 22, 51, 50, + 54, 55, 23, 6, 6, 35, 34, 46, 2, 53, 52, 54, 55, 35, 53, 51, 54, 54, 55, 55, + 31, 1, 49, 12, 19, 30, 38, 20, 46, 61, 21, 17, 38, 70, 37, 52, 73, 44, 20, 9, + 47, 81, 21, 57, 35, 39, 233, 254, 210, 14, 56, 64, 52, 67, 30, 24, 42, 89, 43, 59, + 77, 46, 19, 4, 5, 48, 83, 21, 64, 40, 33, 1, 102, 60, 22, 28, 23, 35, 23, 12, + 17, 8, 72, 11, 13, 29, 47, 59, 30, 28, 21, 60, 19, 36, 21, 22, 60, 21, 31, 42, + 48, 19, 14, 66, 22, 16, 26, 43, 56, 30, 17, 29, 12, 60, 20, 36, 23, 19, 0, 1, + 0, 33, 0, 0, 1, 210, 2, 107, 0, 23, 0, 151, 64, 78, 7, 16, 15, 8, 15, 20, + 3, 4, 19, 19, 19, 15, 22, 13, 10, 13, 14, 9, 14, 6, 17, 18, 5, 5, 5, 9, + 1, 7, 6, 3, 10, 115, 20, 17, 16, 13, 13, 25, 24, 18, 14, 8, 4, 2, 21, 121, + 23, 5, 4, 9, 8, 19, 18, 15, 14, 16, 8, 32, 8, 2, 0, 14, 1, 8, 4, 8, + 18, 14, 14, 18, 8, 4, 4, 12, 23, 65, 12, 68, 0, 63, 63, 18, 23, 57, 47, 47, + 47, 47, 94, 93, 93, 17, 51, 17, 51, 17, 51, 17, 51, 16, 237, 50, 1, 47, 47, 47, + 47, 17, 18, 57, 47, 51, 51, 51, 253, 50, 50, 50, 204, 205, 50, 47, 125, 135, 4, 196, + 196, 16, 135, 196, 196, 1, 24, 16, 204, 205, 50, 47, 125, 135, 4, 196, 196, 16, 135, 196, + 196, 49, 48, 1, 21, 35, 21, 55, 23, 7, 21, 55, 23, 7, 21, 35, 53, 7, 39, 55, + 53, 7, 39, 55, 53, 35, 53, 1, 210, 176, 104, 27, 131, 104, 27, 131, 81, 104, 26, 130, + 104, 26, 130, 176, 2, 107, 72, 136, 49, 56, 62, 103, 49, 56, 61, 171, 137, 49, 57, 60, + 103, 48, 56, 61, 170, 72, 0, 1, 0, 116, 2, 27, 1, 127, 2, 152, 0, 13, 0, 21, + 183, 11, 10, 3, 4, 10, 4, 7, 0, 0, 47, 221, 206, 50, 1, 47, 205, 222, 205, 49, + 48, 19, 34, 38, 39, 55, 22, 22, 51, 50, 54, 55, 23, 6, 6, 250, 56, 70, 8, 63, + 8, 34, 29, 29, 34, 8, 62, 8, 69, 2, 27, 57, 51, 17, 29, 35, 35, 29, 17, 51, + 57, 255, 255, 0, 9, 0, 0, 1, 235, 2, 107, 2, 6, 0, 36, 0, 0, 0, 3, 0, + 54, 255, 251, 1, 194, 2, 113, 0, 26, 0, 41, 0, 56, 0, 122, 64, 81, 123, 50, 1, + 106, 50, 1, 121, 46, 1, 106, 46, 1, 106, 38, 122, 38, 2, 107, 34, 123, 34, 2, 133, + 25, 149, 25, 2, 149, 23, 1, 129, 22, 1, 148, 19, 1, 133, 19, 1, 144, 14, 1, 20, + 14, 132, 14, 2, 5, 14, 1, 21, 48, 118, 16, 16, 36, 118, 24, 58, 42, 27, 115, 16, + 5, 1, 5, 57, 21, 27, 121, 42, 42, 31, 53, 124, 11, 65, 31, 124, 0, 67, 0, 63, + 237, 63, 237, 18, 57, 47, 237, 57, 1, 16, 214, 93, 237, 50, 16, 222, 237, 51, 47, 237, + 50, 49, 48, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 23, 34, 46, + 2, 39, 17, 62, 3, 51, 50, 30, 2, 21, 20, 14, 2, 7, 22, 22, 21, 20, 6, 3, + 21, 22, 22, 51, 50, 62, 2, 53, 52, 46, 2, 35, 39, 51, 50, 62, 2, 53, 52, 46, + 2, 35, 34, 6, 7, 204, 15, 40, 40, 40, 15, 15, 39, 41, 39, 16, 46, 80, 59, 33, + 14, 24, 30, 16, 48, 64, 117, 197, 2, 41, 31, 31, 57, 44, 26, 20, 36, 49, 30, 97, + 78, 25, 46, 35, 20, 22, 36, 47, 26, 26, 39, 8, 5, 2, 3, 6, 4, 2, 88, 4, + 6, 3, 2, 16, 38, 62, 46, 22, 40, 34, 28, 9, 17, 72, 60, 92, 94, 1, 38, 221, + 1, 3, 10, 27, 44, 35, 31, 42, 25, 11, 68, 10, 22, 38, 29, 27, 38, 24, 10, 1, + 2, 255, 255, 0, 54, 0, 0, 1, 204, 2, 107, 2, 6, 2, 195, 0, 0, 0, 2, 0, + 9, 0, 0, 1, 235, 2, 107, 0, 11, 0, 22, 0, 76, 64, 41, 6, 18, 12, 18, 120, + 11, 6, 20, 11, 11, 6, 5, 17, 12, 17, 120, 0, 5, 20, 0, 0, 5, 12, 12, 0, + 11, 24, 0, 23, 11, 68, 6, 65, 12, 5, 65, 18, 17, 121, 0, 68, 0, 63, 237, 50, + 63, 51, 63, 63, 1, 16, 198, 16, 206, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, + 135, 24, 16, 43, 135, 125, 196, 49, 48, 51, 62, 3, 55, 51, 30, 3, 23, 3, 14, 3, + 7, 33, 46, 3, 9, 23, 45, 46, 51, 30, 95, 27, 54, 51, 44, 16, 238, 9, 33, 39, + 43, 20, 1, 23, 20, 41, 36, 30, 89, 157, 149, 146, 78, 70, 163, 165, 157, 64, 2, 35, + 25, 91, 124, 152, 85, 85, 152, 124, 92, 255, 255, 0, 91, 0, 0, 1, 204, 2, 107, 2, + 6, 0, 40, 0, 0, 0, 1, 0, 54, 0, 0, 1, 199, 2, 107, 0, 17, 0, 55, 64, + 29, 5, 14, 9, 14, 120, 0, 5, 20, 0, 0, 5, 6, 6, 0, 19, 15, 15, 9, 18, + 0, 14, 121, 16, 65, 9, 5, 121, 8, 68, 0, 63, 237, 50, 63, 237, 50, 1, 16, 198, + 50, 47, 16, 206, 50, 47, 135, 16, 43, 135, 125, 196, 49, 48, 1, 14, 3, 7, 33, 21, + 33, 53, 62, 3, 55, 33, 53, 33, 1, 191, 32, 79, 82, 77, 29, 1, 51, 254, 111, 33, + 75, 78, 77, 35, 254, 229, 1, 122, 2, 40, 44, 120, 131, 132, 55, 70, 67, 61, 127, 125, + 118, 51, 70, 255, 255, 0, 45, 0, 0, 1, 199, 2, 107, 2, 6, 0, 43, 0, 0, 0, + 3, 0, 29, 255, 243, 1, 216, 2, 121, 0, 3, 0, 23, 0, 35, 0, 208, 185, 0, 34, + 255, 240, 64, 21, 13, 14, 0, 76, 32, 16, 13, 14, 0, 76, 28, 24, 14, 0, 77, 28, + 16, 13, 0, 77, 26, 184, 255, 240, 179, 14, 0, 77, 26, 184, 255, 224, 64, 19, 13, 0, + 77, 21, 32, 16, 0, 77, 21, 16, 15, 0, 77, 21, 24, 8, 0, 77, 17, 184, 255, 232, + 179, 16, 0, 77, 17, 184, 255, 240, 179, 15, 0, 77, 17, 184, 255, 240, 179, 8, 0, 77, + 11, 184, 255, 240, 179, 16, 0, 77, 11, 184, 255, 232, 179, 15, 0, 77, 11, 184, 255, 240, + 64, 59, 8, 0, 77, 7, 8, 16, 0, 77, 7, 24, 15, 0, 77, 7, 16, 8, 0, 77, + 79, 1, 95, 1, 2, 64, 0, 80, 0, 2, 1, 0, 1, 0, 24, 30, 118, 14, 37, 24, + 118, 4, 64, 11, 16, 72, 4, 36, 3, 121, 0, 0, 9, 27, 124, 19, 70, 33, 124, 9, + 69, 0, 63, 237, 63, 237, 17, 57, 47, 237, 1, 16, 214, 43, 237, 16, 222, 237, 17, 57, + 57, 47, 47, 93, 93, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 19, 51, 21, 35, 39, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, + 2, 35, 34, 46, 2, 55, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 175, 152, 152, + 146, 32, 58, 81, 50, 49, 82, 58, 33, 33, 58, 82, 49, 50, 81, 58, 32, 84, 66, 69, + 70, 70, 70, 70, 69, 66, 1, 91, 71, 34, 83, 122, 79, 39, 39, 79, 122, 83, 83, 122, + 80, 38, 38, 80, 122, 83, 122, 130, 130, 122, 122, 130, 130, 255, 255, 0, 89, 0, 0, 1, + 155, 2, 107, 2, 6, 0, 44, 0, 0, 0, 1, 0, 64, 0, 0, 1, 208, 2, 107, 0, + 26, 0, 99, 64, 56, 5, 5, 10, 26, 21, 26, 120, 0, 5, 20, 0, 0, 5, 11, 5, + 10, 5, 120, 16, 11, 20, 16, 16, 11, 0, 0, 10, 28, 21, 16, 115, 0, 18, 16, 18, + 32, 18, 3, 8, 18, 27, 21, 16, 5, 5, 18, 19, 65, 18, 68, 11, 10, 68, 26, 0, + 65, 0, 63, 50, 63, 51, 63, 63, 18, 57, 25, 47, 51, 51, 1, 24, 16, 214, 94, 93, + 237, 50, 16, 206, 50, 47, 135, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 8, 125, 196, + 49, 48, 1, 14, 3, 7, 30, 3, 23, 35, 46, 3, 39, 17, 35, 17, 51, 17, 62, 3, + 55, 1, 187, 30, 52, 50, 52, 31, 30, 66, 63, 56, 21, 93, 22, 52, 58, 62, 31, 82, + 82, 28, 57, 52, 46, 19, 2, 107, 50, 77, 68, 62, 34, 27, 71, 85, 95, 50, 46, 88, + 78, 63, 23, 254, 214, 2, 107, 254, 236, 32, 70, 71, 70, 33, 0, 1, 0, 9, 0, 0, + 1, 235, 2, 107, 0, 22, 0, 74, 64, 39, 16, 10, 5, 10, 120, 11, 16, 20, 11, 11, + 16, 17, 0, 5, 0, 120, 22, 17, 20, 22, 22, 17, 5, 5, 11, 22, 24, 11, 23, 0, + 22, 68, 17, 5, 16, 65, 10, 11, 68, 0, 63, 51, 63, 51, 51, 63, 51, 1, 16, 198, + 16, 206, 17, 57, 61, 47, 135, 24, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 125, 196, + 49, 48, 33, 46, 3, 39, 14, 3, 7, 35, 62, 3, 55, 51, 30, 3, 23, 1, 146, 20, + 47, 43, 35, 8, 9, 36, 44, 47, 20, 84, 23, 44, 45, 50, 30, 102, 26, 54, 49, 43, + 16, 101, 178, 143, 101, 24, 25, 103, 144, 177, 98, 89, 157, 149, 146, 78, 70, 163, 165, 157, + 64, 0, 1, 0, 34, 0, 0, 1, 211, 2, 107, 0, 26, 0, 153, 64, 35, 1, 40, 15, + 0, 77, 1, 32, 13, 14, 0, 76, 1, 24, 12, 0, 77, 1, 32, 11, 0, 77, 1, 14, + 13, 14, 123, 0, 1, 20, 0, 0, 1, 13, 8, 26, 184, 255, 216, 179, 15, 0, 77, 26, + 184, 255, 232, 180, 12, 14, 0, 76, 26, 184, 255, 224, 64, 43, 11, 0, 77, 15, 26, 0, + 26, 126, 16, 15, 20, 16, 16, 15, 0, 21, 8, 115, 2, 7, 28, 16, 21, 115, 25, 22, + 27, 16, 26, 65, 14, 0, 15, 15, 21, 22, 68, 8, 7, 68, 13, 1, 65, 0, 63, 51, + 63, 51, 63, 51, 51, 47, 51, 51, 63, 51, 1, 16, 214, 50, 237, 50, 16, 222, 50, 237, + 17, 57, 135, 16, 43, 135, 125, 196, 1, 43, 43, 43, 17, 51, 135, 24, 16, 43, 135, 125, + 196, 1, 43, 43, 43, 43, 49, 48, 19, 19, 51, 30, 3, 23, 35, 46, 3, 39, 3, 35, + 3, 20, 14, 2, 7, 35, 54, 18, 55, 51, 250, 91, 91, 6, 10, 8, 8, 3, 79, 2, + 2, 3, 3, 2, 85, 82, 87, 2, 3, 3, 1, 79, 6, 14, 14, 91, 1, 55, 1, 52, + 59, 146, 161, 170, 83, 54, 130, 138, 141, 65, 254, 219, 1, 37, 65, 141, 138, 130, 54, 161, + 1, 47, 155, 0, 1, 0, 55, 0, 0, 1, 190, 2, 107, 0, 17, 0, 78, 64, 48, 26, + 0, 1, 13, 0, 1, 38, 9, 1, 4, 9, 20, 9, 2, 9, 0, 5, 0, 126, 14, 9, + 20, 14, 9, 14, 115, 17, 19, 5, 115, 16, 7, 1, 1, 7, 1, 7, 18, 15, 65, 5, + 9, 65, 7, 68, 14, 0, 68, 0, 63, 50, 63, 63, 51, 63, 1, 16, 214, 93, 93, 237, + 16, 222, 253, 135, 43, 135, 125, 196, 1, 93, 93, 93, 93, 49, 48, 33, 46, 3, 39, 17, + 35, 17, 51, 30, 3, 23, 17, 51, 17, 1, 107, 17, 49, 60, 70, 37, 75, 83, 31, 70, + 64, 53, 15, 75, 42, 109, 127, 142, 74, 254, 18, 2, 107, 54, 131, 132, 121, 43, 1, 225, + 253, 149, 0, 3, 0, 37, 0, 0, 1, 207, 2, 107, 0, 3, 0, 7, 0, 11, 0, 51, + 64, 25, 10, 10, 0, 0, 5, 13, 11, 11, 1, 1, 4, 12, 11, 121, 8, 8, 2, 4, + 121, 7, 68, 1, 121, 2, 65, 0, 63, 237, 63, 237, 17, 57, 47, 237, 1, 16, 198, 50, + 47, 50, 47, 16, 206, 50, 47, 50, 47, 49, 48, 1, 33, 53, 33, 1, 33, 21, 33, 19, + 33, 21, 33, 1, 199, 254, 103, 1, 153, 254, 94, 1, 170, 254, 86, 48, 1, 74, 254, 182, + 2, 36, 71, 253, 220, 71, 1, 105, 73, 255, 255, 0, 29, 255, 243, 1, 216, 2, 121, 2, + 6, 0, 50, 0, 0, 255, 255, 0, 45, 0, 0, 1, 199, 2, 107, 2, 6, 2, 207, 0, + 0, 0, 2, 0, 73, 0, 0, 1, 199, 2, 113, 0, 14, 0, 29, 0, 135, 64, 21, 27, + 24, 16, 0, 77, 27, 16, 15, 0, 77, 23, 24, 15, 0, 77, 22, 40, 16, 0, 77, 4, + 184, 255, 232, 179, 10, 0, 77, 4, 184, 255, 240, 179, 9, 0, 77, 4, 184, 255, 224, 179, + 8, 0, 77, 2, 184, 255, 232, 179, 18, 0, 77, 2, 184, 255, 240, 179, 17, 0, 77, 2, + 184, 255, 240, 180, 9, 10, 0, 76, 2, 184, 255, 224, 64, 27, 8, 0, 77, 25, 118, 3, + 31, 19, 7, 115, 0, 9, 1, 8, 9, 30, 7, 121, 19, 19, 0, 9, 68, 15, 124, 0, + 65, 0, 63, 237, 63, 18, 57, 47, 237, 1, 16, 214, 94, 93, 237, 50, 16, 222, 237, 49, + 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 19, 50, 22, 21, 20, 6, 35, 35, + 21, 35, 17, 62, 3, 23, 34, 6, 7, 21, 51, 50, 62, 2, 53, 52, 46, 2, 235, 106, + 114, 122, 106, 72, 82, 18, 43, 43, 41, 23, 26, 48, 12, 68, 33, 54, 39, 22, 22, 36, + 47, 2, 113, 99, 98, 107, 91, 230, 2, 97, 4, 7, 3, 2, 71, 2, 2, 250, 12, 30, + 49, 38, 36, 49, 28, 12, 0, 1, 0, 40, 0, 0, 1, 191, 2, 107, 0, 21, 0, 89, + 64, 47, 10, 10, 7, 17, 0, 17, 120, 13, 10, 20, 13, 13, 10, 16, 16, 4, 23, 3, + 10, 7, 10, 120, 0, 3, 20, 0, 0, 3, 13, 13, 7, 22, 10, 10, 0, 0, 3, 13, + 17, 121, 14, 65, 7, 3, 121, 6, 68, 0, 63, 237, 50, 63, 237, 50, 17, 57, 25, 47, + 51, 1, 24, 47, 16, 198, 50, 47, 135, 16, 43, 135, 125, 196, 1, 24, 16, 206, 50, 47, + 135, 16, 43, 135, 8, 125, 196, 49, 48, 1, 6, 6, 7, 33, 21, 33, 53, 54, 54, 55, + 38, 38, 39, 53, 33, 21, 33, 30, 3, 1, 69, 49, 106, 42, 1, 63, 254, 105, 34, 106, + 54, 52, 99, 30, 1, 137, 254, 220, 13, 38, 46, 50, 1, 66, 64, 128, 60, 70, 65, 55, + 132, 69, 69, 129, 45, 55, 70, 19, 52, 60, 65, 0, 1, 0, 36, 0, 0, 1, 208, 2, + 107, 0, 7, 0, 32, 64, 15, 1, 3, 115, 6, 4, 4, 9, 8, 2, 5, 121, 7, 65, + 4, 68, 0, 63, 63, 237, 50, 1, 17, 18, 57, 47, 206, 253, 206, 49, 48, 1, 21, 35, + 17, 35, 17, 35, 53, 1, 208, 173, 82, 173, 2, 107, 70, 253, 219, 2, 37, 70, 255, 255, + 0, 13, 0, 0, 1, 232, 2, 107, 2, 6, 0, 60, 0, 0, 255, 255, 0, 42, 0, 0, + 1, 212, 2, 147, 2, 6, 2, 212, 0, 0, 0, 1, 0, 22, 0, 0, 1, 216, 2, 107, + 0, 21, 0, 85, 64, 45, 15, 12, 9, 8, 16, 9, 16, 120, 17, 8, 20, 17, 8, 17, + 17, 21, 0, 14, 21, 14, 120, 13, 0, 20, 13, 13, 0, 21, 23, 13, 13, 9, 22, 17, + 16, 65, 14, 13, 65, 9, 8, 68, 21, 0, 68, 0, 63, 50, 63, 51, 63, 51, 63, 51, + 1, 16, 198, 50, 47, 16, 206, 135, 16, 43, 135, 125, 196, 1, 17, 51, 24, 47, 135, 43, + 135, 125, 196, 16, 14, 196, 196, 49, 48, 33, 46, 3, 39, 6, 6, 7, 35, 54, 54, 55, + 3, 51, 23, 55, 51, 3, 22, 22, 23, 1, 125, 11, 30, 34, 39, 21, 35, 69, 30, 90, + 33, 89, 50, 162, 91, 122, 129, 89, 164, 48, 90, 35, 27, 68, 72, 72, 31, 56, 145, 69, + 74, 173, 79, 1, 37, 237, 237, 254, 223, 78, 168, 84, 0, 1, 0, 43, 0, 0, 1, 201, + 2, 107, 0, 27, 0, 118, 185, 0, 25, 255, 232, 180, 19, 20, 0, 76, 25, 184, 255, 224, + 179, 18, 0, 77, 25, 184, 255, 232, 179, 17, 0, 77, 12, 184, 255, 240, 179, 16, 0, 77, + 12, 184, 255, 232, 64, 44, 15, 0, 77, 4, 16, 19, 20, 0, 76, 4, 32, 17, 18, 0, + 76, 27, 15, 115, 2, 14, 14, 7, 19, 115, 22, 29, 10, 115, 7, 28, 27, 2, 121, 16, + 13, 14, 13, 14, 1, 20, 8, 65, 1, 68, 0, 63, 63, 51, 18, 57, 57, 47, 47, 51, + 237, 50, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 51, 237, 50, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 33, 35, 53, 34, 46, 2, 53, 53, 51, 21, 20, 22, 51, 53, 51, 21, + 50, 54, 53, 53, 51, 21, 20, 14, 2, 35, 1, 31, 74, 47, 65, 40, 18, 82, 39, 49, + 74, 49, 39, 82, 18, 40, 65, 47, 158, 36, 66, 93, 57, 209, 206, 101, 84, 247, 247, 84, + 101, 206, 209, 57, 93, 66, 36, 0, 1, 0, 18, 0, 0, 1, 226, 2, 121, 0, 43, 0, + 152, 185, 0, 33, 255, 232, 64, 9, 13, 0, 77, 29, 24, 13, 0, 77, 17, 184, 255, 232, + 180, 15, 16, 0, 76, 11, 184, 255, 232, 64, 81, 14, 16, 0, 76, 7, 24, 16, 0, 77, + 7, 16, 15, 0, 77, 7, 24, 14, 0, 77, 1, 24, 16, 0, 77, 1, 16, 15, 0, 77, + 17, 111, 21, 127, 21, 175, 21, 191, 21, 4, 21, 21, 26, 118, 14, 18, 18, 14, 45, 1, + 96, 41, 112, 41, 160, 41, 176, 41, 4, 41, 41, 36, 118, 4, 0, 0, 4, 44, 41, 1, + 121, 42, 68, 21, 17, 121, 20, 68, 31, 124, 9, 69, 0, 63, 237, 63, 237, 50, 63, 237, + 50, 1, 16, 198, 50, 47, 16, 237, 50, 47, 93, 51, 16, 206, 50, 47, 16, 237, 50, 47, + 93, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 55, 51, 38, 38, 53, 52, 62, + 2, 51, 50, 30, 2, 21, 20, 6, 7, 51, 21, 35, 53, 62, 3, 53, 52, 46, 2, 35, + 34, 14, 2, 21, 20, 30, 2, 23, 21, 35, 18, 109, 48, 46, 27, 55, 82, 54, 54, 82, + 55, 27, 47, 47, 107, 197, 24, 38, 25, 14, 16, 33, 51, 35, 35, 51, 33, 16, 14, 25, + 38, 24, 199, 70, 61, 149, 74, 55, 102, 76, 46, 46, 76, 102, 55, 74, 149, 61, 70, 60, + 26, 68, 77, 82, 40, 42, 76, 57, 34, 34, 57, 76, 42, 40, 82, 77, 68, 26, 60, 0, + 2, 0, 49, 255, 246, 1, 215, 1, 218, 0, 25, 0, 43, 0, 103, 185, 0, 42, 255, 240, + 179, 14, 0, 77, 37, 184, 255, 224, 179, 14, 0, 77, 37, 184, 255, 240, 64, 52, 13, 0, + 77, 24, 16, 16, 0, 77, 24, 24, 15, 0, 77, 18, 24, 16, 0, 77, 18, 32, 15, 0, + 77, 18, 24, 8, 0, 77, 13, 32, 127, 4, 9, 9, 4, 45, 39, 130, 21, 44, 26, 136, + 16, 81, 9, 136, 10, 81, 36, 136, 0, 80, 0, 63, 237, 63, 237, 63, 237, 1, 16, 214, + 237, 16, 204, 50, 47, 16, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 1, 50, + 22, 23, 17, 20, 30, 2, 23, 7, 38, 38, 39, 6, 6, 35, 34, 46, 2, 53, 52, 62, + 2, 19, 50, 54, 55, 38, 38, 53, 53, 38, 38, 35, 34, 6, 21, 20, 30, 2, 1, 13, + 48, 87, 23, 3, 9, 18, 14, 13, 29, 36, 17, 20, 65, 45, 48, 74, 49, 26, 31, 57, + 82, 34, 32, 52, 13, 3, 2, 7, 42, 24, 63, 75, 13, 29, 45, 1, 218, 19, 8, 254, + 212, 22, 29, 19, 12, 4, 70, 6, 18, 22, 17, 30, 36, 64, 88, 53, 56, 90, 63, 34, + 254, 100, 23, 11, 13, 27, 15, 241, 3, 8, 91, 81, 36, 61, 46, 26, 0, 2, 0, 71, + 255, 91, 1, 204, 2, 181, 0, 27, 0, 51, 0, 177, 185, 0, 49, 255, 232, 179, 18, 0, + 77, 49, 184, 255, 224, 64, 19, 17, 0, 77, 43, 16, 18, 0, 77, 43, 24, 17, 0, 77, + 33, 32, 15, 0, 77, 23, 184, 255, 240, 179, 16, 0, 77, 22, 184, 255, 232, 179, 16, 0, + 77, 22, 184, 255, 232, 180, 8, 10, 0, 76, 17, 184, 255, 240, 180, 14, 15, 0, 76, 10, + 184, 255, 232, 179, 12, 0, 77, 10, 184, 255, 240, 179, 10, 0, 77, 10, 184, 255, 232, 64, + 46, 8, 9, 0, 76, 4, 16, 8, 10, 0, 76, 41, 41, 15, 45, 130, 12, 12, 36, 130, + 20, 53, 28, 27, 127, 0, 1, 1, 8, 1, 52, 15, 40, 134, 41, 41, 7, 31, 136, 25, + 81, 48, 136, 7, 77, 1, 75, 0, 63, 63, 237, 63, 237, 17, 57, 47, 237, 57, 1, 16, + 214, 94, 93, 237, 50, 16, 222, 237, 51, 47, 237, 50, 50, 47, 49, 48, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 23, 35, 17, 52, 62, 2, 51, 50, 30, 2, 21, + 20, 6, 7, 30, 3, 21, 20, 14, 2, 35, 34, 39, 53, 22, 22, 51, 50, 62, 2, 53, + 52, 38, 35, 35, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 21, 154, 83, 29, 49, 65, + 36, 35, 60, 45, 26, 48, 46, 37, 53, 33, 15, 35, 56, 71, 36, 61, 47, 20, 49, 25, + 25, 46, 35, 21, 71, 78, 6, 7, 45, 61, 45, 38, 44, 52, 165, 2, 151, 49, 73, 49, + 24, 22, 44, 64, 43, 41, 75, 19, 10, 39, 49, 58, 29, 56, 79, 49, 23, 28, 75, 17, + 15, 16, 32, 50, 34, 69, 79, 68, 53, 54, 51, 52, 63, 65, 0, 1, 0, 29, 255, 91, + 1, 212, 1, 208, 0, 21, 0, 51, 64, 25, 12, 3, 0, 15, 130, 16, 16, 21, 6, 130, + 7, 23, 0, 130, 21, 22, 3, 12, 12, 16, 6, 21, 73, 16, 75, 0, 63, 63, 51, 18, + 57, 17, 51, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 237, 17, 57, 57, 49, 48, 19, + 22, 22, 23, 54, 54, 55, 51, 14, 3, 7, 22, 22, 23, 35, 46, 3, 39, 121, 36, 65, + 24, 57, 66, 17, 82, 10, 33, 49, 66, 42, 8, 10, 2, 80, 5, 41, 54, 57, 22, 1, + 208, 92, 190, 91, 100, 194, 79, 43, 111, 123, 130, 63, 42, 80, 37, 87, 180, 166, 144, 52, + 0, 2, 0, 39, 255, 244, 1, 204, 2, 181, 0, 17, 0, 58, 0, 167, 64, 11, 58, 16, + 11, 0, 77, 57, 16, 12, 0, 77, 40, 184, 255, 232, 179, 16, 0, 77, 40, 184, 255, 240, + 64, 52, 15, 0, 77, 22, 24, 14, 0, 77, 22, 16, 13, 0, 77, 22, 32, 11, 12, 0, + 76, 19, 56, 17, 18, 0, 76, 18, 8, 17, 0, 77, 16, 24, 12, 13, 0, 76, 16, 32, + 11, 0, 77, 10, 24, 16, 0, 77, 10, 16, 15, 0, 77, 6, 184, 255, 232, 179, 16, 0, + 77, 6, 184, 255, 240, 64, 35, 15, 0, 77, 27, 27, 13, 130, 46, 60, 18, 38, 130, 21, + 21, 3, 130, 56, 59, 18, 41, 136, 0, 0, 1, 0, 0, 24, 8, 136, 51, 81, 33, 137, + 24, 77, 0, 63, 237, 63, 237, 17, 57, 47, 93, 237, 50, 1, 16, 214, 237, 51, 47, 237, + 50, 16, 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 19, 6, 6, 21, 20, 30, 2, 51, 50, 62, 2, 53, 52, 46, 2, 39, 38, + 38, 53, 52, 54, 51, 50, 22, 23, 7, 46, 3, 35, 34, 14, 2, 21, 20, 22, 23, 30, + 3, 21, 20, 14, 2, 35, 34, 46, 2, 53, 52, 54, 255, 64, 68, 14, 30, 48, 35, 32, + 48, 31, 15, 22, 35, 43, 86, 34, 42, 90, 78, 49, 73, 17, 18, 5, 21, 31, 38, 22, + 12, 31, 29, 19, 47, 40, 36, 64, 49, 29, 23, 50, 80, 58, 54, 80, 51, 25, 83, 1, + 152, 18, 97, 67, 33, 60, 46, 27, 25, 44, 59, 33, 41, 59, 44, 31, 54, 24, 60, 34, + 63, 62, 24, 8, 64, 3, 9, 10, 7, 3, 11, 21, 18, 24, 37, 28, 24, 49, 61, 79, + 54, 42, 82, 65, 40, 38, 64, 86, 48, 84, 115, 0, 1, 0, 69, 255, 245, 1, 210, 1, + 220, 0, 53, 0, 86, 64, 53, 52, 24, 11, 13, 0, 76, 52, 32, 10, 0, 77, 41, 16, + 11, 0, 77, 41, 32, 10, 0, 77, 20, 20, 5, 35, 55, 46, 14, 130, 51, 51, 27, 130, + 0, 43, 1, 8, 43, 54, 46, 21, 134, 20, 20, 0, 29, 136, 38, 81, 11, 136, 0, 80, + 0, 63, 237, 63, 237, 17, 57, 47, 237, 57, 1, 16, 214, 94, 93, 237, 51, 47, 237, 50, + 16, 206, 50, 50, 47, 49, 48, 43, 43, 43, 43, 1, 50, 30, 2, 23, 7, 46, 3, 35, + 34, 6, 21, 20, 30, 2, 51, 51, 21, 35, 34, 14, 2, 21, 20, 51, 50, 62, 2, 55, + 23, 6, 6, 35, 34, 46, 2, 53, 52, 54, 55, 46, 3, 53, 52, 54, 1, 33, 23, 46, + 39, 30, 7, 13, 5, 27, 37, 42, 19, 53, 68, 18, 29, 36, 18, 89, 90, 23, 42, 32, + 20, 131, 27, 52, 42, 31, 8, 22, 17, 102, 73, 33, 73, 60, 39, 44, 37, 10, 22, 19, + 13, 110, 1, 220, 4, 7, 8, 3, 71, 2, 8, 7, 6, 30, 35, 21, 26, 14, 5, 66, + 7, 18, 29, 21, 73, 7, 10, 11, 4, 70, 9, 25, 11, 31, 55, 44, 36, 62, 16, 4, + 16, 25, 33, 21, 67, 66, 0, 1, 0, 63, 255, 88, 1, 191, 2, 175, 0, 44, 0, 141, + 185, 0, 43, 255, 232, 180, 11, 14, 0, 76, 39, 184, 255, 208, 179, 16, 0, 77, 39, 184, + 255, 224, 179, 15, 0, 77, 39, 184, 255, 240, 179, 14, 0, 77, 35, 184, 255, 248, 179, 18, + 0, 77, 35, 184, 255, 240, 64, 56, 17, 0, 77, 24, 16, 17, 0, 77, 23, 16, 17, 0, + 77, 16, 24, 10, 0, 77, 16, 40, 9, 0, 77, 26, 32, 18, 0, 77, 26, 30, 30, 4, + 9, 130, 3, 0, 46, 37, 130, 19, 27, 27, 19, 45, 40, 137, 14, 14, 45, 30, 26, 133, + 29, 77, 3, 75, 0, 63, 63, 237, 50, 17, 51, 47, 237, 1, 16, 198, 50, 47, 16, 237, + 16, 222, 50, 237, 50, 51, 47, 51, 43, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 5, 20, 6, 7, 39, 62, 3, 53, 52, 46, 2, 39, 46, 3, 53, 52, 62, 4, 55, + 35, 53, 33, 21, 14, 5, 21, 20, 22, 23, 30, 3, 1, 191, 27, 16, 72, 4, 11, 11, + 8, 14, 29, 45, 32, 48, 70, 44, 21, 27, 45, 56, 58, 55, 20, 235, 1, 86, 21, 59, + 63, 61, 49, 30, 66, 74, 44, 61, 37, 17, 47, 35, 63, 23, 22, 6, 21, 25, 27, 12, + 15, 20, 14, 11, 5, 8, 30, 48, 68, 46, 44, 85, 79, 71, 61, 49, 18, 70, 65, 18, + 51, 62, 73, 79, 84, 42, 65, 59, 11, 7, 21, 30, 40, 0, 1, 0, 71, 255, 91, 1, + 176, 1, 218, 0, 19, 0, 82, 182, 12, 16, 15, 16, 0, 76, 5, 184, 255, 224, 179, 18, + 0, 77, 5, 184, 255, 232, 179, 17, 0, 77, 5, 184, 255, 232, 180, 8, 10, 0, 76, 4, + 184, 255, 224, 64, 23, 17, 0, 77, 8, 127, 7, 21, 18, 127, 0, 19, 1, 8, 19, 20, + 19, 74, 8, 75, 14, 136, 3, 80, 0, 63, 237, 63, 63, 1, 16, 214, 94, 93, 237, 16, + 222, 237, 49, 48, 43, 43, 43, 43, 43, 19, 54, 54, 51, 50, 22, 21, 17, 35, 17, 52, + 46, 2, 35, 34, 6, 7, 17, 35, 71, 45, 89, 39, 93, 95, 82, 16, 29, 41, 24, 20, + 45, 21, 83, 1, 195, 11, 12, 96, 106, 254, 75, 1, 166, 45, 56, 31, 12, 5, 4, 254, + 120, 0, 3, 0, 49, 255, 242, 1, 195, 2, 181, 0, 19, 0, 30, 0, 41, 0, 187, 64, + 11, 40, 24, 14, 0, 77, 40, 16, 13, 0, 77, 33, 184, 255, 240, 180, 13, 14, 0, 76, + 29, 184, 255, 232, 179, 14, 0, 77, 29, 184, 255, 240, 179, 13, 0, 77, 28, 184, 255, 240, + 179, 18, 0, 77, 28, 184, 255, 248, 64, 21, 17, 0, 77, 23, 16, 17, 18, 0, 76, 22, + 16, 13, 14, 0, 76, 18, 24, 15, 0, 77, 17, 184, 255, 240, 64, 9, 14, 0, 77, 12, + 16, 15, 0, 77, 12, 184, 255, 240, 179, 14, 0, 77, 8, 184, 255, 232, 64, 14, 15, 0, + 77, 8, 16, 14, 0, 77, 3, 24, 14, 0, 77, 2, 184, 255, 240, 64, 31, 15, 0, 77, + 37, 25, 130, 5, 43, 36, 26, 130, 15, 15, 31, 15, 2, 15, 42, 26, 133, 36, 36, 0, + 20, 136, 10, 81, 31, 136, 0, 77, 0, 63, 237, 63, 237, 17, 57, 47, 237, 1, 16, 214, + 93, 237, 50, 16, 222, 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 19, 50, 30, 2, 21, 20, 14, 2, 35, 34, 46, 2, 53, 52, + 62, 2, 19, 50, 62, 2, 55, 35, 30, 3, 19, 34, 14, 2, 7, 51, 46, 3, 250, 50, + 76, 50, 25, 25, 50, 76, 50, 50, 76, 50, 25, 25, 50, 76, 50, 30, 43, 28, 14, 2, + 235, 1, 14, 29, 44, 30, 30, 43, 28, 15, 2, 235, 2, 15, 28, 43, 2, 181, 49, 92, + 131, 82, 82, 131, 91, 49, 49, 91, 131, 82, 82, 131, 92, 49, 253, 132, 36, 67, 94, 58, + 58, 94, 67, 36, 2, 53, 34, 63, 89, 55, 55, 89, 63, 34, 0, 1, 0, 54, 255, 245, + 1, 194, 1, 208, 0, 21, 0, 35, 64, 17, 12, 127, 9, 9, 10, 0, 23, 10, 22, 9, + 133, 12, 73, 18, 136, 3, 81, 0, 63, 237, 63, 237, 1, 16, 198, 16, 206, 17, 57, 47, + 237, 49, 48, 37, 6, 6, 35, 34, 46, 2, 53, 53, 35, 53, 51, 17, 20, 30, 2, 51, + 50, 54, 55, 1, 194, 28, 60, 28, 40, 56, 34, 16, 134, 216, 8, 18, 30, 23, 14, 52, + 23, 15, 14, 12, 19, 43, 68, 49, 227, 69, 254, 229, 36, 46, 26, 10, 10, 12, 255, 255, + 0, 71, 0, 0, 1, 222, 1, 208, 2, 6, 1, 21, 0, 0, 0, 1, 0, 29, 0, 0, + 1, 212, 2, 181, 0, 36, 0, 138, 185, 0, 29, 255, 224, 179, 10, 0, 77, 28, 184, 255, + 208, 64, 77, 10, 0, 77, 16, 32, 11, 12, 0, 76, 16, 16, 8, 9, 0, 76, 14, 24, + 14, 0, 77, 14, 8, 3, 8, 129, 9, 14, 20, 9, 9, 14, 31, 0, 3, 0, 129, 36, + 31, 20, 36, 36, 31, 3, 32, 9, 0, 77, 3, 3, 9, 36, 38, 23, 23, 9, 37, 0, + 36, 74, 31, 160, 3, 176, 3, 192, 3, 3, 3, 14, 14, 19, 137, 26, 77, 8, 9, 74, + 0, 63, 51, 63, 237, 50, 17, 51, 93, 51, 63, 51, 1, 16, 198, 50, 47, 16, 206, 17, + 57, 61, 47, 43, 135, 24, 16, 43, 135, 125, 196, 135, 24, 16, 43, 135, 125, 196, 49, 48, + 1, 43, 43, 43, 43, 43, 33, 38, 38, 39, 14, 3, 7, 35, 62, 3, 55, 46, 3, 35, + 34, 6, 7, 39, 54, 54, 51, 50, 30, 2, 23, 30, 3, 23, 1, 119, 22, 60, 35, 26, + 45, 38, 29, 9, 82, 13, 41, 51, 57, 30, 15, 25, 25, 30, 21, 13, 17, 5, 12, 5, + 32, 22, 30, 45, 34, 27, 11, 33, 60, 52, 43, 16, 91, 198, 91, 47, 103, 101, 93, 36, + 50, 118, 124, 124, 55, 39, 58, 38, 19, 3, 2, 66, 2, 5, 18, 32, 44, 27, 77, 153, + 147, 136, 59, 255, 255, 0, 71, 255, 91, 1, 173, 1, 208, 2, 6, 0, 144, 0, 0, 255, + 255, 0, 30, 0, 0, 1, 214, 1, 208, 2, 6, 0, 89, 0, 0, 0, 1, 0, 64, 255, + 88, 1, 195, 2, 181, 0, 58, 0, 210, 185, 0, 58, 255, 224, 179, 15, 0, 77, 58, 184, + 255, 232, 179, 14, 0, 77, 54, 184, 255, 208, 179, 15, 0, 77, 54, 184, 255, 216, 179, 14, + 0, 77, 54, 184, 255, 248, 179, 13, 0, 77, 53, 184, 255, 216, 64, 52, 15, 0, 77, 29, + 16, 16, 0, 77, 28, 32, 16, 18, 0, 76, 28, 16, 9, 0, 77, 28, 32, 8, 0, 77, + 24, 40, 18, 0, 77, 24, 32, 16, 17, 0, 76, 17, 24, 16, 0, 77, 16, 40, 16, 0, + 77, 16, 24, 8, 10, 0, 76, 2, 184, 255, 240, 179, 14, 0, 77, 2, 184, 255, 224, 64, + 45, 13, 0, 77, 49, 49, 3, 34, 34, 12, 130, 3, 60, 23, 43, 130, 26, 26, 56, 130, + 0, 18, 1, 8, 18, 59, 23, 50, 133, 49, 49, 31, 0, 137, 15, 15, 59, 35, 35, 38, + 136, 31, 77, 7, 6, 75, 0, 63, 51, 63, 237, 50, 47, 17, 51, 47, 237, 17, 57, 47, + 237, 57, 1, 16, 214, 94, 93, 237, 51, 47, 237, 50, 16, 222, 237, 51, 47, 17, 51, 47, + 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, + 22, 22, 21, 20, 6, 7, 39, 62, 3, 53, 52, 38, 39, 38, 38, 53, 52, 62, 2, 55, + 38, 38, 53, 52, 62, 2, 51, 50, 22, 23, 7, 38, 38, 35, 34, 14, 2, 21, 20, 30, + 2, 51, 51, 21, 35, 34, 14, 2, 21, 20, 22, 1, 41, 86, 68, 27, 17, 71, 4, 11, + 11, 8, 54, 61, 95, 96, 28, 41, 47, 19, 51, 52, 32, 57, 77, 44, 45, 65, 14, 14, + 15, 53, 36, 36, 50, 32, 15, 24, 42, 58, 33, 68, 60, 23, 66, 63, 44, 76, 77, 15, + 56, 53, 35, 63, 23, 22, 6, 21, 25, 27, 12, 30, 24, 11, 15, 90, 82, 39, 59, 42, + 27, 7, 16, 83, 46, 44, 66, 45, 22, 13, 5, 71, 5, 13, 17, 29, 39, 22, 28, 42, + 27, 13, 70, 11, 30, 54, 43, 56, 53, 255, 255, 0, 40, 255, 245, 1, 204, 1, 219, 2, + 6, 0, 82, 0, 0, 255, 255, 0, 71, 0, 0, 1, 173, 1, 208, 2, 6, 2, 239, 0, + 0, 0, 2, 0, 71, 255, 91, 1, 204, 1, 218, 0, 16, 0, 31, 0, 162, 185, 0, 29, + 255, 240, 179, 16, 0, 77, 29, 184, 255, 232, 64, 29, 15, 0, 77, 27, 24, 16, 0, 77, + 27, 32, 15, 0, 77, 22, 24, 16, 0, 77, 22, 32, 15, 0, 77, 22, 8, 14, 0, 77, + 15, 184, 255, 240, 179, 10, 0, 77, 15, 184, 255, 232, 179, 9, 0, 77, 15, 184, 255, 224, + 179, 8, 0, 77, 11, 184, 255, 224, 179, 9, 0, 77, 11, 184, 255, 232, 64, 47, 8, 0, + 77, 8, 16, 17, 18, 0, 76, 8, 16, 10, 0, 77, 8, 32, 8, 0, 77, 7, 24, 9, + 0, 77, 25, 130, 12, 33, 3, 31, 127, 0, 6, 1, 8, 6, 32, 28, 136, 9, 80, 5, + 75, 20, 136, 0, 81, 0, 63, 237, 63, 63, 237, 1, 16, 214, 94, 93, 237, 50, 16, 222, + 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 5, + 34, 38, 39, 21, 35, 17, 52, 54, 51, 50, 22, 21, 20, 14, 2, 39, 22, 22, 51, 50, + 62, 2, 53, 52, 38, 35, 34, 6, 21, 1, 8, 35, 59, 17, 82, 96, 89, 99, 105, 26, + 51, 73, 157, 24, 54, 23, 31, 46, 30, 14, 54, 63, 50, 55, 11, 22, 11, 187, 1, 169, + 103, 111, 124, 119, 52, 89, 64, 37, 108, 20, 16, 26, 46, 62, 36, 81, 91, 76, 81, 0, + 1, 0, 63, 255, 88, 1, 191, 1, 220, 0, 38, 0, 122, 185, 0, 37, 255, 232, 179, 13, + 0, 77, 32, 184, 255, 224, 179, 13, 0, 77, 32, 184, 255, 232, 64, 30, 12, 0, 77, 23, + 16, 14, 0, 77, 18, 16, 14, 16, 0, 76, 17, 32, 14, 0, 77, 17, 24, 9, 0, 77, + 17, 16, 8, 0, 77, 2, 184, 255, 240, 64, 31, 15, 0, 77, 27, 27, 12, 130, 3, 40, + 34, 130, 0, 20, 1, 8, 20, 39, 0, 137, 15, 15, 39, 28, 28, 31, 136, 25, 80, 7, + 6, 75, 0, 63, 51, 63, 237, 50, 47, 17, 51, 47, 237, 1, 16, 214, 94, 93, 237, 16, + 222, 237, 51, 47, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 37, 22, 22, 21, 20, + 6, 7, 39, 62, 3, 53, 52, 38, 39, 46, 3, 53, 52, 62, 2, 51, 50, 23, 7, 38, + 38, 35, 34, 6, 21, 20, 30, 2, 1, 57, 75, 59, 27, 16, 72, 4, 11, 11, 8, 41, + 46, 62, 83, 50, 21, 31, 63, 94, 62, 72, 59, 18, 20, 54, 31, 85, 90, 26, 46, 60, + 72, 14, 54, 51, 35, 63, 23, 22, 6, 21, 25, 27, 12, 26, 25, 8, 11, 38, 56, 74, + 47, 50, 89, 68, 39, 22, 69, 8, 12, 96, 78, 46, 57, 33, 17, 0, 2, 0, 40, 255, + 244, 1, 217, 1, 208, 0, 20, 0, 39, 0, 197, 185, 0, 38, 255, 240, 179, 14, 0, 77, + 33, 184, 255, 224, 179, 14, 0, 77, 33, 184, 255, 240, 179, 13, 0, 77, 32, 184, 255, 232, + 64, 59, 12, 0, 77, 23, 16, 14, 0, 77, 16, 16, 16, 0, 77, 16, 32, 15, 0, 77, + 16, 8, 8, 0, 77, 15, 24, 16, 0, 77, 15, 16, 15, 0, 77, 11, 24, 16, 0, 77, + 11, 32, 15, 0, 77, 10, 16, 16, 0, 77, 10, 32, 15, 0, 77, 10, 16, 8, 0, 77, + 6, 184, 255, 224, 179, 16, 0, 77, 6, 184, 255, 240, 179, 15, 0, 77, 6, 184, 255, 224, + 179, 8, 0, 77, 5, 184, 255, 240, 179, 16, 0, 77, 5, 184, 255, 232, 179, 15, 0, 77, + 1, 184, 255, 232, 64, 23, 12, 0, 77, 26, 130, 3, 20, 20, 3, 41, 35, 130, 13, 40, + 0, 30, 133, 18, 73, 21, 136, 8, 81, 0, 63, 237, 63, 237, 50, 1, 16, 214, 237, 16, + 206, 50, 47, 16, 237, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 1, 22, 22, 21, 20, 14, 2, 35, 34, 46, 2, 53, + 52, 62, 2, 51, 51, 21, 3, 50, 62, 2, 53, 52, 38, 39, 35, 34, 14, 2, 21, 20, + 30, 2, 1, 123, 35, 33, 29, 54, 75, 45, 38, 74, 57, 35, 38, 65, 84, 47, 199, 229, + 29, 44, 30, 16, 37, 37, 18, 21, 51, 44, 30, 19, 33, 43, 1, 139, 43, 94, 45, 48, + 83, 60, 34, 29, 57, 87, 59, 66, 93, 58, 27, 69, 254, 179, 25, 42, 55, 31, 48, 96, + 36, 13, 38, 69, 55, 40, 60, 39, 19, 0, 1, 0, 63, 255, 245, 1, 194, 1, 208, 0, + 22, 0, 54, 64, 30, 5, 24, 11, 12, 0, 76, 13, 127, 8, 8, 9, 0, 0, 12, 24, + 0, 9, 1, 8, 9, 23, 13, 8, 133, 10, 73, 19, 136, 2, 81, 0, 63, 237, 63, 237, + 50, 1, 16, 198, 94, 93, 16, 206, 50, 47, 17, 57, 47, 237, 49, 48, 43, 37, 6, 35, + 34, 46, 2, 53, 53, 35, 53, 33, 21, 35, 21, 20, 30, 2, 51, 50, 54, 55, 1, 194, + 59, 63, 42, 63, 41, 21, 98, 1, 111, 187, 10, 22, 37, 26, 31, 46, 23, 15, 26, 17, + 42, 72, 55, 220, 69, 69, 214, 35, 45, 27, 11, 11, 11, 0, 1, 0, 71, 255, 246, 1, + 171, 1, 208, 0, 21, 0, 60, 64, 11, 12, 40, 18, 0, 77, 12, 32, 17, 0, 77, 10, + 184, 255, 216, 64, 23, 17, 18, 0, 76, 14, 127, 17, 23, 8, 127, 0, 5, 1, 8, 5, + 22, 15, 6, 73, 11, 136, 0, 81, 0, 63, 237, 63, 51, 1, 16, 214, 94, 93, 237, 16, + 222, 237, 49, 48, 43, 43, 43, 23, 34, 46, 2, 53, 17, 51, 17, 20, 22, 51, 50, 54, + 53, 17, 51, 17, 20, 14, 2, 249, 54, 69, 40, 15, 83, 48, 47, 48, 48, 82, 15, 40, + 69, 10, 36, 60, 76, 39, 1, 7, 254, 253, 78, 65, 65, 78, 1, 3, 254, 249, 39, 76, + 60, 36, 0, 3, 0, 26, 255, 91, 1, 218, 1, 216, 0, 6, 0, 13, 0, 36, 0, 148, + 185, 0, 34, 255, 240, 179, 16, 0, 77, 34, 184, 255, 224, 179, 15, 0, 77, 34, 184, 255, + 224, 179, 9, 0, 77, 33, 184, 255, 224, 179, 16, 0, 77, 33, 184, 255, 216, 64, 14, 10, + 0, 77, 18, 32, 16, 0, 77, 18, 16, 15, 0, 77, 5, 184, 255, 216, 179, 14, 0, 77, + 5, 184, 255, 224, 179, 13, 0, 77, 2, 184, 255, 216, 179, 14, 0, 77, 2, 184, 255, 232, + 64, 31, 13, 0, 77, 7, 36, 127, 3, 16, 16, 21, 10, 130, 31, 38, 0, 130, 21, 37, + 13, 4, 136, 26, 80, 7, 3, 136, 36, 16, 76, 15, 75, 0, 63, 63, 51, 237, 50, 63, + 237, 50, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 51, 237, 50, 49, 48, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 55, 20, 22, 23, 17, 6, 6, 23, 54, 54, 53, 52, + 38, 39, 17, 35, 53, 46, 3, 53, 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 7, + 108, 61, 44, 44, 61, 178, 44, 62, 62, 44, 73, 38, 67, 52, 30, 35, 61, 82, 47, 46, + 81, 61, 35, 30, 52, 68, 38, 232, 78, 85, 2, 1, 74, 2, 85, 243, 2, 85, 78, 78, + 85, 2, 253, 206, 162, 1, 32, 60, 87, 55, 60, 90, 60, 30, 30, 60, 90, 60, 55, 87, + 60, 32, 1, 255, 255, 0, 29, 0, 0, 1, 216, 1, 208, 2, 6, 0, 91, 0, 0, 0, + 1, 0, 37, 255, 91, 1, 206, 1, 208, 0, 27, 0, 118, 185, 0, 25, 255, 232, 180, 15, + 16, 0, 76, 25, 184, 255, 232, 64, 10, 13, 0, 77, 17, 16, 17, 18, 0, 76, 10, 184, + 255, 224, 179, 18, 0, 77, 10, 184, 255, 232, 179, 17, 0, 77, 10, 184, 255, 232, 179, 10, + 0, 77, 10, 184, 255, 224, 64, 31, 9, 0, 77, 12, 0, 127, 15, 27, 27, 20, 4, 127, + 7, 29, 23, 127, 20, 28, 27, 27, 5, 21, 73, 1, 26, 136, 12, 15, 81, 14, 75, 0, + 63, 63, 51, 237, 50, 63, 51, 51, 47, 1, 16, 214, 237, 16, 222, 237, 17, 57, 47, 51, + 237, 50, 49, 48, 43, 43, 43, 43, 43, 43, 43, 1, 17, 54, 54, 53, 53, 51, 21, 20, + 14, 2, 7, 21, 35, 53, 46, 3, 53, 53, 51, 21, 20, 22, 23, 17, 1, 30, 49, 45, + 82, 20, 43, 67, 46, 73, 47, 66, 43, 20, 82, 44, 50, 1, 101, 254, 215, 4, 87, 95, + 218, 230, 52, 88, 64, 38, 2, 155, 155, 2, 38, 65, 88, 51, 230, 218, 95, 87, 4, 1, + 41, 0, 1, 0, 36, 255, 247, 1, 210, 1, 218, 0, 52, 0, 131, 185, 0, 51, 255, 240, + 180, 12, 13, 0, 76, 51, 184, 255, 232, 64, 10, 11, 0, 77, 41, 16, 17, 18, 0, 76, + 18, 184, 255, 240, 64, 63, 17, 18, 0, 76, 8, 16, 12, 0, 77, 8, 24, 11, 0, 77, + 3, 30, 127, 29, 29, 11, 15, 42, 31, 42, 175, 42, 191, 42, 4, 42, 42, 37, 130, 48, + 54, 0, 17, 16, 17, 160, 17, 176, 17, 4, 17, 17, 22, 130, 11, 53, 43, 16, 29, 29, + 16, 80, 34, 3, 25, 136, 0, 6, 81, 0, 63, 51, 237, 50, 50, 63, 51, 47, 17, 51, + 1, 16, 214, 237, 50, 47, 93, 16, 222, 237, 50, 47, 93, 17, 57, 47, 237, 57, 49, 48, + 43, 43, 43, 43, 43, 43, 5, 34, 38, 39, 6, 6, 35, 34, 46, 2, 53, 52, 62, 2, + 55, 23, 14, 3, 21, 20, 22, 51, 50, 54, 53, 53, 51, 21, 20, 22, 51, 50, 54, 53, + 52, 46, 2, 39, 55, 30, 3, 21, 20, 14, 2, 1, 86, 27, 48, 16, 16, 49, 26, 35, + 47, 29, 13, 13, 23, 32, 20, 74, 20, 29, 21, 10, 19, 25, 23, 29, 74, 29, 23, 25, + 19, 10, 21, 30, 19, 74, 19, 33, 23, 13, 13, 29, 48, 9, 34, 37, 37, 34, 31, 53, + 71, 39, 39, 83, 77, 66, 24, 26, 27, 68, 73, 74, 32, 48, 63, 65, 63, 87, 87, 63, + 65, 63, 48, 32, 74, 73, 68, 27, 26, 24, 66, 77, 83, 39, 39, 71, 53, 31, 255, 255, + 0, 9, 0, 0, 1, 235, 2, 121, 2, 38, 0, 36, 0, 0, 1, 7, 3, 210, 255, 62, + 0, 0, 0, 13, 185, 0, 2, 255, 79, 180, 25, 23, 4, 15, 80, 43, 52, 0, 255, 255, + 255, 188, 0, 0, 1, 204, 2, 121, 2, 55, 3, 210, 254, 238, 0, 0, 0, 6, 0, 40, + 0, 0, 255, 255, 255, 136, 0, 0, 1, 199, 2, 121, 2, 38, 0, 43, 0, 0, 1, 7, + 3, 210, 254, 186, 0, 0, 0, 13, 185, 0, 1, 254, 203, 180, 14, 12, 7, 1, 80, 43, + 52, 0, 255, 255, 255, 182, 0, 0, 1, 155, 2, 121, 2, 38, 0, 44, 0, 0, 1, 7, + 3, 210, 254, 232, 0, 0, 0, 13, 185, 0, 1, 254, 249, 180, 14, 12, 4, 2, 80, 43, + 52, 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, 26, 2, 38, 0, 44, 0, 0, 1, 7, + 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, 14, 32, 4, 2, 80, 2, 9, + 24, 79, 1, 9, 12, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 255, 184, 255, 243, + 1, 216, 2, 121, 2, 55, 3, 210, 254, 234, 0, 0, 0, 6, 0, 50, 0, 0, 255, 255, + 255, 126, 0, 0, 1, 232, 2, 121, 2, 55, 3, 210, 254, 176, 0, 0, 0, 6, 0, 60, + 0, 0, 255, 255, 0, 13, 0, 0, 1, 232, 3, 26, 2, 38, 0, 60, 0, 0, 1, 7, + 0, 131, 0, 0, 0, 139, 0, 23, 64, 16, 2, 1, 0, 19, 37, 4, 12, 80, 2, 4, + 29, 79, 1, 4, 17, 79, 43, 43, 43, 52, 52, 0, 0, 0, 255, 255, 255, 182, 0, 0, + 1, 226, 2, 121, 2, 38, 3, 163, 0, 0, 1, 7, 3, 210, 254, 232, 0, 0, 0, 13, + 185, 0, 1, 254, 249, 180, 46, 44, 0, 18, 80, 43, 52, 0, 255, 255, 0, 49, 255, 246, + 1, 215, 2, 187, 2, 38, 3, 164, 0, 0, 1, 6, 3, 209, 30, 0, 0, 16, 64, 11, + 2, 16, 46, 44, 20, 9, 80, 2, 0, 45, 79, 43, 43, 52, 255, 255, 0, 69, 255, 245, + 1, 210, 2, 187, 2, 38, 3, 168, 0, 0, 1, 6, 3, 209, 43, 0, 0, 16, 64, 11, + 1, 22, 56, 54, 42, 35, 80, 1, 0, 55, 79, 43, 43, 52, 255, 255, 0, 71, 255, 91, + 1, 176, 2, 187, 2, 38, 3, 170, 0, 0, 1, 6, 3, 209, 22, 0, 0, 16, 64, 11, + 1, 17, 22, 20, 0, 5, 80, 1, 2, 21, 79, 43, 43, 52, 255, 255, 0, 54, 255, 245, + 1, 194, 2, 187, 2, 38, 3, 172, 0, 0, 1, 6, 3, 209, 9, 0, 0, 16, 64, 11, + 1, 3, 24, 22, 10, 0, 80, 1, 11, 23, 79, 43, 43, 52, 255, 255, 0, 54, 255, 245, + 1, 194, 2, 143, 2, 38, 3, 172, 0, 0, 1, 6, 0, 131, 221, 0, 0, 26, 177, 2, + 1, 184, 255, 219, 64, 13, 24, 42, 10, 0, 80, 2, 11, 34, 79, 1, 11, 22, 79, 43, + 43, 43, 52, 52, 0, 0, 255, 255, 0, 38, 255, 245, 1, 194, 2, 185, 2, 38, 3, 172, + 0, 0, 1, 6, 3, 211, 230, 0, 0, 33, 178, 3, 2, 1, 184, 255, 219, 64, 17, 40, + 34, 10, 0, 80, 3, 11, 38, 79, 2, 11, 26, 79, 1, 11, 23, 79, 43, 43, 43, 43, + 52, 52, 52, 0, 0, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 187, 2, 38, 0, 82, + 0, 0, 1, 6, 3, 209, 22, 0, 0, 16, 64, 11, 2, 18, 34, 32, 9, 0, 80, 2, + 14, 33, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, 1, 171, 2, 143, 2, 38, 3, 184, + 0, 0, 1, 6, 0, 131, 0, 0, 0, 23, 64, 16, 2, 1, 1, 24, 42, 4, 16, 80, + 2, 6, 34, 79, 1, 6, 22, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 71, 255, 246, + 1, 171, 2, 187, 2, 38, 3, 184, 0, 0, 1, 6, 3, 209, 22, 0, 0, 16, 64, 11, + 1, 19, 24, 22, 4, 16, 80, 1, 6, 23, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, + 1, 171, 2, 185, 2, 38, 3, 184, 0, 0, 1, 6, 3, 211, 9, 0, 0, 30, 64, 21, + 3, 2, 1, 1, 40, 34, 4, 16, 80, 3, 6, 38, 79, 2, 6, 26, 79, 1, 6, 23, + 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 36, 255, 247, 1, 210, 2, 187, + 2, 38, 3, 188, 0, 0, 1, 6, 3, 209, 25, 0, 0, 16, 64, 11, 1, 20, 55, 53, + 10, 47, 80, 1, 16, 54, 79, 43, 43, 52, 0, 1, 0, 164, 2, 1, 1, 73, 2, 187, + 0, 3, 0, 27, 64, 9, 3, 0, 1, 2, 0, 3, 128, 2, 1, 0, 47, 51, 26, 205, + 50, 1, 47, 25, 197, 24, 221, 25, 197, 49, 48, 1, 7, 39, 55, 1, 73, 116, 49, 101, + 2, 143, 142, 34, 152, 0, 1, 0, 206, 1, 183, 1, 72, 2, 121, 0, 3, 0, 18, 182, + 3, 0, 1, 2, 1, 3, 69, 0, 63, 205, 1, 47, 205, 221, 205, 49, 48, 1, 7, 39, + 55, 1, 72, 61, 61, 41, 2, 101, 174, 15, 179, 0, 3, 0, 64, 2, 4, 1, 162, 2, + 185, 0, 3, 0, 15, 0, 27, 0, 48, 64, 21, 13, 7, 25, 3, 0, 1, 2, 2, 19, + 25, 10, 22, 64, 4, 16, 16, 0, 3, 128, 2, 1, 0, 47, 51, 26, 205, 50, 51, 47, + 51, 26, 205, 50, 1, 47, 205, 51, 47, 51, 205, 50, 16, 220, 205, 49, 48, 1, 7, 39, + 55, 23, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 33, 34, 38, 53, 52, 54, 51, + 50, 22, 21, 20, 6, 1, 55, 93, 47, 80, 119, 21, 28, 28, 21, 20, 28, 28, 254, 235, + 20, 29, 29, 20, 20, 28, 28, 2, 146, 142, 28, 153, 142, 26, 23, 22, 27, 27, 22, 23, + 26, 26, 23, 22, 27, 27, 22, 23, 26, 255, 255, 0, 49, 255, 246, 1, 215, 2, 185, 2, + 38, 3, 164, 0, 0, 1, 6, 4, 130, 0, 0, 0, 19, 185, 0, 2, 255, 246, 64, 9, + 44, 55, 20, 9, 80, 2, 0, 61, 79, 43, 43, 52, 0, 255, 255, 0, 49, 255, 246, 1, + 215, 2, 185, 2, 38, 3, 164, 0, 0, 1, 6, 4, 188, 9, 0, 0, 19, 185, 0, 2, + 255, 255, 64, 9, 48, 60, 20, 9, 80, 2, 0, 44, 79, 43, 43, 52, 0, 255, 255, 0, + 49, 255, 246, 1, 215, 2, 187, 2, 38, 3, 164, 0, 0, 1, 6, 4, 145, 0, 0, 0, + 26, 177, 3, 2, 184, 255, 246, 64, 13, 44, 63, 20, 9, 80, 3, 0, 64, 79, 2, 0, + 61, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 49, 255, 246, 1, 215, 2, 187, 2, + 38, 3, 164, 0, 0, 1, 6, 4, 158, 0, 0, 0, 26, 177, 3, 2, 184, 255, 246, 64, + 13, 46, 61, 20, 9, 80, 3, 0, 62, 79, 2, 0, 44, 79, 43, 43, 43, 52, 52, 0, + 0, 255, 255, 0, 49, 255, 246, 1, 215, 2, 187, 2, 38, 3, 164, 0, 0, 1, 6, 4, + 146, 36, 0, 0, 23, 64, 16, 3, 2, 26, 44, 62, 20, 9, 80, 3, 0, 63, 79, 2, + 0, 61, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 49, 255, 246, 1, 215, 2, 187, 2, + 38, 3, 164, 0, 0, 1, 6, 4, 159, 18, 0, 0, 23, 64, 16, 3, 2, 8, 46, 60, + 20, 9, 80, 3, 0, 61, 79, 2, 0, 44, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, + 49, 255, 246, 1, 215, 3, 19, 2, 38, 3, 164, 0, 0, 1, 6, 4, 147, 18, 0, 0, + 23, 64, 16, 3, 2, 8, 75, 65, 20, 9, 80, 3, 0, 67, 79, 2, 0, 60, 79, 43, + 43, 43, 52, 52, 0, 255, 255, 0, 49, 255, 246, 1, 215, 3, 19, 2, 38, 3, 164, 0, + 0, 1, 6, 4, 160, 0, 0, 0, 26, 177, 3, 2, 184, 255, 246, 64, 13, 75, 65, 20, + 9, 80, 3, 0, 67, 79, 2, 0, 44, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, + 6, 0, 0, 1, 235, 2, 122, 2, 38, 0, 36, 0, 0, 1, 7, 4, 130, 255, 77, 255, + 193, 0, 13, 185, 0, 2, 255, 77, 180, 23, 34, 4, 15, 80, 43, 52, 0, 255, 255, 255, + 245, 0, 0, 1, 235, 2, 122, 2, 38, 0, 36, 0, 0, 1, 7, 4, 188, 255, 60, 255, + 193, 0, 13, 185, 0, 2, 255, 60, 180, 27, 39, 4, 15, 80, 43, 52, 0, 255, 255, 255, + 69, 0, 0, 1, 235, 2, 124, 2, 38, 0, 36, 0, 0, 1, 7, 4, 145, 254, 229, 255, + 193, 0, 15, 177, 3, 2, 184, 254, 229, 180, 23, 42, 4, 15, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 255, 88, 0, 0, 1, 235, 2, 124, 2, 38, 0, 36, 0, 0, 1, 7, 4, + 158, 254, 239, 255, 193, 0, 15, 177, 3, 2, 184, 254, 239, 180, 25, 40, 4, 15, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 255, 120, 0, 0, 1, 235, 2, 124, 2, 38, 0, 36, 0, + 0, 1, 7, 4, 146, 255, 14, 255, 193, 0, 15, 177, 3, 2, 184, 255, 14, 180, 23, 41, + 4, 15, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 98, 0, 0, 1, 235, 2, 124, 2, + 38, 0, 36, 0, 0, 1, 7, 4, 159, 255, 2, 255, 193, 0, 15, 177, 3, 2, 184, 255, + 2, 180, 25, 39, 4, 15, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 174, 0, 0, 1, + 235, 2, 180, 2, 38, 0, 36, 0, 0, 1, 7, 4, 147, 255, 43, 255, 161, 0, 15, 177, + 3, 2, 184, 255, 43, 180, 54, 44, 4, 15, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, + 164, 0, 0, 1, 235, 2, 180, 2, 38, 0, 36, 0, 0, 1, 7, 4, 160, 255, 33, 255, + 161, 0, 15, 177, 3, 2, 184, 255, 33, 180, 54, 44, 4, 15, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 69, 255, 245, 1, 210, 2, 185, 2, 38, 3, 168, 0, 0, 1, 6, 4, + 130, 27, 0, 0, 16, 64, 11, 1, 9, 54, 65, 42, 35, 80, 1, 0, 71, 79, 43, 43, + 52, 255, 255, 0, 69, 255, 245, 1, 210, 2, 185, 2, 38, 3, 168, 0, 0, 1, 6, 4, + 188, 9, 0, 0, 19, 185, 0, 1, 255, 247, 64, 9, 58, 70, 42, 35, 80, 1, 0, 54, + 79, 43, 43, 52, 0, 255, 255, 0, 69, 255, 245, 1, 210, 2, 187, 2, 38, 3, 168, 0, + 0, 1, 6, 4, 145, 36, 0, 0, 23, 64, 16, 2, 1, 18, 54, 73, 42, 35, 80, 2, + 0, 74, 79, 1, 0, 71, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 69, 255, 245, 1, + 210, 2, 187, 2, 38, 3, 168, 0, 0, 1, 6, 4, 158, 0, 0, 0, 26, 177, 2, 1, + 184, 255, 239, 64, 13, 56, 71, 42, 35, 80, 2, 0, 72, 79, 1, 0, 54, 79, 43, 43, + 43, 52, 52, 0, 0, 255, 255, 0, 69, 255, 245, 1, 210, 2, 187, 2, 38, 3, 168, 0, + 0, 1, 6, 4, 146, 0, 0, 0, 26, 177, 2, 1, 184, 255, 239, 64, 13, 54, 72, 42, + 35, 80, 2, 0, 73, 79, 1, 0, 71, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, + 69, 255, 245, 1, 210, 2, 187, 2, 38, 3, 168, 0, 0, 1, 6, 4, 159, 18, 0, 0, + 23, 64, 16, 2, 1, 0, 56, 70, 42, 35, 80, 2, 0, 71, 79, 1, 0, 54, 79, 43, + 43, 43, 52, 52, 0, 255, 255, 255, 177, 0, 0, 1, 204, 2, 122, 2, 38, 0, 40, 0, + 0, 1, 7, 4, 130, 254, 248, 255, 193, 0, 13, 185, 0, 1, 254, 222, 180, 12, 23, 0, + 10, 80, 43, 52, 0, 255, 255, 255, 181, 0, 0, 1, 204, 2, 122, 2, 38, 0, 40, 0, + 0, 1, 7, 4, 188, 254, 252, 255, 193, 0, 13, 185, 0, 1, 254, 226, 180, 16, 28, 0, + 10, 80, 43, 52, 0, 255, 255, 255, 7, 0, 0, 1, 204, 2, 124, 2, 38, 0, 40, 0, + 0, 1, 7, 4, 145, 254, 167, 255, 193, 0, 15, 177, 2, 1, 184, 254, 142, 180, 12, 31, + 0, 10, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 25, 0, 0, 1, 204, 2, 124, 2, + 38, 0, 40, 0, 0, 1, 7, 4, 158, 254, 176, 255, 193, 0, 15, 177, 2, 1, 184, 254, + 151, 180, 14, 29, 0, 10, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 26, 0, 0, 1, + 204, 2, 124, 2, 38, 0, 40, 0, 0, 1, 7, 4, 146, 254, 176, 255, 193, 0, 15, 177, + 2, 1, 184, 254, 151, 180, 12, 30, 0, 10, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, + 7, 0, 0, 1, 204, 2, 124, 2, 38, 0, 40, 0, 0, 1, 7, 4, 159, 254, 167, 255, + 193, 0, 15, 177, 2, 1, 184, 254, 142, 180, 14, 28, 0, 10, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 71, 255, 91, 1, 176, 2, 185, 2, 38, 3, 170, 0, 0, 1, 6, 4, + 130, 0, 0, 0, 19, 185, 0, 1, 255, 254, 64, 9, 20, 31, 0, 5, 80, 1, 2, 37, + 79, 43, 43, 52, 0, 255, 255, 0, 71, 255, 91, 1, 176, 2, 185, 2, 38, 3, 170, 0, + 0, 1, 6, 4, 188, 9, 0, 0, 16, 64, 11, 1, 7, 24, 36, 0, 5, 80, 1, 2, + 20, 79, 43, 43, 52, 255, 255, 0, 71, 255, 91, 1, 176, 2, 187, 2, 38, 3, 170, 0, + 0, 1, 6, 4, 145, 0, 0, 0, 26, 177, 2, 1, 184, 255, 255, 64, 13, 20, 39, 0, + 5, 80, 2, 2, 40, 79, 1, 2, 37, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, + 71, 255, 91, 1, 176, 2, 187, 2, 38, 3, 170, 0, 0, 1, 6, 4, 158, 0, 0, 0, + 26, 177, 2, 1, 184, 255, 255, 64, 13, 22, 37, 0, 5, 80, 2, 2, 38, 79, 1, 2, + 20, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 71, 255, 91, 1, 176, 2, 187, 2, + 38, 3, 170, 0, 0, 1, 6, 4, 146, 0, 0, 0, 26, 177, 2, 1, 184, 255, 255, 64, + 13, 20, 38, 0, 5, 80, 2, 2, 39, 79, 1, 2, 37, 79, 43, 43, 43, 52, 52, 0, + 0, 255, 255, 0, 71, 255, 91, 1, 176, 2, 187, 2, 38, 3, 170, 0, 0, 1, 6, 4, + 159, 18, 0, 0, 23, 64, 16, 2, 1, 16, 22, 36, 0, 5, 80, 2, 2, 37, 79, 1, + 2, 20, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 71, 255, 91, 1, 176, 3, 19, 2, + 38, 3, 170, 0, 0, 1, 6, 4, 147, 0, 0, 0, 26, 177, 2, 1, 184, 255, 255, 64, + 13, 51, 41, 0, 5, 80, 2, 2, 43, 79, 1, 2, 36, 79, 43, 43, 43, 52, 52, 0, + 0, 255, 255, 0, 71, 255, 91, 1, 176, 3, 19, 2, 38, 3, 170, 0, 0, 1, 6, 4, + 160, 0, 0, 0, 26, 177, 2, 1, 184, 255, 255, 64, 13, 51, 41, 0, 5, 80, 2, 2, + 43, 79, 1, 2, 20, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 255, 131, 0, 0, 1, + 199, 2, 122, 2, 38, 0, 43, 0, 0, 1, 7, 4, 130, 254, 202, 255, 193, 0, 13, 185, + 0, 1, 254, 202, 180, 12, 23, 7, 1, 80, 43, 52, 0, 255, 255, 255, 136, 0, 0, 1, + 199, 2, 122, 2, 38, 0, 43, 0, 0, 1, 7, 4, 188, 254, 207, 255, 193, 0, 13, 185, + 0, 1, 254, 207, 180, 16, 28, 7, 1, 80, 43, 52, 0, 255, 255, 254, 217, 0, 0, 1, + 199, 2, 124, 2, 38, 0, 43, 0, 0, 1, 7, 4, 145, 254, 121, 255, 193, 0, 15, 177, + 2, 1, 184, 254, 121, 180, 12, 31, 7, 1, 80, 43, 52, 52, 0, 0, 0, 255, 255, 254, + 234, 0, 0, 1, 199, 2, 124, 2, 38, 0, 43, 0, 0, 1, 7, 4, 158, 254, 129, 255, + 193, 0, 15, 177, 2, 1, 184, 254, 129, 180, 14, 29, 7, 1, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 254, 236, 0, 0, 1, 199, 2, 124, 2, 38, 0, 43, 0, 0, 1, 7, 4, + 146, 254, 130, 255, 193, 0, 15, 177, 2, 1, 184, 254, 130, 180, 12, 30, 7, 1, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 254, 217, 0, 0, 1, 199, 2, 124, 2, 38, 0, 43, 0, + 0, 1, 7, 4, 159, 254, 121, 255, 193, 0, 15, 177, 2, 1, 184, 254, 121, 180, 14, 28, + 7, 1, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 26, 0, 0, 1, 199, 2, 180, 2, + 38, 0, 43, 0, 0, 1, 7, 4, 147, 254, 151, 255, 161, 0, 15, 177, 2, 1, 184, 254, + 151, 180, 43, 33, 7, 1, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 26, 0, 0, 1, + 199, 2, 180, 2, 38, 0, 43, 0, 0, 1, 7, 4, 160, 254, 151, 255, 161, 0, 15, 177, + 2, 1, 184, 254, 151, 180, 43, 33, 7, 1, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, + 54, 255, 245, 1, 194, 2, 185, 2, 38, 3, 172, 0, 0, 1, 6, 4, 130, 221, 0, 0, + 19, 185, 0, 1, 255, 219, 64, 9, 22, 33, 10, 0, 80, 1, 11, 39, 79, 43, 43, 52, + 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 185, 2, 38, 3, 172, 0, 0, 1, 6, 4, + 188, 230, 0, 0, 19, 185, 0, 1, 255, 228, 64, 9, 26, 38, 10, 0, 80, 1, 11, 22, + 79, 43, 43, 52, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 187, 2, 38, 3, 172, 0, + 0, 1, 6, 4, 145, 230, 0, 0, 26, 177, 2, 1, 184, 255, 228, 64, 13, 22, 41, 10, + 0, 80, 2, 11, 42, 79, 1, 11, 39, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, + 54, 255, 245, 1, 194, 2, 187, 2, 38, 3, 172, 0, 0, 1, 6, 4, 158, 230, 0, 0, + 26, 177, 2, 1, 184, 255, 228, 64, 13, 24, 39, 10, 0, 80, 2, 11, 40, 79, 1, 11, + 22, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 187, 2, + 38, 3, 172, 0, 0, 1, 6, 4, 146, 248, 0, 0, 26, 177, 2, 1, 184, 255, 246, 64, + 13, 22, 40, 10, 0, 80, 2, 11, 41, 79, 1, 11, 39, 79, 43, 43, 43, 52, 52, 0, + 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 187, 2, 38, 3, 172, 0, 0, 1, 6, 4, + 159, 239, 0, 0, 26, 177, 2, 1, 184, 255, 237, 64, 13, 24, 38, 10, 0, 80, 2, 11, + 39, 79, 1, 11, 22, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 54, 255, 245, 1, + 194, 3, 19, 2, 38, 3, 172, 0, 0, 1, 6, 4, 147, 230, 0, 0, 26, 177, 2, 1, + 184, 255, 228, 64, 13, 53, 43, 10, 0, 80, 2, 11, 45, 79, 1, 11, 38, 79, 43, 43, + 43, 52, 52, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 3, 19, 2, 38, 3, 172, 0, + 0, 1, 6, 4, 160, 230, 0, 0, 26, 177, 2, 1, 184, 255, 228, 64, 13, 53, 43, 10, + 0, 80, 2, 11, 45, 79, 1, 11, 22, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 255, + 176, 0, 0, 1, 155, 2, 122, 2, 38, 0, 44, 0, 0, 1, 7, 4, 130, 254, 247, 255, + 193, 0, 13, 185, 0, 1, 254, 247, 180, 12, 23, 4, 2, 80, 43, 52, 0, 255, 255, 255, + 180, 0, 0, 1, 155, 2, 122, 2, 38, 0, 44, 0, 0, 1, 7, 4, 188, 254, 251, 255, + 193, 0, 13, 185, 0, 1, 254, 251, 180, 16, 28, 4, 2, 80, 43, 52, 0, 255, 255, 255, + 6, 0, 0, 1, 155, 2, 124, 2, 38, 0, 44, 0, 0, 1, 7, 4, 145, 254, 166, 255, + 193, 0, 15, 177, 2, 1, 184, 254, 166, 180, 12, 31, 4, 2, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 255, 24, 0, 0, 1, 155, 2, 124, 2, 38, 0, 44, 0, 0, 1, 7, 4, + 158, 254, 175, 255, 193, 0, 15, 177, 2, 1, 184, 254, 175, 180, 14, 29, 4, 2, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 255, 25, 0, 0, 1, 155, 2, 124, 2, 38, 0, 44, 0, + 0, 1, 7, 4, 146, 254, 175, 255, 193, 0, 15, 177, 2, 1, 184, 254, 175, 180, 12, 30, + 4, 2, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 6, 0, 0, 1, 155, 2, 124, 2, + 38, 0, 44, 0, 0, 1, 7, 4, 159, 254, 166, 255, 193, 0, 15, 177, 2, 1, 184, 254, + 166, 180, 14, 28, 4, 2, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 72, 0, 0, 1, + 155, 2, 180, 2, 38, 0, 44, 0, 0, 1, 7, 4, 147, 254, 197, 255, 161, 0, 15, 177, + 2, 1, 184, 254, 197, 180, 43, 33, 4, 2, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, + 72, 0, 0, 1, 155, 2, 180, 2, 38, 0, 44, 0, 0, 1, 7, 4, 160, 254, 197, 255, + 161, 0, 15, 177, 2, 1, 184, 254, 197, 180, 43, 33, 4, 2, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 185, 2, 38, 0, 82, 0, 0, 1, 6, 4, + 130, 0, 0, 0, 16, 64, 11, 2, 0, 32, 43, 9, 0, 80, 2, 14, 49, 79, 43, 43, + 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 185, 2, 38, 0, 82, 0, 0, 1, 6, 4, + 188, 9, 0, 0, 16, 64, 11, 2, 8, 36, 48, 9, 0, 80, 2, 14, 32, 79, 43, 43, + 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 187, 2, 38, 0, 82, 0, 0, 1, 6, 4, + 145, 0, 0, 0, 23, 64, 16, 3, 2, 0, 32, 51, 9, 0, 80, 3, 14, 52, 79, 2, + 14, 49, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 187, 2, + 38, 0, 82, 0, 0, 1, 6, 4, 158, 0, 0, 0, 23, 64, 16, 3, 2, 0, 34, 49, + 9, 0, 80, 3, 14, 50, 79, 2, 14, 32, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, + 40, 255, 245, 1, 204, 2, 187, 2, 38, 0, 82, 0, 0, 1, 6, 4, 146, 0, 0, 0, + 23, 64, 16, 3, 2, 0, 32, 50, 9, 0, 80, 3, 14, 51, 79, 2, 14, 49, 79, 43, + 43, 43, 52, 52, 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 187, 2, 38, 0, 82, 0, + 0, 1, 6, 4, 159, 18, 0, 0, 23, 64, 16, 3, 2, 18, 34, 48, 9, 0, 80, 3, + 14, 49, 79, 2, 14, 32, 79, 43, 43, 43, 52, 52, 0, 255, 255, 255, 162, 255, 243, 1, + 216, 2, 122, 2, 38, 0, 50, 0, 0, 1, 7, 4, 130, 254, 233, 255, 193, 0, 13, 185, + 0, 2, 254, 232, 180, 32, 43, 0, 9, 80, 43, 52, 0, 255, 255, 255, 134, 255, 243, 1, + 216, 2, 122, 2, 38, 0, 50, 0, 0, 1, 7, 4, 188, 254, 205, 255, 193, 0, 13, 185, + 0, 2, 254, 204, 180, 36, 48, 0, 9, 80, 43, 52, 0, 255, 255, 254, 214, 255, 243, 1, + 216, 2, 124, 2, 38, 0, 50, 0, 0, 1, 7, 4, 145, 254, 118, 255, 193, 0, 15, 177, + 3, 2, 184, 254, 118, 180, 32, 51, 0, 9, 80, 43, 52, 52, 0, 0, 0, 255, 255, 254, + 232, 255, 243, 1, 216, 2, 124, 2, 38, 0, 50, 0, 0, 1, 7, 4, 158, 254, 127, 255, + 193, 0, 15, 177, 3, 2, 184, 254, 127, 180, 34, 49, 0, 9, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 255, 25, 255, 243, 1, 216, 2, 124, 2, 38, 0, 50, 0, 0, 1, 7, 4, + 146, 254, 175, 255, 193, 0, 15, 177, 3, 2, 184, 254, 175, 180, 32, 50, 0, 9, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 255, 4, 255, 243, 1, 216, 2, 124, 2, 38, 0, 50, 0, + 0, 1, 7, 4, 159, 254, 164, 255, 193, 0, 15, 177, 3, 2, 184, 254, 164, 180, 34, 48, + 0, 9, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, 71, 255, 246, 1, 171, 2, 185, 2, + 38, 3, 184, 0, 0, 1, 6, 4, 130, 0, 0, 0, 16, 64, 11, 1, 0, 22, 33, 4, + 16, 80, 1, 6, 39, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, 1, 171, 2, 185, 2, + 38, 3, 184, 0, 0, 1, 6, 4, 188, 9, 0, 0, 16, 64, 11, 1, 9, 26, 38, 4, + 16, 80, 1, 6, 22, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, 1, 171, 2, 187, 2, + 38, 3, 184, 0, 0, 1, 6, 4, 145, 0, 0, 0, 23, 64, 16, 2, 1, 1, 22, 41, + 4, 16, 80, 2, 6, 42, 79, 1, 6, 39, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, + 71, 255, 246, 1, 171, 2, 187, 2, 38, 3, 184, 0, 0, 1, 6, 4, 158, 0, 0, 0, + 23, 64, 16, 2, 1, 1, 24, 39, 4, 16, 80, 2, 6, 40, 79, 1, 6, 22, 79, 43, + 43, 43, 52, 52, 0, 255, 255, 0, 71, 255, 246, 1, 171, 2, 187, 2, 38, 3, 184, 0, + 0, 1, 6, 4, 146, 0, 0, 0, 23, 64, 16, 2, 1, 1, 22, 40, 4, 16, 80, 2, + 6, 41, 79, 1, 6, 39, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 71, 255, 246, 1, + 171, 2, 187, 2, 38, 3, 184, 0, 0, 1, 6, 4, 159, 18, 0, 0, 23, 64, 16, 2, + 1, 19, 24, 38, 4, 16, 80, 2, 6, 39, 79, 1, 6, 22, 79, 43, 43, 43, 52, 52, + 0, 255, 255, 0, 71, 255, 246, 1, 171, 3, 19, 2, 38, 3, 184, 0, 0, 1, 6, 4, + 147, 0, 0, 0, 23, 64, 16, 2, 1, 1, 53, 43, 4, 16, 80, 2, 6, 45, 79, 1, + 6, 38, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, 71, 255, 246, 1, 171, 3, 19, 2, + 38, 3, 184, 0, 0, 1, 6, 4, 160, 0, 0, 0, 23, 64, 16, 2, 1, 1, 53, 43, + 4, 16, 80, 2, 6, 45, 79, 1, 6, 22, 79, 43, 43, 43, 52, 52, 0, 255, 255, 255, + 133, 0, 0, 1, 232, 2, 122, 2, 38, 0, 60, 0, 0, 1, 7, 4, 188, 254, 204, 255, + 193, 0, 13, 185, 0, 1, 254, 203, 180, 21, 33, 4, 12, 80, 43, 52, 0, 255, 255, 254, + 243, 0, 0, 1, 232, 2, 124, 2, 38, 0, 60, 0, 0, 1, 7, 4, 158, 254, 138, 255, + 193, 0, 15, 177, 2, 1, 184, 254, 138, 180, 19, 34, 4, 12, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 254, 196, 0, 0, 1, 232, 2, 124, 2, 38, 0, 60, 0, 0, 1, 7, 4, + 159, 254, 100, 255, 193, 0, 15, 177, 2, 1, 184, 254, 100, 180, 19, 33, 4, 12, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 254, 255, 0, 0, 1, 232, 2, 180, 2, 38, 0, 60, 0, + 0, 1, 7, 4, 160, 254, 124, 255, 161, 0, 15, 177, 2, 1, 184, 254, 124, 180, 48, 38, + 4, 12, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, 36, 255, 247, 1, 210, 2, 185, 2, + 38, 3, 188, 0, 0, 1, 6, 4, 130, 0, 0, 0, 19, 185, 0, 1, 255, 255, 64, 9, + 53, 64, 10, 47, 80, 1, 16, 70, 79, 43, 43, 52, 0, 255, 255, 0, 36, 255, 247, 1, + 210, 2, 185, 2, 38, 3, 188, 0, 0, 1, 6, 4, 188, 9, 0, 0, 16, 64, 11, 1, + 7, 57, 69, 10, 47, 80, 1, 16, 53, 79, 43, 43, 52, 255, 255, 0, 36, 255, 247, 1, + 210, 2, 187, 2, 38, 3, 188, 0, 0, 1, 6, 4, 145, 0, 0, 0, 26, 177, 2, 1, + 184, 255, 255, 64, 13, 53, 72, 10, 47, 80, 2, 16, 73, 79, 1, 16, 70, 79, 43, 43, + 43, 52, 52, 0, 0, 255, 255, 0, 36, 255, 247, 1, 210, 2, 187, 2, 38, 3, 188, 0, + 0, 1, 6, 4, 158, 0, 0, 0, 26, 177, 2, 1, 184, 255, 255, 64, 13, 55, 70, 10, + 47, 80, 2, 16, 71, 79, 1, 16, 53, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, + 36, 255, 247, 1, 210, 2, 187, 2, 38, 3, 188, 0, 0, 1, 6, 4, 146, 0, 0, 0, + 26, 177, 2, 1, 184, 255, 255, 64, 13, 53, 71, 10, 47, 80, 2, 16, 72, 79, 1, 16, + 70, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 36, 255, 247, 1, 210, 2, 187, 2, + 38, 3, 188, 0, 0, 1, 6, 4, 159, 18, 0, 0, 23, 64, 16, 2, 1, 17, 55, 69, + 10, 47, 80, 2, 16, 70, 79, 1, 16, 53, 79, 43, 43, 43, 52, 52, 0, 255, 255, 0, + 36, 255, 247, 1, 210, 3, 19, 2, 38, 3, 188, 0, 0, 1, 6, 4, 147, 0, 0, 0, + 26, 177, 2, 1, 184, 255, 255, 64, 13, 84, 74, 10, 47, 80, 2, 16, 76, 79, 1, 16, + 69, 79, 43, 43, 43, 52, 52, 0, 0, 255, 255, 0, 36, 255, 247, 1, 210, 3, 19, 2, + 38, 3, 188, 0, 0, 1, 6, 4, 160, 0, 0, 0, 26, 177, 2, 1, 184, 255, 255, 64, + 13, 84, 74, 10, 47, 80, 2, 16, 76, 79, 1, 16, 53, 79, 43, 43, 43, 52, 52, 0, + 0, 255, 255, 255, 159, 0, 0, 1, 226, 2, 122, 2, 38, 3, 163, 0, 0, 1, 7, 4, + 130, 254, 230, 255, 193, 0, 13, 185, 0, 1, 254, 230, 180, 44, 55, 0, 18, 80, 43, 52, + 0, 255, 255, 255, 132, 0, 0, 1, 226, 2, 122, 2, 38, 3, 163, 0, 0, 1, 7, 4, + 188, 254, 203, 255, 193, 0, 13, 185, 0, 1, 254, 203, 180, 48, 60, 0, 18, 80, 43, 52, + 0, 255, 255, 254, 213, 0, 0, 1, 226, 2, 124, 2, 38, 3, 163, 0, 0, 1, 7, 4, + 145, 254, 117, 255, 193, 0, 15, 177, 2, 1, 184, 254, 117, 180, 44, 63, 0, 18, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 254, 231, 0, 0, 1, 226, 2, 124, 2, 38, 3, 163, 0, + 0, 1, 7, 4, 158, 254, 126, 255, 193, 0, 15, 177, 2, 1, 184, 254, 126, 180, 46, 61, + 0, 18, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 23, 0, 0, 1, 226, 2, 124, 2, + 38, 3, 163, 0, 0, 1, 7, 4, 146, 254, 173, 255, 193, 0, 15, 177, 2, 1, 184, 254, + 173, 180, 44, 62, 0, 18, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 2, 0, 0, 1, + 226, 2, 124, 2, 38, 3, 163, 0, 0, 1, 7, 4, 159, 254, 162, 255, 193, 0, 15, 177, + 2, 1, 184, 254, 162, 180, 46, 60, 0, 18, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, + 86, 0, 0, 1, 226, 2, 180, 2, 38, 3, 163, 0, 0, 1, 7, 4, 147, 254, 211, 255, + 161, 0, 15, 177, 2, 1, 184, 254, 211, 180, 75, 65, 0, 18, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 255, 60, 0, 0, 1, 226, 2, 180, 2, 38, 3, 163, 0, 0, 1, 7, 4, + 160, 254, 185, 255, 161, 0, 15, 177, 2, 1, 184, 254, 185, 180, 75, 65, 0, 18, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 0, 49, 255, 246, 1, 215, 2, 181, 2, 38, 3, 164, 0, + 0, 1, 6, 4, 176, 4, 0, 0, 19, 185, 0, 2, 255, 250, 64, 9, 47, 45, 20, 9, + 80, 2, 0, 46, 79, 43, 43, 52, 0, 255, 255, 0, 49, 255, 246, 1, 215, 2, 181, 2, + 38, 3, 164, 0, 0, 1, 6, 4, 187, 30, 0, 0, 16, 64, 11, 2, 19, 46, 44, 20, + 9, 80, 2, 0, 45, 79, 43, 43, 52, 255, 255, 0, 69, 255, 245, 1, 210, 2, 181, 2, + 38, 3, 168, 0, 0, 1, 6, 4, 176, 4, 0, 0, 19, 185, 0, 1, 255, 242, 64, 9, + 57, 55, 42, 35, 80, 1, 0, 56, 79, 43, 43, 52, 0, 255, 255, 0, 69, 255, 245, 1, + 210, 2, 181, 2, 38, 3, 168, 0, 0, 1, 6, 4, 187, 30, 0, 0, 16, 64, 11, 1, + 12, 56, 54, 42, 35, 80, 1, 0, 55, 79, 43, 43, 52, 255, 255, 0, 71, 255, 91, 1, + 176, 2, 181, 2, 38, 3, 170, 0, 0, 1, 6, 4, 176, 4, 0, 0, 16, 64, 11, 1, + 2, 23, 21, 0, 5, 80, 1, 2, 22, 79, 43, 43, 52, 255, 255, 0, 71, 255, 91, 1, + 176, 2, 181, 2, 38, 3, 170, 0, 0, 1, 6, 4, 187, 30, 0, 0, 16, 64, 11, 1, + 28, 22, 20, 0, 5, 80, 1, 2, 21, 79, 43, 43, 52, 255, 255, 0, 54, 255, 245, 1, + 194, 2, 181, 2, 38, 3, 172, 0, 0, 1, 6, 4, 176, 230, 0, 0, 19, 185, 0, 1, + 255, 228, 64, 9, 25, 23, 10, 0, 80, 1, 11, 24, 79, 43, 43, 52, 0, 255, 255, 0, + 54, 255, 245, 1, 194, 2, 181, 2, 38, 3, 172, 0, 0, 1, 6, 4, 187, 248, 0, 0, + 19, 185, 0, 1, 255, 246, 64, 9, 24, 22, 10, 0, 80, 1, 11, 23, 79, 43, 43, 52, + 0, 255, 255, 0, 40, 255, 245, 1, 204, 2, 181, 2, 38, 0, 82, 0, 0, 1, 6, 4, + 176, 4, 0, 0, 16, 64, 11, 2, 3, 35, 33, 9, 0, 80, 2, 14, 34, 79, 43, 43, + 52, 255, 255, 0, 40, 255, 245, 1, 204, 2, 181, 2, 38, 0, 82, 0, 0, 1, 6, 4, + 187, 30, 0, 0, 16, 64, 11, 2, 29, 34, 32, 9, 0, 80, 2, 14, 33, 79, 43, 43, + 52, 255, 255, 0, 71, 255, 246, 1, 171, 2, 181, 2, 38, 3, 184, 0, 0, 1, 6, 4, + 176, 4, 0, 0, 16, 64, 11, 1, 4, 25, 23, 4, 16, 80, 1, 6, 24, 79, 43, 43, + 52, 255, 255, 0, 71, 255, 246, 1, 171, 2, 181, 2, 38, 3, 184, 0, 0, 1, 6, 4, + 187, 30, 0, 0, 16, 64, 11, 1, 30, 24, 22, 4, 16, 80, 1, 6, 23, 79, 43, 43, + 52, 255, 255, 0, 36, 255, 247, 1, 210, 2, 181, 2, 38, 3, 188, 0, 0, 1, 6, 4, + 176, 4, 0, 0, 16, 64, 11, 1, 2, 56, 54, 10, 47, 80, 1, 16, 55, 79, 43, 43, + 52, 255, 255, 0, 36, 255, 247, 1, 210, 2, 181, 2, 38, 3, 188, 0, 0, 1, 6, 4, + 187, 30, 0, 0, 16, 64, 11, 1, 28, 55, 53, 10, 47, 80, 1, 16, 54, 79, 43, 43, + 52, 255, 255, 0, 49, 255, 86, 1, 215, 2, 185, 2, 38, 3, 164, 0, 0, 0, 38, 4, + 130, 0, 0, 1, 6, 4, 131, 18, 0, 0, 12, 183, 3, 2, 5, 44, 66, 20, 9, 80, + 43, 52, 52, 0, 0, 255, 255, 0, 49, 255, 86, 1, 215, 2, 185, 2, 38, 3, 164, 0, + 0, 0, 38, 4, 188, 9, 0, 1, 6, 4, 131, 18, 0, 0, 12, 183, 3, 2, 10, 48, + 65, 20, 9, 80, 43, 52, 52, 0, 0, 255, 255, 0, 49, 255, 86, 1, 215, 2, 187, 2, + 38, 3, 164, 0, 0, 0, 38, 4, 145, 0, 0, 1, 6, 4, 131, 18, 0, 0, 17, 178, + 4, 3, 2, 184, 255, 246, 180, 44, 63, 20, 9, 80, 43, 52, 52, 52, 0, 255, 255, 0, + 49, 255, 86, 1, 215, 2, 187, 2, 38, 3, 164, 0, 0, 0, 38, 4, 158, 0, 0, 1, + 6, 4, 131, 18, 0, 0, 17, 178, 4, 3, 2, 184, 255, 246, 180, 46, 61, 20, 9, 80, + 43, 52, 52, 52, 0, 255, 255, 0, 49, 255, 86, 1, 215, 2, 187, 2, 38, 3, 164, 0, + 0, 0, 38, 4, 146, 36, 0, 1, 6, 4, 131, 18, 0, 0, 15, 64, 9, 4, 3, 2, + 26, 44, 62, 20, 9, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 0, 49, 255, 86, 1, + 215, 2, 187, 2, 38, 3, 164, 0, 0, 0, 38, 4, 159, 18, 0, 1, 6, 4, 131, 18, + 0, 0, 15, 64, 9, 4, 3, 2, 8, 46, 60, 20, 9, 80, 43, 52, 52, 52, 0, 0, + 0, 255, 255, 0, 49, 255, 86, 1, 215, 3, 19, 2, 38, 3, 164, 0, 0, 0, 38, 4, + 147, 18, 0, 1, 6, 4, 131, 18, 0, 0, 15, 64, 9, 4, 3, 2, 8, 75, 65, 20, + 9, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 0, 49, 255, 86, 1, 215, 3, 19, 2, + 38, 3, 164, 0, 0, 0, 38, 4, 160, 0, 0, 1, 6, 4, 131, 18, 0, 0, 17, 178, + 4, 3, 2, 184, 255, 246, 180, 75, 65, 20, 9, 80, 43, 52, 52, 52, 0, 255, 255, 255, + 185, 255, 247, 1, 244, 2, 122, 2, 38, 4, 129, 0, 0, 1, 7, 4, 130, 255, 0, 255, + 193, 0, 13, 185, 0, 3, 254, 251, 180, 41, 52, 3, 29, 80, 43, 52, 0, 255, 255, 255, + 168, 255, 247, 1, 244, 2, 122, 2, 38, 4, 129, 0, 0, 1, 7, 4, 188, 254, 239, 255, + 193, 0, 13, 185, 0, 3, 254, 234, 180, 45, 57, 3, 29, 80, 43, 52, 0, 255, 255, 254, + 248, 255, 247, 1, 244, 2, 124, 2, 38, 4, 129, 0, 0, 1, 7, 4, 145, 254, 152, 255, + 193, 0, 15, 177, 4, 3, 184, 254, 148, 180, 41, 60, 3, 29, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 255, 11, 255, 247, 1, 244, 2, 124, 2, 38, 4, 129, 0, 0, 1, 7, 4, + 158, 254, 162, 255, 193, 0, 15, 177, 4, 3, 184, 254, 158, 180, 43, 58, 3, 29, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 255, 43, 255, 247, 1, 244, 2, 124, 2, 38, 4, 129, 0, + 0, 1, 7, 4, 146, 254, 193, 255, 193, 0, 15, 177, 4, 3, 184, 254, 189, 180, 41, 59, + 3, 29, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 22, 255, 247, 1, 244, 2, 124, 2, + 38, 4, 129, 0, 0, 1, 7, 4, 159, 254, 182, 255, 193, 0, 15, 177, 4, 3, 184, 254, + 178, 180, 43, 57, 3, 29, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 96, 255, 247, 1, + 244, 2, 180, 2, 38, 4, 129, 0, 0, 1, 7, 4, 147, 254, 221, 255, 161, 0, 15, 177, + 4, 3, 184, 254, 217, 180, 72, 62, 3, 29, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, + 87, 255, 247, 1, 244, 2, 180, 2, 38, 4, 129, 0, 0, 1, 7, 4, 160, 254, 212, 255, + 161, 0, 15, 177, 4, 3, 184, 254, 208, 180, 72, 62, 3, 29, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 0, 71, 255, 86, 1, 176, 2, 185, 2, 38, 3, 170, 0, 0, 0, 38, 4, + 130, 0, 0, 1, 6, 4, 131, 149, 0, 0, 15, 177, 2, 1, 184, 255, 198, 180, 47, 31, + 0, 5, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, 71, 255, 86, 1, 176, 2, 185, 2, + 38, 3, 170, 0, 0, 0, 38, 4, 188, 9, 0, 1, 6, 4, 131, 149, 0, 0, 15, 177, + 2, 1, 184, 255, 202, 180, 46, 36, 0, 5, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, + 71, 255, 86, 1, 176, 2, 187, 2, 38, 3, 170, 0, 0, 0, 38, 4, 145, 0, 0, 1, + 6, 4, 131, 149, 0, 0, 17, 178, 3, 2, 1, 184, 255, 243, 180, 51, 39, 0, 5, 80, + 43, 52, 52, 52, 0, 255, 255, 0, 71, 255, 86, 1, 176, 2, 187, 2, 38, 3, 170, 0, + 0, 0, 38, 4, 158, 0, 0, 1, 6, 4, 131, 149, 0, 0, 17, 178, 3, 2, 1, 184, + 255, 238, 180, 49, 37, 0, 5, 80, 43, 52, 52, 52, 0, 255, 255, 0, 71, 255, 86, 1, + 176, 2, 187, 2, 38, 3, 170, 0, 0, 0, 38, 4, 146, 0, 0, 1, 6, 4, 131, 149, + 0, 0, 17, 178, 3, 2, 1, 184, 255, 238, 180, 51, 38, 0, 5, 80, 43, 52, 52, 52, + 0, 255, 255, 0, 71, 255, 86, 1, 176, 2, 187, 2, 38, 3, 170, 0, 0, 0, 38, 4, + 159, 18, 0, 1, 6, 4, 131, 149, 0, 0, 17, 178, 3, 2, 1, 184, 255, 252, 180, 49, + 36, 0, 5, 80, 43, 52, 52, 52, 0, 255, 255, 0, 71, 255, 86, 1, 176, 3, 19, 2, + 38, 3, 170, 0, 0, 0, 38, 4, 147, 0, 0, 1, 6, 4, 131, 149, 0, 0, 17, 178, + 3, 2, 1, 184, 255, 225, 180, 66, 41, 0, 5, 80, 43, 52, 52, 52, 0, 255, 255, 0, + 71, 255, 86, 1, 176, 3, 19, 2, 38, 3, 170, 0, 0, 0, 38, 4, 160, 0, 0, 1, + 6, 4, 131, 149, 0, 0, 17, 178, 3, 2, 1, 184, 255, 225, 180, 66, 41, 0, 5, 80, + 43, 52, 52, 52, 0, 255, 255, 255, 131, 255, 247, 1, 244, 2, 122, 2, 55, 4, 130, 254, + 202, 255, 193, 0, 6, 4, 144, 0, 0, 255, 255, 255, 131, 255, 247, 1, 244, 2, 122, 2, + 55, 4, 188, 254, 202, 255, 193, 0, 6, 4, 144, 0, 0, 255, 255, 254, 217, 255, 247, 1, + 244, 2, 124, 2, 38, 4, 144, 0, 0, 1, 7, 4, 145, 254, 121, 255, 193, 0, 15, 177, + 3, 2, 184, 254, 99, 180, 26, 45, 21, 13, 80, 43, 52, 52, 0, 0, 0, 255, 255, 254, + 234, 255, 247, 1, 244, 2, 124, 2, 38, 4, 144, 0, 0, 1, 7, 4, 158, 254, 129, 255, + 193, 0, 15, 177, 3, 2, 184, 254, 107, 180, 28, 43, 21, 13, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 254, 236, 255, 247, 1, 244, 2, 124, 2, 38, 4, 144, 0, 0, 1, 7, 4, + 146, 254, 130, 255, 193, 0, 15, 177, 3, 2, 184, 254, 108, 180, 26, 44, 21, 13, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 254, 217, 255, 247, 1, 244, 2, 124, 2, 38, 4, 144, 0, + 0, 1, 7, 4, 159, 254, 121, 255, 193, 0, 15, 177, 3, 2, 184, 254, 99, 180, 28, 42, + 21, 13, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 26, 255, 247, 1, 244, 2, 180, 2, + 38, 4, 144, 0, 0, 1, 7, 4, 147, 254, 151, 255, 161, 0, 15, 177, 3, 2, 184, 254, + 129, 180, 57, 47, 21, 13, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 26, 255, 247, 1, + 244, 2, 180, 2, 38, 4, 144, 0, 0, 1, 7, 4, 160, 254, 151, 255, 161, 0, 15, 177, + 3, 2, 184, 254, 129, 180, 57, 47, 21, 13, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, + 36, 255, 86, 1, 210, 2, 185, 2, 38, 3, 188, 0, 0, 0, 38, 4, 130, 0, 0, 1, + 6, 4, 131, 27, 0, 0, 12, 183, 2, 1, 19, 53, 75, 10, 47, 80, 43, 52, 52, 0, + 0, 255, 255, 0, 36, 255, 86, 1, 210, 2, 185, 2, 38, 3, 188, 0, 0, 0, 38, 4, + 188, 9, 0, 1, 6, 4, 131, 27, 0, 0, 12, 183, 2, 1, 23, 57, 74, 10, 47, 80, + 43, 52, 52, 0, 0, 255, 255, 0, 36, 255, 86, 1, 210, 2, 187, 2, 38, 3, 188, 0, + 0, 0, 38, 4, 145, 0, 0, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, + 255, 255, 180, 53, 72, 10, 47, 80, 43, 52, 52, 52, 0, 255, 255, 0, 36, 255, 86, 1, + 210, 2, 187, 2, 38, 3, 188, 0, 0, 0, 38, 4, 158, 0, 0, 1, 6, 4, 131, 27, + 0, 0, 17, 178, 3, 2, 1, 184, 255, 255, 180, 55, 70, 10, 47, 80, 43, 52, 52, 52, + 0, 255, 255, 0, 36, 255, 86, 1, 210, 2, 187, 2, 38, 3, 188, 0, 0, 0, 38, 4, + 146, 0, 0, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 255, 180, 53, + 71, 10, 47, 80, 43, 52, 52, 52, 0, 255, 255, 0, 36, 255, 86, 1, 210, 2, 187, 2, + 38, 3, 188, 0, 0, 0, 38, 4, 159, 18, 0, 1, 6, 4, 131, 27, 0, 0, 15, 64, + 9, 3, 2, 1, 17, 55, 69, 10, 47, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 0, + 36, 255, 86, 1, 210, 3, 19, 2, 38, 3, 188, 0, 0, 0, 38, 4, 147, 0, 0, 1, + 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 255, 180, 84, 74, 10, 47, 80, + 43, 52, 52, 52, 0, 255, 255, 0, 36, 255, 86, 1, 210, 3, 19, 2, 38, 3, 188, 0, + 0, 0, 38, 4, 160, 0, 0, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, + 255, 255, 180, 84, 74, 10, 47, 80, 43, 52, 52, 52, 0, 255, 255, 255, 150, 255, 247, 1, + 244, 2, 122, 2, 38, 4, 186, 0, 0, 1, 7, 4, 130, 254, 221, 255, 193, 0, 13, 185, + 0, 2, 254, 212, 180, 62, 73, 1, 61, 80, 43, 52, 0, 255, 255, 255, 123, 255, 247, 1, + 244, 2, 122, 2, 38, 4, 186, 0, 0, 1, 7, 4, 188, 254, 194, 255, 193, 0, 13, 185, + 0, 2, 254, 185, 180, 66, 78, 1, 61, 80, 43, 52, 0, 255, 255, 254, 204, 255, 247, 1, + 244, 2, 124, 2, 38, 4, 186, 0, 0, 1, 7, 4, 145, 254, 108, 255, 193, 0, 15, 177, + 3, 2, 184, 254, 99, 180, 62, 81, 1, 61, 80, 43, 52, 52, 0, 0, 0, 255, 255, 254, + 222, 255, 247, 1, 244, 2, 124, 2, 38, 4, 186, 0, 0, 1, 7, 4, 158, 254, 117, 255, + 193, 0, 15, 177, 3, 2, 184, 254, 108, 180, 64, 79, 1, 61, 80, 43, 52, 52, 0, 0, + 0, 255, 255, 255, 14, 255, 247, 1, 244, 2, 124, 2, 38, 4, 186, 0, 0, 1, 7, 4, + 146, 254, 164, 255, 193, 0, 15, 177, 3, 2, 184, 254, 155, 180, 62, 80, 1, 61, 80, 43, + 52, 52, 0, 0, 0, 255, 255, 254, 249, 255, 247, 1, 244, 2, 124, 2, 38, 4, 186, 0, + 0, 1, 7, 4, 159, 254, 153, 255, 193, 0, 15, 177, 3, 2, 184, 254, 144, 180, 64, 78, + 1, 61, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 68, 255, 247, 1, 244, 2, 180, 2, + 38, 4, 186, 0, 0, 1, 7, 4, 147, 254, 193, 255, 161, 0, 15, 177, 3, 2, 184, 254, + 184, 180, 93, 83, 1, 61, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 42, 255, 247, 1, + 244, 2, 180, 2, 38, 4, 186, 0, 0, 1, 7, 4, 160, 254, 167, 255, 161, 0, 15, 177, + 3, 2, 184, 254, 158, 180, 93, 83, 1, 61, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, + 49, 255, 246, 1, 215, 2, 157, 2, 38, 3, 164, 0, 0, 1, 6, 1, 97, 0, 0, 0, + 19, 185, 0, 2, 255, 246, 64, 9, 48, 62, 20, 9, 80, 2, 0, 44, 79, 43, 43, 52, + 0, 255, 255, 0, 49, 255, 246, 1, 215, 2, 123, 2, 38, 3, 164, 0, 0, 1, 6, 0, + 138, 0, 0, 0, 19, 185, 0, 2, 255, 246, 64, 9, 44, 45, 20, 9, 80, 2, 0, 46, + 79, 43, 43, 52, 0, 255, 255, 0, 49, 255, 86, 1, 215, 2, 181, 2, 38, 3, 164, 0, + 0, 0, 38, 4, 176, 4, 0, 1, 6, 4, 131, 18, 0, 0, 15, 177, 3, 2, 184, 255, + 250, 180, 47, 45, 20, 9, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, 49, 255, 86, 1, + 215, 1, 218, 2, 38, 3, 164, 0, 0, 1, 6, 4, 131, 18, 0, 0, 10, 182, 2, 11, + 53, 48, 20, 9, 80, 43, 52, 0, 0, 255, 255, 0, 49, 255, 86, 1, 215, 2, 181, 2, + 38, 3, 164, 0, 0, 0, 38, 4, 187, 30, 0, 1, 6, 4, 131, 18, 0, 0, 12, 183, + 3, 2, 19, 46, 44, 20, 9, 80, 43, 52, 52, 0, 0, 255, 255, 0, 49, 255, 246, 1, + 215, 2, 157, 2, 38, 3, 164, 0, 0, 1, 6, 4, 133, 18, 0, 0, 16, 64, 11, 2, + 8, 62, 48, 20, 9, 80, 2, 0, 49, 79, 43, 43, 52, 255, 255, 0, 49, 255, 86, 1, + 215, 2, 157, 2, 38, 3, 164, 0, 0, 0, 38, 4, 133, 18, 0, 1, 6, 4, 131, 18, + 0, 0, 12, 183, 3, 2, 8, 62, 48, 20, 9, 80, 43, 52, 52, 0, 0, 255, 255, 0, + 9, 0, 0, 1, 235, 3, 40, 2, 38, 0, 36, 0, 0, 1, 7, 1, 97, 0, 0, 0, + 139, 0, 16, 64, 11, 2, 0, 27, 41, 4, 15, 80, 2, 9, 23, 79, 43, 43, 52, 0, + 0, 255, 255, 0, 9, 0, 0, 1, 235, 3, 6, 2, 38, 0, 36, 0, 0, 1, 7, 0, + 138, 0, 0, 0, 139, 0, 16, 64, 11, 2, 0, 23, 24, 4, 15, 80, 2, 9, 25, 79, + 43, 43, 52, 0, 0, 255, 255, 255, 191, 0, 0, 1, 235, 2, 118, 2, 38, 0, 36, 0, + 0, 1, 7, 0, 67, 255, 28, 255, 193, 0, 13, 185, 0, 2, 255, 25, 180, 26, 24, 4, + 15, 80, 43, 52, 0, 255, 255, 255, 226, 0, 0, 1, 235, 2, 118, 2, 38, 0, 36, 0, + 0, 1, 7, 0, 143, 255, 56, 255, 193, 0, 13, 185, 0, 2, 255, 60, 180, 25, 23, 4, + 15, 80, 43, 52, 0, 0, 3, 0, 9, 255, 247, 1, 244, 2, 107, 0, 15, 0, 29, 0, + 40, 0, 136, 64, 75, 0, 36, 38, 39, 40, 30, 9, 15, 30, 15, 120, 14, 9, 20, 14, + 14, 9, 1, 33, 32, 31, 30, 8, 2, 30, 2, 120, 3, 8, 20, 3, 3, 8, 30, 3, + 175, 14, 191, 14, 2, 57, 14, 1, 14, 14, 21, 115, 24, 24, 29, 3, 22, 73, 29, 124, + 16, 70, 15, 14, 68, 9, 65, 0, 1, 121, 36, 35, 35, 3, 30, 8, 65, 2, 3, 68, + 0, 63, 51, 63, 51, 18, 57, 47, 51, 237, 50, 63, 63, 51, 63, 237, 63, 1, 47, 47, + 50, 47, 237, 50, 47, 93, 93, 18, 57, 135, 16, 43, 135, 125, 196, 16, 14, 196, 196, 196, + 5, 196, 135, 24, 16, 43, 135, 125, 196, 16, 14, 196, 196, 196, 5, 196, 196, 49, 48, 55, + 35, 7, 35, 62, 3, 55, 51, 30, 3, 23, 35, 23, 46, 3, 53, 17, 51, 17, 20, 30, + 2, 23, 1, 14, 3, 7, 51, 46, 3, 238, 132, 22, 75, 11, 25, 28, 33, 18, 102, 18, + 32, 28, 24, 11, 78, 228, 35, 45, 25, 9, 73, 4, 12, 20, 16, 254, 184, 5, 11, 13, + 17, 10, 112, 10, 17, 13, 12, 162, 162, 66, 154, 162, 163, 74, 74, 163, 162, 154, 66, 9, + 3, 20, 33, 46, 30, 1, 85, 254, 185, 19, 25, 18, 10, 4, 1, 230, 23, 55, 75, 98, + 66, 67, 99, 74, 55, 0, 1, 0, 185, 2, 1, 1, 58, 2, 185, 0, 17, 0, 24, 64, + 9, 3, 12, 17, 0, 6, 9, 3, 0, 17, 0, 47, 51, 221, 205, 1, 47, 206, 50, 205, + 50, 49, 48, 19, 54, 54, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, + 185, 18, 28, 10, 15, 19, 30, 22, 23, 32, 16, 26, 36, 19, 2, 32, 15, 28, 17, 6, + 24, 15, 21, 27, 28, 27, 15, 34, 35, 32, 13, 0, 1, 0, 179, 255, 86, 1, 72, 255, + 211, 0, 14, 0, 19, 182, 5, 0, 10, 7, 3, 14, 15, 0, 16, 222, 222, 205, 1, 47, + 221, 204, 49, 48, 5, 20, 22, 51, 51, 21, 6, 35, 34, 38, 53, 52, 54, 55, 51, 1, + 5, 19, 33, 15, 23, 19, 46, 61, 1, 1, 80, 58, 29, 29, 48, 6, 48, 57, 4, 11, + 5, 255, 255, 0, 185, 2, 1, 1, 58, 2, 185, 2, 6, 4, 130, 0, 0, 0, 1, 0, + 130, 2, 33, 1, 114, 2, 157, 0, 21, 0, 21, 183, 5, 6, 17, 16, 0, 11, 6, 16, + 0, 47, 51, 222, 205, 1, 47, 205, 222, 205, 49, 48, 19, 50, 30, 2, 7, 35, 46, 3, + 35, 34, 14, 2, 7, 35, 38, 62, 2, 250, 25, 44, 33, 18, 1, 54, 1, 6, 14, 25, + 19, 19, 24, 15, 6, 1, 54, 1, 18, 33, 44, 2, 157, 17, 32, 46, 29, 10, 23, 19, + 12, 12, 19, 23, 10, 29, 46, 32, 17, 0, 3, 0, 112, 2, 12, 1, 132, 3, 4, 0, + 11, 0, 23, 0, 43, 0, 40, 64, 17, 29, 31, 38, 37, 9, 21, 15, 3, 9, 24, 34, + 31, 37, 18, 6, 12, 0, 0, 47, 50, 221, 50, 222, 50, 222, 205, 1, 47, 205, 222, 205, + 16, 212, 205, 222, 205, 49, 48, 19, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 51, + 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 39, 50, 30, 2, 21, 21, 35, 38, 38, + 35, 34, 6, 7, 35, 53, 52, 62, 2, 160, 21, 27, 27, 21, 21, 27, 27, 159, 20, 28, + 28, 20, 20, 28, 28, 110, 23, 43, 33, 20, 48, 2, 34, 35, 35, 34, 2, 48, 20, 33, + 43, 2, 12, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 248, + 14, 28, 40, 27, 2, 21, 36, 36, 21, 2, 27, 40, 28, 14, 255, 255, 0, 71, 255, 86, + 1, 176, 2, 181, 2, 38, 3, 170, 0, 0, 0, 38, 4, 176, 4, 0, 1, 6, 4, 131, + 149, 0, 0, 15, 177, 2, 1, 184, 255, 216, 180, 33, 21, 0, 5, 80, 43, 52, 52, 0, + 0, 0, 255, 255, 0, 71, 255, 86, 1, 176, 1, 218, 2, 38, 3, 170, 0, 0, 1, 6, + 4, 131, 149, 0, 0, 13, 185, 0, 1, 255, 151, 180, 29, 24, 0, 5, 80, 43, 52, 0, + 0, 0, 255, 255, 0, 71, 255, 86, 1, 176, 2, 181, 2, 38, 3, 170, 0, 0, 0, 38, + 4, 187, 30, 0, 1, 6, 4, 131, 149, 0, 0, 15, 177, 2, 1, 184, 255, 229, 180, 33, + 20, 0, 5, 80, 43, 52, 52, 0, 0, 0, 255, 255, 0, 71, 255, 91, 1, 176, 2, 157, + 2, 38, 3, 170, 0, 0, 1, 6, 4, 133, 0, 0, 0, 19, 185, 0, 1, 255, 255, 64, + 9, 38, 24, 0, 5, 80, 1, 2, 25, 79, 43, 43, 52, 0, 255, 255, 0, 71, 255, 86, + 1, 176, 2, 157, 2, 38, 3, 170, 0, 0, 0, 38, 4, 133, 0, 0, 1, 6, 4, 131, + 149, 0, 0, 15, 177, 2, 1, 184, 255, 226, 180, 51, 24, 0, 5, 80, 43, 52, 52, 0, + 0, 0, 255, 255, 255, 132, 0, 0, 1, 204, 2, 118, 2, 38, 0, 40, 0, 0, 1, 7, + 0, 67, 254, 225, 255, 193, 0, 13, 185, 0, 1, 254, 196, 180, 15, 13, 0, 10, 80, 43, + 52, 0, 255, 255, 255, 134, 0, 0, 1, 204, 2, 118, 2, 38, 0, 40, 0, 0, 1, 7, + 0, 143, 254, 220, 255, 193, 0, 13, 185, 0, 1, 254, 199, 180, 14, 12, 0, 10, 80, 43, + 52, 0, 255, 255, 255, 85, 0, 0, 1, 199, 2, 118, 2, 38, 0, 43, 0, 0, 1, 7, + 0, 67, 254, 178, 255, 193, 0, 13, 185, 0, 1, 254, 175, 180, 15, 13, 7, 1, 80, 43, + 52, 0, 255, 255, 255, 89, 0, 0, 1, 199, 2, 118, 2, 38, 0, 43, 0, 0, 1, 7, + 0, 143, 254, 175, 255, 193, 0, 13, 185, 0, 1, 254, 179, 180, 14, 12, 7, 1, 80, 43, + 52, 0, 0, 2, 0, 45, 255, 247, 1, 244, 2, 107, 0, 13, 0, 25, 0, 75, 64, 45, + 24, 20, 115, 48, 21, 64, 21, 2, 21, 25, 17, 115, 15, 16, 47, 16, 2, 16, 5, 115, + 15, 8, 31, 8, 2, 8, 8, 13, 19, 121, 24, 24, 21, 14, 22, 65, 17, 21, 68, 6, + 73, 13, 136, 0, 81, 0, 63, 237, 63, 63, 51, 63, 51, 18, 57, 47, 237, 1, 47, 222, + 94, 93, 253, 222, 93, 237, 50, 47, 93, 237, 50, 49, 48, 5, 46, 3, 53, 17, 51, 17, + 20, 30, 2, 23, 1, 51, 17, 35, 17, 35, 17, 35, 17, 51, 17, 51, 1, 233, 35, 45, + 25, 9, 73, 4, 12, 20, 16, 254, 251, 74, 74, 121, 73, 73, 121, 9, 3, 20, 33, 46, + 30, 1, 85, 254, 185, 19, 25, 18, 10, 4, 2, 46, 253, 149, 1, 32, 254, 224, 2, 107, + 254, 251, 0, 2, 0, 96, 2, 1, 1, 148, 2, 187, 0, 17, 0, 21, 0, 52, 64, 23, + 20, 64, 19, 128, 18, 21, 12, 17, 0, 6, 3, 12, 19, 20, 20, 17, 21, 18, 18, 9, + 3, 0, 17, 0, 47, 51, 221, 205, 50, 47, 51, 17, 51, 47, 51, 1, 47, 51, 221, 206, + 50, 16, 222, 205, 26, 221, 26, 205, 49, 48, 19, 54, 54, 55, 38, 38, 53, 52, 54, 51, + 50, 22, 21, 20, 14, 2, 7, 55, 23, 7, 39, 96, 19, 26, 10, 16, 16, 27, 23, 21, + 31, 16, 25, 33, 18, 177, 98, 47, 112, 2, 32, 15, 28, 17, 6, 24, 15, 21, 27, 28, + 27, 15, 34, 34, 33, 13, 186, 152, 34, 142, 0, 2, 0, 106, 2, 1, 1, 138, 2, 187, + 0, 17, 0, 21, 0, 54, 64, 24, 21, 64, 18, 128, 19, 20, 20, 12, 17, 0, 6, 3, + 12, 20, 19, 19, 17, 18, 21, 21, 9, 3, 0, 17, 0, 47, 51, 221, 205, 50, 47, 51, + 17, 51, 47, 51, 1, 47, 51, 221, 206, 50, 17, 51, 47, 205, 26, 221, 26, 205, 49, 48, + 19, 54, 54, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, 37, 7, 39, + 55, 106, 18, 26, 11, 16, 16, 27, 23, 21, 30, 15, 26, 33, 18, 1, 0, 113, 46, 97, + 2, 32, 15, 28, 17, 6, 24, 15, 21, 27, 28, 27, 15, 34, 34, 33, 13, 142, 142, 34, + 152, 0, 2, 0, 131, 2, 1, 1, 113, 3, 19, 0, 16, 0, 36, 0, 44, 64, 19, 22, + 24, 31, 30, 30, 16, 0, 5, 2, 11, 17, 27, 24, 30, 30, 8, 2, 0, 16, 0, 47, + 51, 221, 205, 50, 47, 51, 222, 205, 1, 47, 51, 221, 206, 50, 51, 47, 205, 222, 205, 49, + 48, 19, 54, 55, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 14, 2, 7, 19, 50, 30, + 2, 21, 21, 35, 38, 38, 35, 34, 6, 7, 35, 53, 52, 62, 2, 179, 36, 14, 11, 14, + 23, 25, 21, 27, 18, 28, 34, 16, 46, 23, 43, 33, 20, 48, 2, 34, 35, 35, 34, 2, + 48, 20, 33, 43, 2, 32, 26, 19, 8, 20, 12, 16, 27, 26, 26, 17, 31, 27, 23, 9, + 1, 18, 14, 28, 41, 27, 2, 21, 36, 36, 21, 2, 27, 41, 28, 14, 255, 255, 0, 54, + 255, 245, 1, 194, 2, 157, 2, 38, 3, 172, 0, 0, 1, 6, 1, 97, 221, 0, 0, 19, + 185, 0, 1, 255, 219, 64, 9, 26, 40, 10, 0, 80, 1, 11, 22, 79, 43, 43, 52, 0, + 255, 255, 0, 54, 255, 245, 1, 194, 2, 123, 2, 38, 3, 172, 0, 0, 1, 6, 0, 138, + 221, 0, 0, 19, 185, 0, 1, 255, 219, 64, 9, 22, 23, 10, 0, 80, 1, 11, 24, 79, + 43, 43, 52, 0, 255, 255, 0, 38, 255, 245, 1, 194, 2, 185, 2, 38, 3, 172, 0, 0, + 1, 6, 4, 174, 221, 0, 0, 33, 178, 3, 2, 1, 184, 255, 219, 64, 17, 28, 46, 10, + 0, 80, 3, 11, 38, 79, 2, 11, 26, 79, 1, 11, 24, 79, 43, 43, 43, 43, 52, 52, + 52, 0, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 185, 2, 38, 3, 172, 0, 0, + 1, 6, 3, 211, 248, 0, 0, 33, 178, 3, 2, 1, 184, 255, 237, 64, 17, 40, 34, 10, + 0, 80, 3, 11, 38, 79, 2, 11, 26, 79, 1, 11, 23, 79, 43, 43, 43, 43, 52, 52, + 52, 0, 0, 0, 255, 255, 0, 54, 255, 245, 1, 194, 2, 157, 2, 38, 3, 172, 0, 0, + 1, 6, 4, 133, 221, 0, 0, 19, 185, 0, 1, 255, 219, 64, 9, 40, 26, 10, 0, 80, + 1, 11, 27, 79, 43, 43, 52, 0, 255, 255, 0, 54, 255, 245, 1, 194, 3, 4, 2, 38, + 3, 172, 0, 0, 1, 6, 4, 134, 221, 0, 0, 33, 178, 3, 2, 1, 184, 255, 219, 64, + 17, 24, 42, 10, 0, 80, 3, 11, 52, 79, 2, 11, 34, 79, 1, 11, 22, 79, 43, 43, + 43, 43, 52, 52, 52, 0, 0, 0, 255, 255, 0, 89, 0, 0, 1, 155, 3, 40, 2, 38, + 0, 44, 0, 0, 1, 7, 1, 97, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, 16, 30, + 4, 2, 80, 1, 9, 12, 79, 43, 43, 52, 0, 0, 255, 255, 0, 89, 0, 0, 1, 155, + 3, 6, 2, 38, 0, 44, 0, 0, 1, 7, 0, 138, 0, 0, 0, 139, 0, 16, 64, 11, + 1, 0, 12, 13, 4, 2, 80, 1, 9, 14, 79, 43, 43, 52, 0, 0, 255, 255, 255, 131, + 0, 0, 1, 155, 2, 118, 2, 38, 0, 44, 0, 0, 1, 7, 0, 67, 254, 224, 255, 193, + 0, 13, 185, 0, 1, 254, 221, 180, 15, 13, 4, 2, 80, 43, 52, 0, 255, 255, 255, 133, + 0, 0, 1, 155, 2, 118, 2, 38, 0, 44, 0, 0, 1, 7, 0, 143, 254, 219, 255, 193, + 0, 13, 185, 0, 1, 254, 223, 180, 14, 12, 4, 2, 80, 43, 52, 0, 0, 2, 0, 105, + 2, 1, 1, 139, 2, 187, 0, 15, 0, 19, 0, 50, 64, 22, 18, 64, 17, 128, 16, 19, + 0, 15, 12, 3, 9, 17, 18, 18, 0, 19, 16, 16, 6, 12, 15, 0, 0, 47, 50, 221, + 205, 50, 47, 51, 17, 51, 47, 51, 1, 47, 205, 50, 206, 50, 222, 205, 26, 221, 26, 205, + 49, 48, 19, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 22, 22, 23, 55, 23, + 7, 39, 197, 36, 56, 31, 21, 23, 27, 16, 16, 10, 26, 19, 67, 98, 47, 112, 2, 1, + 28, 70, 31, 27, 28, 27, 21, 15, 24, 6, 17, 28, 15, 155, 152, 34, 142, 0, 2, 0, + 96, 2, 1, 1, 148, 2, 187, 0, 15, 0, 19, 0, 50, 64, 22, 19, 64, 16, 128, 17, + 18, 0, 15, 12, 3, 9, 18, 17, 17, 0, 16, 19, 19, 6, 12, 15, 0, 0, 47, 50, + 221, 205, 50, 47, 51, 17, 51, 47, 51, 1, 47, 205, 50, 206, 50, 222, 205, 26, 221, 26, + 205, 49, 48, 19, 38, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 22, 22, 23, 55, + 7, 39, 55, 188, 36, 56, 31, 21, 23, 27, 16, 16, 10, 26, 19, 183, 113, 46, 97, 2, + 1, 28, 70, 31, 27, 28, 27, 21, 15, 24, 6, 17, 28, 15, 111, 142, 34, 152, 0, 2, + 0, 131, 2, 1, 1, 113, 3, 19, 0, 16, 0, 36, 0, 46, 64, 20, 0, 16, 11, 22, + 24, 31, 30, 30, 14, 5, 11, 17, 27, 24, 30, 30, 8, 14, 16, 0, 0, 47, 50, 221, + 205, 50, 47, 51, 222, 205, 1, 47, 205, 50, 50, 47, 205, 222, 205, 16, 206, 50, 49, 48, + 1, 46, 3, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 22, 23, 39, 50, 30, 2, 21, + 21, 35, 38, 38, 35, 34, 6, 7, 35, 53, 52, 62, 2, 1, 40, 16, 34, 28, 18, 28, + 20, 25, 23, 14, 11, 14, 36, 71, 23, 43, 33, 20, 48, 2, 34, 35, 35, 34, 2, 48, + 20, 33, 43, 2, 1, 9, 23, 27, 31, 17, 26, 26, 27, 16, 12, 20, 8, 19, 26, 243, + 14, 28, 41, 27, 2, 21, 36, 36, 21, 2, 27, 41, 28, 14, 255, 255, 0, 71, 255, 246, + 1, 171, 2, 157, 2, 38, 3, 184, 0, 0, 1, 6, 1, 97, 0, 0, 0, 16, 64, 11, + 1, 1, 26, 40, 4, 16, 80, 1, 6, 22, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, + 1, 171, 2, 123, 2, 38, 3, 184, 0, 0, 1, 6, 0, 138, 0, 0, 0, 16, 64, 11, + 1, 1, 22, 23, 4, 16, 80, 1, 6, 24, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, + 1, 171, 2, 185, 2, 38, 3, 184, 0, 0, 1, 6, 4, 174, 0, 0, 0, 30, 64, 21, + 3, 2, 1, 1, 28, 46, 4, 16, 80, 3, 6, 38, 79, 2, 6, 26, 79, 1, 6, 24, + 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 71, 255, 246, 1, 171, 2, 185, + 2, 38, 3, 184, 0, 0, 1, 6, 3, 211, 9, 0, 0, 30, 64, 21, 3, 2, 1, 1, + 40, 34, 4, 16, 80, 3, 6, 38, 79, 2, 6, 26, 79, 1, 6, 23, 79, 43, 43, 43, + 43, 52, 52, 52, 0, 0, 255, 255, 0, 71, 255, 91, 1, 204, 2, 185, 2, 38, 3, 180, + 0, 0, 1, 6, 4, 130, 0, 0, 0, 19, 185, 0, 2, 255, 240, 64, 9, 32, 43, 5, + 11, 80, 2, 8, 49, 79, 43, 43, 52, 0, 255, 255, 0, 71, 255, 91, 1, 204, 2, 185, + 2, 38, 3, 180, 0, 0, 1, 6, 4, 188, 9, 0, 0, 19, 185, 0, 2, 255, 249, 64, + 9, 36, 48, 5, 11, 80, 2, 8, 32, 79, 43, 43, 52, 0, 255, 255, 0, 71, 255, 246, + 1, 171, 2, 157, 2, 38, 3, 184, 0, 0, 1, 6, 4, 133, 0, 0, 0, 16, 64, 11, + 1, 1, 40, 26, 4, 16, 80, 1, 6, 27, 79, 43, 43, 52, 255, 255, 0, 71, 255, 246, + 1, 171, 3, 4, 2, 38, 3, 184, 0, 0, 1, 6, 4, 134, 0, 0, 0, 30, 64, 21, + 3, 2, 1, 1, 24, 42, 4, 16, 80, 3, 6, 52, 79, 2, 6, 34, 79, 1, 6, 22, + 79, 43, 43, 43, 43, 52, 52, 52, 0, 0, 255, 255, 0, 13, 0, 0, 1, 232, 3, 40, + 2, 38, 0, 60, 0, 0, 1, 7, 1, 97, 0, 0, 0, 139, 0, 16, 64, 11, 1, 0, + 21, 35, 4, 12, 80, 1, 4, 17, 79, 43, 43, 52, 0, 0, 255, 255, 0, 13, 0, 0, + 1, 232, 3, 6, 2, 38, 0, 60, 0, 0, 1, 7, 0, 138, 0, 0, 0, 139, 0, 16, + 64, 11, 1, 0, 17, 18, 4, 12, 80, 1, 4, 19, 79, 43, 43, 52, 0, 0, 255, 255, + 255, 102, 0, 0, 1, 232, 2, 118, 2, 38, 0, 60, 0, 0, 1, 7, 0, 67, 254, 195, + 255, 193, 0, 13, 185, 0, 1, 254, 191, 180, 20, 18, 4, 12, 80, 43, 52, 0, 255, 255, + 255, 66, 0, 0, 1, 232, 2, 118, 2, 55, 0, 143, 254, 152, 255, 193, 0, 6, 0, 60, + 0, 0, 255, 255, 255, 164, 0, 0, 1, 199, 2, 122, 2, 38, 3, 156, 0, 0, 1, 7, + 4, 188, 254, 235, 255, 193, 0, 13, 185, 0, 2, 254, 221, 180, 34, 46, 9, 2, 80, 43, + 52, 0, 0, 3, 0, 73, 2, 4, 1, 171, 2, 185, 0, 3, 0, 15, 0, 27, 0, 52, + 64, 23, 25, 19, 19, 2, 64, 1, 128, 0, 3, 3, 7, 13, 22, 10, 64, 16, 4, 4, + 3, 0, 128, 1, 2, 0, 47, 51, 26, 205, 50, 51, 47, 51, 26, 205, 50, 1, 47, 205, + 51, 47, 205, 26, 221, 26, 205, 51, 47, 205, 49, 48, 19, 23, 7, 39, 7, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 51, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, + 240, 80, 47, 93, 59, 20, 28, 28, 20, 21, 28, 28, 237, 21, 28, 28, 21, 20, 28, 28, + 2, 185, 153, 28, 142, 103, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, 27, 22, + 23, 26, 0, 3, 0, 73, 2, 4, 1, 171, 2, 185, 0, 3, 0, 15, 0, 27, 0, 52, + 64, 23, 13, 7, 7, 3, 64, 0, 128, 1, 2, 2, 19, 25, 10, 22, 64, 4, 16, 16, + 0, 3, 128, 2, 1, 0, 47, 51, 26, 205, 50, 51, 47, 51, 26, 205, 50, 1, 47, 205, + 51, 47, 205, 26, 221, 26, 205, 51, 47, 205, 49, 48, 1, 7, 39, 55, 23, 34, 38, 53, + 52, 54, 51, 50, 22, 21, 20, 6, 33, 34, 38, 53, 52, 54, 51, 50, 22, 21, 20, 6, + 1, 64, 93, 47, 80, 119, 21, 28, 28, 21, 20, 28, 28, 254, 234, 19, 29, 29, 19, 21, + 28, 28, 2, 146, 142, 28, 153, 142, 26, 23, 22, 27, 27, 22, 23, 26, 26, 23, 22, 27, + 27, 22, 23, 26, 0, 1, 0, 152, 2, 6, 1, 91, 2, 181, 0, 3, 0, 26, 64, 10, + 0, 3, 2, 1, 3, 64, 0, 128, 1, 2, 0, 47, 205, 26, 221, 26, 205, 1, 47, 51, + 205, 50, 49, 48, 19, 23, 7, 39, 199, 148, 35, 160, 2, 181, 129, 46, 113, 255, 255, 0, + 36, 255, 86, 1, 210, 2, 181, 2, 38, 3, 188, 0, 0, 0, 38, 4, 176, 4, 0, 1, + 6, 4, 131, 27, 0, 0, 12, 183, 2, 1, 4, 56, 61, 10, 47, 80, 43, 52, 52, 0, + 0, 255, 255, 0, 36, 255, 86, 1, 210, 1, 218, 2, 38, 3, 188, 0, 0, 1, 6, 4, + 131, 27, 0, 0, 10, 182, 1, 29, 62, 57, 10, 47, 80, 43, 52, 0, 0, 255, 255, 0, + 36, 255, 86, 1, 210, 2, 187, 2, 38, 3, 188, 0, 0, 0, 38, 3, 209, 25, 0, 1, + 6, 4, 131, 27, 0, 0, 12, 183, 2, 1, 21, 55, 61, 10, 47, 80, 43, 52, 52, 0, + 0, 255, 255, 0, 36, 255, 247, 1, 210, 2, 157, 2, 38, 3, 188, 0, 0, 1, 6, 4, + 133, 0, 0, 0, 19, 185, 0, 1, 255, 255, 64, 9, 71, 57, 10, 47, 80, 1, 16, 58, + 79, 43, 43, 52, 0, 255, 255, 0, 36, 255, 86, 1, 210, 2, 157, 2, 38, 3, 188, 0, + 0, 0, 38, 4, 131, 27, 0, 1, 6, 4, 133, 0, 0, 0, 15, 177, 2, 1, 184, 255, + 255, 180, 86, 72, 10, 47, 80, 43, 52, 52, 0, 0, 0, 255, 255, 255, 112, 255, 243, 1, + 216, 2, 121, 2, 38, 0, 50, 0, 0, 1, 7, 0, 67, 254, 205, 255, 193, 0, 13, 185, + 0, 2, 254, 201, 180, 35, 33, 0, 9, 80, 43, 52, 0, 255, 255, 255, 156, 255, 243, 1, + 216, 2, 121, 2, 55, 0, 143, 254, 242, 255, 193, 0, 6, 0, 50, 0, 0, 255, 255, 255, + 110, 0, 0, 1, 226, 2, 121, 2, 38, 3, 163, 0, 0, 1, 7, 0, 67, 254, 203, 255, + 193, 0, 13, 185, 0, 1, 254, 200, 180, 47, 45, 0, 18, 80, 43, 52, 0, 255, 255, 255, + 154, 0, 0, 1, 226, 2, 121, 2, 38, 3, 163, 0, 0, 1, 7, 0, 143, 254, 240, 255, + 193, 0, 13, 185, 0, 1, 254, 244, 180, 46, 44, 0, 18, 80, 43, 52, 0, 0, 2, 0, + 18, 255, 247, 1, 244, 2, 121, 0, 47, 0, 61, 0, 180, 185, 0, 39, 255, 240, 64, 15, + 15, 16, 0, 76, 35, 32, 16, 0, 77, 35, 24, 15, 0, 77, 15, 184, 255, 224, 179, 20, + 0, 77, 15, 184, 255, 240, 179, 19, 0, 77, 15, 184, 255, 232, 64, 87, 17, 18, 0, 76, + 11, 16, 18, 20, 0, 76, 11, 24, 17, 0, 77, 23, 95, 27, 111, 27, 2, 27, 64, 19, + 22, 72, 27, 27, 32, 118, 18, 24, 24, 15, 18, 31, 18, 47, 18, 3, 18, 53, 115, 15, + 56, 1, 8, 56, 61, 3, 176, 47, 192, 47, 208, 47, 3, 161, 47, 1, 47, 47, 42, 118, + 8, 2, 2, 8, 54, 73, 61, 136, 48, 81, 37, 124, 13, 69, 27, 47, 47, 23, 3, 121, + 26, 0, 68, 0, 63, 50, 237, 50, 50, 17, 51, 63, 237, 63, 237, 63, 1, 47, 51, 47, + 16, 237, 50, 47, 93, 93, 51, 47, 222, 94, 93, 253, 206, 93, 50, 47, 16, 237, 50, 47, + 43, 93, 51, 49, 48, 43, 43, 43, 43, 43, 43, 43, 43, 51, 35, 53, 51, 46, 3, 53, + 52, 62, 2, 51, 50, 30, 2, 21, 20, 14, 2, 7, 51, 21, 35, 53, 62, 3, 53, 52, + 46, 2, 35, 34, 14, 2, 21, 20, 30, 2, 23, 5, 46, 3, 53, 17, 51, 17, 20, 30, + 2, 23, 154, 136, 67, 13, 22, 17, 9, 17, 35, 56, 39, 39, 55, 35, 17, 10, 16, 22, + 13, 65, 134, 12, 21, 15, 9, 7, 16, 28, 22, 22, 28, 17, 7, 9, 15, 21, 12, 1, + 79, 35, 45, 25, 9, 73, 4, 12, 20, 16, 70, 22, 65, 76, 81, 39, 57, 102, 76, 45, + 45, 76, 101, 57, 39, 82, 76, 65, 22, 70, 60, 21, 64, 75, 80, 38, 47, 82, 60, 35, + 35, 60, 82, 47, 38, 80, 75, 64, 21, 69, 3, 20, 33, 46, 30, 1, 85, 254, 185, 19, + 25, 18, 10, 4, 0, 1, 0, 152, 2, 6, 1, 91, 2, 181, 0, 3, 0, 26, 64, 10, + 3, 0, 1, 2, 0, 64, 3, 128, 2, 1, 0, 47, 205, 26, 221, 26, 205, 1, 47, 51, + 205, 50, 49, 48, 1, 7, 39, 55, 1, 91, 159, 36, 148, 2, 119, 113, 46, 129, 0, 1, + 0, 185, 2, 1, 1, 58, 2, 185, 0, 16, 0, 24, 64, 9, 0, 16, 13, 5, 11, 8, + 13, 16, 0, 0, 47, 50, 221, 205, 1, 47, 205, 50, 206, 50, 49, 48, 1, 46, 3, 53, + 52, 54, 51, 50, 22, 21, 20, 7, 22, 22, 23, 1, 26, 20, 35, 26, 16, 32, 23, 23, + 29, 34, 10, 28, 18, 2, 1, 13, 32, 35, 34, 15, 27, 28, 27, 21, 32, 13, 17, 28, + 15, 255, 255, 0, 6, 255, 86, 1, 235, 2, 122, 2, 38, 0, 36, 0, 0, 0, 39, 4, + 130, 255, 77, 255, 193, 1, 6, 4, 131, 18, 0, 0, 15, 177, 3, 2, 184, 255, 182, 180, + 23, 45, 4, 15, 80, 43, 52, 52, 0, 255, 255, 255, 245, 255, 86, 1, 235, 2, 122, 2, + 38, 0, 36, 0, 0, 0, 39, 4, 188, 255, 60, 255, 193, 1, 6, 4, 131, 18, 0, 0, + 15, 177, 3, 2, 184, 255, 174, 180, 27, 44, 4, 15, 80, 43, 52, 52, 0, 255, 255, 255, + 69, 255, 86, 1, 235, 2, 124, 2, 38, 0, 36, 0, 0, 0, 39, 4, 145, 254, 229, 255, + 193, 1, 6, 4, 131, 18, 0, 0, 17, 178, 4, 3, 2, 184, 255, 86, 180, 23, 49, 4, + 15, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, 88, 255, 86, 1, 235, 2, 124, 2, + 38, 0, 36, 0, 0, 0, 39, 4, 158, 254, 239, 255, 193, 1, 6, 4, 131, 18, 0, 0, + 17, 178, 4, 3, 2, 184, 255, 95, 180, 25, 47, 4, 15, 80, 43, 52, 52, 52, 0, 0, + 0, 255, 255, 255, 120, 255, 86, 1, 235, 2, 124, 2, 38, 0, 36, 0, 0, 0, 39, 4, + 146, 255, 14, 255, 193, 1, 6, 4, 131, 18, 0, 0, 17, 178, 4, 3, 2, 184, 255, 111, + 180, 23, 49, 4, 15, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, 98, 255, 86, 1, + 235, 2, 124, 2, 38, 0, 36, 0, 0, 0, 39, 4, 159, 255, 2, 255, 193, 1, 6, 4, + 131, 18, 0, 0, 17, 178, 4, 3, 2, 184, 255, 100, 180, 25, 47, 4, 15, 80, 43, 52, + 52, 52, 0, 0, 0, 255, 255, 255, 174, 255, 86, 1, 235, 2, 180, 2, 38, 0, 36, 0, + 0, 0, 39, 4, 147, 255, 43, 255, 161, 1, 6, 4, 131, 18, 0, 0, 17, 178, 4, 3, + 2, 184, 255, 138, 180, 54, 64, 4, 15, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, + 164, 255, 86, 1, 235, 2, 180, 2, 38, 0, 36, 0, 0, 0, 39, 4, 160, 255, 33, 255, + 161, 1, 6, 4, 131, 18, 0, 0, 17, 178, 4, 3, 2, 184, 255, 133, 180, 54, 64, 4, + 15, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, 131, 255, 86, 1, 199, 2, 122, 2, + 38, 0, 43, 0, 0, 0, 39, 4, 130, 254, 202, 255, 193, 1, 6, 4, 131, 27, 0, 0, + 15, 177, 2, 1, 184, 255, 121, 180, 12, 34, 7, 1, 80, 43, 52, 52, 0, 255, 255, 255, + 136, 255, 86, 1, 199, 2, 122, 2, 38, 0, 43, 0, 0, 0, 39, 4, 188, 254, 207, 255, + 193, 1, 6, 4, 131, 27, 0, 0, 15, 177, 2, 1, 184, 255, 124, 180, 16, 33, 7, 1, + 80, 43, 52, 52, 0, 255, 255, 254, 217, 255, 86, 1, 199, 2, 124, 2, 38, 0, 43, 0, + 0, 0, 39, 4, 145, 254, 121, 255, 193, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, + 1, 184, 255, 36, 180, 12, 38, 7, 1, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 254, + 234, 255, 86, 1, 199, 2, 124, 2, 38, 0, 43, 0, 0, 0, 39, 4, 158, 254, 129, 255, + 193, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 45, 180, 14, 36, 7, + 1, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 254, 236, 255, 86, 1, 199, 2, 124, 2, + 38, 0, 43, 0, 0, 0, 39, 4, 146, 254, 130, 255, 193, 1, 6, 4, 131, 27, 0, 0, + 17, 178, 3, 2, 1, 184, 255, 46, 180, 12, 38, 7, 1, 80, 43, 52, 52, 52, 0, 0, + 0, 255, 255, 254, 217, 255, 86, 1, 199, 2, 124, 2, 38, 0, 43, 0, 0, 0, 39, 4, + 159, 254, 121, 255, 193, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 36, + 180, 14, 36, 7, 1, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, 26, 255, 86, 1, + 199, 2, 180, 2, 38, 0, 43, 0, 0, 0, 39, 4, 147, 254, 151, 255, 161, 1, 6, 4, + 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 69, 180, 43, 53, 7, 1, 80, 43, 52, + 52, 52, 0, 0, 0, 255, 255, 255, 26, 255, 86, 1, 199, 2, 180, 2, 38, 0, 43, 0, + 0, 0, 39, 4, 160, 254, 151, 255, 161, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, + 1, 184, 255, 69, 180, 43, 53, 7, 1, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, + 159, 255, 86, 1, 226, 2, 122, 2, 38, 3, 163, 0, 0, 0, 39, 4, 130, 254, 230, 255, + 193, 1, 6, 4, 131, 27, 0, 0, 15, 177, 2, 1, 184, 255, 135, 180, 44, 66, 0, 18, + 80, 43, 52, 52, 0, 255, 255, 255, 132, 255, 86, 1, 226, 2, 122, 2, 38, 3, 163, 0, + 0, 0, 39, 4, 188, 254, 203, 255, 193, 1, 6, 4, 131, 27, 0, 0, 15, 177, 2, 1, + 184, 255, 122, 180, 48, 65, 0, 18, 80, 43, 52, 52, 0, 255, 255, 254, 213, 255, 86, 1, + 226, 2, 124, 2, 38, 3, 163, 0, 0, 0, 39, 4, 145, 254, 117, 255, 193, 1, 6, 4, + 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 34, 180, 44, 70, 0, 18, 80, 43, 52, + 52, 52, 0, 0, 0, 255, 255, 254, 231, 255, 86, 1, 226, 2, 124, 2, 38, 3, 163, 0, + 0, 0, 39, 4, 158, 254, 126, 255, 193, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, + 1, 184, 255, 43, 180, 46, 68, 0, 18, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, + 23, 255, 86, 1, 226, 2, 124, 2, 38, 3, 163, 0, 0, 0, 39, 4, 146, 254, 173, 255, + 193, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 67, 180, 44, 70, 0, + 18, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, 2, 255, 86, 1, 226, 2, 124, 2, + 38, 3, 163, 0, 0, 0, 39, 4, 159, 254, 162, 255, 193, 1, 6, 4, 131, 27, 0, 0, + 17, 178, 3, 2, 1, 184, 255, 57, 180, 46, 68, 0, 18, 80, 43, 52, 52, 52, 0, 0, + 0, 255, 255, 255, 86, 255, 86, 1, 226, 2, 180, 2, 38, 3, 163, 0, 0, 0, 39, 4, + 147, 254, 211, 255, 161, 1, 6, 4, 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 99, + 180, 75, 85, 0, 18, 80, 43, 52, 52, 52, 0, 0, 0, 255, 255, 255, 60, 255, 86, 1, + 226, 2, 180, 2, 38, 3, 163, 0, 0, 0, 39, 4, 160, 254, 185, 255, 161, 1, 6, 4, + 131, 27, 0, 0, 17, 178, 3, 2, 1, 184, 255, 86, 180, 75, 85, 0, 18, 80, 43, 52, + 52, 52, 0, 0, 0, 255, 255, 0, 9, 255, 86, 1, 235, 2, 107, 2, 38, 0, 36, 0, + 0, 1, 6, 4, 131, 18, 0, 0, 10, 182, 2, 21, 32, 27, 4, 15, 80, 43, 52, 0, + 0, 255, 255, 0, 45, 255, 86, 1, 199, 2, 107, 2, 38, 0, 43, 0, 0, 1, 6, 4, + 131, 27, 0, 0, 10, 182, 1, 30, 21, 16, 7, 1, 80, 43, 52, 0, 0, 255, 255, 0, + 18, 255, 86, 1, 226, 2, 121, 2, 38, 3, 163, 0, 0, 1, 6, 4, 131, 27, 0, 0, + 10, 182, 1, 30, 53, 48, 0, 18, 80, 43, 52, 0, 0, 0, 1, 0, 63, 0, 0, 1, + 217, 2, 107, 0, 40, 0, 116, 64, 64, 11, 32, 17, 0, 77, 35, 29, 34, 29, 120, 40, + 35, 20, 40, 40, 35, 34, 34, 6, 9, 118, 21, 24, 22, 22, 19, 17, 17, 21, 42, 15, + 15, 7, 7, 40, 41, 24, 7, 121, 8, 21, 8, 29, 40, 121, 0, 32, 0, 48, 0, 2, + 8, 0, 8, 0, 16, 35, 34, 68, 19, 15, 121, 16, 65, 0, 63, 237, 50, 63, 51, 18, + 57, 57, 47, 47, 93, 16, 237, 50, 17, 51, 16, 237, 50, 1, 16, 198, 50, 47, 50, 47, + 16, 204, 50, 47, 50, 50, 47, 50, 16, 237, 50, 51, 47, 135, 16, 43, 135, 125, 196, 49, + 48, 1, 43, 19, 51, 50, 62, 2, 55, 35, 53, 51, 46, 3, 35, 35, 53, 33, 7, 35, + 22, 23, 51, 7, 35, 14, 3, 7, 30, 3, 23, 35, 46, 3, 39, 63, 65, 25, 55, 48, + 37, 8, 238, 240, 4, 23, 33, 42, 23, 115, 1, 154, 12, 124, 39, 9, 59, 13, 49, 6, + 41, 59, 74, 39, 25, 60, 59, 54, 20, 97, 25, 58, 59, 57, 22, 1, 62, 8, 19, 33, + 25, 64, 27, 34, 20, 7, 64, 64, 33, 55, 64, 38, 52, 35, 18, 4, 24, 62, 69, 70, + 31, 35, 70, 65, 56, 21, 0, 7, 0, 58, 1, 52, 1, 187, 2, 181, 0, 19, 0, 31, + 0, 43, 0, 60, 0, 78, 0, 96, 0, 108, 0, 55, 64, 29, 101, 65, 40, 93, 64, 94, + 51, 55, 55, 44, 94, 93, 4, 0, 10, 103, 74, 37, 85, 85, 80, 26, 20, 61, 74, 6, + 5, 15, 77, 0, 63, 204, 23, 57, 17, 51, 17, 51, 1, 47, 204, 23, 57, 17, 51, 17, + 51, 17, 51, 51, 51, 49, 48, 1, 20, 14, 2, 35, 34, 46, 2, 53, 52, 62, 2, 51, + 50, 30, 2, 5, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 23, 6, 6, 23, 22, + 22, 55, 54, 54, 39, 38, 38, 39, 52, 54, 55, 39, 6, 6, 7, 22, 21, 20, 7, 22, + 23, 55, 38, 38, 55, 50, 22, 23, 55, 38, 38, 39, 6, 39, 38, 39, 38, 35, 34, 7, + 23, 54, 23, 34, 39, 7, 22, 51, 50, 55, 54, 55, 54, 23, 54, 54, 55, 39, 6, 6, + 55, 22, 54, 55, 54, 38, 39, 38, 6, 7, 6, 22, 1, 187, 30, 53, 70, 40, 40, 70, + 52, 30, 30, 52, 70, 40, 40, 70, 53, 30, 254, 189, 11, 15, 15, 11, 11, 15, 15, 172, + 9, 6, 5, 6, 20, 10, 9, 5, 5, 6, 20, 137, 18, 15, 20, 17, 24, 5, 14, 14, + 11, 35, 20, 15, 18, 75, 30, 42, 3, 37, 2, 18, 14, 15, 16, 16, 1, 12, 18, 27, + 22, 18, 16, 15, 15, 16, 18, 22, 27, 18, 12, 1, 16, 16, 15, 14, 18, 2, 37, 3, + 42, 23, 9, 20, 6, 5, 5, 9, 10, 20, 6, 5, 6, 1, 244, 40, 70, 52, 30, 30, + 52, 70, 40, 40, 70, 53, 30, 30, 53, 70, 14, 15, 11, 10, 15, 15, 10, 11, 15, 117, + 5, 20, 10, 9, 6, 6, 5, 21, 9, 10, 4, 86, 20, 31, 11, 32, 12, 34, 20, 9, + 19, 17, 11, 39, 26, 32, 11, 31, 95, 40, 29, 1, 21, 37, 14, 5, 7, 10, 16, 4, + 12, 31, 7, 151, 7, 31, 12, 4, 16, 10, 7, 5, 14, 37, 21, 1, 29, 40, 167, 6, + 5, 10, 9, 21, 5, 5, 6, 8, 11, 19, 0, 14, 255, 91, 0, 0, 2, 153, 2, 180, + 0, 3, 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, + 0, 43, 0, 47, 0, 51, 0, 55, 7, 175, 64, 31, 51, 16, 9, 0, 77, 50, 24, 9, + 0, 77, 43, 8, 9, 0, 77, 42, 8, 9, 0, 77, 39, 16, 9, 0, 77, 38, 16, 9, + 0, 77, 35, 184, 255, 240, 179, 9, 0, 77, 34, 184, 255, 248, 64, 14, 9, 0, 77, 33, + 16, 9, 0, 77, 32, 8, 9, 0, 77, 30, 184, 255, 248, 64, 185, 9, 0, 77, 29, 16, + 9, 0, 77, 28, 24, 9, 0, 77, 6, 27, 38, 27, 54, 27, 70, 27, 102, 27, 134, 27, + 6, 61, 7, 27, 1, 9, 6, 26, 38, 26, 54, 26, 70, 26, 102, 26, 134, 26, 6, 61, + 7, 26, 1, 9, 6, 19, 22, 19, 38, 19, 102, 19, 4, 6, 18, 22, 18, 38, 18, 102, + 18, 4, 61, 9, 5, 1, 9, 4, 1, 62, 9, 1, 25, 1, 2, 9, 0, 25, 0, 2, + 65, 7, 38, 1, 7, 37, 1, 7, 34, 1, 7, 33, 1, 9, 31, 1, 9, 28, 120, 9, + 73, 9, 23, 105, 23, 2, 9, 20, 105, 20, 2, 6, 14, 54, 14, 102, 14, 3, 6, 13, + 54, 13, 102, 13, 3, 9, 11, 57, 11, 2, 9, 8, 57, 8, 2, 61, 154, 49, 170, 49, + 2, 105, 49, 121, 49, 137, 49, 3, 49, 64, 10, 14, 72, 10, 49, 1, 49, 47, 128, 52, + 59, 72, 47, 127, 40, 143, 40, 2, 94, 40, 110, 40, 2, 77, 40, 1, 62, 40, 1, 40, + 184, 1, 128, 64, 78, 40, 43, 72, 154, 40, 170, 40, 2, 105, 40, 121, 40, 137, 40, 3, + 40, 64, 10, 14, 72, 40, 176, 9, 73, 40, 36, 128, 52, 59, 72, 127, 36, 143, 36, 2, + 94, 36, 110, 36, 2, 77, 36, 1, 46, 36, 62, 36, 2, 13, 36, 29, 36, 2, 253, 36, + 1, 154, 36, 170, 36, 2, 105, 36, 121, 36, 137, 36, 3, 36, 64, 10, 14, 72, 10, 36, + 1, 36, 54, 184, 255, 128, 64, 9, 52, 59, 72, 7, 54, 1, 54, 53, 50, 184, 255, 128, + 64, 12, 13, 19, 72, 23, 50, 39, 50, 55, 50, 3, 50, 43, 184, 254, 0, 64, 19, 45, + 49, 72, 49, 43, 1, 32, 43, 1, 1, 43, 17, 43, 2, 241, 43, 1, 0, 43, 184, 255, + 128, 64, 12, 13, 19, 72, 16, 43, 32, 43, 48, 43, 3, 43, 39, 184, 254, 0, 179, 45, + 49, 72, 39, 184, 254, 64, 179, 40, 44, 72, 39, 184, 255, 128, 64, 255, 13, 19, 72, 16, + 39, 32, 39, 48, 39, 3, 39, 28, 12, 32, 1, 9, 3, 32, 34, 47, 21, 143, 21, 2, + 9, 21, 1, 59, 143, 21, 159, 21, 255, 21, 3, 94, 21, 1, 189, 21, 237, 21, 253, 21, + 3, 91, 21, 1, 76, 21, 1, 27, 21, 1, 170, 21, 186, 21, 2, 121, 21, 1, 8, 21, + 24, 21, 2, 10, 21, 9, 19, 1, 59, 19, 15, 12, 63, 12, 111, 12, 3, 61, 79, 12, + 143, 12, 191, 12, 239, 12, 4, 30, 12, 1, 173, 12, 237, 12, 2, 123, 12, 1, 76, 12, + 1, 11, 12, 1, 170, 12, 218, 12, 2, 57, 12, 105, 12, 2, 8, 12, 1, 11, 12, 47, + 8, 95, 8, 2, 9, 8, 1, 59, 233, 8, 1, 143, 8, 191, 8, 2, 30, 8, 1, 237, + 8, 1, 123, 8, 1, 76, 8, 1, 170, 8, 218, 8, 2, 8, 8, 56, 8, 2, 11, 8, + 102, 26, 134, 26, 2, 7, 26, 1, 51, 26, 25, 0, 23, 96, 23, 2, 61, 80, 23, 128, + 23, 144, 23, 240, 23, 4, 225, 23, 241, 23, 2, 178, 23, 1, 83, 23, 1, 20, 23, 68, + 23, 2, 181, 23, 1, 118, 23, 166, 23, 2, 7, 23, 23, 23, 2, 10, 23, 0, 15, 48, + 15, 96, 15, 3, 61, 128, 15, 176, 15, 224, 15, 3, 17, 15, 65, 15, 2, 225, 15, 1, + 114, 15, 162, 15, 2, 4, 15, 68, 15, 2, 212, 64, 62, 15, 1, 165, 15, 1, 102, 15, + 1, 7, 15, 55, 15, 2, 11, 15, 0, 10, 48, 10, 2, 61, 144, 10, 192, 10, 2, 33, + 10, 1, 241, 10, 1, 130, 10, 1, 84, 10, 1, 228, 10, 1, 181, 10, 1, 70, 10, 1, + 23, 10, 1, 10, 0, 4, 57, 230, 3, 1, 3, 6, 16, 25, 31, 184, 255, 128, 64, 9, + 52, 69, 72, 31, 34, 44, 53, 56, 53, 184, 254, 0, 64, 59, 49, 59, 72, 97, 53, 1, + 64, 53, 80, 53, 2, 33, 53, 49, 53, 2, 16, 53, 1, 1, 53, 1, 225, 53, 241, 53, + 2, 178, 53, 194, 53, 210, 53, 3, 147, 53, 163, 53, 2, 130, 53, 1, 99, 53, 115, 53, + 2, 84, 53, 1, 67, 53, 1, 0, 146, 53, 1, 1, 53, 184, 255, 128, 64, 18, 14, 18, + 72, 51, 53, 1, 2, 16, 53, 32, 53, 2, 8, 53, 1, 3, 53, 34, 184, 255, 0, 64, + 22, 24, 29, 72, 181, 34, 197, 34, 213, 34, 3, 166, 34, 1, 34, 88, 51, 1, 51, 221, + 44, 1, 44, 184, 1, 64, 64, 12, 32, 38, 72, 75, 44, 91, 44, 2, 60, 44, 1, 44, + 184, 1, 0, 64, 28, 23, 28, 72, 170, 44, 186, 44, 202, 44, 3, 44, 128, 16, 19, 72, + 90, 44, 1, 73, 44, 1, 44, 64, 10, 13, 72, 44, 31, 184, 2, 0, 183, 50, 69, 72, + 31, 49, 49, 38, 52, 184, 2, 0, 179, 48, 59, 72, 52, 184, 1, 192, 179, 44, 47, 72, + 52, 184, 1, 128, 64, 51, 35, 43, 72, 124, 52, 140, 52, 2, 107, 52, 1, 92, 52, 1, + 75, 52, 1, 52, 128, 16, 19, 72, 90, 52, 1, 52, 64, 10, 14, 72, 52, 27, 35, 43, + 35, 59, 35, 3, 35, 192, 20, 26, 72, 35, 87, 41, 1, 41, 43, 91, 45, 184, 254, 128, + 179, 36, 39, 72, 45, 184, 254, 192, 179, 30, 35, 72, 45, 184, 255, 0, 179, 26, 29, 72, + 45, 184, 255, 64, 179, 17, 25, 72, 45, 184, 255, 128, 64, 13, 13, 16, 72, 7, 45, 23, + 45, 39, 45, 3, 10, 45, 30, 184, 254, 0, 64, 174, 50, 69, 72, 30, 8, 36, 1, 15, + 36, 38, 89, 32, 25, 64, 25, 80, 25, 96, 25, 128, 25, 160, 25, 6, 23, 25, 1, 0, + 25, 1, 59, 192, 25, 224, 25, 2, 177, 25, 1, 96, 25, 128, 25, 160, 25, 3, 1, 25, + 17, 25, 33, 25, 65, 25, 4, 225, 25, 1, 162, 25, 194, 25, 2, 131, 25, 1, 114, 25, + 1, 99, 25, 1, 4, 25, 36, 25, 68, 25, 3, 165, 25, 197, 25, 213, 25, 229, 25, 4, + 102, 25, 134, 25, 2, 71, 25, 1, 54, 25, 1, 7, 25, 1, 11, 25, 32, 6, 1, 7, + 6, 1, 60, 214, 6, 1, 128, 6, 1, 119, 6, 1, 225, 6, 1, 67, 6, 1, 165, 6, + 1, 7, 6, 1, 12, 6, 105, 23, 153, 23, 2, 8, 23, 1, 51, 23, 31, 16, 47, 16, + 63, 16, 127, 16, 4, 8, 16, 1, 60, 175, 16, 239, 16, 2, 158, 16, 1, 79, 16, 143, + 16, 2, 13, 16, 1, 16, 184, 1, 96, 64, 255, 42, 73, 76, 16, 92, 16, 108, 16, 172, + 16, 236, 16, 5, 11, 16, 1, 203, 16, 1, 170, 16, 186, 16, 2, 25, 16, 41, 16, 105, + 16, 3, 8, 16, 1, 11, 16, 15, 3, 31, 3, 2, 65, 216, 3, 1, 143, 3, 159, 3, + 2, 253, 3, 1, 238, 3, 1, 76, 3, 92, 3, 2, 187, 3, 1, 170, 3, 1, 9, 3, + 25, 3, 2, 15, 3, 23, 21, 1, 21, 21, 10, 15, 24, 47, 24, 79, 24, 95, 24, 111, + 24, 143, 24, 175, 24, 7, 59, 191, 24, 207, 24, 239, 24, 3, 174, 24, 1, 79, 24, 111, + 24, 143, 24, 3, 14, 24, 30, 24, 46, 24, 3, 141, 24, 173, 24, 205, 24, 237, 24, 4, + 76, 24, 108, 24, 124, 24, 3, 11, 24, 43, 24, 2, 219, 24, 235, 24, 2, 138, 24, 170, + 24, 202, 24, 3, 73, 24, 105, 24, 2, 56, 24, 1, 41, 24, 1, 8, 24, 1, 11, 24, + 15, 7, 1, 62, 217, 7, 1, 142, 7, 1, 120, 7, 1, 237, 7, 1, 75, 7, 1, 170, + 7, 1, 8, 7, 1, 12, 7, 102, 13, 1, 7, 13, 1, 51, 13, 15, 91, 0, 17, 16, + 17, 32, 17, 96, 17, 4, 61, 128, 17, 144, 17, 160, 17, 224, 17, 4, 1, 17, 65, 17, + 2, 225, 17, 241, 17, 2, 162, 17, 1, 83, 17, 99, 17, 2, 4, 17, 68, 17, 2, 101, + 17, 165, 17, 181, 17, 197, 64, 57, 17, 4, 7, 17, 23, 17, 39, 17, 3, 11, 17, 0, + 2, 16, 2, 2, 65, 224, 2, 240, 2, 2, 167, 2, 1, 80, 2, 1, 65, 2, 1, 178, + 2, 1, 163, 2, 1, 0, 0, 2, 16, 2, 2, 1, 96, 2, 112, 2, 2, 2, 2, 175, + 8, 1, 8, 10, 89, 0, 63, 205, 114, 50, 95, 93, 95, 113, 95, 113, 113, 114, 114, 114, + 114, 94, 93, 50, 94, 93, 93, 113, 113, 113, 113, 114, 114, 94, 93, 63, 205, 94, 93, 93, + 50, 94, 93, 93, 113, 113, 114, 114, 114, 94, 93, 50, 94, 93, 93, 93, 93, 93, 93, 113, + 113, 113, 114, 114, 114, 114, 94, 93, 18, 57, 47, 93, 51, 94, 93, 93, 93, 113, 113, 113, + 114, 114, 94, 93, 51, 94, 93, 93, 93, 93, 113, 113, 43, 114, 114, 114, 114, 94, 93, 93, + 205, 94, 93, 93, 50, 94, 93, 93, 113, 113, 114, 114, 114, 94, 93, 93, 50, 94, 93, 93, + 93, 93, 93, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 94, 93, 93, 93, 63, 205, 94, + 93, 50, 43, 50, 94, 93, 43, 43, 43, 43, 43, 63, 205, 93, 50, 43, 113, 50, 43, 93, + 43, 113, 113, 113, 113, 43, 43, 43, 18, 57, 47, 51, 43, 51, 43, 93, 93, 43, 93, 43, + 113, 113, 43, 113, 205, 93, 50, 93, 93, 43, 50, 95, 93, 93, 95, 93, 43, 95, 93, 95, + 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 43, 1, 16, 220, 50, 220, 50, 43, + 222, 50, 220, 50, 114, 204, 205, 50, 50, 93, 93, 93, 93, 113, 113, 113, 114, 114, 94, 93, + 50, 94, 93, 93, 93, 93, 113, 113, 113, 114, 114, 94, 93, 50, 94, 93, 93, 93, 113, 113, + 113, 113, 114, 94, 93, 16, 205, 94, 93, 93, 50, 94, 93, 93, 113, 113, 113, 114, 114, 114, + 94, 93, 93, 50, 94, 93, 93, 93, 113, 113, 113, 113, 114, 114, 94, 93, 50, 94, 93, 50, + 94, 93, 93, 93, 113, 113, 113, 113, 114, 114, 94, 93, 93, 16, 205, 95, 94, 93, 50, 50, + 93, 43, 43, 43, 50, 93, 43, 95, 113, 114, 114, 114, 43, 50, 93, 43, 16, 205, 93, 43, + 50, 93, 43, 93, 93, 113, 114, 114, 114, 114, 114, 43, 50, 43, 43, 93, 93, 43, 114, 114, + 114, 114, 50, 43, 50, 93, 43, 93, 93, 49, 48, 0, 94, 93, 93, 93, 93, 93, 93, 43, + 94, 93, 93, 93, 93, 93, 1, 94, 93, 93, 94, 93, 93, 94, 93, 93, 94, 93, 94, 93, + 94, 93, 94, 93, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1, 17, 51, + 17, 3, 17, 51, 17, 1, 53, 33, 21, 1, 53, 33, 21, 1, 17, 51, 17, 21, 53, 33, + 21, 1, 17, 51, 17, 3, 17, 51, 17, 3, 17, 51, 17, 1, 53, 33, 21, 1, 53, 33, + 21, 1, 17, 51, 17, 21, 53, 33, 21, 1, 17, 51, 17, 2, 124, 29, 29, 29, 254, 175, + 1, 52, 254, 204, 1, 52, 254, 175, 29, 1, 52, 254, 175, 29, 155, 28, 28, 28, 254, 175, + 1, 53, 254, 203, 1, 53, 254, 174, 29, 1, 53, 254, 174, 29, 1, 107, 1, 42, 254, 214, + 254, 180, 1, 42, 254, 214, 2, 121, 28, 28, 253, 104, 29, 29, 1, 107, 1, 42, 254, 214, + 31, 29, 29, 254, 211, 1, 42, 254, 214, 1, 76, 1, 42, 254, 214, 254, 180, 1, 42, 254, + 214, 2, 121, 28, 28, 253, 104, 29, 29, 1, 107, 1, 42, 254, 214, 31, 29, 29, 254, 211, + 1, 42, 254, 214, 0, 3, 0, 4, 255, 243, 1, 240, 1, 222, 0, 3, 0, 29, 0, 41, + 0, 50, 64, 22, 23, 9, 33, 39, 4, 28, 17, 39, 39, 2, 0, 20, 14, 4, 36, 30, + 14, 30, 14, 30, 1, 3, 0, 47, 204, 57, 57, 47, 47, 16, 222, 205, 16, 206, 1, 47, + 204, 57, 47, 205, 212, 206, 16, 222, 220, 206, 49, 48, 55, 55, 23, 7, 55, 52, 62, 2, + 53, 52, 46, 2, 35, 34, 6, 7, 23, 54, 51, 50, 22, 21, 20, 14, 2, 21, 23, 23, + 50, 54, 53, 52, 38, 35, 34, 6, 21, 20, 22, 4, 246, 246, 246, 20, 24, 28, 23, 9, + 21, 35, 25, 21, 44, 18, 17, 29, 29, 18, 21, 23, 27, 22, 1, 31, 14, 21, 21, 14, + 16, 22, 22, 232, 246, 246, 245, 177, 22, 33, 29, 32, 22, 12, 27, 21, 14, 11, 12, 46, + 17, 13, 15, 16, 24, 27, 32, 23, 10, 105, 20, 17, 17, 21, 21, 17, 17, 20, 255, 255, + 255, 222, 255, 244, 2, 19, 2, 121, 0, 39, 1, 111, 255, 106, 0, 0, 0, 38, 0, 17, + 0, 0, 1, 7, 1, 116, 0, 150, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 34, + 1, 34, 3, 62, 0, 5, 0, 17, 181, 4, 1, 0, 2, 5, 0, 0, 47, 205, 47, 1, + 47, 47, 205, 49, 48, 17, 51, 17, 51, 17, 33, 210, 80, 254, 222, 1, 114, 1, 204, 253, + 228, 0, 1, 0, 210, 1, 34, 1, 244, 3, 62, 0, 5, 0, 17, 181, 2, 5, 3, 5, + 2, 0, 0, 47, 47, 205, 1, 47, 47, 205, 49, 48, 19, 51, 17, 51, 21, 33, 210, 80, + 210, 254, 222, 3, 62, 254, 52, 80, 0, 1, 0, 210, 255, 86, 1, 244, 1, 114, 0, 5, + 0, 17, 181, 2, 3, 0, 5, 3, 0, 0, 47, 205, 47, 1, 47, 205, 47, 49, 48, 19, + 33, 21, 35, 17, 35, 210, 1, 34, 210, 80, 1, 114, 80, 254, 52, 0, 1, 0, 210, 255, + 86, 1, 34, 3, 62, 0, 3, 0, 13, 179, 3, 2, 2, 1, 0, 47, 47, 1, 47, 205, + 49, 48, 5, 35, 17, 51, 1, 34, 80, 80, 170, 3, 232, 0, 1, 0, 0, 1, 34, 1, + 244, 1, 114, 0, 3, 0, 13, 179, 2, 1, 0, 1, 0, 47, 205, 1, 47, 47, 49, 48, + 17, 53, 33, 21, 1, 244, 1, 34, 80, 80, 0, 1, 0, 0, 255, 86, 1, 34, 3, 62, + 0, 7, 0, 21, 183, 7, 2, 5, 4, 6, 3, 4, 1, 0, 47, 47, 205, 47, 1, 47, + 47, 51, 205, 49, 48, 5, 35, 17, 35, 53, 51, 17, 51, 1, 34, 80, 210, 210, 80, 170, + 1, 204, 80, 1, 204, 0, 1, 0, 0, 255, 86, 1, 244, 1, 114, 0, 7, 0, 21, 183, + 6, 2, 5, 1, 2, 5, 7, 4, 0, 47, 47, 205, 50, 1, 47, 47, 205, 47, 49, 48, + 1, 21, 35, 17, 35, 17, 35, 53, 1, 244, 210, 80, 210, 1, 114, 80, 254, 52, 1, 204, + 80, 0, 1, 0, 0, 1, 34, 1, 244, 3, 62, 0, 7, 0, 21, 183, 6, 5, 2, 1, + 3, 5, 0, 1, 0, 47, 205, 51, 47, 1, 47, 47, 205, 47, 49, 48, 17, 53, 51, 17, + 51, 17, 51, 21, 210, 80, 210, 1, 34, 80, 1, 204, 254, 52, 80, 0, 1, 0, 210, 255, + 86, 1, 244, 3, 62, 0, 7, 0, 21, 183, 3, 5, 1, 0, 7, 5, 2, 0, 0, 47, + 47, 205, 47, 1, 47, 205, 50, 47, 49, 48, 19, 51, 17, 51, 21, 35, 17, 35, 210, 80, + 210, 210, 80, 3, 62, 254, 52, 80, 254, 52, 0, 1, 0, 0, 255, 86, 1, 244, 3, 62, + 0, 11, 0, 30, 64, 12, 7, 9, 6, 0, 3, 2, 11, 4, 9, 1, 6, 2, 0, 47, + 51, 205, 50, 47, 47, 1, 47, 47, 51, 205, 50, 47, 49, 48, 19, 35, 53, 51, 17, 51, + 17, 51, 21, 35, 17, 35, 210, 210, 210, 80, 210, 210, 80, 1, 34, 80, 1, 204, 254, 52, + 80, 254, 52, 0, 1, 0, 0, 255, 86, 1, 34, 1, 114, 0, 5, 0, 17, 181, 1, 4, + 0, 2, 4, 1, 0, 47, 197, 47, 1, 47, 47, 197, 49, 48, 17, 33, 17, 35, 17, 35, + 1, 34, 80, 210, 1, 114, 253, 228, 1, 204, 0, 2, 0, 0, 255, 86, 1, 34, 3, 62, + 0, 5, 0, 11, 0, 30, 64, 12, 7, 10, 6, 4, 1, 0, 9, 11, 6, 0, 5, 2, + 0, 47, 47, 197, 47, 197, 47, 1, 47, 47, 197, 47, 47, 197, 49, 48, 17, 51, 17, 51, + 17, 33, 21, 33, 17, 35, 17, 35, 210, 80, 254, 222, 1, 34, 80, 210, 1, 194, 1, 124, + 254, 52, 80, 254, 52, 1, 124, 0, 2, 0, 210, 255, 86, 1, 244, 3, 62, 0, 5, 0, + 11, 0, 30, 64, 12, 11, 7, 10, 4, 1, 0, 7, 10, 9, 2, 4, 1, 0, 47, 197, + 47, 47, 47, 197, 1, 47, 47, 197, 47, 197, 47, 49, 48, 1, 33, 17, 51, 17, 51, 21, + 35, 17, 35, 17, 33, 1, 244, 254, 222, 80, 210, 210, 80, 1, 34, 1, 114, 1, 204, 254, + 132, 240, 254, 132, 1, 204, 0, 2, 0, 0, 0, 210, 1, 244, 3, 62, 0, 7, 0, 11, + 0, 30, 64, 12, 11, 8, 7, 5, 2, 0, 10, 11, 3, 5, 2, 0, 0, 47, 197, 50, + 47, 47, 197, 1, 47, 47, 197, 47, 47, 47, 49, 48, 17, 53, 51, 17, 51, 17, 51, 29, + 2, 33, 53, 210, 80, 210, 254, 12, 1, 114, 80, 1, 124, 254, 132, 80, 80, 80, 80, 0, + 2, 0, 0, 0, 210, 1, 34, 3, 62, 0, 5, 0, 9, 0, 26, 64, 10, 6, 5, 7, + 4, 1, 9, 6, 0, 5, 2, 0, 47, 47, 197, 47, 197, 1, 47, 197, 50, 47, 47, 49, + 48, 17, 51, 17, 51, 17, 33, 21, 33, 21, 33, 210, 80, 254, 222, 1, 34, 254, 222, 1, + 194, 1, 124, 254, 52, 80, 80, 0, 2, 0, 210, 0, 210, 1, 244, 3, 62, 0, 5, 0, + 9, 0, 27, 64, 11, 7, 6, 4, 1, 0, 9, 6, 2, 90, 4, 1, 0, 47, 197, 63, + 47, 197, 1, 47, 47, 197, 47, 47, 49, 48, 1, 33, 17, 51, 17, 51, 5, 33, 21, 33, + 1, 244, 254, 222, 80, 210, 254, 222, 1, 34, 254, 222, 1, 114, 1, 204, 254, 132, 160, 80, + 0, 2, 0, 0, 255, 86, 1, 244, 1, 194, 0, 7, 0, 11, 0, 30, 64, 12, 11, 8, + 7, 2, 5, 0, 9, 8, 2, 6, 7, 4, 0, 47, 47, 197, 50, 47, 197, 1, 47, 47, + 197, 47, 47, 47, 49, 48, 1, 21, 35, 17, 35, 17, 35, 61, 2, 33, 21, 1, 244, 210, + 80, 210, 1, 244, 1, 34, 80, 254, 132, 1, 124, 80, 80, 80, 80, 0, 2, 0, 0, 255, + 86, 1, 34, 1, 194, 0, 5, 0, 9, 0, 26, 64, 10, 9, 8, 1, 4, 0, 6, 9, + 3, 5, 0, 0, 47, 197, 47, 47, 197, 1, 47, 47, 197, 50, 47, 49, 48, 17, 33, 17, + 35, 17, 35, 53, 33, 21, 33, 1, 34, 80, 210, 1, 34, 254, 222, 1, 34, 254, 52, 1, + 124, 240, 80, 0, 2, 0, 210, 255, 86, 1, 244, 1, 194, 0, 5, 0, 9, 0, 26, 64, + 10, 9, 8, 5, 1, 4, 6, 9, 1, 4, 3, 0, 47, 47, 197, 47, 197, 1, 47, 197, + 47, 47, 47, 49, 48, 37, 35, 17, 35, 17, 33, 37, 33, 21, 33, 1, 244, 210, 80, 1, + 34, 254, 222, 1, 34, 254, 222, 210, 254, 132, 1, 204, 160, 80, 0, 2, 0, 130, 255, 86, + 1, 114, 3, 62, 0, 3, 0, 7, 0, 21, 183, 5, 4, 2, 3, 4, 2, 7, 1, 0, + 47, 51, 47, 51, 1, 47, 197, 47, 197, 49, 48, 23, 35, 17, 59, 2, 17, 35, 210, 80, + 80, 80, 80, 80, 170, 3, 232, 252, 24, 0, 4, 0, 0, 255, 86, 1, 244, 3, 62, 0, + 5, 0, 11, 0, 17, 0, 23, 0, 54, 64, 24, 7, 16, 10, 13, 11, 12, 18, 5, 22, + 1, 19, 4, 9, 21, 7, 22, 10, 19, 16, 1, 13, 4, 14, 2, 0, 47, 51, 47, 51, + 197, 50, 47, 51, 197, 50, 47, 51, 1, 47, 51, 197, 50, 47, 51, 47, 51, 47, 51, 197, + 50, 49, 48, 17, 51, 17, 51, 17, 35, 5, 35, 17, 35, 17, 51, 53, 35, 17, 51, 17, + 51, 5, 51, 17, 35, 17, 35, 130, 80, 210, 1, 244, 130, 80, 210, 210, 80, 130, 254, 12, + 210, 80, 130, 1, 194, 1, 124, 254, 52, 160, 254, 132, 1, 204, 80, 1, 204, 254, 132, 160, + 254, 52, 1, 124, 0, 3, 0, 0, 255, 86, 1, 114, 3, 62, 0, 3, 0, 9, 0, 15, + 0, 38, 64, 16, 10, 9, 14, 6, 11, 7, 1, 0, 3, 13, 14, 10, 5, 9, 0, 6, + 0, 47, 51, 47, 197, 47, 197, 47, 51, 1, 47, 197, 47, 51, 197, 50, 47, 51, 49, 48, + 1, 51, 17, 35, 1, 51, 17, 51, 17, 35, 21, 51, 17, 35, 17, 35, 1, 34, 80, 80, + 254, 222, 130, 80, 210, 210, 80, 130, 3, 62, 252, 24, 2, 108, 1, 124, 254, 52, 80, 254, + 52, 1, 124, 0, 3, 0, 130, 255, 86, 1, 244, 3, 62, 0, 3, 0, 9, 0, 15, 0, + 38, 64, 16, 11, 7, 14, 6, 15, 4, 2, 3, 11, 14, 0, 13, 3, 6, 8, 5, 0, + 47, 197, 47, 51, 47, 51, 47, 197, 1, 47, 197, 47, 51, 47, 51, 197, 50, 49, 48, 23, + 35, 17, 51, 1, 35, 17, 51, 17, 51, 21, 35, 17, 35, 17, 51, 210, 80, 80, 1, 34, + 210, 80, 130, 130, 80, 210, 170, 3, 232, 254, 52, 1, 204, 254, 132, 240, 254, 132, 1, 204, + 0, 3, 0, 0, 0, 210, 1, 244, 3, 62, 0, 3, 0, 9, 0, 15, 0, 38, 64, 16, + 14, 11, 0, 10, 3, 9, 5, 8, 14, 5, 11, 8, 12, 6, 2, 3, 0, 47, 197, 47, + 51, 47, 51, 197, 50, 1, 47, 197, 47, 51, 47, 51, 47, 197, 49, 48, 1, 21, 33, 53, + 53, 51, 17, 51, 17, 35, 33, 35, 17, 51, 17, 51, 1, 244, 254, 12, 130, 80, 210, 1, + 244, 210, 80, 130, 1, 34, 80, 80, 160, 1, 124, 254, 52, 1, 204, 254, 132, 0, 2, 0, + 0, 0, 210, 1, 114, 3, 62, 0, 5, 0, 11, 0, 30, 64, 12, 10, 7, 1, 4, 6, + 0, 10, 7, 1, 4, 8, 2, 0, 47, 51, 47, 197, 47, 197, 1, 47, 51, 47, 197, 47, + 197, 49, 48, 17, 51, 17, 51, 17, 35, 21, 33, 17, 51, 17, 33, 130, 80, 210, 1, 34, + 80, 254, 142, 1, 194, 1, 124, 254, 52, 80, 2, 28, 253, 148, 0, 2, 0, 130, 0, 210, + 1, 244, 3, 62, 0, 5, 0, 11, 0, 30, 64, 12, 7, 10, 4, 1, 11, 0, 7, 10, + 2, 8, 4, 1, 0, 47, 197, 47, 51, 47, 197, 1, 47, 51, 47, 197, 47, 197, 49, 48, + 1, 35, 17, 51, 17, 51, 21, 33, 17, 51, 17, 33, 1, 244, 210, 80, 130, 254, 142, 80, + 1, 34, 1, 114, 1, 204, 254, 132, 240, 2, 108, 253, 228, 0, 3, 0, 0, 255, 86, 1, + 244, 1, 194, 0, 3, 0, 9, 0, 15, 0, 38, 64, 16, 14, 11, 0, 10, 3, 9, 5, + 8, 7, 13, 5, 14, 8, 11, 1, 0, 0, 47, 197, 47, 51, 197, 50, 47, 51, 1, 47, + 197, 47, 51, 47, 51, 47, 197, 49, 48, 17, 53, 33, 21, 21, 35, 17, 35, 17, 51, 33, + 51, 17, 35, 17, 35, 1, 244, 130, 80, 210, 254, 12, 210, 80, 130, 1, 114, 80, 80, 160, + 254, 132, 1, 204, 254, 52, 1, 124, 0, 2, 0, 0, 255, 86, 1, 114, 1, 194, 0, 5, + 0, 11, 0, 30, 64, 12, 0, 11, 7, 10, 4, 1, 7, 10, 9, 3, 4, 1, 0, 47, + 197, 47, 51, 47, 197, 1, 47, 197, 47, 197, 47, 51, 49, 48, 17, 51, 17, 35, 17, 35, + 53, 33, 17, 35, 17, 33, 210, 80, 130, 1, 114, 80, 254, 222, 1, 34, 254, 52, 1, 124, + 240, 253, 148, 2, 28, 0, 2, 0, 130, 255, 86, 1, 244, 1, 194, 0, 5, 0, 11, 0, + 30, 64, 12, 10, 7, 5, 6, 1, 4, 3, 9, 10, 7, 1, 4, 0, 47, 197, 47, 197, + 47, 51, 1, 47, 197, 47, 51, 47, 197, 49, 48, 37, 35, 17, 35, 17, 51, 53, 33, 17, + 35, 17, 33, 1, 244, 130, 80, 210, 254, 222, 80, 1, 114, 210, 254, 132, 1, 204, 80, 253, + 228, 2, 108, 0, 2, 0, 0, 0, 210, 1, 244, 1, 194, 0, 3, 0, 7, 0, 21, 183, + 2, 7, 1, 4, 5, 4, 0, 1, 0, 47, 197, 47, 197, 1, 47, 51, 47, 51, 49, 48, + 53, 53, 33, 21, 37, 53, 33, 21, 1, 244, 254, 12, 1, 244, 210, 80, 80, 160, 80, 80, + 0, 2, 0, 0, 255, 86, 1, 114, 3, 62, 0, 7, 0, 11, 0, 30, 64, 12, 11, 10, + 2, 6, 7, 3, 10, 6, 2, 5, 9, 1, 0, 47, 51, 47, 197, 47, 51, 1, 47, 47, + 197, 50, 47, 197, 49, 48, 23, 35, 17, 35, 53, 51, 17, 51, 19, 35, 17, 51, 210, 80, + 130, 130, 80, 160, 80, 80, 170, 1, 204, 80, 1, 204, 252, 24, 3, 232, 0, 2, 0, 130, + 255, 86, 1, 244, 3, 62, 0, 7, 0, 11, 0, 30, 64, 12, 8, 9, 3, 5, 1, 0, + 7, 11, 0, 8, 5, 2, 0, 47, 197, 47, 51, 47, 51, 1, 47, 197, 50, 47, 47, 197, + 49, 48, 1, 51, 17, 51, 21, 35, 17, 35, 3, 51, 17, 35, 1, 34, 80, 130, 130, 80, + 160, 80, 80, 3, 62, 254, 52, 80, 254, 52, 3, 232, 252, 24, 0, 1, 0, 0, 1, 34, + 1, 244, 3, 62, 0, 11, 0, 30, 64, 12, 10, 9, 5, 6, 3, 0, 9, 5, 11, 7, + 2, 3, 0, 47, 197, 51, 51, 47, 51, 1, 47, 47, 47, 197, 47, 197, 49, 48, 1, 21, + 33, 53, 51, 17, 51, 17, 51, 17, 51, 17, 1, 244, 254, 12, 130, 80, 80, 80, 1, 114, + 80, 80, 1, 204, 254, 52, 1, 204, 254, 52, 0, 2, 0, 0, 1, 34, 1, 114, 3, 62, + 0, 5, 0, 9, 0, 28, 64, 11, 7, 6, 2, 3, 0, 6, 2, 9, 9, 4, 0, 0, + 47, 197, 50, 47, 47, 51, 1, 47, 47, 197, 47, 197, 49, 48, 17, 51, 17, 51, 17, 35, + 1, 51, 17, 35, 130, 80, 210, 1, 34, 80, 80, 1, 114, 1, 204, 253, 228, 2, 28, 253, + 228, 0, 2, 0, 130, 1, 34, 1, 244, 3, 62, 0, 5, 0, 9, 0, 26, 64, 10, 8, + 9, 5, 3, 2, 2, 8, 7, 1, 4, 0, 47, 197, 50, 47, 51, 1, 47, 197, 47, 47, + 197, 49, 48, 1, 35, 17, 51, 17, 51, 5, 35, 17, 51, 1, 244, 210, 80, 130, 254, 222, + 80, 80, 1, 34, 2, 28, 254, 52, 80, 2, 28, 0, 1, 0, 0, 255, 86, 1, 244, 1, + 114, 0, 11, 0, 30, 64, 12, 11, 8, 4, 7, 3, 0, 6, 10, 8, 4, 11, 1, 0, + 47, 197, 50, 50, 47, 51, 1, 47, 47, 47, 197, 47, 197, 49, 48, 17, 53, 33, 21, 35, + 17, 35, 17, 35, 17, 35, 17, 1, 244, 130, 80, 80, 80, 1, 34, 80, 80, 254, 52, 1, + 204, 254, 52, 1, 204, 0, 2, 0, 0, 255, 86, 1, 114, 1, 114, 0, 5, 0, 9, 0, + 26, 64, 10, 7, 6, 5, 4, 1, 9, 3, 6, 4, 1, 0, 47, 197, 51, 47, 51, 1, + 47, 197, 47, 47, 197, 49, 48, 17, 51, 17, 35, 17, 35, 37, 51, 17, 35, 210, 80, 130, + 1, 34, 80, 80, 1, 114, 253, 228, 1, 204, 80, 253, 228, 0, 2, 0, 130, 255, 86, 1, + 244, 1, 114, 0, 5, 0, 9, 0, 26, 64, 10, 8, 9, 5, 1, 4, 8, 1, 4, 7, + 3, 0, 47, 51, 47, 197, 51, 1, 47, 197, 47, 47, 197, 49, 48, 1, 35, 17, 35, 17, + 51, 1, 35, 17, 51, 1, 244, 130, 80, 210, 254, 222, 80, 80, 1, 34, 254, 52, 2, 28, + 253, 228, 2, 28, 0, 1, 0, 0, 255, 86, 1, 244, 3, 62, 0, 3, 0, 13, 179, 3, + 0, 3, 2, 0, 47, 47, 1, 47, 47, 49, 48, 1, 17, 33, 17, 1, 244, 254, 12, 3, + 62, 252, 24, 3, 232, 0, 46, 0, 0, 255, 110, 1, 244, 3, 62, 0, 3, 0, 7, 0, + 11, 0, 15, 0, 19, 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, 0, 43, 0, 47, 0, + 51, 0, 55, 0, 59, 0, 63, 0, 67, 0, 71, 0, 75, 0, 79, 0, 83, 0, 87, 0, + 91, 0, 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115, 0, 119, 0, 123, 0, 127, 0, + 131, 0, 135, 0, 139, 0, 143, 0, 147, 0, 151, 0, 155, 0, 159, 0, 163, 0, 167, 0, + 171, 0, 175, 0, 179, 0, 183, 0, 0, 17, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, + 35, 23, 51, 21, 35, 7, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, 35, 23, 51, 21, + 35, 7, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, 35, 23, 51, 21, 35, 7, 51, 21, + 35, 23, 51, 21, 35, 55, 51, 21, 35, 23, 51, 21, 35, 7, 51, 21, 35, 23, 51, 21, + 35, 55, 51, 21, 35, 23, 51, 21, 35, 7, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, + 35, 23, 51, 21, 35, 7, 51, 21, 35, 55, 51, 21, 35, 19, 51, 21, 35, 23, 51, 21, + 35, 55, 51, 21, 35, 7, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, 35, 7, 51, 21, + 35, 23, 51, 21, 35, 55, 51, 21, 35, 7, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, + 35, 7, 51, 21, 35, 23, 51, 21, 35, 55, 51, 21, 35, 7, 51, 21, 35, 23, 51, 21, + 35, 55, 51, 21, 35, 7, 51, 21, 35, 55, 51, 21, 35, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 234, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 234, 39, 39, 78, + 39, 39, 78, 39, 39, 78, 39, 39, 234, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 234, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 234, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 234, 39, 39, 156, 39, 39, 156, 39, 39, 78, 39, 39, 78, 32, 32, 156, + 39, 39, 78, 39, 39, 78, 32, 32, 156, 39, 39, 78, 39, 39, 78, 32, 32, 156, 39, 39, + 78, 39, 39, 78, 32, 32, 156, 39, 39, 78, 39, 39, 78, 32, 32, 156, 39, 39, 78, 39, + 39, 78, 32, 32, 156, 39, 39, 156, 32, 32, 3, 62, 39, 39, 39, 117, 39, 39, 39, 39, + 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 40, 39, 39, 39, 117, + 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, + 39, 39, 39, 3, 208, 39, 39, 39, 117, 39, 117, 39, 39, 39, 117, 39, 117, 39, 39, 39, + 117, 39, 118, 39, 39, 39, 117, 39, 117, 39, 39, 39, 117, 39, 117, 39, 39, 39, 117, 39, + 117, 39, 39, 39, 0, 85, 0, 0, 255, 110, 1, 244, 3, 62, 0, 3, 0, 7, 0, 11, + 0, 15, 0, 19, 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, 0, 43, 0, 47, 0, 51, + 0, 55, 0, 59, 0, 63, 0, 67, 0, 71, 0, 75, 0, 79, 0, 83, 0, 87, 0, 91, + 0, 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115, 0, 119, 0, 123, 0, 127, 0, 131, + 0, 135, 0, 139, 0, 143, 0, 147, 0, 151, 0, 155, 0, 159, 0, 163, 0, 167, 0, 171, + 0, 175, 0, 179, 0, 183, 0, 187, 0, 191, 0, 195, 0, 199, 0, 203, 0, 207, 0, 211, + 0, 215, 0, 219, 0, 223, 0, 227, 0, 231, 0, 235, 0, 239, 0, 243, 0, 247, 0, 251, + 0, 255, 1, 3, 1, 7, 1, 11, 1, 15, 1, 19, 1, 23, 1, 27, 1, 31, 1, 35, + 1, 39, 1, 43, 1, 47, 1, 51, 1, 55, 1, 59, 1, 63, 1, 67, 1, 71, 1, 75, + 1, 79, 1, 83, 0, 0, 17, 51, 21, 35, 55, 51, 21, 35, 7, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 7, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 7, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 19, 51, 21, 35, 5, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 5, 51, + 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, 21, 35, 55, 51, + 21, 35, 55, 51, 21, 35, 39, 39, 78, 39, 39, 39, 39, 39, 78, 39, 39, 39, 39, 39, + 78, 39, 39, 39, 39, 39, 78, 39, 39, 39, 39, 39, 78, 39, 39, 39, 39, 39, 78, 39, + 39, 254, 122, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 254, 122, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 254, + 122, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 254, 122, + 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 254, 122, 39, + 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 39, 32, 32, 254, + 44, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 32, + 32, 254, 44, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 78, 32, 32, 254, 44, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, + 39, 39, 78, 32, 32, 254, 44, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 78, 32, 32, 254, 44, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 32, 32, 254, 44, 39, 39, 78, 39, 39, 78, 39, 39, 78, + 39, 39, 78, 39, 39, 78, 39, 39, 78, 32, 32, 3, 62, 39, 39, 39, 39, 39, 39, 39, + 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 118, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 3, 130, 39, 117, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 118, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 117, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 0, 73, 0, 0, 255, 86, 1, 244, 3, 62, 0, 3, 0, 7, 0, 11, 0, + 15, 0, 19, 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, 0, 43, 0, 47, 0, 51, 0, + 55, 0, 59, 0, 63, 0, 67, 0, 71, 0, 75, 0, 79, 0, 83, 0, 87, 0, 91, 0, + 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115, 0, 119, 0, 123, 0, 127, 0, 131, 0, + 135, 0, 139, 0, 143, 0, 147, 0, 151, 0, 155, 0, 159, 0, 163, 0, 167, 0, 171, 0, + 175, 0, 179, 0, 183, 0, 187, 0, 191, 0, 195, 0, 199, 0, 203, 0, 207, 0, 211, 0, + 215, 0, 219, 0, 223, 0, 227, 0, 231, 0, 235, 0, 239, 0, 243, 0, 247, 0, 251, 0, + 255, 1, 3, 1, 7, 1, 11, 1, 15, 1, 19, 1, 23, 1, 27, 1, 31, 1, 59, 0, + 0, 19, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, + 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, + 35, 7, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, + 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, + 35, 55, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, + 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, + 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, + 35, 23, 51, 53, 35, 5, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, + 35, 55, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, + 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 23, 51, 53, + 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, + 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, + 35, 5, 51, 53, 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, + 35, 23, 51, 53, 35, 7, 51, 53, 35, 23, 51, 53, 35, 55, 51, 53, 35, 23, 51, 53, + 35, 7, 51, 53, 35, 23, 51, 53, 35, 19, 17, 35, 53, 35, 21, 35, 53, 35, 21, 35, + 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 35, 17, 39, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 254, 122, 39, 39, 78, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 254, 122, 39, 39, 78, 39, 39, 78, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 78, 39, 39, 254, 122, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, + 39, 78, 39, 39, 254, 122, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, + 39, 254, 122, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, + 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 78, 39, 39, 71, 32, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 2, 240, 39, 39, 39, 117, 39, 39, + 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 117, 39, 39, + 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, + 39, 117, 39, 39, 39, 118, 40, 40, 40, 39, 39, 39, 39, 118, 40, 40, 40, 39, 39, 39, + 39, 118, 40, 40, 40, 118, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, + 39, 39, 39, 39, 39, 117, 39, 39, 39, 117, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, + 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 117, 39, 39, 39, 117, 39, 39, + 39, 39, 39, 39, 39, 117, 39, 39, 39, 39, 39, 39, 39, 117, 39, 39, 39, 3, 130, 252, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 3, 232, 0, 1, 0, 0, 255, + 86, 1, 244, 3, 62, 0, 19, 0, 46, 64, 20, 3, 0, 6, 17, 10, 13, 7, 16, 12, + 1, 18, 14, 7, 3, 10, 16, 0, 13, 5, 9, 0, 47, 51, 47, 51, 51, 197, 50, 50, + 47, 51, 1, 47, 47, 47, 51, 197, 50, 47, 51, 197, 50, 49, 48, 1, 51, 21, 35, 17, + 35, 17, 35, 17, 35, 17, 35, 53, 51, 17, 51, 17, 51, 17, 51, 1, 114, 130, 130, 80, + 80, 80, 130, 130, 80, 80, 80, 1, 114, 80, 254, 52, 1, 204, 254, 52, 1, 204, 80, 1, + 204, 254, 52, 1, 204, 0, 1, 0, 0, 255, 86, 1, 244, 3, 62, 0, 19, 0, 46, 64, + 20, 0, 17, 19, 2, 15, 9, 5, 12, 7, 10, 13, 15, 12, 18, 9, 2, 5, 19, 8, + 4, 0, 47, 47, 51, 197, 50, 47, 51, 197, 50, 47, 1, 47, 51, 47, 50, 50, 197, 50, + 50, 47, 51, 49, 48, 1, 21, 35, 17, 35, 17, 35, 53, 51, 53, 35, 53, 51, 17, 51, + 17, 51, 21, 35, 21, 1, 244, 210, 80, 210, 210, 210, 210, 80, 210, 210, 1, 34, 80, 254, + 132, 1, 124, 80, 80, 80, 1, 124, 254, 132, 80, 80 + }; +} diff --git a/src/ogfx/resources/UbuntuMonoRegularTTF.hpp b/src/ogfx/resources/UbuntuMonoRegularTTF.hpp new file mode 100644 index 0000000..d0ea5e2 --- /dev/null +++ b/src/ogfx/resources/UbuntuMonoRegularTTF.hpp @@ -0,0 +1,29 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include + +namespace ogfx +{ + extern const uint32_t ubuntu_mono_regular_ttf_size; + extern const ostd::UByte ubuntu_mono_regular_ttf_data[]; +} diff --git a/src/ostd/utils/Signals.hpp b/src/ostd/utils/Signals.hpp index 575843e..4293668 100755 --- a/src/ostd/utils/Signals.hpp +++ b/src/ostd/utils/Signals.hpp @@ -113,17 +113,4 @@ namespace ostd inline static bool m_initialized { false }; }; - - class WindowSizeObj : public BaseObject - { - public: - const int32_t width; - const int32_t height; - - inline WindowSizeObj(int32_t _w, int32_t _h) : width(_w), height(_h) - { - setTypeName("ox::WindowSizeObj"); - validate(); - } - }; } From f0f644102b44d8481d2acbc368c85c3705311e36 Mon Sep 17 00:00:00 2001 From: OmniaX-Dev Date: Wed, 1 Apr 2026 10:20:33 +0200 Subject: [PATCH 5/6] Added centralized SDL initialization --- other/TODO.txt | 1 + other/build.nr | 2 +- other/changelog.txt | 19 ------- src/ogfx/gui/Window.cpp | 83 ++++++++++++++++++++-------- src/ogfx/gui/Window.hpp | 23 ++++++-- src/ogfx/gui/WindowOutputHandler.cpp | 1 + src/ogfx/render/FontUtils.cpp | 24 ++++++-- src/ogfx/render/FontUtils.hpp | 10 ++++ src/ogfx/utils/SDLInclude.hpp | 54 ++++++++++++++++++ src/ostd/ostd.hpp | 8 +++ src/ostd/utils/Signals.cpp | 6 ++ src/ostd/utils/Signals.hpp | 3 + src/test/GuiTest.cpp | 8 +++ 13 files changed, 189 insertions(+), 53 deletions(-) create mode 100644 other/TODO.txt delete mode 100644 other/changelog.txt diff --git a/other/TODO.txt b/other/TODO.txt new file mode 100644 index 0000000..37be370 --- /dev/null +++ b/other/TODO.txt @@ -0,0 +1 @@ +Add Color constants to ostd::Color \ No newline at end of file diff --git a/other/build.nr b/other/build.nr index a862943..c05d464 100644 --- a/other/build.nr +++ b/other/build.nr @@ -1 +1 @@ -2040 +2041 diff --git a/other/changelog.txt b/other/changelog.txt deleted file mode 100644 index ee4f637..0000000 --- a/other/changelog.txt +++ /dev/null @@ -1,19 +0,0 @@ -[0.2.1958] -Added ostd::OutputHandlerBase::tab() virtual function -Added ogfx::WindowBaseOutputHandler class - -[0.2.1936] -Added JsonFile class to handle Json files -Added MidiParser class to parse Midi files - -[0.2.1923] -Added MacOS support - -[0.1.1823] -Added more Builtin signals - -[0.1.1818] -Added ostd::String::fixedLength(...) method, with corresponding 'new_fixedLength' version. -Added "KeyboardController" class to (implemented in ) to handle - keypresses in the console in a cross-platform way -Added helper functions in ostd::Utils for dealing with raw arrays diff --git a/src/ogfx/gui/Window.cpp b/src/ogfx/gui/Window.cpp index a8a920d..933fa1e 100644 --- a/src/ogfx/gui/Window.cpp +++ b/src/ogfx/gui/Window.cpp @@ -20,15 +20,11 @@ #include "Window.hpp" #include "../../ostd/utils/Time.hpp" -#include "io/IOHandlers.hpp" -#include "string/String.hpp" -#include -#include -#include -#include namespace ogfx { + const Uint32 REDRAW_EVENT = SDL_RegisterEvents(1); + WindowCore::~WindowCore(void) { __on_window_destroy(); @@ -36,21 +32,18 @@ namespace ogfx SDL_DestroyCursor(m_cursor_Arrow); SDL_DestroyRenderer(m_renderer); SDL_DestroyWindow(m_window); - SDL_Quit(); - TTF_Quit(); + SDLSysten::release(); } void WindowCore::initialize(int32_t width, int32_t height, const ostd::String& title) { if (m_initialized) return; + SDLSysten::acquire(); m_windowWidth = width; m_windowHeight = height; m_title = title; - if (!SDL_Init(SDL_INIT_VIDEO)) - { - printf( "SDL could not initialize! Error: %s\n", SDL_GetError() ); - exit(1); - } + setBlockingEventsRefreshFPS(DefaultBlockingEventsFPS); + m_window = SDL_CreateWindow("", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SDL_WINDOW_RESIZABLE); m_renderer = SDL_CreateRenderer(m_window, nullptr); SDL_SetWindowMinimumSize(m_window, m_windowWidth, m_windowHeight); @@ -60,6 +53,13 @@ namespace ogfx m_cursor_Arrow = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_DEFAULT); m_cursor_IBeam = SDL_CreateSystemCursor(SDL_SystemCursor::SDL_SYSTEM_CURSOR_TEXT); + m_wout.attachWindow(*this); + m_wout.setFontSize(22); + m_wout.setConsoleMaxCharacters({ 1000, 1000 }); + m_wout.setConsolePosition({ 5, 5 }); + m_wout.setWrapMode(ogfx::GraphicsWindowOutputHandler::eWrapMode::NewLine); + m_wout.setDefaultForegroundColor({ 255, 255, 255, 255 }); + m_initialized = true; m_running = true; @@ -81,6 +81,12 @@ namespace ogfx __on_window_init(width, height, title); } + void WindowCore::mainLoop(void) + { + if (isInitialized()) + __main_loop(); + } + void WindowCore::close(void) { __on_window_close(); @@ -136,6 +142,24 @@ namespace ogfx SDL_DestroySurface(appIcon); } + void WindowCore::setBlockingEventsRefreshFPS(uint32_t fps) + { + if (fps == 0 || fps > MaxBlockingEventsFPS) + { + setBlockingEventsRefreshFPS(DefaultBlockingEventsFPS); + return; + } + m_blockingEventsDelay = static_cast(std::floor((1.0 / (double)fps) * 1000)); + } + + void WindowCore::requestRedraw(void) + { + SDL_Event e{}; + SDL_zero(e); + e.type = REDRAW_EVENT; + SDL_PushEvent(&e); + } + MouseEventData WindowCore::get_mouse_state(void) { float mx = 0, my = 0; @@ -159,7 +183,7 @@ namespace ogfx if (isBlockingEventsEnabled()) { - if (SDL_WaitEventTimeout(&event, 16)) + if (SDL_WaitEventTimeout(&event, m_blockingEventsDelay)) __handle_event(event); } else @@ -169,9 +193,26 @@ namespace ogfx } } + void WindowCore::before_render(void) + { + SDL_SetRenderDrawColor(m_renderer, getClearColor().r, getClearColor().g, getClearColor().b, getClearColor().a); + if (m_refreshScreen) + SDL_RenderClear(m_renderer); + wout().beginFrame(); + } + + void WindowCore::after_render(void) + { + SDL_RenderPresent(m_renderer); + } + void WindowCore::__handle_event(SDL_Event& event) { - if (event.type == SDL_EVENT_QUIT) + if (event.type == REDRAW_EVENT) + { + //Doesn't need to do anything, the event exists just to make SDL_WaitEventTimeout() return early + } + else if (event.type == SDL_EVENT_QUIT) { close(); } @@ -254,13 +295,11 @@ namespace ogfx void GraphicsWindow::__main_loop(void) { handle_events(); - SDL_SetRenderDrawColor(m_renderer, getClearColor().r, getClearColor().g, getClearColor().b, getClearColor().a); - if (m_refreshScreen) - SDL_RenderClear(m_renderer); + before_render(); m_fixedUpdateTImer.update(); onUpdate(); onRender(); - SDL_RenderPresent(m_renderer); + after_render(); m_frameTimeAcc += m_fpsUpdateClock.restart(ostd::eTimeUnits::Seconds); m_frameCount++; m_fpsUpdateTimer.update(); @@ -299,10 +338,10 @@ namespace ogfx while (isRunning()) { handle_events(); - SDL_SetRenderDrawColor(m_renderer, getClearColor().r, getClearColor().g, getClearColor().b, getClearColor().a); - SDL_RenderClear(m_renderer); + before_render(); + onRedraw(m_gfx); m_gfx.drawString("Hello World", { 100, 100 }, { 255, 0, 0 }); - SDL_RenderPresent(m_renderer); + after_render(); } } diff --git a/src/ogfx/gui/Window.hpp b/src/ogfx/gui/Window.hpp index 1655661..5a00df2 100644 --- a/src/ogfx/gui/Window.hpp +++ b/src/ogfx/gui/Window.hpp @@ -20,13 +20,13 @@ #pragma once -#include #include #include #include #include #include #include +#include namespace ogfx { @@ -38,13 +38,15 @@ namespace ogfx virtual ~WindowCore(void); inline WindowCore(int32_t width, int32_t height, const ostd::String& title) { initialize(width, height, title); } void initialize(int32_t width, int32_t height, const ostd::String& title); - inline void mainLoop(void) { if (isInitialized()) __main_loop(); } + void mainLoop(void); void close(void); void setSize(int32_t width, int32_t height); void setTitle(const ostd::String& title); void setCursor(eCursor cursor); void enableResizable(bool enable = true); void setIcon(const ostd::String& iconFilePath); + void setBlockingEventsRefreshFPS(uint32_t fps); + void requestRedraw(void); inline bool isInitialized(void) const { return m_initialized; } inline bool isRunning(void) const { return m_running; } @@ -60,10 +62,14 @@ namespace ogfx inline SDL_Renderer* getSDLRenderer(void) { return m_renderer; } inline void enableBlockingEvents(bool enable = true) { m_blockingEvents = enable; } inline bool isBlockingEventsEnabled(void) const { return m_blockingEvents; } + inline ostd::ConsoleOutputHandler& out(void) { return m_out; } + inline GraphicsWindowOutputHandler& wout(void) { return m_wout; } protected: MouseEventData get_mouse_state(void); virtual void handle_events(void); + virtual void before_render(void); + virtual void after_render(void); inline virtual void __on_event(SDL_Event& event) { } inline virtual void __on_window_init(int32_t width, int32_t height, const ostd::String& title) { } inline virtual void __on_window_destroy(void) { } @@ -76,6 +82,8 @@ namespace ogfx protected: SDL_Window* m_window { nullptr }; SDL_Renderer* m_renderer { nullptr }; + ostd::ConsoleOutputHandler m_out; + GraphicsWindowOutputHandler m_wout; private: ostd::Color m_clearColor { 10, 10, 10, 255 }; @@ -83,15 +91,21 @@ namespace ogfx int32_t m_windowWidth { 0 }; int32_t m_windowHeight { 0 }; ostd::String m_title { "" }; + int32_t m_blockingEventsDelay { 33 }; bool m_running { false }; bool m_initialized { false }; bool m_visible { true }; bool m_blockingEvents { false }; bool m_resizeable { true }; + bool m_refreshScreen { true }; SDL_Cursor* m_cursor_IBeam { nullptr }; SDL_Cursor* m_cursor_Arrow { nullptr }; + + public: + inline static constexpr int32_t MaxBlockingEventsFPS { 240 }; + inline static constexpr int32_t DefaultBlockingEventsFPS { 30 }; }; class GraphicsWindow : public WindowCore { @@ -124,7 +138,6 @@ namespace ogfx ostd::Timer m_fpsUpdateClock; uint64_t m_frameTimeAcc { 0 }; int32_t m_frameCount { 0 }; - bool m_refreshScreen { true }; }; namespace gui { @@ -139,6 +152,7 @@ namespace ogfx inline virtual void onDestroy(void) { } inline virtual void onClose(void) { } inline virtual void onSDLEvent(SDL_Event& event) { } + inline virtual void onRedraw(BasicRenderer2D& gfx) { } protected: void __on_window_init(int32_t width, int32_t height, const ostd::String& title) override; @@ -148,8 +162,7 @@ namespace ogfx void __main_loop(void) override; private: - ogfx::BasicRenderer2D m_gfx; - ostd::ConsoleOutputHandler m_out; + BasicRenderer2D m_gfx; }; } } diff --git a/src/ogfx/gui/WindowOutputHandler.cpp b/src/ogfx/gui/WindowOutputHandler.cpp index 707f92f..66b9e40 100644 --- a/src/ogfx/gui/WindowOutputHandler.cpp +++ b/src/ogfx/gui/WindowOutputHandler.cpp @@ -26,6 +26,7 @@ namespace ogfx { using namespace ostd; + GraphicsWindowOutputHandler::GraphicsWindowOutputHandler(void) { } diff --git a/src/ogfx/render/FontUtils.cpp b/src/ogfx/render/FontUtils.cpp index cadb5b9..3cf3ea2 100644 --- a/src/ogfx/render/FontUtils.cpp +++ b/src/ogfx/render/FontUtils.cpp @@ -23,6 +23,24 @@ namespace ogfx { + TTFRenderer::SignalHandler::SignalHandler(TTFRenderer& parent) : m_parent(parent) + { + enableSignals(); + connectSignal(ostd::tBuiltinSignals::BeforeSDLShutdown); + setTypeName("ostd::GraphicsWindowOutputHandler::SignalHandler"); + validate(); + } + + void TTFRenderer::SignalHandler::handleSignal(ostd::tSignal& signal) + { + if (signal.ID == ostd::tBuiltinSignals::BeforeSDLShutdown) + { + m_parent.closeFont(); + } + } + + + TTFRenderer::~TTFRenderer(void) { closeFont(); @@ -179,12 +197,6 @@ namespace ogfx { if (TTFRenderer::m_initialized) return set_error_state(tErrors::NoError); if (renderer == nullptr) return set_error_state(tErrors::NullRenderer); - if (!TTF_Init()) - { - print_ttf_error("TTF_Init"); - SDL_Quit(); - return set_error_state(tErrors::FailedToLoad); - } m_renderer = renderer; TTFRenderer::m_initialized = true; return set_error_state(tErrors::NoError); diff --git a/src/ogfx/render/FontUtils.hpp b/src/ogfx/render/FontUtils.hpp index a673007..0207fdb 100644 --- a/src/ogfx/render/FontUtils.hpp +++ b/src/ogfx/render/FontUtils.hpp @@ -28,6 +28,15 @@ namespace ogfx { class TTFRenderer { + private: class SignalHandler : public ostd::BaseObject + { + public: + SignalHandler(TTFRenderer& parent); + void handleSignal(ostd::tSignal& signal) override; + + private: + TTFRenderer& m_parent; + }; public: struct tErrors { inline static constexpr int32_t NoError = 0; @@ -68,6 +77,7 @@ namespace ogfx private: ostd::ConsoleOutputHandler m_out; + SignalHandler m_sigHndl { *this }; bool m_initialized { false }; bool m_fontOpen { false }; TTF_Font* m_font { nullptr }; diff --git a/src/ogfx/utils/SDLInclude.hpp b/src/ogfx/utils/SDLInclude.hpp index cfac199..082e157 100644 --- a/src/ogfx/utils/SDLInclude.hpp +++ b/src/ogfx/utils/SDLInclude.hpp @@ -21,6 +21,8 @@ #pragma once #include +#include +#include #include #include @@ -29,3 +31,55 @@ #include #include #include + +namespace ogfx +{ + class SDLSysten + { + public: + static inline void acquire(void) + { + if (s_refCount == 0) + init_sdl(); + s_refCount++; + } + + static inline void release(void) + { + s_refCount--; + if (s_refCount == 0) + shutdown_sdl(); + } + + private: + static inline void init_sdl(void) + { + if (!SDL_Init(SDL_INIT_VIDEO)) + { + OX_FATAL("SDL could not initialize! Error: %s\n", SDL_GetError()); + exit(ErrorSDLInitFailed); + } + if (!TTF_Init()) + { + OX_FATAL("SDL_ttf could not initialize! Error: %s\n", SDL_GetError()); + SDL_Quit(); + exit(ErrorSDLTTFInitFailed); + } + } + + static inline void shutdown_sdl(void) + { + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::BeforeSDLShutdown, ostd:: tSignalPriority::RealTime); + TTF_Quit(); + SDL_Quit(); + } + + private: + inline static int s_refCount { 0 }; + + public: + inline static constexpr int32_t ErrorSDLInitFailed { 1 }; + inline static constexpr int32_t ErrorSDLTTFInitFailed { 2 }; + + }; +} diff --git a/src/ostd/ostd.hpp b/src/ostd/ostd.hpp index 345fe5c..7a2bad2 100644 --- a/src/ostd/ostd.hpp +++ b/src/ostd/ostd.hpp @@ -45,3 +45,11 @@ #include #include + +namespace ostd +{ + inline void initialize(void) + { + ostd::SignalHandler::init(true); + } +} diff --git a/src/ostd/utils/Signals.cpp b/src/ostd/utils/Signals.cpp index c2ef328..888a2ae 100755 --- a/src/ostd/utils/Signals.cpp +++ b/src/ostd/utils/Signals.cpp @@ -31,6 +31,8 @@ namespace ostd SignalHandler::m_delegatedSignals.reserve(SignalHandler::__DELEGATED_SIGNALS_BUFFER_START_SIZE); SignalHandler::m_onGuiEventRecievers.clear(); SignalHandler::m_onGuiEventRecievers.reserve(SignalHandler::__SIGNAL_BUFFER_START_SIZE); + SignalHandler::m_beforeSDLShutdownRecievers.clear(); + SignalHandler::m_beforeSDLShutdownRecievers.reserve(SignalHandler::__SIGNAL_BUFFER_START_SIZE); m_initialized = true; } @@ -71,6 +73,8 @@ namespace ostd sig_list = &m_windowClosedRecievers; else if (signal_id == tBuiltinSignals::OnGuiEvent) sig_list = &m_onGuiEventRecievers; + else if (signal_id == tBuiltinSignals::BeforeSDLShutdown) + sig_list = &m_beforeSDLShutdownRecievers; else if (signal_id > tBuiltinSignals::CustomSignalBase) sig_list = &m_customRecievers; if (sig_list == nullptr) @@ -110,6 +114,8 @@ namespace ostd m_windowClosedRecievers.push_back({ &object, signal_id }); else if (signal_id == tBuiltinSignals::OnGuiEvent) m_onGuiEventRecievers.push_back({ &object, signal_id }); + else if (signal_id == tBuiltinSignals::BeforeSDLShutdown) + m_beforeSDLShutdownRecievers.push_back({ &object, signal_id }); else if (signal_id > tBuiltinSignals::CustomSignalBase) m_customRecievers.push_back({ &object, signal_id }); else diff --git a/src/ostd/utils/Signals.hpp b/src/ostd/utils/Signals.hpp index 4293668..8bc74aa 100755 --- a/src/ostd/utils/Signals.hpp +++ b/src/ostd/utils/Signals.hpp @@ -45,6 +45,8 @@ namespace ostd inline static constexpr uint32_t OnGuiEvent = 0x2001; + inline static constexpr uint32_t BeforeSDLShutdown = 0x3001; + inline static constexpr uint32_t WindowResized = 0x1001; inline static constexpr uint32_t WindowClosed = 0x1002; /*********************/ @@ -106,6 +108,7 @@ namespace ostd inline static std::vector m_windowResizedRecievers; inline static std::vector m_windowClosedRecievers; inline static std::vector m_onGuiEventRecievers; + inline static std::vector m_beforeSDLShutdownRecievers; /************************************/ inline static constexpr uint16_t __SIGNAL_BUFFER_START_SIZE { 128 }; diff --git a/src/test/GuiTest.cpp b/src/test/GuiTest.cpp index baff5e7..4087ab4 100644 --- a/src/test/GuiTest.cpp +++ b/src/test/GuiTest.cpp @@ -34,6 +34,8 @@ * ListBox * ComboBox * TreeView + * Save/Open File Dialogs (and folder dialogs) + * Tab Panel */ #include @@ -58,11 +60,17 @@ class Window : public ogfx::gui::Window } } + void onRedraw(ogfx::BasicRenderer2D& gfx) override + { + wout().fg(ostd::Color { 255, 0, 0 }).p("Hello ").fg(ostd::Color { 0, 0, 255 }).p("World"); + } + private: }; int main(int argc, char** argv) { + ostd::initialize(); Window window; window.initialize(800, 600, "OmniaFramework - Test Window"); window.setClearColor({ 0, 0, 0 }); From 924da0dba69fb80f664802d237b2f3a9535adc38 Mon Sep 17 00:00:00 2001 From: OmniaX-Dev Date: Thu, 2 Apr 2026 06:19:20 +0200 Subject: [PATCH 6/6] Started work on gui Widget system --- CMakeLists.txt | 2 +- other/TODO.txt | 6 +- src/ogfx/gui/Events.hpp | 24 ++ src/ogfx/gui/Themes.hpp | 90 +++++++ src/ogfx/gui/Widget.cpp | 29 -- src/ogfx/gui/Widget.hpp | 36 --- src/ogfx/gui/Widgets.cpp | 526 +++++++++++++++++++++++++++++++++++++ src/ogfx/gui/Widgets.hpp | 226 ++++++++++++++++ src/ogfx/gui/Window.cpp | 95 ++++++- src/ogfx/gui/Window.hpp | 18 ++ src/ostd/data/Color.hpp | 57 ++++ src/ostd/math/Geometry.hpp | 9 +- src/ostd/utils/Signals.cpp | 12 + src/ostd/utils/Signals.hpp | 4 + src/test/GuiTest.cpp | 23 +- 15 files changed, 1082 insertions(+), 75 deletions(-) create mode 100644 src/ogfx/gui/Themes.hpp delete mode 100644 src/ogfx/gui/Widget.cpp delete mode 100644 src/ogfx/gui/Widget.hpp create mode 100644 src/ogfx/gui/Widgets.cpp create mode 100644 src/ogfx/gui/Widgets.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bf793f7..a33ba72 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,7 +89,7 @@ list(APPEND OGFX_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/RawTextInput.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/Window.cpp ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/WindowOutputHandler.cpp - ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/Widget.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/gui/Widgets.cpp # render ${CMAKE_CURRENT_LIST_DIR}/src/ogfx/render/BasicRenderer.cpp diff --git a/other/TODO.txt b/other/TODO.txt index 37be370..8144f94 100644 --- a/other/TODO.txt +++ b/other/TODO.txt @@ -1 +1,5 @@ -Add Color constants to ostd::Color \ No newline at end of file +***Add Color constants to ostd::Color +Add MouseEntered/MouseExited callbacks +Fix mouse detection currently using local coordinates +implement JSON theme loading +Implemenmt MouseDragged callback diff --git a/src/ogfx/gui/Events.hpp b/src/ogfx/gui/Events.hpp index b2040d9..ce6b7d0 100644 --- a/src/ogfx/gui/Events.hpp +++ b/src/ogfx/gui/Events.hpp @@ -25,6 +25,10 @@ namespace ogfx { class WindowCore; + namespace gui + { + class Widget; + } class WindowResizedData : public ostd::BaseObject { public: @@ -55,6 +59,7 @@ namespace ogfx float position_x; float position_y; eButton button; + gui::Widget* mousePressedOnWidget { nullptr }; WindowCore& parentWindow; }; class KeyEventData : public ostd::BaseObject @@ -73,4 +78,23 @@ namespace ogfx eKeyEvent eventType; WindowCore& parentWindow; }; + namespace gui + { + class Event + { + public: + inline Event(WindowCore& _window) : window(_window) { } + inline void handle(void) { m_handled = true; } + inline bool isHandled(void) const { return m_handled; } + + public: + WindowCore& window; + WindowResizedData* windowResized { nullptr }; + MouseEventData* mouse { nullptr }; + KeyEventData* keyboard { nullptr }; + + private: + bool m_handled { false }; + }; + } } diff --git a/src/ogfx/gui/Themes.hpp b/src/ogfx/gui/Themes.hpp new file mode 100644 index 0000000..c4a9b96 --- /dev/null +++ b/src/ogfx/gui/Themes.hpp @@ -0,0 +1,90 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include +#include +#include +#include + +namespace ogfx +{ + namespace gui + { + struct Theme + { + public: using ThemeValue = std::variant; + public: + inline Theme(bool blank = false) + { + if (blank) return; + + set("window.backgroundColor", ostd::Colors::Black); + + set("label.textColor", ostd::Colors::White); + set("label.backgroundColor", ostd::Colors::Transparent); + set("label.borderColor", ostd::Colors::White); + set("label.fontSize", 20); + set("label.borderRadius", 20); + set("label.borderWidth", 2); + set("label.showBackground", false); + set("label.showBorder", false); + set("label.padding", ostd::Rectangle { 5, 5, 5, 5 }); + } + + inline Theme& blank(void) + { + m_values.clear(); + return *this; + } + + inline Theme& loadFromJsonFile(const ostd::String& jsonFilePath) + { + return *this; //TODO: Implement + } + + inline void set(const std::string& key, ThemeValue value) + { + m_values[key] = std::move(value); + } + + inline const ThemeValue* __get(const ostd::String& key) const + { + auto it = m_values.find(key); + return it != m_values.end() ? &it->second : nullptr; + } + + template + inline T get(const ostd::String& key, const T& fallback) const + { + if (auto v = __get(key)) + { + if (auto p = std::get_if(v)) + return *p; + } + return fallback; + } + + private: + std::unordered_map m_values; + }; + } +} diff --git a/src/ogfx/gui/Widget.cpp b/src/ogfx/gui/Widget.cpp deleted file mode 100644 index f6ae4e3..0000000 --- a/src/ogfx/gui/Widget.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - OmniaFramework - A collection of useful functionality - Copyright (C) 2025 OmniaX-Dev - - This file is part of OmniaFramework. - - OmniaFramework is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OmniaFramework is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OmniaFramework. If not, see . -*/ - -#include "Widget.hpp" - -namespace ogfx -{ - namespace gui - { - - } -} diff --git a/src/ogfx/gui/Widget.hpp b/src/ogfx/gui/Widget.hpp deleted file mode 100644 index 38b8d75..0000000 --- a/src/ogfx/gui/Widget.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - OmniaFramework - A collection of useful functionality - Copyright (C) 2025 OmniaX-Dev - - This file is part of OmniaFramework. - - OmniaFramework is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OmniaFramework is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with OmniaFramework. If not, see . -*/ - -#pragma once - -#include -#include - -namespace ogfx -{ - namespace gui - { - class Widget : public ostd::BaseObject, public ostd::Rectangle - { - public: - private: - }; - } -} diff --git a/src/ogfx/gui/Widgets.cpp b/src/ogfx/gui/Widgets.cpp new file mode 100644 index 0000000..812f01b --- /dev/null +++ b/src/ogfx/gui/Widgets.cpp @@ -0,0 +1,526 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#include "Widgets.hpp" +#include +#include + +namespace ogfx +{ + namespace gui + { + WidgetManager::WidgetManager(WindowCore& window, Widget& owner) : m_window(window), m_owner(owner) + { + // + } + + bool WidgetManager::hasWidget(Widget& widget) + { + bool found = std::ranges::find(m_widgetList, &widget) != m_widgetList.end(); + return found && widget.isValid(); + } + + bool WidgetManager::requestFocus(Widget& widget) + { + if (!hasWidget(widget)) return false; + if (&widget == m_focused) return true; + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + if (w->m_focused) + { + w->m_focused = false; + w->onFocusLost(Event(m_window)); + } + else + w->m_focused = false; + } + widget.m_focused = true; + widget.onFocusGained(Event(m_window)); + m_focused = &widget; + return true; + } + + bool WidgetManager::addWidget(Widget& widget) + { + if (hasWidget(widget)) return false; + widget.m_parent = &m_owner; + m_widgetList.push_back(&widget); + std::ranges::sort(m_widgetList, {}, [](Widget* w) { + return w->m_zIndex; + }); + return true; + } + + Widget* WidgetManager::focusNext(void) + { + if (m_widgetList.empty()) + return nullptr; + + Widget* next = nullptr; + Widget* smallest = nullptr; + + int32_t currentTabIndex = (m_focused != nullptr ? m_focused->m_tabIndex : std::numeric_limits::max()); + for (Widget* w : m_widgetList) + { + int tab_i = w->m_tabIndex; + if (tab_i < 0) continue; + if (!smallest || tab_i < smallest->m_tabIndex) + smallest = w; + if (tab_i > currentTabIndex) + { + if (!next || tab_i < next->m_tabIndex) + next = w; + } + } + Widget* w = next ? next : smallest; + requestFocus(*w); + return w; + } + + void WidgetManager::draw(ogfx::BasicRenderer2D& gfx) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__draw(gfx); + } + } + + void WidgetManager::update(void) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__update(); + } + } + + void WidgetManager::onThemeApplied(const Theme& theme) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__applyTheme(theme, true); + } + } + + void WidgetManager::onMousePressed(const Event& event) + { + for (int32_t i = m_widgetList.size() - 1; i >= 0; i--) + { + Widget* w = m_widgetList[i]; + if (w == nullptr) continue; + if (w->isInvalid()) continue; + if (!w->contains(event.mouse->position_x, event.mouse->position_y, true)) + continue; + w->__onMousePressed(event); + m_mousePressedOnWidget = w; + if (event.isHandled()) + break; + } + } + + void WidgetManager::onMouseReleased(const Event& event) + { + for (int32_t i = m_widgetList.size() - 1; i >= 0; i--) + { + Widget* w = m_widgetList[i]; + if (w == nullptr) continue; + if (w->isInvalid()) continue; + event.mouse->mousePressedOnWidget = m_mousePressedOnWidget; + w->__onMouseReleased(event); + requestFocus(*w); + m_mousePressedOnWidget = nullptr; + if (event.isHandled()) + break; + } + } + + void WidgetManager::onMouseMoved(const Event& event) + { + for (int32_t i = m_widgetList.size() - 1; i >= 0; i--) + { + Widget* w = m_widgetList[i]; + if (w == nullptr) continue; + if (w->isInvalid()) continue; + if (!w->contains(event.mouse->position_x, event.mouse->position_y, true)) + continue; + w->__onMouseMoved(event); + if (event.isHandled()) + break; + } + } + + void WidgetManager::onMouseDragged(const Event& event) + { + for (int32_t i = m_widgetList.size() - 1; i >= 0; i--) + { + Widget* w = m_widgetList[i]; + if (w == nullptr) continue; + if (w->isInvalid()) continue; + if (!w->contains(event.mouse->position_x, event.mouse->position_y, true)) + continue; + w->__onMouseDragged(event); + if (event.isHandled()) + break; + } + } + + void WidgetManager::onKeyPressed(const Event& event) + { + if (!m_focused) return; + m_focused->__onKeyPressed(event); + } + + void WidgetManager::onKeyReleased(const Event& event) + { + if (!m_focused) return; + m_focused->__onKeyReleased(event); + if (m_tabNavigationEnabled && event.keyboard->keyCode == SDLK_TAB) + focusNext(); + } + + void WidgetManager::onTextEntered(const Event& event) + { + if (!m_focused) return; + m_focused->__onTextEntered(event); + } + + void WidgetManager::onWindowClosed(const Event& event) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__onWindowClosed(event); + if (event.isHandled()) + break; + } + } + + void WidgetManager::onWindowResized(const Event& event) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__onWindowResized(event); + if (event.isHandled()) + break; + } + } + + void WidgetManager::onWindowFocused(const Event& event) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__onWIndowFocused(event); + if (event.isHandled()) + break; + } + } + + void WidgetManager::onWindowFocusLost(const Event& event) + { + for (auto& w : m_widgetList) + { + if (w == nullptr) continue; + if (w->isInvalid()) continue; + w->__onWindowFocusLost(event); + if (event.isHandled()) + break; + } + } + + + + + Widget::Widget(const ostd::Rectangle& bounds, WindowCore& window) : Rectangle(bounds), m_widgets(window, *this) + { + m_window = &window; + } + + bool Widget::addChild(Widget& child) + { + if (!m_allowChildren) + return false; + return m_widgets.addWidget(child); + } + + ostd::Vec2 Widget::getGlobalPosition(void) const + { + ostd::Vec2 glob = getPosition(); + if (!m_rootChild && m_parent != nullptr) + glob += m_parent->getGlobalPosition(); + return glob; + } + + void Widget::applyThemeValue(Theme& theme, const ostd::String& key, Theme::ThemeValue value, bool propagate) + { + auto currentValue = theme.__get(key); + if (currentValue == nullptr) return; + theme.set(key, value); + __applyTheme(theme, propagate); + theme.set(key, *currentValue); + } + + void Widget::__draw(ogfx::BasicRenderer2D& gfx) + { + if (isDrawBoxEnabled()) + gfx.fillRect({ getGlobalPosition(), getSize() }, getDrawBoxColor()); + onDraw(gfx); + if (hasChildren()) + m_widgets.draw(gfx); + } + + void Widget::__update(void) + { + onUpdate(); + if (hasChildren()) + m_widgets.update(); + } + + void Widget::__onMousePressed(const Event& event) + { + if (hasChildren()) + m_widgets.onMousePressed(event); + if (!event.isHandled()) + { + if (callback_onMousePressed) + callback_onMousePressed(event); + onMousePressed(event); + } + } + + void Widget::__onMouseReleased(const Event& event) + { + if (hasChildren()) + m_widgets.onMouseReleased(event); + if (!event.isHandled()) + { + if (callback_onMouseReleased) + callback_onMouseReleased(event); + onMouseReleased(event); + } + } + + void Widget::__onMouseMoved(const Event& event) + { + if (hasChildren()) + m_widgets.onMouseMoved(event); + if (!event.isHandled()) + { + if (callback_onMouseMoved) + callback_onMouseMoved(event); + onMouseMoved(event); + } + } + + void Widget::__onMouseDragged(const Event& event) + { + if (hasChildren()) + m_widgets.onMouseDragged(event); + if (!event.isHandled()) + { + if (callback_onMouseDragged) + callback_onMouseDragged(event); + onMouseDragged(event); + } + } + + void Widget::__onKeyPressed(const Event& event) + { + if (hasChildren()) + m_widgets.onKeyPressed(event); + if (!event.isHandled()) + { + if (callback_onKeyPressed) + callback_onKeyPressed(event); + onKeyPressed(event); + } + } + + void Widget::__onKeyReleased(const Event& event) + { + if (hasChildren()) + m_widgets.onKeyReleased(event); + if (!event.isHandled()) + { + if (callback_onKeyReleased) + callback_onKeyReleased(event); + onKeyReleased(event); + } + } + + void Widget::__onTextEntered(const Event& event) + { + if (hasChildren()) + m_widgets.onTextEntered(event); + if (!event.isHandled()) + { + if (callback_onTextEntered) + callback_onTextEntered(event); + onTextEntered(event); + } + } + + void Widget::__onWindowClosed(const Event& event) + { + if (hasChildren()) + m_widgets.onWindowClosed(event); + if (!event.isHandled()) + { + if (callback_onWindowClosed) + callback_onWindowClosed(event); + onWindowClosed(event); + } + } + + void Widget::__onWindowResized(const Event& event) + { + if (hasChildren()) + m_widgets.onWindowResized(event); + if (!event.isHandled()) + { + if (callback_onWindowResized) + callback_onWindowResized(event); + onWindowResized(event); + } + } + + void Widget::__onWIndowFocused(const Event& event) + { + if (hasChildren()) + m_widgets.onWindowFocused(event); + if (!event.isHandled()) + { + if (callback_onWindowFocused) + callback_onWindowFocused(event); + onWindowFocused(event); + } + } + + void Widget::__onWindowFocusLost(const Event& event) + { + if (hasChildren()) + m_widgets.onWindowFocusLost(event); + if (!event.isHandled()) + { + if (callback_onWindowFocusLost) + callback_onWindowFocusLost(event); + onWindowFocusLost(event); + } + } + + void Widget::__applyTheme(const Theme& theme, bool propagate) + { + if (propagate && hasChildren()) + m_widgets.onThemeApplied(theme); + applyTheme(theme); + } + + + + namespace widgets + { + RootWidget::RootWidget(WindowCore& window) : Widget({ 0, 0, 0, 0 }, window) + { + m_rootChild = true; + setSize(static_cast(window.getWindowWidth()), static_cast(window.getWindowHeight())); + enableDrawBox(); + setDrawBoxColor(window.getClearColor()); + setTypeName("ogfx::gui::widgets::RootWidget"); + } + + void RootWidget::onWindowResized(const Event& event) + { + setSize(static_cast(event.windowResized->new_width), static_cast(event.windowResized->new_height)); + } + + void RootWidget::applyTheme(const Theme& theme) + { + setDrawBoxColor(theme.get("window.backgroundColor", getWindow().getClearColor())); + } + + + + + Label& Label::create(const ostd::String& text) + { + setText(text); + setPadding({ 5, 5, 5, 5 }); + setTypeName("ogfx::gui::widgets::Label"); + disableDrawBox(); + enableBackground(false); + validate(); + return *this; + } + + void Label::applyTheme(const Theme& theme) + { + setColor(theme.get("label.textColor", ostd::Colors::White)); + setBackGroundColor(theme.get("label.backgroundColor", ostd::Colors::Transparent)); + setFontSize(theme.get("label.fontSize", 20)); + m_borderRadius = theme.get("label.borderRadius", 10); + m_borderWidth = theme.get("label.borderWidth", 2); + m_showBorder = theme.get("label.showBorder", false); + m_borderColor = theme.get("label.borderColor", ostd::Colors::White); + enableBackground(theme.get("label.showBackground", false)); + setPadding(theme.get("label.padding", { 5, 5, 5, 5 })); + } + + void Label::onDraw(ogfx::BasicRenderer2D& gfx) + { + if (m_textChanged) + __update_size(gfx); + if (m_showBackground) + gfx.fillRoundRect({ getGlobalPosition(), getSize() }, m_backgroundColor, m_borderRadius); + if (m_showBorder) + gfx.drawRoundRect({ getGlobalPosition(), getSize() }, m_borderColor, m_borderRadius, m_borderWidth); + gfx.drawString(getText(), getGlobalPosition() + ostd::Vec2 { getPadding().left(), getPadding().top() }, getColor()); + } + + void Label::setText(const ostd::String& text) + { + m_text = text; + m_textChanged = true; + } + + void Label::__update_size(ogfx::BasicRenderer2D& gfx) + { + auto size = gfx.getStringSize(getText(), getFontSize()); + size.x += getPadding().left(); + size.x += getPadding().right(); + size.y += getPadding().top(); + size.y += getPadding().bottom(); + setSize({ static_cast(size.x), static_cast(size.y) }); + m_textChanged = false; + } + + } + } +} diff --git a/src/ogfx/gui/Widgets.hpp b/src/ogfx/gui/Widgets.hpp new file mode 100644 index 0000000..a476a41 --- /dev/null +++ b/src/ogfx/gui/Widgets.hpp @@ -0,0 +1,226 @@ +/* + OmniaFramework - A collection of useful functionality + Copyright (C) 2025 OmniaX-Dev + + This file is part of OmniaFramework. + + OmniaFramework is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OmniaFramework is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OmniaFramework. If not, see . +*/ + +#pragma once + +#include +#include +#include +#include +#include + +namespace ogfx +{ + class BasicRenderer2D; + class WindowCore; + namespace gui + { + class Event; + class Widget; + class WidgetManager + { + public: + WidgetManager(WindowCore& window, Widget& owner); + bool hasWidget(Widget& widget); + bool requestFocus(Widget& widget); + bool addWidget(Widget& widget); + Widget* focusNext(void); + + void draw(ogfx::BasicRenderer2D& gfx); + void update(void); + void onThemeApplied(const Theme& theme); + void onMousePressed(const Event& event); + void onMouseReleased(const Event& event); + void onMouseMoved(const Event& event); + void onMouseDragged(const Event& event); + void onKeyPressed(const Event& event); + void onKeyReleased(const Event& event); + void onTextEntered(const Event& event); + void onWindowClosed(const Event& event); + void onWindowResized(const Event& event); + void onWindowFocused(const Event& event); + void onWindowFocusLost(const Event& event); + + inline int32_t widgetCount(void) const { return m_widgetList.size(); } + inline WindowCore& getWindow(void) { return m_window; } + + private: + WindowCore& m_window; + Widget& m_owner; + std::vector m_widgetList; + Widget* m_focused { nullptr }; + bool m_tabNavigationEnabled { true }; + Widget* m_mousePressedOnWidget { nullptr }; + }; + class Widget : public ostd::BaseObject, public ostd::Rectangle + { + public: using EventCallback = std::function; + public: + Widget(const ostd::Rectangle& bounds, WindowCore& window); + bool addChild(Widget& child); + ostd::Vec2 getGlobalPosition(void) const; + virtual void applyTheme(const Theme& theme) = 0; + void applyThemeValue(Theme& theme, const ostd::String& key, Theme::ThemeValue value, bool propagate); + + inline virtual void onDraw(ogfx::BasicRenderer2D& gfx) { } + inline virtual void onUpdate(void) { } + + inline virtual void onMousePressed(const Event& event) { } + inline virtual void onMouseReleased(const Event& event) { } + inline virtual void onMouseMoved(const Event& event) { } + inline virtual void onMouseDragged(const Event& event) { } + inline virtual void onKeyPressed(const Event& event) { } + inline virtual void onKeyReleased(const Event& event) { } + inline virtual void onTextEntered(const Event& event) { } + inline virtual void onFocusGained(const Event& event) { } + inline virtual void onFocusLost(const Event& event) { } + inline virtual void onWindowClosed(const Event& event) { } + inline virtual void onWindowResized(const Event& event) { } + inline virtual void onWindowFocused(const Event& event) { } + inline virtual void onWindowFocusLost(const Event& event) { } + + void __draw(ogfx::BasicRenderer2D& gfx); + void __update(void); + void __onMousePressed(const Event& event); + void __onMouseReleased(const Event& event); + void __onMouseMoved(const Event& event); + void __onMouseDragged(const Event& event); + void __onKeyPressed(const Event& event); + void __onKeyReleased(const Event& event); + void __onTextEntered(const Event& event); + void __onWindowClosed(const Event& event); + void __onWindowResized(const Event& event); + void __onWIndowFocused(const Event& event); + void __onWindowFocusLost(const Event& event); + void __applyTheme(const Theme& theme, bool propagate); + + inline virtual void setMousePressedCallback(EventCallback callback) { callback_onMousePressed = callback; } + inline virtual void setMouseReleasedCallback(EventCallback callback) { callback_onMouseReleased = callback; } + inline virtual void setMouseMovedCallback(EventCallback callback) { callback_onMouseMoved = callback; } + inline virtual void setMouseDraggedCallback(EventCallback callback) { callback_onMouseDragged = callback; } + inline virtual void setKeyPressedCallback(EventCallback callback) { callback_onKeyPressed = callback; } + inline virtual void setKeyReleasedCallback(EventCallback callback) { callback_onKeyReleased = callback; } + inline virtual void setTextEnteredCallback(EventCallback callback) { callback_onTextEntered = callback; } + inline virtual void setWindowClosedCallback(EventCallback callback) { callback_onWindowClosed = callback; } + inline virtual void setWindowResizedCallback(EventCallback callback) { callback_onWindowResized = callback; } + inline virtual void setWIndowFocusedCallback(EventCallback callback) { callback_onWindowFocused = callback; } + inline virtual void setWindowFocusLostCallback(EventCallback callback) { callback_onWindowFocusLost = callback; } + + inline bool hasChildren(void) const { return m_allowChildren && m_widgets.widgetCount() > 0; } + inline virtual bool isInvalid(void) const override { return ostd::BaseObject::isInvalid() || (m_parent == nullptr && !m_rootChild); } + inline void setTabIndex(int32_t tabIndex) { m_tabIndex = tabIndex; } + inline int32_t getTabIndex(void) const { return m_tabIndex; } + inline bool isFocused(void) const { return m_focused; } + inline WindowCore& getWindow(void) { return *m_window; } + inline Widget* getParent(void) { return m_parent; } + inline int32_t getZIndex(void) const { return m_zIndex; } + inline bool isChildrenEnabled(void) const { return m_allowChildren; } + inline void setPadding(const ostd::Rectangle& pad) { m_padding = pad; } + inline Rectangle getPadding(void) { return m_padding; } + + protected: + inline void disableChildren(void) { m_allowChildren = false; } + inline void disableDrawBox(void) { m_drawBox = false; } + inline void enableDrawBox(void) { m_drawBox = true; } + inline bool isDrawBoxEnabled(void) const { return m_drawBox; } + inline void setDrawBoxColor(const ostd::Color& color) { m_drawBoxColor = color; } + inline ostd::Color getDrawBoxColor(void) { return m_drawBoxColor; } + + protected: + bool m_rootChild { false }; + + EventCallback callback_onMousePressed { nullptr }; + EventCallback callback_onMouseReleased { nullptr }; + EventCallback callback_onMouseMoved { nullptr }; + EventCallback callback_onMouseDragged { nullptr }; + EventCallback callback_onKeyPressed { nullptr }; + EventCallback callback_onKeyReleased { nullptr }; + EventCallback callback_onTextEntered { nullptr }; + EventCallback callback_onWindowClosed { nullptr }; + EventCallback callback_onWindowResized { nullptr }; + EventCallback callback_onWindowFocused { nullptr }; + EventCallback callback_onWindowFocusLost { nullptr }; + + private: + WindowCore* m_window { nullptr }; + Widget* m_parent { nullptr }; + bool m_focused { false }; + int32_t m_tabIndex { -1 }; + int32_t m_zIndex { -1 }; + WidgetManager m_widgets; + bool m_allowChildren { true }; + + bool m_drawBox { true }; + ostd::Color m_drawBoxColor { 255, 0, 0 }; + + ostd::Rectangle m_padding { 0, 0, 0, 0 }; + + friend class WidgetManager; + }; + namespace widgets + { + class RootWidget : public Widget + { + public: + RootWidget(WindowCore& window); + void onWindowResized(const Event& event) override; + void applyTheme(const Theme& theme) override; + + private: + }; + class Label : public Widget + { + public: + inline Label(WindowCore& window) : Widget({ 0, 0, 0, 0 }, window) { create(""); } + inline Label(WindowCore& window, const ostd::String& text) : Widget({ 0, 0, 0, 0 }, window) { create(text); } + Label& create(const ostd::String& text); + void applyTheme(const Theme& theme) override; + void onDraw(ogfx::BasicRenderer2D& gfx) override; + void setText(const ostd::String& text); + inline ostd::String getText(void) const { return m_text; } + inline ostd::Color getColor(void) const { return m_color; } + inline void setColor(const ostd::Color& color) { m_color = color; } + inline int32_t getFontSize(void) const { return m_fontSize; } + inline void setFontSize(int32_t fontSize) { m_fontSize = fontSize; } + inline void setBackGroundColor(const ostd::Color& color) { m_backgroundColor = color; } + inline ostd::Color getBackgroundColor(const ostd::Color& color) { return m_backgroundColor; } + inline void enableBackground(bool enable = true) { m_showBackground = enable; } + inline bool isBackgoundEnabled(void) const { return m_showBackground; } + + private: + void __update_size(ogfx::BasicRenderer2D& gfx); + + private: + ostd::String m_text { "" }; + bool m_textChanged { false }; + int32_t m_fontSize { 20 }; + ostd::Color m_color { 255, 255, 255 }; + int32_t m_borderRadius { 10 }; + int32_t m_borderWidth { 2 }; + bool m_showBorder { false }; + bool m_showBackground { false }; + ostd::Color m_backgroundColor { ostd::Colors::Transparent }; + ostd::Color m_borderColor { 255, 255, 255 }; + + private: + }; + } + } +} diff --git a/src/ogfx/gui/Window.cpp b/src/ogfx/gui/Window.cpp index 933fa1e..334175f 100644 --- a/src/ogfx/gui/Window.cpp +++ b/src/ogfx/gui/Window.cpp @@ -20,6 +20,7 @@ #include "Window.hpp" #include "../../ostd/utils/Time.hpp" +#include namespace ogfx { @@ -74,9 +75,12 @@ namespace ogfx connectSignal(ostd::tBuiltinSignals::MousePressed); connectSignal(ostd::tBuiltinSignals::MouseReleased); connectSignal(ostd::tBuiltinSignals::MouseMoved); + connectSignal(ostd::tBuiltinSignals::MouseMoved); connectSignal(ostd::tBuiltinSignals::OnGuiEvent); connectSignal(ostd::tBuiltinSignals::WindowClosed); connectSignal(ostd::tBuiltinSignals::WindowResized); + connectSignal(ostd::tBuiltinSignals::WindowFocused); + connectSignal(ostd::tBuiltinSignals::WindowLostFocus); __on_window_init(width, height, title); } @@ -160,6 +164,11 @@ namespace ogfx SDL_PushEvent(&e); } + void WindowCore::handleSignal(ostd::tSignal& signal) + { + __on_signal(signal); + } + MouseEventData WindowCore::get_mouse_state(void) { float mx = 0, my = 0; @@ -216,6 +225,14 @@ namespace ogfx { close(); } + else if (event.type == SDL_EVENT_WINDOW_FOCUS_GAINED) + { + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowFocused, ostd::tSignalPriority::RealTime, *this); + } + else if (event.type == SDL_EVENT_WINDOW_FOCUS_LOST) + { + ostd::SignalHandler::emitSignal(ostd::tBuiltinSignals::WindowLostFocus, ostd::tSignalPriority::RealTime, *this); + } else if (event.type == SDL_EVENT_WINDOW_RESIZED) { WindowResizedData wrd(*this, m_windowWidth, m_windowHeight, 0, 0); @@ -267,6 +284,7 @@ namespace ogfx + void GraphicsWindow::__on_window_init(int32_t width, int32_t height, const ostd::String& title) { SDL_SetWindowResizable(m_window, false); @@ -305,6 +323,11 @@ namespace ogfx m_fpsUpdateTimer.update(); } + void GraphicsWindow::__on_signal(ostd::tSignal& signal) + { + onSignal(signal); + } + void GraphicsWindow::__on_event(SDL_Event& event) { onSDLEvent(event); @@ -320,11 +343,24 @@ namespace ogfx namespace gui { + void Window::addWidget(Widget& widget) + { + m_rootWidget.addChild(widget); + setTheme(*m_guiTheme); + } + + void Window::setTheme(const gui::Theme& theme) + { + m_guiTheme = &theme; + m_rootWidget.__applyTheme(theme, true); + } + void Window::__on_window_init(int32_t width, int32_t height, const ostd::String& title) { enableBlockingEvents(); setTypeName("ogfx::gui::Window"); m_gfx.init(*this); + loadDefaultTHeme(); onInitialize(); } @@ -339,19 +375,70 @@ namespace ogfx { handle_events(); before_render(); + m_rootWidget.__update(); + m_rootWidget.__draw(m_gfx); onRedraw(m_gfx); - m_gfx.drawString("Hello World", { 100, 100 }, { 255, 0, 0 }); after_render(); } } - void Window::__on_event(SDL_Event& event) + void Window::__on_signal(ostd::tSignal& signal) { - if (event.type == SDL_EVENT_KEY_UP) + Event evt(*this); + if (signal.ID == ostd::tBuiltinSignals::WindowClosed) { - if (event.key.key == SDLK_ESCAPE) + m_rootWidget.__onWindowClosed(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::WindowFocused) + { + m_rootWidget.__onWIndowFocused(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::WindowLostFocus) + { + m_rootWidget.__onWindowFocusLost(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::WindowResized) + { + evt.windowResized = &(ogfx::WindowResizedData&)signal.userData; + m_rootWidget.__onWindowResized(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::MouseMoved) + { + evt.mouse = &(ogfx::MouseEventData&)signal.userData; + m_rootWidget.__onMouseMoved(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::MousePressed) + { + evt.mouse = &(ogfx::MouseEventData&)signal.userData; + m_rootWidget.__onMousePressed(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::MouseReleased) + { + evt.mouse = &(ogfx::MouseEventData&)signal.userData; + m_rootWidget.__onMouseReleased(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::KeyPressed) + { + evt.keyboard = &(ogfx::KeyEventData&)signal.userData; + m_rootWidget.__onKeyPressed(evt); + } + else if (signal.ID == ostd::tBuiltinSignals::KeyReleased) + { + evt.keyboard = &(ogfx::KeyEventData&)signal.userData; + m_rootWidget.__onKeyReleased(evt); + if (evt.keyboard->keyCode == SDLK_ESCAPE) close(); } + else if (signal.ID == ostd::tBuiltinSignals::TextEntered) + { + evt.keyboard = &(ogfx::KeyEventData&)signal.userData; + m_rootWidget.__onTextEntered(evt); + } + onSignal(signal); + } + + void Window::__on_event(SDL_Event& event) + { onSDLEvent(event); } diff --git a/src/ogfx/gui/Window.hpp b/src/ogfx/gui/Window.hpp index 5a00df2..47c1375 100644 --- a/src/ogfx/gui/Window.hpp +++ b/src/ogfx/gui/Window.hpp @@ -25,8 +25,10 @@ #include #include #include +#include #include #include +#include namespace ogfx { @@ -47,6 +49,7 @@ namespace ogfx void setIcon(const ostd::String& iconFilePath); void setBlockingEventsRefreshFPS(uint32_t fps); void requestRedraw(void); + void handleSignal(ostd::tSignal& signal) override; inline bool isInitialized(void) const { return m_initialized; } inline bool isRunning(void) const { return m_running; } @@ -74,6 +77,7 @@ namespace ogfx inline virtual void __on_window_init(int32_t width, int32_t height, const ostd::String& title) { } inline virtual void __on_window_destroy(void) { } inline virtual void __on_window_close(void) { } + inline virtual void __on_signal(ostd::tSignal& signal) { } inline virtual void __main_loop(void) = 0; private: @@ -106,6 +110,7 @@ namespace ogfx public: inline static constexpr int32_t MaxBlockingEventsFPS { 240 }; inline static constexpr int32_t DefaultBlockingEventsFPS { 30 }; + inline static const gui::Theme DefaultTheme; }; class GraphicsWindow : public WindowCore { @@ -121,6 +126,7 @@ namespace ogfx inline virtual void onDestroy(void) { } inline virtual void onClose(void) { } inline virtual void onSDLEvent(SDL_Event& event) { } + inline virtual void onSignal(ostd::tSignal& signal) { } inline int32_t getFPS(void) const { return m_fps; } @@ -130,6 +136,7 @@ namespace ogfx void __on_window_destroy(void) override; void __on_window_close(void) override; void __main_loop(void) override; + void __on_signal(ostd::tSignal& signal) override; private: int32_t m_fps { 0 }; @@ -147,12 +154,18 @@ namespace ogfx public: inline Window(void) { } inline Window(int32_t width, int32_t height, const ostd::String& title) { initialize(width, height, title); } + void addWidget(Widget& widget); inline virtual void onInitialize(void) { } inline virtual void onDestroy(void) { } inline virtual void onClose(void) { } inline virtual void onSDLEvent(SDL_Event& event) { } inline virtual void onRedraw(BasicRenderer2D& gfx) { } + inline virtual void onSignal(ostd::tSignal& signal) { } + + inline const gui::Theme& theme(void) const { return *m_guiTheme; } + void setTheme(const gui::Theme& theme); + inline void loadDefaultTHeme(void) { setTheme(DefaultTheme); } protected: void __on_window_init(int32_t width, int32_t height, const ostd::String& title) override; @@ -160,9 +173,14 @@ namespace ogfx void __on_window_destroy(void) override; void __on_window_close(void) override; void __main_loop(void) override; + void __on_signal(ostd::tSignal& signal) override; private: BasicRenderer2D m_gfx; + widgets::RootWidget m_rootWidget { *this }; + const gui::Theme* m_guiTheme { nullptr }; + + inline static const gui::Theme DefaultTheme; }; } } diff --git a/src/ostd/data/Color.hpp b/src/ostd/data/Color.hpp index 218f767..a9c591e 100755 --- a/src/ostd/data/Color.hpp +++ b/src/ostd/data/Color.hpp @@ -78,5 +78,62 @@ namespace ostd uint8_t g; uint8_t b; uint8_t a; + + public: + }; + struct Colors + { + inline static const Color Transparent { 0, 0, 0, 0 }; + inline static const Color Black { 0, 0, 0, 255 }; + inline static const Color White { 255, 255, 255, 255 }; + inline static const Color Gray { 128, 128, 128, 255 }; + inline static const Color LightGray { 192, 192, 192, 255 }; + inline static const Color DarkGray { 64, 64, 64, 255 }; + + inline static const Color Red { 255, 0, 0, 255 }; + inline static const Color Green { 0, 255, 0, 255 }; + inline static const Color Blue { 0, 0, 255, 255 }; + + inline static const Color Yellow { 255, 255, 0, 255 }; + inline static const Color Cyan { 0, 255, 255, 255 }; + inline static const Color Magenta { 255, 0, 255, 255 }; + + inline static const Color Orange { 255, 165, 0, 255 }; + inline static const Color Purple { 128, 0, 128, 255 }; + inline static const Color Brown { 139, 69, 19, 255 }; + inline static const Color Pink { 255, 192, 203, 255 }; + inline static const Color Lime { 50, 205, 50, 255 }; + inline static const Color Olive { 128, 128, 0, 255 }; + inline static const Color Teal { 0, 128, 128, 255 }; + inline static const Color Navy { 0, 0, 128, 255 }; + inline static const Color Maroon { 128, 0, 0, 255 }; + inline static const Color Indigo { 75, 0, 130, 255 }; + inline static const Color Gold { 255, 215, 0, 255 }; + inline static const Color Silver { 192, 192, 192, 255 }; + inline static const Color Beige { 245, 245, 220, 255 }; + inline static const Color Coral { 255, 127, 80, 255 }; + inline static const Color Salmon { 250, 128, 114, 255 }; + inline static const Color Chocolate { 210, 105, 30, 255 }; + inline static const Color Khaki { 240, 230, 140, 255 }; + inline static const Color Lavender { 230, 230, 250, 255 }; + inline static const Color Mint { 189, 252, 201, 255 }; + inline static const Color SkyBlue { 135, 206, 235, 255 }; + inline static const Color RoyalBlue { 65, 105, 225, 255 }; + inline static const Color DeepSkyBlue { 0, 191, 255, 255 }; + inline static const Color Turquoise { 64, 224, 208, 255 }; + inline static const Color Aquamarine { 127, 255, 212, 255 }; + inline static const Color ForestGreen { 34, 139, 34, 255 }; + inline static const Color SeaGreen { 46, 139, 87, 255 }; + inline static const Color SpringGreen { 0, 255, 127, 255 }; + inline static const Color Firebrick { 178, 34, 34, 255 }; + inline static const Color Crimson { 220, 20, 60, 255 }; + inline static const Color Tomato { 255, 99, 71, 255 }; + inline static const Color DarkOrange { 255, 140, 0, 255 }; + inline static const Color DarkRed { 139, 0, 0, 255 }; + inline static const Color DarkBlue { 0, 0, 139, 255 }; + inline static const Color DarkGreen { 0, 100, 0, 255 }; + inline static const Color DarkCyan { 0, 139, 139, 255 }; + inline static const Color DarkMagenta { 139, 0, 139, 255 }; + inline static const Color DarkYellow { 204, 204, 0, 255 }; }; } diff --git a/src/ostd/math/Geometry.hpp b/src/ostd/math/Geometry.hpp index 7e15383..09740ea 100755 --- a/src/ostd/math/Geometry.hpp +++ b/src/ostd/math/Geometry.hpp @@ -345,6 +345,11 @@ namespace ostd inline virtual Vec2 bottomLeft(void) const { return Vec2(getx(), gety() + geth()); } inline virtual Vec2 bottomRight(void) const { return Vec2(getx() + getw(), gety() + geth()); } + inline virtual float left(void) const { return getx(); } + inline virtual float right(void) const { return getw(); } + inline virtual float top(void) const { return gety(); } + inline virtual float bottom(void) const { return geth(); } + inline virtual bool intersects(Rectangle rect, bool includeBounds = true) const { if (includeBounds) @@ -376,9 +381,9 @@ namespace ostd inline virtual bool contains(Vec2 p, bool includeBounds = false) const { if (includeBounds) - return p.x >= x && p.y >= y & p.x <= x + w && p.y <= y + h; + return p.x >= x && p.y >= y && p.x <= x + w && p.y <= y + h; else - return p.x > x && p.y > y & p.x < x + w && p.y < y + h; + return p.x > x && p.y > y && p.x < x + w && p.y < y + h; } inline virtual bool contains(float xx, float yy, bool includeBounds = false) const { return contains({ xx, yy }); } diff --git a/src/ostd/utils/Signals.cpp b/src/ostd/utils/Signals.cpp index 888a2ae..76a679c 100755 --- a/src/ostd/utils/Signals.cpp +++ b/src/ostd/utils/Signals.cpp @@ -27,6 +27,10 @@ namespace ostd SignalHandler::m_windowResizedRecievers.reserve(SignalHandler::__SIGNAL_BUFFER_START_SIZE); SignalHandler::m_windowClosedRecievers.clear(); SignalHandler::m_windowClosedRecievers.reserve(SignalHandler::__SIGNAL_BUFFER_START_SIZE); + SignalHandler::m_windowFocusedRecievers.clear(); + SignalHandler::m_windowFocusedRecievers.reserve(SignalHandler::__SIGNAL_BUFFER_START_SIZE); + SignalHandler::m_windowLostFocusRecievers.clear(); + SignalHandler::m_windowLostFocusRecievers.reserve(SignalHandler::__SIGNAL_BUFFER_START_SIZE); SignalHandler::m_delegatedSignals.clear(); SignalHandler::m_delegatedSignals.reserve(SignalHandler::__DELEGATED_SIGNALS_BUFFER_START_SIZE); SignalHandler::m_onGuiEventRecievers.clear(); @@ -71,6 +75,10 @@ namespace ostd sig_list = &m_windowResizedRecievers; else if (signal_id == tBuiltinSignals::WindowClosed) sig_list = &m_windowClosedRecievers; + else if (signal_id == tBuiltinSignals::WindowLostFocus) + sig_list = &m_windowLostFocusRecievers; + else if (signal_id == tBuiltinSignals::WindowFocused) + sig_list = &m_windowFocusedRecievers; else if (signal_id == tBuiltinSignals::OnGuiEvent) sig_list = &m_onGuiEventRecievers; else if (signal_id == tBuiltinSignals::BeforeSDLShutdown) @@ -112,6 +120,10 @@ namespace ostd m_windowResizedRecievers.push_back({ &object, signal_id }); else if (signal_id == tBuiltinSignals::WindowClosed) m_windowClosedRecievers.push_back({ &object, signal_id }); + else if (signal_id == tBuiltinSignals::WindowLostFocus) + m_windowLostFocusRecievers.push_back({ &object, signal_id }); + else if (signal_id == tBuiltinSignals::WindowFocused) + m_windowFocusedRecievers.push_back({ &object, signal_id }); else if (signal_id == tBuiltinSignals::OnGuiEvent) m_onGuiEventRecievers.push_back({ &object, signal_id }); else if (signal_id == tBuiltinSignals::BeforeSDLShutdown) diff --git a/src/ostd/utils/Signals.hpp b/src/ostd/utils/Signals.hpp index 8bc74aa..2b37b0f 100755 --- a/src/ostd/utils/Signals.hpp +++ b/src/ostd/utils/Signals.hpp @@ -49,6 +49,8 @@ namespace ostd inline static constexpr uint32_t WindowResized = 0x1001; inline static constexpr uint32_t WindowClosed = 0x1002; + inline static constexpr uint32_t WindowFocused = 0x1003; + inline static constexpr uint32_t WindowLostFocus = 0x1004; /*********************/ inline static constexpr uint32_t CustomSignalBase = 0xFF0000; @@ -107,6 +109,8 @@ namespace ostd inline static std::vector m_textEnteredRecievers; inline static std::vector m_windowResizedRecievers; inline static std::vector m_windowClosedRecievers; + inline static std::vector m_windowFocusedRecievers; + inline static std::vector m_windowLostFocusRecievers; inline static std::vector m_onGuiEventRecievers; inline static std::vector m_beforeSDLShutdownRecievers; /************************************/ diff --git a/src/test/GuiTest.cpp b/src/test/GuiTest.cpp index 4087ab4..1c9f929 100644 --- a/src/test/GuiTest.cpp +++ b/src/test/GuiTest.cpp @@ -48,9 +48,25 @@ class Window : public ogfx::gui::Window inline Window(void) { } inline void onInitialize(void) override { + m_label1.setPosition(100, 200); + m_label1.setText("Hello World!"); + m_label1.setMouseMovedCallback([&](const ogfx::gui::Event& event) -> void { + m_label1.applyThemeValue(m_theme, "label.backgroundColor", ostd::Colors::DarkBlue, false); + }); + addWidget(m_label1); + + m_label2.setPosition(100, 400); + m_label2.setText("Ciccia Bella!"); + addWidget(m_label2); + + m_theme.set("label.textColor", ostd::Colors::White); + m_theme.set("label.backgroundColor", ostd::Colors::DarkRed); + m_theme.set("label.showBackground", true); + m_theme.set("label.borderRadius", 0); + setTheme(m_theme); } - inline void handleSignal(ostd::tSignal& signal) override + inline void onSignal(ostd::tSignal& signal) override { if (signal.ID == ostd::tBuiltinSignals::KeyReleased) { @@ -62,10 +78,13 @@ class Window : public ogfx::gui::Window void onRedraw(ogfx::BasicRenderer2D& gfx) override { - wout().fg(ostd::Color { 255, 0, 0 }).p("Hello ").fg(ostd::Color { 0, 0, 255 }).p("World"); + // wout().fg(ostd::Color { 255, 0, 0 }).p("Hello ").fg(ostd::Color { 0, 0, 255 }).p("World"); } private: + ogfx::gui::widgets::Label m_label1 { *this }; + ogfx::gui::widgets::Label m_label2 { *this }; + ogfx::gui::Theme m_theme = ogfx::gui::Theme(); }; int main(int argc, char** argv)