# ako_spellCheker v0.2
# This plugin adds a useful spell checker (the Speller Pages script) to the write tab.
# Adrian Kostrubiak
# http://www.ako-k.com/

# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................

YToxMTp7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMiI7czo2OiJhdXRob3IiO3M6MTc6IkFkcmlh
biBLb3N0cnViaWFrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vd3d3LmFrby1r
LmNvbS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjg0OiJUaGlzIHBsdWdpbiBhZGRzIGEgdXNl
ZnVsIHNwZWxsIGNoZWNrZXIgKHRoZSBTcGVsbGVyIFBhZ2VzIHNjcmlwdCkgdG8gdGhlIHdy
aXRlIHRhYi4iO3M6NDoidHlwZSI7aToxO3M6NDoibmFtZSI7czoxNToiYWtvX3NwZWxsQ2hl
a2VyIjtzOjQ6ImhlbHAiO3M6MTQ3OToiCTxoMj5ha29fc3BlbGxDaGVrZXIgWyA8ZW0+c2lj
PC9lbT4gXSBIZWxwIEZpbGU8L2gyPgoJPGgzPkJyaW5naW5nIHRoZSA8YSBocmVmPSJodHRw
Oi8vc3BlbGxlcnBhZ2VzLnNvdXJjZWZvcmdlLm5ldC8iPlNwZWxsZXIgUGFnZXM8L2E+IGph
dmFzY3JpcHQgYmFzZWQgc3BlbGwgY2hlY2tlciB0byBUZXh0cGF0dGVybi48L2gzPgoJPGg0
PldoYXQgZG9lcyBpdCBkbz88L2g0PgoJPHA+VGhpcyBwbHVnaW4gYWRkcyB0d28gbGl0dGxl
IGxpbmtzLCBvbmUgZm9yIHNwZWxsIGNoZWNraW5nIHRoZSBjb250ZW50cyBvZiB0aGUgYXJ0
aWNsZSBib2R5LCBhbmQgb25lIGZvciBzcGVsbCBjaGVja2luZyB0aGUgY29udGVudHMgb2Yg
dGhlIGFydGljbGUgZXhjZXJwdC4gIEJ5IGNsaWNraW5nIG9uIG9uZSBvZiB0aGVzZSBsaW5r
cywgeW91IHdpbGwgaW5pdGlhdGUgYSBzcGVsbCBjaGVjayBvZiB0aGUgc2VsZWN0ZWQgc2Vj
dGlvbi48L3A+Cgk8aDQ+VXNpbmcgYWtvX3NwZWxsQ2hla2VyPC9oND4KCTxwPkFsbCB5b3Ug
bmVlZCB0byBkbyBpcyBpbnN0YWxsIGFuZCBhY3RpdmF0ZSB0aGUgcGx1Z2luLiAgT25jZSBp
dCYjODIxNztzIGJlZW4gYWN0aXZhdGVkLCB0aGUgcmVzdCBpcyBhdXRvbWF0aWMuPC9wPgoJ
PGg0PlBsZWFzZSBOb3RlOjwvaDQ+Cgk8cD5Gb3IgdGhpcyBwbHVnaW4gdG8gd29yayBjb3Jy
ZWN0bHksIHlvdSB3aWxsIG5lZWQgdG8gZG93bmxvYWQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9z
cGVsbGVycGFnZXMuc291cmNlZm9yZ2UubmV0LyI+U3BlbGxlciBQYWdlczwvYT4gc2NyaXB0
IGFuZCB1cGxvYWQgaXQgdG8gdGhlIGJhc2Ugb2YgeW91ciBUZXh0cGF0dGVybiBzaXRlLiAg
SG9wZWZ1bGx5IGluIGZ1dHVyZSB2ZXJzaW9ucywgdGhpcyBkZXBlbmRhbmN5IHdpbGwgYmUg
cmVzb2x2ZWQsIGJ1dCBhcyBmb3Igbm93LCB0aGVzZSBmaWxlcyBhcmUgcmVxdWlyZWQuICBP
bmNlIHRoZXNlIGZpbGVzIGhhdmUgYmVlbiB1cGxvYWRlZCwgeW91IG5lZWQgb25seSBhY3Rp
dmF0ZSB0aGUgcGx1Z2luIGZvciBpdCB0byB3b3JrLjwvcD4KCTxwPkFzIHdlbGwsIHlvdXIg
c2VydmVyIHdpbGwgbmVlZCB0byBoYXZlIDxjb2RlPmFzcGVsbDwvY29kZT4gaW5zdGFsbGVk
LiAgTW9zdCBzZXJ2ZXJzIHNob3VsZCBoYXZlIGl0IGluc3RhbGxlZCwgYW5kIGlmIG5vdCwg
aG9zdHMgZ2VuZXJhbGx5IGRvbiYjODIxNzt0IGhhdmUgYSBwcm9ibGVtIHdpdGggaW5zdGFs
bGluZyBpdC48L3A+Cgk8aDQ+Q3JlZGl0IHdoZXJlIGl0JiM4MjE3O3MgZHVlPC9oND4KCTxw
PlRoaXMgcGx1Z2luIGlzIGJhc2VkIG9mZiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRl
eHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xMDk4MjEiPmhhY2s8L2E+IGJ5IENo
YW1wYWsuPC9wPgoJPHA+PGhyIC8+PGJyIC8+ClRoYW5rcyBmb3IgdXNpbmcgPHN0cm9uZz5h
a29fc3BlbGxDaGVrZXI8L3N0cm9uZz4sIGFuZCBoYXZlIGZ1biE8L3A+CgogIjtzOjQ6ImNv
ZGUiO3M6NDMzODoiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIGFrb19zcGVsbENoZWtlciBwbHVnaW4K
Ly8gQnJpbmdpbmcgdGhlIFNwZWxsZXIgUGFnZXMgamF2YXNjcmlwdCBiYXNlZCBzcGVsbCBj
aGVja2VyIHRvIFRleHRwYXR0ZXJuLgovLyBQbHVnaW4gYnkgQWRyaWFuIEtvc3RydWJpYWsK
Ly8gaHR0cDovL3d3dy5ha28tay5jb20vCi8vIGh0dHA6Ly93d3cud2VyZWFsbGFmcmFpZC5j
b20vCi8vCi8vIEJhc2VkIG9uIHRoZSBoYWNrIGJ5IENoYW1wYWsKLy8gaHR0cDovL2ZvcnVt
LnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xMDk4MjEKLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQovLwovLyBWZXJzaW9uIEhpc3Rvcnk6Ci8vIFZlcnNpb24g
MC4xIC0gMDUtMDEtMjAwNiAtIEluaXRpYWwgcmVsZWFzZQovLyBWZXJzaW9uIDAuMiAtIDA4
LTEwLTIwMDYgLSBVcGRhdGVkIHRvIHdvcmsgd2l0aCA0LjAuNAovLwoKaWYgKEB0eHBpbnRl
cmZhY2UgPT0gJ2FkbWluJykgewoJLy8gJ2Frb19zcGVsbENoZWtlcicgd2lsbCBiZSBjYWxs
ZWQgdG8gaGFuZGxlIHRoZSAnYXJ0aWNsZScgZXZlbnQKCWlmIChpc19jYWxsYWJsZSgiZG9t
X2F0dGFjaCIpKSB7CgkJLy8gd2VyZSBpbiA+IDQuMC4zLi4uCgkJcmVnaXN0ZXJfY2FsbGJh
Y2soImFrb19zcGVsbENoZWtlcl9uZXciLCAiYXJ0aWNsZSIpOwoJfSBlbHNlIHsKCQkvLyA0
LjAuMwoJCXJlZ2lzdGVyX2NhbGxiYWNrKCJha29fc3BlbGxDaGVrZXJfb2xkIiwgImFydGlj
bGUiKTsKCX0KfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyA+
NC4wLjMuLi4KZnVuY3Rpb24gYWtvX3NwZWxsQ2hla2VyX25ldygkZXZlbnQsICRzdGVwKSB7
CgoJZWNobyhuLm4uJzxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIvc3BlbGxlci9zcGVsbENoZWNrZXIuanMiPjwvc2NyaXB0Picp
OwoKCS8vIGFkZCBhbiBpZCB0byB0aGUgZmllbGRzZXQgd2UgY3JlYXRlZAoJJGpzID0gPDw8
IEVPRgp2YXIgdHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXJ0aWNsZS1jb2wtMiIp
Owp2YXIgZWxtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOwpm
b3IgKHZhciBpPTA7IGkgPCBlbG1zLmxlbmd0aDsgaSsrKSB7CglpZiAoZWxtc1tpXS5nZXRB
dHRyaWJ1dGUoJ25hbWUnKSA9PSAncHVibGlzaCcpIHsKCQl2YXIgcHVibGlzaCA9IGVsbXNb
aV07Cgl9Cn0KdmFyIGZsZHN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQi
KTsKZmxkc3Quc2V0QXR0cmlidXRlKCJpZCIsICJha29fc3BlbGxDaGVrZXIiKTsKdHIuaW5z
ZXJ0QmVmb3JlKGZsZHN0LCBwdWJsaXNoKTsKRU9GOwoJZWNobyhzY3JpcHRfanMoJGpzKSk7
CgoJLy8gY3JlYXRlIGxlZ2VuZCwgYW5kIHR3byBwYXJhJ3MgZm9yIHRoZSBsaW5rcy4KCWVj
aG8oZG9tX2F0dGFjaCgiYWtvX3NwZWxsQ2hla2VyIiwgIkNoZWNrIFNwZWxsaW5nIiwgIiIs
ICJsZWdlbmQiKSk7CgllY2hvKGRvbV9hdHRhY2goImFrb19zcGVsbENoZWtlciIsICIiLCAi
IiwgInAiLCAiYWtvX3NwZWxsQ2hla2VyX3AxIikpOwoJZWNobyhkb21fYXR0YWNoKCJha29f
c3BlbGxDaGVrZXIiLCAiIiwgIiIsICJwIiwgImFrb19zcGVsbENoZWtlcl9wMiIpKTsKCgkv
LyBjcmVhdGUgdGhlIGxpbmtzCgllY2hvKGRvbV9hdHRhY2goImFrb19zcGVsbENoZWtlcl9w
MSIsICJDaGVjayBCb2R5IFNwZWxsaW5nIiwgIiIsICJhIiwgImFrb19zcGVsbENoZWtlcl9h
MSIpKTsKCWVjaG8oZG9tX2F0dGFjaCgiYWtvX3NwZWxsQ2hla2VyX3AyIiwgIkNoZWNrIEV4
Y2VycHQgU3BlbGxpbmciLCAiIiwgImEiLCAiYWtvX3NwZWxsQ2hla2VyX2EyIikpOwoKCS8v
IHNldCBocmVmIGFuZCBvbmNsaWNrIGF0dHMgb24gdGhlIGxpbmtzIHdlIGp1c3QgY3JlYXRl
ZAoJJGpzID0gPDw8IEVPRgp2YXIgYTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWtv
X3NwZWxsQ2hla2VyX2ExIik7CnZhciBhMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
a29fc3BlbGxDaGVrZXJfYTIiKTsKYTEuc2V0QXR0cmlidXRlKCJocmVmIiwgIiMiKTsKYTIu
c2V0QXR0cmlidXRlKCJocmVmIiwgIiMiKTsKYTEuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwg
Im9wZW5TcGVsbENoZWtlcih0cnVlKTsgcmV0dXJuIGZhbHNlOyIpOwphMi5zZXRBdHRyaWJ1
dGUoIm9uY2xpY2siLCAib3BlblNwZWxsQ2hla2VyKGZhbHNlKTsgcmV0dXJuIGZhbHNlOyIp
OwoKZnVuY3Rpb24gb3BlblNwZWxsQ2hla2VyKGJvZHkpIHsKCXZhciBlbGVtID0gKGJvZHkg
PT0gdHJ1ZSkgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm9keScpIDogZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2V4Y2VycHQnKTsKCXZhciBzcGVsbGVyID0gbmV3IHNwZWxsQ2hl
Y2tlcihlbGVtKTsKCXNwZWxsZXIub3BlbkNoZWNrZXIoKTsKfQpFT0Y7CgllY2hvKHNjcmlw
dF9qcygkanMpKTsKfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQov
LyA0LjAuMy4uLgpmdW5jdGlvbiBha29fc3BlbGxDaGVrZXJfb2xkKCRldmVudCwgJHN0ZXAp
IHsKZWNobyhuKTsKZWNobyA8PDwgRU9GCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQi
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvc3BlbGxlci9zcGVsbENoZWNrZXIuanMi
Pjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgo8IS0tCgpmdW5jdGlvbiBha29fc3BlbGxDaGVrZXIoKSB7Cgl2YXIgZWxt
cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOwoJZm9yICh2YXIg
aT0wOyBpIDwgZWxtcy5sZW5ndGg7IGkrKykgewoJCWlmIChlbG1zW2ldLmdldEF0dHJpYnV0
ZSgnbmFtZScpID09ICdwdWJsaXNoJykgewoJCQl2YXIgcHVibGlzaCA9IGVsbXNbaV07CgkJ
fQoJfQoJdmFyIHRyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FydGljbGUtY29sLTIn
KTsKCgl2YXIgbGlua0IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CglsaW5rQi5h
cHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkNoZWNrIGJvZHkgc3BlbGxp
bmciKSApOwoJbGlua0Iuc2V0QXR0cmlidXRlKCJocmVmIiwgIiMiKTsKCWxpbmtCLnNldEF0
dHJpYnV0ZSgib25jbGljayIsICJvcGVuU3BlbGxDaGVrZXIodHJ1ZSk7IHJldHVybiBmYWxz
ZTsiKTsKCgl2YXIgYnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOwoKCXZhciBs
aW5rRSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKCWxpbmtFLmFwcGVuZENoaWxk
KCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiQ2hlY2sgZXhjZXJwdCBzcGVsbGluZyIpICk7
CglsaW5rRS5zZXRBdHRyaWJ1dGUoImhyZWYiLCAiIyIpOwoJbGlua0Uuc2V0QXR0cmlidXRl
KCJvbmNsaWNrIiwgIm9wZW5TcGVsbENoZWtlcihmYWxzZSk7IHJldHVybiBmYWxzZTsiKTsK
Cgl2YXIgcGFyYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKCXBhcmEuYXBwZW5k
Q2hpbGQobGlua0IpOwoJcGFyYS5hcHBlbmRDaGlsZChicik7CglwYXJhLmFwcGVuZENoaWxk
KGxpbmtFKTsKCXRyLmluc2VydEJlZm9yZShwYXJhLCBwdWJsaXNoKTsKfQoKdmFyIG9sZG9u
bG9hZCA9IHdpbmRvdy5vbmxvYWQ7CmlmICh0eXBlb2Ygd2luZG93Lm9ubG9hZCAhPSAnZnVu
Y3Rpb24nKSB7Cgl3aW5kb3cub25sb2FkID0gYWtvX3NwZWxsQ2hla2VyKCk7Cn0gZWxzZSB7
Cgl3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CgkJb2xkb25sb2FkKCk7CgkJYWtvX3Nw
ZWxsQ2hla2VyKCk7Cgl9Cn0KCmZ1bmN0aW9uIG9wZW5TcGVsbENoZWtlcihib2R5KSB7Cgl2
YXIgZWxlbSA9IChib2R5ID09IHRydWUpID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jv
ZHknKSA6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGNlcnB0Jyk7Cgl2YXIgc3BlbGxl
ciA9IG5ldyBzcGVsbENoZWNrZXIoZWxlbSk7CglzcGVsbGVyLm9wZW5DaGVja2VyKCk7Cn0K
LS0+Cjwvc2NyaXB0PgpFT0Y7CmVjaG8obik7Cn0KIjtzOjg6ImhlbHBfcmF3IjtzOjEzMjE6
ImgyLiBha29fc3BlbGxDaGVrZXIgWyBfc2ljXyBdIEhlbHAgRmlsZQoKaDMuIEJyaW5naW5n
IHRoZSAiU3BlbGxlciBQYWdlcyI6aHR0cDovL3NwZWxsZXJwYWdlcy5zb3VyY2Vmb3JnZS5u
ZXQvIGphdmFzY3JpcHQgYmFzZWQgc3BlbGwgY2hlY2tlciB0byBUZXh0cGF0dGVybi4KCmg0
LiBXaGF0IGRvZXMgaXQgZG8/CgpUaGlzIHBsdWdpbiBhZGRzIHR3byBsaXR0bGUgbGlua3Ms
IG9uZSBmb3Igc3BlbGwgY2hlY2tpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcnRpY2xlIGJv
ZHksIGFuZCBvbmUgZm9yIHNwZWxsIGNoZWNraW5nIHRoZSBjb250ZW50cyBvZiB0aGUgYXJ0
aWNsZSBleGNlcnB0LiAgQnkgY2xpY2tpbmcgb24gb25lIG9mIHRoZXNlIGxpbmtzLCB5b3Ug
d2lsbCBpbml0aWF0ZSBhIHNwZWxsIGNoZWNrIG9mIHRoZSBzZWxlY3RlZCBzZWN0aW9uLgoK
aDQuIFVzaW5nIGFrb19zcGVsbENoZWtlcgoKQWxsIHlvdSBuZWVkIHRvIGRvIGlzIGluc3Rh
bGwgYW5kIGFjdGl2YXRlIHRoZSBwbHVnaW4uICBPbmNlIGl0J3MgYmVlbiBhY3RpdmF0ZWQs
IHRoZSByZXN0IGlzIGF1dG9tYXRpYy4KCmg0LiBQbGVhc2UgTm90ZToKCkZvciB0aGlzIHBs
dWdpbiB0byB3b3JrIGNvcnJlY3RseSwgeW91IHdpbGwgbmVlZCB0byBkb3dubG9hZCB0aGUg
IlNwZWxsZXIgUGFnZXMiOmh0dHA6Ly9zcGVsbGVycGFnZXMuc291cmNlZm9yZ2UubmV0LyBz
Y3JpcHQgYW5kIHVwbG9hZCBpdCB0byB0aGUgYmFzZSBvZiB5b3VyIFRleHRwYXR0ZXJuIHNp
dGUuICBIb3BlZnVsbHkgaW4gZnV0dXJlIHZlcnNpb25zLCB0aGlzIGRlcGVuZGFuY3kgd2ls
bCBiZSByZXNvbHZlZCwgYnV0IGFzIGZvciBub3csIHRoZXNlIGZpbGVzIGFyZSByZXF1aXJl
ZC4gIE9uY2UgdGhlc2UgZmlsZXMgaGF2ZSBiZWVuIHVwbG9hZGVkLCB5b3UgbmVlZCBvbmx5
IGFjdGl2YXRlIHRoZSBwbHVnaW4gZm9yIGl0IHRvIHdvcmsuCgpBcyB3ZWxsLCB5b3VyIHNl
cnZlciB3aWxsIG5lZWQgdG8gaGF2ZSA8Y29kZT5hc3BlbGw8L2NvZGU+IGluc3RhbGxlZC4g
IE1vc3Qgc2VydmVycyBzaG91bGQgaGF2ZSBpdCBpbnN0YWxsZWQsIGFuZCBpZiBub3QsIGhv
c3RzIGdlbmVyYWxseSBkb24ndCBoYXZlIGEgcHJvYmxlbSB3aXRoIGluc3RhbGxpbmcgaXQu
CgpoNC4gQ3JlZGl0IHdoZXJlIGl0J3MgZHVlCgpUaGlzIHBsdWdpbiBpcyBiYXNlZCBvZmYg
dGhlICJoYWNrIjpodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/
cGlkPTEwOTgyMSBieSBDaGFtcGFrLgoKPGhyIC8+ClRoYW5rcyBmb3IgdXNpbmcgKmFrb19z
cGVsbENoZWtlciosIGFuZCBoYXZlIGZ1biEiO3M6MzoibWQ1IjtzOjMyOiI1NDA2MDM1YWQ2
NmUzZTI2MzcyYjVkYzEyN2M0NzE4YiI7czo4OiJjb21wcmVzcyI7YjowO30=
