issue-#163 Adding 'Decimal' Tabs to Rulers

Merged to the master branch
Zinn
Posts: 476
Joined: Tue Mar 25, 2014 5:56 pm
Location: Frankfurt am Main
Contact:

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Zinn »

I'm completly happy with Josef's solution. Thank you for your work.
- Helmut
User avatar
Robert
Posts: 1024
Joined: Sat Sep 28, 2013 11:04 am
Location: Edinburgh, Scotland

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Robert »

Point 2: ".. this would be possible ...". I think it would be undesirable.

Point 3: Of course we could write additional help files, but I was simply thinking of opening the existing ones; in this case Text/Docu/Rulers. Actually that document might benefit from having a link, in the introduction, to the Text Rulers section of the Text User Manual.

Point 4: The files below (Text/Mod/Cmds.odc, /Text/Mod/Rulers.odc, & /Text/Rsrc/Tab.odc) are modified versions (see the coloured sections) of build 888. This implements the synchronisation. It is a quick attempt, so probably not complete. Also, as I don't fully understand all the logic around the Tabulator Interactor, this could probably be improved; but it indicates what seems to be a reasonable approach. I've also put in some Guards; the Guards on "<" & ">" seem particularly helpful to me. (Again, this illustrates an idea; it is not a complete set of Guards.)

Code: Select all

PacCoder.Decode /I:.Pk/h.5..:k....:S....Q06..4tP........F..u.0w.EU/g.42.Mk/f
.26.Pk/s.3w.C..s.1U.9k/I.4I.S./o.0w.HE/j.4E.9k/1.4o.N./n.0s.Pk/Y.4:..../mFrx
nqjjoU4uSbTiE2.35u.2kDqE6E8M/cSxo2zTU4G/DSY5iNviLo87xW.gK60Ok4Uv3zNLbg2MbMPF
q3Y7HbJwQCrr6xyEY7Kx/3u08Wp/8rR0G:y29Ss74TYXJIN28jbzsvT8gFOJQV94pm1sL6CeyUYI
2xTE2nhClIn9qOJ7TNdwFv9uPNVmjRjaE0TQ9:381a5P:DztUbn.MSy4TJZxQOxa0d8QlXtUin.D
NW.MgkclSn/akfX.P41S:42M/Qk3tV0n/SltVaKv:4gpLlskOnvwZa0Igh99WKgxgnffOZUt:O/E
Z7MHGluyh9OKZFctKpwZY5Slft.jd9DFh97GKMNp7MEGl4ZVQdNwZdPn9ogz7MQEoZYKNdMMOOcl
s1uYg8t91ndN4YgICPLpIHxgZabmymKYth5zOlXb9kTvwcTpaSX7vOFh9iogJZHDetMjRgOYGKzc
K8Op76nSPCCPDea0rPIq/gpxgBlKvNgvNiapdhVMeqPNG8dhYkxGFC.KPfN8DR7ZaGNCJbvd:U7:
Vj2nQaTZZje.lBj/r3U:RCW.:QXZMoV9GD/rHPG8vGEeD6amD5M3bBtjOFvfoUpI33IDYUTIEiB8
cEech05YbKC:Bzux0yb5x5YybhN3o:B6gUmcokP0EXk2FLv9Nk442qMTi1et6K.3geLjvtv05NJa
VpmcxUcTL209ilvg68LX.ul0Zur3zVUGN4/f41.w4/XyQB9/C:4uDSTktmW.2D07YqIM9Xv4/541
mxVoHX.vY894.m0DSG/wQtsXt.TXW/FULxT66CCC206Gs60l2fmw4zEEPsEMULb00VtS1Y3hzldm
0QDQztD60/tyf6Xm1Dt/7SyEHJI.1lzr3bFf78Pt6xKm8u4gUzJS8u.diHghXfR3XCcem4PIkoTc
mzidtfSEBXCKlecCh5ZX81Z4tHncmzyypZxzwEijf1pfaThm/xRBpdmvhavtm1etG1huzPBCjxvd
xPKMbpNo2pvJCHrDSbTqgvv83OxO1xKGw0jgbol3LqHvuQltqMVrqMVOlOnd8snaPMt6L9:Nn7SO
ULpxZfSmTKkpbkOn8.2Meg5XKH7f9YpYCcVf6spVkQa8.h:yz43fvLUofiKXWBNv4gndoCabwTPJ
sd8II6GGctIFBNHfbCx2OlTgUpXs8OnZQxFU:eIFhspb.KCFf9kpa00etfBaE/4xRu4jKypPLpMR
9fywf5HijvpLrezjTPvqzhSyryjzvyqxvLjvuzjujuzpjSzjhvyjxzSjvqjxklX4BFK93e6oF4:F
Ug46U0WckM.0B/FI3/4686oFEJW00l//UU1.HeQvNaZQnCKNQtR99ZZaRHgp8nHaQiOOJufqSpBH
RdiogyNZxtjRxtfnqOKKPn8nquhrgpDumxOSmohDSjJbjNdxGxSxKNaKKLPeveeiffezpTiypLpK
pKxPpLLfjfhrOuupxufJhrLRPffJpKrKuepRiizhKfJRLRebpxiPbPyRpVHOpYKeLDpf6cFDQrps
1kIhNK3TH3/u1ryuzqpjfxhTjrKreyxphvLyfTpzyevquxLjJjOMLjx/ytSQVx83YMi0Ga4oZ7xk
sKtPZYbITYvmKKoy0c21.dlt2M:0SBtO5gmQ:ySpKbi0S/YdN8F93uOnx1EGD3lz5ieqfwSwoF7B
VxsenH:kWaysf8rmn1mmB1Ego63hhJfEDiWmENPngh05:BhRHN2C7ojf/q65jaklisxz:blE25BO
:2Tta.sRbJyfPpHbhjpPPswphveqs.piHqsj9deLhBGcyV56iIb8BP4dq4aOWBnbq5ePw7YUaF:j
xBeyGk/7urojOZ.NlzKF9rNKDPeRlDxdM:xWFZWgG81V5lVlmC4s:uRcfkYrLpcDxYJFkJp8/5Qq
bCNdNJKdQimf9v6JZ3LTYHtnVSx81C3FNZpGpdMvMKHaPXFbS5L8nYnCLX9lhQ/lwiFeqRXKRC7S
DsYBRE7/h3vF/pfRVHXZmfynDNbnDRTMpMY55CvItv2dDVWqx0rrZzuryNzZrwQjJ1HTGlaQPynu
BZLmyKIrbrlhRH:xMMorPvZ5Zc8sVl0C0WsFplGsOK7VkC4v.dWZwRjPjYgxqaQ/f62qTyi9Ll43
MOHt7pCWDIBKdpNFX/Hf8lgdbr4ir8hD0GgdmlKE0DeB0HFHR4n57nN7EUcLkICRQD2g1XqlUzi.
ZWymPUPXz.hdyH/:/9xNKomnHoZlsX9iLkmPKVI20gh21ObLe1VaYMN/UDyRUqqEddOrcMOuk5P/
TLGizJjO0CqwC83Mt1qM43hvBTN1qv6x3K3fnsTvsBUqBY3halmi0nvukkB2IyYCI83zxmkIsYQa
H4EzmVF/eTKDyjT5bjVuw6:WEXj:jeWwa2iWXxjOc4ncC8ZSbh95XTxsJnpr1y1khvxXDzj0ziMI
QWYGLvzLprwFUddyLj15:G/BelwbxzvVb5EErr:Qfw94LXHjsB8w.y5QGbyc:kM253BuCumRxlqO
rrjbu.xoyxlgRJwys3:0rnwnTrL3WGamRp.BTUM6WENBl6YDwPzSC/PQ.39xa5rTXm3xi.DWzBwn
csJ85xlzl0LkocCvb1donjvQSGz9VPjf6jNoGMKxxJlzrihN9TjbvwZuLpbuKyZqji4qiZeZjoiv
NtOxz4nzROOqzrbjLee7Y9/r5zbziz3rw.3bSOvVTsfnDLbxjevXBlv5VpR39yVa7iKCLfR7n7.r
MdVE2/0Z7OvDpJ6PyDwt3jZIH9ljp95R9:spDhvr78Vp2v9Tt1eliURTYh:ohQJtSPqf1D2Smriy
3wR52.Xj.Dx359SK:RGw7Z8LK.9Df7rSU.51ispCuxc.5LbbnJ3RFVhRMq4dHfgiLN:sYWU.....
7i6y7VJftP8QuCeNevs.no6OheU6PNJ6E/EeYRjWHVzCCtT9uKc4rUPgqNQoV/Lgn4UMzPYV9PRZ
zhmlbIuJ4oS...1xn1mTj...E.OQkGSM/rJ/efQdgR8NN1Ks0tJbNR.HvtlDDTKv0yOrJozq4gaP
xRazxPMlyrtvdv3S.3plshiiiuSYgTiDknaX.PuDzzDvg3pdVIJspBbyuprnbCfC:Dlyk.Zm9q:c
ypSVCd4OXFNQKWqo3dW0zkNS4j79gZUsH5z9EhRbcbafc57mQpQpmSbtObowUu2tK5wtrivhSdoK
OxijTttygzzpIzi3dJeGBU1KOuHorygxzKSPz7ZOCh0TQaL8X5:NwbPoCC9y6Cz55m2RWI7q5Zve
dogzNp5QNtCCjVlyRsFZzZJunfFuvf23WRBHj7z4Qj8H6VopCJd0ZjYpCldtqb9s:omjxwSbczDW
wfZ:vfOmxSprzjB/dHeRzGThx0DTdKszrJxru5tS1x0rfLenvjotb4I3veRd4XfYivomTSuLHbul
t8BLwz0Gyeyz7tLdD1xzIuRyCJbmwrBhOqxmV3jmeqtxXSrSRb7ktZqjUqrOJwsN5BlsvxbRTpp6
siMviNrnKTPiDLB5YQHRK/pi:wIiT3RThQhnpPjxCTRPg9168PQqzBtUxNtxjqmKOVzHrdPuxSJd
BKSpmNSY9iewn3THHy6DKfEDbI9naLxSittbHx0kTSutDSNnHaIgsUQrLubDzNaz9qi9yof.ypiw
snmQxQPNSPOhCooNRvvFD2Tr0s3FePnLkw:DcL6eENILBJPSdPLMM:CiIm:h7EjHmbc2mL59dWlt
i:1fj5DCRTbXb8ZbgvhCPDPOs4:RP2CnNwplTiOeoMKfJvlJpBB:r7ezFJuqwFKYDffpbU4Ors5j
Vdp8gJ32ojYWmmgQHtKbKtch:j.L5.SQM//txYL5HchL2L.T66I/wa8.1tO2bdR1PGIhyRwOj22Z
guOJp0RPmzQngeT2wD2hR:XduxczyhiLjC8rLC1yzZFPizy.y7zntYQutsiCvwW16vj3jkRhQojn
WQUy4BYUk59dt3k.vzFWschcQHMav0svauRzjBNEyDlHT6quuW5ZuxjNeR:8RYxvXZZo1dNZqX78
/wNqmaVH57ePkBHujM2aKPhqrvDzX7qvJmZxoKFTS3EXS.5NFVwa/TZaTliNs8sRhXX:fmVc:Gya
4pIL9sg1nVcRnnIyGVN/qTWqBSHBj6e94Yd.vo0n/WaV9i9E:dhtPmcRUVOW738rx2V2BD5drdR7
hWupPR.RqUHOK.jrgVsOtG3KneY04GrLP8Ob.G88JhPCaDjCYf9BBTBYywxEy4mo50Pydh:05/Xc
q3jqpoRF6Sv9hTL/d8PKoOQ7qMFWr3ZFV5Et3O4xV0BF3LqKqyO1FqQWcNqCD3m0t3Oy4qMCxiiJ
tiQSNfLYl:T5vWuKtK6u/mhpO2ic/f8GNQ6C05dbdyi5KSQOYQEpNrt:c9/3iB6ay05I0cgNrKcu
ibaq/awTC0I54gionOow7UN6NX/mVElQS6jrPVldOUjHrjCQ6qktySr/2eLjbVDdox1Cz.u3PBOC
ioFLmzqp2Cv/cHp6Prml.l86QuQu/JnYsqzuY79bnmxLxSqIxSHy1SrxzvGDUeeKmgw3F65/FEau
.Ep041Tnb5sp3aRJpi5tTVjQ9J3Ld4eHaOIjNzRK/ihnnyNv:0N.rEOPRgVqOZVqkrQulPG5fGzZ
2xPNm8tPwRYk4b4O/XahpvfT0dfISWmVoDCOsS:qZqtJvqZCQS0xoJFipI6I4G.4cqe3j7Zx6HGa
ho17aH.1JZk8ibP/Y99Zwpb1H51fiOvZscn8cnQOHciR4Wtigg5Ow/9Qps/2t.j6gb0Dv.hu0kwn
1Nyxa1qsqkH5U/iqT2RwuUJLbYUF19SRYwHcxnLQs/8OPOPL/Lf5J6R00CS0Z:0gF7Qe1fZSOPUL
MRSZNX/L:8t8jcQ:E3YZVMLxSP8aXGoDJUG7zLpHcZsPmKjsanYbehQwdh3cHN0ZOCKmvh2quRLY
Y.C7CiTrYDYz0jrnrFFgzypmHYqbdyduGd2d2fgZCWWiVCu/QfSEpuLTvGsqmOfCctLlCDvpbiNW
bdIagWOvJXsdDrlzYPXCZxuNsj4x3zKTuFFXEXZPkifQaJOyyzzjq9I.V8sBmUXetbuMj:uZkjmX
ro4YuiIGEILeL3KqXMZPr6d75EmlzFEu4a5tC6Zr/uD3MFpVwFnJkqWi5owxvxEPd1SuulPxv/Dz
guZSDbviwFok7vC/sYSKmuRZq00V/6VecYnWnZ4l1B2Cyf4MCP0d6RiEPF89ef0mJoTVhXfnZsf4
Zjl9:QJN/eU5z.y8nvUbJBia2INlsBk/ODMKc61cRY7Z1H4ZwVk0GbxqjVZmLn4f4mcjziCOn/qP
5f.Kof1uT13537JHeE:wX2B3jv1y1v8rTzi1P/4gbjqNQMl4zr3pC4RyTz3223bKcWMEqFX6M8yk
ZQwlpY9qTy:lYGHJZzzSwndrunTDzXbVpwKN.FU1THjBtrBRY7RV9Bgof9gkiLKMdhgLoMpRSkSr
QpNUwOszanHJevPXP4wzQDYzhDnStTmXmzoLy1fjZwuyuywvbj95SqsbC6MNqMPkEGkSCyZp7LNe
PibLZvMa:OxLj/bQ0h9Gbo:Q1rtiUV3SfGcjb9N6OhhT:z6y3eOlZKrONmKfB.a5CTiqQyKT.alH
/FwvSWur4fTUUrJTZBmfcvBuWZIMjFburm:QtFSdTPrW/e88SRF32lHdrb.nrUDLwUHUlCV2SOT/
bLrbz8PmhNDr/aaxl3yzSN.jpjR3Whtqzvin4VwV34OyTyz/CQUSq9tjkHhLu/QZdX:ulFljFV/F
wCtUmolMIsQiirvY2ymO.VYPIfiMryWYwNabjO8DyrlaXmu46/ecSxQsFU1VQYBy7LKtq8rZqk6N
gYvzezxzSJSwzwYxSSjDGbzwYwfmGVUTyJjZTsjTzqm88LbbSyGz3ZnzzZvjrzylTt6zmQ3oqeIO
oSd9cwqR1fKSFHX/CHTwWfpYpN4jniOCWmCepeHXSv4S4nLpu8DnviUiVsj6dCk0jJTpkM.pRniK
8pnuDYv6jFr8gDaD1alpRjtEWY83ZRWYlJoG43OVIwR:6cc0BslzpzYTzouUSN3FKG31lrxyO8Wf
K7VQ8vt5FbUo4IwP9xvCn9WE/KarYyNY4C1g8IYGmgQqmslvWYhZgyHPYNv5lv4HjYWcpT3Jqqbv
7fgXKFIbSkHKSWpXRNnThPdaLWfm/rQdxhWsMJmzBHaCTm:wbU2NB4ZqfWQQH9hCxvrbpkSRhlHn
ShMnTa.vqTjujNxzmmfYRJu7Fwn3isny8ySFTt2irPzpXyzx3hQyzLxpbGGgVpIJFx7JBZGf.oZJ
VGGkrzxpzvrffrJM/7GHJ33yfyxuuuxtSxuxzTmjpzLfeJKMybjuuzJRSzxppojSzuzufW1JYhzM
/mfdJbKJBWKqYQjSLjFt58zw6idz5nlD1lWyIU5BfIbK5SC8GwZSIZNdMhYx/ewWiJtut9rTnruW
EQdDSbCd:jW:N9V6Gw9OUZ8Lqoywc/j5/vX9I0P5.miBcWVYDkB.4yEONlWRfd7R7GHROIqvufTU
Nm8UZEtei9f/ExmejufyjvxLx75yGTpThZGnSYcGGW0YZINGpsYxpuzjSxuxSZEwj6PP3UIohOGH
7.jy2j9QxzEE0zzRXovcvpzCMaXt7ipgPqMkTMgPBKpMTsvQLXCIbGJuGhPDFbR6/8h8oo7ZILp8
uJubhW6fkGfEvQg6kFXqlhGrEN/aJWUN11GrBcrTPKWu2Pyjvtla7JMS9zfiWOxRG:LefC4ti3PJ
H4ZWLMGG/Sb5GZtBt77YjREPtewjR8axBR9poaPnIkecp:Z6N7IhIbgZFWx9eTf/CquCgkCZeuwt
L9oKjiyi1JHVRdeGZPUlLSlBp/Rk3H0ZU/qu9GcPcvQdrPg9vgpPZK3FQdkPGcrhwfpM0mIDTpPz
VcMG:DaPelREQk4gp4C3/pqOowXTGvxovr3icxeeBGwq6ULWDoQvITYR0RrYUeJZ49PUnGHiTvRD
irEFjrzDrzvxzzzRzpyzRznzjuwFHRadFHRK9crxyFlbBp/asxh4RHpir:3JujIGtWU8pxrrl4Rr
zJSjuGYH5nfmbsOyRUg36i3yjMuE5GU5tpEf:vt.aIPPcXufyP8S/Ye49T:iiyIt5EsikXbibMo3
sRRlBPg7qnvxqZDprofo::4XpVqjFyziWqNjqLgfvPyivrwn4i:nYUeywN6jime0fGECbHx.vTxR
BUEJivPZOGkxaYz7cc2HknEg9qVY/hoGqphnOjoq9hC4bIIipzzNfgmR2Fxl/WxVP/:Zm60poKH7
J4CkrK5C6pOd5DGzkFdzqbPTw3tmRduwO4Jj5SCwSjrzBEv.7j3qwDxyLoUfiq/JbymjHKdqtO6w
dwnPJXcYy/BHOaahY8nRFpQO0kbPwNQpPK5drv6CfnjSbfQ6VShDhYvxfGKrGKOLSvpvXSjbsgEp
7vhezbdeLnoKKOKq8j39PBoOVtb:uvOFGfaG:in6mv1PYIQEdbTFscER.Db19OUDgKqzhmOtW0VX
szn3chdpHcRMTw21lonCKvdK5lOkd1un:MqBommmNPrjr8zGtnjvyjuzRTjpRrizSpxhjfum7qBP
NReDHrKhJotgfuxSyxxzzSeXLcROaTJ2jDjTGVbh/adgZIT2KhxCL0xtJLopwg.PF/mtT68pGX7U
hBQ7cyFDZ20JD6fFr.yrxgkrJRFiqdRji8fuG3zTrpWqXRdFjPvJ5oE4gLnXNXPGpg8:D:xLpbQx
zvhDzZwNSgtgLpfvvvD:65RX73.tgKxLjjCljPqejDUd5u9BQFSZy09MuoyFqUu3rgS7tgKTeZ4N
OhcE.bvrNCevzgLrwzvzGoenjbyxzzuYyxwaxyvg3qX7tyq0f65N3Cf6QvNIVljZLnxedfvGbRf5
lkgYbNh96ump9aDgixTqDcyzjb1mYgZtCfJuyh7eGd3FdgqkmjIWPJuyZp:vuyn5yyreDTOLvSjK
nBSKWIYoG62RLLu:xkeLx2UWi7QLqfrv8tTSoz6YjqMZozq/o7IskZ7z91uh3q4Om.5Oo7eoE4OE
z9yjQgZPcHrewzdbpvNJKbW3I76Si5rwhjKUjh9ejETzMDO0pSfTPpfq9ZLJTGJqkP2BHth:bPBI
rjvSwXJSoP0eGkKdUVa544kiayF6hvPzpxTIUSPkKlQOeoC8zp5WuXjexDvP4bzFOB:U5ObLrXjt
yGOEwbjqzBW22p42GG7aEUDqoyKGWz1aCLFqmyP9z:M//U3bXmxu4QgVPD12fXs1aWrBENtKgFRr
15li67aXqQ99xrSRjZsn4./e81Hk6NKCQoniO:oTTZKPyVNTtPyLyXsrLEaHZpih7qyaVKZztbYc
D1Cqr4fOm0eYue9HSaWIDnyzx8pObx6yybqzx8Pzb1ynf8ze.TObYrrdddHwlCqyiPWKfPqrhPzP
vJhhzJjhJfTKpevazTDBLIrhvTmczyZLlBzzhQ8dsz:owDdzOPnNfShy4sqpn:InmRDNhPTKSLpB
dfLaoKlJqwcajZH9VR:1xORubSZzarVTHmvHLhPOhxPuperhPKjLjsz/omvxb9KP5Rbbymjqjh9v
NmftNPIjZxpKjzTKLHSbHIx9qeBIyGBY2CXnSpbTPNrqQtRKKrZS9IbJjbJxKOBJZRJioGUGsyjR
zh6J3PKz86ZxDOI8bzRb4q4etQasw.sSFOR0fR382j9VuBmBEOdOq2zGju7TymvFpzBTVzBujk4c
zaa89G.4kfytpPvQ0Rw/LgRec7esEuo8g8pMoisHyvSzC39DaKcgIzUZ/GUa77MlSazPnTgDYRzz
DOfCS5wNuQG7LpvbymQb8QbdFbBzQ.qF5:qmz0wVzuszTlYi.L.dsxSXjtssxO98iH5mbz5LKWIN
cdyYmfRFkSpDkx4sSWreK5i2fP3vpk7FRmj/SRwi/v:8miozlm/GGLV.z/mL9HuwMhcq0ZN4uFIW
tSsHeJ8PcrDr5nPd8H0ZzzZbL/spcZg0ImSpuehU/oDpg2P.bzMVugr:6qbbqWSPIx6qOt4Gf5Ic
69q1bfVQ1r.f0qql1DRh7WsSgKo9JV45vKSSpIX:nPsj9j9D55BM9PBBg36bOjhy4c9KFz5JXPCZ
xGu93nXfNaqPVZop54T8ivm/yslI8oLKiwuRKpGvlpL65a0seviCZfOhhXzB0hhh1yBB9QlS.IVY
zpIhmt8VDLJyyRyH:P:OIcT5mQxVognmoOiDCJqlP1BH3DyZurbwqdBPJYtfCaRbMpa9OQtcb4WR
HdV5GBUbYu2i9.O.Y1HGdHmkJGxNrTi8imiIc/LY.QJfju/vthT1ORTOh3sp5qo3eg40pfpTVm9w
8jTZLjus3sw5qeGJmEZ48dfZRR0Z78yRLeqPZue4wzUHu6M/PC5r8QvDEMbMr7re/.tvjmvXxQrP
aZtOKGjfvZbOjVe:xJNDppxv9D4L6Nl/8GgRhdSS4XjMalq7tQLohrZD.cWYZNuG9NPwVJFJVFRl
ozHRf5.Fe9uoH9/FdNeBqz0hrOwSafMnMkQpPOhrhtaPif114PdlhKaDDvnFXi3iMnQ9Ifi:xCc6
DtJCSwzDrRtyTnZszblvSd2WzYCRujSzekn:n99:jbnz:t/zVZujw8OgQd5cFLeh5qu.8Hx8h7/T
bXyjBCKjeyoZuMH3xMhmj4WwIhIceJIkBkppakRBzGwS/aTzzbx8mnpg3wFTNNuQDKa0mBPXDCYJ
N2Q.9koQYOx0k0Kuh1K6lnI0RLiu97pumg7prZZd6eqyUN9aoIr9yilke9J47UyGHafnyPvj48LM
1gp5bY8RsbdPgymXYL9U56Drm8H8VqySwHR44uZjOSvt9gVh6jvJk1MRYbSFPqTmab/jrXczkueV
5Pz3F526y9bQx3x/rt.rglcZKtbnVdyqQ0F2w5HqF:ChPwqq775y:bLw5xnzTClI9vwsvLYQHLTR
sP8OONrLuHejnKzkfvHOIeMqHxzmu83rMzbKxsjiff8GxcHr5GRjDlq9ysQCTwQQQTjyzTLOv0El
fRyxNFTcnOTPyEIutCt1vvaXv:EFDt9wZbVH2DQd9LHTvWDZHXBYCw4XzrThfjF7RZTT6m5MRSvo
sLfjSovTTXg.FrWxVyxx7IYRy5h:bnQGRvQmrzZQntv1CGOmbmGUpoMqiq5MSRhPBKyejjMSd.i1
LJWrQvP53hhT4wSyxXvjmClT6TFuUEos5mTtBL3kL8.bsvk1TmQtZz60tYbvmC5Hxq2y8bIhPzhm
oljidTvZnWtkLh9x9Wmsudoh6rdnUYiO.Y4xoyJwVet2S08DfhjvavzhcwKTm.3dZBv6azw2ZvRp
:RZaVfYNq7juQIvLwEtith/mMY0iizqxu8qSQxY1Id9WSTHGbGoM7sju8twgSQkUxD1SbnyzTiSo
UdQofU5DmSMcd:lnWpwkq:zVTvxwdt5ywrskVRhQ5cf3513o9F9EOojwTJfg8ef::1PtYX8HEC1C
Ko5dzF06zm/HXxFt9YVSTuxnYvPXFtOKYkhiFKzMjiZwzDlqx0TX1MgcbZWzKHmzuIvrLTqze2tX
QcvC:Bz7TqxsszPZUXju6VZ:OqKdQctIXCJeyblGClxVCrjnZ6vf/T5lxiGjdtQ5d:ghMiII:yQc
NKZQfbI3QUqQgLjgGnfuzGN:gF08/dOYVboLt6OEvqqrheVd.bieW6NQLcEK4x1oNLhWDXuQyV3x
4mJvGqrc8OKcZKz6hWaDuTyvrwVSFhrXZyL4BpRv1SG7CsFvHZ:rdPP9buL2cCoh1vSrhWseSjju
dIRGd9aP3qBO4:sZf419ZzZfQOXXeKt/YVZG/kxHq6fROvSV8zflQzjwzidxi/ljBj:J3hRPKh84
tY:ZDJz8uieqXsKaPWlcpRgMQG94ecnapQVDPpgKBF4v1eBN0dKMld5Y:KKpzFLvfwi/:OIN8RLx
NNoJvnmySrR6mbqxrfnbDFNgeIYKxhNLPIGxvxhvJY6RbPcfLQxEKpKPsXJepNeywpD1J3tT3RfT
egQguLnnKo88eSHuTBVNBlFlmH:2K5s:o:ympq4mmvpPx2:VuaWQ:.q8IfPz2mRzTn2qHYJKshqI
qmq1qigHRdNDBzjTzbiieo6pcS5IOKpXqh8znSFLtFjVLqPxaTwg:gmnsFuycgnBvBqkhsjIgdrw
ZisTbziLxB8ZHNJmoyOMaDFv5q3CIdmHry3u5O74RDgEmjvqNLht5sx3fxL8R7BOKi7o0xBIlnsK
djoKyQrSDTwxQXlzY44DIn2nlP68yYJeikNzuzUob1QJe5Q.GjRWmhTRSnZuo3rdpvpSig/vwfl7
hM0BcZ4svDxKPy8qKbCraVn6xnTfrgy83YhQ9wkIzLJjKvRe1biLx3HtRuRbexzJyS1bwIGX.d2T
/14BQ7FhKfFCF1lSBkiVk7o3iZ.J9C44IvzywUJmavSNthshcNXbLgR.aditVTrRgenSCmGSjJSj
vZvlObxKLcxJmB8DQbdvkxLjvCKJvz1zVuMmG/HXmq0efj7eb56yHpjDynEhMKkgx/JCSQwIvPt/
IufSGarPaeIv:zlbuNGIdfXvxuqIzipRJejyuzTw3zyGJZzq5vNLTshajLCfek21J1/2.1c.9k/0
.4k.ME/X.4g.EU/j.5U.Lk.s.1U.C..j.3E.NE/s.5E.9k/B.4w.N..j.36.RE/g.4I.QU/n.0s.
Pk/Y.4:..../ycRUT4njoU4dTP1XE/.DUG.K69xUwzB/B.Be.m.UJRU9PIXgJ8dnVC52a1VUdJwH
7r:BCja0Ym7kswTfq.oJy5XGdmU7iRt3t1j6OLYCRNpfM3obs4:XrcQyMftaj4mXn8j:N:kXY4iN
3KWv8VIuJ/r4ZEQQe249ONR2u548BS8J5LUtyaVFlZzdukdDxZf31ej5.SykwmL2qC1BnRkkh4VM
JFcJpQ:U53xlLS0VndP5HLXHQoaCY1:bFGvbE9jto:HcB5ELCVZ48CViR1ku6loElIu1l:u/Vo9X
cQQDIMs5FEBVa3BH/m1fq3:6f2dVL8MKLlMSmaCp:aiTXv8M8SyfTxyScobwwLedV91pfpB5c8aE
CPvt8eRDvW4F4eegeErmh:XzIqC24QQpN:tcnbJnHtj6SOM7IJy59cHeQk1Q8NUDln1On0.n/9y9
a/:oQpk/R09TNa/eyM33a/9rbLwSeMuiup3eQkkCRzvxOPPorJSRoO4qqMT4M04OpzgZT/RSnuiS
6VQ0wCvgi0Is5iKFWsU2XUtIyt5DfUyfUtdQwW:i/hNwOPvzusBOsBphuJR:TjzzL/eTwcruy9ck
NwtL:kjzRSBr3SdI3Puzag1Mg19eiVHeSt023QbloLGiCVuCJl0CX2jXcFP6.mIBcM9My6GiWb./
2PZZrREu6KukQDvzhuuhfd1EO3nhg/rt4kagQxLYR4VmCTvc/UrWVHKyUUR3w21c:BaoM5RZjEPT
tfvo6GH7ldyvUix4:mpGGea8aOg14G63YjvzdGqW3ZjceF22WCVIM8QncXHx3NdupyTcVzuEvoEY
sqytLEVSx2Y974w3T/x2SmBsW9fCWCI62UjnCXyHk/og3pbKF6yU2ks9y3wVeLtnRxhyIEvntsJG
ilrLwU.VRd30l2p2JM9Sa.hYibbYRnnNtt7p5nZTQb7ngi7qP2Yv7TfNIvBqsHgZjfbsZ:vBkx5X
:7Cl3mbBdq5C4r8v8DIbNMkgv7Xg0gv5eRabbysZCm2.NqQD3aT99HgZCIv3KRVx9Qv6mCwXNqLF
TzkMCLTrW5944FCneZzrHgHzh/ON/nJk55VCvNFjqfClSbNOsIDbN7HgYN7x:v:WRaDCmybNvngq
y:v6JmgbNzzgxPiDavNqgncuXRPgqn1nQTvfGDjrbwjxzPavQiYPh8hqKMwrBqxBvfBqHd56aKtb
ZirWrPEPhphqrhf1hqxK08X2BqKBxGfBqaKvTXojTpFiqye6PD8NecLOce7pJeSsakN4uLdiq6sH
pFYfpr:BrYauPgdr6FiTr.xQ/injDY06RwdOnFs3rG9G.rNtFMawrvFPupx0eTocBqg5F70hxtGv
9LpzpzHnHgowDJDxjzvxrjtTbZtWZN3Pm9N3ED9JM3hM38P7gZOGdBIZ7fVh7QHIZP2PP1CM8.zJ
mQLeOpTdatEvHMxJgU4QioFQvciLDkbPNWIeiICnyJlHe9ZLGNnZcfgzmZXMe93m7NbMCoOlpyNR
eNibFpFmUZhB6p3WcQiwtkRglzPfCuqsBdpm805I6p1h3Tw:pFTFq0qzTb5dwsObM1CQ:cpUMryb
n5MCQ8Hb11uPZD1QsLzC2tytxDd5Tyqmx958anb1DaG7d/wYlwsQK5rWhzXxRvifRdnDt.LvD5hR
thLS5igX2xSs2DuXtkGD.JDzi3IBIctdLkBsywOvCzBW.hNe9/fSyQ8vgGlyhgFIMTlLb1dFbNaK
sos0eK:YMuaI8y8xKhgXkQm7W8j30OZXcOPfdX:Wn5RRYNB7ZYqYN5GCX7:lMgPZequuhfJhfSqq
phOfTOhzOrqqrpOhfOhzQiuvCqrqrrzrrSzjvrfrxyLxzuziutzzrRzzzrTTNzyyTzrjvSjSyrrr
zzhzujzexuuzzPfxzitSvTPv9zzxzizTjvzivxzSxzLRjvyjTlXE.K933/XI/UW:E4..6c9M0941
F3gJ/413EO00ccckhZqLNKQp9OQtaOQeiaP9KbCZL8hgiamp:tooqKohPH:etanIvCKdQn8hRxpw
fynpedjIzyPpB:gnHpdvSJKdSmpDOZzbyNfenpaKzLoptZdumn9:n8ojKTtx9qTDaOZaZTGzpqLn
GemxaKdzKZijaNZxtfnJvh9JrpqOipDivRrrivLLzvrfXyzjifwSSK5tTLxqTRxz5NRNRq3TLFrE
Nr5JzRRzFS3rRTZZSNpxxxSL3rTttLzTzRrzzSTFzrxbQpKGc7se7J9FRYkJBdobbLPbpd5NswSt
PwgOZ63Cnn6nf2Z8uwjcyj3ZZWi4b2Ydt0eElJLJvPbLCehhnRwtrpRnRnRJhozPTiPeyvbCTnjR
Byqtb1bCQXQuXka0r6vND2fpsCHvjkBc7DKBwsKLsTDwmWM2KsQrrflT1QjkWeJ41ocd3i6:mZ/N
Z:jRe4SfqOyhPK:UwEmZNWV12YqeWYNFbKg8kviiJ8yeypWQ9musbuhEppEUTaIeWiCKZ8dkyBU0
ZYf4s6ctTuZLPHPKg5D/q87ns5sJV/EKGSlDN..40PDTVzNnnnK:uHByQIsIqhXneSSN5scgGUBE
llpCe3Z3VsFszq/hKi8wKNMiTXaWznTbDZzhMtngzYaZohCT1cIlmYb2bf1zaaQ3Vjdc9tdxff2S
wF6yl:BYcXCgSP/6mX91Inxw1ttlbw5C0d6nOCghnNP5cD5XEzUm:Ft:QruNX3gW9ftaPX7IHXl9
1BjLBK74P:rXS6HE:QCMccuOESaZqL3lRw/x46Py3iHEdlowtzC:UzBKh0q46hiCNBlcW6VW0I:L
EPjwGI95emmrIEOBMovxRUOkpyCZSaZdUBkX:NdsddHaOtb:iCDI:EP:yOgxijvBIjp1nvfhx:uS
NlRMJV4aEH6hfLfeEzQvfuZuuiRgvwtZPCQtTIjxvCumonBLLzKmVrvxrhrp3WyQiR7qpFvOmwVm
.3PbTy9P2p9HbJyfxfGUzFk.5uF/kFitYrGfhSJTLKet:YN/3fPSHrQPefaLPjKlo3sbtHOShpR3
DW8NFbY9nhQov/wE2Rv2byTE2FsFy4LSXTSjIFgWEyXFl.RyWcBtlPqlxOuuUhrzPLhjJhveZfPq
qjPMkRWUHHrwh9ZremzSqLzzLzCLOegDxjhKd/bvtyRGz9jNTgdV7rgm2zbTPxNJxhuCxt96U0DP
deHExnw0EblUZPy.0djiMMs:yQWHgGzS:E9u5BTaTpxwruQNSO/m1xbKPbxwtNJWqBwttzn3NM2T
28LnblRpbZrCTh1G2KWJuQZ1QFnfby.n0ODV7E9cTjqr5uBIZIsgR3oODQXw4zrlHgC5bbELt:m8
yDHH3EYb7iHsS/kQLh:uonfaPG3jpk:SQ1:.Q/IoVZtRwnR0VTUnPWnGCsTtr5ow4s4t:ZmlyFX/
skEbYOywn5R/bPQvQwrUyoTQXpPVQdOKtQyT74F5uUJSGNqRNpaiB5bjKSJnd.i3iW7uw2xbPqvL
azdjPzjWj2mLmGfur7LL0vPdRXmGGMqzbSiUb48N5B4uoqieRLMrORD:kk:uyLEquU3psYRwJCV/
50cvU3:CHLN7XjsivfuOziYNLkO2Fkq/jShVXivzjy7u1dXSMYSDj8q41UWBWQw1mXkgjrsgVwEg
gnc6:ZIksQMuYIRYCMnoK/Yx6153YiVsK8Q4DsRZC3:YIwRV6ezWmdVcpXnNY51wsDsB5tFkjEFQ
DTwSWpk:vUpl8Hv6sD2422PnlfUqXTnewbtZ5UyXUnG9X1O1yrjyh4XkSw9wwtqSQGK45:j6Uoo2
BwNO1/QKIjSHWGgw7D110.I6RU/xJ19bhHsVvywxx42qxpwJdHMUX3fVVby/VP9z8QkqI7QylDlt
kamray9wp:PpX406ZxSTwxz8:N58ls4YZ8sVTaO:PezgH0voezhrBTCRFDr8SOWBBmRX9GwfCBUa
vI1qplMh2WTXLVV3RB3ztNtTusm.G4Ug6XoVTV2EzNIN0FLXnlep1HmWSTaBYVCCvCwCLk4FHz9n
3X4OxJckmI3x0uNY:azTZnNR9p:DXDXpmQY4YIe0CSsYlYOx.WzLpmLPL03QUd7O5QgmtWE9SrKE
h:NjfBBxRRf:vP:iYbZmFyyErGPPnlRnzrc.rTmGwmQhtK94odS5WEffo3xpggLe6BmcYrPrdFDh
RD6NTKuYP7fQvOpvLiIjI:Lgl8b4JjjevQRShETDIjOdr7urPOb5PawY4jvwVfFqDK3Z/Gd5geY4
jV84i:tPt0KiOvR9yZVPOrpYNP4pLTcTryTBbUTTT/Mqu6rtFmVyeRH8ipdtmnvZLnSf5KtHpFvu
XslKo1jy3aDYYxBquBLixPd/2GWt8mDqQPHq2pxzj.4deZw0WhmoG9NJyjpKgHZnpnTxO2Wzb1IJ
Ya7XFuhLbzLhGKDtxyzIoJLtXLPjSwWtDIctOCgDigkNBvt9ip4we2cVc/dlIdXuOZT4nmbeBEik
XpuKb1iyL7YqwvZnUna7k6r5Jn8Pgh395/NttQCZDqKDVESP1w5yxrS3hcfbsJGzLygVuOOD6knO
8HwTow/xxjiOcTUffyrurrOxQpaXwyntyxjlG0XpuRjjYwiHYbir/lrsrWQTDpbtz2HKsLBDCw/j
TGHvdIYRRgWp6ekmqdH/iGH1RcS/Yux3ncQeCRPHVBpurr0ND1BNFyPfZfr..0is./Si3CvipjWT
4q37ilgOHHTKyz6viCheLTBfHOaWdPRW10UhYUMHUbaJCIWPen10mWwtJSLdvw2E/XpqdYkvnrRr
9RrOviuhX/G:7BcQ7PNC6U6XSvPVsTHSzb2lwviKxpaKtvshrZxb:Vl1b:CvfnlGus0:0qFtoFKn
zhwsz:pzC5PrWFnr/WVJfQfoPkoMO8htDyNoke2VosCKqxqSRWIwrKRBoU.gQ49j9hOtsnhGogWs
8giNilUS:bMk7njpzSsWmWmzZqPKRl2F2F2F2F2F4mvcW6W..6W6yxrvvHa3BVKkyrqiqjzsn9RO
4eyPfqoq8KY58UYDprN6VYNJCrsirhbtQYOopPFf4rg2GLrCbxcwHgymFWgl8tGYcpXu9okd5yuF
ROI2pIhJXT09buiqfsznfhOZFD4duKyG6rU77FSpSbP9FyboFPEZtLzWxkMTi:dmuOORaPTKNuOM
rM21xCgj8Ifxmvvfy.n4QlEwrLM8mRN:rJpztTG/lzTjVqkiJ3UzZhf4Dyvj7e6ezIHRDoPviUpl
Sb33YY9BdGZVW7.kEe3HmFzbNVopyreIopz6xjowT4hPP83jxexMm5IWUP8YzSXiFwp9/sZ4KLaw
mqJodzRWKXTpfJxvLvuNcWpkfHpjrr1j2uvLcOKrruSPiX.lrjwBxDn9hrraPvpjtwbMOzzSfyCF
xxuxSLPhPaPwGOv2PRgCJz67kBdymGMfSzTszfTBwUa2HGZyzrUihUBB8mOg7XxhqS/bvxrUqquz
qzP7kyxrabj/SOq9qh9WttnSPyQJvKyDPKRdmvC8qiep2bV8vu0fJCfo7zzbFTjSR4PcMrTrrwv5
NoobOd14fwGnl4EUgGr7:cP3PeWcy/BjnjZnRKloonCslSDrmyfrRThR9ayftfSRrERvvmxoQpgw
HPF222NTdeyKioPj5XRy9J:wT5WyPaH/MzXTqzfPH8s8TIuL3FmhRTrL0jRjBhQzW9QqzCLl9ujh
qnBCRyZfiZnsuhh3btDWiNXVKfRfWyOTvJwezjpDpKeuaGm5vVHIvb:TwVbaTMlEPI3/KehoB0c6
ziPbOET1u479aB2FQ5:PY:Ztf/MOs05pzzyM65hwqp/Tk8Bf42O/DXPfIorStswGk/slktzuPnDz
zhEkrUjzvvjooyFHBDh1Mcq5XGRgl2NzXrvZaSM5kmnNzlKU59DM4Z36fQB1VMmHseDWdfpVcfRq
rKEU..NyD1FxEPeo9Du0UygHrWVG2apeJvVpXrpRKECf/BhD7243:hm5XmT:Maquv7NhXtJkTVnK
bSXV.s/qT6gr5pLmFcvirGIGkCrKycpHWvGyY8bJ96.:sjS0IdqGj7yj60.lVgckF/wdq4.nggZa
M4xs4Gs6C6EP4eWKmqxg9qEy8utSFEmZ1Eyzbl2yGc02DsXlDJaa8pRLI8VJYr46usKeMfH0dp6U
3nCIkIZabsXOT9cVzUO3PpFihqYkaIp.PtmlRDG58C0QZZaURy7CEk1aU7mb/iz64qxWBaV/5zpa
zw7XYwJ:Ty9PJZ495gdjP1:FZV1qkYFYXdSvb/SY60nN9IhM1JX89NmWOhfqZPNf.sRBY/Jc9PNL
2uph5u3f3behNWIfF9Sj.gnXnNClhpw6D9TLTKOS4WYvNHxxdySDqqraKCiSe3ssNf3DKQmfit2:
W8PPu84njGvoaF3TML1CSkrIMgJe/M0pUBnxLj8S9pwSvSjgHm1k2lc:rPUCgy9j5Ki7V98Qi4bP
r80dr4FdjidxXNwJHO9bXyxXVObL.zPOaf98SzsI/vCyuJ/GQYwS5.E5CrHyl7oWmEJpzxuIBV84
uNGLZOSDu3cROvyr4shhceDPSZX0hZivGFcX7ugK:/95E1iveNR7Tp5MyzISjx.Q:laioxkJ:mLf
wpDqIcpWmHdfgkpW1VFguyZI2GBegInhm82kISuZG5FN.5fyzxtM7dvxLzzuezGjzt8DMl:5ivfF
f8W2dyXnzMXeyEfpiqxom:SD/xYmvwYEcm7GDGNvyLuzjvxJzLujvrj/eGfC/5dkOLz/sWtBc8nv
qiSZ2TPQEm3bu6z5QBCEkDCgOd98Mhaxo8O.7luzjtxvgofPPy9ErPBhqOQEkxTBvKrOLGUifDpd
fZCeqb2zaI0KCY6bZc7tkK7M/TWiXUuL0Xn2f/YoB7fpZjzLxPJwGGxSiagPPIr9mlROaBobjLvF
JpyY9WEQZpyWhqmbWugpBh07Wvxgdjub::B8Hq1rHJ8acqPoqYxaeCRBOQf34v8keiZ6BkJloQdJ
No0QNOC6snJBKuiw.rCY/mPY5cyIemficqGXPMGUiRJwJGpKer8I7iSQa3SCkYyBDnSFk/moRyNi
SDMWFJC4H9bQ8oubXysHGe3PPv2zbeVHqvdxHIcf7twFXHHP2DcQWRs8H0Fx/LkCi4wp01ynQDn1
ncFbh:a0/1rnhqMsPypDvdn5xhxYOzrkw41jn6seD7n6D3DyVgr6vqzOzWRajlicrKcT2a.yzK1O
o0D.4DKrPi0F9Wu9b54sv2jX01ZlFjKrm3guSuGJ8fzoHQxmBHBet/ZFm3CIq7whJj2eSLn7q4yo
wXmhN0hHDGcq.BOwd2hg234jfKL6Fn2squevIaY:iFg4UZJTQSaDf:QvHmprPfqnbGDEp:nmh7No
Ogv5qVbaHK175/nNP.rBEIJ1TiIBm18wyq4JrBYouF8Wr9JKpjGuIrRfuYvLrRrRXG08:rzLBTtf
QgEQY3SyPRKbTvPjDQrNLd:iFwMqt7ulkDNYgg/jJUuyhLfMoOtFu/avT0Vsl0sefd1Z/jeY4imH
3acm6139wJ5CI4gFV1qWvhqli86BZnrE7SbHayZ3PHEcCDJS/CQ:FOeefykMxbcVXYVGzvrveyZc
hGHQ:gcWvGmgtUt2a8mdOUuqmD12vZbOC.0kPT.bGXJ8WpQQBocJH39mH21HXTF.KbQQtoyPVDxv
Blt2/ys7l3xGwiUOlgfCfqsBvWQ5JebD4JfOS:kZLRf0/ux0o8XEpGVKTC5:VUnMGNVYud2bGuq1
CZoTTYi9E9eJud.:/xa82rbNz1msk7dw5On6r00S9Gp7T.KBa4n3E4ghjOkhnaUad.ycNRQt6Pi4
WVw7YUZ3yn6xkKqB92fMZfOIODSdVsg1i/a25tBY0vyBFHZkjQ/puRXXvNMQLqUmzigghhP7S1Jf
Q404Jgoqqp1ptddcPKGMd3pYxEUkegedvrsv9utxoRvuzaTBBjxxRzz75q9vZnvZz:xmtarWnqHw
vGHP:nz5nxYzruzvjrNrjRTjLRBe8hGG9t:5zsl9t8df6uWi7YH.cz8NXms4DkoUtUxCgeMOtSvU
9krusoSRIw8KZfmoitvpQm:WyN0Se95Sto:G1Zr/0dh:NWdrdGRg8Vtyv7VGEL.tj7BizxWzxwLx
:gcCm.vvjqz:l9UKQkxYijzruxPr3xVB4OWJNh7URQTpSe5j3zMqFvXf3kut/43pFuI/XrRpVGKS
Lnvr6HiiQe01ytWoqJa.BqhIrZpd8vQogBaN3::Mo7XvGwzIMc8784NaIlWn4YOZEed6Y8IFbZ94
wbaWPa6yFvynzz8i3tqWeXrqYY9UfE9EBfdGGfI18QijGV.j2NBDuzWuSrEBXOaojfLObKuKoSQp
ghOBR20:vQXOIOv7LahUVlXD51FcaBoHMmpUdDGNSbhYcgyGiWqXygvEIwxDiHNZfy:Y2yxdaz9M
d4KBl7PrGbnQ6zRK:6.KIaYGyU2ds8N9Sdi:.DOkZmzrCrgS9MxN7coUNYxtD8uGhaiil3Y0QENl
an8UmzmLQ:6vgcPWw8GRg3XOth2qhK0XxOukoxMpmaz8/oEZwoEqtQ63a5Jhd12d4yxmTNVxh5T7
vcjuDp5PTc:v0o0oCMiM8vcfrZCHpXuWXGxIBmSeUjGDCISaxyramfnufjmSvRSbiqOy19qUPDew
dJhtrLumeDm7z/s0FaQeoKMgSHJ0LjCVciTpuctp9Po0u7DXqvFsdXYSQi4NLZ9XGRKNYeuPCoqO
3JQjhyNw0:bSHeDmturoYxgHBvnshfetWFR7CtiF:rWtkNXv6tKr/cXFXbPzxja8OOyEoNv6tLbW
9ctuWU.3CfzhK3iO5zm3fjqlRvRqR.xJyCbtWr/:mQODaWwzvFmerIn7shfhBCrM.VlTs4sK2Kyq
QwQS4LNsswE9MbitRcuKqU2hfh1XWHC5MwLIXctoZcS4HeYlJgiJKiHGBSNtL9gvOoSixtQcsLbz
vmZoCktxgMhLlN8rg2wJTCxxfnNJjP4zXjWDp976NqFTm19sCDT2NWBryGTgzzWzdz3vzsVWdSzf
msKLj4n1Q3ZYNMhX54RzQnlYfswgK52q8iNbN30m8FpP4jt3zN:UxKNyCRycWiC:a0lgj4rwxnVD
xbRyjvxC2.CijzLDgpzDnxz09rfsxvsfyjvzvrpEwuzjzrVotzdtz5GsvSzvyuxSQ5S2wTqSj7:z
WrwNzJ:YJCeTlKPt3:05IffrTsxpzsdeePo37J89x90GGZP6h4bdvb0F3QyCyTjXXzq1qIhxjgJr
f5T7Df5PuzmSnP:a/VfWY8xT:5pJY3uDt0knl9snyFkUhZOxT:XdPREWzqubhYexovsT2efhvzM.
H5cYtRafWngOzXHtu3xrypgm:k/HCNo3fukzNBOvLd:LMtz4oz35RXb:IsGGH4ilZzLbaFwUEwEv
Zom44BCrbwCFg:jBLyzku5QC5QzNyvqmmNH0yQBvvfMtDvWLEgissL/P8U:4nuMEhwEXepIJm8ib
57.eglKhER5jeJ1xt82fjGrwx5977jQBUD4YeRGbwQ8o3ry379cRinjqEgIfgV5duxirTsvi5eqo
wfpqTQ8/I5MooKd2epjDTgQ6yPmnU7hiyRzT:xnmdLKI.kHaFQrsl3ETM/ThXMVu33xrJf0avVKx
/5xpEUb7BFPgim1Eyq4WGGzrNCfNrGroymE4RZUk3viib1YUoCsgl6OxXPXiraFq7BfeqpV2YaJp
qYjUoQVnqFmRBti.i5:axg936izIxsHyVJaOPbRHRSmrnRrtb0DZrQUf4FKiy94F/H2X.rmc74uW
iZen2aWZQ7.GB7J6j6pQuCl3rFx4dxQ.Zni6wDkiPKRb0Rs6yghphsdy5b.Euq8shlvTbTrl8lNW
yRsfn8NKsCrvz:O6y58QDL2v4uuHgK4v4vOh/lBbdiPxKpCMSRjCrvxDgtOMtuEIXarGg5pCCev5
iyBc84OVbFrLQ/zGO.qCrKPyZl5xghglOrYgxvztzBrCH3euaEcxOTYp.IcOyTgDqjFUWRcDqL1i
jvxxMVKXBl37kfsnEVQy3Vh/mNHCjPouD.ldqBKveNSrPppdllF8E.wamuB8urwMsHDiy1dzfaPN
X.mT5/vDgPZUyvYC3DSwbtfZy4IRM3N2IoHfbfDr4Xo7u69mH3dF.Yb0CZGnY72y4M1TPPSQimWo
GI7KTtf/xqwqzfn1z8UkKxjD8FVJvyEkPfQ8puCy8QhqRabSge3qnDw4:r8o:DJndfXdTLdxOcqW
kCG29ELFw8IVuah:V/aVRT7TLBrYuFe2iycL7YzUdbslCYxxy2cZQmVE7XhWoJRKdZrTONZBGRFC
1ySOwdsiZ2GwPHuDDawlyTaBDFNHZ4R04R4nY8sJrxpayeMIqddp.3pzLejUDooiDwGF91LFiFrl
4/uDB5WlX9GbYoqw/O:Dy3U0xOp0ay7doWYW:Kb7aTNnvty2u99xLd1orkv:wn5hCUYtv9kxEHxz
037jW36DU7dob:j:twzUV8/vEOcpuKsGvmDsf:SvfwinRkV3B3WpDh07:8ytqPoNzjjzyWh8Jsfr
jI5pR2VNi6QGx2P4cXD8hw:a4DZvMNFsQp34PddTHyTXlfrzmO9XLE:jQz7TWLCHQ6vhBVpSGzjp
mtHTwTMlIyTLliWSpiRaGx5TSB9PhQusfbPFRB5CLCaQvNLCNbBqqnCPoKwiKLcxhdsfz3wWjLzz
fz5yHmDXXrCzlXFBqCS6DK.xI3uzn5:bSgI3wYQSeUxYQT5CnClbbKH:nmRTt7Xt5ngQzbzXz5zx
TtzDry:TpSyFvD3wOxB5UgRhoT7:IDYVSEy3KW2ZgGFpV:JaFH8vIerKCRzv5zf6zjuaLKQpeoge
8GnDR33t7uzYYRTMT9UmritMNRfwYTrlNqdnz5xn53Gd:dzRzqVDwvbzzzlv5pU1Dq9GvCRuO8eu
gzJqgGGFqXm5BSETzjxROqcR2XgWaMp75evHnN/rFL8trgNpvyzlbbYTt88i:P6eUlRgNa53BZFg
KZ6H.JpeEGYICpcRL1bJm30BfhWcWJEaqHy:0MnnOuIrQZxl/uQxWJLl.LyRzvrgyYOV5J14jJTD
3Junf5yG9fnlMjZtzRmG:qbEyRTzDsezlN09M3YJRODLyGTesJqTePXqHrQCTS2PymzlrPzBjL.f
UHdNxfKJsshypgJ7SaQ4t13yaUQwvzv1MJcdNs0clHzksvqzkrjNOVwjPxEkshebkKp1jrF0dsG:
usz7wy7Z7tLl6qvRLxZe4CEVMcz:bzWllxSjhfaNJfbfWseyrxjJuzVzT5wjXPJ33pIOR3:rJ8zP
PaQauerCbivTRuxrBLdhhd:.TxvpTjrTvzfzpzuzezPTvTjBhjNCv9jrxvrvvzizrSzjzuzzjrrz
zSxzuzjTijzyzuzjrTwJCDdKUnD8TdiSqPPUPaDbH9BgLphyPyZogz9SdthPSjLfuqoKcIFfPCEv
m9SfDz5wjpzjTRHyOxwnEqTupPNyhaXsyspwqjau6nzxvzrjTCHBypl/W6pjVNnQtp6hhggzJdyo
j1BklxqOinPwf.zTQyOjF27KWpjTLxTqjRrqmyfrefyhvpjqz0SfvpOUDJdnJOebvTvIOvvIIKjY
JxSyhvvvvyjjhSjvTLpLqqgqJjNVK0hKPBFuOzLjdFRSvveUCgxnc5fjTSjSywhztMLPL56zzzzz
UY6gdbLRMgHqP:sUhQ8B4l3QuurFDvX9sf77eu4pFZ9PM9OzJd9OmvIwvOLtxHqalBc80p4XKBay
qHrr9slxfCvSipzKxuS9PDsdZxDm9qZ/BXYQvQQ9c8C3m1JkO:nZLZSSZr9BiPN8omZCX.n1LwKo
XLCifIUNafk3PmN0c3Pc3CSodlVo/KX6ZKof3kFjd0J7NEYONbCGbQdiiS4hIePlhPRdheUQv4XO
9K4oBUNa44nPHBHK7ckBMgNWooOXCpdfKoqhJdtdOJ3hTwIF9qoqpgah9ZphPNzIaJ:cWU6YJ9Oy
eyph9vckMeBgXhedTqv503Iiem9PLNjBhd3nMWqpoWHSghBidSxyqZzIpTTN:PXuSxqswIxfTGaq
ehed1SEZbHzeuXEoMZufIj0MOTS/GSQF4efjIqGYDD68mJ7RmRd6pSSBCw9S3jwaOdIm0KrxtkNZ
OMbYtqErSqqjKLKKyqhzfPZYbNDhfysdhNMcBgFJ/PSXPwJRqfwPOeFKd5F48lM0LOn3PJKafDnh
jKfomSa9pWmKfTn2JNDKSLoePPUjEr28GlyhClGRUnhz7YbW.6UWwetImb81oIFyqpnTOhj.4Btv
SEuhqduvESv9yQDtjzzx6zyWJSHvvTzogWDxT2:BquIOsbpwGy5zSnP3i0DHsfsehz2GpRBuDpXr
ghbxZMstwwC8s/mJDc3PlIwITPMvsTH/hKTfrr6HionSoDtwDmHStUQeHQgKIaSSvYHLspj1bNqO
z4irhhh5IqqnVgDgTUi9cpNlMinLtrszR83HpdJNttyKTz2JU4/sSU0BkcjFje:Qe:To3CfkMktK
.FgqHob4EWfbDBTJON4CQvsSXFlhDBDWMw9w5PqwMXkrBikPnu47aE8gybztzutTbjTm:eni2jvT
rvcsmv9orgnYsTOcr7hLfGv3qogXGPdn/KjhFgO0eQUFgp9vLu:fZ1/byDj2oTptjqPiCEsCzwSw
1Uuv.mLhXNrhWzPC4dBRdRrp7goPGxKGOxDvNn4k6jTp0jf4iromOjNtNeCT2PuDLjs1Q3yu057x
hfd9G1TvClH.fQNbchGqeN2xeVhZ/ti3ew45xzRo1sxkdMvwHre9xvtyPvpvCKbnBqqX6mqSFhCr
5jczzZrVyPldbdwKnGzzYwb9r9rfnwz/hWZlrReS:dZh0k6Z27ZbJwmQ6l:9TLid77DBzjSYwDES
5SjDQirlyfezZQi/2wvl.TUFH4FB/goW:/Mbvo/.LbvjstnZ/sybbzlWSe15U5s5DUb6elsTa7pM
bfbJsdy3dTxN6iFvw8tzFJmeDsWC.IQUjpD.Drz9rdQvU56W6fbC//u1rjs0tzS0UjQjzjNOVXF4
2KycxeqNbajzo8zusmv7XyohH6ccdJqgdJ9ZNflKwYF3KdjxBzoxvJaz8HSp9nzqd6OF/f5d9vnv
jmtypWrjpTpIendhYHxTN8vSS1wtSm8MLna0MxLGSKohZbjxYYpYmzMDKKgmoeHq0yHn0qcYVzdi
bOdV:bi5U0tIWR2UWgGZEFT43SSNnSqIzKbW1zY5DSw3vT:NDNQ4SzyG.W/a.KPsQsuTNdQlwTzU
EFzkMhP5Nel:gIhGDfyqpeNvjqObdMaPuo9ZOaC1pWrbc7lmD53drbQU8.XyanLiHNuQf48lv3/S
2beWNjz6ee8yzKp:zMcBnpMX5Wwz0xDC1rtRwxzKOyTehL1zLxCxHyzwhjFTyZOauzr7D5diKtq6
KSakDJBjRzLzdpSxFDTxhTrLbFsxEiUzzcqbkd3zWUW:hStziyqzCghe01nfPIUx1p22Ve3eozwy
ZORjHuqc/UmxNtwjrFuCSrqYo4DBhEOX8drhjxlqfvfBo:1qYcjvHZv1nvTtb96kJPTpOUONJ0Gf
saZmNbwHvgULszxygkzBX93McJa9Qnqw:szUI.Kp3wgIzODvqofBwenz/xOfqSpfpZd2hO6twnIf
3Rf8nYQ/vWhSUw8xYWxHFOdbegn9:gn1TvBOsHEjeWrDYSypJNPXqhDlz:rUzUltCepuIvZJPJR1
jPv5NZjhzqcvxsG.NDvJ2N3NaOESxzLrX:kQCaQ..Lexf0c9E.0nwW3nnqOpKITxN/uhSDtXdR9L
3..3Gl9NT2uWRUvBQ6sxipCySUqmpzQm9TrUxt.sVz10ztPvrxpOzfc6P1qBbvRnNLvrpvJGIsXo
TyVGCKNxJpUF/Qs6CC3HP7QYrzRhTc.SnuJtNNNaNCe62uGfHMTymXv8YidH1jjgF17TYQgf0m09
mINx4TlyF/3mhGqR3zSTgXYvPBxC9l7uxDO:jJcbypP2LldRuFnDWCInHQVzwtfHGpOpOq5fII7O
KshCHZCF.MP0oOGmGeRkrnzncFmDSWwKvRN1h5awPTOQDBaqp99:mC3B7HKN5PPHvvz8y5Ev:erj
FK9jRycbIxupGbmdCDPxhjOs3YyfNdGYJpW9DmsyHj94ywgG9YRyoJ5z8XzjZtegxQiSqOfSHjYe
HLYIqWzIzb9W1c:eYZrKhYXQfLcRFr5BFhMmmHplE:mkCLz8FehuZP8ER4wltKLvkt3J7BjTyR6j
F5xm6wSRTurSUfjKLmryKS6xDGGow/nUIBrflvnYbfoxRQRGYqxFFTwU0Xr8hsDORnfaTNZGdXgy
nMxmDF2LrLWqhWveOyrNqvRXfdxzjVSkg:79PBpN3SmO3ZwXz:99zsLp45oMTpNutQHCCyxSuYjI
jlxl6uO5iJV5SbUfXrDxIBywfHrwTp7DLY4NHBRdsHFpKypXdq/VZzwOZtK3F51w0iTa5yJKgcgD
LTOelaPDwvhfuOIeq3lvDR8nDTnnczf0jMQWc8w23szOjdtTZbCPXxqXG8n.yMKLkiF3xXDvnlTx
jS8bxSzTuvPTBMceu25C3uxuES3kVZehaatjKjQ6wLb2fbXzhn9qNzm.DfDUQgD.J50Pf.DJPzyh
xNz9jtcxm9nM600rgg0hKhJfa5pOmp6tMQC3KwHQfpCwxnlvLnzvP4ObfD6ZeiKdxnYJfynPNZnw
tSfTTDz3ed3xtmJa4TyDehjxLayybxGphK:m5QrPy.CQ6coSZwL5.urYUSB0uDPD8ggK1X5ggPDh
UW4VT0Z9cy3ZMTflDapZRD92z8mg9CKBQnVkzsrP5mVfDNLr3HQ7wIZbSXrn.qNJJarexYrPowTe
wSFyUUe1l5DELpssIISDkztFJm1w8cczfJSumxzwCJLcQ2MhnHo:gb.gNjWwa.y5bxhTCQsI/FJ5
Ufy0XbUUR:Wtfwx/no/vVTV/23nV33sdacu5GxzL4C5zwc.TLUrwzl1PTwywKaSzysihFBeTvfz2
ubzcqvmnqMqrrmZQOmJRqaaepyjpRdrrf6XkEFJp0HdrOLnyrRJz9qdCOvdr18ZVMp2560bJQ1yy
73RRzZdqoxp9Kzizq2QUQQZfzyuuHvcKKOPjwtq6RZLQ5zGgMYgcZRp6Xb1yUxy5xo3QwoLfRIyZ
RqS9lmi3LD/tnuDp6Zt.QzujprQluW8XYzn9esygJZGgxq38qMmNTeQn1ygn8f24zmpOiSD3nzd9
bF9n:qcHFBXgzIePz2JG8PB3:DhjvRrvirhaaKI1JUcwozgXChhuTyTyFwyFxrGC3vdhrbfv5u1X
M:M92Sx/xlNslKs0h9P3Pd4mnxQLZbf3PajylGkxPTgKCbOpD/uqDvGybDCBhWdbyG8ENDHh3nJe
GJ4GUlMljdTgWwIIhRXzt9O.0wtKb1NRKPG:qbcgxb55ZnqKRqLLDFu0lgp5n51XCxEYoPaBrpXP
DTKKeHdMZxWkJLH0YQhkKTNrTT:T7SyHMxJP3vHtMvPBPKr7JJME6UWVILvhIwJr3tCSJhx7B51W
KVO//322rTPvp3Zun4vvNr0ueZZzULxyZ2FL08XYQx0JBgUL7BIpTpGGsFQe3Cez2LvtfyJRzhry
P/u8jjQ:bfTzNjyckgopvkHLehdZrdQX6tD4km3:3cyvC9ReLhbto:YpiTb4xKwrorITUUabfDrE
0q1Z5U8sPKqp32P5qhWfEC.TzGvJiPBdvMfRqyMyy6DKLvDIGWhzyLJwWJeDTLg8tBMnX9w58r2J
dTLJu6vhrdHFhrRZZZjfsbz/zF5pmGsxVDcXI9jWCEMX453XVQmX7XXX/ds9jd4uIhZpkYvOnjso
SzSmxPRqZMJfwtsh2F52DCqOqaSOp/bzuBObsjqKP3JMoMwqyRyq9gpDniybzOpbvhxrPtTUFyOW
70OEbpHRmnv7CLDWwihXiuKnE/KqU/j/zFilThz0iwxOBkzNjhkjJdI/PJgRWyhi7juzo:ycBqw0
1MntJZNdwePt4emXJy3Ul6K1aCz1XEYPz3YpJZtf8.O3RJeazv4O54U:Cg4MJgJMJkTwj3Pr2pjf
LcbzLsw4rExtrmpFajx:xLTfSHPfTaUUfPr/xkfkS3.05faRaNyzp9I5zaWMaUowWHlRcYyvNbbg
kJXGDgTx0qP.meDxyIiBT0TeyKxGzrTIygnukzy8pb:G0oTyFZzI8XzTO2kXz57H434Xtjv4aOfZ
5hTc3542PuvDSvhPBz0ze/QiKIvuzgxZQb:pEDe1RdeuIuHqE4X8hGgySqTx3WPBlBmjhL0yYuzC
oyW8CzDTIlLiznlvgjj9ThVxjjwo5TuaTTkPjzxD8rtSvxhOm1D9QJPcFLC2DcSJ/BXjwT7OENfu
wJ0ekNbtnTRGz2/KkTwBdexa1xLGu/MzqB8xfvC.tnwzlyOvuXByrvJzpyqqrze:uEwnbuqgmyrt
K6lsZzR3tNbEtlP3:QrVrjnK99pdLRntIxBLnKoqvgh2dtgfpxxldOiHxgBhKmPPSx9Fasuqie:e
mtapyTiPPxg1xrOKpoBhShywddRNaQvmyfTuKjfLmfDsHgwHNxiG23nIphxokCkRZw4zSjaTgeVq
U.BxjqRa/OJj6PRGhUuqvOezj3MHYNKIOV:mlTONQfIdamr96:80pNdWkzgqHVgSczGgqpOjixsP
XTl:gO92c0j8D.ylFTbuvnyG6/9GmGTXQWHLynyKZLvmrxSNZTHDRDY6K.oKNn1FSdfG9GImUnIx
pRH0/OkvwGwFFGefzqETHftPdhQnLJqvVivdsNCJdZGqfPdN4FaJ3GtavYIQjihiqt2SHZiU9kLh
T3NBQxpSm7ckDjusH7XvOKSggUOvvXTLCKR1lZRyX9ryrOXZZxOXvpZZCdxRQevbZSuuCeBIZmIP
dtIPowyni6IFRTqxkZN3NQLTcL3QrrFBvrlfapPirmqjrjxTT8eVL5GLDRe:yBsnyggiePyLperZ
IkXeyaRdWCJBvuv80vKfyJY58THfxiUhnQ8bELQJ7ht9ZJ9y12OgU:qWNbDdJ72w/iyjwwfBxLfd
LihHP/O2jrVMI9xFNMCePZJNO3aKGFiFSqLq77Mgg:WezozeyZggr85jGhRduQ/OmX/JLaeBD8DI
kpOKOYekvFgDriSODwQ/kRwNFu.gzwjV/dV6TuOxfswLabe.Hvjrj8Lyfl6x3FLUB2YN8NaF7IaO
JOGOflOyPnx5bR0m::e:8HSbLJkb0Ge4wNugLytd/437iSamPr6yGefotpJs2.aG6TnTcxd3TunG
cwLU76B9j9KUUB2moc1IdFG/9F0rVyxdenjLw9etetmbFbymZISE6Cuef3u.fRP8Kxpxj8MSX1hr
ihviuuRvuJrPvTQ9dMLIOwHghl9vx9nLdifJvCzy0NnfozVOgDh9brzRjhLznyjDHusNwxSBjuTW
vEjxzhebXxKxcrLbL.zqx7yvTzLxeyQulLYP:ylqvSdizDyBzyXPxMfmwifmzDqabykpD6LndjSa
ZdMBz4gBuOhFfkhTXuZhmvwMhB5GvUUjvXPlMoPkepxpnWMWPy1Lkoc1dhR749SVyXvbdxuu6oDV
09L56hRLrn3dhFaE.I:Kt4v/w/qD5qeKreF3.s..3/2PzjR3z3Fe8z1mxaB1d20krrynvl9S2XLx
Pvo95El44iDXyzyzpPhdBbzD.11c:Ldqk.GNdKkUST3bq8lKD0chojOhFeeMnxmsddDIytRv.8Ph
kzvaFOxNaZJKJKJJJ6NfIFKNONdZ4444JMZz3/5Bgo8vPFdkOM7tS2z9pcZrLDxipeFXja0DelDb
nSzTwhmXIh:1UNOTB:ojtCiM7pL8I0tlWjTwelWoxOKON0vI2JDyE6iy2R3ZB0vTZnUq.q4kpgr/
BtfgRRWfMEkyVxh3zqlrJVvwC0nnjV:LOhUTqTzFbwdbiwMhelhc:ljz9Gp8.4fzsNzx11iBIINT
5lgT3glQUTrxPgbVFoEt30zHr6a6j8EE52lORdHllw2nUMyWrBDGsXggoqZH5CrGkmRlWXY6XCJO
6Z:MlhrRdbvhY0ds.Jc.1NxYRbtE2e:22z547Ek/8OFUnGVlnX11r4PZVUKPj9JkHHMxgqiXy7X7
cqIK5wq:FEayolh5FoR2MKVrRrL9F:OrJLPRqrvcO6WCXivCRIPrMk8jY18Ht4PFwt.CvdvWM0tv
63FpPrBmfUOgfEOly2pCQ2w2xXPS1d4SLVg3Nggoudj:VCQdcy:Ddf8957xgJ5FPRKIIrRnhDMEQ
6k:.E6MhBsFC6287svLOSrKJO6zftWzyv2I5sETavINwWxhBEOJJJvNg7OCymzhfOvJNQmRg:.ZN
oEyUpkro6HlkbDGi2Mj6P9Nxnnsh:hQ9tLgVxZv.9TDKmsvSWoo4kg6luzWhNnbBqLhKjLjaNx3h
ioPLrFzxFjUkpYyUYxPqxKjzebT9PzSrvhpbUkfDZY7.JWKDONfzZOlVjg1VqqabrOTvKcZBngTo
MHQoQQDlxSDBDZZJuyT2PwujIykgv.aQVuZK9vQIhCsJGT4qNjyFz0.0qvivX3sjqmkx7jvsF8TJ
zzOOBvf8nrjzwPtfz8xJxxUPs8SjICRwDT4CBLnKIKzcaMc.TzZ1hCyJxynzzjjHOpxzephRjDzl
HTrTIM1LPyvvnRxTjbyTSupTDmf/faGzzaawhDLmpGxLreShyMU5egnSBxqxgvRiojTOipivxDI.
rog1rLqYm7rtHMTvuiMbzlKHpX4o0WHaYBQ:.MNONiojx:runJqKzvDOOc2Pye:L1snnHxes:I0d
mtquzVqYlSWpxS.7DNxQx3/tFgHXvp.Dk3:FMoO.nsD8DjxPZ1glhipYpz0gewyhjpyvfwZJJJZe
KLMPRrRhCpn3UW:Sea846YUVXfd49XLqXlmaNDehsojKyvgFrz93PQtyRatgs/e0T1/5oNdzPzgy
LxxY4ysfPwDRlr1gexOKTDsTvlwNEYZsSrkhyoMTeCkXOpUx6aoicNdamb7i5TXQOTjDMQPPKqrE
z8rNfbP0:FkX27S5T:ynD4KK6S5/x1fq2FXhjbOhyJjq50nTxfz.ONd4fvuw/Denkzb.8y7nBjss
U45ZtNt7ds1aV0MHs.fUkSnkdq05G0DVoHLDy:DLKG1aQl:j0f:y:hOTPvdxczbQqYdQ59MMCrtB
cwFqf9opu/eSfzlTTuZxpxdJzlM1D8//LfzM/zzIpK7zL7E6q79uD0.BPpZwOQVapIFoS1bVEwbk
NhDVijUUe2OghmDNNM/DZwWF74pbVkFDK9/GNBcEnFwQVCiKsZzv.xfUGo://dtkF..u.0w.EU/g
.42.Mk/f.26.Pk/s.3w.C..s.1U.9k/I.4I.S./o.0w.IU/n.56.Mk.j.3E.ME/W.0s.Pk/Y.4:.
.../aJx5cqTjoU3dzB:TE1.5QbSU7/tgbeq3/D/wenY9D.vt2s9q.fU1MMK4c.1Ij3:yzNG0ISyU
VCWCkYq7VW.cXK:/5IZeItMp19NOFxzfZ7/vzqnKjvVrdg3PNqCp1HI/BGhp/TI5ZPBT6RQVbJHb
n2.glp.DI43E33mssnhlRqslJliBTHychlir59asqMBlvpxT.Pbp4zPUXbQnsyKsBj4sCMVlgQNu
/aCBGsYXC:Rq:so78pskL4if20lKowmeEj9K0OgJNdwWJUPxM2hC/BM6ZtvhfDPy38ySgDvND46W
:FoMWqPMLFUNck5is8vz450w5fzCZttWzj9ckvvMkzFW1X2854mm:3:M56kZlV:64:22QO7zGSHW
avUFmQvUYuvO/3ZxUMvr0Vr1Fr1nr1lr2hoI2D/CsYisaisbCsFisJCs4S.fr/TBXz3bNYqTws1B
Z5ffOqgTb013/Rhgugrg0Fct:s0MxuInXtpMLHQwbyQNouZ3sceIJL8lvbQsFQsEwKqjRwsIf7pP
hwzaxMCQ6wnUHt0z8CvtX/iqbUqnVLnVjy:HXjFqDH3matTKiQEl2lobS2Ud2OP0QsrldHRavTnm
54XsL0B:hijy9e:pMIqGvPyXzxcOV.mcpGOBI0BFMBuOydpz/Z5eIvyBB105d6L5uCZeqLzWY2PQ
NHH9Kz05Ue0vqPqfdXNihyFfcCz/ejxugs.kPwJdwgE9n4LzUdT2B0cEF72V80ULzkRnxhzlDfzY
CaSRxvtm1sgrBhSbYRNwu.x54bgqXEk3Cz0rDPKXZckvLkuXb3dPwrzuJ4Tb8D1RgDnNTnCUb7zj
bJxGIPYxzWiSutLyz0BaaamRZrshKEDz3M7PfqDd/ZqXawwSSEMfoP69fu4BRXlgmNUWG8M9vy/0
nfYny6t:GIOCNv2GiHChHfay9fuKl9uLhJxBpfoxjctroivppaQWzVxx9cSybSo29uRVMESPYjdj
3L2ayWW2o7rSZcjdWLoqxO2ipFQb8/R1LgnBeNaBD2jL/OaNaZ:mL:XzbpCN:n9UYV7Don:Gc8f7
CLG57vONbEVKMFaNZTtey1hexNaSz5rUNa9w.Dx3dWNZZEpXe7n:JHC5UEWp.uw6n:InT7a7hGzU
dcRoma:W.o0bxon3g98jaNFqH4knvWqqRcI...Vkr9i2I6.mCDy.mGJjqsOCwRpfGyiTDLysTygL
lveZwrxvvPxhSLNy/vQrpWGF9NxQHz3r8XaK0tqbZJmhnTvlw43wtX0fyCuPZOzjJCxrGZhzzXE8
Xa:JrTvT1rsDuJ:TPzvsBmjemJKj//Tpjh9gCE5Xz3dvjTDvKypQye.hZq.OfpBjdwGTR2seF3jf
2l5us6aecExiaV.y9ifnxZzKFTHi9SNstyOeMTvMleHBMhXE2.SK..
AtEndOfEncoding
Point 5: "you may need to edit 2 digits and ...". I find this is a common problem; the solution that works for me is to use Actions to put a 1/2 second delay on the update.

Point 6: I'm not sure that its the new shapes I dislike; but it just seems a bit clunky & inelegant compared to the Oms symbols. I suppose I shall get used to them. Did you try using finer (thinner) lines?

Point 7: A very weak example! Try aligning "$0.12 $456.00 $1,000,000.00 $45.45 $2,345.33", and it will seem like a kind of left alignment. Different sized numbers in a column with a common resolution is much more typical than your example. But the reason I want centre alignment is that usually the "." is somewhere near the middle of the numbers, and so can be aligned with the column title which may be multi-line, such as "Price of Items", with each word on a separate line.
User avatar
Josef Templ
Posts: 2047
Joined: Tue Sep 17, 2013 6:50 am

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Josef Templ »

Robert, I am not sure if I understand the point with the alignment.
Your example would be formatted like this:

Code: Select all

              $0.12
            $456.00
      $1,000,000.00
             $45.45
          $2,345.33
If it also includes an amount without any cent and without any decimal point,
it would be formatted with a centered alignment like this:

Code: Select all

              $0.12
            $456.00
           $1,000,000
      $1,000,000.00
             $45.45
          $2,345.33
With right-alignment it looks like this:

Code: Select all

              $0.12
            $456.00
      $1,000,000
      $1,000,000.00
             $45.45
          $2,345.33
Right-alignment is what all text processors that I have ever seen do in such a case.

Did I overlook something?


Regarding the thickness of tab shapes.
I tried to follow the look in Word and OpenOffice as close as possible.
On my screen they look very similar, in particular they use the same thickness.
I also tested on a high-resolution screen with good results.
It may be that on some screen resolutions there are unintended rounding effects.
Can you send a (small) bitmap that shows the rendering on your screen?

One thing that could be improved is the rounding of the vertical tab position with respect to the rounding
of the lines indicating the position (cm or inch scale). I did not have the time so far to look into
the rounding applied for the scale.

I have not looked into the dialog improvements so far.

- Josef
User avatar
Robert
Posts: 1024
Joined: Sat Sep 28, 2013 11:04 am
Location: Edinburgh, Scotland

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Robert »

Josef Templ wrote:Robert, I am not sure if I understand the point with the alignment...
I think you are convincing me!

The reason I was in favour of centre alignment was I often get adequate results using the same ruler for the table titles and figures, and it is easy to move the columns to fit a page.
See an example from a real report below:
Center alignment
Center alignment
Table_1.png (10.01 KiB) Viewed 33669 times
Right alignment
Right alignment
Table_2.png (10.2 KiB) Viewed 33669 times
I am beginning to think your rule is better, and my lack of back compatibility is my problem, and only a small one at that.


Regarding the "synchronization / guard" code I posted I intended to put in some more work to improve / complete it from its current unfinished state, but probably will have no time for a couple of days anyway.
User avatar
Josef Templ
Posts: 2047
Joined: Tue Sep 17, 2013 6:50 am

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Josef Templ »

for aligning the title of a decimal tab there are essentially 3 options that I can imagine:
1. leave it right-adjusted, appropriate if most of the column text is left from the decimal point
2. insert a separate ruler that uses a different tab alignment
3. instead of a space insert a hidden (invisible) decimal point in the title. Use color white for that.

- Josef
User avatar
Robert
Posts: 1024
Joined: Sat Sep 28, 2013 11:04 am
Location: Edinburgh, Scotland

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Robert »

Josef Templ wrote:...
2. insert a separate ruler that uses a different tab alignment ...
Yes, the obvious, and simple, solution. A slight loss of back compatibility is not a big deal for me.

You mentioned the desire to be able to export documents correctly (this is never going to be fully possible) into .rtf & .html formats.
Do these support 'Decimal' tabs with variable, user specified, aligment characters? Is there still work to do in other modules to enable this?
User avatar
Josef Templ
Posts: 2047
Joined: Tue Sep 17, 2013 6:50 am

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Josef Templ »

Robert, the hook is a very good idea.
I have used it now (including the param record) and it actually simplifies some things.
The tab dialog is now in sync with the ruler.

The detail problems were how to get the tabIndex after tabs are reordered, but I think
it works now. Please test.

I will look into the text conversion soon.

- Josef
User avatar
Robert
Posts: 1024
Joined: Sat Sep 28, 2013 11:04 am
Location: Edinburgh, Scotland

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Robert »

I have tested build 891 - looking excellent to me.

The details of the implementation are beyond what I can understand (without spending a LOT of time), but some trivial comments are:
- In module TextRulers the type definition of TabDialogHook should be bold.
- In OpenTabDlg are both IFs necessary, or could the second one be an ELSE?
- In NewTabDialogHook the RETURN should be bold.
- Still no Button to open Text/Docu/Rulers.odc.
User avatar
Robert
Posts: 1024
Joined: Sat Sep 28, 2013 11:04 am
Location: Edinburgh, Scotland

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Robert »

1 - Just for my education, why is TabDialogHook an extension of Kernel.Hook?

2 - The dialog does not update to keep in synchronisation if a Ruler is changed using Edit->Undo or Edit->Redo. Maybe this can be easily fixed? - if not it can be left as a minor issue.
In my red code I experimented with calling tabDialogHook.Init from ModifyFromProp, but I couldn't get that to work (quickly). I have never been fully familiar with the logic flows of Attributes, Properties, and Undo/Redo stacks, and it is a long time since I have done any programming in that area.
User avatar
Josef Templ
Posts: 2047
Joined: Tue Sep 17, 2013 6:50 am

Re: issue-#163 Adding 'Decimal' Tabs to Rulers

Post by Josef Templ »

Robert wrote:1 - Just for my education, why is TabDialogHook an extension of Kernel.Hook?

2 - The dialog does not update to keep in synchronisation if a Ruler is changed using Edit->Undo or Edit->Redo. Maybe this can be easily fixed? - if not it can be left as a minor issue.
In my red code I experimented with calling tabDialogHook.Init from ModifyFromProp, but I couldn't get that to work (quickly). I have never been fully familiar with the logic flows of Attributes, Properties, and Undo/Redo stacks, and it is a long time since I have done any programming in that area.
TabDialogHook is an extension of Kernel.Hook for making it invisible in the module's interface. It is only visible in the 'extension interface'.

Undo support has been added now. Since it is not possible (or at least not easily) to recover the tabIndex from an arbitrary ruler model operation,
I have left the tabIndex unmodified when synchronizing Undo-operations.

Also RTF importand export have been extended (but it not yet tested).
Html does not support decimal tabs at all.

- Josef
Post Reply