From b5362d06541d79591ff8dd408d4c8b6a8eaf56d5 Mon Sep 17 00:00:00 2001 From: slawkens1 Date: Mon, 1 May 2017 20:02:45 +0200 Subject: [PATCH] First public release of MyAAC --- .htaccess | 29 + LICENSE | 674 + README | 41 + admin/.htaccess | 4 + admin/includes/functions.php | 1 + admin/index.php | 1 + admin/templates/clean/style.css | 136 + admin/templates/clean/template.php | 95 + admin/templates/stylish/Kopia index.html | 281 + admin/templates/stylish/blank.html | 100 + admin/templates/stylish/css/Copy of theme.css | 121 + admin/templates/stylish/css/ie-sucks.css | 21 + admin/templates/stylish/css/iepngfix.htc | 68 + admin/templates/stylish/css/style.css | 397 + admin/templates/stylish/css/switch.css | 51 + admin/templates/stylish/css/theme.css | 121 + admin/templates/stylish/css/theme1.css | 121 + admin/templates/stylish/css/theme2.css | 121 + admin/templates/stylish/css/theme3.css | 121 + admin/templates/stylish/css/theme4.css | 122 + admin/templates/stylish/img/bg.jpg | Bin 0 -> 372 bytes admin/templates/stylish/img/bg_blue.jpg | Bin 0 -> 359 bytes admin/templates/stylish/img/bg_brown.jpg | Bin 0 -> 355 bytes .../templates/stylish/img/bg_light_green.jpg | Bin 0 -> 356 bytes admin/templates/stylish/img/bg_menu_blue.jpg | Bin 0 -> 372 bytes admin/templates/stylish/img/bg_menu_green.jpg | Bin 0 -> 383 bytes admin/templates/stylish/img/bg_menu_mix.jpg | Bin 0 -> 379 bytes admin/templates/stylish/img/bg_menu_red.jpg | Bin 0 -> 367 bytes admin/templates/stylish/img/bg_mix.jpg | Bin 0 -> 353 bytes admin/templates/stylish/img/form_blue.gif | Bin 0 -> 272 bytes admin/templates/stylish/img/form_brown.gif | Bin 0 -> 273 bytes admin/templates/stylish/img/form_green.gif | Bin 0 -> 273 bytes admin/templates/stylish/img/form_mix.gif | Bin 0 -> 273 bytes admin/templates/stylish/img/form_red.gif | Bin 0 -> 166 bytes admin/templates/stylish/img/graph.jpg | Bin 0 -> 40975 bytes admin/templates/stylish/img/graph2.jpg | Bin 0 -> 56232 bytes admin/templates/stylish/img/icons/add.png | Bin 0 -> 733 bytes .../stylish/img/icons/application_add.png | Bin 0 -> 619 bytes .../stylish/img/icons/arrow_down.png | Bin 0 -> 379 bytes .../stylish/img/icons/arrow_down_mini.gif | Bin 0 -> 131 bytes .../stylish/img/icons/arrow_left.gif | Bin 0 -> 131 bytes .../stylish/img/icons/arrow_right.gif | Bin 0 -> 130 bytes admin/templates/stylish/img/icons/brick.png | Bin 0 -> 452 bytes .../stylish/img/icons/brick_edit.png | Bin 0 -> 775 bytes admin/templates/stylish/img/icons/bricks.png | Bin 0 -> 825 bytes .../stylish/img/icons/bricks_gear.png | Bin 0 -> 876 bytes admin/templates/stylish/img/icons/car.png | Bin 0 -> 610 bytes admin/templates/stylish/img/icons/cart.png | Bin 0 -> 421 bytes .../templates/stylish/img/icons/cart_add.png | Bin 0 -> 711 bytes admin/templates/stylish/img/icons/cog.png | Bin 0 -> 512 bytes admin/templates/stylish/img/icons/coins.png | Bin 0 -> 732 bytes .../stylish/img/icons/color_swatch.png | Bin 0 -> 209 bytes admin/templates/stylish/img/icons/expand.jpg | Bin 0 -> 773 bytes admin/templates/stylish/img/icons/feed.png | Bin 0 -> 691 bytes admin/templates/stylish/img/icons/folder.png | Bin 0 -> 537 bytes .../stylish/img/icons/folder_page.png | Bin 0 -> 688 bytes .../stylish/img/icons/folder_page_add.png | Bin 0 -> 773 bytes .../stylish/img/icons/folder_table.png | Bin 0 -> 675 bytes admin/templates/stylish/img/icons/group.png | Bin 0 -> 753 bytes admin/templates/stylish/img/icons/house.png | Bin 0 -> 806 bytes .../templates/stylish/img/icons/magnifier.png | Bin 0 -> 615 bytes .../templates/stylish/img/icons/page_add.png | Bin 0 -> 739 bytes .../templates/stylish/img/icons/page_gear.png | Bin 0 -> 833 bytes .../stylish/img/icons/page_white_delete.png | Bin 0 -> 536 bytes .../stylish/img/icons/page_white_edit.png | Bin 0 -> 618 bytes .../stylish/img/icons/page_white_link.png | Bin 0 -> 614 bytes .../img/icons/page_white_text_width.png | Bin 0 -> 315 bytes admin/templates/stylish/img/icons/report.png | Bin 0 -> 649 bytes .../stylish/img/icons/report_link.png | Bin 0 -> 754 bytes admin/templates/stylish/img/icons/rss.png | Bin 0 -> 530 bytes admin/templates/stylish/img/icons/user.png | Bin 0 -> 741 bytes .../templates/stylish/img/icons/user_add.png | Bin 0 -> 746 bytes .../stylish/img/icons/user_delete.png | Bin 0 -> 767 bytes .../templates/stylish/img/icons/user_edit.png | Bin 0 -> 833 bytes admin/templates/stylish/img/icons/world.png | Bin 0 -> 923 bytes admin/templates/stylish/psd/template.psd | Bin 0 -> 967624 bytes admin/templates/stylish/template.php | 296 + admin/templates/stylish/users.html | 309 + admin/tools/phpinfo.php | 14 + admin/tools/status.php | 21 + common.php | 86 + config.local.php | 3 + config.php | 225 + images/.htaccess | 1 + images/addons/Female_Assassin_1.gif | Bin 0 -> 3327 bytes images/addons/Female_Assassin_2.gif | Bin 0 -> 5051 bytes images/addons/Female_Barbarian_1.gif | Bin 0 -> 5510 bytes images/addons/Female_Barbarian_2.gif | Bin 0 -> 5862 bytes images/addons/Female_Beggar_1.gif | Bin 0 -> 5530 bytes images/addons/Female_Beggar_2.gif | Bin 0 -> 3574 bytes images/addons/Female_Brotherhood_1.gif | Bin 0 -> 4677 bytes images/addons/Female_Brotherhood_2.gif | Bin 0 -> 3935 bytes images/addons/Female_Citizen_1.gif | Bin 0 -> 3337 bytes images/addons/Female_Citizen_2.gif | Bin 0 -> 3696 bytes images/addons/Female_Demonhunter_1.gif | Bin 0 -> 9136 bytes images/addons/Female_Demonhunter_2.gif | Bin 0 -> 8818 bytes images/addons/Female_Druid_1.gif | Bin 0 -> 5292 bytes images/addons/Female_Druid_2.gif | Bin 0 -> 5465 bytes images/addons/Female_Hunter_1.gif | Bin 0 -> 5338 bytes images/addons/Female_Hunter_2.gif | Bin 0 -> 5498 bytes images/addons/Female_Jester_1.gif | Bin 0 -> 5339 bytes images/addons/Female_Jester_2.gif | Bin 0 -> 4717 bytes images/addons/Female_Knight_1.gif | Bin 0 -> 6127 bytes images/addons/Female_Knight_2.gif | Bin 0 -> 5448 bytes images/addons/Female_Mage_1.gif | Bin 0 -> 5095 bytes images/addons/Female_Mage_2.gif | Bin 0 -> 5342 bytes images/addons/Female_Nightmare_1.gif | Bin 0 -> 3979 bytes images/addons/Female_Nightmare_2.gif | Bin 0 -> 5056 bytes images/addons/Female_Nobleman_1.gif | Bin 0 -> 3912 bytes images/addons/Female_Nobleman_2.gif | Bin 0 -> 5337 bytes images/addons/Female_Norseman_1.gif | Bin 0 -> 5323 bytes images/addons/Female_Norseman_2.gif | Bin 0 -> 4574 bytes images/addons/Female_Oriental_1.gif | Bin 0 -> 5156 bytes images/addons/Female_Oriental_2.gif | Bin 0 -> 5277 bytes images/addons/Female_Pirate_1.gif | Bin 0 -> 5002 bytes images/addons/Female_Pirate_2.gif | Bin 0 -> 4058 bytes images/addons/Female_Shaman_1.gif | Bin 0 -> 6689 bytes images/addons/Female_Shaman_2.gif | Bin 0 -> 7216 bytes images/addons/Female_Summoner_1.gif | Bin 0 -> 4016 bytes images/addons/Female_Summoner_2.gif | Bin 0 -> 4128 bytes images/addons/Female_Warrior_1.gif | Bin 0 -> 5267 bytes images/addons/Female_Warrior_2.gif | Bin 0 -> 6078 bytes images/addons/Female_Wizard_1.gif | Bin 0 -> 5542 bytes images/addons/Female_Wizard_2.gif | Bin 0 -> 5432 bytes images/addons/Male_Assassin_1.gif | Bin 0 -> 3482 bytes images/addons/Male_Assassin_2.gif | Bin 0 -> 5940 bytes images/addons/Male_Barbarian_1.gif | Bin 0 -> 6281 bytes images/addons/Male_Barbarian_2.gif | Bin 0 -> 6319 bytes images/addons/Male_Beggar_1.gif | Bin 0 -> 3825 bytes images/addons/Male_Beggar_2.gif | Bin 0 -> 3947 bytes images/addons/Male_Brotherhood_1.gif | Bin 0 -> 5521 bytes images/addons/Male_Brotherhood_2.gif | Bin 0 -> 4764 bytes images/addons/Male_Citizen_1.gif | Bin 0 -> 3392 bytes images/addons/Male_Citizen_2.gif | Bin 0 -> 3824 bytes images/addons/Male_Demonhunter_1.gif | Bin 0 -> 8122 bytes images/addons/Male_Demonhunter_2.gif | Bin 0 -> 9500 bytes images/addons/Male_Druid_1.gif | Bin 0 -> 5537 bytes images/addons/Male_Druid_2.gif | Bin 0 -> 5413 bytes images/addons/Male_Hunter_1.gif | Bin 0 -> 3645 bytes images/addons/Male_Hunter_2.gif | Bin 0 -> 3743 bytes images/addons/Male_Jester_1.gif | Bin 0 -> 5159 bytes images/addons/Male_Jester_2.gif | Bin 0 -> 4860 bytes images/addons/Male_Knight_1.gif | Bin 0 -> 5344 bytes images/addons/Male_Knight_2.gif | Bin 0 -> 5361 bytes images/addons/Male_Mage_1.gif | Bin 0 -> 3757 bytes images/addons/Male_Mage_2.gif | Bin 0 -> 3936 bytes images/addons/Male_Nightmare_1.gif | Bin 0 -> 4395 bytes images/addons/Male_Nightmare_2.gif | Bin 0 -> 5379 bytes images/addons/Male_Nobleman_1.gif | Bin 0 -> 3606 bytes images/addons/Male_Nobleman_2.gif | Bin 0 -> 3990 bytes images/addons/Male_Norseman_1.gif | Bin 0 -> 5605 bytes images/addons/Male_Norseman_2.gif | Bin 0 -> 5168 bytes images/addons/Male_Oriental_1.gif | Bin 0 -> 5145 bytes images/addons/Male_Oriental_2.gif | Bin 0 -> 3848 bytes images/addons/Male_Pirate_1.gif | Bin 0 -> 5118 bytes images/addons/Male_Pirate_2.gif | Bin 0 -> 5099 bytes images/addons/Male_Shaman_1.gif | Bin 0 -> 6185 bytes images/addons/Male_Shaman_2.gif | Bin 0 -> 6690 bytes images/addons/Male_Summoner_1.gif | Bin 0 -> 5163 bytes images/addons/Male_Summoner_2.gif | Bin 0 -> 3854 bytes images/addons/Male_Warrior_1.gif | Bin 0 -> 3902 bytes images/addons/Male_Warrior_2.gif | Bin 0 -> 5334 bytes images/addons/Male_Wizard_1.gif | Bin 0 -> 3905 bytes images/addons/Male_Wizard_2.gif | Bin 0 -> 5329 bytes images/arrow_left.gif | Bin 0 -> 138 bytes images/arrow_right.gif | Bin 0 -> 138 bytes images/arrow_up.gif | Bin 0 -> 147 bytes images/blackskull.gif | Bin 0 -> 569 bytes images/changelog/added.png | Bin 0 -> 469 bytes images/changelog/changed.png | Bin 0 -> 469 bytes images/changelog/fixed.png | Bin 0 -> 816 bytes images/changelog/removed.png | Bin 0 -> 469 bytes images/changelog/server.png | Bin 0 -> 712 bytes images/changelog/website.png | Bin 0 -> 1149 bytes images/del.png | Bin 0 -> 433 bytes images/druid.png | Bin 0 -> 39039 bytes images/edit.png | Bin 0 -> 450 bytes images/error.png | Bin 0 -> 706 bytes images/false.png | Bin 0 -> 1004 bytes images/flags/ad.gif | Bin 0 -> 371 bytes images/flags/ae.gif | Bin 0 -> 361 bytes images/flags/af.gif | Bin 0 -> 369 bytes images/flags/ag.gif | Bin 0 -> 361 bytes images/flags/ai.gif | Bin 0 -> 369 bytes images/flags/al.gif | Bin 0 -> 370 bytes images/flags/am.gif | Bin 0 -> 363 bytes images/flags/an.gif | Bin 0 -> 368 bytes images/flags/ao.gif | Bin 0 -> 244 bytes images/flags/aq.gif | Bin 0 -> 375 bytes images/flags/ar.gif | Bin 0 -> 366 bytes images/flags/as.gif | Bin 0 -> 365 bytes images/flags/at.gif | Bin 0 -> 361 bytes images/flags/au.gif | Bin 0 -> 378 bytes images/flags/aw.gif | Bin 0 -> 365 bytes images/flags/ax.gif | Bin 0 -> 376 bytes images/flags/az.gif | Bin 0 -> 370 bytes images/flags/ba.gif | Bin 0 -> 363 bytes images/flags/bb.gif | Bin 0 -> 368 bytes images/flags/bd.gif | Bin 0 -> 361 bytes images/flags/be.gif | Bin 0 -> 359 bytes images/flags/bf.gif | Bin 0 -> 358 bytes images/flags/bg.gif | Bin 0 -> 360 bytes images/flags/bh.gif | Bin 0 -> 367 bytes images/flags/bi.gif | Bin 0 -> 374 bytes images/flags/bj.gif | Bin 0 -> 368 bytes images/flags/bm.gif | Bin 0 -> 367 bytes images/flags/bn.gif | Bin 0 -> 373 bytes images/flags/bo.gif | Bin 0 -> 359 bytes images/flags/br.gif | Bin 0 -> 367 bytes images/flags/bs.gif | Bin 0 -> 351 bytes images/flags/bt.gif | Bin 0 -> 377 bytes images/flags/bv.gif | Bin 0 -> 376 bytes images/flags/bw.gif | Bin 0 -> 364 bytes images/flags/by.gif | Bin 0 -> 361 bytes images/flags/bz.gif | Bin 0 -> 368 bytes images/flags/ca.gif | Bin 0 -> 376 bytes images/flags/catalonia.gif | Bin 0 -> 238 bytes images/flags/cc.gif | Bin 0 -> 371 bytes images/flags/cd.gif | Bin 0 -> 243 bytes images/flags/cf.gif | Bin 0 -> 364 bytes images/flags/cg.gif | Bin 0 -> 359 bytes images/flags/ch.gif | Bin 0 -> 332 bytes images/flags/ci.gif | Bin 0 -> 368 bytes images/flags/ck.gif | Bin 0 -> 362 bytes images/flags/cl.gif | Bin 0 -> 364 bytes images/flags/cm.gif | Bin 0 -> 369 bytes images/flags/cn.gif | Bin 0 -> 366 bytes images/flags/co.gif | Bin 0 -> 353 bytes images/flags/cr.gif | Bin 0 -> 359 bytes images/flags/cs.gif | Bin 0 -> 364 bytes images/flags/cu.gif | Bin 0 -> 367 bytes images/flags/cv.gif | Bin 0 -> 367 bytes images/flags/cx.gif | Bin 0 -> 363 bytes images/flags/cy.gif | Bin 0 -> 365 bytes images/flags/cz.gif | Bin 0 -> 362 bytes images/flags/de.gif | Bin 0 -> 362 bytes images/flags/dj.gif | Bin 0 -> 369 bytes images/flags/dk.gif | Bin 0 -> 374 bytes images/flags/dm.gif | Bin 0 -> 368 bytes images/flags/do.gif | Bin 0 -> 362 bytes images/flags/dz.gif | Bin 0 -> 370 bytes images/flags/ec.gif | Bin 0 -> 362 bytes images/flags/ee.gif | Bin 0 -> 364 bytes images/flags/eg.gif | Bin 0 -> 363 bytes images/flags/eh.gif | Bin 0 -> 359 bytes images/flags/england.gif | Bin 0 -> 367 bytes images/flags/er.gif | Bin 0 -> 361 bytes images/flags/es.gif | Bin 0 -> 360 bytes images/flags/et.gif | Bin 0 -> 364 bytes images/flags/europeanunion.gif | Bin 0 -> 171 bytes images/flags/fam.gif | Bin 0 -> 370 bytes images/flags/fi.gif | Bin 0 -> 371 bytes images/flags/fj.gif | Bin 0 -> 370 bytes images/flags/fk.gif | Bin 0 -> 372 bytes images/flags/fm.gif | Bin 0 -> 377 bytes images/flags/fo.gif | Bin 0 -> 370 bytes images/flags/fr.gif | Bin 0 -> 366 bytes images/flags/ga.gif | Bin 0 -> 359 bytes images/flags/gb.gif | Bin 0 -> 260 bytes images/flags/gd.gif | Bin 0 -> 364 bytes images/flags/ge.gif | Bin 0 -> 379 bytes images/flags/gf.gif | Bin 0 -> 366 bytes images/flags/gh.gif | Bin 0 -> 358 bytes images/flags/gi.gif | Bin 0 -> 370 bytes images/flags/gl.gif | Bin 0 -> 368 bytes images/flags/gm.gif | Bin 0 -> 362 bytes images/flags/gn.gif | Bin 0 -> 363 bytes images/flags/gp.gif | Bin 0 -> 357 bytes images/flags/gq.gif | Bin 0 -> 361 bytes images/flags/gr.gif | Bin 0 -> 368 bytes images/flags/gs.gif | Bin 0 -> 363 bytes images/flags/gt.gif | Bin 0 -> 374 bytes images/flags/gu.gif | Bin 0 -> 370 bytes images/flags/gw.gif | Bin 0 -> 358 bytes images/flags/gy.gif | Bin 0 -> 367 bytes images/flags/hk.gif | Bin 0 -> 373 bytes images/flags/hm.gif | Bin 0 -> 378 bytes images/flags/hn.gif | Bin 0 -> 367 bytes images/flags/hr.gif | Bin 0 -> 364 bytes images/flags/ht.gif | Bin 0 -> 361 bytes images/flags/hu.gif | Bin 0 -> 357 bytes images/flags/id.gif | Bin 0 -> 362 bytes images/flags/ie.gif | Bin 0 -> 371 bytes images/flags/il.gif | Bin 0 -> 366 bytes images/flags/in.gif | Bin 0 -> 363 bytes images/flags/io.gif | Bin 0 -> 373 bytes images/flags/iq.gif | Bin 0 -> 361 bytes images/flags/ir.gif | Bin 0 -> 366 bytes images/flags/is.gif | Bin 0 -> 373 bytes images/flags/it.gif | Bin 0 -> 366 bytes images/flags/jm.gif | Bin 0 -> 365 bytes images/flags/jo.gif | Bin 0 -> 360 bytes images/flags/jp.gif | Bin 0 -> 366 bytes images/flags/ke.gif | Bin 0 -> 360 bytes images/flags/kg.gif | Bin 0 -> 373 bytes images/flags/kh.gif | Bin 0 -> 367 bytes images/flags/ki.gif | Bin 0 -> 371 bytes images/flags/km.gif | Bin 0 -> 358 bytes images/flags/kn.gif | Bin 0 -> 370 bytes images/flags/kp.gif | Bin 0 -> 366 bytes images/flags/kr.gif | Bin 0 -> 385 bytes images/flags/kw.gif | Bin 0 -> 362 bytes images/flags/ky.gif | Bin 0 -> 373 bytes images/flags/kz.gif | Bin 0 -> 374 bytes images/flags/la.gif | Bin 0 -> 366 bytes images/flags/lb.gif | Bin 0 -> 366 bytes images/flags/lc.gif | Bin 0 -> 259 bytes images/flags/li.gif | Bin 0 -> 359 bytes images/flags/lk.gif | Bin 0 -> 377 bytes images/flags/lr.gif | Bin 0 -> 360 bytes images/flags/ls.gif | Bin 0 -> 369 bytes images/flags/lt.gif | Bin 0 -> 362 bytes images/flags/lu.gif | Bin 0 -> 368 bytes images/flags/lv.gif | Bin 0 -> 363 bytes images/flags/ly.gif | Bin 0 -> 362 bytes images/flags/ma.gif | Bin 0 -> 367 bytes images/flags/mc.gif | Bin 0 -> 359 bytes images/flags/md.gif | Bin 0 -> 367 bytes images/flags/me.gif | Bin 0 -> 238 bytes images/flags/mg.gif | Bin 0 -> 372 bytes images/flags/mh.gif | Bin 0 -> 370 bytes images/flags/mk.gif | Bin 0 -> 382 bytes images/flags/ml.gif | Bin 0 -> 363 bytes images/flags/mm.gif | Bin 0 -> 365 bytes images/flags/mn.gif | Bin 0 -> 368 bytes images/flags/mo.gif | Bin 0 -> 378 bytes images/flags/mp.gif | Bin 0 -> 368 bytes images/flags/mq.gif | Bin 0 -> 379 bytes images/flags/mr.gif | Bin 0 -> 377 bytes images/flags/ms.gif | Bin 0 -> 371 bytes images/flags/mt.gif | Bin 0 -> 369 bytes images/flags/mu.gif | Bin 0 -> 358 bytes images/flags/mv.gif | Bin 0 -> 372 bytes images/flags/mw.gif | Bin 0 -> 364 bytes images/flags/mx.gif | Bin 0 -> 366 bytes images/flags/my.gif | Bin 0 -> 375 bytes images/flags/mz.gif | Bin 0 -> 366 bytes images/flags/na.gif | Bin 0 -> 371 bytes images/flags/nc.gif | Bin 0 -> 364 bytes images/flags/ne.gif | Bin 0 -> 366 bytes images/flags/nf.gif | Bin 0 -> 375 bytes images/flags/ng.gif | Bin 0 -> 371 bytes images/flags/ni.gif | Bin 0 -> 366 bytes images/flags/nl.gif | Bin 0 -> 360 bytes images/flags/no.gif | Bin 0 -> 376 bytes images/flags/np.gif | Bin 0 -> 302 bytes images/flags/nr.gif | Bin 0 -> 364 bytes images/flags/nu.gif | Bin 0 -> 369 bytes images/flags/nz.gif | Bin 0 -> 369 bytes images/flags/om.gif | Bin 0 -> 364 bytes images/flags/pa.gif | Bin 0 -> 367 bytes images/flags/pe.gif | Bin 0 -> 361 bytes images/flags/pf.gif | Bin 0 -> 366 bytes images/flags/pg.gif | Bin 0 -> 360 bytes images/flags/ph.gif | Bin 0 -> 361 bytes images/flags/pk.gif | Bin 0 -> 377 bytes images/flags/pl.gif | Bin 0 -> 360 bytes images/flags/pm.gif | Bin 0 -> 374 bytes images/flags/pn.gif | Bin 0 -> 367 bytes images/flags/pr.gif | Bin 0 -> 369 bytes images/flags/ps.gif | Bin 0 -> 358 bytes images/flags/pt.gif | Bin 0 -> 369 bytes images/flags/pw.gif | Bin 0 -> 374 bytes images/flags/py.gif | Bin 0 -> 363 bytes images/flags/qa.gif | Bin 0 -> 364 bytes images/flags/re.gif | Bin 0 -> 366 bytes images/flags/ro.gif | Bin 0 -> 363 bytes images/flags/rs.gif | Bin 0 -> 238 bytes images/flags/ru.gif | Bin 0 -> 361 bytes images/flags/rw.gif | Bin 0 -> 361 bytes images/flags/sa.gif | Bin 0 -> 370 bytes images/flags/sb.gif | Bin 0 -> 366 bytes images/flags/sc.gif | Bin 0 -> 357 bytes images/flags/scotland.gif | Bin 0 -> 378 bytes images/flags/sd.gif | Bin 0 -> 355 bytes images/flags/se.gif | Bin 0 -> 367 bytes images/flags/sg.gif | Bin 0 -> 364 bytes images/flags/sh.gif | Bin 0 -> 371 bytes images/flags/si.gif | Bin 0 -> 362 bytes images/flags/sj.gif | Bin 0 -> 376 bytes images/flags/sk.gif | Bin 0 -> 361 bytes images/flags/sl.gif | Bin 0 -> 363 bytes images/flags/sm.gif | Bin 0 -> 367 bytes images/flags/sn.gif | Bin 0 -> 364 bytes images/flags/so.gif | Bin 0 -> 376 bytes images/flags/sr.gif | Bin 0 -> 361 bytes images/flags/st.gif | Bin 0 -> 367 bytes images/flags/sv.gif | Bin 0 -> 363 bytes images/flags/sy.gif | Bin 0 -> 361 bytes images/flags/sz.gif | Bin 0 -> 363 bytes images/flags/tc.gif | Bin 0 -> 366 bytes images/flags/td.gif | Bin 0 -> 368 bytes images/flags/tf.gif | Bin 0 -> 365 bytes images/flags/tg.gif | Bin 0 -> 366 bytes images/flags/th.gif | Bin 0 -> 360 bytes images/flags/tj.gif | Bin 0 -> 361 bytes images/flags/tk.gif | Bin 0 -> 372 bytes images/flags/tl.gif | Bin 0 -> 360 bytes images/flags/tm.gif | Bin 0 -> 367 bytes images/flags/tn.gif | Bin 0 -> 375 bytes images/flags/to.gif | Bin 0 -> 367 bytes images/flags/tr.gif | Bin 0 -> 371 bytes images/flags/tt.gif | Bin 0 -> 377 bytes images/flags/tv.gif | Bin 0 -> 361 bytes images/flags/tw.gif | Bin 0 -> 367 bytes images/flags/tz.gif | Bin 0 -> 366 bytes images/flags/ua.gif | Bin 0 -> 360 bytes images/flags/ug.gif | Bin 0 -> 359 bytes images/flags/um.gif | Bin 0 -> 371 bytes images/flags/us.gif | Bin 0 -> 367 bytes images/flags/uy.gif | Bin 0 -> 373 bytes images/flags/uz.gif | Bin 0 -> 364 bytes images/flags/va.gif | Bin 0 -> 369 bytes images/flags/vc.gif | Bin 0 -> 370 bytes images/flags/ve.gif | Bin 0 -> 364 bytes images/flags/vg.gif | Bin 0 -> 368 bytes images/flags/vi.gif | Bin 0 -> 376 bytes images/flags/vn.gif | Bin 0 -> 370 bytes images/flags/vu.gif | Bin 0 -> 365 bytes images/flags/wales.gif | Bin 0 -> 372 bytes images/flags/wf.gif | Bin 0 -> 377 bytes images/flags/ws.gif | Bin 0 -> 365 bytes images/flags/ye.gif | Bin 0 -> 356 bytes images/flags/yt.gif | Bin 0 -> 382 bytes images/flags/za.gif | Bin 0 -> 363 bytes images/flags/zm.gif | Bin 0 -> 358 bytes images/flags/zw.gif | Bin 0 -> 365 bytes images/forum/post.gif | Bin 0 -> 1730 bytes images/forum/smile/1.gif | Bin 0 -> 948 bytes images/forum/smile/10.gif | Bin 0 -> 979 bytes images/forum/smile/2.gif | Bin 0 -> 975 bytes images/forum/smile/3.gif | Bin 0 -> 970 bytes images/forum/smile/4.gif | Bin 0 -> 974 bytes images/forum/smile/5.gif | Bin 0 -> 983 bytes images/forum/smile/6.gif | Bin 0 -> 979 bytes images/forum/smile/7.gif | Bin 0 -> 963 bytes images/forum/smile/8.gif | Bin 0 -> 979 bytes images/forum/smile/9.gif | Bin 0 -> 981 bytes images/forum/topic.gif | Bin 0 -> 1660 bytes images/green_skull.gif | Bin 0 -> 905 bytes images/guilds/default.gif | Bin 0 -> 2854 bytes images/hist.png | Bin 0 -> 117 bytes images/houses/default.jpg | Bin 0 -> 9334 bytes images/icons/add.png | Bin 0 -> 733 bytes images/icons/application_add.png | Bin 0 -> 619 bytes images/icons/arrow_down.gif | Bin 0 -> 131 bytes images/icons/arrow_down.png | Bin 0 -> 379 bytes images/icons/arrow_down_mini.gif | Bin 0 -> 131 bytes images/icons/arrow_left.gif | Bin 0 -> 131 bytes images/icons/arrow_right.gif | Bin 0 -> 130 bytes images/icons/arrow_up.gif | Bin 0 -> 130 bytes images/icons/brick.png | Bin 0 -> 452 bytes images/icons/brick_edit.png | Bin 0 -> 775 bytes images/icons/bricks.png | Bin 0 -> 825 bytes images/icons/bricks_gear.png | Bin 0 -> 876 bytes images/icons/car.png | Bin 0 -> 610 bytes images/icons/cart.png | Bin 0 -> 421 bytes images/icons/cart_add.png | Bin 0 -> 711 bytes images/icons/cog.png | Bin 0 -> 512 bytes images/icons/coins.png | Bin 0 -> 732 bytes images/icons/color_swatch.png | Bin 0 -> 209 bytes images/icons/error.gif | Bin 0 -> 599 bytes images/icons/expand.jpg | Bin 0 -> 773 bytes images/icons/feed.png | Bin 0 -> 691 bytes images/icons/folder.png | Bin 0 -> 537 bytes images/icons/folder_page.png | Bin 0 -> 688 bytes images/icons/folder_page_add.png | Bin 0 -> 773 bytes images/icons/folder_table.png | Bin 0 -> 675 bytes images/icons/group.png | Bin 0 -> 753 bytes images/icons/house.png | Bin 0 -> 806 bytes images/icons/logout.png | Bin 0 -> 3414 bytes images/icons/magnifier.png | Bin 0 -> 615 bytes images/icons/note.gif | Bin 0 -> 610 bytes images/icons/page_add.png | Bin 0 -> 739 bytes images/icons/page_gear.png | Bin 0 -> 833 bytes images/icons/page_white_delete.png | Bin 0 -> 536 bytes images/icons/page_white_edit.png | Bin 0 -> 618 bytes images/icons/page_white_link.png | Bin 0 -> 614 bytes images/icons/page_white_text_width.png | Bin 0 -> 315 bytes images/icons/report.png | Bin 0 -> 649 bytes images/icons/report_link.png | Bin 0 -> 754 bytes images/icons/rss.png | Bin 0 -> 530 bytes images/icons/success.gif | Bin 0 -> 606 bytes images/icons/user.png | Bin 0 -> 741 bytes images/icons/user_add.png | Bin 0 -> 746 bytes images/icons/user_delete.png | Bin 0 -> 767 bytes images/icons/user_edit.png | Bin 0 -> 833 bytes images/icons/warning.gif | Bin 0 -> 588 bytes images/icons/world.png | Bin 0 -> 923 bytes images/info.png | Bin 0 -> 783 bytes images/items/no_ammo.gif | Bin 0 -> 1186 bytes images/items/no_armor.gif | Bin 0 -> 1356 bytes images/items/no_backpack.gif | Bin 0 -> 1343 bytes images/items/no_boots.gif | Bin 0 -> 1331 bytes images/items/no_handleft.gif | Bin 0 -> 1235 bytes images/items/no_handright.gif | Bin 0 -> 1232 bytes images/items/no_helmet.gif | Bin 0 -> 1276 bytes images/items/no_legs.gif | Bin 0 -> 1340 bytes images/items/no_necklace.gif | Bin 0 -> 1189 bytes images/items/no_ring.gif | Bin 0 -> 1244 bytes images/knight.png | Bin 0 -> 38398 bytes images/loading.gif | Bin 0 -> 1876 bytes images/minus.gif | Bin 0 -> 858 bytes images/monsters/acidblob.gif | Bin 0 -> 3112 bytes images/monsters/acolyte of the cult.gif | Bin 0 -> 1536 bytes images/monsters/adept of the cult.gif | Bin 0 -> 1537 bytes images/monsters/amazon.gif | Bin 0 -> 1596 bytes images/monsters/ancient scarab.gif | Bin 0 -> 3048 bytes images/monsters/ancientscarab.gif | Bin 0 -> 1898 bytes images/monsters/animated-statue.gif | Bin 0 -> 1703 bytes images/monsters/annihilon.gif | Bin 0 -> 5645 bytes images/monsters/apprentice sheng.gif | Bin 0 -> 1710 bytes images/monsters/ashmunrah.gif | Bin 0 -> 3201 bytes images/monsters/assassin.gif | Bin 0 -> 1617 bytes images/monsters/avalanche.gif | Bin 0 -> 8098 bytes images/monsters/axeitus headbanger.gif | Bin 0 -> 1660 bytes images/monsters/azure frog.gif | Bin 0 -> 1252 bytes images/monsters/badger.gif | Bin 0 -> 1256 bytes images/monsters/bandit.gif | Bin 0 -> 1578 bytes images/monsters/banshee.gif | Bin 0 -> 1473 bytes images/monsters/barbaria.gif | Bin 0 -> 3262 bytes images/monsters/barbarian brutetamer.gif | Bin 0 -> 3287 bytes images/monsters/barbarian headsplitter.gif | Bin 0 -> 2917 bytes images/monsters/barbarian skullhunter.gif | Bin 0 -> 1401 bytes images/monsters/barbarianbloodwalker.gif | Bin 0 -> 2043 bytes images/monsters/barbarianbrutetamer.gif | Bin 0 -> 2088 bytes images/monsters/barbarianheadsplitter.gif | Bin 0 -> 1874 bytes images/monsters/barbarianskullhunter.gif | Bin 0 -> 1867 bytes images/monsters/bat.gif | Bin 0 -> 1202 bytes images/monsters/bear.gif | Bin 0 -> 2382 bytes images/monsters/behemoth.gif | Bin 0 -> 3676 bytes images/monsters/beholder.gif | Bin 0 -> 2567 bytes images/monsters/betrayed wraith.gif | Bin 0 -> 2282 bytes images/monsters/big boss trolliver.gif | Bin 0 -> 2690 bytes images/monsters/black sheep.gif | Bin 0 -> 1498 bytes images/monsters/blackknight.gif | Bin 0 -> 1684 bytes images/monsters/blazing fire elemental.gif | Bin 0 -> 3880 bytes images/monsters/blightwalker.gif | Bin 0 -> 2035 bytes images/monsters/blistering fire elemental.gif | Bin 0 -> 5055 bytes images/monsters/blood crab.gif | Bin 0 -> 2700 bytes images/monsters/bloodcrab.gif | Bin 0 -> 2700 bytes images/monsters/bloodpaw.gif | Bin 0 -> 3766 bytes images/monsters/blue djinn.gif | Bin 0 -> 3230 bytes images/monsters/bluedjinn.gif | Bin 0 -> 3230 bytes images/monsters/bog raider.gif | Bin 0 -> 2904 bytes images/monsters/bograider.gif | Bin 0 -> 1946 bytes images/monsters/bonebeast.gif | Bin 0 -> 1740 bytes images/monsters/bones.gif | Bin 0 -> 5316 bytes images/monsters/bovinus.gif | Bin 0 -> 2135 bytes images/monsters/braindeath.gif | Bin 0 -> 3292 bytes images/monsters/brutus bloodbeard.gif | Bin 0 -> 2756 bytes images/monsters/bug.gif | Bin 0 -> 755 bytes images/monsters/butterfly purple.gif | Bin 0 -> 417 bytes images/monsters/butterfly.gif | Bin 0 -> 2540 bytes images/monsters/butterflypurple.gif | Bin 0 -> 417 bytes images/monsters/carniphila.gif | Bin 0 -> 2567 bytes images/monsters/carrion worm.gif | Bin 0 -> 2037 bytes images/monsters/carrionworm.gif | Bin 0 -> 2037 bytes images/monsters/cat.gif | Bin 0 -> 699 bytes images/monsters/cave rat.gif | Bin 0 -> 3430 bytes images/monsters/caverat.gif | Bin 0 -> 368 bytes images/monsters/centipede.gif | Bin 0 -> 1548 bytes images/monsters/chakoya toolshaper.gif | Bin 0 -> 1352 bytes images/monsters/chakoya tribewarden.gif | Bin 0 -> 6649 bytes images/monsters/chakoya windcaller.gif | Bin 0 -> 5632 bytes images/monsters/chakoyatoolshaper.gif | Bin 0 -> 1694 bytes images/monsters/chakoyatribewarden.gif | Bin 0 -> 709 bytes images/monsters/chakoyawindcaller.gif | Bin 0 -> 1701 bytes images/monsters/charged energy elemental.gif | Bin 0 -> 8647 bytes images/monsters/chicken.gif | Bin 0 -> 1217 bytes images/monsters/cobra.gif | Bin 0 -> 1167 bytes images/monsters/cockroach.gif | Bin 0 -> 3242 bytes images/monsters/colerian the barbarian.gif | Bin 0 -> 1456 bytes images/monsters/coral frog.gif | Bin 0 -> 834 bytes images/monsters/countess sorrow.gif | Bin 0 -> 3244 bytes images/monsters/crab.gif | Bin 0 -> 1408 bytes images/monsters/crazed beggar.gif | Bin 0 -> 2082 bytes images/monsters/crimson frog.gif | Bin 0 -> 1251 bytes images/monsters/crocodile.gif | Bin 0 -> 1723 bytes images/monsters/crypt shambler.gif | Bin 0 -> 1894 bytes images/monsters/cryptshambler.gif | Bin 0 -> 1513 bytes images/monsters/crystal spider.gif | Bin 0 -> 3745 bytes images/monsters/crystalspider.gif | Bin 0 -> 2241 bytes images/monsters/cultacolyte.gif | Bin 0 -> 1536 bytes images/monsters/cultadept.gif | Bin 0 -> 1537 bytes images/monsters/cultnovice.gif | Bin 0 -> 1558 bytes images/monsters/cultpriest.gif | Bin 0 -> 1566 bytes images/monsters/cursed gladiator.gif | Bin 0 -> 1894 bytes images/monsters/cyclops drone.gif | Bin 0 -> 5300 bytes images/monsters/cyclops.gif | Bin 0 -> 15108 bytes images/monsters/cyclopsdrone.gif | Bin 0 -> 3140 bytes images/monsters/cyclopssmith.gif | Bin 0 -> 3529 bytes images/monsters/damaged worker golem.gif | Bin 0 -> 6558 bytes images/monsters/darakan the executioner.gif | Bin 0 -> 3229 bytes images/monsters/dark apprentice.gif | Bin 0 -> 2133 bytes images/monsters/dark magician.gif | Bin 0 -> 2242 bytes images/monsters/dark monk.gif | Bin 0 -> 854 bytes images/monsters/dark torturer.gif | Bin 0 -> 2377 bytes images/monsters/darkapprentice.gif | Bin 0 -> 1604 bytes images/monsters/darkmagician.gif | Bin 0 -> 1703 bytes images/monsters/darkmonk.gif | Bin 0 -> 1537 bytes images/monsters/darktorturer.gif | Bin 0 -> 2377 bytes images/monsters/death blob.gif | Bin 0 -> 2859 bytes images/monsters/deathbringer.gif | Bin 0 -> 2885 bytes images/monsters/deathslicer.gif | Bin 0 -> 2161 bytes images/monsters/deer.gif | Bin 0 -> 1796 bytes images/monsters/defiler.gif | Bin 0 -> 3184 bytes images/monsters/demodras.gif | Bin 0 -> 20062 bytes images/monsters/demon skeleton.gif | Bin 0 -> 1480 bytes images/monsters/demon.gif | Bin 0 -> 31441 bytes images/monsters/demonskeleton.gif | Bin 0 -> 1450 bytes images/monsters/destroyer.gif | Bin 0 -> 2433 bytes images/monsters/dharalion.gif | Bin 0 -> 1489 bytes images/monsters/diabelski smok.gif | Bin 0 -> 2842 bytes images/monsters/diabolic imp.gif | Bin 0 -> 3273 bytes images/monsters/diabolicimp.gif | Bin 0 -> 2030 bytes images/monsters/dire penguin.gif | Bin 0 -> 1490 bytes images/monsters/dog.gif | Bin 0 -> 709 bytes images/monsters/dragon hatchling.gif | Bin 0 -> 2782 bytes images/monsters/dragon lord hatchling.gif | Bin 0 -> 2881 bytes images/monsters/dragon lord.gif | Bin 0 -> 20062 bytes images/monsters/dragon.gif | Bin 0 -> 14616 bytes images/monsters/dragonhatchling.gif | Bin 0 -> 1785 bytes images/monsters/dragonlord.gif | Bin 0 -> 2842 bytes images/monsters/dragonlordhatchling.gif | Bin 0 -> 1794 bytes images/monsters/dreadbeast.gif | Bin 0 -> 2589 bytes images/monsters/dwarf geomancer.gif | Bin 0 -> 1701 bytes images/monsters/dwarf guard.gif | Bin 0 -> 1704 bytes images/monsters/dwarf soldier.gif | Bin 0 -> 1660 bytes images/monsters/dwarf.gif | Bin 0 -> 4478 bytes images/monsters/dwarfgeomancer.gif | Bin 0 -> 1320 bytes images/monsters/dwarfguard.gif | Bin 0 -> 1343 bytes images/monsters/dwarfminer.gif | Bin 0 -> 969 bytes images/monsters/dwarfsoldier.gif | Bin 0 -> 1277 bytes images/monsters/dworc fleshhunter.gif | Bin 0 -> 6747 bytes images/monsters/dworc venomsniper.gif | Bin 0 -> 3075 bytes images/monsters/dworc voodoomaster.gif | Bin 0 -> 11439 bytes images/monsters/dworcfleshhunter.gif | Bin 0 -> 1420 bytes images/monsters/dworcvenomsniper.gif | Bin 0 -> 1299 bytes images/monsters/dworcvoodoomaster.gif | Bin 0 -> 1471 bytes images/monsters/earth elemental.gif | Bin 0 -> 2382 bytes images/monsters/earth overlord.gif | Bin 0 -> 7061 bytes images/monsters/earthelemental.gif | Bin 0 -> 2969 bytes images/monsters/efreet.gif | Bin 0 -> 5364 bytes images/monsters/elder beholder.gif | Bin 0 -> 5257 bytes images/monsters/elderbeholder.gif | Bin 0 -> 3061 bytes images/monsters/elephant.gif | Bin 0 -> 5613 bytes images/monsters/elf.gif | Bin 0 -> 4681 bytes images/monsters/elfarcanist.gif | Bin 0 -> 1350 bytes images/monsters/elfscout.gif | Bin 0 -> 1379 bytes images/monsters/energy elemental.gif | Bin 0 -> 8805 bytes images/monsters/energy overlord.gif | Bin 0 -> 12195 bytes images/monsters/energyelemental.gif | Bin 0 -> 2201 bytes images/monsters/energyelementalmassive.gif | Bin 0 -> 2978 bytes images/monsters/enlightened of the cult.gif | Bin 0 -> 2163 bytes images/monsters/evileye.gif | Bin 0 -> 3061 bytes images/monsters/eye of the seven.gif | Bin 0 -> 1682 bytes images/monsters/fernfang.gif | Bin 0 -> 2343 bytes images/monsters/ferumbras.gif | Bin 0 -> 3916 bytes images/monsters/fire devil.gif | Bin 0 -> 2730 bytes images/monsters/fire elemental.gif | Bin 0 -> 3880 bytes images/monsters/fire overlord.gif | Bin 0 -> 5289 bytes images/monsters/firedevil.gif | Bin 0 -> 1702 bytes images/monsters/fireelemental.gif | Bin 0 -> 2021 bytes images/monsters/flamethrower.gif | Bin 0 -> 2661 bytes images/monsters/flamingo.gif | Bin 0 -> 2466 bytes images/monsters/fluffy.gif | Bin 0 -> 6265 bytes images/monsters/foreman kneebiter.gif | Bin 0 -> 1267 bytes images/monsters/frogazure.gif | Bin 0 -> 657 bytes images/monsters/frost dragon hatchling.gif | Bin 0 -> 3639 bytes images/monsters/frost dragon.gif | Bin 0 -> 6161 bytes images/monsters/frost giant.gif | Bin 0 -> 5262 bytes images/monsters/frost giantess.gif | Bin 0 -> 4390 bytes images/monsters/frost troll.gif | Bin 0 -> 3211 bytes images/monsters/frostdragon.gif | Bin 0 -> 3475 bytes images/monsters/frostdragonhatchling.gif | Bin 0 -> 1822 bytes images/monsters/frostfur.gif | Bin 0 -> 3322 bytes images/monsters/frostgiant.gif | Bin 0 -> 2999 bytes images/monsters/frostgiantess.gif | Bin 0 -> 2612 bytes images/monsters/frosttroll.gif | Bin 0 -> 1639 bytes images/monsters/fury.gif | Bin 0 -> 2546 bytes images/monsters/gargoyle.gif | Bin 0 -> 4165 bytes images/monsters/gazer.gif | Bin 0 -> 1682 bytes images/monsters/ghazbaran.gif | Bin 0 -> 5575 bytes images/monsters/ghost.gif | Bin 0 -> 2048 bytes images/monsters/ghoul.gif | Bin 0 -> 3567 bytes images/monsters/giant spider.gif | Bin 0 -> 8708 bytes images/monsters/giantspider.gif | Bin 0 -> 2661 bytes images/monsters/gladiator.gif | Bin 0 -> 1711 bytes images/monsters/gnorre chyllson.gif | Bin 0 -> 3207 bytes images/monsters/goblin assassin.gif | Bin 0 -> 10215 bytes images/monsters/goblin leader.gif | Bin 0 -> 2141 bytes images/monsters/goblin.gif | Bin 0 -> 11909 bytes images/monsters/goblinassassin.gif | Bin 0 -> 1485 bytes images/monsters/goblinscavenger.gif | Bin 0 -> 1619 bytes images/monsters/golgordan.gif | Bin 0 -> 5177 bytes images/monsters/green djinn.gif | Bin 0 -> 5771 bytes images/monsters/green frog.gif | Bin 0 -> 1358 bytes images/monsters/greendjinn.gif | Bin 0 -> 3218 bytes images/monsters/grim reaper.gif | Bin 0 -> 2223 bytes images/monsters/grimreaper.gif | Bin 0 -> 1852 bytes images/monsters/grorlam.gif | Bin 0 -> 5736 bytes images/monsters/hairman the huge.gif | Bin 0 -> 3260 bytes images/monsters/halloweenhare.gif | Bin 0 -> 462 bytes images/monsters/hand of cursed fate.gif | Bin 0 -> 2465 bytes images/monsters/handofcursedfate.gif | Bin 0 -> 1649 bytes images/monsters/haunted treeling.gif | Bin 0 -> 3251 bytes images/monsters/hellfire fighter.gif | Bin 0 -> 5289 bytes images/monsters/hellfirefighter.gif | Bin 0 -> 3144 bytes images/monsters/hellhound.gif | Bin 0 -> 6265 bytes images/monsters/hero.gif | Bin 0 -> 1665 bytes images/monsters/hornedfox.gif | Bin 0 -> 1544 bytes images/monsters/hunter.gif | Bin 0 -> 1574 bytes images/monsters/husky.gif | Bin 0 -> 2318 bytes images/monsters/hyaena.gif | Bin 0 -> 4033 bytes images/monsters/hydra.gif | Bin 0 -> 5686 bytes images/monsters/ice golem.gif | Bin 0 -> 8102 bytes images/monsters/ice overlord.gif | Bin 0 -> 3870 bytes images/monsters/ice witch.gif | Bin 0 -> 2474 bytes images/monsters/icegolem.gif | Bin 0 -> 4505 bytes images/monsters/icewitch.gif | Bin 0 -> 1718 bytes images/monsters/island troll.gif | Bin 0 -> 7968 bytes images/monsters/islandtroll.gif | Bin 0 -> 1719 bytes images/monsters/jagged earth elemental.gif | Bin 0 -> 7061 bytes images/monsters/juggernaut.gif | Bin 0 -> 7828 bytes images/monsters/kongra.gif | Bin 0 -> 3258 bytes images/monsters/larva.gif | Bin 0 -> 2735 bytes images/monsters/latrivan.gif | Bin 0 -> 5179 bytes images/monsters/lavahole.gif | Bin 0 -> 3119 bytes images/monsters/lethal lissy.gif | Bin 0 -> 2509 bytes images/monsters/leviathan.gif | Bin 0 -> 7156 bytes images/monsters/lich.gif | Bin 0 -> 4019 bytes images/monsters/lion.gif | Bin 0 -> 3020 bytes images/monsters/lizard sentinel.gif | Bin 0 -> 3038 bytes images/monsters/lizard snakecharmer.gif | Bin 0 -> 2589 bytes images/monsters/lizard templar.gif | Bin 0 -> 3534 bytes images/monsters/lizardsentinel.gif | Bin 0 -> 2015 bytes images/monsters/lizardsnakecharmer.gif | Bin 0 -> 1840 bytes images/monsters/lizardtemplar.gif | Bin 0 -> 2397 bytes images/monsters/lord of the elements.gif | Bin 0 -> 39467 bytes images/monsters/lost soul.gif | Bin 0 -> 2678 bytes images/monsters/lostsoul.gif | Bin 0 -> 1759 bytes images/monsters/mad scientist.gif | Bin 0 -> 2222 bytes images/monsters/madareth.gif | Bin 0 -> 5410 bytes images/monsters/magicthrower.gif | Bin 0 -> 2661 bytes images/monsters/mammoth.gif | Bin 0 -> 5716 bytes images/monsters/man in the cave.gif | Bin 0 -> 2090 bytes images/monsters/marid.gif | Bin 0 -> 5235 bytes images/monsters/massacre.gif | Bin 0 -> 7819 bytes images/monsters/massive earth elemental.gif | Bin 0 -> 7061 bytes images/monsters/massive energy elemental.gif | Bin 0 -> 12195 bytes images/monsters/massive fire elemental.gif | Bin 0 -> 5055 bytes images/monsters/massive water elemental.gif | Bin 0 -> 3870 bytes images/monsters/massiveearthelemental.gif | Bin 0 -> 4147 bytes images/monsters/medusa.gif | Bin 0 -> 4005 bytes images/monsters/mercury blob.gif | Bin 0 -> 3019 bytes images/monsters/merlkin.gif | Bin 0 -> 2385 bytes images/monsters/mimic.gif | Bin 0 -> 1602 bytes images/monsters/minishabaal.gif | Bin 0 -> 2030 bytes images/monsters/minotaur archer.gif | Bin 0 -> 5187 bytes images/monsters/minotaur guard.gif | Bin 0 -> 1992 bytes images/monsters/minotaur mage.gif | Bin 0 -> 6444 bytes images/monsters/minotaur.gif | Bin 0 -> 2934 bytes images/monsters/minotaurarcher.gif | Bin 0 -> 1549 bytes images/monsters/minotaurguard.gif | Bin 0 -> 1544 bytes images/monsters/minotaurmage.gif | Bin 0 -> 1500 bytes images/monsters/monk.gif | Bin 0 -> 2343 bytes images/monsters/morgaroth.gif | Bin 0 -> 6862 bytes images/monsters/morguthis.gif | Bin 0 -> 1659 bytes images/monsters/mr. punish.gif | Bin 0 -> 4032 bytes images/monsters/muddy earth elemental.gif | Bin 0 -> 2382 bytes images/monsters/mummy.gif | Bin 0 -> 2449 bytes images/monsters/munster.gif | Bin 0 -> 4121 bytes images/monsters/mutated bat.gif | Bin 0 -> 3174 bytes images/monsters/mutated human.gif | Bin 0 -> 2406 bytes images/monsters/mutated rat.gif | Bin 0 -> 3355 bytes images/monsters/mutated tiger.gif | Bin 0 -> 3123 bytes images/monsters/necromancer.gif | Bin 0 -> 2245 bytes images/monsters/necropharus.gif | Bin 0 -> 2245 bytes images/monsters/nightmare scion.gif | Bin 0 -> 2232 bytes images/monsters/nightmare.gif | Bin 0 -> 3440 bytes images/monsters/nomad.gif | Bin 0 -> 2372 bytes images/monsters/nophoto.png | Bin 0 -> 27983 bytes images/monsters/novice of the cult.gif | Bin 0 -> 2230 bytes images/monsters/oldwidow.gif | Bin 0 -> 2661 bytes images/monsters/orc berserker.gif | Bin 0 -> 4204 bytes images/monsters/orc leader.gif | Bin 0 -> 1631 bytes images/monsters/orc rider.gif | Bin 0 -> 2141 bytes images/monsters/orc shaman.gif | Bin 0 -> 4640 bytes images/monsters/orc spearman.gif | Bin 0 -> 4977 bytes images/monsters/orc warlord.gif | Bin 0 -> 1764 bytes images/monsters/orc warrior.gif | Bin 0 -> 1978 bytes images/monsters/orc.gif | Bin 0 -> 3570 bytes images/monsters/orcberserker.gif | Bin 0 -> 1370 bytes images/monsters/orchid frog.gif | Bin 0 -> 836 bytes images/monsters/orcleader.gif | Bin 0 -> 1302 bytes images/monsters/orcrider.gif | Bin 0 -> 1174 bytes images/monsters/orcshaman.gif | Bin 0 -> 1297 bytes images/monsters/orcspearman.gif | Bin 0 -> 1356 bytes images/monsters/orcus the cruel.gif | Bin 0 -> 1631 bytes images/monsters/orcwarlord.gif | Bin 0 -> 1336 bytes images/monsters/orcwarrior.gif | Bin 0 -> 1319 bytes images/monsters/orshabaal.gif | Bin 0 -> 7156 bytes .../monsters/overcharged energy element.gif | Bin 0 -> 12195 bytes .../monsters/overcharged energy elemental.gif | Bin 0 -> 12195 bytes images/monsters/pajak.gif | Bin 0 -> 1249 bytes images/monsters/panda.gif | Bin 0 -> 13802 bytes images/monsters/parrot.gif | Bin 0 -> 680 bytes images/monsters/penguin.gif | Bin 0 -> 1490 bytes images/monsters/phantasm mirror.gif | Bin 0 -> 2098 bytes images/monsters/phantasm.gif | Bin 0 -> 6071 bytes images/monsters/pig.gif | Bin 0 -> 1918 bytes images/monsters/pirate buccaneer.gif | Bin 0 -> 2220 bytes images/monsters/pirate corsair.gif | Bin 0 -> 2756 bytes images/monsters/pirate cutthroat.gif | Bin 0 -> 2080 bytes images/monsters/pirate ghost.gif | Bin 0 -> 1697 bytes images/monsters/pirate marauder.gif | Bin 0 -> 2982 bytes images/monsters/pirate skeleton.gif | Bin 0 -> 2401 bytes images/monsters/piratebuccaneer.gif | Bin 0 -> 1570 bytes images/monsters/piratecorsair.gif | Bin 0 -> 1862 bytes images/monsters/piratecutthroat.gif | Bin 0 -> 1574 bytes images/monsters/pirateghost.gif | Bin 0 -> 1697 bytes images/monsters/pirateghost_002.gif | Bin 0 -> 1716 bytes images/monsters/piratemarauder.gif | Bin 0 -> 1612 bytes images/monsters/pirateskeleton.gif | Bin 0 -> 1632 bytes images/monsters/plague smith.gif | Bin 0 -> 2400 bytes images/monsters/plaguesmith.gif | Bin 0 -> 3972 bytes images/monsters/plaguethrower.gif | Bin 0 -> 2661 bytes images/monsters/poacher.gif | Bin 0 -> 5080 bytes images/monsters/poison spider.gif | Bin 0 -> 3844 bytes images/monsters/poisonspider.gif | Bin 0 -> 1415 bytes images/monsters/polar bear.gif | Bin 0 -> 5633 bytes images/monsters/polarbear.gif | Bin 0 -> 2366 bytes images/monsters/priestess.gif | Bin 0 -> 2122 bytes images/monsters/quara constrictor scout.gif | Bin 0 -> 4374 bytes images/monsters/quara constrictor.gif | Bin 0 -> 4374 bytes images/monsters/quara hydromancer scout.gif | Bin 0 -> 8502 bytes images/monsters/quara hydromancer.gif | Bin 0 -> 8502 bytes images/monsters/quara mantassin scout.gif | Bin 0 -> 3965 bytes images/monsters/quara mantassin.gif | Bin 0 -> 3965 bytes images/monsters/quara pincher scout.gif | Bin 0 -> 3803 bytes images/monsters/quara pincher.gif | Bin 0 -> 3803 bytes images/monsters/quara predator scout.gif | Bin 0 -> 3730 bytes images/monsters/quara predator.gif | Bin 0 -> 3730 bytes images/monsters/quaraconstrictor.gif | Bin 0 -> 2649 bytes images/monsters/quarahydromancer.gif | Bin 0 -> 2606 bytes images/monsters/quaramantassin.gif | Bin 0 -> 2389 bytes images/monsters/quarapincher.gif | Bin 0 -> 2262 bytes images/monsters/quarapredator.gif | Bin 0 -> 2315 bytes images/monsters/rabbit.gif | Bin 0 -> 2177 bytes images/monsters/rat.gif | Bin 0 -> 1872 bytes images/monsters/rift brood.gif | Bin 0 -> 12195 bytes images/monsters/rift scythe.gif | Bin 0 -> 2223 bytes images/monsters/rift worm.gif | Bin 0 -> 6110 bytes images/monsters/roaring water elemental.gif | Bin 0 -> 3870 bytes images/monsters/rocky.gif | Bin 0 -> 4165 bytes images/monsters/ron the ripper.gif | Bin 0 -> 2237 bytes images/monsters/rotworm queen.gif | Bin 0 -> 8696 bytes images/monsters/rotworm.gif | Bin 0 -> 3381 bytes images/monsters/scarab.gif | Bin 0 -> 1286 bytes images/monsters/scorpion.gif | Bin 0 -> 2144 bytes images/monsters/sea serpent.gif | Bin 0 -> 7156 bytes images/monsters/seagull.gif | Bin 0 -> 1675 bytes images/monsters/seaserpent.gif | Bin 0 -> 3451 bytes images/monsters/serpent spawn.gif | Bin 0 -> 4320 bytes images/monsters/serpentspawn.gif | Bin 0 -> 2490 bytes images/monsters/sheep.gif | Bin 0 -> 4571 bytes images/monsters/shredderthrower.gif | Bin 0 -> 2661 bytes images/monsters/sibang.gif | Bin 0 -> 2449 bytes images/monsters/silver rabbit.gif | Bin 0 -> 2545 bytes images/monsters/silverrabbit.gif | Bin 0 -> 1426 bytes images/monsters/skeleton warrior.gif | Bin 0 -> 7762 bytes images/monsters/skeleton.gif | Bin 0 -> 3062 bytes images/monsters/skeletonwarrior.gif | Bin 0 -> 1601 bytes images/monsters/skunk.gif | Bin 0 -> 2587 bytes images/monsters/slick water elemental.gif | Bin 0 -> 2755 bytes images/monsters/slim.gif | Bin 0 -> 2758 bytes images/monsters/slime.gif | Bin 0 -> 5232 bytes images/monsters/slime2.gif | Bin 0 -> 1401 bytes images/monsters/smoczek.gif | Bin 0 -> 2913 bytes images/monsters/smok.gif | Bin 0 -> 2913 bytes images/monsters/smuggler.gif | Bin 0 -> 1654 bytes images/monsters/snake.gif | Bin 0 -> 2752 bytes images/monsters/son of verminor.gif | Bin 0 -> 9323 bytes images/monsters/sonofverminor.gif | Bin 0 -> 1401 bytes images/monsters/spectre.gif | Bin 0 -> 3003 bytes images/monsters/spider.gif | Bin 0 -> 2729 bytes images/monsters/spirit of earth.gif | Bin 0 -> 5736 bytes images/monsters/spirit of fire.gif | Bin 0 -> 5225 bytes images/monsters/spirit of water.gif | Bin 0 -> 3870 bytes images/monsters/spit nettle.gif | Bin 0 -> 3458 bytes images/monsters/spitnettle.gif | Bin 0 -> 2262 bytes images/monsters/squirrel.gif | Bin 0 -> 3794 bytes images/monsters/stalker.gif | Bin 0 -> 6084 bytes images/monsters/stone golem.gif | Bin 0 -> 5736 bytes images/monsters/stonegolem.gif | Bin 0 -> 3431 bytes images/monsters/svoren the mad.gif | Bin 0 -> 2783 bytes images/monsters/swamp troll.gif | Bin 0 -> 4885 bytes images/monsters/swamptroll.gif | Bin 0 -> 1608 bytes images/monsters/tarantula.gif | Bin 0 -> 7664 bytes images/monsters/terror bird.gif | Bin 0 -> 3686 bytes images/monsters/terrorbird.gif | Bin 0 -> 2251 bytes images/monsters/thalas.gif | Bin 0 -> 1659 bytes images/monsters/the abomination.gif | Bin 0 -> 4952 bytes images/monsters/the count.gif | Bin 0 -> 3748 bytes images/monsters/the dark dancer.gif | Bin 0 -> 2122 bytes images/monsters/the evil eye.gif | Bin 0 -> 5257 bytes images/monsters/the hairy one.gif | Bin 0 -> 3258 bytes images/monsters/the halloween hare.gif | Bin 0 -> 770 bytes images/monsters/the handmaiden.gif | Bin 0 -> 2465 bytes images/monsters/the imperor.gif | Bin 0 -> 3273 bytes images/monsters/the obliverator.gif | Bin 0 -> 7156 bytes images/monsters/the old widow.gif | Bin 0 -> 4420 bytes images/monsters/the plasmother.gif | Bin 0 -> 5018 bytes images/monsters/thornback tortoise.gif | Bin 0 -> 4259 bytes images/monsters/thornbacktortoise.gif | Bin 0 -> 2507 bytes images/monsters/thul.gif | Bin 0 -> 4374 bytes images/monsters/tiger.gif | Bin 0 -> 6012 bytes images/monsters/tiquandas revenge.gif | Bin 0 -> 8955 bytes images/monsters/toad.gif | Bin 0 -> 3013 bytes images/monsters/tortoise.gif | Bin 0 -> 2173 bytes images/monsters/troll champion.gif | Bin 0 -> 6700 bytes images/monsters/troll.gif | Bin 0 -> 4104 bytes images/monsters/trollchampion.gif | Bin 0 -> 1733 bytes images/monsters/undead dragon.gif | Bin 0 -> 5316 bytes images/monsters/undead minion.gif | Bin 0 -> 1480 bytes images/monsters/undeaddragon.gif | Bin 0 -> 3031 bytes images/monsters/ushuriel.gif | Bin 0 -> 6260 bytes images/monsters/valkyrie.gif | Bin 0 -> 2250 bytes images/monsters/vampire bride.gif | Bin 0 -> 2858 bytes images/monsters/vampire.gif | Bin 0 -> 13788 bytes images/monsters/vashresamun.gif | Bin 0 -> 1659 bytes images/monsters/war golem.gif | Bin 0 -> 6675 bytes images/monsters/war wolf.gif | Bin 0 -> 7280 bytes images/monsters/warlock.gif | Bin 0 -> 1649 bytes images/monsters/warwolf.gif | Bin 0 -> 864 bytes images/monsters/wasp.gif | Bin 0 -> 3463 bytes images/monsters/water elemental.gif | Bin 0 -> 2755 bytes images/monsters/waterelemental.gif | Bin 0 -> 1614 bytes images/monsters/waterelementalmassive.gif | Bin 0 -> 2345 bytes images/monsters/webster.gif | Bin 0 -> 3745 bytes images/monsters/werewolf.gif | Bin 0 -> 3558 bytes images/monsters/wild warrior.gif | Bin 0 -> 2189 bytes images/monsters/wildwarrior.gif | Bin 0 -> 1626 bytes images/monsters/winter wolf.gif | Bin 0 -> 6243 bytes images/monsters/winterwolf.gif | Bin 0 -> 421 bytes images/monsters/wisp.gif | Bin 0 -> 1335 bytes images/monsters/witch.gif | Bin 0 -> 2218 bytes images/monsters/wolf.gif | Bin 0 -> 4978 bytes images/monsters/worker golem.gif | Bin 0 -> 6732 bytes images/monsters/wraith.gif | Bin 0 -> 2282 bytes images/monsters/wyrm.gif | Bin 0 -> 1703 bytes images/monsters/wyvern.gif | Bin 0 -> 2501 bytes images/monsters/xenia.gif | Bin 0 -> 2915 bytes images/monsters/yeti.gif | Bin 0 -> 6835 bytes images/monsters/young sea serpent.gif | Bin 0 -> 3501 bytes images/monsters/zombie.gif | Bin 0 -> 3493 bytes images/monsters/zugurosh.gif | Bin 0 -> 5619 bytes images/news/blank.gif | Bin 0 -> 807 bytes images/news/icon_0.gif | Bin 0 -> 363 bytes images/news/icon_0_small.gif | Bin 0 -> 200 bytes images/news/icon_1.gif | Bin 0 -> 216 bytes images/news/icon_1_small.gif | Bin 0 -> 201 bytes images/news/icon_2.gif | Bin 0 -> 283 bytes images/news/icon_2_small.gif | Bin 0 -> 199 bytes images/news/icon_3.gif | Bin 0 -> 321 bytes images/news/icon_3_small.gif | Bin 0 -> 202 bytes images/news/icon_4.gif | Bin 0 -> 459 bytes images/news/icon_4_small.gif | Bin 0 -> 223 bytes images/notify.png | Bin 0 -> 789 bytes images/palladin.png | Bin 0 -> 34172 bytes images/payments/daopay.gif | Bin 0 -> 4036 bytes images/payments/dotpay.png | Bin 0 -> 14309 bytes images/payments/paypal.gif | Bin 0 -> 2701 bytes images/payments/sms.gif | Bin 0 -> 3278 bytes images/plus.gif | Bin 0 -> 860 bytes images/redskull.gif | Bin 0 -> 906 bytes images/refresh.gif | Bin 0 -> 875 bytes images/screenshots/demon.jpg | Bin 0 -> 124515 bytes images/screenshots/demon_thumb.gif | Bin 0 -> 14628 bytes images/search.png | Bin 0 -> 615 bytes images/smileys/icon_arrow.gif | Bin 0 -> 170 bytes images/smileys/icon_biggrin.gif | Bin 0 -> 172 bytes images/smileys/icon_confused.gif | Bin 0 -> 171 bytes images/smileys/icon_cool.gif | Bin 0 -> 172 bytes images/smileys/icon_cry.gif | Bin 0 -> 498 bytes images/smileys/icon_doubt.gif | Bin 0 -> 990 bytes images/smileys/icon_doubt2.gif | Bin 0 -> 992 bytes images/smileys/icon_eek.gif | Bin 0 -> 170 bytes images/smileys/icon_evil.gif | Bin 0 -> 236 bytes images/smileys/icon_exclaim.gif | Bin 0 -> 236 bytes images/smileys/icon_frown.gif | Bin 0 -> 171 bytes images/smileys/icon_fun.gif | Bin 0 -> 590 bytes images/smileys/icon_idea.gif | Bin 0 -> 176 bytes images/smileys/icon_kaddi.gif | Bin 0 -> 991 bytes images/smileys/icon_lol.gif | Bin 0 -> 336 bytes images/smileys/icon_mrgreen.gif | Bin 0 -> 349 bytes images/smileys/icon_neutral.gif | Bin 0 -> 171 bytes images/smileys/icon_question.gif | Bin 0 -> 248 bytes images/smileys/icon_razz.gif | Bin 0 -> 176 bytes images/smileys/icon_redface.gif | Bin 0 -> 650 bytes images/smileys/icon_rolleyes.gif | Bin 0 -> 485 bytes images/smileys/icon_sad.gif | Bin 0 -> 171 bytes images/smileys/icon_silenced.gif | Bin 0 -> 231 bytes images/smileys/icon_smile.gif | Bin 0 -> 174 bytes images/smileys/icon_smile2.gif | Bin 0 -> 174 bytes images/smileys/icon_surprised.gif | Bin 0 -> 174 bytes images/smileys/icon_twisted.gif | Bin 0 -> 238 bytes images/smileys/icon_wink.gif | Bin 0 -> 170 bytes images/sorcerer.png | Bin 0 -> 34685 bytes images/success.png | Bin 0 -> 816 bytes images/trash.png | Bin 0 -> 476 bytes images/true.png | Bin 0 -> 809 bytes images/under_construction.jpg | Bin 0 -> 75503 bytes images/whiteskull.gif | Bin 0 -> 904 bytes images/yellow_skull.gif | Bin 0 -> 905 bytes index.php | 1 + install/includes/.htaccess | 1 + install/includes/database.php | 5 + install/includes/functions.php | 80 + install/includes/locale.php | 51 + install/includes/schema.sql | 236 + install/index.php | 46 + install/steps/.htaccess | 1 + install/steps/config.php | 113 + install/steps/database.php | 342 + install/steps/finish.php | 20 + install/steps/license.php | 7 + install/steps/requirements.php | 46 + install/steps/welcome.php | 31 + install/template/images/active.gif | Bin 0 -> 155 bytes install/template/images/approve.gif | Bin 0 -> 535 bytes install/template/images/background.jpg | Bin 0 -> 12264 bytes install/template/images/bullet.gif | Bin 0 -> 261 bytes install/template/images/button.gif | Bin 0 -> 152 bytes install/template/images/delete.gif | Bin 0 -> 590 bytes install/template/images/divider.gif | Bin 0 -> 155 bytes install/template/images/edit.gif | Bin 0 -> 600 bytes install/template/images/error.gif | Bin 0 -> 599 bytes install/template/images/footer.jpg | Bin 0 -> 385 bytes install/template/images/negative.gif | Bin 0 -> 597 bytes install/template/images/note.gif | Bin 0 -> 610 bytes install/template/images/positive.gif | Bin 0 -> 608 bytes install/template/images/sidebody.gif | Bin 0 -> 197 bytes install/template/images/sidehead.gif | Bin 0 -> 1032 bytes install/template/images/success.gif | Bin 0 -> 606 bytes install/template/images/userbox.gif | Bin 0 -> 1566 bytes install/template/images/visitwebsite.gif | Bin 0 -> 676 bytes install/template/images/warning.gif | Bin 0 -> 588 bytes install/template/images/wrapper.gif | Bin 0 -> 348 bytes install/template/style.css | 297 + install/template/template.php | 46 + plugins/.htaccess | 1 + system/.htaccess | 2 + system/cache/.htaccess | 1 + system/compat_pages.php | 41 + system/counter.php | 52 + system/countries.conf.php | 1 + system/data/.htaccess | 1 + system/database.php | 76 + system/events.php | 61 + system/functions.php | 1116 ++ system/init.php | 154 + system/item.php | 62 + system/libs/.htaccess | 1 + system/libs/cache.php | 69 + system/libs/cache_apc.php | 49 + system/libs/cache_eaccelerator.php | 48 + system/libs/cache_file.php | 62 + system/libs/cache_xcache.php | 54 + system/libs/data.php | 45 + system/libs/dwoo/.htaccess | 1 + system/libs/dwoo/CHANGELOG | 508 + system/libs/dwoo/Dwoo.compiled.php | 1 + system/libs/dwoo/Dwoo.php | 1533 ++ .../dwoo/Dwoo/Adapters/Agavi/DwooRenderer.php | 196 + system/libs/dwoo/Dwoo/Adapters/Agavi/README | 27 + .../Dwoo/Adapters/Agavi/dwoo_plugins/t.php | 32 + .../Dwoo/Adapters/Agavi/dwoo_plugins/url.php | 54 + system/libs/dwoo/Dwoo/Adapters/CakePHP/README | 33 + .../libs/dwoo/Dwoo/Adapters/CakePHP/dwoo.php | 143 + .../dwoo/Dwoo/Adapters/CodeIgniter/README | 36 + .../CodeIgniter/config/dwootemplate.php | 12 + .../CodeIgniter/controllers/dwoowelcome.php | 16 + .../CodeIgniter/libraries/Dwootemplate.php | 172 + .../CodeIgniter/views/dwoowelcome.tpl | 31 + .../Dwoo/Adapters/CodeIgniter/views/page.tpl | 57 + .../Adapters/ZendFramework/PluginProxy.php | 96 + .../dwoo/Dwoo/Adapters/ZendFramework/README | 32 + .../dwoo/Dwoo/Adapters/ZendFramework/View.php | 512 + system/libs/dwoo/Dwoo/Block/Plugin.php | 103 + .../libs/dwoo/Dwoo/Compilation/Exception.php | 38 + system/libs/dwoo/Dwoo/Compiler.php | 3086 ++++ system/libs/dwoo/Dwoo/Data.php | 250 + system/libs/dwoo/Dwoo/Exception.php | 19 + system/libs/dwoo/Dwoo/Filter.php | 44 + system/libs/dwoo/Dwoo/ICompilable.php | 26 + system/libs/dwoo/Dwoo/ICompilable/Block.php | 21 + system/libs/dwoo/Dwoo/ICompiler.php | 49 + system/libs/dwoo/Dwoo/IDataProvider.php | 25 + system/libs/dwoo/Dwoo/IElseable.php | 24 + system/libs/dwoo/Dwoo/ILoader.php | 30 + system/libs/dwoo/Dwoo/IPluginProxy.php | 65 + system/libs/dwoo/Dwoo/ITemplate.php | 150 + system/libs/dwoo/Dwoo/Loader.php | 147 + system/libs/dwoo/Dwoo/Plugin.php | 85 + system/libs/dwoo/Dwoo/Processor.php | 44 + system/libs/dwoo/Dwoo/Security/Exception.php | 19 + system/libs/dwoo/Dwoo/Security/Policy.php | 199 + system/libs/dwoo/Dwoo/Smarty/Adapter.php | 518 + system/libs/dwoo/Dwoo/Template/File.php | 270 + system/libs/dwoo/Dwoo/Template/String.php | 497 + system/libs/dwoo/LICENSE | 25 + system/libs/dwoo/README | 79 + system/libs/dwoo/UPGRADE_NOTES | 65 + system/libs/dwoo/cache/.gitignore | 0 system/libs/dwoo/compiled/.gitignore | 0 system/libs/dwoo/dwooAutoload.php | 12 + system/libs/dwoo/plugins/builtin/blocks/a.php | 67 + .../plugins/builtin/blocks/auto_escape.php | 61 + .../dwoo/plugins/builtin/blocks/block.php | 34 + .../dwoo/plugins/builtin/blocks/capture.php | 61 + .../dwoo/plugins/builtin/blocks/dynamic.php | 65 + .../libs/dwoo/plugins/builtin/blocks/else.php | 63 + .../dwoo/plugins/builtin/blocks/elseif.php | 60 + .../libs/dwoo/plugins/builtin/blocks/for.php | 147 + .../dwoo/plugins/builtin/blocks/foreach.php | 152 + .../plugins/builtin/blocks/foreachelse.php | 43 + .../dwoo/plugins/builtin/blocks/forelse.php | 43 + .../libs/dwoo/plugins/builtin/blocks/if.php | 180 + .../libs/dwoo/plugins/builtin/blocks/loop.php | 128 + .../dwoo/plugins/builtin/blocks/section.php | 131 + .../builtin/blocks/smartyinterface.php | 59 + .../dwoo/plugins/builtin/blocks/strip.php | 50 + .../dwoo/plugins/builtin/blocks/template.php | 88 + .../plugins/builtin/blocks/textformat.php | 94 + .../plugins/builtin/blocks/topLevelBlock.php | 32 + .../libs/dwoo/plugins/builtin/blocks/with.php | 76 + .../dwoo/plugins/builtin/blocks/withelse.php | 43 + .../plugins/builtin/filters/html_format.php | 175 + .../dwoo/plugins/builtin/functions/assign.php | 23 + .../plugins/builtin/functions/capitalize.php | 38 + .../dwoo/plugins/builtin/functions/cat.php | 22 + .../builtin/functions/count_characters.php | 27 + .../builtin/functions/count_paragraphs.php | 22 + .../builtin/functions/count_sentences.php | 22 + .../plugins/builtin/functions/count_words.php | 22 + .../plugins/builtin/functions/counter.php | 76 + .../dwoo/plugins/builtin/functions/cycle.php | 68 + .../plugins/builtin/functions/date_format.php | 54 + .../plugins/builtin/functions/default.php | 23 + .../dwoo/plugins/builtin/functions/dump.php | 173 + .../dwoo/plugins/builtin/functions/eol.php | 20 + .../dwoo/plugins/builtin/functions/escape.php | 61 + .../dwoo/plugins/builtin/functions/eval.php | 41 + .../plugins/builtin/functions/extends.php | 134 + .../builtin/functions/extendsCheck.php | 52 + .../dwoo/plugins/builtin/functions/fetch.php | 50 + .../plugins/builtin/functions/include.php | 77 + .../dwoo/plugins/builtin/functions/indent.php | 24 + .../dwoo/plugins/builtin/functions/isset.php | 22 + .../builtin/functions/load_templates.php | 74 + .../dwoo/plugins/builtin/functions/lower.php | 22 + .../dwoo/plugins/builtin/functions/mailto.php | 117 + .../dwoo/plugins/builtin/functions/math.php | 130 + .../dwoo/plugins/builtin/functions/nl2br.php | 22 + .../plugins/builtin/functions/optional.php | 23 + .../builtin/functions/regex_replace.php | 38 + .../plugins/builtin/functions/replace.php | 28 + .../plugins/builtin/functions/reverse.php | 34 + .../dwoo/plugins/builtin/functions/safe.php | 22 + .../plugins/builtin/functions/spacify.php | 23 + .../builtin/functions/string_format.php | 23 + .../plugins/builtin/functions/strip_tags.php | 27 + .../dwoo/plugins/builtin/functions/tif.php | 74 + .../plugins/builtin/functions/truncate.php | 45 + .../dwoo/plugins/builtin/functions/upper.php | 22 + .../plugins/builtin/functions/whitespace.php | 33 + .../plugins/builtin/functions/wordwrap.php | 25 + .../dwoo/plugins/builtin/helper.array.php | 38 + .../builtin/processors/pre.smarty_compat.php | 73 + system/libs/dwoo/plugins/personal/.gitignore | 0 .../libs/dwoo/plugins/thirdparty/.gitignore | 0 system/libs/items.php | 266 + system/libs/phpmailer/.htaccess | 1 + system/libs/phpmailer/LICENSE | 504 + system/libs/phpmailer/PHPMailerAutoload.php | 49 + system/libs/phpmailer/VERSION | 1 + system/libs/phpmailer/class.phpmailer.php | 4039 +++++ .../libs/phpmailer/class.phpmaileroauth.php | 197 + .../phpmailer/class.phpmaileroauthgoogle.php | 77 + system/libs/phpmailer/class.pop3.php | 407 + system/libs/phpmailer/class.smtp.php | 1251 ++ system/libs/phpmailer/examples/DKIM.phps | 38 + .../phpmailer/examples/code_generator.phps | 597 + .../libs/phpmailer/examples/contactform.phps | 71 + system/libs/phpmailer/examples/contents.html | 17 + .../libs/phpmailer/examples/contentsutf8.html | 21 + .../libs/phpmailer/examples/exceptions.phps | 35 + system/libs/phpmailer/examples/gmail.phps | 75 + .../libs/phpmailer/examples/gmail_xoauth.phps | 85 + .../phpmailer/examples/images/phpmailer.png | Bin 0 -> 5831 bytes .../examples/images/phpmailer_mini.png | Bin 0 -> 1842 bytes system/libs/phpmailer/examples/index.html | 48 + system/libs/phpmailer/examples/mail.phps | 31 + .../libs/phpmailer/examples/mailing_list.phps | 59 + .../phpmailer/examples/pop_before_smtp.phps | 54 + .../phpmailer/examples/scripts/XRegExp.js | 664 + .../examples/scripts/shAutoloader.js | 122 + .../phpmailer/examples/scripts/shBrushPhp.js | 72 + .../libs/phpmailer/examples/scripts/shCore.js | 1 + .../phpmailer/examples/scripts/shLegacy.js | 140 + .../phpmailer/examples/send_file_upload.phps | 49 + .../examples/send_multiple_file_upload.phps | 51 + system/libs/phpmailer/examples/sendmail.phps | 33 + .../libs/phpmailer/examples/signed-mail.phps | 89 + system/libs/phpmailer/examples/smtp.phps | 54 + .../libs/phpmailer/examples/smtp_check.phps | 55 + .../libs/phpmailer/examples/smtp_no_auth.phps | 50 + .../libs/phpmailer/examples/ssl_options.phps | 74 + .../libs/phpmailer/examples/styles/shCore.css | 46 + .../examples/styles/shCoreDefault.css | 77 + .../examples/styles/shCoreDjango.css | 78 + .../examples/styles/shCoreEclipse.css | 80 + .../phpmailer/examples/styles/shCoreEmacs.css | 76 + .../examples/styles/shCoreFadeToGrey.css | 77 + .../examples/styles/shCoreMDUltra.css | 76 + .../examples/styles/shCoreMidnight.css | 76 + .../phpmailer/examples/styles/shCoreRDark.css | 76 + .../examples/styles/shThemeAppleScript.css | 21 + .../examples/styles/shThemeDefault.css | 31 + .../examples/styles/shThemeDjango.css | 32 + .../examples/styles/shThemeEclipse.css | 34 + .../examples/styles/shThemeEmacs.css | 30 + .../examples/styles/shThemeFadeToGrey.css | 31 + .../examples/styles/shThemeMDUltra.css | 30 + .../examples/styles/shThemeMidnight.css | 30 + .../examples/styles/shThemeRDark.css | 30 + .../examples/styles/shThemeVisualStudio.css | 31 + .../phpmailer/examples/styles/wrapping.png | Bin 0 -> 631 bytes system/libs/phpmailer/extras/EasyPeasyICS.php | 148 + system/libs/phpmailer/extras/README.md | 17 + system/libs/phpmailer/extras/htmlfilter.php | 1159 ++ .../phpmailer/extras/ntlm_sasl_client.php | 185 + system/libs/phpmailer/get_oauth_token.php | 162 + .../phpmailer/language/phpmailer.lang-am.php | 26 + .../phpmailer/language/phpmailer.lang-ar.php | 27 + .../phpmailer/language/phpmailer.lang-az.php | 26 + .../phpmailer/language/phpmailer.lang-be.php | 26 + .../phpmailer/language/phpmailer.lang-bg.php | 26 + .../phpmailer/language/phpmailer.lang-ca.php | 26 + .../phpmailer/language/phpmailer.lang-ch.php | 26 + .../phpmailer/language/phpmailer.lang-cs.php | 25 + .../phpmailer/language/phpmailer.lang-da.php | 26 + .../phpmailer/language/phpmailer.lang-de.php | 25 + .../phpmailer/language/phpmailer.lang-el.php | 25 + .../phpmailer/language/phpmailer.lang-eo.php | 25 + .../phpmailer/language/phpmailer.lang-es.php | 26 + .../phpmailer/language/phpmailer.lang-et.php | 27 + .../phpmailer/language/phpmailer.lang-fa.php | 27 + .../phpmailer/language/phpmailer.lang-fi.php | 27 + .../phpmailer/language/phpmailer.lang-fo.php | 26 + .../phpmailer/language/phpmailer.lang-fr.php | 29 + .../phpmailer/language/phpmailer.lang-gl.php | 26 + .../phpmailer/language/phpmailer.lang-he.php | 26 + .../phpmailer/language/phpmailer.lang-hr.php | 26 + .../phpmailer/language/phpmailer.lang-hu.php | 26 + .../phpmailer/language/phpmailer.lang-id.php | 26 + .../phpmailer/language/phpmailer.lang-it.php | 27 + .../phpmailer/language/phpmailer.lang-ja.php | 27 + .../phpmailer/language/phpmailer.lang-ka.php | 26 + .../phpmailer/language/phpmailer.lang-ko.php | 26 + .../phpmailer/language/phpmailer.lang-lt.php | 26 + .../phpmailer/language/phpmailer.lang-lv.php | 26 + .../phpmailer/language/phpmailer.lang-ms.php | 26 + .../phpmailer/language/phpmailer.lang-nb.php | 25 + .../phpmailer/language/phpmailer.lang-nl.php | 26 + .../phpmailer/language/phpmailer.lang-pl.php | 26 + .../phpmailer/language/phpmailer.lang-pt.php | 26 + .../language/phpmailer.lang-pt_br.php | 28 + .../phpmailer/language/phpmailer.lang-ro.php | 26 + .../phpmailer/language/phpmailer.lang-ru.php | 27 + .../phpmailer/language/phpmailer.lang-sk.php | 26 + .../phpmailer/language/phpmailer.lang-sl.php | 26 + .../phpmailer/language/phpmailer.lang-sr.php | 26 + .../phpmailer/language/phpmailer.lang-sv.php | 26 + .../phpmailer/language/phpmailer.lang-tr.php | 29 + .../phpmailer/language/phpmailer.lang-uk.php | 27 + .../phpmailer/language/phpmailer.lang-vi.php | 26 + .../phpmailer/language/phpmailer.lang-zh.php | 28 + .../language/phpmailer.lang-zh_cn.php | 27 + system/libs/pot/.htaccess | 1 + system/libs/pot/AUTHORS | 48 + system/libs/pot/CHANGELOG | 112 + system/libs/pot/E_OTS_ErrorCode.php | 36 + system/libs/pot/E_OTS_FileLoaderError.php | 56 + system/libs/pot/E_OTS_Generic.php | 40 + system/libs/pot/E_OTS_NoDriver.php | 26 + system/libs/pot/E_OTS_NotAContainer.php | 26 + system/libs/pot/E_OTS_NotLoaded.php | 26 + system/libs/pot/E_OTS_OTBMError.php | 36 + system/libs/pot/E_OTS_OutOfBuffer.php | 28 + system/libs/pot/E_OTS_ReadOnly.php | 26 + system/libs/pot/INSTALL | 5 + system/libs/pot/IOTS_Cipher.php | 41 + system/libs/pot/IOTS_DAO.php | 24 + system/libs/pot/IOTS_DB.php | 24 + system/libs/pot/IOTS_DataDisplay.php | 93 + system/libs/pot/IOTS_Display.php | 100 + system/libs/pot/IOTS_FileCache.php | 43 + system/libs/pot/IOTS_GuildAction.php | 71 + system/libs/pot/IOTS_ItemsCache.php | 42 + system/libs/pot/InvitesDriver.php | 96 + system/libs/pot/LICENSE | 165 + system/libs/pot/LICENSE.PEAR.CRYPT_RSA | 68 + system/libs/pot/LICENSE.PEAR.CRYPT_XTEA | 75 + system/libs/pot/NEWS | 21 + system/libs/pot/OTS.php | 1712 ++ system/libs/pot/OTS_Account.php | 1060 ++ system/libs/pot/OTS_AccountBan.php | 59 + system/libs/pot/OTS_AccountBans_List.php | 38 + system/libs/pot/OTS_Accounts_List.php | 70 + system/libs/pot/OTS_Admin.php | 739 + system/libs/pot/OTS_Ban.php | 597 + system/libs/pot/OTS_Bans_List.php | 104 + system/libs/pot/OTS_Base_DAO.php | 120 + system/libs/pot/OTS_Base_DB.php | 241 + system/libs/pot/OTS_Base_List.php | 466 + system/libs/pot/OTS_BinaryTools.php | 150 + system/libs/pot/OTS_Buffer.php | 421 + system/libs/pot/OTS_Container.php | 153 + system/libs/pot/OTS_DB_MySQL.php | 149 + system/libs/pot/OTS_DB_ODBC.php | 110 + system/libs/pot/OTS_DB_PostgreSQL.php | 103 + system/libs/pot/OTS_FileLoader.php | 361 + system/libs/pot/OTS_FileNode.php | 186 + system/libs/pot/OTS_Group.php | 670 + system/libs/pot/OTS_Groups_List.php | 192 + system/libs/pot/OTS_Guild.php | 819 + system/libs/pot/OTS_GuildRank.php | 513 + system/libs/pot/OTS_GuildRanks_List.php | 76 + system/libs/pot/OTS_Guilds_List.php | 76 + system/libs/pot/OTS_House.php | 430 + system/libs/pot/OTS_HousesList.php | 255 + system/libs/pot/OTS_IPBan.php | 63 + system/libs/pot/OTS_IPBans_List.php | 38 + system/libs/pot/OTS_InfoRespond.php | 391 + system/libs/pot/OTS_Item.php | 196 + system/libs/pot/OTS_ItemType.php | 746 + system/libs/pot/OTS_ItemsList.php | 680 + system/libs/pot/OTS_MapCoords.php | 134 + system/libs/pot/OTS_Monster.php | 488 + system/libs/pot/OTS_MonstersList.php | 263 + system/libs/pot/OTS_OTBMFile.php | 842 + system/libs/pot/OTS_Player.php | 3354 ++++ system/libs/pot/OTS_PlayerBan.php | 59 + system/libs/pot/OTS_PlayerBans_List.php | 38 + system/libs/pot/OTS_Players_List.php | 70 + system/libs/pot/OTS_RSA.php | 177 + system/libs/pot/OTS_Row_DAO.php | 79 + system/libs/pot/OTS_SQLField.php | 125 + system/libs/pot/OTS_SQLFilter.php | 348 + system/libs/pot/OTS_ServerInfo.php | 227 + system/libs/pot/OTS_ServerStatus.php | 572 + system/libs/pot/OTS_Spell.php | 455 + system/libs/pot/OTS_SpellsList.php | 326 + system/libs/pot/OTS_Toolbox.php | 119 + system/libs/pot/OTS_VocationsList.php | 224 + system/libs/pot/OTS_XTEA.php | 155 + system/libs/pot/README | 77 + system/libs/pot/RULES | 68 + system/libs/pot/compat.php | 85 + system/libs/timer.php | 56 + system/libs/validator.php | 34 + system/libs/visitors.php | 128 + system/locale/.htaccess | 1 + system/locale/en/.htaccess | 1 + system/locale/en/admin.php | 9 + system/locale/en/install.php | 81 + system/locale/en/main.php | 15 + system/locale/pl/.htaccess | 1 + system/locale/pl/admin.php | 9 + system/locale/pl/install.php | 81 + system/locale/pl/main.php | 15 + system/login.php | 142 + system/logs/.htaccess | 1 + system/pages/.htaccess | 1 + system/pages/404.php | 17 + system/pages/account.php | 25 + system/pages/accountmanagement.php | 1009 ++ system/pages/admin/.htaccess | 1 + system/pages/admin/changelog.php | 27 + system/pages/admin/dashboard.php | 64 + system/pages/admin/login.php | 32 + system/pages/admin/logs.php | 78 + system/pages/admin/mailer.php | 111 + system/pages/admin/notepad.php | 108 + system/pages/admin/pages.php | 294 + system/pages/admin/phpinfo.php | 20 + system/pages/admin/players.php | 568 + system/pages/admin/plugins.php | 101 + system/pages/admin/statistics.php | 60 + system/pages/admin/tools.php | 30 + system/pages/admin/tools/.htaccess | 1 + system/pages/admin/version.php | 40 + system/pages/admin/visitors.php | 53 + system/pages/bans.php | 206 + system/pages/bugtracker.php | 343 + system/pages/changelog.php | 105 + system/pages/characters.php | 696 + system/pages/commands.php | 252 + system/pages/createaccount.php | 536 + system/pages/creatures.php | 322 + system/pages/custom.php | 28 + system/pages/downloads.php | 23 + system/pages/experiencestages.php | 70 + system/pages/experiencetable.php | 52 + system/pages/faq.php | 66 + system/pages/forum.php | 709 + system/pages/guilds.php | 2359 +++ system/pages/highscores.php | 317 + system/pages/houses.php | 306 + system/pages/lastkills.php | 109 + system/pages/lostaccount.php | 570 + system/pages/movies.php | 35 + system/pages/news.php | 553 + system/pages/newsarchive.php | 14 + system/pages/online.php | 220 + system/pages/polls.php | 376 + system/pages/records.php | 35 + system/pages/rules.php | 47 + system/pages/screenshots.php | 88 + system/pages/serverinfo.php | 153 + system/pages/spells.php | 247 + system/pages/team.php | 127 + system/status.php | 128 + system/template.php | 105 + system/templates/.htaccess | 1 + system/templates/news.php | 35 + templates/kathrine/config.php | 6 + templates/kathrine/images/Thumbs.db | Bin 0 -> 34816 bytes templates/kathrine/images/background.png | Bin 0 -> 1082367 bytes templates/kathrine/images/buttons/Thumbs.db | Bin 0 -> 67072 bytes .../images/buttons/_sbutton_accountlost.gif | Bin 0 -> 352 bytes .../kathrine/images/buttons/_sbutton_back.gif | Bin 0 -> 228 bytes .../images/buttons/_sbutton_cancel.gif | Bin 0 -> 247 bytes .../images/buttons/_sbutton_changeemail.gif | Bin 0 -> 394 bytes .../buttons/_sbutton_changepassword.gif | Bin 0 -> 458 bytes .../buttons/_sbutton_createcharacter.gif | Bin 0 -> 390 bytes .../buttons/_sbutton_deletecharacter.gif | Bin 0 -> 399 bytes .../kathrine/images/buttons/_sbutton_edit.gif | Bin 0 -> 217 bytes .../images/buttons/_sbutton_jointibia.gif | Bin 0 -> 294 bytes .../images/buttons/_sbutton_login.gif | Bin 0 -> 265 bytes .../images/buttons/_sbutton_logout.gif | Bin 0 -> 291 bytes .../images/buttons/_sbutton_myaccount.gif | Bin 0 -> 388 bytes .../buttons/_sbutton_registeraccount.gif | Bin 0 -> 443 bytes .../images/buttons/_sbutton_submit.gif | Bin 0 -> 267 bytes templates/kathrine/images/buttons/addnews.gif | Bin 0 -> 225 bytes .../kathrine/images/buttons/addticker.gif | Bin 0 -> 224 bytes templates/kathrine/images/buttons/check.png | Bin 0 -> 3375 bytes templates/kathrine/images/buttons/empty.png | Bin 0 -> 3024 bytes templates/kathrine/images/buttons/sbutton.gif | Bin 0 -> 1356 bytes .../images/buttons/sbutton_acceptinvite.png | Bin 0 -> 3542 bytes .../kathrine/images/buttons/sbutton_back.gif | Bin 0 -> 643 bytes .../images/buttons/sbutton_cancel.gif | Bin 0 -> 667 bytes .../images/buttons/sbutton_changerank.png | Bin 0 -> 3538 bytes .../images/buttons/sbutton_createguild.png | Bin 0 -> 3517 bytes .../images/buttons/sbutton_iagree.gif | Bin 0 -> 669 bytes .../images/buttons/sbutton_inviteplayer.png | Bin 0 -> 3583 bytes .../images/buttons/sbutton_leaveguild.png | Bin 0 -> 3459 bytes .../kathrine/images/buttons/sbutton_login.gif | Bin 0 -> 651 bytes .../images/buttons/sbutton_manageguild.png | Bin 0 -> 3520 bytes .../kathrine/images/buttons/sbutton_over.gif | Bin 0 -> 443 bytes .../images/buttons/sbutton_submit.gif | Bin 0 -> 659 bytes .../kathrine/images/buttons/sbutton_view.gif | Bin 0 -> 640 bytes templates/kathrine/images/content/Thumbs.db | Bin 0 -> 29184 bytes .../kathrine/images/content/attentionsign.gif | Bin 0 -> 201 bytes .../kathrine/images/content/back-to-top.gif | Bin 0 -> 1067 bytes .../kathrine/images/content/border-1.gif | Bin 0 -> 133 bytes .../images/content/box-frame-edge.gif | Bin 0 -> 95 bytes .../images/content/box-frame-vertical.gif | Bin 0 -> 104 bytes .../kathrine/images/content/corner-bl.gif | Bin 0 -> 204 bytes .../kathrine/images/content/corner-br.gif | Bin 0 -> 204 bytes .../kathrine/images/content/corner-tl.gif | Bin 0 -> 208 bytes .../kathrine/images/content/corner-tr.gif | Bin 0 -> 205 bytes .../images/content/headline-bracer-left.gif | Bin 0 -> 1913 bytes .../images/content/headline-bracer-right.gif | Bin 0 -> 1921 bytes templates/kathrine/images/content/scroll.gif | Bin 0 -> 8201 bytes .../images/content/table-headline-border.gif | Bin 0 -> 390 bytes .../images/content/title-background-green.gif | Bin 0 -> 1204 bytes templates/kathrine/images/general/Thumbs.db | Bin 0 -> 12800 bytes .../kathrine/images/general/box-bottom.gif | Bin 0 -> 2015 bytes templates/kathrine/images/general/box-top.gif | Bin 0 -> 2017 bytes templates/kathrine/images/general/chain.gif | Bin 0 -> 845 bytes templates/kathrine/images/general/minus.gif | Bin 0 -> 224 bytes templates/kathrine/images/general/plus.gif | Bin 0 -> 224 bytes templates/kathrine/images/logo.png | Bin 0 -> 112498 bytes templates/kathrine/images/news/Thumbs.db | Bin 0 -> 26624 bytes templates/kathrine/images/news/blank.gif | Bin 0 -> 807 bytes templates/kathrine/images/news/delete.png | Bin 0 -> 3332 bytes .../kathrine/images/news/delete_news-HQ.png | Bin 0 -> 3332 bytes .../kathrine/images/news/delete_news.PNG | Bin 0 -> 3332 bytes .../kathrine/images/news/edit_news-HQ.png | Bin 0 -> 3264 bytes templates/kathrine/images/news/edit_news.PNG | Bin 0 -> 3264 bytes templates/kathrine/images/news/icon_0.gif | Bin 0 -> 363 bytes .../kathrine/images/news/icon_0_small.gif | Bin 0 -> 200 bytes templates/kathrine/images/news/icon_1.gif | Bin 0 -> 216 bytes .../kathrine/images/news/icon_1_small.gif | Bin 0 -> 201 bytes templates/kathrine/images/news/icon_2.gif | Bin 0 -> 283 bytes .../kathrine/images/news/icon_2_small.gif | Bin 0 -> 199 bytes templates/kathrine/images/news/icon_3.gif | Bin 0 -> 321 bytes .../kathrine/images/news/icon_3_small.gif | Bin 0 -> 202 bytes templates/kathrine/images/news/icon_4.gif | Bin 0 -> 459 bytes .../kathrine/images/news/icon_4_small.gif | Bin 0 -> 223 bytes .../images/news/newsheadline_background.gif | Bin 0 -> 3357 bytes templates/kathrine/images/separator.png | Bin 0 -> 287 bytes templates/kathrine/images/site-bg.png | Bin 0 -> 52264 bytes templates/kathrine/images/site-bot.png | Bin 0 -> 32708 bytes templates/kathrine/images/spacer.gif | Bin 0 -> 43 bytes templates/kathrine/images/submenu.png | Bin 0 -> 49591 bytes templates/kathrine/images/tab-active.png | Bin 0 -> 6270 bytes templates/kathrine/images/tab.png | Bin 0 -> 5563 bytes templates/kathrine/images/tabs-bg.png | Bin 0 -> 4162 bytes templates/kathrine/menu.js | 30 + templates/kathrine/news.php | 40 + templates/kathrine/style.css | 895 + templates/kathrine/template.php | 196 + templates/tibiacom/basic.css | 1748 ++ templates/tibiacom/config.php | 12 + templates/tibiacom/headline.php | 42 + .../images/buttons/_sbutton_accountlost.gif | Bin 0 -> 352 bytes .../tibiacom/images/buttons/_sbutton_back.gif | Bin 0 -> 228 bytes .../images/buttons/_sbutton_cancel.gif | Bin 0 -> 247 bytes .../images/buttons/_sbutton_changeemail.gif | Bin 0 -> 394 bytes .../buttons/_sbutton_changepassword.gif | Bin 0 -> 458 bytes .../buttons/_sbutton_createcharacter.gif | Bin 0 -> 390 bytes .../buttons/_sbutton_deletecharacter.gif | Bin 0 -> 399 bytes .../tibiacom/images/buttons/_sbutton_edit.gif | Bin 0 -> 217 bytes .../images/buttons/_sbutton_jointibia.gif | Bin 0 -> 294 bytes .../images/buttons/_sbutton_login.gif | Bin 0 -> 265 bytes .../images/buttons/_sbutton_logout.gif | Bin 0 -> 291 bytes .../images/buttons/_sbutton_myaccount.gif | Bin 0 -> 388 bytes .../buttons/_sbutton_registeraccount.gif | Bin 0 -> 443 bytes .../images/buttons/_sbutton_submit.gif | Bin 0 -> 267 bytes .../images/buttons/_sbutton_votenow.gif | Bin 0 -> 299 bytes templates/tibiacom/images/buttons/addnews.gif | Bin 0 -> 225 bytes .../tibiacom/images/buttons/addticker.gif | Bin 0 -> 224 bytes templates/tibiacom/images/buttons/check.png | Bin 0 -> 30677 bytes templates/tibiacom/images/buttons/empty.png | Bin 0 -> 30268 bytes templates/tibiacom/images/buttons/sbutton.gif | Bin 0 -> 1356 bytes .../images/buttons/sbutton_acceptinvite.png | Bin 0 -> 30891 bytes .../tibiacom/images/buttons/sbutton_back.gif | Bin 0 -> 1971 bytes .../images/buttons/sbutton_cancel.gif | Bin 0 -> 1978 bytes .../images/buttons/sbutton_changerank.png | Bin 0 -> 30931 bytes .../images/buttons/sbutton_createguild.png | Bin 0 -> 30842 bytes .../images/buttons/sbutton_iagree.gif | Bin 0 -> 2956 bytes .../images/buttons/sbutton_inviteplayer.png | Bin 0 -> 30893 bytes .../images/buttons/sbutton_leaveguild.png | Bin 0 -> 30884 bytes .../tibiacom/images/buttons/sbutton_login.gif | Bin 0 -> 1959 bytes .../images/buttons/sbutton_manageguild.png | Bin 0 -> 30918 bytes .../tibiacom/images/buttons/sbutton_over.gif | Bin 0 -> 443 bytes .../images/buttons/sbutton_submit.gif | Bin 0 -> 1974 bytes .../tibiacom/images/buttons/sbutton_view.gif | Bin 0 -> 1997 bytes .../tibiacom/images/content/attentionsign.gif | Bin 0 -> 201 bytes .../tibiacom/images/content/back-to-top.gif | Bin 0 -> 1067 bytes .../tibiacom/images/content/border-1.gif | Bin 0 -> 133 bytes .../images/content/box-frame-edge.gif | Bin 0 -> 95 bytes .../images/content/box-frame-horizontal.gif | Bin 0 -> 390 bytes .../images/content/box-frame-vertical.gif | Bin 0 -> 104 bytes .../tibiacom/images/content/corner-bl.gif | Bin 0 -> 204 bytes .../tibiacom/images/content/corner-br.gif | Bin 0 -> 204 bytes .../tibiacom/images/content/corner-tl.gif | Bin 0 -> 208 bytes .../tibiacom/images/content/corner-tr.gif | Bin 0 -> 205 bytes .../images/content/headline-bracer-left.gif | Bin 0 -> 1913 bytes .../images/content/headline-bracer-right.gif | Bin 0 -> 1921 bytes templates/tibiacom/images/content/scroll.gif | Bin 0 -> 8201 bytes .../images/content/table-headline-border.gif | Bin 0 -> 390 bytes .../images/content/table-shadow-bl.gif | Bin 0 -> 98 bytes .../images/content/table-shadow-bm.gif | Bin 0 -> 63 bytes .../images/content/table-shadow-br.gif | Bin 0 -> 98 bytes .../images/content/table-shadow-rm.gif | Bin 0 -> 50 bytes .../images/content/table-shadow-rt.gif | Bin 0 -> 97 bytes .../images/content/title-background-green.gif | Bin 0 -> 1204 bytes templates/tibiacom/images/favicon.ico | Bin 0 -> 7926 bytes templates/tibiacom/images/general/blank.gif | Bin 0 -> 807 bytes .../tibiacom/images/general/box-bottom.gif | Bin 0 -> 2015 bytes templates/tibiacom/images/general/box-top.gif | Bin 0 -> 2017 bytes templates/tibiacom/images/general/chain.gif | Bin 0 -> 845 bytes templates/tibiacom/images/general/minus.gif | Bin 0 -> 224 bytes templates/tibiacom/images/general/plus.gif | Bin 0 -> 224 bytes .../tibiacom/images/global/general/blank.gif | Bin 0 -> 807 bytes .../images/global/general/box-bottom.gif | Bin 0 -> 2015 bytes .../images/global/general/box-top.gif | Bin 0 -> 2017 bytes .../tibiacom/images/global/general/chain.gif | Bin 0 -> 845 bytes .../tibiacom/images/global/general/minus.gif | Bin 0 -> 224 bytes .../tibiacom/images/global/general/plus.gif | Bin 0 -> 224 bytes .../images/header/animated-statue.gif | Bin 0 -> 1703 bytes .../images/header/background-artwork-810.jpg | Bin 0 -> 77711 bytes .../images/header/background-artwork-830.jpg | Bin 0 -> 97827 bytes .../images/header/background-artwork-850.jpg | Bin 0 -> 161116 bytes .../images/header/background-artwork-854.jpg | Bin 0 -> 164464 bytes .../images/header/background-artwork-860.jpg | Bin 0 -> 197314 bytes .../header/background-artwork-slaski-830.jpg | Bin 0 -> 153310 bytes .../header/background-artwork-slaski-850.jpg | Bin 0 -> 186287 bytes .../background-artwork-slaski-winter.jpg | Bin 0 -> 131689 bytes templates/tibiacom/images/header/box-top.gif | Bin 0 -> 2017 bytes .../tibiacom/images/header/headline-404.gif | Bin 0 -> 891 bytes .../header/headline-accountmanagement.gif | Bin 0 -> 1128 bytes .../images/header/headline-addons.gif | Bin 0 -> 741 bytes .../images/header/headline-adminpanel.gif | Bin 0 -> 1002 bytes .../tibiacom/images/header/headline-bans.gif | Bin 0 -> 1269 bytes .../images/header/headline-bounty.gif | Bin 0 -> 1219 bytes .../images/header/headline-changelog.gif | Bin 0 -> 933 bytes .../images/header/headline-characters.gif | Bin 0 -> 716 bytes .../images/header/headline-commands.gif | Bin 0 -> 918 bytes .../images/header/headline-createaccount.gif | Bin 0 -> 876 bytes .../images/header/headline-creatures.gif | Bin 0 -> 671 bytes .../images/header/headline-downloads.gif | Bin 0 -> 971 bytes .../header/headline-experiencestages.gif | Bin 0 -> 1318 bytes .../header/headline-experiencetable.gif | Bin 0 -> 981 bytes .../tibiacom/images/header/headline-forum.gif | Bin 0 -> 693 bytes .../images/header/headline-gallery.gif | Bin 0 -> 796 bytes .../tibiacom/images/header/headline-gifts.gif | Bin 0 -> 637 bytes .../images/header/headline-guilds.gif | Bin 0 -> 555 bytes .../images/header/headline-highscores.gif | Bin 0 -> 768 bytes .../images/header/headline-houses.gif | Bin 0 -> 550 bytes .../images/header/headline-killstatistics.gif | Bin 0 -> 825 bytes .../images/header/headline-lastkills.gif | Bin 0 -> 804 bytes .../images/header/headline-lostaccount.gif | Bin 0 -> 756 bytes .../images/header/headline-movies.gif | Bin 0 -> 726 bytes .../tibiacom/images/header/headline-news.gif | Bin 0 -> 460 bytes .../images/header/headline-newsarchive.gif | Bin 0 -> 809 bytes .../images/header/headline-newsticker.gif | Bin 0 -> 739 bytes .../images/header/headline-online.gif | Bin 0 -> 871 bytes .../images/header/headline-points.gif | Bin 0 -> 697 bytes .../tibiacom/images/header/headline-polls.gif | Bin 0 -> 468 bytes .../images/header/headline-powergamers.gif | Bin 0 -> 1144 bytes .../tibiacom/images/header/headline-rules.gif | Bin 0 -> 724 bytes .../images/header/headline-screenshots.gif | Bin 0 -> 796 bytes .../images/header/headline-serverinfo.gif | Bin 0 -> 965 bytes .../images/header/headline-spells.gif | Bin 0 -> 513 bytes .../tibiacom/images/header/headline-team.gif | Bin 0 -> 609 bytes .../images/header/headline-template.psd | Bin 0 -> 157285 bytes .../tibiacom/images/header/headline-wars.gif | Bin 0 -> 990 bytes .../images/header/pedestal-and-online.gif | Bin 0 -> 7990 bytes .../header/tibia-logo-artwork-bottom.gif | Bin 0 -> 3151 bytes .../header/tibia-logo-artwork-string.gif | Bin 0 -> 359 bytes .../header/tibia-logo-artwork-top-slaski.gif | Bin 0 -> 13279 bytes .../images/header/tibia-logo-artwork-top.gif | Bin 0 -> 13736 bytes templates/tibiacom/images/letters/A.gif | Bin 0 -> 234 bytes templates/tibiacom/images/letters/B.gif | Bin 0 -> 246 bytes templates/tibiacom/images/letters/C.gif | Bin 0 -> 202 bytes templates/tibiacom/images/letters/D.gif | Bin 0 -> 280 bytes templates/tibiacom/images/letters/E.gif | Bin 0 -> 236 bytes templates/tibiacom/images/letters/F.gif | Bin 0 -> 225 bytes templates/tibiacom/images/letters/G.gif | Bin 0 -> 288 bytes templates/tibiacom/images/letters/H.gif | Bin 0 -> 264 bytes templates/tibiacom/images/letters/I.gif | Bin 0 -> 171 bytes templates/tibiacom/images/letters/J.gif | Bin 0 -> 203 bytes templates/tibiacom/images/letters/K.gif | Bin 0 -> 235 bytes templates/tibiacom/images/letters/L.gif | Bin 0 -> 190 bytes templates/tibiacom/images/letters/M.gif | Bin 0 -> 326 bytes templates/tibiacom/images/letters/N.gif | Bin 0 -> 245 bytes templates/tibiacom/images/letters/O.gif | Bin 0 -> 246 bytes templates/tibiacom/images/letters/P.gif | Bin 0 -> 261 bytes templates/tibiacom/images/letters/Q.gif | Bin 0 -> 261 bytes templates/tibiacom/images/letters/R.gif | Bin 0 -> 254 bytes templates/tibiacom/images/letters/S.gif | Bin 0 -> 203 bytes templates/tibiacom/images/letters/T.gif | Bin 0 -> 225 bytes templates/tibiacom/images/letters/U.gif | Bin 0 -> 242 bytes templates/tibiacom/images/letters/V.gif | Bin 0 -> 223 bytes templates/tibiacom/images/letters/W.gif | Bin 0 -> 282 bytes templates/tibiacom/images/letters/X.gif | Bin 0 -> 227 bytes templates/tibiacom/images/letters/Y.gif | Bin 0 -> 261 bytes templates/tibiacom/images/letters/Z.gif | Bin 0 -> 213 bytes .../images/loginbox/_sbutton_login.gif | Bin 0 -> 265 bytes .../images/loginbox/_sbutton_myaccount.gif | Bin 0 -> 388 bytes .../loginbox-font-create-account-over.gif | Bin 0 -> 803 bytes .../loginbox/loginbox-font-create-account.gif | Bin 0 -> 798 bytes .../loginbox/loginbox-font-logout-over.gif | Bin 0 -> 728 bytes .../images/loginbox/loginbox-font-logout.gif | Bin 0 -> 740 bytes .../images/loginbox/loginbox-font-welcome.gif | Bin 0 -> 781 bytes .../loginbox-font-you-are-not-logged-in.gif | Bin 0 -> 788 bytes .../loginbox-textfield-background.gif | Bin 0 -> 1218 bytes .../images/menu/button-background-over.gif | Bin 0 -> 2326 bytes .../images/menu/button-background.gif | Bin 0 -> 3543 bytes .../tibiacom/images/menu/green-light.gif | Bin 0 -> 50 bytes .../tibiacom/images/menu/icon-account.gif | Bin 0 -> 297 bytes .../images/menu/icon-activesubmenu.gif | Bin 0 -> 58 bytes .../tibiacom/images/menu/icon-community.gif | Bin 0 -> 594 bytes templates/tibiacom/images/menu/icon-forum.gif | Bin 0 -> 424 bytes .../tibiacom/images/menu/icon-library.gif | Bin 0 -> 394 bytes templates/tibiacom/images/menu/icon-news.gif | Bin 0 -> 312 bytes templates/tibiacom/images/menu/icon-shops.gif | Bin 0 -> 1267 bytes .../tibiacom/images/menu/label-account.gif | Bin 0 -> 603 bytes .../tibiacom/images/menu/label-community.gif | Bin 0 -> 600 bytes .../tibiacom/images/menu/label-forum.gif | Bin 0 -> 571 bytes .../tibiacom/images/menu/label-library.gif | Bin 0 -> 584 bytes templates/tibiacom/images/menu/label-news.gif | Bin 0 -> 475 bytes .../tibiacom/images/menu/label-shops.gif | Bin 0 -> 718 bytes templates/tibiacom/images/news/blank.gif | Bin 0 -> 807 bytes templates/tibiacom/images/news/delete.png | Bin 0 -> 30371 bytes .../tibiacom/images/news/delete_news.png | Bin 0 -> 1854 bytes templates/tibiacom/images/news/edit_news.png | Bin 0 -> 1803 bytes templates/tibiacom/images/news/icon_0.gif | Bin 0 -> 363 bytes .../tibiacom/images/news/icon_0_small.gif | Bin 0 -> 200 bytes templates/tibiacom/images/news/icon_1.gif | Bin 0 -> 216 bytes .../tibiacom/images/news/icon_1_small.gif | Bin 0 -> 201 bytes templates/tibiacom/images/news/icon_2.gif | Bin 0 -> 283 bytes .../tibiacom/images/news/icon_2_small.gif | Bin 0 -> 199 bytes templates/tibiacom/images/news/icon_3.gif | Bin 0 -> 321 bytes .../tibiacom/images/news/icon_3_small.gif | Bin 0 -> 202 bytes templates/tibiacom/images/news/icon_4.gif | Bin 0 -> 459 bytes .../tibiacom/images/news/icon_4_small.gif | Bin 0 -> 223 bytes .../images/news/newsheadline_background.gif | Bin 0 -> 1205 bytes .../images/themeboxes/admin/admin.png | Bin 0 -> 2591 bytes .../current-poll/currentpollbox.gif | Bin 0 -> 10720 bytes .../tibiacom/images/themeboxes/empty.png | Bin 0 -> 50617 bytes .../images/themeboxes/layout/layout.png | Bin 0 -> 2591 bytes .../themeboxes/newcomer/newcomerbox.gif | Bin 0 -> 17566 bytes .../images/themeboxes/premium/premiumbox.gif | Bin 0 -> 49851 bytes .../themeboxes/screenshot/screenshotbox.gif | Bin 0 -> 3879 bytes templates/tibiacom/index.php | 933 ++ templates/tibiacom/martel.ttf | Bin 0 -> 23212 bytes templates/tibiacom/news.php | 34 + templates/tibiacom/ticker.js | 36 + tools/admin.js | 45 + tools/basic.js | 9 + tools/cookies.js | 25 + tools/images/error.gif | Bin 0 -> 599 bytes tools/images/note.gif | Bin 0 -> 610 bytes tools/images/success.gif | Bin 0 -> 606 bytes tools/item.php | 7 + tools/jquery.datetimepicker.css | 418 + tools/jquery.datetimepicker.js | 1642 ++ tools/jquery.js | 4 + tools/jquery.qtip.js | 1964 +++ tools/messages.css | 41 + tools/signature/fonts/arial.ttf | Bin 0 -> 774476 bytes tools/signature/fonts/arialbd.ttf | Bin 0 -> 751104 bytes tools/signature/gd.class.php | 339 + .../images/backgrounds/background.PSD | Bin 0 -> 2610285 bytes .../signature/images/backgrounds/default.png | Bin 0 -> 158750 bytes tools/signature/images/bg.png | Bin 0 -> 2837 bytes tools/signature/images/empty.png | Bin 0 -> 1599 bytes tools/signature/images/equipments.png | Bin 0 -> 5813 bytes tools/signature/images/exp.png | Bin 0 -> 2803 bytes tools/signature/images/health.png | Bin 0 -> 2803 bytes tools/signature/images/healthfull.png | Bin 0 -> 1574 bytes tools/signature/images/hpicon.png | Bin 0 -> 585 bytes tools/signature/images/mana.png | Bin 0 -> 2803 bytes tools/signature/images/manafull.png | Bin 0 -> 931 bytes tools/signature/images/manaicon.png | Bin 0 -> 511 bytes tools/signature/images/nobackground.png | Bin 0 -> 6595 bytes tools/signature/images/nocharacter.png | Bin 0 -> 7361 bytes tools/signature/images/nogd.png | Bin 0 -> 5816 bytes tools/signature/images/noitem.png | Bin 0 -> 3014 bytes tools/signature/images/stats.png | Bin 0 -> 25106 bytes tools/signature/index.php | 15 + tools/signature/mango.php | 215 + tools/signature/tibian.php | 112 + tools/status.php | 21 + tools/tiny_mce/jquery.tinymce.js | 1 + tools/tiny_mce/langs/en.js | 218 + tools/tiny_mce/license.txt | 504 + tools/tiny_mce/plugins/advhr/css/advhr.css | 5 + tools/tiny_mce/plugins/advhr/editor_plugin.js | 1 + .../plugins/advhr/editor_plugin_src.js | 57 + tools/tiny_mce/plugins/advhr/js/rule.js | 43 + tools/tiny_mce/plugins/advhr/langs/en_dlg.js | 7 + tools/tiny_mce/plugins/advhr/rule.htm | 58 + .../plugins/advimage/css/advimage.css | 13 + .../plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 50 + tools/tiny_mce/plugins/advimage/image.htm | 235 + .../tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes tools/tiny_mce/plugins/advimage/js/image.js | 445 + .../tiny_mce/plugins/advimage/langs/en_dlg.js | 45 + .../tiny_mce/plugins/advlink/css/advlink.css | 8 + .../tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 61 + tools/tiny_mce/plugins/advlink/js/advlink.js | 528 + .../tiny_mce/plugins/advlink/langs/en_dlg.js | 54 + tools/tiny_mce/plugins/advlink/link.htm | 338 + .../tiny_mce/plugins/advlist/editor_plugin.js | 1 + .../plugins/advlist/editor_plugin_src.js | 154 + .../plugins/autolink/editor_plugin.js | 1 + .../plugins/autolink/editor_plugin_src.js | 156 + .../plugins/autoresize/editor_plugin.js | 1 + .../plugins/autoresize/editor_plugin_src.js | 119 + .../plugins/autosave/editor_plugin.js | 1 + .../plugins/autosave/editor_plugin_src.js | 422 + tools/tiny_mce/plugins/autosave/langs/en.js | 4 + .../tiny_mce/plugins/bbcode/editor_plugin.js | 1 + .../plugins/bbcode/editor_plugin_src.js | 120 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 156 + .../plugins/directionality/editor_plugin.js | 1 + .../directionality/editor_plugin_src.js | 82 + .../plugins/emotions/editor_plugin.js | 1 + .../plugins/emotions/editor_plugin_src.js | 43 + tools/tiny_mce/plugins/emotions/emotions.htm | 41 + .../plugins/emotions/img/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emotions/img/smiley-cry.gif | Bin 0 -> 329 bytes .../emotions/img/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emotions/img/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes .../plugins/emotions/img/smiley-frown.gif | Bin 0 -> 340 bytes .../plugins/emotions/img/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emotions/img/smiley-kiss.gif | Bin 0 -> 338 bytes .../plugins/emotions/img/smiley-laughing.gif | Bin 0 -> 344 bytes .../emotions/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emotions/img/smiley-sealed.gif | Bin 0 -> 325 bytes .../plugins/emotions/img/smiley-smile.gif | Bin 0 -> 345 bytes .../plugins/emotions/img/smiley-surprised.gif | Bin 0 -> 342 bytes .../emotions/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../plugins/emotions/img/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emotions/img/smiley-wink.gif | Bin 0 -> 351 bytes .../plugins/emotions/img/smiley-yell.gif | Bin 0 -> 336 bytes .../tiny_mce/plugins/emotions/js/emotions.js | 22 + .../tiny_mce/plugins/emotions/langs/en_dlg.js | 20 + tools/tiny_mce/plugins/example/dialog.htm | 22 + .../tiny_mce/plugins/example/editor_plugin.js | 1 + .../plugins/example/editor_plugin_src.js | 84 + .../tiny_mce/plugins/example/img/example.gif | Bin 0 -> 87 bytes tools/tiny_mce/plugins/example/js/dialog.js | 19 + tools/tiny_mce/plugins/example/langs/en.js | 3 + .../tiny_mce/plugins/example/langs/en_dlg.js | 3 + .../plugins/fullpage/css/fullpage.css | 182 + .../plugins/fullpage/editor_plugin.js | 1 + .../plugins/fullpage/editor_plugin_src.js | 182 + tools/tiny_mce/plugins/fullpage/fullpage.htm | 571 + .../tiny_mce/plugins/fullpage/js/fullpage.js | 471 + .../tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 151 + .../plugins/fullscreen/fullscreen.htm | 109 + .../tiny_mce/plugins/iespell/editor_plugin.js | 1 + .../plugins/iespell/editor_plugin_src.js | 54 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 696 + .../skins/clearlooks2/img/alert.gif | Bin 0 -> 818 bytes .../skins/clearlooks2/img/button.gif | Bin 0 -> 280 bytes .../skins/clearlooks2/img/buttons.gif | Bin 0 -> 1195 bytes .../skins/clearlooks2/img/confirm.gif | Bin 0 -> 915 bytes .../skins/clearlooks2/img/corners.gif | Bin 0 -> 911 bytes .../skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes .../skins/clearlooks2/img/vertical.gif | Bin 0 -> 92 bytes .../inlinepopups/skins/clearlooks2/window.css | 100 + .../plugins/inlinepopups/template.htm | 387 + .../plugins/insertdatetime/editor_plugin.js | 1 + .../insertdatetime/editor_plugin_src.js | 83 + tools/tiny_mce/plugins/layer/editor_plugin.js | 1 + .../plugins/layer/editor_plugin_src.js | 212 + .../plugins/legacyoutput/editor_plugin.js | 1 + .../plugins/legacyoutput/editor_plugin_src.js | 136 + tools/tiny_mce/plugins/lists/editor_plugin.js | 1 + .../plugins/lists/editor_plugin_src.js | 617 + tools/tiny_mce/plugins/media/css/content.css | 6 + tools/tiny_mce/plugins/media/css/media.css | 16 + tools/tiny_mce/plugins/media/editor_plugin.js | 1 + .../plugins/media/editor_plugin_src.js | 414 + tools/tiny_mce/plugins/media/img/flash.gif | Bin 0 -> 241 bytes .../tiny_mce/plugins/media/img/flv_player.swf | Bin 0 -> 11668 bytes .../tiny_mce/plugins/media/img/quicktime.gif | Bin 0 -> 303 bytes .../tiny_mce/plugins/media/img/realmedia.gif | Bin 0 -> 439 bytes .../tiny_mce/plugins/media/img/shockwave.gif | Bin 0 -> 387 bytes tools/tiny_mce/plugins/media/img/trans.gif | Bin 0 -> 43 bytes .../plugins/media/img/windowsmedia.gif | Bin 0 -> 415 bytes tools/tiny_mce/plugins/media/js/embed.js | 73 + tools/tiny_mce/plugins/media/js/media.js | 630 + tools/tiny_mce/plugins/media/langs/en_dlg.js | 103 + tools/tiny_mce/plugins/media/media.htm | 818 + .../plugins/nonbreaking/editor_plugin.js | 1 + .../plugins/nonbreaking/editor_plugin_src.js | 53 + .../plugins/noneditable/editor_plugin.js | 1 + .../plugins/noneditable/editor_plugin_src.js | 90 + .../plugins/pagebreak/css/content.css | 1 + .../plugins/pagebreak/editor_plugin.js | 1 + .../plugins/pagebreak/editor_plugin_src.js | 77 + .../plugins/pagebreak/img/pagebreak.gif | Bin 0 -> 325 bytes .../tiny_mce/plugins/pagebreak/img/trans.gif | Bin 0 -> 43 bytes tools/tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 1035 ++ tools/tiny_mce/plugins/paste/js/pastetext.js | 36 + tools/tiny_mce/plugins/paste/js/pasteword.js | 51 + tools/tiny_mce/plugins/paste/langs/en_dlg.js | 5 + tools/tiny_mce/plugins/paste/pastetext.htm | 27 + tools/tiny_mce/plugins/paste/pasteword.htm | 21 + .../tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 53 + tools/tiny_mce/plugins/preview/example.html | 28 + .../plugins/preview/jscripts/embed.js | 73 + tools/tiny_mce/plugins/preview/preview.html | 17 + tools/tiny_mce/plugins/print/editor_plugin.js | 1 + .../plugins/print/editor_plugin_src.js | 34 + tools/tiny_mce/plugins/save/editor_plugin.js | 1 + .../plugins/save/editor_plugin_src.js | 101 + .../searchreplace/css/searchreplace.css | 6 + .../plugins/searchreplace/editor_plugin.js | 1 + .../searchreplace/editor_plugin_src.js | 57 + .../plugins/searchreplace/js/searchreplace.js | 140 + .../plugins/searchreplace/langs/en_dlg.js | 16 + .../plugins/searchreplace/searchreplace.htm | 100 + .../plugins/spellchecker/css/content.css | 1 + .../plugins/spellchecker/editor_plugin.js | 1 + .../plugins/spellchecker/editor_plugin_src.js | 417 + .../plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes tools/tiny_mce/plugins/style/css/props.css | 13 + tools/tiny_mce/plugins/style/editor_plugin.js | 1 + .../plugins/style/editor_plugin_src.js | 55 + tools/tiny_mce/plugins/style/js/props.js | 641 + tools/tiny_mce/plugins/style/langs/en_dlg.js | 70 + tools/tiny_mce/plugins/style/props.htm | 838 + .../plugins/tabfocus/editor_plugin.js | 1 + .../plugins/tabfocus/editor_plugin_src.js | 114 + tools/tiny_mce/plugins/table/cell.htm | 178 + tools/tiny_mce/plugins/table/css/cell.css | 17 + tools/tiny_mce/plugins/table/css/row.css | 25 + tools/tiny_mce/plugins/table/css/table.css | 13 + tools/tiny_mce/plugins/table/editor_plugin.js | 1 + .../plugins/table/editor_plugin_src.js | 1139 ++ tools/tiny_mce/plugins/table/js/cell.js | 286 + .../tiny_mce/plugins/table/js/merge_cells.js | 27 + tools/tiny_mce/plugins/table/js/row.js | 237 + tools/tiny_mce/plugins/table/js/table.js | 454 + tools/tiny_mce/plugins/table/langs/en_dlg.js | 74 + tools/tiny_mce/plugins/table/merge_cells.htm | 32 + tools/tiny_mce/plugins/table/row.htm | 157 + tools/tiny_mce/plugins/table/table.htm | 188 + tools/tiny_mce/plugins/template/blank.htm | 12 + .../plugins/template/css/template.css | 23 + .../plugins/template/editor_plugin.js | 1 + .../plugins/template/editor_plugin_src.js | 159 + .../tiny_mce/plugins/template/js/template.js | 106 + .../tiny_mce/plugins/template/langs/en_dlg.js | 15 + tools/tiny_mce/plugins/template/template.htm | 31 + .../plugins/visualchars/editor_plugin.js | 1 + .../plugins/visualchars/editor_plugin_src.js | 83 + .../plugins/wordcount/editor_plugin.js | 1 + .../plugins/wordcount/editor_plugin_src.js | 98 + tools/tiny_mce/plugins/xhtmlxtras/abbr.htm | 142 + tools/tiny_mce/plugins/xhtmlxtras/acronym.htm | 142 + .../plugins/xhtmlxtras/attributes.htm | 149 + tools/tiny_mce/plugins/xhtmlxtras/cite.htm | 142 + .../plugins/xhtmlxtras/css/attributes.css | 11 + .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 + tools/tiny_mce/plugins/xhtmlxtras/del.htm | 162 + .../plugins/xhtmlxtras/editor_plugin.js | 1 + .../plugins/xhtmlxtras/editor_plugin_src.js | 132 + tools/tiny_mce/plugins/xhtmlxtras/ins.htm | 162 + tools/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 + .../tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 + .../plugins/xhtmlxtras/js/attributes.js | 126 + tools/tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 + tools/tiny_mce/plugins/xhtmlxtras/js/del.js | 53 + .../plugins/xhtmlxtras/js/element_common.js | 231 + tools/tiny_mce/plugins/xhtmlxtras/js/ins.js | 52 + .../plugins/xhtmlxtras/langs/en_dlg.js | 32 + tools/tiny_mce/themes/advanced/about.htm | 48 + tools/tiny_mce/themes/advanced/anchor.htm | 26 + tools/tiny_mce/themes/advanced/charmap.htm | 53 + .../tiny_mce/themes/advanced/color_picker.htm | 74 + .../themes/advanced/editor_template.js | 1 + .../themes/advanced/editor_template_src.js | 1326 ++ tools/tiny_mce/themes/advanced/image.htm | 80 + .../themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes tools/tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11794 bytes tools/tiny_mce/themes/advanced/js/about.js | 73 + tools/tiny_mce/themes/advanced/js/anchor.js | 37 + tools/tiny_mce/themes/advanced/js/charmap.js | 353 + .../themes/advanced/js/color_picker.js | 329 + tools/tiny_mce/themes/advanced/js/image.js | 247 + tools/tiny_mce/themes/advanced/js/link.js | 156 + .../themes/advanced/js/source_editor.js | 56 + tools/tiny_mce/themes/advanced/langs/en.js | 68 + .../tiny_mce/themes/advanced/langs/en_dlg.js | 53 + tools/tiny_mce/themes/advanced/link.htm | 58 + tools/tiny_mce/themes/advanced/shortcuts.htm | 47 + .../themes/advanced/skins/default/content.css | 37 + .../themes/advanced/skins/default/dialog.css | 117 + .../advanced/skins/default/img/buttons.png | Bin 0 -> 3274 bytes .../advanced/skins/default/img/items.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes .../advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes .../advanced/skins/default/img/tabs.gif | Bin 0 -> 1326 bytes .../themes/advanced/skins/default/ui.css | 213 + .../advanced/skins/highcontrast/content.css | 23 + .../advanced/skins/highcontrast/dialog.css | 105 + .../themes/advanced/skins/highcontrast/ui.css | 101 + .../themes/advanced/skins/o2k7/content.css | 36 + .../themes/advanced/skins/o2k7/dialog.css | 116 + .../advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 5859 bytes .../skins/o2k7/img/button_bg_black.png | Bin 0 -> 3736 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 0 -> 5358 bytes .../themes/advanced/skins/o2k7/ui.css | 215 + .../themes/advanced/skins/o2k7/ui_black.css | 8 + .../themes/advanced/skins/o2k7/ui_silver.css | 5 + .../themes/advanced/source_editor.htm | 25 + .../tiny_mce/themes/simple/editor_template.js | 1 + .../themes/simple/editor_template_src.js | 85 + tools/tiny_mce/themes/simple/img/icons.gif | Bin 0 -> 1440 bytes tools/tiny_mce/themes/simple/langs/en.js | 11 + .../themes/simple/skins/default/content.css | 25 + .../themes/simple/skins/default/ui.css | 32 + .../themes/simple/skins/o2k7/content.css | 17 + .../simple/skins/o2k7/img/button_bg.png | Bin 0 -> 5102 bytes .../tiny_mce/themes/simple/skins/o2k7/ui.css | 35 + tools/tiny_mce/tiny_mce.js | 1 + tools/tiny_mce/tiny_mce_popup.js | 5 + tools/tiny_mce/tiny_mce_src.js | 13913 ++++++++++++++++ tools/tiny_mce/utils/editable_selects.js | 70 + tools/tiny_mce/utils/form_utils.js | 206 + tools/tiny_mce/utils/mctabs.js | 151 + tools/tiny_mce/utils/validate.js | 252 + tools/validate.php | 93 + 2016 files changed, 114481 insertions(+) create mode 100644 .htaccess create mode 100644 LICENSE create mode 100644 README create mode 100644 admin/.htaccess create mode 100644 admin/includes/functions.php create mode 100644 admin/index.php create mode 100644 admin/templates/clean/style.css create mode 100644 admin/templates/clean/template.php create mode 100644 admin/templates/stylish/Kopia index.html create mode 100644 admin/templates/stylish/blank.html create mode 100644 admin/templates/stylish/css/Copy of theme.css create mode 100644 admin/templates/stylish/css/ie-sucks.css create mode 100644 admin/templates/stylish/css/iepngfix.htc create mode 100644 admin/templates/stylish/css/style.css create mode 100644 admin/templates/stylish/css/switch.css create mode 100644 admin/templates/stylish/css/theme.css create mode 100644 admin/templates/stylish/css/theme1.css create mode 100644 admin/templates/stylish/css/theme2.css create mode 100644 admin/templates/stylish/css/theme3.css create mode 100644 admin/templates/stylish/css/theme4.css create mode 100644 admin/templates/stylish/img/bg.jpg create mode 100644 admin/templates/stylish/img/bg_blue.jpg create mode 100644 admin/templates/stylish/img/bg_brown.jpg create mode 100644 admin/templates/stylish/img/bg_light_green.jpg create mode 100644 admin/templates/stylish/img/bg_menu_blue.jpg create mode 100644 admin/templates/stylish/img/bg_menu_green.jpg create mode 100644 admin/templates/stylish/img/bg_menu_mix.jpg create mode 100644 admin/templates/stylish/img/bg_menu_red.jpg create mode 100644 admin/templates/stylish/img/bg_mix.jpg create mode 100644 admin/templates/stylish/img/form_blue.gif create mode 100644 admin/templates/stylish/img/form_brown.gif create mode 100644 admin/templates/stylish/img/form_green.gif create mode 100644 admin/templates/stylish/img/form_mix.gif create mode 100644 admin/templates/stylish/img/form_red.gif create mode 100644 admin/templates/stylish/img/graph.jpg create mode 100644 admin/templates/stylish/img/graph2.jpg create mode 100644 admin/templates/stylish/img/icons/add.png create mode 100644 admin/templates/stylish/img/icons/application_add.png create mode 100644 admin/templates/stylish/img/icons/arrow_down.png create mode 100644 admin/templates/stylish/img/icons/arrow_down_mini.gif create mode 100644 admin/templates/stylish/img/icons/arrow_left.gif create mode 100644 admin/templates/stylish/img/icons/arrow_right.gif create mode 100644 admin/templates/stylish/img/icons/brick.png create mode 100644 admin/templates/stylish/img/icons/brick_edit.png create mode 100644 admin/templates/stylish/img/icons/bricks.png create mode 100644 admin/templates/stylish/img/icons/bricks_gear.png create mode 100644 admin/templates/stylish/img/icons/car.png create mode 100644 admin/templates/stylish/img/icons/cart.png create mode 100644 admin/templates/stylish/img/icons/cart_add.png create mode 100644 admin/templates/stylish/img/icons/cog.png create mode 100644 admin/templates/stylish/img/icons/coins.png create mode 100644 admin/templates/stylish/img/icons/color_swatch.png create mode 100644 admin/templates/stylish/img/icons/expand.jpg create mode 100644 admin/templates/stylish/img/icons/feed.png create mode 100644 admin/templates/stylish/img/icons/folder.png create mode 100644 admin/templates/stylish/img/icons/folder_page.png create mode 100644 admin/templates/stylish/img/icons/folder_page_add.png create mode 100644 admin/templates/stylish/img/icons/folder_table.png create mode 100644 admin/templates/stylish/img/icons/group.png create mode 100644 admin/templates/stylish/img/icons/house.png create mode 100644 admin/templates/stylish/img/icons/magnifier.png create mode 100644 admin/templates/stylish/img/icons/page_add.png create mode 100644 admin/templates/stylish/img/icons/page_gear.png create mode 100644 admin/templates/stylish/img/icons/page_white_delete.png create mode 100644 admin/templates/stylish/img/icons/page_white_edit.png create mode 100644 admin/templates/stylish/img/icons/page_white_link.png create mode 100644 admin/templates/stylish/img/icons/page_white_text_width.png create mode 100644 admin/templates/stylish/img/icons/report.png create mode 100644 admin/templates/stylish/img/icons/report_link.png create mode 100644 admin/templates/stylish/img/icons/rss.png create mode 100644 admin/templates/stylish/img/icons/user.png create mode 100644 admin/templates/stylish/img/icons/user_add.png create mode 100644 admin/templates/stylish/img/icons/user_delete.png create mode 100644 admin/templates/stylish/img/icons/user_edit.png create mode 100644 admin/templates/stylish/img/icons/world.png create mode 100644 admin/templates/stylish/psd/template.psd create mode 100644 admin/templates/stylish/template.php create mode 100644 admin/templates/stylish/users.html create mode 100644 admin/tools/phpinfo.php create mode 100644 admin/tools/status.php create mode 100644 common.php create mode 100644 config.local.php create mode 100644 config.php create mode 100644 images/.htaccess create mode 100644 images/addons/Female_Assassin_1.gif create mode 100644 images/addons/Female_Assassin_2.gif create mode 100644 images/addons/Female_Barbarian_1.gif create mode 100644 images/addons/Female_Barbarian_2.gif create mode 100644 images/addons/Female_Beggar_1.gif create mode 100644 images/addons/Female_Beggar_2.gif create mode 100644 images/addons/Female_Brotherhood_1.gif create mode 100644 images/addons/Female_Brotherhood_2.gif create mode 100644 images/addons/Female_Citizen_1.gif create mode 100644 images/addons/Female_Citizen_2.gif create mode 100644 images/addons/Female_Demonhunter_1.gif create mode 100644 images/addons/Female_Demonhunter_2.gif create mode 100644 images/addons/Female_Druid_1.gif create mode 100644 images/addons/Female_Druid_2.gif create mode 100644 images/addons/Female_Hunter_1.gif create mode 100644 images/addons/Female_Hunter_2.gif create mode 100644 images/addons/Female_Jester_1.gif create mode 100644 images/addons/Female_Jester_2.gif create mode 100644 images/addons/Female_Knight_1.gif create mode 100644 images/addons/Female_Knight_2.gif create mode 100644 images/addons/Female_Mage_1.gif create mode 100644 images/addons/Female_Mage_2.gif create mode 100644 images/addons/Female_Nightmare_1.gif create mode 100644 images/addons/Female_Nightmare_2.gif create mode 100644 images/addons/Female_Nobleman_1.gif create mode 100644 images/addons/Female_Nobleman_2.gif create mode 100644 images/addons/Female_Norseman_1.gif create mode 100644 images/addons/Female_Norseman_2.gif create mode 100644 images/addons/Female_Oriental_1.gif create mode 100644 images/addons/Female_Oriental_2.gif create mode 100644 images/addons/Female_Pirate_1.gif create mode 100644 images/addons/Female_Pirate_2.gif create mode 100644 images/addons/Female_Shaman_1.gif create mode 100644 images/addons/Female_Shaman_2.gif create mode 100644 images/addons/Female_Summoner_1.gif create mode 100644 images/addons/Female_Summoner_2.gif create mode 100644 images/addons/Female_Warrior_1.gif create mode 100644 images/addons/Female_Warrior_2.gif create mode 100644 images/addons/Female_Wizard_1.gif create mode 100644 images/addons/Female_Wizard_2.gif create mode 100644 images/addons/Male_Assassin_1.gif create mode 100644 images/addons/Male_Assassin_2.gif create mode 100644 images/addons/Male_Barbarian_1.gif create mode 100644 images/addons/Male_Barbarian_2.gif create mode 100644 images/addons/Male_Beggar_1.gif create mode 100644 images/addons/Male_Beggar_2.gif create mode 100644 images/addons/Male_Brotherhood_1.gif create mode 100644 images/addons/Male_Brotherhood_2.gif create mode 100644 images/addons/Male_Citizen_1.gif create mode 100644 images/addons/Male_Citizen_2.gif create mode 100644 images/addons/Male_Demonhunter_1.gif create mode 100644 images/addons/Male_Demonhunter_2.gif create mode 100644 images/addons/Male_Druid_1.gif create mode 100644 images/addons/Male_Druid_2.gif create mode 100644 images/addons/Male_Hunter_1.gif create mode 100644 images/addons/Male_Hunter_2.gif create mode 100644 images/addons/Male_Jester_1.gif create mode 100644 images/addons/Male_Jester_2.gif create mode 100644 images/addons/Male_Knight_1.gif create mode 100644 images/addons/Male_Knight_2.gif create mode 100644 images/addons/Male_Mage_1.gif create mode 100644 images/addons/Male_Mage_2.gif create mode 100644 images/addons/Male_Nightmare_1.gif create mode 100644 images/addons/Male_Nightmare_2.gif create mode 100644 images/addons/Male_Nobleman_1.gif create mode 100644 images/addons/Male_Nobleman_2.gif create mode 100644 images/addons/Male_Norseman_1.gif create mode 100644 images/addons/Male_Norseman_2.gif create mode 100644 images/addons/Male_Oriental_1.gif create mode 100644 images/addons/Male_Oriental_2.gif create mode 100644 images/addons/Male_Pirate_1.gif create mode 100644 images/addons/Male_Pirate_2.gif create mode 100644 images/addons/Male_Shaman_1.gif create mode 100644 images/addons/Male_Shaman_2.gif create mode 100644 images/addons/Male_Summoner_1.gif create mode 100644 images/addons/Male_Summoner_2.gif create mode 100644 images/addons/Male_Warrior_1.gif create mode 100644 images/addons/Male_Warrior_2.gif create mode 100644 images/addons/Male_Wizard_1.gif create mode 100644 images/addons/Male_Wizard_2.gif create mode 100644 images/arrow_left.gif create mode 100644 images/arrow_right.gif create mode 100644 images/arrow_up.gif create mode 100644 images/blackskull.gif create mode 100644 images/changelog/added.png create mode 100644 images/changelog/changed.png create mode 100644 images/changelog/fixed.png create mode 100644 images/changelog/removed.png create mode 100644 images/changelog/server.png create mode 100644 images/changelog/website.png create mode 100644 images/del.png create mode 100644 images/druid.png create mode 100644 images/edit.png create mode 100644 images/error.png create mode 100644 images/false.png create mode 100644 images/flags/ad.gif create mode 100644 images/flags/ae.gif create mode 100644 images/flags/af.gif create mode 100644 images/flags/ag.gif create mode 100644 images/flags/ai.gif create mode 100644 images/flags/al.gif create mode 100644 images/flags/am.gif create mode 100644 images/flags/an.gif create mode 100644 images/flags/ao.gif create mode 100644 images/flags/aq.gif create mode 100644 images/flags/ar.gif create mode 100644 images/flags/as.gif create mode 100644 images/flags/at.gif create mode 100644 images/flags/au.gif create mode 100644 images/flags/aw.gif create mode 100644 images/flags/ax.gif create mode 100644 images/flags/az.gif create mode 100644 images/flags/ba.gif create mode 100644 images/flags/bb.gif create mode 100644 images/flags/bd.gif create mode 100644 images/flags/be.gif create mode 100644 images/flags/bf.gif create mode 100644 images/flags/bg.gif create mode 100644 images/flags/bh.gif create mode 100644 images/flags/bi.gif create mode 100644 images/flags/bj.gif create mode 100644 images/flags/bm.gif create mode 100644 images/flags/bn.gif create mode 100644 images/flags/bo.gif create mode 100644 images/flags/br.gif create mode 100644 images/flags/bs.gif create mode 100644 images/flags/bt.gif create mode 100644 images/flags/bv.gif create mode 100644 images/flags/bw.gif create mode 100644 images/flags/by.gif create mode 100644 images/flags/bz.gif create mode 100644 images/flags/ca.gif create mode 100644 images/flags/catalonia.gif create mode 100644 images/flags/cc.gif create mode 100644 images/flags/cd.gif create mode 100644 images/flags/cf.gif create mode 100644 images/flags/cg.gif create mode 100644 images/flags/ch.gif create mode 100644 images/flags/ci.gif create mode 100644 images/flags/ck.gif create mode 100644 images/flags/cl.gif create mode 100644 images/flags/cm.gif create mode 100644 images/flags/cn.gif create mode 100644 images/flags/co.gif create mode 100644 images/flags/cr.gif create mode 100644 images/flags/cs.gif create mode 100644 images/flags/cu.gif create mode 100644 images/flags/cv.gif create mode 100644 images/flags/cx.gif create mode 100644 images/flags/cy.gif create mode 100644 images/flags/cz.gif create mode 100644 images/flags/de.gif create mode 100644 images/flags/dj.gif create mode 100644 images/flags/dk.gif create mode 100644 images/flags/dm.gif create mode 100644 images/flags/do.gif create mode 100644 images/flags/dz.gif create mode 100644 images/flags/ec.gif create mode 100644 images/flags/ee.gif create mode 100644 images/flags/eg.gif create mode 100644 images/flags/eh.gif create mode 100644 images/flags/england.gif create mode 100644 images/flags/er.gif create mode 100644 images/flags/es.gif create mode 100644 images/flags/et.gif create mode 100644 images/flags/europeanunion.gif create mode 100644 images/flags/fam.gif create mode 100644 images/flags/fi.gif create mode 100644 images/flags/fj.gif create mode 100644 images/flags/fk.gif create mode 100644 images/flags/fm.gif create mode 100644 images/flags/fo.gif create mode 100644 images/flags/fr.gif create mode 100644 images/flags/ga.gif create mode 100644 images/flags/gb.gif create mode 100644 images/flags/gd.gif create mode 100644 images/flags/ge.gif create mode 100644 images/flags/gf.gif create mode 100644 images/flags/gh.gif create mode 100644 images/flags/gi.gif create mode 100644 images/flags/gl.gif create mode 100644 images/flags/gm.gif create mode 100644 images/flags/gn.gif create mode 100644 images/flags/gp.gif create mode 100644 images/flags/gq.gif create mode 100644 images/flags/gr.gif create mode 100644 images/flags/gs.gif create mode 100644 images/flags/gt.gif create mode 100644 images/flags/gu.gif create mode 100644 images/flags/gw.gif create mode 100644 images/flags/gy.gif create mode 100644 images/flags/hk.gif create mode 100644 images/flags/hm.gif create mode 100644 images/flags/hn.gif create mode 100644 images/flags/hr.gif create mode 100644 images/flags/ht.gif create mode 100644 images/flags/hu.gif create mode 100644 images/flags/id.gif create mode 100644 images/flags/ie.gif create mode 100644 images/flags/il.gif create mode 100644 images/flags/in.gif create mode 100644 images/flags/io.gif create mode 100644 images/flags/iq.gif create mode 100644 images/flags/ir.gif create mode 100644 images/flags/is.gif create mode 100644 images/flags/it.gif create mode 100644 images/flags/jm.gif create mode 100644 images/flags/jo.gif create mode 100644 images/flags/jp.gif create mode 100644 images/flags/ke.gif create mode 100644 images/flags/kg.gif create mode 100644 images/flags/kh.gif create mode 100644 images/flags/ki.gif create mode 100644 images/flags/km.gif create mode 100644 images/flags/kn.gif create mode 100644 images/flags/kp.gif create mode 100644 images/flags/kr.gif create mode 100644 images/flags/kw.gif create mode 100644 images/flags/ky.gif create mode 100644 images/flags/kz.gif create mode 100644 images/flags/la.gif create mode 100644 images/flags/lb.gif create mode 100644 images/flags/lc.gif create mode 100644 images/flags/li.gif create mode 100644 images/flags/lk.gif create mode 100644 images/flags/lr.gif create mode 100644 images/flags/ls.gif create mode 100644 images/flags/lt.gif create mode 100644 images/flags/lu.gif create mode 100644 images/flags/lv.gif create mode 100644 images/flags/ly.gif create mode 100644 images/flags/ma.gif create mode 100644 images/flags/mc.gif create mode 100644 images/flags/md.gif create mode 100644 images/flags/me.gif create mode 100644 images/flags/mg.gif create mode 100644 images/flags/mh.gif create mode 100644 images/flags/mk.gif create mode 100644 images/flags/ml.gif create mode 100644 images/flags/mm.gif create mode 100644 images/flags/mn.gif create mode 100644 images/flags/mo.gif create mode 100644 images/flags/mp.gif create mode 100644 images/flags/mq.gif create mode 100644 images/flags/mr.gif create mode 100644 images/flags/ms.gif create mode 100644 images/flags/mt.gif create mode 100644 images/flags/mu.gif create mode 100644 images/flags/mv.gif create mode 100644 images/flags/mw.gif create mode 100644 images/flags/mx.gif create mode 100644 images/flags/my.gif create mode 100644 images/flags/mz.gif create mode 100644 images/flags/na.gif create mode 100644 images/flags/nc.gif create mode 100644 images/flags/ne.gif create mode 100644 images/flags/nf.gif create mode 100644 images/flags/ng.gif create mode 100644 images/flags/ni.gif create mode 100644 images/flags/nl.gif create mode 100644 images/flags/no.gif create mode 100644 images/flags/np.gif create mode 100644 images/flags/nr.gif create mode 100644 images/flags/nu.gif create mode 100644 images/flags/nz.gif create mode 100644 images/flags/om.gif create mode 100644 images/flags/pa.gif create mode 100644 images/flags/pe.gif create mode 100644 images/flags/pf.gif create mode 100644 images/flags/pg.gif create mode 100644 images/flags/ph.gif create mode 100644 images/flags/pk.gif create mode 100644 images/flags/pl.gif create mode 100644 images/flags/pm.gif create mode 100644 images/flags/pn.gif create mode 100644 images/flags/pr.gif create mode 100644 images/flags/ps.gif create mode 100644 images/flags/pt.gif create mode 100644 images/flags/pw.gif create mode 100644 images/flags/py.gif create mode 100644 images/flags/qa.gif create mode 100644 images/flags/re.gif create mode 100644 images/flags/ro.gif create mode 100644 images/flags/rs.gif create mode 100644 images/flags/ru.gif create mode 100644 images/flags/rw.gif create mode 100644 images/flags/sa.gif create mode 100644 images/flags/sb.gif create mode 100644 images/flags/sc.gif create mode 100644 images/flags/scotland.gif create mode 100644 images/flags/sd.gif create mode 100644 images/flags/se.gif create mode 100644 images/flags/sg.gif create mode 100644 images/flags/sh.gif create mode 100644 images/flags/si.gif create mode 100644 images/flags/sj.gif create mode 100644 images/flags/sk.gif create mode 100644 images/flags/sl.gif create mode 100644 images/flags/sm.gif create mode 100644 images/flags/sn.gif create mode 100644 images/flags/so.gif create mode 100644 images/flags/sr.gif create mode 100644 images/flags/st.gif create mode 100644 images/flags/sv.gif create mode 100644 images/flags/sy.gif create mode 100644 images/flags/sz.gif create mode 100644 images/flags/tc.gif create mode 100644 images/flags/td.gif create mode 100644 images/flags/tf.gif create mode 100644 images/flags/tg.gif create mode 100644 images/flags/th.gif create mode 100644 images/flags/tj.gif create mode 100644 images/flags/tk.gif create mode 100644 images/flags/tl.gif create mode 100644 images/flags/tm.gif create mode 100644 images/flags/tn.gif create mode 100644 images/flags/to.gif create mode 100644 images/flags/tr.gif create mode 100644 images/flags/tt.gif create mode 100644 images/flags/tv.gif create mode 100644 images/flags/tw.gif create mode 100644 images/flags/tz.gif create mode 100644 images/flags/ua.gif create mode 100644 images/flags/ug.gif create mode 100644 images/flags/um.gif create mode 100644 images/flags/us.gif create mode 100644 images/flags/uy.gif create mode 100644 images/flags/uz.gif create mode 100644 images/flags/va.gif create mode 100644 images/flags/vc.gif create mode 100644 images/flags/ve.gif create mode 100644 images/flags/vg.gif create mode 100644 images/flags/vi.gif create mode 100644 images/flags/vn.gif create mode 100644 images/flags/vu.gif create mode 100644 images/flags/wales.gif create mode 100644 images/flags/wf.gif create mode 100644 images/flags/ws.gif create mode 100644 images/flags/ye.gif create mode 100644 images/flags/yt.gif create mode 100644 images/flags/za.gif create mode 100644 images/flags/zm.gif create mode 100644 images/flags/zw.gif create mode 100644 images/forum/post.gif create mode 100644 images/forum/smile/1.gif create mode 100644 images/forum/smile/10.gif create mode 100644 images/forum/smile/2.gif create mode 100644 images/forum/smile/3.gif create mode 100644 images/forum/smile/4.gif create mode 100644 images/forum/smile/5.gif create mode 100644 images/forum/smile/6.gif create mode 100644 images/forum/smile/7.gif create mode 100644 images/forum/smile/8.gif create mode 100644 images/forum/smile/9.gif create mode 100644 images/forum/topic.gif create mode 100644 images/green_skull.gif create mode 100644 images/guilds/default.gif create mode 100644 images/hist.png create mode 100644 images/houses/default.jpg create mode 100644 images/icons/add.png create mode 100644 images/icons/application_add.png create mode 100644 images/icons/arrow_down.gif create mode 100644 images/icons/arrow_down.png create mode 100644 images/icons/arrow_down_mini.gif create mode 100644 images/icons/arrow_left.gif create mode 100644 images/icons/arrow_right.gif create mode 100644 images/icons/arrow_up.gif create mode 100644 images/icons/brick.png create mode 100644 images/icons/brick_edit.png create mode 100644 images/icons/bricks.png create mode 100644 images/icons/bricks_gear.png create mode 100644 images/icons/car.png create mode 100644 images/icons/cart.png create mode 100644 images/icons/cart_add.png create mode 100644 images/icons/cog.png create mode 100644 images/icons/coins.png create mode 100644 images/icons/color_swatch.png create mode 100644 images/icons/error.gif create mode 100644 images/icons/expand.jpg create mode 100644 images/icons/feed.png create mode 100644 images/icons/folder.png create mode 100644 images/icons/folder_page.png create mode 100644 images/icons/folder_page_add.png create mode 100644 images/icons/folder_table.png create mode 100644 images/icons/group.png create mode 100644 images/icons/house.png create mode 100644 images/icons/logout.png create mode 100644 images/icons/magnifier.png create mode 100644 images/icons/note.gif create mode 100644 images/icons/page_add.png create mode 100644 images/icons/page_gear.png create mode 100644 images/icons/page_white_delete.png create mode 100644 images/icons/page_white_edit.png create mode 100644 images/icons/page_white_link.png create mode 100644 images/icons/page_white_text_width.png create mode 100644 images/icons/report.png create mode 100644 images/icons/report_link.png create mode 100644 images/icons/rss.png create mode 100644 images/icons/success.gif create mode 100644 images/icons/user.png create mode 100644 images/icons/user_add.png create mode 100644 images/icons/user_delete.png create mode 100644 images/icons/user_edit.png create mode 100644 images/icons/warning.gif create mode 100644 images/icons/world.png create mode 100644 images/info.png create mode 100644 images/items/no_ammo.gif create mode 100644 images/items/no_armor.gif create mode 100644 images/items/no_backpack.gif create mode 100644 images/items/no_boots.gif create mode 100644 images/items/no_handleft.gif create mode 100644 images/items/no_handright.gif create mode 100644 images/items/no_helmet.gif create mode 100644 images/items/no_legs.gif create mode 100644 images/items/no_necklace.gif create mode 100644 images/items/no_ring.gif create mode 100644 images/knight.png create mode 100644 images/loading.gif create mode 100644 images/minus.gif create mode 100644 images/monsters/acidblob.gif create mode 100644 images/monsters/acolyte of the cult.gif create mode 100644 images/monsters/adept of the cult.gif create mode 100644 images/monsters/amazon.gif create mode 100644 images/monsters/ancient scarab.gif create mode 100644 images/monsters/ancientscarab.gif create mode 100644 images/monsters/animated-statue.gif create mode 100644 images/monsters/annihilon.gif create mode 100644 images/monsters/apprentice sheng.gif create mode 100644 images/monsters/ashmunrah.gif create mode 100644 images/monsters/assassin.gif create mode 100644 images/monsters/avalanche.gif create mode 100644 images/monsters/axeitus headbanger.gif create mode 100644 images/monsters/azure frog.gif create mode 100644 images/monsters/badger.gif create mode 100644 images/monsters/bandit.gif create mode 100644 images/monsters/banshee.gif create mode 100644 images/monsters/barbaria.gif create mode 100644 images/monsters/barbarian brutetamer.gif create mode 100644 images/monsters/barbarian headsplitter.gif create mode 100644 images/monsters/barbarian skullhunter.gif create mode 100644 images/monsters/barbarianbloodwalker.gif create mode 100644 images/monsters/barbarianbrutetamer.gif create mode 100644 images/monsters/barbarianheadsplitter.gif create mode 100644 images/monsters/barbarianskullhunter.gif create mode 100644 images/monsters/bat.gif create mode 100644 images/monsters/bear.gif create mode 100644 images/monsters/behemoth.gif create mode 100644 images/monsters/beholder.gif create mode 100644 images/monsters/betrayed wraith.gif create mode 100644 images/monsters/big boss trolliver.gif create mode 100644 images/monsters/black sheep.gif create mode 100644 images/monsters/blackknight.gif create mode 100644 images/monsters/blazing fire elemental.gif create mode 100644 images/monsters/blightwalker.gif create mode 100644 images/monsters/blistering fire elemental.gif create mode 100644 images/monsters/blood crab.gif create mode 100644 images/monsters/bloodcrab.gif create mode 100644 images/monsters/bloodpaw.gif create mode 100644 images/monsters/blue djinn.gif create mode 100644 images/monsters/bluedjinn.gif create mode 100644 images/monsters/bog raider.gif create mode 100644 images/monsters/bograider.gif create mode 100644 images/monsters/bonebeast.gif create mode 100644 images/monsters/bones.gif create mode 100644 images/monsters/bovinus.gif create mode 100644 images/monsters/braindeath.gif create mode 100644 images/monsters/brutus bloodbeard.gif create mode 100644 images/monsters/bug.gif create mode 100644 images/monsters/butterfly purple.gif create mode 100644 images/monsters/butterfly.gif create mode 100644 images/monsters/butterflypurple.gif create mode 100644 images/monsters/carniphila.gif create mode 100644 images/monsters/carrion worm.gif create mode 100644 images/monsters/carrionworm.gif create mode 100644 images/monsters/cat.gif create mode 100644 images/monsters/cave rat.gif create mode 100644 images/monsters/caverat.gif create mode 100644 images/monsters/centipede.gif create mode 100644 images/monsters/chakoya toolshaper.gif create mode 100644 images/monsters/chakoya tribewarden.gif create mode 100644 images/monsters/chakoya windcaller.gif create mode 100644 images/monsters/chakoyatoolshaper.gif create mode 100644 images/monsters/chakoyatribewarden.gif create mode 100644 images/monsters/chakoyawindcaller.gif create mode 100644 images/monsters/charged energy elemental.gif create mode 100644 images/monsters/chicken.gif create mode 100644 images/monsters/cobra.gif create mode 100644 images/monsters/cockroach.gif create mode 100644 images/monsters/colerian the barbarian.gif create mode 100644 images/monsters/coral frog.gif create mode 100644 images/monsters/countess sorrow.gif create mode 100644 images/monsters/crab.gif create mode 100644 images/monsters/crazed beggar.gif create mode 100644 images/monsters/crimson frog.gif create mode 100644 images/monsters/crocodile.gif create mode 100644 images/monsters/crypt shambler.gif create mode 100644 images/monsters/cryptshambler.gif create mode 100644 images/monsters/crystal spider.gif create mode 100644 images/monsters/crystalspider.gif create mode 100644 images/monsters/cultacolyte.gif create mode 100644 images/monsters/cultadept.gif create mode 100644 images/monsters/cultnovice.gif create mode 100644 images/monsters/cultpriest.gif create mode 100644 images/monsters/cursed gladiator.gif create mode 100644 images/monsters/cyclops drone.gif create mode 100644 images/monsters/cyclops.gif create mode 100644 images/monsters/cyclopsdrone.gif create mode 100644 images/monsters/cyclopssmith.gif create mode 100644 images/monsters/damaged worker golem.gif create mode 100644 images/monsters/darakan the executioner.gif create mode 100644 images/monsters/dark apprentice.gif create mode 100644 images/monsters/dark magician.gif create mode 100644 images/monsters/dark monk.gif create mode 100644 images/monsters/dark torturer.gif create mode 100644 images/monsters/darkapprentice.gif create mode 100644 images/monsters/darkmagician.gif create mode 100644 images/monsters/darkmonk.gif create mode 100644 images/monsters/darktorturer.gif create mode 100644 images/monsters/death blob.gif create mode 100644 images/monsters/deathbringer.gif create mode 100644 images/monsters/deathslicer.gif create mode 100644 images/monsters/deer.gif create mode 100644 images/monsters/defiler.gif create mode 100644 images/monsters/demodras.gif create mode 100644 images/monsters/demon skeleton.gif create mode 100644 images/monsters/demon.gif create mode 100644 images/monsters/demonskeleton.gif create mode 100644 images/monsters/destroyer.gif create mode 100644 images/monsters/dharalion.gif create mode 100644 images/monsters/diabelski smok.gif create mode 100644 images/monsters/diabolic imp.gif create mode 100644 images/monsters/diabolicimp.gif create mode 100644 images/monsters/dire penguin.gif create mode 100644 images/monsters/dog.gif create mode 100644 images/monsters/dragon hatchling.gif create mode 100644 images/monsters/dragon lord hatchling.gif create mode 100644 images/monsters/dragon lord.gif create mode 100644 images/monsters/dragon.gif create mode 100644 images/monsters/dragonhatchling.gif create mode 100644 images/monsters/dragonlord.gif create mode 100644 images/monsters/dragonlordhatchling.gif create mode 100644 images/monsters/dreadbeast.gif create mode 100644 images/monsters/dwarf geomancer.gif create mode 100644 images/monsters/dwarf guard.gif create mode 100644 images/monsters/dwarf soldier.gif create mode 100644 images/monsters/dwarf.gif create mode 100644 images/monsters/dwarfgeomancer.gif create mode 100644 images/monsters/dwarfguard.gif create mode 100644 images/monsters/dwarfminer.gif create mode 100644 images/monsters/dwarfsoldier.gif create mode 100644 images/monsters/dworc fleshhunter.gif create mode 100644 images/monsters/dworc venomsniper.gif create mode 100644 images/monsters/dworc voodoomaster.gif create mode 100644 images/monsters/dworcfleshhunter.gif create mode 100644 images/monsters/dworcvenomsniper.gif create mode 100644 images/monsters/dworcvoodoomaster.gif create mode 100644 images/monsters/earth elemental.gif create mode 100644 images/monsters/earth overlord.gif create mode 100644 images/monsters/earthelemental.gif create mode 100644 images/monsters/efreet.gif create mode 100644 images/monsters/elder beholder.gif create mode 100644 images/monsters/elderbeholder.gif create mode 100644 images/monsters/elephant.gif create mode 100644 images/monsters/elf.gif create mode 100644 images/monsters/elfarcanist.gif create mode 100644 images/monsters/elfscout.gif create mode 100644 images/monsters/energy elemental.gif create mode 100644 images/monsters/energy overlord.gif create mode 100644 images/monsters/energyelemental.gif create mode 100644 images/monsters/energyelementalmassive.gif create mode 100644 images/monsters/enlightened of the cult.gif create mode 100644 images/monsters/evileye.gif create mode 100644 images/monsters/eye of the seven.gif create mode 100644 images/monsters/fernfang.gif create mode 100644 images/monsters/ferumbras.gif create mode 100644 images/monsters/fire devil.gif create mode 100644 images/monsters/fire elemental.gif create mode 100644 images/monsters/fire overlord.gif create mode 100644 images/monsters/firedevil.gif create mode 100644 images/monsters/fireelemental.gif create mode 100644 images/monsters/flamethrower.gif create mode 100644 images/monsters/flamingo.gif create mode 100644 images/monsters/fluffy.gif create mode 100644 images/monsters/foreman kneebiter.gif create mode 100644 images/monsters/frogazure.gif create mode 100644 images/monsters/frost dragon hatchling.gif create mode 100644 images/monsters/frost dragon.gif create mode 100644 images/monsters/frost giant.gif create mode 100644 images/monsters/frost giantess.gif create mode 100644 images/monsters/frost troll.gif create mode 100644 images/monsters/frostdragon.gif create mode 100644 images/monsters/frostdragonhatchling.gif create mode 100644 images/monsters/frostfur.gif create mode 100644 images/monsters/frostgiant.gif create mode 100644 images/monsters/frostgiantess.gif create mode 100644 images/monsters/frosttroll.gif create mode 100644 images/monsters/fury.gif create mode 100644 images/monsters/gargoyle.gif create mode 100644 images/monsters/gazer.gif create mode 100644 images/monsters/ghazbaran.gif create mode 100644 images/monsters/ghost.gif create mode 100644 images/monsters/ghoul.gif create mode 100644 images/monsters/giant spider.gif create mode 100644 images/monsters/giantspider.gif create mode 100644 images/monsters/gladiator.gif create mode 100644 images/monsters/gnorre chyllson.gif create mode 100644 images/monsters/goblin assassin.gif create mode 100644 images/monsters/goblin leader.gif create mode 100644 images/monsters/goblin.gif create mode 100644 images/monsters/goblinassassin.gif create mode 100644 images/monsters/goblinscavenger.gif create mode 100644 images/monsters/golgordan.gif create mode 100644 images/monsters/green djinn.gif create mode 100644 images/monsters/green frog.gif create mode 100644 images/monsters/greendjinn.gif create mode 100644 images/monsters/grim reaper.gif create mode 100644 images/monsters/grimreaper.gif create mode 100644 images/monsters/grorlam.gif create mode 100644 images/monsters/hairman the huge.gif create mode 100644 images/monsters/halloweenhare.gif create mode 100644 images/monsters/hand of cursed fate.gif create mode 100644 images/monsters/handofcursedfate.gif create mode 100644 images/monsters/haunted treeling.gif create mode 100644 images/monsters/hellfire fighter.gif create mode 100644 images/monsters/hellfirefighter.gif create mode 100644 images/monsters/hellhound.gif create mode 100644 images/monsters/hero.gif create mode 100644 images/monsters/hornedfox.gif create mode 100644 images/monsters/hunter.gif create mode 100644 images/monsters/husky.gif create mode 100644 images/monsters/hyaena.gif create mode 100644 images/monsters/hydra.gif create mode 100644 images/monsters/ice golem.gif create mode 100644 images/monsters/ice overlord.gif create mode 100644 images/monsters/ice witch.gif create mode 100644 images/monsters/icegolem.gif create mode 100644 images/monsters/icewitch.gif create mode 100644 images/monsters/island troll.gif create mode 100644 images/monsters/islandtroll.gif create mode 100644 images/monsters/jagged earth elemental.gif create mode 100644 images/monsters/juggernaut.gif create mode 100644 images/monsters/kongra.gif create mode 100644 images/monsters/larva.gif create mode 100644 images/monsters/latrivan.gif create mode 100644 images/monsters/lavahole.gif create mode 100644 images/monsters/lethal lissy.gif create mode 100644 images/monsters/leviathan.gif create mode 100644 images/monsters/lich.gif create mode 100644 images/monsters/lion.gif create mode 100644 images/monsters/lizard sentinel.gif create mode 100644 images/monsters/lizard snakecharmer.gif create mode 100644 images/monsters/lizard templar.gif create mode 100644 images/monsters/lizardsentinel.gif create mode 100644 images/monsters/lizardsnakecharmer.gif create mode 100644 images/monsters/lizardtemplar.gif create mode 100644 images/monsters/lord of the elements.gif create mode 100644 images/monsters/lost soul.gif create mode 100644 images/monsters/lostsoul.gif create mode 100644 images/monsters/mad scientist.gif create mode 100644 images/monsters/madareth.gif create mode 100644 images/monsters/magicthrower.gif create mode 100644 images/monsters/mammoth.gif create mode 100644 images/monsters/man in the cave.gif create mode 100644 images/monsters/marid.gif create mode 100644 images/monsters/massacre.gif create mode 100644 images/monsters/massive earth elemental.gif create mode 100644 images/monsters/massive energy elemental.gif create mode 100644 images/monsters/massive fire elemental.gif create mode 100644 images/monsters/massive water elemental.gif create mode 100644 images/monsters/massiveearthelemental.gif create mode 100644 images/monsters/medusa.gif create mode 100644 images/monsters/mercury blob.gif create mode 100644 images/monsters/merlkin.gif create mode 100644 images/monsters/mimic.gif create mode 100644 images/monsters/minishabaal.gif create mode 100644 images/monsters/minotaur archer.gif create mode 100644 images/monsters/minotaur guard.gif create mode 100644 images/monsters/minotaur mage.gif create mode 100644 images/monsters/minotaur.gif create mode 100644 images/monsters/minotaurarcher.gif create mode 100644 images/monsters/minotaurguard.gif create mode 100644 images/monsters/minotaurmage.gif create mode 100644 images/monsters/monk.gif create mode 100644 images/monsters/morgaroth.gif create mode 100644 images/monsters/morguthis.gif create mode 100644 images/monsters/mr. punish.gif create mode 100644 images/monsters/muddy earth elemental.gif create mode 100644 images/monsters/mummy.gif create mode 100644 images/monsters/munster.gif create mode 100644 images/monsters/mutated bat.gif create mode 100644 images/monsters/mutated human.gif create mode 100644 images/monsters/mutated rat.gif create mode 100644 images/monsters/mutated tiger.gif create mode 100644 images/monsters/necromancer.gif create mode 100644 images/monsters/necropharus.gif create mode 100644 images/monsters/nightmare scion.gif create mode 100644 images/monsters/nightmare.gif create mode 100644 images/monsters/nomad.gif create mode 100644 images/monsters/nophoto.png create mode 100644 images/monsters/novice of the cult.gif create mode 100644 images/monsters/oldwidow.gif create mode 100644 images/monsters/orc berserker.gif create mode 100644 images/monsters/orc leader.gif create mode 100644 images/monsters/orc rider.gif create mode 100644 images/monsters/orc shaman.gif create mode 100644 images/monsters/orc spearman.gif create mode 100644 images/monsters/orc warlord.gif create mode 100644 images/monsters/orc warrior.gif create mode 100644 images/monsters/orc.gif create mode 100644 images/monsters/orcberserker.gif create mode 100644 images/monsters/orchid frog.gif create mode 100644 images/monsters/orcleader.gif create mode 100644 images/monsters/orcrider.gif create mode 100644 images/monsters/orcshaman.gif create mode 100644 images/monsters/orcspearman.gif create mode 100644 images/monsters/orcus the cruel.gif create mode 100644 images/monsters/orcwarlord.gif create mode 100644 images/monsters/orcwarrior.gif create mode 100644 images/monsters/orshabaal.gif create mode 100644 images/monsters/overcharged energy element.gif create mode 100644 images/monsters/overcharged energy elemental.gif create mode 100644 images/monsters/pajak.gif create mode 100644 images/monsters/panda.gif create mode 100644 images/monsters/parrot.gif create mode 100644 images/monsters/penguin.gif create mode 100644 images/monsters/phantasm mirror.gif create mode 100644 images/monsters/phantasm.gif create mode 100644 images/monsters/pig.gif create mode 100644 images/monsters/pirate buccaneer.gif create mode 100644 images/monsters/pirate corsair.gif create mode 100644 images/monsters/pirate cutthroat.gif create mode 100644 images/monsters/pirate ghost.gif create mode 100644 images/monsters/pirate marauder.gif create mode 100644 images/monsters/pirate skeleton.gif create mode 100644 images/monsters/piratebuccaneer.gif create mode 100644 images/monsters/piratecorsair.gif create mode 100644 images/monsters/piratecutthroat.gif create mode 100644 images/monsters/pirateghost.gif create mode 100644 images/monsters/pirateghost_002.gif create mode 100644 images/monsters/piratemarauder.gif create mode 100644 images/monsters/pirateskeleton.gif create mode 100644 images/monsters/plague smith.gif create mode 100644 images/monsters/plaguesmith.gif create mode 100644 images/monsters/plaguethrower.gif create mode 100644 images/monsters/poacher.gif create mode 100644 images/monsters/poison spider.gif create mode 100644 images/monsters/poisonspider.gif create mode 100644 images/monsters/polar bear.gif create mode 100644 images/monsters/polarbear.gif create mode 100644 images/monsters/priestess.gif create mode 100644 images/monsters/quara constrictor scout.gif create mode 100644 images/monsters/quara constrictor.gif create mode 100644 images/monsters/quara hydromancer scout.gif create mode 100644 images/monsters/quara hydromancer.gif create mode 100644 images/monsters/quara mantassin scout.gif create mode 100644 images/monsters/quara mantassin.gif create mode 100644 images/monsters/quara pincher scout.gif create mode 100644 images/monsters/quara pincher.gif create mode 100644 images/monsters/quara predator scout.gif create mode 100644 images/monsters/quara predator.gif create mode 100644 images/monsters/quaraconstrictor.gif create mode 100644 images/monsters/quarahydromancer.gif create mode 100644 images/monsters/quaramantassin.gif create mode 100644 images/monsters/quarapincher.gif create mode 100644 images/monsters/quarapredator.gif create mode 100644 images/monsters/rabbit.gif create mode 100644 images/monsters/rat.gif create mode 100644 images/monsters/rift brood.gif create mode 100644 images/monsters/rift scythe.gif create mode 100644 images/monsters/rift worm.gif create mode 100644 images/monsters/roaring water elemental.gif create mode 100644 images/monsters/rocky.gif create mode 100644 images/monsters/ron the ripper.gif create mode 100644 images/monsters/rotworm queen.gif create mode 100644 images/monsters/rotworm.gif create mode 100644 images/monsters/scarab.gif create mode 100644 images/monsters/scorpion.gif create mode 100644 images/monsters/sea serpent.gif create mode 100644 images/monsters/seagull.gif create mode 100644 images/monsters/seaserpent.gif create mode 100644 images/monsters/serpent spawn.gif create mode 100644 images/monsters/serpentspawn.gif create mode 100644 images/monsters/sheep.gif create mode 100644 images/monsters/shredderthrower.gif create mode 100644 images/monsters/sibang.gif create mode 100644 images/monsters/silver rabbit.gif create mode 100644 images/monsters/silverrabbit.gif create mode 100644 images/monsters/skeleton warrior.gif create mode 100644 images/monsters/skeleton.gif create mode 100644 images/monsters/skeletonwarrior.gif create mode 100644 images/monsters/skunk.gif create mode 100644 images/monsters/slick water elemental.gif create mode 100644 images/monsters/slim.gif create mode 100644 images/monsters/slime.gif create mode 100644 images/monsters/slime2.gif create mode 100644 images/monsters/smoczek.gif create mode 100644 images/monsters/smok.gif create mode 100644 images/monsters/smuggler.gif create mode 100644 images/monsters/snake.gif create mode 100644 images/monsters/son of verminor.gif create mode 100644 images/monsters/sonofverminor.gif create mode 100644 images/monsters/spectre.gif create mode 100644 images/monsters/spider.gif create mode 100644 images/monsters/spirit of earth.gif create mode 100644 images/monsters/spirit of fire.gif create mode 100644 images/monsters/spirit of water.gif create mode 100644 images/monsters/spit nettle.gif create mode 100644 images/monsters/spitnettle.gif create mode 100644 images/monsters/squirrel.gif create mode 100644 images/monsters/stalker.gif create mode 100644 images/monsters/stone golem.gif create mode 100644 images/monsters/stonegolem.gif create mode 100644 images/monsters/svoren the mad.gif create mode 100644 images/monsters/swamp troll.gif create mode 100644 images/monsters/swamptroll.gif create mode 100644 images/monsters/tarantula.gif create mode 100644 images/monsters/terror bird.gif create mode 100644 images/monsters/terrorbird.gif create mode 100644 images/monsters/thalas.gif create mode 100644 images/monsters/the abomination.gif create mode 100644 images/monsters/the count.gif create mode 100644 images/monsters/the dark dancer.gif create mode 100644 images/monsters/the evil eye.gif create mode 100644 images/monsters/the hairy one.gif create mode 100644 images/monsters/the halloween hare.gif create mode 100644 images/monsters/the handmaiden.gif create mode 100644 images/monsters/the imperor.gif create mode 100644 images/monsters/the obliverator.gif create mode 100644 images/monsters/the old widow.gif create mode 100644 images/monsters/the plasmother.gif create mode 100644 images/monsters/thornback tortoise.gif create mode 100644 images/monsters/thornbacktortoise.gif create mode 100644 images/monsters/thul.gif create mode 100644 images/monsters/tiger.gif create mode 100644 images/monsters/tiquandas revenge.gif create mode 100644 images/monsters/toad.gif create mode 100644 images/monsters/tortoise.gif create mode 100644 images/monsters/troll champion.gif create mode 100644 images/monsters/troll.gif create mode 100644 images/monsters/trollchampion.gif create mode 100644 images/monsters/undead dragon.gif create mode 100644 images/monsters/undead minion.gif create mode 100644 images/monsters/undeaddragon.gif create mode 100644 images/monsters/ushuriel.gif create mode 100644 images/monsters/valkyrie.gif create mode 100644 images/monsters/vampire bride.gif create mode 100644 images/monsters/vampire.gif create mode 100644 images/monsters/vashresamun.gif create mode 100644 images/monsters/war golem.gif create mode 100644 images/monsters/war wolf.gif create mode 100644 images/monsters/warlock.gif create mode 100644 images/monsters/warwolf.gif create mode 100644 images/monsters/wasp.gif create mode 100644 images/monsters/water elemental.gif create mode 100644 images/monsters/waterelemental.gif create mode 100644 images/monsters/waterelementalmassive.gif create mode 100644 images/monsters/webster.gif create mode 100644 images/monsters/werewolf.gif create mode 100644 images/monsters/wild warrior.gif create mode 100644 images/monsters/wildwarrior.gif create mode 100644 images/monsters/winter wolf.gif create mode 100644 images/monsters/winterwolf.gif create mode 100644 images/monsters/wisp.gif create mode 100644 images/monsters/witch.gif create mode 100644 images/monsters/wolf.gif create mode 100644 images/monsters/worker golem.gif create mode 100644 images/monsters/wraith.gif create mode 100644 images/monsters/wyrm.gif create mode 100644 images/monsters/wyvern.gif create mode 100644 images/monsters/xenia.gif create mode 100644 images/monsters/yeti.gif create mode 100644 images/monsters/young sea serpent.gif create mode 100644 images/monsters/zombie.gif create mode 100644 images/monsters/zugurosh.gif create mode 100644 images/news/blank.gif create mode 100644 images/news/icon_0.gif create mode 100644 images/news/icon_0_small.gif create mode 100644 images/news/icon_1.gif create mode 100644 images/news/icon_1_small.gif create mode 100644 images/news/icon_2.gif create mode 100644 images/news/icon_2_small.gif create mode 100644 images/news/icon_3.gif create mode 100644 images/news/icon_3_small.gif create mode 100644 images/news/icon_4.gif create mode 100644 images/news/icon_4_small.gif create mode 100644 images/notify.png create mode 100644 images/palladin.png create mode 100644 images/payments/daopay.gif create mode 100644 images/payments/dotpay.png create mode 100644 images/payments/paypal.gif create mode 100644 images/payments/sms.gif create mode 100644 images/plus.gif create mode 100644 images/redskull.gif create mode 100644 images/refresh.gif create mode 100644 images/screenshots/demon.jpg create mode 100644 images/screenshots/demon_thumb.gif create mode 100644 images/search.png create mode 100644 images/smileys/icon_arrow.gif create mode 100644 images/smileys/icon_biggrin.gif create mode 100644 images/smileys/icon_confused.gif create mode 100644 images/smileys/icon_cool.gif create mode 100644 images/smileys/icon_cry.gif create mode 100644 images/smileys/icon_doubt.gif create mode 100644 images/smileys/icon_doubt2.gif create mode 100644 images/smileys/icon_eek.gif create mode 100644 images/smileys/icon_evil.gif create mode 100644 images/smileys/icon_exclaim.gif create mode 100644 images/smileys/icon_frown.gif create mode 100644 images/smileys/icon_fun.gif create mode 100644 images/smileys/icon_idea.gif create mode 100644 images/smileys/icon_kaddi.gif create mode 100644 images/smileys/icon_lol.gif create mode 100644 images/smileys/icon_mrgreen.gif create mode 100644 images/smileys/icon_neutral.gif create mode 100644 images/smileys/icon_question.gif create mode 100644 images/smileys/icon_razz.gif create mode 100644 images/smileys/icon_redface.gif create mode 100644 images/smileys/icon_rolleyes.gif create mode 100644 images/smileys/icon_sad.gif create mode 100644 images/smileys/icon_silenced.gif create mode 100644 images/smileys/icon_smile.gif create mode 100644 images/smileys/icon_smile2.gif create mode 100644 images/smileys/icon_surprised.gif create mode 100644 images/smileys/icon_twisted.gif create mode 100644 images/smileys/icon_wink.gif create mode 100644 images/sorcerer.png create mode 100644 images/success.png create mode 100644 images/trash.png create mode 100644 images/true.png create mode 100644 images/under_construction.jpg create mode 100644 images/whiteskull.gif create mode 100644 images/yellow_skull.gif create mode 100644 index.php create mode 100644 install/includes/.htaccess create mode 100644 install/includes/database.php create mode 100644 install/includes/functions.php create mode 100644 install/includes/locale.php create mode 100644 install/includes/schema.sql create mode 100644 install/index.php create mode 100644 install/steps/.htaccess create mode 100644 install/steps/config.php create mode 100644 install/steps/database.php create mode 100644 install/steps/finish.php create mode 100644 install/steps/license.php create mode 100644 install/steps/requirements.php create mode 100644 install/steps/welcome.php create mode 100644 install/template/images/active.gif create mode 100644 install/template/images/approve.gif create mode 100644 install/template/images/background.jpg create mode 100644 install/template/images/bullet.gif create mode 100644 install/template/images/button.gif create mode 100644 install/template/images/delete.gif create mode 100644 install/template/images/divider.gif create mode 100644 install/template/images/edit.gif create mode 100644 install/template/images/error.gif create mode 100644 install/template/images/footer.jpg create mode 100644 install/template/images/negative.gif create mode 100644 install/template/images/note.gif create mode 100644 install/template/images/positive.gif create mode 100644 install/template/images/sidebody.gif create mode 100644 install/template/images/sidehead.gif create mode 100644 install/template/images/success.gif create mode 100644 install/template/images/userbox.gif create mode 100644 install/template/images/visitwebsite.gif create mode 100644 install/template/images/warning.gif create mode 100644 install/template/images/wrapper.gif create mode 100644 install/template/style.css create mode 100644 install/template/template.php create mode 100644 plugins/.htaccess create mode 100644 system/.htaccess create mode 100644 system/cache/.htaccess create mode 100644 system/compat_pages.php create mode 100644 system/counter.php create mode 100644 system/countries.conf.php create mode 100644 system/data/.htaccess create mode 100644 system/database.php create mode 100644 system/events.php create mode 100644 system/functions.php create mode 100644 system/init.php create mode 100644 system/item.php create mode 100644 system/libs/.htaccess create mode 100644 system/libs/cache.php create mode 100644 system/libs/cache_apc.php create mode 100644 system/libs/cache_eaccelerator.php create mode 100644 system/libs/cache_file.php create mode 100644 system/libs/cache_xcache.php create mode 100644 system/libs/data.php create mode 100644 system/libs/dwoo/.htaccess create mode 100644 system/libs/dwoo/CHANGELOG create mode 100644 system/libs/dwoo/Dwoo.compiled.php create mode 100644 system/libs/dwoo/Dwoo.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/Agavi/DwooRenderer.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/Agavi/README create mode 100644 system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/t.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/url.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/CakePHP/README create mode 100644 system/libs/dwoo/Dwoo/Adapters/CakePHP/dwoo.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/CodeIgniter/README create mode 100644 system/libs/dwoo/Dwoo/Adapters/CodeIgniter/config/dwootemplate.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/CodeIgniter/controllers/dwoowelcome.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/CodeIgniter/libraries/Dwootemplate.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/dwoowelcome.tpl create mode 100644 system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/page.tpl create mode 100644 system/libs/dwoo/Dwoo/Adapters/ZendFramework/PluginProxy.php create mode 100644 system/libs/dwoo/Dwoo/Adapters/ZendFramework/README create mode 100644 system/libs/dwoo/Dwoo/Adapters/ZendFramework/View.php create mode 100644 system/libs/dwoo/Dwoo/Block/Plugin.php create mode 100644 system/libs/dwoo/Dwoo/Compilation/Exception.php create mode 100644 system/libs/dwoo/Dwoo/Compiler.php create mode 100644 system/libs/dwoo/Dwoo/Data.php create mode 100644 system/libs/dwoo/Dwoo/Exception.php create mode 100644 system/libs/dwoo/Dwoo/Filter.php create mode 100644 system/libs/dwoo/Dwoo/ICompilable.php create mode 100644 system/libs/dwoo/Dwoo/ICompilable/Block.php create mode 100644 system/libs/dwoo/Dwoo/ICompiler.php create mode 100644 system/libs/dwoo/Dwoo/IDataProvider.php create mode 100644 system/libs/dwoo/Dwoo/IElseable.php create mode 100644 system/libs/dwoo/Dwoo/ILoader.php create mode 100644 system/libs/dwoo/Dwoo/IPluginProxy.php create mode 100644 system/libs/dwoo/Dwoo/ITemplate.php create mode 100644 system/libs/dwoo/Dwoo/Loader.php create mode 100644 system/libs/dwoo/Dwoo/Plugin.php create mode 100644 system/libs/dwoo/Dwoo/Processor.php create mode 100644 system/libs/dwoo/Dwoo/Security/Exception.php create mode 100644 system/libs/dwoo/Dwoo/Security/Policy.php create mode 100644 system/libs/dwoo/Dwoo/Smarty/Adapter.php create mode 100644 system/libs/dwoo/Dwoo/Template/File.php create mode 100644 system/libs/dwoo/Dwoo/Template/String.php create mode 100644 system/libs/dwoo/LICENSE create mode 100644 system/libs/dwoo/README create mode 100644 system/libs/dwoo/UPGRADE_NOTES create mode 100644 system/libs/dwoo/cache/.gitignore create mode 100644 system/libs/dwoo/compiled/.gitignore create mode 100644 system/libs/dwoo/dwooAutoload.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/a.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/auto_escape.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/block.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/capture.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/dynamic.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/else.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/elseif.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/for.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/foreach.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/foreachelse.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/forelse.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/if.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/loop.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/section.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/smartyinterface.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/strip.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/template.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/textformat.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/topLevelBlock.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/with.php create mode 100644 system/libs/dwoo/plugins/builtin/blocks/withelse.php create mode 100644 system/libs/dwoo/plugins/builtin/filters/html_format.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/assign.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/capitalize.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/cat.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/count_characters.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/count_paragraphs.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/count_sentences.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/count_words.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/counter.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/cycle.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/date_format.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/default.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/dump.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/eol.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/escape.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/eval.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/extends.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/extendsCheck.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/fetch.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/include.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/indent.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/isset.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/load_templates.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/lower.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/mailto.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/math.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/nl2br.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/optional.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/regex_replace.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/replace.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/reverse.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/safe.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/spacify.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/string_format.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/strip_tags.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/tif.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/truncate.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/upper.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/whitespace.php create mode 100644 system/libs/dwoo/plugins/builtin/functions/wordwrap.php create mode 100644 system/libs/dwoo/plugins/builtin/helper.array.php create mode 100644 system/libs/dwoo/plugins/builtin/processors/pre.smarty_compat.php create mode 100644 system/libs/dwoo/plugins/personal/.gitignore create mode 100644 system/libs/dwoo/plugins/thirdparty/.gitignore create mode 100644 system/libs/items.php create mode 100644 system/libs/phpmailer/.htaccess create mode 100644 system/libs/phpmailer/LICENSE create mode 100644 system/libs/phpmailer/PHPMailerAutoload.php create mode 100644 system/libs/phpmailer/VERSION create mode 100644 system/libs/phpmailer/class.phpmailer.php create mode 100644 system/libs/phpmailer/class.phpmaileroauth.php create mode 100644 system/libs/phpmailer/class.phpmaileroauthgoogle.php create mode 100644 system/libs/phpmailer/class.pop3.php create mode 100644 system/libs/phpmailer/class.smtp.php create mode 100644 system/libs/phpmailer/examples/DKIM.phps create mode 100644 system/libs/phpmailer/examples/code_generator.phps create mode 100644 system/libs/phpmailer/examples/contactform.phps create mode 100644 system/libs/phpmailer/examples/contents.html create mode 100644 system/libs/phpmailer/examples/contentsutf8.html create mode 100644 system/libs/phpmailer/examples/exceptions.phps create mode 100644 system/libs/phpmailer/examples/gmail.phps create mode 100644 system/libs/phpmailer/examples/gmail_xoauth.phps create mode 100644 system/libs/phpmailer/examples/images/phpmailer.png create mode 100644 system/libs/phpmailer/examples/images/phpmailer_mini.png create mode 100644 system/libs/phpmailer/examples/index.html create mode 100644 system/libs/phpmailer/examples/mail.phps create mode 100644 system/libs/phpmailer/examples/mailing_list.phps create mode 100644 system/libs/phpmailer/examples/pop_before_smtp.phps create mode 100644 system/libs/phpmailer/examples/scripts/XRegExp.js create mode 100644 system/libs/phpmailer/examples/scripts/shAutoloader.js create mode 100644 system/libs/phpmailer/examples/scripts/shBrushPhp.js create mode 100644 system/libs/phpmailer/examples/scripts/shCore.js create mode 100644 system/libs/phpmailer/examples/scripts/shLegacy.js create mode 100644 system/libs/phpmailer/examples/send_file_upload.phps create mode 100644 system/libs/phpmailer/examples/send_multiple_file_upload.phps create mode 100644 system/libs/phpmailer/examples/sendmail.phps create mode 100644 system/libs/phpmailer/examples/signed-mail.phps create mode 100644 system/libs/phpmailer/examples/smtp.phps create mode 100644 system/libs/phpmailer/examples/smtp_check.phps create mode 100644 system/libs/phpmailer/examples/smtp_no_auth.phps create mode 100644 system/libs/phpmailer/examples/ssl_options.phps create mode 100644 system/libs/phpmailer/examples/styles/shCore.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreDefault.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreDjango.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreEclipse.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreEmacs.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreFadeToGrey.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreMDUltra.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreMidnight.css create mode 100644 system/libs/phpmailer/examples/styles/shCoreRDark.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeAppleScript.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeDefault.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeDjango.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeEclipse.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeEmacs.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeFadeToGrey.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeMDUltra.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeMidnight.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeRDark.css create mode 100644 system/libs/phpmailer/examples/styles/shThemeVisualStudio.css create mode 100644 system/libs/phpmailer/examples/styles/wrapping.png create mode 100644 system/libs/phpmailer/extras/EasyPeasyICS.php create mode 100644 system/libs/phpmailer/extras/README.md create mode 100644 system/libs/phpmailer/extras/htmlfilter.php create mode 100644 system/libs/phpmailer/extras/ntlm_sasl_client.php create mode 100644 system/libs/phpmailer/get_oauth_token.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-am.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ar.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-az.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-be.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-bg.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ca.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ch.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-cs.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-da.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-de.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-el.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-eo.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-es.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-et.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-fa.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-fi.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-fo.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-fr.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-gl.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-he.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-hr.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-hu.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-id.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-it.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ja.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ka.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ko.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-lt.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-lv.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ms.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-nb.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-nl.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-pl.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-pt.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-pt_br.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ro.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-ru.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-sk.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-sl.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-sr.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-sv.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-tr.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-uk.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-vi.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-zh.php create mode 100644 system/libs/phpmailer/language/phpmailer.lang-zh_cn.php create mode 100644 system/libs/pot/.htaccess create mode 100644 system/libs/pot/AUTHORS create mode 100644 system/libs/pot/CHANGELOG create mode 100644 system/libs/pot/E_OTS_ErrorCode.php create mode 100644 system/libs/pot/E_OTS_FileLoaderError.php create mode 100644 system/libs/pot/E_OTS_Generic.php create mode 100644 system/libs/pot/E_OTS_NoDriver.php create mode 100644 system/libs/pot/E_OTS_NotAContainer.php create mode 100644 system/libs/pot/E_OTS_NotLoaded.php create mode 100644 system/libs/pot/E_OTS_OTBMError.php create mode 100644 system/libs/pot/E_OTS_OutOfBuffer.php create mode 100644 system/libs/pot/E_OTS_ReadOnly.php create mode 100644 system/libs/pot/INSTALL create mode 100644 system/libs/pot/IOTS_Cipher.php create mode 100644 system/libs/pot/IOTS_DAO.php create mode 100644 system/libs/pot/IOTS_DB.php create mode 100644 system/libs/pot/IOTS_DataDisplay.php create mode 100644 system/libs/pot/IOTS_Display.php create mode 100644 system/libs/pot/IOTS_FileCache.php create mode 100644 system/libs/pot/IOTS_GuildAction.php create mode 100644 system/libs/pot/IOTS_ItemsCache.php create mode 100644 system/libs/pot/InvitesDriver.php create mode 100644 system/libs/pot/LICENSE create mode 100644 system/libs/pot/LICENSE.PEAR.CRYPT_RSA create mode 100644 system/libs/pot/LICENSE.PEAR.CRYPT_XTEA create mode 100644 system/libs/pot/NEWS create mode 100644 system/libs/pot/OTS.php create mode 100644 system/libs/pot/OTS_Account.php create mode 100644 system/libs/pot/OTS_AccountBan.php create mode 100644 system/libs/pot/OTS_AccountBans_List.php create mode 100644 system/libs/pot/OTS_Accounts_List.php create mode 100644 system/libs/pot/OTS_Admin.php create mode 100644 system/libs/pot/OTS_Ban.php create mode 100644 system/libs/pot/OTS_Bans_List.php create mode 100644 system/libs/pot/OTS_Base_DAO.php create mode 100644 system/libs/pot/OTS_Base_DB.php create mode 100644 system/libs/pot/OTS_Base_List.php create mode 100644 system/libs/pot/OTS_BinaryTools.php create mode 100644 system/libs/pot/OTS_Buffer.php create mode 100644 system/libs/pot/OTS_Container.php create mode 100644 system/libs/pot/OTS_DB_MySQL.php create mode 100644 system/libs/pot/OTS_DB_ODBC.php create mode 100644 system/libs/pot/OTS_DB_PostgreSQL.php create mode 100644 system/libs/pot/OTS_FileLoader.php create mode 100644 system/libs/pot/OTS_FileNode.php create mode 100644 system/libs/pot/OTS_Group.php create mode 100644 system/libs/pot/OTS_Groups_List.php create mode 100644 system/libs/pot/OTS_Guild.php create mode 100644 system/libs/pot/OTS_GuildRank.php create mode 100644 system/libs/pot/OTS_GuildRanks_List.php create mode 100644 system/libs/pot/OTS_Guilds_List.php create mode 100644 system/libs/pot/OTS_House.php create mode 100644 system/libs/pot/OTS_HousesList.php create mode 100644 system/libs/pot/OTS_IPBan.php create mode 100644 system/libs/pot/OTS_IPBans_List.php create mode 100644 system/libs/pot/OTS_InfoRespond.php create mode 100644 system/libs/pot/OTS_Item.php create mode 100644 system/libs/pot/OTS_ItemType.php create mode 100644 system/libs/pot/OTS_ItemsList.php create mode 100644 system/libs/pot/OTS_MapCoords.php create mode 100644 system/libs/pot/OTS_Monster.php create mode 100644 system/libs/pot/OTS_MonstersList.php create mode 100644 system/libs/pot/OTS_OTBMFile.php create mode 100644 system/libs/pot/OTS_Player.php create mode 100644 system/libs/pot/OTS_PlayerBan.php create mode 100644 system/libs/pot/OTS_PlayerBans_List.php create mode 100644 system/libs/pot/OTS_Players_List.php create mode 100644 system/libs/pot/OTS_RSA.php create mode 100644 system/libs/pot/OTS_Row_DAO.php create mode 100644 system/libs/pot/OTS_SQLField.php create mode 100644 system/libs/pot/OTS_SQLFilter.php create mode 100644 system/libs/pot/OTS_ServerInfo.php create mode 100644 system/libs/pot/OTS_ServerStatus.php create mode 100644 system/libs/pot/OTS_Spell.php create mode 100644 system/libs/pot/OTS_SpellsList.php create mode 100644 system/libs/pot/OTS_Toolbox.php create mode 100644 system/libs/pot/OTS_VocationsList.php create mode 100644 system/libs/pot/OTS_XTEA.php create mode 100644 system/libs/pot/README create mode 100644 system/libs/pot/RULES create mode 100644 system/libs/pot/compat.php create mode 100644 system/libs/timer.php create mode 100644 system/libs/validator.php create mode 100644 system/libs/visitors.php create mode 100644 system/locale/.htaccess create mode 100644 system/locale/en/.htaccess create mode 100644 system/locale/en/admin.php create mode 100644 system/locale/en/install.php create mode 100644 system/locale/en/main.php create mode 100644 system/locale/pl/.htaccess create mode 100644 system/locale/pl/admin.php create mode 100644 system/locale/pl/install.php create mode 100644 system/locale/pl/main.php create mode 100644 system/login.php create mode 100644 system/logs/.htaccess create mode 100644 system/pages/.htaccess create mode 100644 system/pages/404.php create mode 100644 system/pages/account.php create mode 100644 system/pages/accountmanagement.php create mode 100644 system/pages/admin/.htaccess create mode 100644 system/pages/admin/changelog.php create mode 100644 system/pages/admin/dashboard.php create mode 100644 system/pages/admin/login.php create mode 100644 system/pages/admin/logs.php create mode 100644 system/pages/admin/mailer.php create mode 100644 system/pages/admin/notepad.php create mode 100644 system/pages/admin/pages.php create mode 100644 system/pages/admin/phpinfo.php create mode 100644 system/pages/admin/players.php create mode 100644 system/pages/admin/plugins.php create mode 100644 system/pages/admin/statistics.php create mode 100644 system/pages/admin/tools.php create mode 100644 system/pages/admin/tools/.htaccess create mode 100644 system/pages/admin/version.php create mode 100644 system/pages/admin/visitors.php create mode 100644 system/pages/bans.php create mode 100644 system/pages/bugtracker.php create mode 100644 system/pages/changelog.php create mode 100644 system/pages/characters.php create mode 100644 system/pages/commands.php create mode 100644 system/pages/createaccount.php create mode 100644 system/pages/creatures.php create mode 100644 system/pages/custom.php create mode 100644 system/pages/downloads.php create mode 100644 system/pages/experiencestages.php create mode 100644 system/pages/experiencetable.php create mode 100644 system/pages/faq.php create mode 100644 system/pages/forum.php create mode 100644 system/pages/guilds.php create mode 100644 system/pages/highscores.php create mode 100644 system/pages/houses.php create mode 100644 system/pages/lastkills.php create mode 100644 system/pages/lostaccount.php create mode 100644 system/pages/movies.php create mode 100644 system/pages/news.php create mode 100644 system/pages/newsarchive.php create mode 100644 system/pages/online.php create mode 100644 system/pages/polls.php create mode 100644 system/pages/records.php create mode 100644 system/pages/rules.php create mode 100644 system/pages/screenshots.php create mode 100644 system/pages/serverinfo.php create mode 100644 system/pages/spells.php create mode 100644 system/pages/team.php create mode 100644 system/status.php create mode 100644 system/template.php create mode 100644 system/templates/.htaccess create mode 100644 system/templates/news.php create mode 100644 templates/kathrine/config.php create mode 100644 templates/kathrine/images/Thumbs.db create mode 100644 templates/kathrine/images/background.png create mode 100644 templates/kathrine/images/buttons/Thumbs.db create mode 100644 templates/kathrine/images/buttons/_sbutton_accountlost.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_back.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_cancel.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_changeemail.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_changepassword.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_createcharacter.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_deletecharacter.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_edit.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_jointibia.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_login.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_logout.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_myaccount.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_registeraccount.gif create mode 100644 templates/kathrine/images/buttons/_sbutton_submit.gif create mode 100644 templates/kathrine/images/buttons/addnews.gif create mode 100644 templates/kathrine/images/buttons/addticker.gif create mode 100644 templates/kathrine/images/buttons/check.png create mode 100644 templates/kathrine/images/buttons/empty.png create mode 100644 templates/kathrine/images/buttons/sbutton.gif create mode 100644 templates/kathrine/images/buttons/sbutton_acceptinvite.png create mode 100644 templates/kathrine/images/buttons/sbutton_back.gif create mode 100644 templates/kathrine/images/buttons/sbutton_cancel.gif create mode 100644 templates/kathrine/images/buttons/sbutton_changerank.png create mode 100644 templates/kathrine/images/buttons/sbutton_createguild.png create mode 100644 templates/kathrine/images/buttons/sbutton_iagree.gif create mode 100644 templates/kathrine/images/buttons/sbutton_inviteplayer.png create mode 100644 templates/kathrine/images/buttons/sbutton_leaveguild.png create mode 100644 templates/kathrine/images/buttons/sbutton_login.gif create mode 100644 templates/kathrine/images/buttons/sbutton_manageguild.png create mode 100644 templates/kathrine/images/buttons/sbutton_over.gif create mode 100644 templates/kathrine/images/buttons/sbutton_submit.gif create mode 100644 templates/kathrine/images/buttons/sbutton_view.gif create mode 100644 templates/kathrine/images/content/Thumbs.db create mode 100644 templates/kathrine/images/content/attentionsign.gif create mode 100644 templates/kathrine/images/content/back-to-top.gif create mode 100644 templates/kathrine/images/content/border-1.gif create mode 100644 templates/kathrine/images/content/box-frame-edge.gif create mode 100644 templates/kathrine/images/content/box-frame-vertical.gif create mode 100644 templates/kathrine/images/content/corner-bl.gif create mode 100644 templates/kathrine/images/content/corner-br.gif create mode 100644 templates/kathrine/images/content/corner-tl.gif create mode 100644 templates/kathrine/images/content/corner-tr.gif create mode 100644 templates/kathrine/images/content/headline-bracer-left.gif create mode 100644 templates/kathrine/images/content/headline-bracer-right.gif create mode 100644 templates/kathrine/images/content/scroll.gif create mode 100644 templates/kathrine/images/content/table-headline-border.gif create mode 100644 templates/kathrine/images/content/title-background-green.gif create mode 100644 templates/kathrine/images/general/Thumbs.db create mode 100644 templates/kathrine/images/general/box-bottom.gif create mode 100644 templates/kathrine/images/general/box-top.gif create mode 100644 templates/kathrine/images/general/chain.gif create mode 100644 templates/kathrine/images/general/minus.gif create mode 100644 templates/kathrine/images/general/plus.gif create mode 100644 templates/kathrine/images/logo.png create mode 100644 templates/kathrine/images/news/Thumbs.db create mode 100644 templates/kathrine/images/news/blank.gif create mode 100644 templates/kathrine/images/news/delete.png create mode 100644 templates/kathrine/images/news/delete_news-HQ.png create mode 100644 templates/kathrine/images/news/delete_news.PNG create mode 100644 templates/kathrine/images/news/edit_news-HQ.png create mode 100644 templates/kathrine/images/news/edit_news.PNG create mode 100644 templates/kathrine/images/news/icon_0.gif create mode 100644 templates/kathrine/images/news/icon_0_small.gif create mode 100644 templates/kathrine/images/news/icon_1.gif create mode 100644 templates/kathrine/images/news/icon_1_small.gif create mode 100644 templates/kathrine/images/news/icon_2.gif create mode 100644 templates/kathrine/images/news/icon_2_small.gif create mode 100644 templates/kathrine/images/news/icon_3.gif create mode 100644 templates/kathrine/images/news/icon_3_small.gif create mode 100644 templates/kathrine/images/news/icon_4.gif create mode 100644 templates/kathrine/images/news/icon_4_small.gif create mode 100644 templates/kathrine/images/news/newsheadline_background.gif create mode 100644 templates/kathrine/images/separator.png create mode 100644 templates/kathrine/images/site-bg.png create mode 100644 templates/kathrine/images/site-bot.png create mode 100644 templates/kathrine/images/spacer.gif create mode 100644 templates/kathrine/images/submenu.png create mode 100644 templates/kathrine/images/tab-active.png create mode 100644 templates/kathrine/images/tab.png create mode 100644 templates/kathrine/images/tabs-bg.png create mode 100644 templates/kathrine/menu.js create mode 100644 templates/kathrine/news.php create mode 100644 templates/kathrine/style.css create mode 100644 templates/kathrine/template.php create mode 100644 templates/tibiacom/basic.css create mode 100644 templates/tibiacom/config.php create mode 100644 templates/tibiacom/headline.php create mode 100644 templates/tibiacom/images/buttons/_sbutton_accountlost.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_back.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_cancel.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_changeemail.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_changepassword.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_createcharacter.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_deletecharacter.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_edit.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_jointibia.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_login.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_logout.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_myaccount.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_registeraccount.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_submit.gif create mode 100644 templates/tibiacom/images/buttons/_sbutton_votenow.gif create mode 100644 templates/tibiacom/images/buttons/addnews.gif create mode 100644 templates/tibiacom/images/buttons/addticker.gif create mode 100644 templates/tibiacom/images/buttons/check.png create mode 100644 templates/tibiacom/images/buttons/empty.png create mode 100644 templates/tibiacom/images/buttons/sbutton.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_acceptinvite.png create mode 100644 templates/tibiacom/images/buttons/sbutton_back.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_cancel.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_changerank.png create mode 100644 templates/tibiacom/images/buttons/sbutton_createguild.png create mode 100644 templates/tibiacom/images/buttons/sbutton_iagree.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_inviteplayer.png create mode 100644 templates/tibiacom/images/buttons/sbutton_leaveguild.png create mode 100644 templates/tibiacom/images/buttons/sbutton_login.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_manageguild.png create mode 100644 templates/tibiacom/images/buttons/sbutton_over.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_submit.gif create mode 100644 templates/tibiacom/images/buttons/sbutton_view.gif create mode 100644 templates/tibiacom/images/content/attentionsign.gif create mode 100644 templates/tibiacom/images/content/back-to-top.gif create mode 100644 templates/tibiacom/images/content/border-1.gif create mode 100644 templates/tibiacom/images/content/box-frame-edge.gif create mode 100644 templates/tibiacom/images/content/box-frame-horizontal.gif create mode 100644 templates/tibiacom/images/content/box-frame-vertical.gif create mode 100644 templates/tibiacom/images/content/corner-bl.gif create mode 100644 templates/tibiacom/images/content/corner-br.gif create mode 100644 templates/tibiacom/images/content/corner-tl.gif create mode 100644 templates/tibiacom/images/content/corner-tr.gif create mode 100644 templates/tibiacom/images/content/headline-bracer-left.gif create mode 100644 templates/tibiacom/images/content/headline-bracer-right.gif create mode 100644 templates/tibiacom/images/content/scroll.gif create mode 100644 templates/tibiacom/images/content/table-headline-border.gif create mode 100644 templates/tibiacom/images/content/table-shadow-bl.gif create mode 100644 templates/tibiacom/images/content/table-shadow-bm.gif create mode 100644 templates/tibiacom/images/content/table-shadow-br.gif create mode 100644 templates/tibiacom/images/content/table-shadow-rm.gif create mode 100644 templates/tibiacom/images/content/table-shadow-rt.gif create mode 100644 templates/tibiacom/images/content/title-background-green.gif create mode 100644 templates/tibiacom/images/favicon.ico create mode 100644 templates/tibiacom/images/general/blank.gif create mode 100644 templates/tibiacom/images/general/box-bottom.gif create mode 100644 templates/tibiacom/images/general/box-top.gif create mode 100644 templates/tibiacom/images/general/chain.gif create mode 100644 templates/tibiacom/images/general/minus.gif create mode 100644 templates/tibiacom/images/general/plus.gif create mode 100644 templates/tibiacom/images/global/general/blank.gif create mode 100644 templates/tibiacom/images/global/general/box-bottom.gif create mode 100644 templates/tibiacom/images/global/general/box-top.gif create mode 100644 templates/tibiacom/images/global/general/chain.gif create mode 100644 templates/tibiacom/images/global/general/minus.gif create mode 100644 templates/tibiacom/images/global/general/plus.gif create mode 100644 templates/tibiacom/images/header/animated-statue.gif create mode 100644 templates/tibiacom/images/header/background-artwork-810.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-830.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-850.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-854.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-860.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-slaski-830.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-slaski-850.jpg create mode 100644 templates/tibiacom/images/header/background-artwork-slaski-winter.jpg create mode 100644 templates/tibiacom/images/header/box-top.gif create mode 100644 templates/tibiacom/images/header/headline-404.gif create mode 100644 templates/tibiacom/images/header/headline-accountmanagement.gif create mode 100644 templates/tibiacom/images/header/headline-addons.gif create mode 100644 templates/tibiacom/images/header/headline-adminpanel.gif create mode 100644 templates/tibiacom/images/header/headline-bans.gif create mode 100644 templates/tibiacom/images/header/headline-bounty.gif create mode 100644 templates/tibiacom/images/header/headline-changelog.gif create mode 100644 templates/tibiacom/images/header/headline-characters.gif create mode 100644 templates/tibiacom/images/header/headline-commands.gif create mode 100644 templates/tibiacom/images/header/headline-createaccount.gif create mode 100644 templates/tibiacom/images/header/headline-creatures.gif create mode 100644 templates/tibiacom/images/header/headline-downloads.gif create mode 100644 templates/tibiacom/images/header/headline-experiencestages.gif create mode 100644 templates/tibiacom/images/header/headline-experiencetable.gif create mode 100644 templates/tibiacom/images/header/headline-forum.gif create mode 100644 templates/tibiacom/images/header/headline-gallery.gif create mode 100644 templates/tibiacom/images/header/headline-gifts.gif create mode 100644 templates/tibiacom/images/header/headline-guilds.gif create mode 100644 templates/tibiacom/images/header/headline-highscores.gif create mode 100644 templates/tibiacom/images/header/headline-houses.gif create mode 100644 templates/tibiacom/images/header/headline-killstatistics.gif create mode 100644 templates/tibiacom/images/header/headline-lastkills.gif create mode 100644 templates/tibiacom/images/header/headline-lostaccount.gif create mode 100644 templates/tibiacom/images/header/headline-movies.gif create mode 100644 templates/tibiacom/images/header/headline-news.gif create mode 100644 templates/tibiacom/images/header/headline-newsarchive.gif create mode 100644 templates/tibiacom/images/header/headline-newsticker.gif create mode 100644 templates/tibiacom/images/header/headline-online.gif create mode 100644 templates/tibiacom/images/header/headline-points.gif create mode 100644 templates/tibiacom/images/header/headline-polls.gif create mode 100644 templates/tibiacom/images/header/headline-powergamers.gif create mode 100644 templates/tibiacom/images/header/headline-rules.gif create mode 100644 templates/tibiacom/images/header/headline-screenshots.gif create mode 100644 templates/tibiacom/images/header/headline-serverinfo.gif create mode 100644 templates/tibiacom/images/header/headline-spells.gif create mode 100644 templates/tibiacom/images/header/headline-team.gif create mode 100644 templates/tibiacom/images/header/headline-template.psd create mode 100644 templates/tibiacom/images/header/headline-wars.gif create mode 100644 templates/tibiacom/images/header/pedestal-and-online.gif create mode 100644 templates/tibiacom/images/header/tibia-logo-artwork-bottom.gif create mode 100644 templates/tibiacom/images/header/tibia-logo-artwork-string.gif create mode 100644 templates/tibiacom/images/header/tibia-logo-artwork-top-slaski.gif create mode 100644 templates/tibiacom/images/header/tibia-logo-artwork-top.gif create mode 100644 templates/tibiacom/images/letters/A.gif create mode 100644 templates/tibiacom/images/letters/B.gif create mode 100644 templates/tibiacom/images/letters/C.gif create mode 100644 templates/tibiacom/images/letters/D.gif create mode 100644 templates/tibiacom/images/letters/E.gif create mode 100644 templates/tibiacom/images/letters/F.gif create mode 100644 templates/tibiacom/images/letters/G.gif create mode 100644 templates/tibiacom/images/letters/H.gif create mode 100644 templates/tibiacom/images/letters/I.gif create mode 100644 templates/tibiacom/images/letters/J.gif create mode 100644 templates/tibiacom/images/letters/K.gif create mode 100644 templates/tibiacom/images/letters/L.gif create mode 100644 templates/tibiacom/images/letters/M.gif create mode 100644 templates/tibiacom/images/letters/N.gif create mode 100644 templates/tibiacom/images/letters/O.gif create mode 100644 templates/tibiacom/images/letters/P.gif create mode 100644 templates/tibiacom/images/letters/Q.gif create mode 100644 templates/tibiacom/images/letters/R.gif create mode 100644 templates/tibiacom/images/letters/S.gif create mode 100644 templates/tibiacom/images/letters/T.gif create mode 100644 templates/tibiacom/images/letters/U.gif create mode 100644 templates/tibiacom/images/letters/V.gif create mode 100644 templates/tibiacom/images/letters/W.gif create mode 100644 templates/tibiacom/images/letters/X.gif create mode 100644 templates/tibiacom/images/letters/Y.gif create mode 100644 templates/tibiacom/images/letters/Z.gif create mode 100644 templates/tibiacom/images/loginbox/_sbutton_login.gif create mode 100644 templates/tibiacom/images/loginbox/_sbutton_myaccount.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-font-create-account-over.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-font-create-account.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-font-logout-over.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-font-logout.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-font-welcome.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-font-you-are-not-logged-in.gif create mode 100644 templates/tibiacom/images/loginbox/loginbox-textfield-background.gif create mode 100644 templates/tibiacom/images/menu/button-background-over.gif create mode 100644 templates/tibiacom/images/menu/button-background.gif create mode 100644 templates/tibiacom/images/menu/green-light.gif create mode 100644 templates/tibiacom/images/menu/icon-account.gif create mode 100644 templates/tibiacom/images/menu/icon-activesubmenu.gif create mode 100644 templates/tibiacom/images/menu/icon-community.gif create mode 100644 templates/tibiacom/images/menu/icon-forum.gif create mode 100644 templates/tibiacom/images/menu/icon-library.gif create mode 100644 templates/tibiacom/images/menu/icon-news.gif create mode 100644 templates/tibiacom/images/menu/icon-shops.gif create mode 100644 templates/tibiacom/images/menu/label-account.gif create mode 100644 templates/tibiacom/images/menu/label-community.gif create mode 100644 templates/tibiacom/images/menu/label-forum.gif create mode 100644 templates/tibiacom/images/menu/label-library.gif create mode 100644 templates/tibiacom/images/menu/label-news.gif create mode 100644 templates/tibiacom/images/menu/label-shops.gif create mode 100644 templates/tibiacom/images/news/blank.gif create mode 100644 templates/tibiacom/images/news/delete.png create mode 100644 templates/tibiacom/images/news/delete_news.png create mode 100644 templates/tibiacom/images/news/edit_news.png create mode 100644 templates/tibiacom/images/news/icon_0.gif create mode 100644 templates/tibiacom/images/news/icon_0_small.gif create mode 100644 templates/tibiacom/images/news/icon_1.gif create mode 100644 templates/tibiacom/images/news/icon_1_small.gif create mode 100644 templates/tibiacom/images/news/icon_2.gif create mode 100644 templates/tibiacom/images/news/icon_2_small.gif create mode 100644 templates/tibiacom/images/news/icon_3.gif create mode 100644 templates/tibiacom/images/news/icon_3_small.gif create mode 100644 templates/tibiacom/images/news/icon_4.gif create mode 100644 templates/tibiacom/images/news/icon_4_small.gif create mode 100644 templates/tibiacom/images/news/newsheadline_background.gif create mode 100644 templates/tibiacom/images/themeboxes/admin/admin.png create mode 100644 templates/tibiacom/images/themeboxes/current-poll/currentpollbox.gif create mode 100644 templates/tibiacom/images/themeboxes/empty.png create mode 100644 templates/tibiacom/images/themeboxes/layout/layout.png create mode 100644 templates/tibiacom/images/themeboxes/newcomer/newcomerbox.gif create mode 100644 templates/tibiacom/images/themeboxes/premium/premiumbox.gif create mode 100644 templates/tibiacom/images/themeboxes/screenshot/screenshotbox.gif create mode 100644 templates/tibiacom/index.php create mode 100644 templates/tibiacom/martel.ttf create mode 100644 templates/tibiacom/news.php create mode 100644 templates/tibiacom/ticker.js create mode 100644 tools/admin.js create mode 100644 tools/basic.js create mode 100644 tools/cookies.js create mode 100644 tools/images/error.gif create mode 100644 tools/images/note.gif create mode 100644 tools/images/success.gif create mode 100644 tools/item.php create mode 100644 tools/jquery.datetimepicker.css create mode 100644 tools/jquery.datetimepicker.js create mode 100644 tools/jquery.js create mode 100644 tools/jquery.qtip.js create mode 100644 tools/messages.css create mode 100644 tools/signature/fonts/arial.ttf create mode 100644 tools/signature/fonts/arialbd.ttf create mode 100644 tools/signature/gd.class.php create mode 100644 tools/signature/images/backgrounds/background.PSD create mode 100644 tools/signature/images/backgrounds/default.png create mode 100644 tools/signature/images/bg.png create mode 100644 tools/signature/images/empty.png create mode 100644 tools/signature/images/equipments.png create mode 100644 tools/signature/images/exp.png create mode 100644 tools/signature/images/health.png create mode 100644 tools/signature/images/healthfull.png create mode 100644 tools/signature/images/hpicon.png create mode 100644 tools/signature/images/mana.png create mode 100644 tools/signature/images/manafull.png create mode 100644 tools/signature/images/manaicon.png create mode 100644 tools/signature/images/nobackground.png create mode 100644 tools/signature/images/nocharacter.png create mode 100644 tools/signature/images/nogd.png create mode 100644 tools/signature/images/noitem.png create mode 100644 tools/signature/images/stats.png create mode 100644 tools/signature/index.php create mode 100644 tools/signature/mango.php create mode 100644 tools/signature/tibian.php create mode 100644 tools/status.php create mode 100644 tools/tiny_mce/jquery.tinymce.js create mode 100644 tools/tiny_mce/langs/en.js create mode 100644 tools/tiny_mce/license.txt create mode 100644 tools/tiny_mce/plugins/advhr/css/advhr.css create mode 100644 tools/tiny_mce/plugins/advhr/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/advhr/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/advhr/js/rule.js create mode 100644 tools/tiny_mce/plugins/advhr/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/advhr/rule.htm create mode 100644 tools/tiny_mce/plugins/advimage/css/advimage.css create mode 100644 tools/tiny_mce/plugins/advimage/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/advimage/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/advimage/image.htm create mode 100644 tools/tiny_mce/plugins/advimage/img/sample.gif create mode 100644 tools/tiny_mce/plugins/advimage/js/image.js create mode 100644 tools/tiny_mce/plugins/advimage/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/advlink/css/advlink.css create mode 100644 tools/tiny_mce/plugins/advlink/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/advlink/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/advlink/js/advlink.js create mode 100644 tools/tiny_mce/plugins/advlink/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/advlink/link.htm create mode 100644 tools/tiny_mce/plugins/advlist/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/advlist/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/autolink/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/autolink/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/autoresize/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/autoresize/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/autosave/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/autosave/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/autosave/langs/en.js create mode 100644 tools/tiny_mce/plugins/bbcode/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/bbcode/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/contextmenu/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/contextmenu/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/directionality/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/directionality/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/emotions/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/emotions/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/emotions/emotions.htm create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-cool.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-cry.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-embarassed.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-frown.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-innocent.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-kiss.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-laughing.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-sealed.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-smile.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-surprised.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-undecided.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-wink.gif create mode 100644 tools/tiny_mce/plugins/emotions/img/smiley-yell.gif create mode 100644 tools/tiny_mce/plugins/emotions/js/emotions.js create mode 100644 tools/tiny_mce/plugins/emotions/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/example/dialog.htm create mode 100644 tools/tiny_mce/plugins/example/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/example/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/example/img/example.gif create mode 100644 tools/tiny_mce/plugins/example/js/dialog.js create mode 100644 tools/tiny_mce/plugins/example/langs/en.js create mode 100644 tools/tiny_mce/plugins/example/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/fullpage/css/fullpage.css create mode 100644 tools/tiny_mce/plugins/fullpage/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/fullpage/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/fullpage/fullpage.htm create mode 100644 tools/tiny_mce/plugins/fullpage/js/fullpage.js create mode 100644 tools/tiny_mce/plugins/fullpage/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/fullscreen/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/fullscreen/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/fullscreen/fullscreen.htm create mode 100644 tools/tiny_mce/plugins/iespell/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/iespell/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/inlinepopups/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/inlinepopups/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif create mode 100644 tools/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css create mode 100644 tools/tiny_mce/plugins/inlinepopups/template.htm create mode 100644 tools/tiny_mce/plugins/insertdatetime/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/insertdatetime/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/layer/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/layer/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/legacyoutput/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/legacyoutput/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/lists/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/lists/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/media/css/content.css create mode 100644 tools/tiny_mce/plugins/media/css/media.css create mode 100644 tools/tiny_mce/plugins/media/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/media/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/media/img/flash.gif create mode 100644 tools/tiny_mce/plugins/media/img/flv_player.swf create mode 100644 tools/tiny_mce/plugins/media/img/quicktime.gif create mode 100644 tools/tiny_mce/plugins/media/img/realmedia.gif create mode 100644 tools/tiny_mce/plugins/media/img/shockwave.gif create mode 100644 tools/tiny_mce/plugins/media/img/trans.gif create mode 100644 tools/tiny_mce/plugins/media/img/windowsmedia.gif create mode 100644 tools/tiny_mce/plugins/media/js/embed.js create mode 100644 tools/tiny_mce/plugins/media/js/media.js create mode 100644 tools/tiny_mce/plugins/media/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/media/media.htm create mode 100644 tools/tiny_mce/plugins/nonbreaking/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/nonbreaking/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/noneditable/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/noneditable/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/pagebreak/css/content.css create mode 100644 tools/tiny_mce/plugins/pagebreak/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/pagebreak/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/pagebreak/img/pagebreak.gif create mode 100644 tools/tiny_mce/plugins/pagebreak/img/trans.gif create mode 100644 tools/tiny_mce/plugins/paste/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/paste/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/paste/js/pastetext.js create mode 100644 tools/tiny_mce/plugins/paste/js/pasteword.js create mode 100644 tools/tiny_mce/plugins/paste/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/paste/pastetext.htm create mode 100644 tools/tiny_mce/plugins/paste/pasteword.htm create mode 100644 tools/tiny_mce/plugins/preview/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/preview/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/preview/example.html create mode 100644 tools/tiny_mce/plugins/preview/jscripts/embed.js create mode 100644 tools/tiny_mce/plugins/preview/preview.html create mode 100644 tools/tiny_mce/plugins/print/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/print/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/save/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/save/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/searchreplace/css/searchreplace.css create mode 100644 tools/tiny_mce/plugins/searchreplace/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/searchreplace/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/searchreplace/js/searchreplace.js create mode 100644 tools/tiny_mce/plugins/searchreplace/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/searchreplace/searchreplace.htm create mode 100644 tools/tiny_mce/plugins/spellchecker/css/content.css create mode 100644 tools/tiny_mce/plugins/spellchecker/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/spellchecker/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/spellchecker/img/wline.gif create mode 100644 tools/tiny_mce/plugins/style/css/props.css create mode 100644 tools/tiny_mce/plugins/style/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/style/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/style/js/props.js create mode 100644 tools/tiny_mce/plugins/style/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/style/props.htm create mode 100644 tools/tiny_mce/plugins/tabfocus/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/tabfocus/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/table/cell.htm create mode 100644 tools/tiny_mce/plugins/table/css/cell.css create mode 100644 tools/tiny_mce/plugins/table/css/row.css create mode 100644 tools/tiny_mce/plugins/table/css/table.css create mode 100644 tools/tiny_mce/plugins/table/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/table/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/table/js/cell.js create mode 100644 tools/tiny_mce/plugins/table/js/merge_cells.js create mode 100644 tools/tiny_mce/plugins/table/js/row.js create mode 100644 tools/tiny_mce/plugins/table/js/table.js create mode 100644 tools/tiny_mce/plugins/table/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/table/merge_cells.htm create mode 100644 tools/tiny_mce/plugins/table/row.htm create mode 100644 tools/tiny_mce/plugins/table/table.htm create mode 100644 tools/tiny_mce/plugins/template/blank.htm create mode 100644 tools/tiny_mce/plugins/template/css/template.css create mode 100644 tools/tiny_mce/plugins/template/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/template/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/template/js/template.js create mode 100644 tools/tiny_mce/plugins/template/langs/en_dlg.js create mode 100644 tools/tiny_mce/plugins/template/template.htm create mode 100644 tools/tiny_mce/plugins/visualchars/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/visualchars/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/wordcount/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/wordcount/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/abbr.htm create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/acronym.htm create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/attributes.htm create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/cite.htm create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/css/attributes.css create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/css/popup.css create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/del.htm create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/editor_plugin.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/ins.htm create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/abbr.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/acronym.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/attributes.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/cite.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/del.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/element_common.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/js/ins.js create mode 100644 tools/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js create mode 100644 tools/tiny_mce/themes/advanced/about.htm create mode 100644 tools/tiny_mce/themes/advanced/anchor.htm create mode 100644 tools/tiny_mce/themes/advanced/charmap.htm create mode 100644 tools/tiny_mce/themes/advanced/color_picker.htm create mode 100644 tools/tiny_mce/themes/advanced/editor_template.js create mode 100644 tools/tiny_mce/themes/advanced/editor_template_src.js create mode 100644 tools/tiny_mce/themes/advanced/image.htm create mode 100644 tools/tiny_mce/themes/advanced/img/colorpicker.jpg create mode 100644 tools/tiny_mce/themes/advanced/img/icons.gif create mode 100644 tools/tiny_mce/themes/advanced/js/about.js create mode 100644 tools/tiny_mce/themes/advanced/js/anchor.js create mode 100644 tools/tiny_mce/themes/advanced/js/charmap.js create mode 100644 tools/tiny_mce/themes/advanced/js/color_picker.js create mode 100644 tools/tiny_mce/themes/advanced/js/image.js create mode 100644 tools/tiny_mce/themes/advanced/js/link.js create mode 100644 tools/tiny_mce/themes/advanced/js/source_editor.js create mode 100644 tools/tiny_mce/themes/advanced/langs/en.js create mode 100644 tools/tiny_mce/themes/advanced/langs/en_dlg.js create mode 100644 tools/tiny_mce/themes/advanced/link.htm create mode 100644 tools/tiny_mce/themes/advanced/shortcuts.htm create mode 100644 tools/tiny_mce/themes/advanced/skins/default/content.css create mode 100644 tools/tiny_mce/themes/advanced/skins/default/dialog.css create mode 100644 tools/tiny_mce/themes/advanced/skins/default/img/buttons.png create mode 100644 tools/tiny_mce/themes/advanced/skins/default/img/items.gif create mode 100644 tools/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif create mode 100644 tools/tiny_mce/themes/advanced/skins/default/img/menu_check.gif create mode 100644 tools/tiny_mce/themes/advanced/skins/default/img/progress.gif create mode 100644 tools/tiny_mce/themes/advanced/skins/default/img/tabs.gif create mode 100644 tools/tiny_mce/themes/advanced/skins/default/ui.css create mode 100644 tools/tiny_mce/themes/advanced/skins/highcontrast/content.css create mode 100644 tools/tiny_mce/themes/advanced/skins/highcontrast/dialog.css create mode 100644 tools/tiny_mce/themes/advanced/skins/highcontrast/ui.css create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/content.css create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/dialog.css create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/ui.css create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/ui_black.css create mode 100644 tools/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css create mode 100644 tools/tiny_mce/themes/advanced/source_editor.htm create mode 100644 tools/tiny_mce/themes/simple/editor_template.js create mode 100644 tools/tiny_mce/themes/simple/editor_template_src.js create mode 100644 tools/tiny_mce/themes/simple/img/icons.gif create mode 100644 tools/tiny_mce/themes/simple/langs/en.js create mode 100644 tools/tiny_mce/themes/simple/skins/default/content.css create mode 100644 tools/tiny_mce/themes/simple/skins/default/ui.css create mode 100644 tools/tiny_mce/themes/simple/skins/o2k7/content.css create mode 100644 tools/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png create mode 100644 tools/tiny_mce/themes/simple/skins/o2k7/ui.css create mode 100644 tools/tiny_mce/tiny_mce.js create mode 100644 tools/tiny_mce/tiny_mce_popup.js create mode 100644 tools/tiny_mce/tiny_mce_src.js create mode 100644 tools/tiny_mce/utils/editable_selects.js create mode 100644 tools/tiny_mce/utils/form_utils.js create mode 100644 tools/tiny_mce/utils/mctabs.js create mode 100644 tools/tiny_mce/utils/validate.js create mode 100644 tools/validate.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 00000000..13e5791d --- /dev/null +++ b/.htaccess @@ -0,0 +1,29 @@ +Options -Indexes -MultiViews + +RewriteEngine On +#RewriteBase / + +# Page parser +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^([A-Za-z0-9-_']+)\.png/?$ tools/signature/index.php?name=$1 [L] +RewriteRule ^images/items/([0-9]+)\.gif$ tools/item.php?id=$1 +RewriteRule ^characters/([A-Za-z0-9-_+']+)$ index.php?subtopic=characters&name=$1 +RewriteRule ^guilds/([A-Za-z0-9-_+']+)$ index.php?subtopic=guilds&action=show&guild=$1 +RewriteRule ^forum/board/([0-9]+)$ index.php?subtopic=forum&action=show_board&id=$1 +RewriteRule ^account/manage$ index.php?subtopic=accountmanagement +RewriteRule ^account/create$ index.php?subtopic=createaccount +RewriteRule ^account/lost$ index.php?subtopic=lostaccount +RewriteRule ^account/logout$ index.php?subtopic=accountmanagement&action=logout +RewriteRule ^news/archive/([0-9]+)$ index.php?subtopic=news&archive=true&id=$1 +RewriteRule ^news/archive$ index.php?subtopic=news&archive=true +RewriteRule ^highscores/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)?$ index.php?subtopic=highscores&list=$1&vocation=$2 +RewriteRule ^highscores/([A-Za-z0-9-_']+)$ index.php?subtopic=highscores&list=$1 +RewriteRule ^admin/$ admin/index.php +RewriteRule ^install/$ install/index.php + +# temp solution >.> +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^([A-Za-z0-9-_]+)/?$ index.php?p=$1 [L] +RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)?$ index.php?p=$1&action=$2 [L] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + 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), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program 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. + + This program 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 this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README b/README new file mode 100644 index 00000000..c188c405 --- /dev/null +++ b/README @@ -0,0 +1,41 @@ +MyAAC 0.0.1 - http://www.myaac.net/ + +REQUIREMENTS +===================================== + - PHP 5.1.0 or later + - MySQL database + - (optional) mod_rewrite to use friendly_urls + +INSTALLATION AND CONFIGURATION +===================================== + Just decompress and untar the source (which you should have done by now, + if you're reading this), into your webserver's document root. + + MyAAC needs proper permissions to handle files correctly. + If you're using apache2, then your directory needs to have owner set to: www-data, you can do it by using following command: + chown -R www-data.www-data /var/www/* + (or any other path your MyAAC installation is located at..) + +-------------------------- + Note: Linux only + If you're under linux use these commands to set proper permissions: + chmod 660 config.local.php + chmod 660 images/guilds + chmod 660 images/houses + chmod 660 images/screenshots +-------------------------- + + Visit http://your_domain/install (http://localhost/install) and follow instructions in the browser. + +KNOWN PROBLEMS +===================================== + - none - + +OTHER NOTES +===================================== + If you have a great idea or want contribute to the project - visit our website at http://www.my-aac.org + +LICENSING +===================================== + This program and all associated files are released under the GNU Public + License, see LICENSE for details. diff --git a/admin/.htaccess b/admin/.htaccess new file mode 100644 index 00000000..4beb9e61 --- /dev/null +++ b/admin/.htaccess @@ -0,0 +1,4 @@ +# uncomment if you want to restrict access only for your ip +#order deny,allow +#deny from all +#allow from 127.0.0.1 \ No newline at end of file diff --git a/admin/includes/functions.php b/admin/includes/functions.php new file mode 100644 index 00000000..ab604f76 --- /dev/null +++ b/admin/includes/functions.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 00000000..d0a16a2e --- /dev/null +++ b/admin/index.php @@ -0,0 +1 @@ +install/ directory exists. Please visit this url to start MyAAC Installation.
Delete install/ directory if you already installed MyAAC.
Remember to REFRESH this page when you\'re done!'); } $content = ''; // validate page $page = isset($_GET['p']) ? $_GET['p'] : ''; if(empty($page) || preg_match("/[^a-zA-Z0-9_\-]/", $page)) $page = 'dashboard'; $page = strtolower($page); define('PAGE', $page); require(SYSTEM . 'functions.php'); require(SYSTEM . 'init.php'); require(SYSTEM . 'status.php'); require(SYSTEM . 'login.php'); require(ADMIN . 'includes/functions.php'); // if we're not logged in - show login box if(!$logged || !admin()) { $page = 'login'; } // include our page $file = SYSTEM . 'pages/admin/' . $page . '.php'; if(!@file_exists($file)) { $page = '404'; $file = SYSTEM . 'pages/404.php'; } ob_start(); include($file); $content .= ob_get_contents(); ob_end_clean(); // template $template_path = 'templates/clean/'; require(ADMIN . $template_path . 'template.php'); ?> \ No newline at end of file diff --git a/admin/templates/clean/style.css b/admin/templates/clean/style.css new file mode 100644 index 00000000..c2f5da37 --- /dev/null +++ b/admin/templates/clean/style.css @@ -0,0 +1,136 @@ +*{ + margin:0; + padding:0; +} +body { + font-family: Helvetica; + color: #313334; + background: /*#f9f9f9 #EEEEEE*/#F7F6F1; +} + +img {border: none;} + +a:link {color: #000; text-decoration: none;} +a:visited {color: #000; text-decoration: none;} +a:focus {color: #000; text-decoration: none;} +a:active {color: #000; text-decoration: underline;} +a:hover {color: #000; text-decoration: underline;} +a.current {font-weight: bold;} + +h5.blue {color: #6b7b95;} +h5.red {color: #c17878;} +h5.green {color: #78ba91;} +h5.purple {color: #a87aad;} + +h1, h2, h3, h4, h5, h6 {color: #313334; font-weight: bold;} +.separator {color:#BCE} +.margin-left{ + margin-left:5px; +} + +.button { background:#eee url(images/button.gif) repeat-x 0 0; border:solid 1px #b1a874; color:#7f7f7f; font-size:11px; padding:2px 6px 2px 6px; cursor:pointer; line-height:14px !important; } +.button:hover { color:#333; border-color:#857b42; } + +.field, .button { -moz-border-radius:4px; -webkit-border-radius:4px; } +.small-field, .button, .pagging a { -moz-border-radius:3px; -webkit-border-radius:3px; } + +.table th { + background-color: #4CAF50; + color: white; + text-align: left; +} + +.table tr:nth-child(odd) {background-color: #d1d1d1} + +a.ico { color:#9d9c9a; font-size:10px; text-decoration: none; padding:0 0 0 14px; background-repeat:no-repeat; background-position:0 0; } +a.ico:hover { color:#333;} + +#container{ + width:960px; + margin-left:auto; + margin-right:auto; +} +#header { + /*width: 960px;*/ + padding-left: auto; + padding-right: auto; + border-bottom: 1px dotted black; + margin-top: 40px; +} +#header h1 { + margin: 0; + padding-top: 20px; + text-align: center; +} +#sidebar{ + background: #FFF; + width: 170px; + float: left; + margin: 10px 0 10px 0; + padding: 10px; + border: 1px solid #CCC; +} +#content { + width: 740px; + float: right; + margin: 20px 0 10px 0; + padding: 10px; +} +#footer { + margin-top: 20px; + border-top: 1px dotted black; + text-align: center; + clear: both; +} +/********************* + Sidebar +*********************/ +#sidebar ul{ + list-style:none; + line-height:22px; +} +#sidebar ul li a,#sidebar ul li a:visited{ + padding-left:19px; + text-decoration:none; + margin:0 3px; + display:block; +} +#sidebar ul li a:hover{ + text-decoration:underline; +} +#sidebar ul li ul{ + margin-left:10px; +} +#sidebar h3{ + padding:2px; + font-size:14px; +} +/********************* + Status & version boxes +*********************/ +#status { + position: absolute; top: 10px; left: 10px; + margin: 0px; + float: right; + font-size: 12px; +} +#status .success { + margin: 0px: +} +#version { + position: absolute; top: 10px; right: 10px; + float: right; + text-align: right; + font-size: 12px; +} +/********************* + Infobox +*********************/ +#infobox{ + border:1px solid #e9e8e3; +} +#infobox h3{ + background:#f7f6f1; + border-bottom:1px solid #e9e8e3; + color:#654322; +} \ No newline at end of file diff --git a/admin/templates/clean/template.php b/admin/templates/clean/template.php new file mode 100644 index 00000000..dfc6e5c7 --- /dev/null +++ b/admin/templates/clean/template.php @@ -0,0 +1,95 @@ + + + + + + <?php echo $title . $config['title_separator'] . $config['lua']['serverName']; ?> - Powered by MyAAC + + + + +
+ +
+ + + +
+
+ +
+ + + diff --git a/admin/templates/stylish/Kopia index.html b/admin/templates/stylish/Kopia index.html new file mode 100644 index 00000000..4662068f --- /dev/null +++ b/admin/templates/stylish/Kopia index.html @@ -0,0 +1,281 @@ + + + + +Dashboard - Admin Template + + + + + + + +
+ + +
+
+
+

+ Right Now + Add New Product + Some Action +
+

+

You have 19 new orders, 12 new users and 5 new reviews, today you made $1523.63 in sales and a total of $328.24 profit +

+
+
+
+

Sales for July

+

+
+
+

Traffic for July

+

a

+
+
+

Last 5 Orders

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CustomerItemsGrand Total
Jennifer Kyrnin114.95 €
Mark Kyrnin234.27 €
Virgílio Cezar261.39 €
Todd Simonides51472.56 €
Carol Elihu19.95 €
+
+
+

Bestsellers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Product NamePriceOrders
Apple iPhone 3G 8GB199.00 €24
Fuji FinePix S5800365.24 €19
Canon PIXMA MP14059.50 €12
Apple iPhone 3G 16GB199.00 €10
Prenosnik HP 530 1,6GHz499.00 €6
+
+
+

New Customers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CustomerOrdersAverageTotal
Jennifer Kyrnin15.6€14.95 €
Mark Kyrnin214.97€34.27 €
Virgílio Cezar215.31€61.39 €
Todd Simonides5502.61€1472.56 €
Carol Elihu15.1€9.95 €
+
+
+

Last 5 Reviews

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ReviewerProductAction
Jennifer KyrninApple iPhone 3G 8GB
Mark KyrninPrenosnik HP 530 1,6GHz
Virgílio CezarFuji FinePix S5800
Todd SimonidesCanon PIXMA MP140
Carol ElihuPrenosnik HP 530 1,6GHz
+
+
+
+ +
+ +
+ + diff --git a/admin/templates/stylish/blank.html b/admin/templates/stylish/blank.html new file mode 100644 index 00000000..01b09cf0 --- /dev/null +++ b/admin/templates/stylish/blank.html @@ -0,0 +1,100 @@ + + + + +Dashboard - Admin Template + + + + + + + +
+ + + + +
+ + diff --git a/admin/templates/stylish/css/Copy of theme.css b/admin/templates/stylish/css/Copy of theme.css new file mode 100644 index 00000000..9a5f2f88 --- /dev/null +++ b/admin/templates/stylish/css/Copy of theme.css @@ -0,0 +1,121 @@ +body{ + background:#f7f6f0 url(../img/bg.jpg) repeat-x top; + color: #202020; +} +a, a:visited{ + color:#993300; +} +input{ + border:1px solid #e8e7e1; +} +select{ + border:1px solid #e8e7e1; +} +#header h2{ + color:#FFF; +} +#content{ + background:#FFF; +} +#sidebar{ + background:#FFF; +} +#sidebar h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; +} +#topmenu a,#topmenu a:visited{ + color:#f7f6f0; + background:#cc3300; +} +#topmenu a:hover{ + color: #FFF; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + color:#993400; + background: #FFF url(../img/bg_menu_red.jpg) repeat-x top; + border-left: #FFF 1px solid; + border-right: #FFF 1px solid; +} +#top-panel{ + background:#FFF; +} +table{ + background:none; +} +td, th{ + border:1px solid #e8e7e1; +} +thead{ + background:#f7f6f0; +} +#styleswitcher{ + background:#FFFFFF; +} +#footer{ + background:#FFF; +} +#box{ + border:1px solid #e8e7e1; +} +#box h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; + color:#993300; +} +/*************** + Forms +***************/ +form#form fieldset { + border:1px solid #e8e7e1; +} +form#form legend { + border:1px solid #e8e7e1; + background:#fff url(../img/form_red.gif) repeat-x center left; + color:#993300; +} +form#form input { + border:1px solid #e8e7e1; + background:#fff url(../img/form_red.gif) repeat-x top left; +} +form#form textarea { + border:1px solid #e8e7e1; + background:#fff url(../img/form_red.gif) repeat-x bottom left; +} +form#form option { + background:#FFF; +} +form#form optgroup { + background:#e8e7e1; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + color:#c00; +} +form#form #button1:hover, form#form #button2:hover { + color:#000; +} +/*************** + Home +***************/ +#infobox{ + border:1px solid #e8e7e1; +} +#infobox h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; + color:#993300; +} +#rightnow { + border:1px solid #e8e7e1; +} +#rightnow .reallynow { + background:#f7f6f0; + color:#993300; +} +#rightnow h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; +} \ No newline at end of file diff --git a/admin/templates/stylish/css/ie-sucks.css b/admin/templates/stylish/css/ie-sucks.css new file mode 100644 index 00000000..27a6c23a --- /dev/null +++ b/admin/templates/stylish/css/ie-sucks.css @@ -0,0 +1,21 @@ +#content{ + width:740px; +} +#topmenu{ + margin-top:26px; +} +#sidebar{ + width:160px; +} +#sidebar ul{ + width:150px; +} +#sidebar ul li ul{ + width:140px; +} +#sidebar h3{ + margin-bottom:5px; +} +#rightnow .reallynow a { + padding:0 0 0 10px; +} \ No newline at end of file diff --git a/admin/templates/stylish/css/iepngfix.htc b/admin/templates/stylish/css/iepngfix.htc new file mode 100644 index 00000000..a8c5d312 --- /dev/null +++ b/admin/templates/stylish/css/iepngfix.htc @@ -0,0 +1,68 @@ + + + + + \ No newline at end of file diff --git a/admin/templates/stylish/css/style.css b/admin/templates/stylish/css/style.css new file mode 100644 index 00000000..345f94e3 --- /dev/null +++ b/admin/templates/stylish/css/style.css @@ -0,0 +1,397 @@ +/********************* + HTML Elements +*********************/ +*{ + margin:0; + padding:0; +} +img, div,a { behavior: url(css/iepngfix.htc) } +body{ + font-size: 12px; + font-family: Arial, Tahoma, Verdana; +} +a, a:visited{ + text-decoration:none; +} +img{ + border:0; + margin:1px; +} +p{ + padding:3px; +} +h2{ + +} +input{ + padding:2px; +} +select{ + padding:2px; +} +/********************* + Status +*********************/ +#status { + position: absolute; top: 10px; left: 10px; + margin: 0px; + float: right; + font-size: 12px; +} +#status .success { + margin: 0px: +} +#version { + position: absolute; top: 10px; right: 10px; + float: right; + text-align: right; + font-size: 12px; +} +/********************* + Structure +*********************/ +#container{ + width:960px; + margin-left:auto; + margin-right:auto; +} +#header{ + width:960px; +} +#header h2{ + margin-top:20px; +} +#content{ + width:740px; + float:left; + margin:10px 0 10px 0; + padding:10px; +} +#sidebar{ + background:#FFF; + width:170px; + float:right; + margin:10px 0 10px 0; + padding:10px; +} +#footer{ + clear:both; + padding:5px; + margin-top:10px; +} +#box h3{ + padding:5px; + font-size:14px; +} +/********************* + Sidebar +*********************/ +#sidebar ul{ + list-style:none; + line-height:22px; +} +#sidebar ul li a,#sidebar ul li a:visited{ + padding-left:19px; + text-decoration:none; + margin:0 3px; + display:block; +} +#sidebar ul li a:hover{ + text-decoration:underline; +} +#sidebar ul li ul{ + margin-left:10px; +} +#sidebar h3{ + padding:2px; + font-size:14px; +} +/********************* + TopMenu, Top-Panel +*********************/ +#topmenu{ + margin-top:33px; + width:700px; + float:left; + voice-family:inherit; +} +#topmenu ul{ + list-style:none; + line-height:25px; +} +#topmenu li{ + display:inline; +} +#topmenu a,#topmenu a:visited{ + padding:5px 12px 5px 12px; + text-decoration:none; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + padding:5px 12px 5px 12px; + font-weight:bold; + +} +#top-panel{ + background:#FFF; + padding:5px; + height:20px; + float:left; + width:950px; +} +#top-panel ul{ + list-style:none; +} +#top-panel ul li{ + display:inline; + line-height:20px; +} +#top-panel ul li a{ + padding-left:19px; + text-decoration:none; + margin:0 3px; + display:inline-block; +} +#top-panel a:hover{ + text-decoration:underline; +} +/********************* + Other +*********************/ +.a-right{text-align:right;} +.a-left{text-align:left;} +.a-center{text-align:center;} +#pager{ + margin:5px; + height:25px; +} +#styleswitcher{ + float:right; +} +#styleswitcher ul{ + list-style:none; + line-height:10px; +} +#styleswitcher li{ + height:12px; + display:inline; +} +#footer ul { + list-style:none; +} +#footer li { + display:inline; +} +a#defswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#bd3f09; + font-size: 8px; + color:#bd3f09; + display:inline-block; +} +a#blueswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#375b91; + font-size: 8px; + color:#375b91; + display:inline-block; +} +a#greenswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#d0e0b8; + font-size: 8px; + color:#d0e0b8; + display:inline-block; +} +a#brownswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#654322; + font-size: 8px; + color:#654322; + display:inline-block; +} +a#mixswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#294145; + font-size: 8px; + color:#294145; + display:inline-block; +} +#credits{ + clear:both; + width:250px; + float:left; +} +/********************* + Tables +*********************/ +table{ + margin:5px; + border-collapse: collapse; + table-layout:automatic; + width:98%; +} +td, th{ + padding: 2px; +} +thead{ + +} +/********************* + Home +*********************/ +#infowrap li{ + display:inline: +} +#infobox{ + width:365px; + float:left; + margin-top:10px; +} +#infobox h3{ + padding:5px; + font-size:14px; +} +.margin-left{ + margin-left:5px; +} +#rightnow .reallynow { + padding: 5px; + font-size:14px; +} +#rightnow h3{ + padding:2px; + padding: 0 10px; + font-size:14px; +} +#rightnow .reallynow span { + display: block; + text-align: left; + float: left; + padding:0 2px; + font-size:14px +} +#rightnow .reallynow a { + text-decoration:none; + display: block; + text-align: right; + float: right; + padding:0 0 0 18px; + margin-left:4px; + font-weight:normal; + font-size:12px; +} +#rightnow .reallynow a:hover{ + text-decoration:underline; +} +#rightnow .youhave { + font-size: 12px; + padding: 10px; +} +#rightnow a { + font-weight: bold; +} +/********************* + Forms +*********************/ +form{ + padding:10px; + margin:0 auto; +} +form#form fieldset { + display:block; + padding:5px 10px 5px 10px; + line-height:20px; + margin-bottom:10px; +} +form#form legend { + font-size:12px; + font-weight:bold; + margin-bottom:5px; + padding:3px; + width:254px; +} +form#form label { + clear:left; + display:block; + float:left; + width:100px; + text-align:right; + padding-right:10px; + margin-bottom:5px; +} +form#form input { + padding:3px; + margin-bottom:5px; +} +form#form select { + margin-left:5px; +} +form#form textarea { + width:410px; + height:200px; + padding:5px; + overflow:auto; +} +form#form option { + background:#FFF; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + padding-right:5px; + cursor:pointer; + width:205px; + margin-left:8px; + font-weight:bold; +} +form#form #button1:hover, form#form #button2:hover { + background-position:center left; +} + +/********************* + Icons +*********************/ +.icon{ + padding-left:19px; + text-decoration:none; + height:20px; + font-size:12x; + margin:0 3px; + display:inline-block; + line-height:20px; +} +.user{background:transparent url(../img/icons/user.png) no-repeat left;} +.useradd{background:transparent url(../img/icons/user_add.png) no-repeat left;} +.group{background:transparent url(../img/icons/group.png) no-repeat left;} +.search{background:transparent url(../img/icons/magnifier.png) no-repeat left;} +.online{background:transparent url(../img/icons/world.png) no-repeat left;} +.pagenew{background:transparent url(../img/icons/page_add.png) no-repeat left;} +.rss{background:transparent url(../img/icons/rss.png) no-repeat left;} +.feed{background:transparent url(../img/icons/feed.png) no-repeat left;} +.report{background:transparent url(../img/icons/report.png) no-repeat left;} +.house{background:transparent url(../img/icons/house.png) no-repeat left;} +.manage{background:transparent url(../img/icons/cog.png) no-repeat left;} +.manage_page{background:transparent url(../img/icons/page_gear.png) no-repeat left;} +.folder{background:transparent url(../img/icons/folder.png) no-repeat left;} +.promotions{background:transparent url(../img/icons/coins.png) no-repeat left;} +.cart{background:transparent url(../img/icons/cart.png) no-repeat left;} +.folder_table{background:transparent url(../img/icons/folder_page.png) no-repeat left;} +.shipping{background:transparent url(../img/icons/car.png) no-repeat left;} +.invoices{background:transparent url(../img/icons/page_white_text_width.png) no-repeat left;} +.addorder{background:transparent url(../img/icons/folder_page_add.png) no-repeat left;} +.add{background:transparent url(../img/icons/add.png) no-repeat left;} +.app_add{background:transparent url(../img/icons/application_add.png) no-repeat left;} +.report_seo{background:transparent url(../img/icons/report_link.png) no-repeat left;} +.modules{background:transparent url(../img/icons/bricks.png) no-repeat left;} +.modules_manage{background:transparent url(../img/icons/bricks_gear.png) no-repeat left;} \ No newline at end of file diff --git a/admin/templates/stylish/css/switch.css b/admin/templates/stylish/css/switch.css new file mode 100644 index 00000000..544d9a5a --- /dev/null +++ b/admin/templates/stylish/css/switch.css @@ -0,0 +1,51 @@ +#footer ul { + list-style:none; +} +#footer li { + display:inline; +} +a#defswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#bd3f09; + font-size: 8px; + color:#bd3f09; + display:inline-block; +} +a#blueswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#375b91; + font-size: 8px; + color:#375b91; + display:inline-block; +} +a#greenswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#d0e0b8; + font-size: 8px; + color:#d0e0b8; + display:inline-block; +} +a#brownswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#654322; + font-size: 8px; + color:#654322; + display:inline-block; +} +a#mixswitch { + width:15px; + height:10px; + margin: 3px 0 3px 0; + background-color:#294145; + font-size: 8px; + color:#294145; + display:inline-block; +} diff --git a/admin/templates/stylish/css/theme.css b/admin/templates/stylish/css/theme.css new file mode 100644 index 00000000..6d341e82 --- /dev/null +++ b/admin/templates/stylish/css/theme.css @@ -0,0 +1,121 @@ +body{ + background:#f7f6f0 url(../img/bg.jpg) repeat-x top; + color: #202020; +} +a, a:visited{ + color:#a43708; +} +input{ + border:1px solid #e8e7e1; +} +select{ + border:1px solid #e8e7e1; +} +#header h2{ + color:#FFF; +} +#content{ + background:#FFF; +} +#sidebar{ + background:#FFF; +} +#sidebar h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; +} +#topmenu a,#topmenu a:visited{ + color:#f7f6f0; + background:#bd3f09; +} +#topmenu a:hover{ + color: #FFF; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + color:#993400; + background: #FFF url(../img/bg_menu_red.jpg) repeat-x top; + border-left: #FFF 1px solid; + border-right: #FFF 1px solid; +} +#top-panel{ + background:#FFF; +} +table{ + background:none; +} +td, th{ + border:1px solid #e8e7e1; +} +thead{ + background:#f7f6f0; +} +#styleswitcher{ + background:#FFFFFF; +} +#footer{ + background:#FFF; +} +#box{ + border:1px solid #e8e7e1; +} +#box h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; + color:#a43708; +} +/*************** + Forms +***************/ +form#form fieldset { + border:1px solid #e8e7e1; +} +form#form legend { + border:1px solid #e8e7e1; + background:#fff url(../img/form_red.gif) repeat-x center left; + color:#a43708; +} +form#form input { + border:1px solid #e8e7e1; + background:#fff url(../img/form_red.gif) repeat-x top left; +} +form#form textarea { + border:1px solid #e8e7e1; + background:#fff url(../img/form_red.gif) repeat-x bottom left; +} +form#form option { + background:#FFF; +} +form#form optgroup { + background:#e8e7e1; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + color:#c00; +} +form#form #button1:hover, form#form #button2:hover { + color:#000; +} +/*************** + Home +***************/ +#infobox{ + border:1px solid #e8e7e1; +} +#infobox h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; + color:#a43708; +} +#rightnow { + border:1px solid #e8e7e1; +} +#rightnow .reallynow { + background:#f7f6f0; + color:#a43708; +} +#rightnow h3{ + background:#f7f6f0; + border-bottom:1px solid #e8e7e1; +} \ No newline at end of file diff --git a/admin/templates/stylish/css/theme1.css b/admin/templates/stylish/css/theme1.css new file mode 100644 index 00000000..0e2803e4 --- /dev/null +++ b/admin/templates/stylish/css/theme1.css @@ -0,0 +1,121 @@ +body{ + background:#f3f9ff url(../img/bg_blue.jpg) repeat-x top; + color: #202020; +} +a, a:visited{ + color:#375b91; +} +input{ + border:1px solid #d9e6f0; +} +select{ + border:1px solid #d9e6f0; +} +#header h2{ + color:#FFF; +} +#content{ + background:#FFF; +} +#sidebar{ + background:#FFF; +} +#sidebar h3{ + background:#f3f9ff; + border-bottom:1px solid #d9e6f0; +} +#topmenu a,#topmenu a:visited{ + color:#FFF; + background:#7e9dcc; +} +#topmenu a:hover{ + color: #FFF; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + color:#375b91; + background: #FFF url(../img/bg_menu_blue.jpg) repeat-x top; + border-left: #FFF 1px solid; + border-right: #FFF 1px solid; +} +#top-panel{ + background:#FFF; +} +table{ + background:none; +} +td, th{ + border:1px solid #d9e6f0; +} +thead{ + background:#f3f9ff; +} +#styleswitcher{ + background:#FFFFFF; +} +#footer{ + background:#FFF; +} +#box{ + border:1px solid #d9e6f0; +} +#box h3{ + background:#f3f9ff; + border-bottom:1px solid #d9e6f0; + color:#375b91; +} +/*************** + Forms +***************/ +form#form fieldset { + border:1px solid #d9e6f0; +} +form#form legend { + border:1px solid #d9e6f0; + background:#fff url(../img/form_blue.gif) repeat-x center left; + color:#375b91; +} +form#form input { + border:1px solid #d9e6f0; + background:#fff url(../img/form_blue.gif) repeat-x top left; +} +form#form textarea { + border:1px solid #d9e6f0; + background:#fff url(../img/form_blue.gif) repeat-x bottom left; +} +form#form option { + background:#FFF; +} +form#form optgroup { + background:#d9e6f0; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + color:#375b91; +} +form#form #button1:hover, form#form #button2:hover { + color:#000; +} +/*************** + Home +***************/ +#infobox{ + border:1px solid #d9e6f0; +} +#infobox h3{ + background:#f3f9ff; + border-bottom:1px solid #d9e6f0; + color:#375b91; +} +#rightnow { + border:1px solid #d9e6f0; +} +#rightnow .reallynow { + background:#f3f9ff; + color:#375b91; +} +#rightnow h3{ + background:#f3f9ff; + border-bottom:1px solid #d9e6f0; +} \ No newline at end of file diff --git a/admin/templates/stylish/css/theme2.css b/admin/templates/stylish/css/theme2.css new file mode 100644 index 00000000..1876b9fc --- /dev/null +++ b/admin/templates/stylish/css/theme2.css @@ -0,0 +1,121 @@ +body{ + background:#f0f7e8 url(../img/bg_light_green.jpg) repeat-x top; + color: #202020; +} +a, a:visited{ + color:#93ad7e; +} +input{ + border:1px solid #e7eedf; +} +select{ + border:1px solid #e7eedf; +} +#header h2{ + color:#FFF; +} +#content{ + background:#FFF; +} +#sidebar{ + background:#FFF; +} +#sidebar h3{ + background:#f0f7e8; + border-bottom:1px solid #e7eedf; +} +#topmenu a,#topmenu a:visited{ + color:#93ad7e; + background:#e7eedc; +} +#topmenu a:hover{ + color: #93ad7e; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + color:#93ad7e; + background: #FFF url(../img/bg_menu_green.jpg) repeat-x top; + border-left: #FFF 1px solid; + border-right: #FFF 1px solid; +} +#top-panel{ + background:#FFF; +} +table{ + background:none; +} +td, th{ + border:1px solid #e7eedf; +} +thead{ + background:#f0f7e8; +} +#styleswitcher{ + background:#FFFFFF; +} +#footer{ + background:#FFF; +} +#box{ + border:1px solid #e7eedf; +} +#box h3{ + background:#f0f7e8; + border-bottom:1px solid #e7eedf; + color:#93ad7e; +} +/*************** + Forms +***************/ +form#form fieldset { + border:1px solid #e7eedf; +} +form#form legend { + border:1px solid #e7eedf; + background:#fff url(../img/form_green.gif) repeat-x center left; + color:#93ad7e; +} +form#form input { + border:1px solid #e7eedf; + background:#fff url(../img/form_green.gif) repeat-x top left; +} +form#form textarea { + border:1px solid #e7eedf; + background:#fff url(../img/form_green.gif) repeat-x bottom left; +} +form#form option { + background:#FFF; +} +form#form optgroup { + background:#e7eedf; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + color:#93ad7e; +} +form#form #button1:hover, form#form #button2:hover { + color:#000; +} +/*************** + Home +***************/ +#infobox{ + border:1px solid #e7eedf; +} +#infobox h3{ + background:#f0f7e8; + border-bottom:1px solid #e7eedf; + color:#93ad7e; +} +#rightnow { + border:1px solid #e7eedf; +} +#rightnow .reallynow { + background:#f0f7e8; + color:#93ad7e; +} +#rightnow h3{ + background:#f0f7e8; + border-bottom:1px solid #e7eedf; +} \ No newline at end of file diff --git a/admin/templates/stylish/css/theme3.css b/admin/templates/stylish/css/theme3.css new file mode 100644 index 00000000..9fb95faa --- /dev/null +++ b/admin/templates/stylish/css/theme3.css @@ -0,0 +1,121 @@ +body{ + background:#f7f6f1 url(../img/bg_brown.jpg) repeat-x top; + color: #202020; +} +a, a:visited{ + color:#654322; +} +input{ + border:1px solid #e9e8e3; +} +select{ + border:1px solid #e9e8e3; +} +#header h2{ + color:#FFF; +} +#content{ + background:#FFF; +} +#sidebar{ + background:#FFF; +} +#sidebar h3{ + background:#f7f6f1; + border-bottom:1px solid #e9e8e3; +} +#topmenu a,#topmenu a:visited{ + color:#FFF; + background:#8f6831; +} +#topmenu a:hover{ + color: #654322; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + color:#654322; + background: #FFF url(../img/bg_menu_brown.jpg) repeat-x top; + border-left: #FFF 1px solid; + border-right: #FFF 1px solid; +} +#top-panel{ + background:#FFF; +} +table{ + background:none; +} +td, th{ + border:1px solid #e9e8e3; +} +thead{ + background:#f7f6f1; +} +#styleswitcher{ + background:#FFFFFF; +} +#footer{ + background:#FFF; +} +#box{ + border:1px solid #e9e8e3; +} +#box h3{ + background:#f7f6f1; + border-bottom:1px solid #e9e8e3; + color:#654322; +} +/*************** + Forms +***************/ +form#form fieldset { + border:1px solid #e9e8e3; +} +form#form legend { + border:1px solid #e9e8e3; + background:#fff url(../img/form_brown.gif) repeat-x center left; + color:#654322; +} +form#form input { + border:1px solid #e9e8e3; + background:#fff url(../img/form_brown.gif) repeat-x top left; +} +form#form textarea { + border:1px solid #e9e8e3; + background:#fff url(../img/form_brown.gif) repeat-x bottom left; +} +form#form option { + background:#FFF; +} +form#form optgroup { + background:#e9e8e3; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + color:#654322; +} +form#form #button1:hover, form#form #button2:hover { + color:#000; +} +/*************** + Home +***************/ +#infobox{ + border:1px solid #e9e8e3; +} +#infobox h3{ + background:#f7f6f1; + border-bottom:1px solid #e9e8e3; + color:#654322; +} +#rightnow { + border:1px solid #e9e8e3; +} +#rightnow .reallynow { + background:#f7f6f1; + color:#654322; +} +#rightnow h3{ + background:#f7f6f1; + border-bottom:1px solid #e9e8e3; +} \ No newline at end of file diff --git a/admin/templates/stylish/css/theme4.css b/admin/templates/stylish/css/theme4.css new file mode 100644 index 00000000..ce4bba24 --- /dev/null +++ b/admin/templates/stylish/css/theme4.css @@ -0,0 +1,122 @@ +body{ + background:#d9eaed url(../img/bg_mix.jpg) repeat-x top; + color: #202020; +} +a, a:visited{ + color:#294145; + text-decoration:underline; +} +input{ + border:1px solid #c3d7db; +} +select{ + border:1px solid #c3d7db; +} +#header h2{ + color:#FFF; +} +#content{ + background:#FFF; +} +#sidebar{ + background:#FFF; +} +#sidebar h3{ + background:#d9eaed; + border-bottom:1px solid #c3d7db; +} +#topmenu a,#topmenu a:visited{ + color:#FFF; + background:#5d99a3; +} +#topmenu a:hover{ + color: #294145; +} +#topmenu .current a, #topmenu .current a:hover, #topmenu .current a:visited{ + color:#294145; + background: #FFF url(../img/bg_menu_mix.jpg) repeat-x top; + border-left: #FFF 1px solid; + border-right: #FFF 1px solid; +} +#top-panel{ + background:#FFF; +} +table{ + background:none; +} +td, th{ + border:1px solid #c3d7db; +} +thead{ + background:#d9eaed; +} +#styleswitcher{ + background:#FFFFFF; +} +#footer{ + background:#FFF; +} +#box{ + border:1px solid #c3d7db; +} +#box h3{ + background:#d9eaed; + border-bottom:1px solid #c3d7db; + color:#294145; +} +/*************** + Forms +***************/ +form#form fieldset { + border:1px solid #c3d7db; +} +form#form legend { + border:1px solid #c3d7db; + background:#fff url(../img/form_mix.gif) repeat-x center left; + color:#294145; +} +form#form input { + border:1px solid #c3d7db; + background:#fff url(../img/form_mix.gif) repeat-x top left; +} +form#form textarea { + border:1px solid #c3d7db; + background:#fff url(../img/form_mix.gif) repeat-x bottom left; +} +form#form option { + background:#FFF; +} +form#form optgroup { + background:#c3d7db; +} +form#form optgroup option { + +} +form#form #button1, form#form #button2 { + color:#294145; +} +form#form #button1:hover, form#form #button2:hover { + color:#000; +} +/*************** + Home +***************/ +#infobox{ + border:1px solid #c3d7db; +} +#infobox h3{ + background:#d9eaed; + border-bottom:1px solid #c3d7db; + color:#294145; +} +#rightnow { + border:1px solid #c3d7db; +} +#rightnow .reallynow { + background:#d9eaed; + color:#294145; +} +#rightnow h3{ + background:#d9eaed; + border-bottom:1px solid #c3d7db; +} \ No newline at end of file diff --git a/admin/templates/stylish/img/bg.jpg b/admin/templates/stylish/img/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1980c13f52beeef49e1aa3ca33b4c6ca1751e18f GIT binary patch literal 372 zcmex=C5UDGKfoZ!!El0siJ4K5fk}{&S&;Gn5r#OB z!+?%N0$iLRyO0EcOb$)~Mg~S!6hRi|h#5De1cBmA?8p*~OcKmft~?1{8utGd0}nGJ z&@yI027891$3nI}fhi1~ZZzS2lb_+G8?COnKWeTNU6 E0J7mVwEzGB literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/bg_blue.jpg b/admin/templates/stylish/img/bg_blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad55db4d40738f488d5c2d37f17d7064b3ebd218 GIT binary patch literal 359 zcmex=C5UDGKfoZ!!El0sk(p7Dfk}{&S&;Gn5r#;R z!+?%N0$iM6yO2Z}7}z;D1sEBaQB^+ASRp0I$iT>oqV)0NlqIR+|8Fty0F^TdG7B=; pGn`g;iZpC5UDGKfoZ!!El0sk(p7Dfk}{&S&;Gn5r#03 z!+?%N0$iLRyO0EcOm+?dMh0e7!RHw(qy#ZU7e7uB|9^{t2dJ1ykXewyp5e$c-^>e8 i;~2wYj>qn~X{UMTaf;cpxxzAAwT}Ax!t7%Ie-i*+I4scs literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/bg_light_green.jpg b/admin/templates/stylish/img/bg_light_green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b091ebdf6105f9f4927e46b7636b127df0349aff GIT binary patch literal 356 zcmex=C5UDGKfoZ!!El0sk(p7Dfk}{&S&;Gn5r$}x z!+?%N0_=~}Eo*S$HHInJ+F_Q`3R-M=1cjng4RV~*|qXS@;{l5tS$OJEv literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/bg_menu_blue.jpg b/admin/templates/stylish/img/bg_menu_blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a406082e665df0cc56b734d548708f1000b3fe1 GIT binary patch literal 372 zcmex=C5UDGKfoZ!!63)L$jm6nz$D1XEXer(2tyjk zVL(SB04oC*$S#Bckj28tDgg8!2RpLpheRf!OU%M76Bj-Vnk*6`2n-Vxc?L$|#EDEo zNX3B-@qAsf#-g&(>IB40LEviR1x~@=OFh}H4 S_ipWK33CRUmdC>XZvp_+jX0nH literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/bg_menu_green.jpg b/admin/templates/stylish/img/bg_menu_green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..503f7198e2783eb088e16e470d7a67fc548f57e2 GIT binary patch literal 383 zcmex=C5UDGKfoZ!!63)L$jm6nz$D1XEXer(2tytN z12ZGgkqE%T%EraWz{HFY0kW7`m{{2afWBttL>6ZhNn~OXoVYM((Iw`PDS|+GCT6qz{H6cnUp3m2ebUY#lQo!jY*JMkinkeZt|{wU-MVbubfhS`R4qhN6O}^*;Vak gO%Dt%Y6dLG<<*EZkz$TkIWyhIe9?g|^8arF09!^mw*UYD literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/bg_menu_mix.jpg b/admin/templates/stylish/img/bg_menu_mix.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c006525b5a88bcc97e825034a1d66a491b07073d GIT binary patch literal 379 zcmex=C5UDGKfoZ!!63)L$jm6nz$D1XEXer(2ty{w zVL(SB02?b8$S#Bckj2cxDgg8!D=)HW;6)}8Rz|^z8y^O3y2Q*fMKn|pXgDj1PDVwc z#EDEn%)C5UDGKfoZ!!63)L$jm6nz$D1XEXer(2tyjk zVL(SB04p08*e-+!0|PS?1FHZ70}Bf~vM6Jq$cKd&Sp_FDUuKySD#!>lniW}Ih*6M9 zF>#_&(EnQuJj{$hOPK{3>>2Ltp1pr*;rpU;cDu-5rzgGKSoUO+7E5=`Z)cA)I$2ZI Oq_lz-#I30Re-i+bmo^Ci literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/bg_mix.jpg b/admin/templates/stylish/img/bg_mix.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f328fb3c6e4e33571521fd8f712775c249ae0a53 GIT binary patch literal 353 zcmex=C5UDGKfoZ!!El0sk(p7Dfk}{&S&;Gn5r#;h z!+>r?23$Z9W>i6D7B+SP4AJKqE2IP&85miSbu%O`e3&FG^8XeC56}=ML1sY)dxp7U f2am%Pv4$0^mu)Wj)?T9jG1Yt3My3xing2Hd#W5>H literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/form_blue.gif b/admin/templates/stylish/img/form_blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..8952f3830e1faf0c4e8bcdb9951587e297d85d3b GIT binary patch literal 272 zcmZ?wbhEHbWMnX6xXQrr^24`ZfBt^`@%#6mzu$iT{`c?S`>#Krz5Dv~-PhaCKR$W; z<>BkkAHV(j`TOsWUw>{s`|#@H_q#7X-hKJ$(VH*#Uw!)g{nwWtKwbZzzyJE~%a2>n zKRkH#`N8YYkKY1?|GfC{?cU2zzyJQb_59=aUw=M){rUIbzfa$P-Fflx^{4M|KmYji z_uv2j{~0I%ia%Mvx^+M#$WIJxx(B9y2+~*?ve0qC!@?d8Chwz16eNvSig2+q))=t2 WEHaKPFcX=eQe>s-GRs|n!5RQhE|G5l literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/form_brown.gif b/admin/templates/stylish/img/form_brown.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e1efcc7f07188174626e887b29fa97a65803bc2 GIT binary patch literal 273 zcmZ?wbhEHbWMnX6xXQrr z|Nrmv$CrQq{C@uU%8MsgpFX(o=-#Pk4=+4_bm{f;n~(3EdGg@ggFDB+e0u%$^P87X zuRpne=HvTkKYx7r^ZV!TUq8NmegEs{w|B1}Fc1wCf3kqp>VQa)pBUKm4s<><%iJ19N_HHaxyvgCqC=NLgf^CS}587BFb5tTzEYB06s~{(~4o@EMC@ zI#s4D6_uJXnJ09fvTsop+R8$tSR+?tK|V#rVmgzWCv@h#A!W=}o)q(#Onq=UUr@2E zj4-ZR7GHH;!~fVdjlV#D<<%232d6Ks@y+H&d#lS18&~fS(dd4(_tx6qergXo&v4!A R?!aa5;Pq}edF-si$uDiTjC241 literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/form_mix.gif b/admin/templates/stylish/img/form_mix.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7fd05b6c4872c9e1eb6cd1106d957c4c6069050 GIT binary patch literal 273 zcmZ?wbhEHbWMnX6xXQqA^v0dvfBv4n^Wf9B?|=XO`|<1duRnkO{rmU){l_bho?d`t9|n&lev&zWngX!`E+5-MN4K*4^{> zAAS7x{n*XBPu{-2_3Y)5>$hKg_;}~VtN;K1GY}0Ff3kqp>VQa)pBUKm4n#b6C}824 u)5P*=22aSMW9cQ8iehWJG>Nk%w1VF3U#0K@`uG0+{`2$h`}+C+|Nipv z?Dh2T_Vw}i_w)Dm^8Ebz`T6$p@$2>V@csS#`1kbi@9O#Z_3-cM=;z_>?B?p}R} z>+0n1?&$36<>~0+A^8LV00000EC2ui0096p000Fe;E))^1UyIqSybaN(sBfX5>?mL U?OUJyo*-waDSnPe3?>8sJMlqoYXATM literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/graph.jpg b/admin/templates/stylish/img/graph.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56b1469d874ebafe75cee9a62bdd1c1a0747307e GIT binary patch literal 40975 zcmeFZ1yo#Hvo6|52m}bBAvh#~#@#&xryFk?x8N4sAwVDm*QRj`?(QDk-95NNun;Uf z_P@_L|9)?rd(IyBo%ik;@&l{X@_JPcfdMp`bo_ z{Hj0XaTMv#5dZ+~Df$x>R19RK7mu$|000y;6tpL($dAV(KOTUF4nTTZ$LEF%#N(~U zz$egn^KynLVU7|OM;Omeg-{m-afner!vz4IAS0upp*ZTf85l9!2dR@+E#U?jDn5wITM@#nxL-J0Q_J!zIq5x^1dL7o}ZrUpO0iqeX z>&DWMj;@uCTBnZusM-NS_KL`AN57mqTvGoZa~@||Xml}fiO4n2T{Jh>w)ao>aE_nA zRI(t3X$kftp}}fsb4xCGV|h?|s!5^#&&h*^c4!G8s7zUb>{ne1xp2RC^Te2qGtx#p zi53z>xVx_@KIiJ#hz~TrBJl%HHN6O|YByOXj`OW3=%GK}FE3^3zh9|L*K(;1V{bw*ZtgkLpEPlMsH;Y#2-ld2C;GZ^~G%#>0PoPw}1Ap2S7MQ z%y(qZ|B+AsBY*eaQ>9VvVFhVLMh{V9&Sztt<=?ldy)!Vb55tdIxZSx}cUjpkN?;&9&CogGaF>%dUb@x-{+I(#0vgqz|j9 z8QV38_@NHY9&PByZ^{nMH#D_-Rw>Jk{wbIu2yp-XzGQy_Ryl=@T{d(y`D7xVmS$r7 zysmbd(QKKWS8rD&F?nn0Mk=z1XDBbYjljxj3Fy+((OXFpQy24<0D#rbk|X3`_HyIY zmAeJq_lLLRtL?iUg}4vvA6sI{WV2>%8VKR_t%3x*{BjNH8PoZm5mSx67MNYJVA&v8 zs-a&1(q4lJbW7*UQyFQ3rSfTAcarrR&JF)mJAGqY90$E{E(E0G`v^gJIT&f9dzqN8KZ&Eg=O@qpb6Jhia9*%DpD=`SYZH4pDvLl{p$4 z%8=h!%sUm+K_st2rV>l+CMpim@;R+iT#8ZV?JaHbH^>XjpvHF3=M(tCv_Ctd_e<7W z%Q6|@`+jINqKxM+vR8tGSz?5a8i*OdGC>w3#C@;Z>8@&iyd$1NdjI4T0YKyb@$@5K zDV4-=x=0970EJtAVSte!C z<<3aIcMWAQQstJ-U11zobX6T9`99o2BRV}ICTr;2j0Wq(TWXTS?DQ_7=bm`yj%;U$&_X%3oSSZ)NEu% zJZ_FF>6Y=FBShG^9sQLF--i7n;OUi|q#UF1RNEg~L3vV(XtW?gHj06kS`1JO@#VSh zWwYm!&hd{5Z=ZA7yAl@QQbYLhG^CdQYv?>*6}|~xAlB9aR9X{X zRPH1-Md$QryAO#gJ6HJQ__} zG7h(JE1D#WOlXBN&!Ty+Dh4I^0YEtwbK$J|0LW_v-%-W-bT+qLhmc+|*oF{aou>17 z|I}#%&)m83KrB*46z%woO@yH({!+^aCM8}jkujb8?s5^f_A423iyJ2_*snvMAkV6S zfPoyi`D_(ri1?T9m_(m_cH)N&KJS%3C6`Gs&&<(*g-rQn=S@M!l?f2^;Qb%muT$*c zSxit_P26aDja~MJnxs+_*igu^l`j-q=f!ZwWOOm_i^Xck0q5$n(isSu3R6K>G+Zq= znHx6=&rk81AUi#)u~&(){R2lMtfDmq=5JM z6n(O%JhUV{h?+nF+D#*|+R5($g40M`{GRELsd}3$Pe2#%k_n2QxdPBC;bA=6#26iO zvY-y*h<_PqRKbco$u=%yy{GaYS zD_m;QFKj4%`YN|>-aeK=ssdusnG#^U^kH~|i)q1mCLG)@wHQG~u9_cCdlw2-9G_PI zopw$8BjV8)&(9tJ+jO=|1+8>ut34mrZs#5DX|+$k&pXnmiiA$yYSV;GGt862rLD{y zy(0UF>djcqJqqN4w#dQiV8zyQw#1LQP_5I)i2`jQ1;6;{sF)) z?!6^{D*pC2=MK)wVEmrIY9!$qGgw4gRsY6wGrfcFufFmjJ`X%G8N5if?fq=Rnd|gh zS#ckcBo8Yx4gph^q_F=KeeJcD(z1MXd9)heokE_br<+1KK-kdOP^M(Ck5BP_gl{d# z=!HM?i9;NDpwW!Rk7;MSafNBYmohaaPKbT2nL?MT9D2xyVTf{K62kNkaSMOSQ)R_% zBGLZo~qoO#FhV%xk;stj}6eyqmpL&^vR zGS2uCFuCy`wk3*l0!`SBz~+{3!IXA(Bu;Bg(JXpj?*mO!-gnd6%()1joev9R{heg;;`0@OJ$XjU*(|@a($uS5C8x?Inx8k<29t7WLCw;fRN%q>IfErr? z^K|I@4BV%$26RuZ>a%wO_d(y%|8c_l+c4mMAbCB& z>&|TCRZBeUgmW7OcC@9L;*`$w9b#ozk-=$g$UH1v%V@`LM9+%KXel&br{@}F&{Jl; z<6ZFdC8}=umk>-QS_bL{I;y0FuH4}$(|)y%O2Dq0;bLf ztZ7UU^t0F?sT#wW-;xEiyZc2C0L70nzoZ!+0D5>~kc>f8fTMYTjOYb}f}@2+YATHnM+;&kL#UVYgF((M-!P_7 zJH#509WTg9z(!a(-3D`qvfrwQxS*sSs$G2G>^w@XXB?6pkiO)0Fm(nds0cVKrW!y` z#f&!e2)u=LEVKKiR=&M^B|mjcAkoFpB)gqAiM*toZo`;7sm@tYJLTGqpk7r=s=p7s zIs;~k>wlnA7B{3;+BkY)ereU{42^|&aDiejZGrz|PJ7N);(RMps;5zr;l);3swf&@ zT>&74gep37N$;)UB1|61sSd`*pH@*;wGtZ#E5v44_prgiO1bcN;+uF zA^s7zWVx*q_DGYy=SSw(Qzbj+fvgA?!%Hg=kK0>bIHTBvX)Lvb1yt^FTkH6nz}x+Q zLpPCsy6V+mkxgzdRRrE-FVb!zt1EI!^0z4FVk zO{vusk;j*(37ipphD2R&Fg=%Y0uAOaQ{ z;vBOTS{T;Sc9`&v+pZ_|&RuoyMI@4R70f3@Y?W39x=OG1=}9@ryfeYDQ3Ri&LtxL)FnPwJbyqTDBB zZ+&;RGQn3KMd|D%O8DW8q2D0JK(Gx21@(0v<2yuF`JuBukSio0L;xl!%}gf%@scQU z1_o=v)5?&c{k8oN%5DjN+(fuaz-Q`Y&B7H`ahc5Rdc4<1?Hmis^duej)-}?|xyjI* zBa=5ZLTAa~#GGf&onYJ&jqJY-yMn2lc}L`8iFMV}40CgS%EntvP-FQ!&iG6)rLm&o z(T7Aq&VA!?!(dlSN-(*t9kMeLTU6=0l>4VraE(rSdkq&s;16a_Z2W+gSo`Nd3;Mn| zzp!XKcqPpbDA-)ApP{Q}EY=`IW>B<>(~8@&WU%I@DCxWXjg?nCF*Mr>KR1QH&s4r= zXoXX3I8WDnDh1!Vew}?o%ck~>tma}Dr@wRXBOxQ`3qVeHU%PfWNXt8wD)w3DCh61LVst7Tv;OgHg} zf+|qy=IKIT=C1>**JGx&pqcFwQrc9*FvlN%4fmg2o@_7gT`J?=fbulSKe#M+w`v{d zx98~V5mxb8JOJ1fzDQ|=O}*S&aXDDc@eEyGCg|HgelKNXA)Nc#LiuA_>beGV$ojLe z3gUdmImKir?P-aoUHJN@^XQ_>@wIDXc2BI~FTL}%T%mTqV`P3-8O%kct|_k$h@DadjYn05ZF0ta{bt} z3^jsOd}MY1F-h^>?@t?7(n0Zr6D|Hf;JVTC!GqV!!`f8>T*V1H*m+$Q$yP{zs6_yH zxmyQ^IPdAT`~u_l9X4&<5o~A9Cy}T*o(CMRYYNx=$RET_@@w(DuJiDMNq7g-&q!;N z*V)^~H5Ia1sLy^m93k-;!pr!Fjc$>tO&EK6scv;14g!G*K+hyji+B=P9_`oqI9J2E zKP~);x4leosmyW%s&627{JGrJs(W0(o}C@)9#bFxO`~AZSe^12|MYwF}o?eF=n5FNqYwPZKyJS9_WSrTHvBg?+z5S>7sk~8`Dww!!R}@|8=K}JyY7kFPKTtu&7?k-D1nzLP`+{!~s=F z#A1EjpzbsgSJ6SoPcv+hZH%#hc%fN(WZD0sOrcr3g`Zq}2t#<7xOy<0K_zBPM^>;x z`%fo$Vw~HAdgRA@0d;gD8g6ZtS6QxL2@}Qom@6N-dJ|s%Y2sC0KXvy-nSl@}-q^*^ z;kT=!+TlnzBMpD2#VM2N!nZ%PlKk|Y-ld4U}*YWV!Zv(vV+k8W5Xux7NfL zr)d3=fuqaxYnk3}>y>m>+*g?p=jfSU>m}{2()}4~N9-({groh$j%!WRGQI>{E8Y-=zJi?q&toy|$SXQ7;h8ta#n zwOW1HX7ls2b0WW?KUIYpMX zw)IaOD)ZqvQ7jCK9H$oOJ20v}WCL_8r?srO=?>tM??4ObCi$5lEu`!@P( zxR19v`l`Qa zz3U`y!5{~$+3TOFHR$$N{`U~dc*mXIQwS(NIkU*H@q0yLyWc$pZu*!nuH!pr1?x=7 z?z1?3-=2S?mMU~@Me>Q6I^Oes(^7Qzdralk$>RhTbEm8xoXFJ)JDbYVN{O|A0hzIK zFc1WIK|&b^Khdio6#nE7fb){?NZz6Dpgg_UgH``%vWUS}{dOBm=ERH~GZ8+U5$c#l z{XY?Pwk_E;Z(2fn7oKYDT(Rg%aBbC?g%<1OrZ=>fch@fPr?-Nx7t7OP_hv&~^QiLO zeQ6uAcoOY%APydw!DcRu|8Q1T`U9X5(bLoGz1C(P?ns?Vy^;9(Bs7p=v-z|tqwdxC z>Q-D_YOz+4xmq}lLhiJV7HjtmzaYPUz+4)vefAv+1HNBQW-rSXW{*7pbc*gO z#P6+x1lXx!=PL;bSy+{MW(Yp}rzYa8R; zA9d^9)SP^Z5$TXyRv+soiW_qt>~25(G1Kchgg!U$MZ-&Khp2GbCb%kKT!shAcW_Wa zw8~C?Ai-6fe=4btt)r(OL(cIJQ2J+j6QKV0RtC#?o!&j;l0Lz1t+cu$GN&W>h#dtI zx_NN|Z2zGC;!k+`&sN5ti+}G7Z143LK44JKlP9FKr7lf3ab`jKBkUGF$`aR>|1krU z-y`Y$|2v(&mKnUY9=BBmo@B~~M$d{^FE(wh?8lI(hOT*z1|*!LzUU_)OnNo{>y^z$ zzbGlYwECvkt0V-h4-b!$Cd3iPE$kyPpZiir9-QTHOWeffp+?4XUV5lJw zJFz<=jia(J1vyx5S&WfE1-4#aqmN72)vhIy>L1!Z`z=9{MrfgEVz06vh@lfdM(Q;F{ZQGGGQCU)i0lvKsO4b0Rj=?IgJvL3Stmia%#n# zbuqkmL9*U2MDRiHl{j&bb<1T61uGT=(RFx<3KeUrV zP0cMdM@LAjf{lO9{v-JKyYcAyTbD!H91rL9<-NXriud4S^Wj__3usE3-@4{<$TBfr z{TvIg_M6?EMDocvdcjGX~O~05MKv4H>k2ozk%J9dZe*8>mv!7*?pEJTa)P zE(JW-2o`x+dsX^G&Nna6sHa2hDvK}UL~nUJ7+bGFCKsgk+1i!| z!gZT)n;vx|bKm)<#$;>a{=}$zxdt|nl^>NYK43gFsx+lP%t^^9)}~vW@K)O~wi^%am{g5?{xT z(Lg{&=pz|WOd7Uc@zzc)Q?p}2s3JisQ6ixNa?hNNrd>QR3n3{LWEznlHu#eLtk@7L z8413H7R36#cf(B=C4RNjPCZLe0QR1FoKE#Ib;cGYY)QWDiN?Kj2VUeKN&;57d=Ez| z^O_y&!?tQ307Zj6R8;$TrEan`HgaRJOXa(emnkW$Vi2{rlqvh!y5e#-?0cM7K*=2G zYxJ-lX*Yd>)X%_zrq+fKqO-1`8SknP%3kH%$7{B9fFp z+&O$X9yN6oPg#YmvqYOKobO!Ed}Vp??l+(`Yf`GKxsywgVI2KuvZ@1J|HGZ&hNQPJ!HtFx?l&4f3$~ii2d9 znr;<%&ErI&an^#w`mRrmc_!7}qpOYpax$9m!IX6hP6JE@&1^xhKD6RCC77HWMT?C2!!s|b)Z!D6w- z&f~CUP&RNG3hWvt$X}0e-7-y6|yf*2VZ|2t=5>o&=c!} zBL|SJ@&@vdcjd~OJbPsz)KHh!ufkUI+lE1sg$*k`Ow26>Mi0yCC~2}{q1F9Tz34RS zi#rt!hr&50JfNnCwXqUR&R$qGZu-t}cRJ^Fldg8WCXTF5VJa+p8v|?-Co^TdK3Z&H zWu2vXxI|@>V@d6d9i79VcCPhyHbpA?$FD=U4Agsk*(6RamMZ1qIth6xWF9J*(+=#{ zqzpSwe$3Rl`WHniG>CTaw~u9oKl|*B)E4kGnbB-a`-fa>)xj27TnJ=Yy}kj$RYFhI zi&{Wqp~jcgH-vDb$lq=2=v|9sJ+ug^D;2PGzstHC!Yzenfz#&Rlfy5`HIs1`H_VF zf&(}EYl2r_WD9|Io=$6Y?_3`M@8QU9!k<>lvwSmdb9X!1F>GK0!Gl5Y&O+8W?Fp&X zVf&oB9rTN6L;a{hG8`bY2IS`T&s1`<+5)Qu)++Spnek{p?eM zu5R7d6S~-r-~8WriR-ke2-B*#(tvTEX232N-@r_bY*N_ z7|zg!%PFKU82B3G;ZaR!;O=!whi2q3Wu!>gs#vD>qj@aU5E0<3KS%YMGYVce)xeD} zbW5ZtAPGIE8vWfC@3Z~wkuOx)x$t;fiuC~4Gux1|Kl7sfwXeVXsPd%WiBFUu@eJLM zFHaFbN^AV;i9v21RwFgxi6(D_$-H@vb6Jdbrg74iB+AfVCYV|Tz2yM=D`weVZd>BX zW(_(1JuAigLb-A#GGPJxN#FORjH{7avcA7;Vp?G!}O zw9`~Va@7XG@V}|w(OQ%sIppY?Msy1Ulc)6REDV;R!z4k2l#-@}OD9BcvagB`7jJXZ zVyeQLb8d5@T&>cM9Ab!%eLn))TLF^^o5t{zvmTFF2$6AqYkNa{>u)68KR^OAy)3Mr zQK6S~kRk@fCw6&fA7;XZ*cT@_Y~lBQFWTd zcl|cz&YAVX(r2&xub-LwnfCzb6uHs-HTKU>w7W#gkO${D1K{7!zL>7{6BhYh6(v5R`{gFVP84V+$HZ|_nRk8X4}h|* z)$4MRjSuDjrrLPQ$8_*-f%qG4k&Ew5-$2j1FGD+Cw{JZ~Kad1+bquIuj!odeO26V| z@AEh{XLi|z($O54pilfJ&Y0=W*nN-cRRcYh*P(%(P;g@3XpKJrEW?;^2r(7HoD4OH zEqZ~>6u&ZZR4YuQXH;-s)?VW#Sqj_U-mR@`u$cwWSX>500)>g*n_U*i9&Nw0ly1+^ zC3!iiL#w7(B<+qv_ocIM$Cl%%**xZ;kdFhQ*o>1)?ytL-U$&*@qPv$3{bFd&>GtO?D+C)V;q1GBg2OIsWQP3xi;NorQXk>Ib9vkEy9iExCpuVq82@n`|0i$MG0fQ6bu^_lzgWbuC(UN>hdOdvj zNCl|s;*S^JwK?_1Kcx>H7R0D5+*Rl0(0$^gOqA41GLE-0bxDrKakJFIK8k51lNEwv zr3ICKiAKXklC29_G%Hn6@UUmnrUDaY4=sV#?n2nnYt0i?Lh_4qZDOlQ!l#|HS5P(5 z(uy={WbrtmP&lP9mDB^k?lDodd1hkZwh2WP$-j~8&e4j=jNCd%+dq~%nx&^q?YM4q5V&a%6pKC4s$$BZi8_BswM&h#e9>oaJ- z0IcN^uS3~MCNGsafyl4N<7*>`pOTzbHurvIOjP>G<4Z1xA}{M_W}$j*^|i_yRV?Bd zdheuYutzF$!7RHq4t*7eHm$E$nZB8W=^*wMuKL8`iHW0JY+pT9Q?V#7N1*vVL3NxY zvseO8(uKCc`sxEnLdhCaTQ%HFFu2rI6luM zpx=a6-~^W};g1SML5<op zdC0O=a6c-={Lwu*Nk}Roc|X$4%0|kc4TKeDo$bJ{nDDK?+5C@ zIe@MAx19nXfohYBMY>%3+7OcR(4P{B_$oeK47&@$dI=8!bZ=i{gpjefui`qR!&_{Tl*lf}<&nRrvw6wu3c>%JI=Qy)m@3ts#csptrPUi*S; zJtCasi|xU)ad@=_@vCJO8ra>}uS}rx3q-k0(3qTvfioNN`Up+oY^waMRA+vKTR%75 zB^#&m?+Tz=G1iUDDDo^b?Li{W@W)Nx!aI>|YaUN6MoGymnp2fw6}EVppe2sqr+y38 zAe%HyNVNeh1;3aD#2`eE03x5r76lW z963AJ<4{o|-Xrvy3@eYBa7B=_9A$25U|eS~HK=d?Ti+m1WFcZU*ahgok!DJx5d3Q( zSLr|jR4C7AZ9z>fdA~X#rH^RDk@*Jmcy}nzn2#F&6v4<;*!1lgGt}9xJSzLinOl_D z*H4ArD=psxy_YT3SuOSCKcm6(+$EGQJY*IgH^L^~>Q zZYFj#3198Mz~d)0wAkXXF(UPJUv{(G+*QT9LdQjj={pXRx z&TmMof=?!1rg5GjrG7;l^w%K(@dOLEt*=gqz3n#Zly1o3)NeK7sh3nCVWq`zarNz zu&%-Hs`4rRfXkCA@p>qQL#?7fKR=r|w~+aFS^9?+G)d(Th@4tDo#TM1jYr+5^Oy`~ z*5Q1OL@MSGno*ln*L=yB1GQ79U5_M325iB`UJa?u}6n9E!(KuS>nXwoGu|76PpRA!Ii-=!G2C6Ef?MX+@?iU$ z8TQ5~YgQH*Uvd#GR;BR=R0%3jRuwLYwFM<;GDne=WV=!!+*u^Q>f20~U8tyK+|yTy zK4G^b`zG}v#B>MHjQza)Ju3@>phgG#LcIoE&*Il{4*=NoD~(EZtt_5$YdU*6>`Eny zs{{L$@GdeQBR%F(d=wX(-U*zoq|yn-u!A>Q(c5sbl~!?5E?xcmG+fSqQKQ%3_%;_a zz2~QyE>b|op4Vo}*hJjdI0{pVO%)Y+E!2evOl3(IW?Jlj!6j%Va+a$vwpU=F1b;Ub zL*Bb1FdH$Hxhr9GmXuePR?Zk`3{+S9oSCa?!cAX*RhmfilU0q^PxEs6fTSM-Oy_je z*#JYUckHpz@8$EH5&#V;iQMceehO}1^XXv9VTIEw54$v6U%PhBjHqRsk}z9|&RhUK zy;(4_NC?iB$M?c3DNnbX?;2fJzN{~h-s7AQ%pDzUdfVY=xm=_3H9O3_5g3wcQiM!p zKb`uvDuNM5(~6UGObb0Iv|Zb^jyt85C{^OE#0)qtGu-oFwjh`&D$?O#b}ew-w^C`n z$p>F_4CNRoa*C<9`ra#Z*4GmzQ19VX5U3QB7(8LR^5g;FoOxAB_W+>r6B*+@Yr}G>VMWIkRGc5f3K+9G_ve@ zQD*;9J9C~~cL;rWn6|nLn}IcEvRU>?h0ecJJpcO@bI}KRZl_aAH}(}xTYZni`n%z=qL5is()D%@ z`@W~UM{vh-cXuGnA^u6>LPK>LGyNW3|8(KORim!ywL>)r5v-CUaqz?aX#=BSIehF2 z!&1o~JEG((sD0Z)#ZFRe1s*$H8n0&WgqMSu{!pg%Zv&+HUrR#h8;IGS6Rw|muCC?zSp$zeh zvU%DRfeVeUdmS%N zRDuIIYv@+HDZGs9?Dc~>@>~2Cxuc^Agslo#{3hH;6v^zl;P&4pWWPCx!xEc*W#&#N zi!NOAZEUV%2%FW-RKtZ~6bvBdoQ<;5T6jNQvWj^=&rr`bR>_@SS=(5vbJzD_r5R*v zp|8DolPH$@#t~1Tm=Q=q1Nw-=Ug;|p;WbYzrT5iJyg&LeOi-x<$KgSd0nv5zRLQc| zAIrDjUQ3_JrNuJlNZ+-PKk+puzmA^4&Wm^VbZgh*vW6c_raRP#!jAK!e-P8(L1H3n;YFd1{cDND zN`VgQKQi_GNS8wv7GF~7O z7T!@C>VK_G%c~(+OPYyIHqDywkh!?Q)EV~3)*ztg+7qS?m~-H%mGA2^R=I?zs*0;V zhn7qe7kF2yNi-{}QjFD1In#?$qvpcKflHUONAA(-?sG>bMyh(g2HD^_E4&a*xW#6i zCjJg-v9*npOwvMW0i+ef-l&-1V9*xE-#?skvf9oq7PBPb*+j(x;rhvWO zc{4QQ2^DVN%5)s(o7UAs2y&=7Z6?CS#!%Zjp7tiTz&8qmY8F+EGy4WLNwlS?Z@Mza zirM$NqV!_TImqx5e1fH{7*onQ6rvYHF1>1Ar{!H1SX{;gYQ?K$OxglDmFe-1(qh{} zV4rMreN2Cc&wIpw0Nb0M94V(63EG+_O0QLAQW#I_)!(A}U%p^<^wIIXtheqG^Kf7< z)-Azq7mLjTWy#K)5l0hDM_p8ZvEsBTj+R!EZ$y;6q~GG07B$SGqGBnyAkMGg+4Z8{*BJsJ;TYGTGpUw3!Y?X@K;gI*f}6jRpknCp8meaTX@M0A+Ta;af3%0f3ZrJ z(RrRQeba-0*O!q5O6UyIekWxjdDA*V01&;Bf7Vd^X%@`ypTd0jNMrX)5hS?p=q#I0 z#@B7b#!8_oShV)O#WqPlE72%AHwxS&Pc|`mtGl&foGe8X7xy(3#Z$dFU%jbBX|H61 zYHxZL6ej?bcw7A!X3xghzmhkya`=UxbX7IIZ2Xg1P@c}STUQwDI!@i)caUCtw0w5r z3=U`L{?W42Dd+Bo{wEK_-Ww|61yi;yX}pS_oi$`{H58l)vd~ms4=E+7Z*HUcvqt@w zHX-xJJk%_y?uUc;WkFw9KTJW8VK=pXIpqE5YbV!m!3*<_liE~!ss7X(>8ZDsOw zfeW12(bm<08T+KRIfSUzA(JV|Rln6{cgY#X)N;fQCOMSDKPpLVR&wz%V|_nR1wM|X zy)9Q+2{xn@I`bJIrJq%fu&48tYfkOZR@UGzE__AqfP60XJB{&qQa#?(JVK!5>@5DM zU-stLDJYu2R))>Z`6X8FR(1|_N)W)( z1qr2!9ATG+OEV3K1mh$z)!?zPZl;rWl8+=ur1e)H3(Pq8>xg^ve-O;N6_bpeA~U1h z$&aW%PZc-OH4AF{vAcq(E5s2{BpZuc*>6+4FVDuPe?UrWWI3m?;?Z>Q=11NbntFSfb52e;Wl0^HHRQ zv2l(n`?N9DI_gu|Rvhz^I8}Rfd*UuR28a>Jz^<4 zY|4*3vrDhJfg#R0Ku@`}l zoqAvW-^^6M2-Ny%{${4lw5G&oQnTUt5G5rO=2rryf0rLB`#-@CCGou-vvX=e&M!SW zjmtZ^%B*SWHCsBC#YJnUw6GRXrI2QuFI2fDj2jx8Y+E&Ci@Ys>RU=$#fgLVaPZN}b z3;p>Cpk)a2so2`=-xUOvV4rwoR(&ZrSM-G;zvHQiDKBqaQPakP=aF^mxhhv_x&A^1 z%{kZyk5waCOr)7O4?-}Y9t?_)DB2?=uk&$S;eY1q?7eV4XyJ-#8gwR6kwC?JOqf#)3Gz}QN{ zv1$F}H1hqgp2JKo;ZL9N^~*`-DKoMREbf!Ivuh*47X{MC1=5cZStI7xpwM?mo}{cy zhxNg9R&Rp~Ax53Lk_Q53LFKdV(}r~~Cj%eHdq9v3Ui9aEYVutn|=L7Ny+yp0KHNSv#2o5++BKoWVx)d5J4CWMVl7 z55hU}d;F%~fP!Si5wmOx|4&%v_RZ@?Gn`2mZ}G*Syt z4?8L{`lyD2bl10z>ht{3YUih?Q>v&(R14W5sIg+H*7)E~e2%>RxJ(Fs?y~s4msAaj znit!4pJ4faKZg0n+|_ed-9}l#l)`W4HugLwA?FIIc#dwn>^*f|#m$v25*CX^99XmX z10vXDaKce7SOWpMIZb#5d-4MS_sJpmNc|#n!Hyh!0%&ULg({(un11$RkkN|XD1SMs zR7)$#I)hFOXsH!;kBW#+{4GY7mV0nlROXuY8ROPs^0}L$OX^Q`jHgs53LiUw z!yFrTEreJ*LhV~;9J}@milGcnv9Vkpi&YhC?8O}2(g?lO6@rgKEJ@q&Vgw?yCK*}? z+Qitb_rS)c42eh>MH!3XRw>cyy~&4)q`A>XIkKMmGN)Yd{8sx-u>rz!gi67bTC|no zqQIg9GBdaG?0BL3i#%3J5RdF6Z3q~y#f$%i)JW~-_@SHBO`#PQss3)#sw;kW(lmL3gcI#pe28qh3rP?l<5Fn;y1PTkn?sj}uXG=^NlibdWQ+V3fEWW$Yu9sof1l*@E0%HcZPBi^m2D#yHf&%jT)UReTuJ-+2*Gdqu&n8Dt+zB zpVPN$aX31o>wM;80d|^$U41QNJ@uqxAfOS8H@fl~4)mtc72_pTXIR{fRiBvQRV>x` zotbZ5h=5;sPhakR3!6Y}jB#OA+;M1LzqD9X$EFv!e*g$tm+TSFY&TgruNV zL=EPaSrkyp%G&>r-lM<%vIJR;uA(i&ZM>s4QM!jhD$Wuz0zXFI+9{t~Z@J(Hz$vs>@HeN=Y11HO zS(it?gw@4p(er?aoj4)(i}l56KHLkZcyL6HqYwFuXJ;pZ&Lei zlP|dPTNM>fnFzY=|Lh<7uWOMax!qfJDrD}>5e^^}I@-#Ou}cJL5sxRVkG+kb(2E+P zZa(dS^V|$4L52n=ta&xAwW%3C5p6RMtRww(6vY-q0(doD)+C9v&6O8J72~?y zvE+tLx6N@qkFm~q%3XpZv`r?QtN+qhP9X#jZ7&rgKy)T^xQJ@}ikCLq28fSJC#N)p zq8(W=w)N!m^JR!UD<_T&1pHkJA}?rcA#6lRMa9IGi2Dj0RX@_8#W7S=Ym*B0@ZT|B z5rb#r@_jDyvfwJQ6gQS-;)dnqkjM;6Xh{d&YM);_kL_3bG(G^l4V|r(-?9$}l)l>> zE{b}NGdf1r5(x#B*z8Rf%V?TcJD^S0LVS9#cAmZpZ0n)r6)G~NsgyD}s5FP$5+_+q zK&YwFnMwLN#@uj|WCpV@rvqrj{mu-#>RImEqenmV$U>sDLk#H=eDR5fsUV935-quj zOo+T(2DnqxOldEV5NJ{Z`Adh~CG)@bK#7R{pBB0QiWa#a95y9`8DIocqEiAEn37*b z;-yvrSC2qPBGbydm8HYZ=SrSMA!0$X!Zm`~(C}vMi5mK8pn*vc8j2y{9!<{|1unD2 zwtKih`2b+~j8ToJQNTWpud zYML3gb9pU}Ne~;Q-JJ@>ULAZ1Q$974*L?xh4}d8=pkapxq_AA?8t_L_-1Na@22F?TLXpE`URf@Ab=^ zL}zMRyq8U9#i6PQx#@WEk~cmRV8#bP{*-mFlMcbs$8$Gl=P4!_!PDUP=Q4KX9DA(V zqG9ZRX(*BVw}uka|IZpqzV?gEdHQzew1}5E%2F-4V=kU|TsQJId@Q0)21VmOwy)#j8XBdxvi~gcz3l>T zthU7k8n%jsnrm6k6=g#U3&w^8kMb9s>*k%{lSjqF-8qV{rv{}IuC#ToF`6+0{;&4l zGOF!v+xMr1LMc|XxI3k^xKkX0lVHJ$yF;-8E$)&8cM0wg+=>-11lJaKD8*W=f6m@x zKf7m)d&hqE`Ja2wId|;5$;g|G%&a-rTE8iu?Al0|7p(7@XG)%zP?woMDoymaj}2P1@J)#|9u!ki=(f+;*1k%%Yg||HRBL8i7ivMGNck*AG)BoSi30r@>HH>njS15Z@7>15@ zoe3{FALPx_9vc6en)&mlDIY6#VY-}iV5$n4|9UR?HLG#73n`HBIJ+J74fTXbnz!NElCZTg1jsRuhIY2uoJ(f=M3i*@7PZNVh2@a?{4Ys zgP5?=TKbf4)ZN(y^7a|ZXSWX`?NCvJHdDXeNN0}NQ%=kG9ENnBI}8cg4YH>tu-H0* z2VZ$iC?&w0$s5Z<>~R=LW4z>H$4-5DP@L~J#uVJ?m8j=h_> zHmRti#fajYrv%KT@X=UR$TL24l8j6n;p{+o5lxXxXr?}H1-i@{CVD+t5?TQ?+@(&_ zN68RNm1&=G`1Li24;!hC&{FTwQs!R+6&eaCHY!9%FFMb=Bu8LzX~|7iG|5<%)|a8u zdHR>14mM(3SMWCJIj(Z45$rrtG@w7OX_+CZOga9%+o!%)!C?^?GaLHs%&`{-LE-b} zlXeaMH*zGlET(!An@$AtBE-8jCnGt*8+(9pDkLvV>ztlj2r1yf8egm7Q~V;=KB>%_ zhe59iarFx&`pKL~(KqB25C0Sg*OVTg2X;jx6KwMpa!gqq287neHk2C_3Meh4m*{}M z55QEQDhSx!T*8agdDbtFk{XxviLsebv3gn5cX}<0o|{DDKY)q#EG*~~tL&qVfm~nK z)G_h4SGa>cn;a2!61S+5Hoe0D{j+oXF#s?hgjC^Qa>+#tA;)ABFk5yWe#pS-N#f(< zhstonZmHF298a>q;owESw*ZhuR%~abDU}IZWm=%G0!Lncq|pv0^KjtLG!WAil{15V z8_Ut^T8&|7PEwINN7T+VF+-_HidKEC73Qbd(k#kVb|Aed4N%jN zyY#_u92?uac8k^*I=yZzV(gCW?6NYejbxP&6&XEp0$EChX}uD5jglvN6xLIkkC&J( zcpbJKIoJzrBaw~B?iY{E(;3gUwGl63y^w3sTPjF>nGmL0>0*22X{MbcYbsDtV)MA- zuEjzAN)8fWrKfXY>U2!>`J=3#F3)kJcIVQt-Rcoum1JG>y#Z0hK;9uo3#g~i%HWXx z;u0nO)D7Il!vc5>J`k9p<(+2keL@AIwHK>?<3`tq8{bq+N*MA+lS7HkMZflNxGUEU zS#}S-1Aq$GU)kR&Cuq0unL*_88PhFQ2_}jWWQ<7)U|tID(?;rh>I_AF#YOyd#}EwG zE@+zAr~lSMMR8!1!rbvVw9qw&}iG( zJSRsdnfscGL9=O^kEVM#l7&@{+$Qib7RpbPbr$*lfukCu;>9~wBk@~mV<*sZq(ArF2Aitpl8JXdqI?7>+{ z5XAg25HeW*_6!`neSnUxebvaUU(0L&I;h)K*3wJ2b>z|NX7|L?Ff?$boHpLe${TOP zo7U9&ka!1NX_)+3^Qbd%c zW3war;f{eRyT)&WIxEK+p<->xW0@6nG3yfEJJVsKIg>qI&IMmJbP>FjwLAhmdd^6;9zIn!s-W-r!)i&kqq#c;nQc5pqxSl_1tFHa2XR zBo5WrtOF0|`marin4$x)X(g6!B(p-|>~%o;^^-)J zh$)rX>S;;3V2$kJeH$?5XB&8lm^)mTIu8;ksx;H1doIz_ucYNqjPIg5d;X~1)llNO z;N&n1Q)FhM2HTLC3J>huC000$L`kpW%DoIn3V^?FXTSK&$6k3~mY(^lpmyLo8R97{Me=FhVowu=T}8+jo31_7Hll`VvJ)o@aO)1DkeLU?CX* zy#~L`JRNzsVw#F2qDr#uSi~jW73nez_~L=Pc+AEIoD5FV1VUN&7N=6BV$ciN)&*eu znP!#vf+~b6{Lnk2t1tV7Qvn4wEEgXCyNIBmU*ajIa282dcwqrmZ6~%bRefUK+gI`< zYZ)nYj+K&1NEqlrtng!AMPo9Jh*gd^W>*J$TNbRHtMOU}tOyW!Yj7Mv0`LK4D1%&M zx*d58WlAHY7+GTlCrX0=FereaPT*N3Jb_U+7UCWk?&skp4}A$_mAGB_S4fc2Cjmy;ch9${rAf|J?TG~ohdQC8p0BM}p2ln_2L z#zk)Dq!`)aLB?9CiJbZ5%%=0^w@u4%r~1%}3s3=kw?}DEXu#aV(Qc$dCQuW3Lcwk` zR#P~z#2+)0@n;Q4<_Yycj|{Lg%(!0y7_EIp=IBRziwjP*$yx;n{pR;XcHJzHoGt9F zf;6z12~+q(V-u|bfilT}x?;$n!!`dc~6w$wo5f% zz_qS*vAo1U|ACO;GsxAezbg@WaDIk6tvLG76SPA)V2?ua*ipKkbFiOxO_#}b`ks|_ z&_^c5!^MvNXwsg!kd}%Z7=%;Om{r7OZPn;Zn zQzA}n1#mT00zE}l<@_=yO^YYIP6YJr; zTL+^a+pea|D~%xm%%)Kff>Nf(@p*#la-}%znkuY-ktL&+B$;^zNl4pa?C9_JiGEK9YP!$RL(nkfqVv^_k6u_4|DaN!~cG2}v%(;bPpTOPFr1 z;zkf)Dk=5amlO&2r!zP&2!LJwqyb(0(y{Ie+kBM|csMR?6H&C)zAhtuhaPju-DvXLFsm4ZYT88|@~5kAi&MkuTHs>dys3u>~g{e+<`08JK(U z2IUt@?5oDX?QCb=$r@jwQfYJ2xuqez=40}eL)pEDkKkczDBZXD$~oZKHhjB_yJaWi zI{J#O@iWB0&@U7X*TegcKf2z2{1{Yj*13e*3f3z~f9kb19Fg3T_*sofwuoSd=Zth# zXHM_rV?)QKBkPq_gJk~!Z^FZZYYAxrA~pNyfioCeJ%jiIPrbTPLEZOe27f3_qYZ5$|)rM-Q{J3(?Vh-GDE7MTUw=5~ax$4uU2{5BK%F zPClXXNH~vN=>L}L@#S0Uie5tcD!;xZ_~&vxbZISh90$-8ck2U_SX35>grr6E$g8aK zRMRmN1}`@gqlo69d?qKUowgqw$hxl7IYv0hah%+#MRD|o%i-riLC)GYR2WWjFm$3x*MaSNbS<@k*MzAA#`9?EY#1_io$eOePxo^bDWvsQz2SkDm+$Svd@~>@|?0?qbuG#LLq^3JqT-Ig_1{)O@+3?|fqA8UtQuhFv!|9mwU1ULD z>Was`gm=#|CRK3q+O8m{Piq?vBGe3$pC){&JZGXMt8{Hf@2Q)jbx)*}0^iLw1r+$Il?sI02m#&SDMJqn(y zF}=hmU!@0L4Y0jB;pwX3BPUl(-OJZKORcbk7f*3>{zh*)bNw49#N)r3o%Sbd#Q#mf zWY0Dk<)>vyt`@7jsr=qDP;4=@TZbklQnQw>mPHMJH~A~J?(cP|f7oU}QI_3!*E1-- zFX7rj*8YJGn5fVSV3feKcvky49?HR>_*!gV_Wfhuq=u)cMn^+44OG@Bvvu9~bcUvt zN&I%SU1+cIv7PnJXS}iJ5bg#Eg47RI)R-!!P$SqG3Hq+6u5VU(XdsuoTp)#9viD+@ zf8r5Wl)Jvz!r$P7{;_@EeLN%HG;oCfwL|kC(R%(3NF*25aX)%%1jQ@MIH44OCs;4# zgq)JP;`I7qyJEBUI@-%m^jn)eeF) zxCHw8a<+`c(Mv!vW*OoycD9xts#TnkEzeb&D?hm>;<~;VxMF!&z_mr1dorr*$lo9X z{zSC>Av1ant)L+EkToMl-Kx#`vM%gc@9oczeN0*o5Q{7xVCg44LzYsgHp{rKsf?GM zsgIB9<+sg5tYHzdMiv`=$J=<#g=+mwImoKgmuL9F z_?s%(HVCi^aDLpa5G!x-h3ji0AIZo#vMxJAz=~k-u~W7 zMc(?$cm18Uh=uZx;YTq>9u85lx0gQ{Q;dmusKQsDtUE?^yojQ`EU*VA$vAX;m98kJ z&Y;7l9>=?|vwh8p<%`!`h1+@^YN^>iK5h7_;Pdx{=i!|I{44ows^OTjAEP1hqCk0( zCxuDn&I~S`Q~WT0V{lfwl63> z`4;N@uM; z*vcT{4K;PQvh}4~+6_yWuS^qc&aB^s*YM%v=JEJYvHlAz`ac9Lny(|_%^8+*aoot4 zhTE0M!h8I|5?XP|FP4RLJ0sD}BwIN;<1Csqu=y%7?iV-*!kTY)ns57d-=uWp`ih4N z)3WRl&BlyW^)06HE=`7UWDm#Na~>W;uRMTx=U$<3pye*T!>@1ux6 z?xR%y+kP zJPkW?G8v~9JF(N}ZQqvo{0n8dqzW@ONjJ3I0%PYFO0tV!@|J`A-7l0)y0PpaQ-8SIKQASll(8NY4!F3jc0D(HdE84${2kNpftxdv4-BrRc z8#@|oT~v1;v6t-v&WG5*$k^!ODv5i}3y044RK}60(=4=?t!wL!6Ll7jVK2J_KU@yP z{Ty~cuwmY5l|vw0im5n+6JrL2#21QBY3t|8meu)iX2Y#84EGyE7#2e*)qWN)%v`+k%1Z})uJ-{hK5 z_`ZG*?WOWRBl59%+SjV_?81Rk9K2?H8)>MX5VzpwOP?owObOG+s5icRGKYiFrV$dY zp0sJEGG-u?=Sh>Kzhl$qF590BP`5yW#gJXYk_lM|pZ+Nc+xbYTl7Ws{6%b|#j9kTH+CkHb@LmP58 z^~FG(hQuy%8GM>vS50Q2g4Ulp!=@t=O%sd}UgX%1NYwTu?NH08@v!Ra_oP8It~0eI zWnP0^)+zTC74zMIM8%|Nje@f?5|&VwaXE|pxf3nL1}?_5k{Ydsk0iuI+jjxzKFXQg zif`oMx+H=ul*-{f0ls5j(ZS{~Ovu<}eECc5sy%@f^}P77^%HS>o}yYte-?fx7vtEx-i{OL|mr-tw~7 z8E;)!wHAYQ60JK;%Y7+Pj9q&?6SVneM5py>1KN%ZHn!ih(2D z_$ah^cfsM1-82}20CwM02=jS7(sOxQC-9Ta^Cm#_j$-)O$!w+b8&`n3+D)9!@os=m z;g1Rbx0b(9m|pxsiQCTZ@w&JW+y8~~@bVmW!>2Pq>3UkAKk$$`xxNtY@!(Yi)5BL{ zhF{T08NYew)uM4Xiz?JS4pB7QX3|vcrTLbk+ppVmFelsYq(5-eUSUCkO^(B5s(xmX zTclhM6d1pU`EU)%nfrgp-=@?8rnY+sCIW3sH=x}8d6_JQh*M;uu-rXAB!SGG3_s-A zwx!c|&Ep?;-ZuhC)PHlYG4a2<*EdXGMMKkXDU6Vq5S6?LYNN=YQC!m34$sNwTnC|q&^TzUJXxn^;h0CMh3^+u@%ad(}q#$trVu@Qs3rO{Uq z{51y9uzT$$wa_#Uuc${JO=LTw3eh9=WC;Y&$f(~}8}DzcZAHT{eSKxTQqsZu%=f0f zV5LSr`iY`kVA_O|8jsw^t>Ea_#2k&g^+cPQG|&62-pM{#8Rn4Yk=>D=^XtNvjBB>j z15LM?C)X>Ky#&wZ=#+=y8S|t2ohsf zO=YZRK$c@s62>yi*m8}HeA$41Ik`Fg;q+XrJ??%3>1w}~%y{=VM;te7zJ8Y^%}Q8#Tt@b%@<0@l_gzM0sgpp34pFHCXelAo3j{1a)2{X*NLC)X?WX4u z4`g_mcXKd$2Qd7FLi1T7^n1_Z+-21b)|V-=PXp)vcgdHfPBFhbV%*>U(cj!~V%Ha7 zd+&3k5OoH^=@k^oKsAgs4q9mrXm8Zha8Q!Cs}|#d0iSsp)h1#a$}0!#TFa&ebFEur*TV1yQbX{931b6Yl~kDaj?8?eCK zf0qnDSu%lC9<2~&4zlZHHN^*VT3>RjgBI_Jzfi+=sr&x4+HTc1O zB=dLY)S7LP#vg}g=ucSgpxd_x``|Ube5`RXZO4|@q>Q{s4gGwfn*9@GV)Kz4PhRq? z*Bd`{IUlhTVo;gss3Lnh(V|nrx`wLp_GwtoD3XZ;9Sn>xi*)IYj*$I1pMC>ty_3ia zz}XCItT{IR@vO6$CoW;{_Ll1y^o1O&hRs*Ou_ypo4~YwPFf2wxqYD~E^AF7~HzLHw zFOjBM$Wwd@3R`;l2GcT1dK`^2Neo>)5&`Kfm@U1)z#}!T^`s)^UWrjwsNdmvj;Bic z)yw*Of|fk&rNchZj(AY;UTW%xO>9KSh?R z)Oa&at3*~bJgzP-k~sargEZfTC_NNo@2dGIxMnW*kDU-*#EI43W%FCF&7?w<;J$`j z`^T!VVKCBeb=l{}x`X|aU&dPDBA8;_?-cbIYmUnIeo)X=0AZ%uGuZ%fhq=8H;}nD( zg1G?kGR7IdP*@ZuTwD0_vewJI`+#Xr7MeP>E=Vf)Z&IxRl$voxs%Ty$&~Z7Ff11uR zakGHs)N4DbPq*C0Q_H|TRS9?`^G7>WO4`bp`$yiCxx0;0?zwEy9AaKacddnb)Gpy1$FY_ z^Hanc0tit<#hlSnOg?-9BpjdfhbyP4VrmhUvU>uF;FUtZ><_61=5o=HjsqL`OUH>X z)sDHWenlAo>ga4m!eR$oeifO)`vNvZGp1XWT{<``Pl))q%5b|))$TLB@4JjqAzvY^ zE8rv#?MRRmb(~d%gulEOjJ%*=k2!o{>+o7P@i8%MrPz`I zftiGE(;7#;mmz0*r#1>79{KIm9KkWu1jNXOry;rBqPkeD^>_d*w+kE}lIh0>a<)Qx zo7v`jKKVz!9=irdvQyw3!Y3z4rPa!Wqmi!RtCoztcOLN>tS+zn>j@-~! z5yO+6Ji_&b1UfRYkKVbkj#}Gd*HK;RM4&0aJ=H%GYQ`L!=_QaypDRGdU<_K!=9cDO zEVz!fZrpML;+5r@70ioK<-*>~Nsgk3wrlqh_+v%EHAtW|F&7y>k^rJfrD4rYHz^Ce zwspO-S!lrntz|M4u|%JfAji^N2UAb<_8y%=!Rt6q!1`N&4!QeLt`;*tvotiwHA1*> z6AwVl`9qTY0|r=q7eBN7e~AJ3yG#^$-L>2G49k(?<)cQ7eLzaym`#)YBb)U3lIaG5 z4J9^QoUE>cJnR=-L+a#Cb;~4y$L)42mm@1){Mok)M~RtYoU~Uknik#Fh=3NP+U@a> z*=YdXNk`qqkCF4MDfclVKkgPq1tzF@fzRW?H2#q*Jd9hxVh8TCpNvf%i3cpfkb}!V zWVQU`%|8h`h%-em>i)Ib@UPV1AChMOy;FmKskpf=zq?x@!72T**E8d-X%i<4YZyLM zmLu6cQAlVI`o<=KYU&e%D) zuwOv^F6?Mtl=O&~^zyotPTPP(3j~v(5&5%vQXOX}%~lVSMaAn}?}RM9B?nNanm>D` zDE&NpjvW&loSQn3!(bNtxdnSnmCDX0{mm`~9+cHvUGwQXXS);2FN@D&7%wk{Vb`KV zub6nfl9;n+c+HCBpu9BYnSyJw%5tLLl7N@ZrXj2cXu@dEE z(0S)a$+>luE(h|U&ubyk4NU+aq(Pu^bKZpR51Bgeubq)kF1x? zE1HdGXzwY&D$vUbk$F^Hdfu9I^Cs^`rU|0QW&sq8Y>aD}Y~jgZX*QihD)0g$)1za= z=V_@>%4_N++-71W19lz>5_5W&H}h)Ee#1E(*|h4J>2YTf_Q*#A$liGZ`xmS35Vt#$ zicQUJp8AMP*NvSKWt%8$(d=fcUSLmeI%rQb;uENj&m^`Xn9LN69X_#_YR!G#&TtQv z#%n;6GoG`}4|lnQ>KU9KaUQDHm2-kUiuCGuIqOS;_Ga#N|CBT68T8_Jg@4-~e(?NF zbtdU6W_#NWIJlbrbgG1(6bMUhnZ!1%YGotmw6a`_agvAr(M(18OllN~m{+i>0`+VGr z=^bz#zXa_j%25Y69dS8X<7~k&s%;T)hMSvH(_3O8ro;khkk4zQ-s|fMAN>JOC2n?r1!G6Wen<4tmwOW z7r2v^?h_I&R9{izBi!4f%J_}tsfuXeOpjE31v?;$sCY6WflV-*%J>&bc*aD~aI<~l zh%nPDzm^vMv3i73d0|m`QI+&c$s5P>Gxw{wnmy5l3?>4S5Rdj$w}l|>3;B&1fMjEC^K^Mxnry9g;-(FQsf^`V$gvS?jNd`wBsA5Nrm?Q$5> z9KtWiEWo2oFno?L_>9#$+q*aGXZ{m;1+fSQR#qyOoz$EnDXQmc6#%d#VM-QM0Be>< zjM=vLEai6bw+y`9A3}Ds|LukB{zuDo{Z)}{?WQ37syOe9zQ-{`Rb{W)yI#+Vr^wp; zK4Jqt7jJ*%e`_Yn`@77+eZ#wi5ul)KKAm*pdHwuKTYXi!*WvQ~+a=hn$X;;ZWC=)Jc_#KE zOt_sce}g$!3{IM<9Jss0&BFjx%&jP4Tr*lPr#;~mB#%NeZcE^jX=NOY8VXEPjE#Jh zJF zN$iNK@z{~=a_R*9Ur#OnJ0a%(qNkQ0W28~6lPHRj=z3VY=?UFe&(6`5Z$&-H>w-}y73?{MT? zyn@0nSxEZHc*N3n#qc`vvS*K?4{^g(Q<;_4Z`87w-o9o|hDWpOV?z8ltu-1pUIViq z-Dloa*Q{qk_eL>_;WdMG6frJ(?5w#k?~%Ja zZ)&*5uyVFEWGmV6t|@|3-639N4Yi!Wi+9kZ6%wKI95ppNfy9xy)w!^J3(p? z5L>KiNS~8uS8gAv!5oa=;6M&?Bx_oXnq{nDmD_eVNEOnY9~tnx zDf%anrNgw@KQr$aifS|&?Pg<$R`Leq+xgy6d8jy$jG~(?D{!Iu``ri(Q7r7Dt1ad ze0KQk%Kgn)NX55`7;Ov=35vv~Y5+&540u!sDANkSd)V;2FME2LZ`4(UA?9EBDqa-K zo6HQ>>PL8#|5+=BC5N4``|EYX1O3|#w~B_Etn_0Na3ZF0(`jJCs_)(_P+&#(XJ;I_ zCn6GVf7sS1k|S`&(3mx?v0uGf#T_C#{DPOFHIo5wb$uhb z6OQN8WU%Hq6ks5k%37DbNzr%}TzXIcn$^F%a*djEL){j1%4hd)#Ls3ozZ}uwnyfe8 zo$%La4JZaw-BNjU9v4yn-Sgg+K)<{)=v18uD3Zf2yJ`5=Q+6LGtozd|MDKJ$T@~iP z&0DDN)?z9vYzdy5Czoua&7r!qB9+L5-97mf-#TY(;pxv1X`8V@Y2sd7RMQ?>4ZuhrJYc3%%kl+IJ!Q zUa0o2&-GSB_AZl@2jaTe{YktY*V1F}s2elREpCvorEMBFZDW~_iPO6BjH!{vu)Ug7K*hWE7Q=aJTjkr?Qn&@$S@}Oz7R_xQTO* zbQ_M*4I=IsF(YgTva-rU!_|!0u^$n(~8|^W_C2#%VfjD(N&(yRc;Gs)4tJu zSB%|P0PwZ>>ftF@W-9|Q(68cF?>ms}KSZ&B{)(?d-t_RX%~}KH=C`i0Rvb z@*|{XV@p8=&ms8?ysS~Eb;D6m7J4^abS)R)lyzZhp8FRc+k_ci<~^`p+rIS&8%N$1 z@*}zz_3&I~SW^(UhLyySfYUjq*1bkZW#jGH=CkT8j4|gga-dsB2652faZ06ek#*-} z-cA17UnuH{##h4o0bf+b{)isue}DGq{B&3i(~dlTsxe#E#`>cQdn2K4wRR|X(wrbA zVZ{0IwMjxM$En3w41arPb<7K7xproATL?RVEToW@enK*{{{9RNos7!WayJxCjV+X{ z-|&!HvL7EJoNlTg;!ms~wJlMU!UQmIODTNg5dCx?KKd`W;TptZx{;}Avx*m%CFB<0 zUE$NvQU0c9+KZ}Yl?z1srBXzSz$k7$YPWxHg@!Ngn|IqdXBKKRYdo9ESwAB;uii%8 z3cs{sygx!?{j4cR?&Bwzkb0X2!s6jwO2s$WVhaFI7_L2p%1jhAkIH|VBcLIscojiR zz2UVCCSga$LkbFPtW5rin}BTQgsb_cIaRZAO3C&Zglr}TXH=8UeajUYch1G8&cR}+ zA*u!$Pl70SOj^!YAcT+ptQF<~Nh?GR#udYTvt=z(G=dhMG0EIOkg&~!)p}mt_3N#7 z7OBCl8PZU@8wEmwX`wQ{J`F6OSkCi;L7Dhoew}hfpMW%rdJAB`3JZ5{ts?cvyF?H$EvPldz!^R+|-?hjA`4Lo9Z{ovln8Czu! zDa{G0M|Os0!LE^fIiuayko$qyPZUPY@F!9ShrUo2)~`px7P4wDJ)B2*6S6ka5& zV&I|0Zo!bDZ$BvNWjIJtA^=B2d$Tz<0$khFHNh;}XO9QIr2(4o>tN^tQW=%(^`1JAy*B0bwEM*y2Rd)H^&1 zFTU0FKG12w2NEhU zpFnm^L3{P7E~o&6IE)CjUaGf0AVxUPUBbP)@A|cvlm0K1LKKthN4z`VR1Gdp25E&78IsE+V zPHhxM3(9*7wz8JF8-DQ30#Uw;d32{p;|EuPMl@;g!c>W^dbuR|>wN|Tm^_4vRLMt+ zLj|Lrk;tU=F+U2&wfEWJrSvA$-H@X)^9z$Y+v#(Y05d1Z_vUv`Y<;uIHYO4Mr}9UN zT^zn-HQKX^A2vuc^`8_Gse(b0mFy379|KUXx^O@fQ5?%xm)83={#|QK7A*cXK9bn> zH^l`V>~RpVP}uVzxuVhNjPHDm+i}Z;=`qbi;?J6~iwDc@B}VH5ng<^*UOYh9qmT^V zH)YG0)jf>vxvtVQ-PTYwU7hxQ#>vjnL)jeFjbXOzef%Nld# zCreia(^fOBOS@PE6=oL%^cRVOhSY#RPe@TBT3QQkH&ly=k?$g=$I>TF#Rd}EGuxS z8TBjzwDXuqXg5k#Q&*ZrE?K@gdA-f6K<;tHPTWK~0NGS(4o-wP!C7wN*YL$4edX}2#)rC8#$?k2diqAu z3eMyi)TB?v<#fdP@(t)m)T5J`PeHJIRawTzU|tmR+09J<(x$lZH=P@58tW%Us z8iXDgl<)vI`o_}+&4fj;7BDokvF)~Bz5N;XN`^rnh#*C1Y{Ahpv1p$F1>f7BqVQ&$ zRUGTBj@zk+<;?9YF~AW^s9w{0x}jWy&CmJHQdOkZ47Krz(uaKWQa8kTM!s^ZhOV7( z!?+C0(%+|zDNp2qI2>YA9<-n*qLBaEk^Ze zM->p%t@G$}y0UPxYJ`WXW8WjWbBRo%3DAL#PB?R%3N>71#03T)5eg&-c+4n6z4kSi zR^}jq6$CeUaAuPYJTw%`t|MEXGh`t6v2CCl)4^T)66DuHK?(V8q%SUyV(mKHQtE0z zHUzF{+kN={sog~1p%Ijhb!`!e!t?Us?`iVi2N|EE{HK0;xlB6JZJ{O7W`xpp$ez;f zHXE$`Dv2RJ{)ASWljv2Q0O?kHMXPNF6vaH4rI<1I`fle_&au~n694}BfSh-yttB~2 zz*ZNTIvbwey2y_iD?bRj*Xsm3pP4%l3N4+&`7f>82w~@A@%7bkGh0eYZcqMaEEY~U z!7U{E@#q7kjdJ^$3?+I*t|cX|cQ*aPjA8MzU-TDq%=wfpEmfG>sSac~qT^XqQu~B5 i7O2LSup}TGP~ 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 literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/add.png b/admin/templates/stylish/img/icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/application_add.png b/admin/templates/stylish/img/icons/application_add.png new file mode 100644 index 0000000000000000000000000000000000000000..2e945076cf7686b3b408d6eb2cf913992100da15 GIT binary patch literal 619 zcmV-x0+juUP)0Ag3?`k8$#1J0F}NdayEtTz+~+#EG995YAF(1xew#=1J)ogJuY z3Lxu(1VP;KAh`GKm^?X0f~UCV*)Nf5F(3GKr=#9qzp;L29U)FF98>T4&VoHZ|-ho>^FRq4ws;uOVa=V002ovPDHLk FV1kR43LgLf literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/arrow_down.png b/admin/templates/stylish/img/icons/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4e279377bf348f9cf53894e76bb673ccf067bd GIT binary patch literal 379 zcmV->0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIF1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^LBUDS)q5?HkM0ihoS_kK#PIl-D%-2j1P>Oa%ti-AnU~WT VI^xvQF6&qvTT*m#iwgsTH2{W9F7W^W literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/arrow_left.gif b/admin/templates/stylish/img/icons/arrow_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..932ade1601685c41edc2dd9bda214ef64a6c1283 GIT binary patch literal 131 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^LBUDS)q5>oFTFC&>rw8)8@*v1Dr+iMvL^E6%~Eh;Sd$?t WxAs8qPPGtZ@;%yDC2um%9*_%b^H literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/arrow_right.gif b/admin/templates/stylish/img/icons/arrow_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..780431c2bb9277f136b819bc3f184cc5ac0916f4 GIT binary patch literal 130 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^e!)r4)q5?{mzsonZZAyOp_;)oL)=2bWn-5p2Sa1ShSFIw Ud!#sBtwr7EEh)h($ literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/brick.png b/admin/templates/stylish/img/icons/brick.png new file mode 100644 index 0000000000000000000000000000000000000000..7851cf34c946e5667221e3478668503eb1cd733f GIT binary patch literal 452 zcmV;#0XzPQP)Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O^9OfoSNCh6N{UH*G>^7ov@7G7j2))Sp-vPxR_~|#}oBaGXXEK?XK|Y^H zHk(B1f~_(T2#W< zvaL<2kX^Wk+SW9-V%M=b+k-`2ClPnyl}cXV$lX>%QAD9oKqix6;&?ocXf%qjM~iIW z4r(PA#H9|DR@zYr^SQ^mz+r?4uyTP%4!Uj$G3|@^f^JjEqDb4hL3OR}pcKA@uPUsqI85-ih+cW#mYc zi0T}yV>}fm2znF>#s1x2Qlrr{snu#3KhP}(-}k}y;R(|2Hi+?dY|h`tqN){Y<$y?p zaw0sq=UXrho&gF8gkM~M(ASI^Qdy9lgzj1YCn7%n-^X;n>!?(5DN%7hg_ zql4Wy8ok7Z25lz}lpb~*ktPRPq%ZQ*4qNZB!+VJ-egn1}Am_E)wd|HNMlZ|>D)M67h? zOIjz3DJbk0=97q(mSBd~-ilc0Oupt^z$#N6O&at_s8u-PL@9M^gQuq(+UH^IB$&*DHP!HzH+vkEzC?S52tN1$mKhziPkOR=y$ zhl#aO1Xly_M?EkN>tM6E5T&Ht4dh{0oQr6Q1b3J=sM^ACOsvD=TSP81#0oTC1v|Df zgpp-GhL(KrE_8t&(jeFR1W%(osQ12tvSpHp_}~HR_8G{VUO;FILQv(P-b)es=)ZlJM#c>{Wx-rgY3D#Ol9rJl39A<60Xo5cneo(9g5a4q>ayzV-7%Ue2}0_ z&TIets{Cl`n(nefrZ+9F8|N&Kp}^StU2b+&pVj;XvgEdBL3Wlp00000NkvXXu0mjf DwZ3{L literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/bricks_gear.png b/admin/templates/stylish/img/icons/bricks_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..9dda1f3b7f68d85b68bfab89e22adb5761252101 GIT binary patch literal 876 zcmV-y1C#uTP)}BC?QicMU^5VL?a?LB9X8V39(?I7E*R1R(9AS8WMki$D$Eb?YxS5O;PkQ)zZe7i&(OD*qKgEa-hLrn{EeHY%)w@WN)m^I*?RV}xV51G@XX=oMX|VH5kxA12qd^*JUe-5E5vyz z*o46DI)>u@gYaZIxSbt6Jw2cfv&o8i?f6lefyaC}RD^ct7MQ@-)>afYZHAFv05`fTwOcY(uX{m!`!-R zbgphjLV8VTxDeZP|M7#V{!Bj#W)Tt>QWQd%_&SMvK95SJf@JL+=$e74??o^U;_;6) zHa3pY@d*yfd%?0Sa`IyLfwELOFR3)fI0JubCw8x^M`LXqf*@dGY8oyNY^+Z}*LB?J zAH-O>>eo+1rk%1hOvQ!2cN2d2?-uHXIEo8vToeK|KINWnNa4+Xt#u)Ykn|6RndSZEQHfCZG5CcC=T z`(o_NTOjbCK|GPF4%)<=%>`agEOIe^kJ+gSd~H}=`AYZIyJS-%Y|LeBxc&DE@kHvV zh>Ui%*7I#PNlilw1y@n@6l>qJC^2jm6{4Z3p@!y54^361Eu)pbu{`o1V_kbZ`MR$y zdh|9mIxVK*qV(LJCr#hETgDW!z&|9$wh3`VrtfF?un9PlRLs>2y(-4 zrLKn+LM$+c2R9RpV`rECN`sK@HGt)oU|=2}GdOWzXOuyDL72-1pjr{L%5=%8 zRQ(pEyJS{6KMcTc^`djdIyOcaz(RmDeoTeB8zvcNthS*`>A=K4->m8f9c)wTh(V)x P00000NkvXXu0mjfbTF;3 literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/cart_add.png b/admin/templates/stylish/img/icons/cart_add.png new file mode 100644 index 0000000000000000000000000000000000000000..45c2900089c5b3867019ddf2d1c9c41552d66b32 GIT binary patch literal 711 zcmV;&0yzDNP)uCxwbv=KH9zoUDon>V zr>UxI+l z#KOV?tXAtCMJ|^E)z;P)Ha0epPNyNuGGeh9*4Njuva*6;Fo-}P0FTGRu}4QoI5;?f z$z&=kve_(-kB`yqcK=$PP6rN$<5RocMzvanBuNc}!7!r8WHP+bYPFEh=h197LA^$! zfn+j?{r!DJA`y-Wg+eHo%iPh-%*WOJf!=_4JdR?q$TO(d>pTNeCUT`x=_#{;C=?2$j;X1sGkv$Py1I(P z!$Twz39zJva5zj#0@-C@2}IWEbb{S(Co+D!Mh2YN-Q7j4Rs)eqd1+}0rBaCoa%Hv( z_V)ImR4Tvy@g2C`Zb};S^YgG+ER-}@($Hu$P#T`&g=Gkj-rm5_>p@&oUYt1fLwX|J ze5DHBL!@j);j;`WIfC2L1zdi5R^$Me%XOaFdp9>XM@hqIG(xY}Q_`58p2l6>Rjidv zSo>h6-65tPLP|ZR0blt578bWNJ3BinisDB`9zE&c`pZjrU$*1q7cN?9zz+a>(-SOd zeqB2|JMjDcJn8ZAag2?P;mWgfcq8A3P9ElDU1GT3!LQP4wNR;4n4FyKbHIS=TjBtW t@&m3+C;j&_I88CIp4At!{qxjQ|2w4%;hGY8=Cl9+002ovPDHLkV1ip>OPc@y literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/cog.png b/admin/templates/stylish/img/icons/cog.png new file mode 100644 index 0000000000000000000000000000000000000000..67de2c6ccbeac17742f56cf7391e72b2bf5033ba GIT binary patch literal 512 zcmV+b0{{JqP)CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00007$(F5I~EPw2+A2=20Sy*#|n7r8sf)7*RgqMLv3&KWmL+^F4r z7i0Z}>kq&FSJ~Z9+<5!dQFwCOz1ndvw%m_4J#=sT@Q1U19`B}1iL1?~3va{ZF~|VI zfHw0WI@T{zdi2I_>3m@YYk3d;l(JU>d+bPFLOo8G;T$3)1!qp*$dock%HEEk|V0 z3L2&;r~p>tQh+yD{T!MxBF4;%7xC6JH1CtlE}+w%Xkuu&haUcdHC?=ZKr(+GZJfIQ zJ6@GU%>XYSae67{=&NN{rB<>+N;FbBA#_{A0WZW7cXJ0E=}(_?dx9< zr?bEW55s(NboZ^^cb|S1s~AxnBh?-gQ{Ob@*3}OO`vCi&FRqICO$~lSg*6r5QDf7DTmJy^bFNy&p3d3; O0000LZjC;k_h{kHThqfC`(hFmxSO zSd?`bB$R({-*5T0gITA{|Fu6pn0eqpx>}JTL$UWimE@yNe}L98c)I$ztaD0e0sx43 BPNV<; literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/expand.jpg b/admin/templates/stylish/img/icons/expand.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7e129fbd17280334c08280cd9f92b3dec71cbd5 GIT binary patch literal 773 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 literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/house.png b/admin/templates/stylish/img/icons/house.png new file mode 100644 index 0000000000000000000000000000000000000000..fed62219f57cdfb854782dbadf5123c44d056bd4 GIT binary patch literal 806 zcmV+>1KIqEP)v;U&v3%|^C`Ga3?LtY&4dQB4Oz;1v;J%z!D&%WRH@BZ?x; z3)8@IUIv@hG|@IwyHLC`l{1<4BK>wam95g|i|?Cfzt876&-Zx_0f5*l-9`IJI&mHu zE6$@xB)6N}7VeR;!X8D!TAw;;&0Bsj?A071cO>X3K0wl7WZ1;Tg!4LHyNcnzoeQ7t zNW`aSlm8WXYkek&ir$13=ngczvf zV0vnjNpCF&K8px}dunv+`LIb-sOC$_jD(;IBI$xC|7`(+9cA>Vir_V#z{?k7SX^Ah z^71m~W@q439Ycqfhi7+gp#A14n1n1!e>$EdeATG|f798Y=ggzwEKH2Q!qU2QA(Se?dwqG69%>n$6rtE z%F(845Az8c{w(XgimJg96!jLMz?zS6I1HUm2baqQx7&@nx;lhHA!r6vs2|fqJETOu zLxeu2OQ(3(au%dg>AcZsWI(zXn9XJg1cLe8k~0h0wOL=&HK}7X k{AKr*U4z7Szv)i%9gTgghwgU$Q~&?~07*qoM6N<$g31kYk^lez literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/magnifier.png b/admin/templates/stylish/img/icons/magnifier.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3BG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/page_gear.png b/admin/templates/stylish/img/icons/page_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..8e83281c5f8f0381c43adab760e0b29d28f16629 GIT binary patch literal 833 zcmV-H1HSx;P)m{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/page_white_delete.png b/admin/templates/stylish/img/icons/page_white_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..af1ecaf2981fa37628c8b8b15ee389f9575e5f6b GIT binary patch literal 536 zcmV+z0_XjSP)(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/page_white_text_width.png b/admin/templates/stylish/img/icons/page_white_text_width.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cf13256f44ae8092e07e88b0f4243a8efa9f0e GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R>*?YcqH(@;f-l!01CbW>s1Izr z3LkoHh<3E?TVANoG4CX|$empRCCS=R(U(hVJfm~E?IkDKRK&NP2|n`v>d(vV;W1uY zrFGVdwn;4b{qUtE`?GB`)E1ga&i2|7ncUL1b!KMq^QnT#_gn?_Z8(c`1Q~Vy3oL!N z$M8vHL&U1J3SJF!56azQU3B6>r|Zsm$HQ(N)Ek< zrc#vXMLdW}TWpphCZsGREkUZr{Mg;M&b;luZ0IGA9rnH1`DVU1->eh_0hG(-dw<@) z-1S-xc+D!@wd^?Z=a`M%%phe@J_EnT0QpH7V3 jcG~XA#&PRl)Zh6(yXt(^KFGF}00000NkvXXu0mjfDwr>g literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/report_link.png b/admin/templates/stylish/img/icons/report_link.png new file mode 100644 index 0000000000000000000000000000000000000000..23f2611e993021b5c01f473fa2ef17e599680b1a GIT binary patch literal 754 zcmV8`o}o+HVTUg~@9%wnpXc-b-uGnzU`3-*UT|g@ zo0_}${PYS~EY{64<|1jn77mAt-?u~fu^oW-Nf+w%`k6u@8ja@M>gwvyr|A)Vn;(Jq zaTh9;N=r(m5{kuQGx>ZTM@L7;fK~%PHXd~T2WUVVDHIB*)oQH<8-@{t98zrD@5JHZ zAeQ1{U@q&rkwFmX$9#l+-MHA38*g7^?AM8Z6TBRY)Oa3%mOx}M#nz zh*gWh`lJ+JUrX?Dpo7v${ylY!X;i*V;Q5;bok6)={&T9q+Pw}sAOdJS3JE!pJUeO5 z<#Nbovqc8bb7C+dL2z~$YohjM^VqvRC>D|!olijSh(k8_3$j-~kxr+P$z)EM!ImFx zVLQBDFU)2$oK7cV9tr$gQX9rVLQxFP;kVqu3*=*2iwR9~I z2%y*NDMYDM7ETPbVvIfF!JwO<05UKhj|ZR6he#xXU@!=e#{({xOJ5@aFraFS!OXM) za*3D%bUGdS`uf1(a3B(iXvmt>8U|9SG*1mwD%GXs{;O~d^x$DXhboiPR#sMEx7(pm zD8THaYf^K&-E;=0BjsO4v literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/rss.png b/admin/templates/stylish/img/icons/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc6ff30ba5020600aa4ba2646beb9eb25dc978f GIT binary patch literal 530 zcmV+t0`2{YP)8MDR)G%QU0LxY1jsDL`i z5Y)<<0mFa+Gyv?I-SF1`9OhtF)?#(7@ZwPg0IYohcf#rgRl*cR36-)JAyh$ycISTR z#|RJ*0Y`3-+O5RfdxRPJ@Fmbb_UtP8y?FXu?dZjo$& zzrG9Rp9<^S_%m{rBJa8vxT8 UVM82oKL7v#07*qoM6N<$f={^a^#A|> literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/user.png b/admin/templates/stylish/img/icons/user.png new file mode 100644 index 0000000000000000000000000000000000000000..79f35ccbdad44489dbf07d1bf688c411aa3b612c GIT binary patch literal 741 zcmVz1iyEv%?$mbQ(# zwJpuiQJP8?X_`#S8b+U_G6=ziYB!xPAcq{)ZJ0bECH@ zYx#`n8^Wzn^J!4>=q^bltNO15ry?0ecSLkjpT@vlid!jk)Fjf7&)q_V5zGs#3N%6* zbW~7Hg=&P0&~Y(|g>$hC9FL?;ttzPDZbpZu9OLb33^e2;FNTGJxScp1&q4M+y2ntQ z?C(=hpU$3~`Thx0eHwi0x`q+!d5k@|0_WHe%sG3e-s^MM`xM-ig!VcIA7H}X1ot~L zg=MLB4w-Q;Bi!!u2|I+Qb;0{{4Q53YX6+4_aXena{nmt*!YG7ua~`qc>o=?@U?rOU znS7%>klzi*muXnbM6i@4FR@s^8vTjDgy&%J?w?`u>NYMDFa_2%0SQ(qJE<3=<8Bzo zfdU60e*y(^$RF%r$kl)p7=7tlCDa$+J7w>}DU(O#~fk>pYuRvHi1E9^msg{tLeV XM&GIRvfA7%00000NkvXXu0mjf&%8>| literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/user_add.png b/admin/templates/stylish/img/icons/user_add.png new file mode 100644 index 0000000000000000000000000000000000000000..deae99bcff9815d8530a920e754d743700ddd5fb GIT binary patch literal 746 zcmVR5;6} zkbg*1Q547RkCGx=+ZrJV#zL@SQK$qJV#CSW)Px1IG~1R7@Ce7&_JfOHMV?!rlp(uU_DLu%oT329{ zvd}^m>Zu}~l!lF)$vj*+!9ivWYi3=6E`B>+7|Su$tH+R~2!#ne6eorwU&M#{7<<90 zO$iMuFlR;n2z>v9nKwp!?XQQ|aSfBtZ^J)10wQ zP}rH=KSJQ4N-!Ms3A?4X%~8iSR-zylzlSXd_?|M%f3%_Vax4V#xlec^^VT&5JP8rX z6}RO@h&}Lqo`s_<751_e20DK|@e2`2FToK$y2KTlwyhFyPdYY*B{>w4$%B}fnn&9d zQ0xQp-T@b00q1)Ft+NxwMg`RMry#!}42Vk(RW1t-$ePmK0V@&mp4&IBO>%w~~-qNFem8*NKi5C3*h;eH{=}2kRqEdNlF-|c6B{jNg1xE|{xZ_qq=T!wMF|0iq|AK>&MHw6~-ksQ9RtH+=$?!G=zinz|BNIO*d}XYdmm2K>Qw%i9j?X9SgRBJn4W5%uAclWG_T7f?M4s9q5$`w5b| z31S}-Tq~-?NahjDw3mU5cfqF5z)+g+pPplGDyLv1f8WAnTQ+Xiw;{fhcBLH^j|gI# z2~IT;7{m9#PQ$2>16f?4#0x*vLFksSJ~;)W1wO>uQ-rAG1{C+&5Zw%%))Pc(2_k9< z`smoi)Pkk!SK)SAcOy>0d#x(Rl;b_GP?XFE#P>r%M^9Kn>j@#I>kHsrS$qYvKE>lwZZUsXcw4nFNHZZ~?%71a&2u7&aV|47ZvJKBUVO{)!ekB`ACp}1 xSnjsa#jtYM{A~v!cV^R$X2;lcpKyd7^}lwPp>~q=QF{OY002ovPDHLkV1lJ{Vb%Zu literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/img/icons/user_edit.png b/admin/templates/stylish/img/icons/user_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..c1974cda745278a404b9e29fa91e0503a84accb1 GIT binary patch literal 833 zcmV-H1HSx;P)wKwNApj*j?`*x8fjj}+T^cdNV;=~VOf{An4CI`(Q%x}`$a=uBQ`IcOG~+O zhFmpv$jQAVt#pVn<-FwXyxzC#)@;^BTYr4EXV3Qe?Ah}?KRp0?|HEG!QT7K}`6R>T z0?GlfNd&N5h)SxRamGIduGtwfO1+4h$^b)DXu0o8M7BEtF^>B+6kDUTT?1tl0&27( zTPtN#enUj2hcV)v4ROVeu()d=+i@S-%91h3XQQ_&2GLH&h;==J>*q}oafY~7o8YOx zW1up~WKKQv35z{tnCiF(G50p)FLR-gi@=FATO4h+zckVifX~k}G4#+4;u7niZGj@H zRkx!55oQOPpc>+6Y1FM1A`bW&7GI~k7+8?J0DewkUh)LOJkrdTe3;U(*Zgc$Er)&@ zD+5(f%bInl-ZwzNw#9d8%I4~~7EHgs3zhUKHpaRkt%*?UWMg-Zz7eUOc8t^s*~Buq zNnU77^3>6u=K_U{g-umARHHXA*H6dCx-dv81Ap`v`JB`FJi0MFsY3lE z5Gw;{eLz-+019a$Hq}BXzXU@)LB-NA6Y>hD8BxCLDcvPn`&N6q`mxc}yMb~sKo@Ed zDbOI5^9}?Dhz0FQMoKPVwk00IILo!IfS6^eQMBJdKtv5PI+Tbj;^0Fo6JmY=Cj0!M zlv6P`lmJPo4+6tWG2fYveukB1DzkD{lX z41Nw7E`C*@hclIfDYh$GCw<#Tk~h)}QkWS=$Gv&wY2h|l6&7Q)uMmBi&Zxg?1_yGk z;>5+4_M6eEhsL=ygB_>Q-+`#k4z^f-l|x?d%y)UiW7wGPG|s;O<A9)b<7tX~vT z$e)FfZ+`X4_uKyq#wJHC;J3lH{lhQkUc~Wid;*pnjhM12xe-bPByd^xuQ9zgeM^Mm z*tc)|P}LtTnHXr@Gkmmbkg^O2bqyhO>LP|qjIwW2@Di+4EuKm~&tOO2!N3o{128Hl z9v%fgerM0C#)7P|PMvxr*!Gf?eGA8f{OT6fS`9l>LQCg)p=~c$Zr|AT_0+_?F*JJk zlapOT2Q(wWx-LMq(TxXxLn+U;!LV)MhNp~ommdh+fo8T*&g-yQbbG&ze&=>tC(Ar=&^1xlA;Jc(6 zcCi_xs8k}-S&#ONOHm%e@#nGC7F++8C~r29Or!_{(QGQEG)+O^J1BCPmgM4JAzC8I z`jS9bO>|}Jq_#$IRzp0d34>)&3L%7MN)eTv!0B!^nn}f4z2*vFE@jv3dn zG>H)u>FR7_d2JcsjvfZ$vkP~xik@T^(_N)nx=tqJV+tQjQ`owJ83bf`zX6Ear*=Mhzn5QUuXE|v zR33Qyi8G!0{H2r##d#6R6YmYbZz4NTssT;cXiGb6lxO+k@{ba@2D~*hKDY6N;Bkh> xhhCRLejsJkAIT{5sICHcfU`5>bKmUb{{y)0nR3PMMxX!y002ovPDHLkV1nl+t-}BS literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/psd/template.psd b/admin/templates/stylish/psd/template.psd new file mode 100644 index 0000000000000000000000000000000000000000..d9004ae87dfabffa963c854f000ffc1a7ec8b80e GIT binary patch literal 967624 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�$TxF0b2oE0b2oE0b2oE0b9XWZ7blc!smH^ zzkSAj)tuq^kmMveTLD`ETLD`ETLD`ETLD`ETLD`ETS06qFh9)D$Ff@5exsparD-Uc zJY(ijev z{)k~PM+{#Gfz7QQ`XB%S2tWV=UmXG*Gi>Xbf-my%UmY)aCJ=xC1R(I0AYhx{WOU?r z8DlNYNn7cI3%)1;oKPa<1Ww?D64*8;E?XU3U%>pDbmA{czYy%dV@qa)dk;MDV<+1h z%yktm+t~4wXfFg;TxbrixM(C=TdB;0=BV+bT(Wo9SyBfK_F>^eE_ zr}Fyfmn#Utr(HgDwjbe@nqpUNaz7FN^vm_E;M2~}@VZ{HYkavM3m^LB>Syq2=TCSQ zxY!lp+>eA0{c^25__XsUyk=nR`hl(|eCU@eE5heX^(VYuW$fCO?uWvkez~eAeA@ZB zL;K;slEf>t#-^K-w$cX|d{F{8p+v|DoWKbsfD=lDoWKd3Py#riM92x8zzHRQ6H0`f zzzLjC0yv>W$O)Xl2_=9NN`#!i37k*@IH5$y37o(QC4du3gq*+$oKONdp+v|DoWKbs zfD=lDoWKd3Py#riM92x8zzHRQ6H0`fzzLjC0yv>W$O)Xl2_=9NN`#!i37k*@IH5$y z37o(QC4du3gq*+$oKONdp+v|DoWKbsfD=lDoWKd3Py#riM92x8zzHRQ6H0`fz=@sO ziDJ9hG53yjbJEt>IQn3w1aLx$u&v+(PACDKP$H@3#AU_7HDM>%6C87o)$W8Bg8g@l zDkI?WGJX{AWLv`r_6L`JkmQ=DA2_C`+1%-ekJs^)5$P z`jh}%lt|1PxWGjT;Di!kTfqsOPy#riM92x8zzHRQ6H0`fzzLjC0yv>W$O)Xl2_=9N zN`#!i37k*@IH5$y37o(QC4du3gq*+$oKONdp+v|DoWKbsfD=lDoWKd3Py#riM92x8 zzzHRQ6H0`fzzLjC0yv>W$O)Xl2_=9NN`#!i37k*@IH5$y37o(QC4du3gq*+$oKONd zp+v|DoWKbsfD=lDoWKd3Py#riM92x8zzHRQ6H0`fzzLjC0yv>W$cY`ui7Y$IG53yj zbJEt>IQn3w1aLx$u&v+(PACDKP$H@3#AR8*bz!^N-5hg|)o!;Jg8g@lDkI?WGJa(3 zWLv{Jd);O0l3W*donv~M&7J-)fKSKkVz%c?zg|~$$KuoRx}xo$KmB^$(Jz-z$Ln^s z|NHdobv-{HpN`kPZ2x%r^}3j!k59+zO16JI{d(QW_Ix^Cmy!O&%-W6eq0R_vGqlmJ|mNX#0zz(on*gc4y}!3msD0yv>W$O)Xl2_=9NN`#!i z37k*@IH5$y37o(QC4du3gq*+$oKONdp+v|DoWKbsfD=lDoWKd3Py#riM92x8zzHRQ z6H0`fzzLjC0yv>W$O)Xl2_=9NN`#!i37k*@IH5$y37o(QC4du3gq*+$oKONdp+v|D zoWKbsfD=lDoWKd3Py#riM92x8zzHRQ6H0`fzzLjC0yv>W$O)Xl2_=9NN`#!i37k*@ MIH5$yiRN|x4=&Kw#sB~S literal 0 HcmV?d00001 diff --git a/admin/templates/stylish/template.php b/admin/templates/stylish/template.php new file mode 100644 index 00000000..a064b847 --- /dev/null +++ b/admin/templates/stylish/template.php @@ -0,0 +1,296 @@ + + + + + + <?php echo $title . $config['title_separator'] . $config['lua']['serverName']; ?> - Powered by MyAAC + + + + + + + +
+ + +
+
+
+

+ Right Now + Add New Product + Some Action +
+

+

You have 19 new orders, 12 new users and 5 new reviews, today you made $1523.63 in sales and a total of $328.24 profit +

+
+
+
+

Sales for July

+

+
+
+

Traffic for July

+

a

+
+
+

Last 5 Orders

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CustomerItemsGrand Total
Jennifer Kyrnin114.95 €
Mark Kyrnin234.27 €
Virgílio Cezar261.39 €
Todd Simonides51472.56 €
Carol Elihu19.95 €
+
+
+

Bestsellers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Product NamePriceOrders
Apple iPhone 3G 8GB199.00 €24
Fuji FinePix S5800365.24 €19
Canon PIXMA MP14059.50 €12
Apple iPhone 3G 16GB199.00 €10
Prenosnik HP 530 1,6GHz499.00 €6
+
+
+

New Customers

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CustomerOrdersAverageTotal
Jennifer Kyrnin15.6€14.95 €
Mark Kyrnin214.97€34.27 €
Virgílio Cezar215.31€61.39 €
Todd Simonides5502.61€1472.56 €
Carol Elihu15.1€9.95 €
+
+
+

Last 5 Reviews

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ReviewerProductAction
Jennifer KyrninApple iPhone 3G 8GB
Mark KyrninPrenosnik HP 530 1,6GHz
Virgílio CezarFuji FinePix S5800
Todd SimonidesCanon PIXMA MP140
Carol ElihuPrenosnik HP 530 1,6GHz
+
+
+
+ +
+ +
+ + diff --git a/admin/templates/stylish/users.html b/admin/templates/stylish/users.html new file mode 100644 index 00000000..30694291 --- /dev/null +++ b/admin/templates/stylish/users.html @@ -0,0 +1,309 @@ + + + + +Users - Admin Template + + + + + + + +
+ + +
+
+
+

Users

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDFull NameEmailGroupZIPRegisteredAction
232Jennifer Hodesjennifer.hodes@gmail.comGeneral1000July 2, 2008
231Mark Kyrninmark.kyrnin@hotmail.comAffiliate8310June 17, 2008
230Virgílio Cezarvirgilio@somecompany.czGeneral6200June 31, 2008
229Todd Simonidestodd.simonides@gmail.comWholesale2010June 5, 2008
228Carol Elihucarol@herbusiness.comGeneral3120May 23, 2008
232Jennifer Hodesjennifer.hodes@gmail.comGeneral1000July 2, 2008
231Mark Kyrninmark.kyrnin@hotmail.comAffiliate8310June 17, 2008
230Virgílio Cezarvirgilio@somecompany.czGeneral6200June 31, 2008
229Todd Simonidestodd.simonides@gmail.comWholesale2010June 5, 2008
228Carol Elihucarol@herbusiness.comGeneral3120May 23, 2008
+
+ Page + + of 42 + pages | View + per page | Total 420 records found +
+
+
+
+

Add user

+
+
+ PERSONAL INFORMATION + + +
+ + +
+ + +
+

Send auto generated password +

+ + +
+ + +
+
+
+ Address + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ OPTIONS + + +
+
+ + +
+
+ +
+
+ +
+ +
+ + diff --git a/admin/tools/phpinfo.php b/admin/tools/phpinfo.php new file mode 100644 index 00000000..0ebd694b --- /dev/null +++ b/admin/tools/phpinfo.php @@ -0,0 +1,14 @@ + diff --git a/admin/tools/status.php b/admin/tools/status.php new file mode 100644 index 00000000..5e992979 --- /dev/null +++ b/admin/tools/status.php @@ -0,0 +1,21 @@ + +Server:
+Version:

+ +Monsters:
+Map: , author: , size:
+MOTD:

+ +Last check: diff --git a/common.php b/common.php new file mode 100644 index 00000000..9f6b680e --- /dev/null +++ b/common.php @@ -0,0 +1,86 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +session_start(); + +define('MYAAC', true); +define('MYAAC_VERSION', '0.0.1'); +define('TABLE_PREFIX', 'myaac_'); +define('START_TIME', microtime(true)); +define('MYAAC_OS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? 'WINDOWS' : 'LINUX'); + +// account flags +define('FLAG_ADMIN', 1); +define('FLAG_SUPER_ADMIN', 2); +define('FLAG_CONTENT_PAGES', 4); +define('FLAG_CONTENT_MAILER', 8); +define('FLAG_CONTENT_NEWS', 16); +define('FLAG_CONTENT_FORUM', 32); +define('FLAG_CONTENT_COMMANDS', 64); +define('FLAG_CONTENT_SPELLS', 128); +define('FLAG_CONTENT_MONSTERS', 256); + +// directories +define('BASE', dirname(__FILE__) . '/'); +define('ADMIN', BASE . 'admin/'); +define('SYSTEM', BASE . 'system/'); +define('CACHE', SYSTEM . 'cache/'); +define('LOCALE', SYSTEM . 'locale/'); +define('LIBS', SYSTEM . 'libs/'); +define('LOGS', SYSTEM . 'logs/'); +define('PLUGINS', BASE . 'plugins/'); +define('TEMPLATES', BASE . 'templates/'); + +// otserv versions +define('OTSERV', 1); +define('OTSERV_06', 2); +define('OTSERV_FIRST', OTSERV); +define('OTSERV_LAST', OTSERV_06); +define('TFS_02', 3); +define('TFS_03', 4); +define('TFS_FIRST', TFS_02); +define('TFS_LAST', TFS_03); + +// basedir +$basedir = ''; +$tmp = explode('/', $_SERVER['SCRIPT_NAME']); +$size = sizeof($tmp) - 1; +for($i = 1; $i < $size; $i++) + $basedir .= '/' . $tmp[$i]; + +$basedir = str_replace('/admin', '', $basedir); +$basedir = str_replace('/install', '', $basedir); +define('BASE_DIR', $basedir); + +if(isset($_SERVER['HTTPS'][0]) && $_SERVER['HTTPS'] == 'on') + define('SERVER_URL', 'https://' . $_SERVER['HTTP_HOST']); +else + define('SERVER_URL', 'http://' . $_SERVER['HTTP_HOST']); + +define('BASE_URL', SERVER_URL . BASE_DIR . '/'); +define('ADMIN_URL', SERVER_URL . BASE_DIR . '/admin/'); +//define('CURRENT_URL', BASE_URL . $_SERVER['REQUEST_URI']); +?> diff --git a/config.local.php b/config.local.php new file mode 100644 index 00000000..dc941cc7 --- /dev/null +++ b/config.local.php @@ -0,0 +1,3 @@ + diff --git a/config.php b/config.php new file mode 100644 index 00000000..abd4d9c0 --- /dev/null +++ b/config.php @@ -0,0 +1,225 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ + +$config = array( + // directories & files + 'server_path' => '', // path to the server directory (same directory where config file is located) + + 'template' => 'kathrine', // template used by website (kathrine, tibiacom) + 'template_allow_change' => true, // allow users to choose their own template while browsing website? + + // what client version are you using on this OT? + // used for the Downloads page and some templates aswell + 'client' => 1098, // 954 = client 9.54 + + 'friendly_urls' => false, // mod_rewrite is required for this, it makes links looks more elegant to eye, and also are SEO friendly (example: http://my-aac.org/guilds/Testing instead of http://my-aac.org/?subtopic=guilds&name=Testing) + 'gzip_output' => false, // gzip page content before sending it to the browser, uses less bandwidth but more cpu cycles + + // gesior backward support (templates & pages) + // allows using gesior templates and pages with myaac + 'backward_support' => true, + + // head options (html) + 'meta_description' => 'Tibia is a free massive multiplayer online role playing game (MMORPG).', // description of the site + 'meta_keywords' => 'free online game, free multiplayer game, ots, open tibia server', // keywords list separated by commas + 'title_separator' => ' - ', + + // footer + 'footer' => ''/*'
Your Server © 2016. All rights reserved.'*/, + + // site closed + 'site_closed' => false, + 'site_closed_title' => 'Closed', + 'site_closed_message' => 'Server is under maintance, please visit later.

', + + 'debug_level' => 0, // 0 - disabled, 1 - show load time, 2 - show db query counter, 3 - both + + 'language' => 'en', // default language (currently only 'en' available) + 'language_allow_change' => false, + + 'visitors_counter' => true, + 'visitors_counter_ttl' => 10, // how long visitor will be marked as online (in minutes) + 'views_counter' => true, + + // cache system. by default file cache is used + 'cache_engine' => 'auto', // apc, eaccelerator, xcache, file, auto, or blank to disable. + 'cache_prefix' => 'myaac_', // have to be unique if running more MyAAC instances on the same server, ignored when using file cache. + + // database details (leave blank for auto detect from config.lua) + 'database_host' => '', + 'database_port' => '', // leave blank to default 3306 + 'database_user' => '', + 'database_password' => '', + 'database_name' => '', + + // multiworld system + 'multiworld' => false, // use multiworld system? + 'worlds' => array( // list of worlds + //'1' => 'Your World Name', + //'2' => 'Your Second World Name' + ), + + // account + 'account_management' => true, // disable if you're using other method to manage users (fe. tfs account manager) + 'account_mail_verify' => false, // force users to confirm their email addresses when registering account + 'account_mail_unique' => true, // email addresses cannot be duplicated? (one account = one email) + 'account_premium_days' => 0, // default premium days on new account + 'account_premium_points' => 0, // default premium points on new account + 'account_welcome_mail' => true, // send welcome email when user registers + 'account_mail_change' => 2, // how many days user need to change email to account - block hackers + 'account_country' => true, // user will be able to set country of origin when registering account, this information will be viewable in others places aswell + + // mail + 'mail_enabled' => false, // is aac maker configured to send e-mails? + 'mail_address' => 'no-reply@your-server.org', // server e-mail address (from:) + 'mail_admin' => 'your-address@your-server.org', // admin email address, where mails from contact form will be sent + 'mail_signature' => array( // signature that will be included at the end of every message sent using _mail function + 'plain' => "--\nMy Server,\nhttp://www.myserver.com", + 'html' => '
My Server,\nmyserver.com' + ), + 'smtp_enabled' => false, // send by smtp or mail function (set false if use mail function) + 'smtp_host' => '', // mail host + 'smtp_port' => 25, // 25 (default) / 465 (ssl, e.g. gmail) + 'smtp_auth' => true, // need authorization? + 'smtp_user' => 'admin@example.org', + 'smtp_pass' => '', + + // reCAPTCHA (prevent spam bots) + 'recaptcha_enabled' => false, // enable recaptcha verification code + 'recaptcha_site_key' => '', // get your own public and private keys at https://www.google.com/recaptcha + 'recaptcha_secret_key' => '', + 'recaptcha_theme' => 'light', // light, dark + + // + 'generate_new_reckey' => true, // let player generate new recovery key, he will receive e-mail with new rec key (not display on page, hacker can't generate rec key) + 'generate_new_reckey_price' => 20, // price for new recovery key + 'send_mail_when_change_password' => true, // send e-mail with new password when change password to account + 'send_mail_when_generate_reckey' => true, // send e-mail with rec key (key is displayed on page anyway when generate) + + // new character config + 'character_samples' => array( // vocations, format: ID_of_vocation => 'Name of Character to copy' + //0 => 'Rook Sample', + 1 => 'Sorcerer Sample', + 2 => 'Druid Sample', + 3 => 'Paladin Sample', + 4 => 'Knight Sample' + ), + + // town list used when creating character + // won't be displayed if there is only one item (rookgaard for example) + 'character_towns' => array(1), + + // list of towns + 'towns' => array( + 0 => 'No town', + 1 => 'Sample town' + ), + + 'characters_per_account' => 10, // max. number of characters per account + + // guilds + 'guild_management' => true, // enable guild management system on the site? + 'guild_need_level' => 1, // min. level to form a guild + 'guild_need_premium' => true, // require premium account to form a guild? + 'guild_image_size_kb' => 80, // maximum size of the guild logo image in KB (kilobytes) + 'guild_description_chars_limit' => 1000, // limit of guild description + 'guild_description_lines_limit' => 6, // limit of lines, if description has more lines it will be showed as long text, without 'enters' + 'guild_motd_chars_limit' => 150, // limit of MOTD (message of the day) that is shown later in the game on the guild channel + + 'quests' => array(), // quests list (displayed in character view), name => storage + + 'signature_enabled' => true, + 'signature_type' => 'tibian', // signature engine to use: tibian, mango, gesior + 'signature_cache_time' => 5, // how long to store cached file (in minutes) + + // online page + 'online_record' => true, // display players record? + 'online_vocations' => false, // display vocation statistics? + 'online_vocations_images' => false, // display vocation images? + 'online_skulls' => false, // display skull images + 'online_afk' => false, + + // support list page + 'team_style' => 2, // 1/2 (1 - normal table, 2 - in boxes, grouped by group id) + 'team_display_status' => true, + 'team_display_lastlogin' => true, + 'team_display_world' => false, + + // bans page + 'bans_limit' => 50, + 'bans_display_all' => true, // should all bans be displayed? (sorted page by page) + + // highscores page + 'highscores_vocation_box' => true, // show 'Choose a vocation' box on the highscores (allowing peoples to sort highscores by vocation)? + 'highscores_vocation' => true, // show player vocation under his nickname? + 'highscores_frags' => false, // show 'Frags' tab (best fraggers on the server)? Only 0.3 + 'highscores_country_box' => false, // doesnt work yet! (not implemented) + 'highscores_groups_hidden' => 4, // this group id and higher won't be shown on the highscores + + // characters page + 'characters' => array( // what things to display on character view page (true/false in each option) + 'level' => true, + 'experience' => false, + 'magic_level' => false, + 'balance' => false, + 'marriage_info' => true, // only 0.3 + 'creation_date' => true, + 'quests' => true, + 'skills' => true, + 'equipment' => true, + 'frags' => false + ), + + // news page + 'news_limit' => 5, // limit of news on latest news page + 'news_ticker_limit' => 5, // limit of news in tickers (mini news) (0 to disable) + 'news_date_format' => 'j.n.Y', // check php manual date() function for more info about this + 'news_author' => true, + + // gifts/shop system + 'gifts_system' => false, + + // forum + 'forum' => 'site', // link to the server forum, set to "site" if you want to use build in forum system, otherwise leave empty if you aren't going to use any forum + 'forum_level_required' => 0, // level required to post, 0 to disable + 'forum_post_interval' => 30, // in seconds + 'forum_posts_per_page' => 20, + 'forum_threads_per_page' => 20, + + // last kills + 'last_kills_limit' => 50, // max. number of deaths shown on the last kills page + + // status, took automatically from config file if empty + 'status_ip' => '', + 'status_port' => '', + + // other + 'email_lai_sec_interval' => 60, // time in seconds between e-mails to one account from lost account interface, block spam + 'google_analytics_id' => '', // e.g.: UA-XXXXXXX-X + 'experiencetable_columns' => 5, // how many columns to display in experience table page. * 100, 5 = 500 (will show up to 500 level) + + 'monsters' => array(), + 'npc' => array() +); + +// download link to client. +$config['client_download'] = 'http://clients.halfaway.net/windows.php?tibia='. $config['client'] .''; +$config['client_download_linux'] = 'http://clients.halfaway.net/linux.php?tibia='. $config['client'] .''; + +?> diff --git a/images/.htaccess b/images/.htaccess new file mode 100644 index 00000000..5a928f6d --- /dev/null +++ b/images/.htaccess @@ -0,0 +1 @@ +Options -Indexes diff --git a/images/addons/Female_Assassin_1.gif b/images/addons/Female_Assassin_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..4eb2ee947bfffd76089cebac386bb19424b147f1 GIT binary patch literal 3327 zcmeH}{c{^dn#X%yG;Y1vZpkCN6DwrKRuYX-f|Q705n*Oz$!|$OcAUj=9FXJWNU+(J zaOmmpXcdMf2->o>#E(I>%cnjJpfBfO8@|;1qm2>B`?o)Vcg{A zP?HUNtq9{5o`qh&SFn%q*1qoj-OwO7T~2IiZ`#@f4bbgzx9?~dZ2eBxl)yqjqiCam z06+*$>{VMQ&viqH-JXBP2nx0+LT-2UX{TcX8(_a*=#zLJLDc{acx!iy9Sim-gnUzD zQ_J?2mgbg;?M|qM=WseP!j=|j;K#NKU3zHh4H|QqsI^Dmzdwc5F@)pWo#VYt>ZSj`sTJUt^pE&kx7A7k|N3W2K1G61~iqc9md8M*T-o0r7_}q=;Cc-mu%M% z2kjRe@{rzY`64%arE+rw1%pafj1VtP^t@vTF#}pdnTX@5Yp-NqCM?Gt#MCIErCrGN zr`C$W={27!@pyVJju>HjO8K@sOcq%il8J;82Mr^vJD&Krxw9p!uO`K^$mknP5!dEX z?(>$y-L~VWz}(vm^A?LZ@vKbritDP;0Q*|=K~h=#c3P1&RLF3AMQ#8Mx63TNDL?re zv`mNNlm7R~PpBqW+%z*U7ikW%p_%^Z=X#B~W@7mj_PWQ0*jzm^P!}H9;FhmjktFLF`1K09fP8a@ILOwuI) z91e|C+?GA_EQAeWpO9N)j5;#t;aq1j;W_D>OPfm(4{# zoMs!Jgh4~qr9ZzbtjY*4 zueXRfZyszWAA|)fX0B9J?nWcjvIoCe$~%AP1&nrR~oED9i3(!U8 zDo$d)*{-q`?>Q3D!H<>Cz&C62Nb{mSOI2>~m?4(cTuh3Zjh9LlK;@9AUG-i3ie8wE zi)4XSP7~&8rv>ynE{NKInEd_Wr>7kXsc*{-8sBI>+@*acU=oMReI`b(4_uRwIkvuZ z-%3%K(>$X|?k#WI7kQJd&*l}XB#*xIdtF%tVaG=jAT7zTun7jEMtY0m5?!48Zk+Wt zMATO{Mr2bZ5BJERs5I7Ft1+M;p-G>Qe^riPGy>pcXNIZ|a0@J<{CVmLuVGKRaChJq zD3oTOJ6%iLZYhRVTKakxYx;eNcI15EK->FgdWe`YZ18M(aKQA&jdugUIQgrnX1ymc zqUdJ=p`;-j64K})*IJ}cY|vX=vqA6y_~Kr6{7w$kj*iYr&+qzhn;Q}~UDXmI-ppu9 z9PvneBae1^kU9@#NPoZT`-PTC=jqO_~s_E&RH;+t0P*UzneWI^nkIK5u zJqfbl2kl2*#+CrIj=G)q>qak%{v#EuZuxXSV#BlvK0lLUv^V6=5g&L}WR{`c!8qwa zlF2vnpDBHtB^hDa*t38rzN{#QlE4L2p!FO9gqfCPlgFb9XNf}zw-G42NSU#bpj^Iy zL>uL6^+OwF<5wqJEVpa~?Gxn^;aGJOpiUo%FZ{C9!BM9K=0F-BSxqRqt~{`nZzL5- zv*B_uCN{R_{)@X(^$VJVz4B!q(Emr{ia@c7(#pSSoIwmgDRM8ZYFzTBXe#TFZBjr4 zH9xgH)q&-V*02WF4VwVeRS+AWGK5Zqhu53mndTRHu)M<8Hr<00Qbh?)w88`@exP4j z6KlAztrO^{!`(tRQI-H$evAf65f}JU$Fn7 z_b+CdDKr^yvRjV7VJ!V^{^?&4bql0vNJQs?O2j~1rGs;mXP>~4!%=RaIxK6}k+y%m zcH!*M08vxDc$5oM1$uIiHa~U#%kW#~>V4Uu5(9_Gp0-?bbUh z06`MA8oY!;Iq~I{_tot=j>F7++K; zWcDhF0cP`E?q=B&9Wx@T^N9+*q32`^c>MW5gdk3VjJbR=nPLhM3bRHP3U2F6PSIE$ zQ!(9WPhyT}a)juDMjYXp)wA;{{aZ$bDtzFJTRZiSI~rJEe!!tB;$#0rg)F GHvKoy=g|!S literal 0 HcmV?d00001 diff --git a/images/addons/Female_Assassin_2.gif b/images/addons/Female_Assassin_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae4056f00cc7deec75b2242f2843b0b8221230b0 GIT binary patch literal 5051 zcmc)Oe^AqRp2zXeH~Er$LjrsQ0l#9Zi3H^ffhLl6361SHUx-2k4G~+(YBw}!)o6=? zS8a6nn-CB&#Yj_hJ!&Zuf3V`AHLUeYHvvQ{7O^_$wp|XccCfe3g0_3O*PY?stb5m+ zx&QAXBO^GOZ^CCDujiMQg)4IOjgwQKUtxl^{ zIn9M;N=8i{N6s82fupfzxDv{-$pM$FRZ(mjId&xwYOV_IWCz+@q5W2yhSF-ZA&+h5 zZjYWq&O$^G@Ikc@1gj$ShLFpI$hp@`YjwfVwyFR@Xf*+SPN!K-jdlk}oS-Nxo#s_4 zoOGJYS4>wKlu8+4HL<}mZKubkmm^;ZJ$bQe=5~-I3GYTdtEOiDWgxiU*16ZLlvA|Y zJ9*wUbF;;)CWE`#(Nk5!ZO)$KRb$s$X1@wKOmxp)R8_1U?e>u}mR3;SO}0>zlT{El zBOPjV%zQI2*6j;=Y&|>8T3rhX?~U9_%JfPFHPC45X>yF-9UbtPXPT+t4s*|b>u85_ zw81uT+!d;`jW$>Hz(<24xRvekSce;sUWMQ(oCpQ?nuB}UsVhELA?n=ARvF=MTTi1c zv>Uk)szPY8f%280(MGs7)UzK2O0m zmCH!e6k%0URYs-PL{E16Y&yzn)b=zwhC94Uik$5BQWQCS+&SFjm^zNUyB$`OmX=cv zopQ1nX(?j3J3vWL=#)<>gD+B{y~wo=1vcpeJJ`TZ^W;S@Ng#(24WDw&Y*LyvaO9|| zyFD{QEfh(P&3zYs0)(U7F*!LoGcz;!&E)XSVdoC#)E}oh&v)wOWMG}PrA#|KG~BsS z?<=I?od55Ka#psrzF6QYvSiD5E1E6Rv)^FSsqPrt||z z^!f}g$YJqC52i~My!TeJN2%*y2oJwf`({dk-*U9!{oJ-siwCW-h01NelEyNRYZl~I zF}=IL@9s>-HV-w$EVw8>Q~2t&U#5wz83o+WPc@Mb`st>WqLuZyrQi6P&xqqu*ZHd0 z_f>BYMe7q%>PW}O3z+rfBj#Bg?~*UhKjr&%_Lfh`*|hbRLGrtvr5%NN;m_nt-~4j0 z{C4fCgPBm&J{xa|+KZm~P^|q=jB(O%$!RxT6F@63}$r~iMV$<*V9}n?N5&lp%ra_`d+uYg4ghkbjxq>MCr!y@=v2dal ze?Qam0t*+xFd}`!pue0uAQVWL-i!fv9iVza=Vgk1siaNBE1sj1ewT zRsLv1?&Rg<>b6n}MKv6d%5|=@dA!_B9->`j|2F#F#22CjY197ZoYdIroIT&3=tVLdv6$bwuYQYsO9G(u8r%#In>*TSvyVM2*zB22Y>xAf;}y(GweY zGIoR5j`)WqXYPHMq==orbl-^)3tg5zE|*g6ZP}*k9=jTbQk$K%D$ZKXd2# zwS_k>VVBBTE_L3U|8(cn$bPbR7jL{|P}AtWd{t1t;o@iXdHc9nn`OxV z(sf7TK1jxiMg~>uyq<_!V|VAF;y~$m)=DaY;m4HT@={Ipk39ZSLq*Llbf4*$vO0UM zOg)G;qsvdmZ=fXq+K7Kjs?F!G(Zq+v3k`uoSuaZbJl_0E{?%ncx;Mysl|*G|TFw<| zZ{l5uNTKYUz%YGKDkPclYqG;i#o_35$!SFx$x1CoUh=t~QpL z*bOd2lyt|=>l{9Xdxj;{#Ge^*mS5A zXa-nJXc(o0fYN{(f%S($hc%}N0;UZDLkXK9QBIwhix3zuSb0beeHwxkfu(aAl(dY1 z(wMm$giwK;fI@(QgW7=*3X~(L6i5*W0|=o34}wzC=gg&1poE6SG3(&zkv45^h=&{2>mqo-WHMqhBhl_II0PkU&JgaCsu z8|WK=R2#T9pjRoCBuT@iz;$Z0bMYppV1E&=40VUB8fxbI8B#JA0HKQ^iX>n?Aq9Pn z0jMCT#L?TMtb&}KorOHG8I)`q@~wl#H&0#j0x2_JbwWS*`3j;c^ygp$CFHtq>anO^#4gRp(9wJpicyX#}M=+JK;lpk!Si zkY~P)$hX7VvK2v=n03foZf@C1>vKZzzS;~lqyU9Om$JdV`cRz}(sA?zB-vabL7hS$ zI*awg%{It0h&`y;sXkw4ox{6MKYYpwu@P#3Kr&m4^;H{Ls5NLdZ<%(g&pUd)YT$%3 zRL5#bqI0jlYMpridZrDE>HqWbw;qu&{?@JWbJx^y<+5{sxz7}w^f{NI=SNTVq@;+b9P6qjHgJU%F33NM_LWk^X=4y zO<%|j9AgRhZn?d!VkEiM7Q5|p>R3Toav*!l&4qt`5J{ObmSt~N)h8kol7B>X4cgmQ zWZF8{FQ2V^kBc1s$7p`oj3(A`OR?=+4~!goB_d?@VMEiu5t^+Dc4cP3oSXhzYO? zX_!c^{;)6lX90}|z15%Qkl^KAC!fhU!_>y`?kn4U$zO8^;;1v4Yk2A&1t)*OaBwZk z+Baep?yerMiPp9&&@;Ru>I>eoc6;BV*qqjUNis2h0Ld)7$(XX$(-EN#Z(6Ew5nUYi zhP7QNu;v>hqW#lSlYI3tWf;kIBM(?Xk)jXBWflR(%W>BsT&Ll%(x}%ME^%#9Nq9aX zQE(Jb!G*=;PYV0R=aaawsDc@dplBvs0 zrz@EZKNeMK?_a>nw1g3H=EFZ-5x2Yj*!FW6!~Dc;d4V2~7eoe&0X47{*nN7B2kZjAAo84XY9GJ~ z?1Hc$AOH;_1Gs<%5Da7kt3Wg04iYTN=nQs)+F&;j4G2o(skg!M(kAZb;N#kQ8`@r2#HsHh}&)SWm&-G7zkXy@9)W zSOVA>AQh$pFa^y4@j$s2Y<2B-fu4XkEEebwTLm)%V*pzM9K)OdwIDl~3j+rD0>l71 z3=hl|hz#TL_g^n3#Y@Dz)Nup4I(Zjd~iO>`cc`QcI4fA zBtL&vn>XPWC2ShT>tzgfZ|La8$Ax(--jT#4jhy??J2DtUlpCMxB@WwSlwu^RI8qxM!kC;9 zH=e1+?&8C`JnVV-Jv+QJX^(%g`N)P$rNE43n3lN{njH=A%g$7$K32d6Zh8KP2ml}jEBrQzL2ZlfQ z@sr#CRhBMkX+!+<(h@FRz>FL`Tu}MA8I$H{uA|gFP3}xAy1Gvq8&$bV5LG>bo#Cqk zJNCqomOOz_VlheEPy9&YZ+YG>7Byb~(T`~g7_L(zW8V4n4`vG^=HD5Amd4+5hO^fe MVXLwbj-wa;6CWyqyZ`_I literal 0 HcmV?d00001 diff --git a/images/addons/Female_Barbarian_1.gif b/images/addons/Female_Barbarian_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..79ddc015cc57ac278eb00cec17c6131d80037c30 GIT binary patch literal 5510 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Barbarian_2.gif b/images/addons/Female_Barbarian_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b2e56db1b969eac097f0733ecd08d95af7cac25 GIT binary patch literal 5862 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Beggar_1.gif b/images/addons/Female_Beggar_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..14ca0ddea633eeaec16c46f81a13f2293091fe5e GIT binary patch literal 5530 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 ph{J}TFH!JkqQ1-AWb6o6 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 Aw*UYD literal 0 HcmV?d00001 diff --git a/images/addons/Female_Citizen_1.gif b/images/addons/Female_Citizen_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5a7ac30ef77454723ee32e885db09d1c5987650 GIT binary patch literal 3337 zcmcJP|5H<)a*~`t0w)sSi1Cs@#Donr!4#94+LIHafS@6Y)dvYUFSm2K`3L&r zeLg=t^US>G^Lc-sdChx!#WuC3p%@f{Zvj|cT?GK3DC(}vv*6_u@8F+hM=(wbCYn9{7kQ4~1$gGwn*8pzh_ zq!RC}0do%EZ2-0wTV-{nO)a)ISv4Xo*r0LO18)<+xIm-TXw*TO)EPPf-1|YNPUfry zfn&g3Aq&(i7YBf~!D`-bmdV{{(kfRO>Hq*i7fu6GM|SGOIF5fc3dABCCLm1;e4!VZ zYE4R2K&et<0N4y5Sg)Du1;G=*suqhyRt(diT$#64`E(fI+@y0%EI>mINe`MzIlerc z+^Eyn0yOH7QsEOzY@sewXt-6Q4QX)jbO_+M3FD%^{mQ4eyjC4}I%<7-!%0d|jdsRd zZ#JueOzt#m!B-cOe<(w_=;F23nGO)>(8vTRF2p;NtF|tv(Jd-wwC|iH{PjKctZ|zu%l8V1YgYuLIc)d^4Vpc8*Tme ze!zQ-3?-E~1`rGvnx0O%7p8m*0Gi-f2YMZ-Y4fUETRbrU{!;vHmN--A=beM1)6?2n)044xR z9Ft+FQi!^bX>b%Mg_!SzX5o@8*r8b-O-}5zRe*(Y8!5tMI2t-#*;UYXUFim=yxju6Ut!ZyAyT`b`VEVg^r-E)CO}pz9z{O&P%1Pa`8r@2+H#N z0y(?;5ROmVb@1XJ80cE4oRe^rz4XP|e|xv?AfvEa$|-4V$7qr`^OAl-J1m>pQ=lB4 zMG}+UZjh1rP=jgc0y~iy}aTtfau5K1I`(G*Y^TO!{OpW^c znVOM?xq>=^&t#>RH5tIHQ0*ft5x-k(ndm z`!DC&VU8lQZvD~6MrQsK z;f#oalsFHA%l#V*v!+$r)a4v#8j1Dyb zbjtbQ%1VFrr5Z(nkaMG;Vb`fkhmMZH5P5o+f7bHZ4L!xVwDbK!J`_gJ7O#0Uaoy=M zzISc2Bbsu*gkrPPeCqaRBJYT5$jJXX5A=as!V~nLfc_45ZVk*G{pJ_$br5_ZMRIu? z;u7R(qX`je`e=Q*y!qZ$4FUb8aCicUt&DT}Yp&VrmhQv5{wRIn@N61=kgwlTr-I+P zxcOk;HFlkPvRm}G|16qYQoO_HfmpxaGQK)(59lcK#J-W~52;LqSA%61U~fZfJ51M{a-92tx>Q zyn=@0Z3#x&iI20&H_i&~>Gk-;OO@^X?U&c3eC*j z`}i|>gI1@@WVhM(F*DmAV>+(TA4UqaZ_Tc|`{Co7HLrORth5Zb=h_U9L;Whaexjr$ z#N5Coeu_eri^YM?0cRvBG(Lm)TaSL1;5!abz4$s-d&BL1j|L+zt3B5nBcS@SI<`32 z7d=z3iA7m@&c0occ1!(eoUEvFOS>LWmZbrgV3Uyk@uofB`GHvS;!h&T`5Ab1q@Zpr za(De!tUU@KJzV4{zHx*H=ApC2dBTZ=$hwW6G3r0mkD#(rDkc=20g|lQ?jCL%y2jDD=eHjI&Ye_R7cxy#!2_kdnc=~`k9x`} zK07^a#Y$4SO%Gn6|I;-8M@8e>ch;x+Q;kpo%sUTNt|Y1&Uycz3oQke| z3JbM~zAW~6e|Q(9O+f5id5riMNa{CmSU&sfAk|f#$9VnfWMnh6!Y2@(G)AzXWaKeQ z|ND79#5}36vQq2p-B5}a)A1`tRaQPCESpbZaE(+l?J(WjXvf~ri3 z*>fAqCg0l@W?Ja?k(gqcv9=5>T^Qs8DW(ME^Ne&Ytz)#5JU?0p6}uJ1Q8jm0!|*v#8QgJfRH;0=u)h*9yQi1-yi61E^J zvMgU$w<*Fm9mh+!=XIG0<9b@o-PEs~hdle^~yu#9xg#E9U{+yoqw1G05 zX7AX#N%Z8|!xGvBsz#zdPMqS2|9q67=nr1i8(tdCY3 zP<9fxL>wxc1`IB~Z_>i-9uqKx#_LVJ2;R3j$}w7L3g&&1DRo%hJd&A4l#hsEq**RC z3ZfZt2E_bCR+u!HbvvyKUCN0UQE&YAVFhb-gwETMn~_~yw;$A(d~+4%?Zt>UKu_VK zy1CzirT)j@tJB!_)bi>0JoIZ-g5dBPiFpX}vEE3pTe3i`dqVuvT$a>mhQ`+>at(sh zJ-khGzT;HZMwLAbP}eZsoL?XS>c2ed-VRc6Z}`j@-}5@ebZ*~W8c9Svjm>KbfFUBw zW58_;gkSoN`Zk88ND07Go;*hjINTVwX66x8^>T-Al4hi%8X!V21#yl^SeJ4KQ4*xr6x-g+*&F=mCM{o00bT~Ixo&;~R`Ym}ir1HOj sxp51e+8N0PjCjGrFn@jdmLeVGiRrRlt0KrXCww+5_~%1*GTXNN9~q-tBLDyZ literal 0 HcmV?d00001 diff --git a/images/addons/Female_Citizen_2.gif b/images/addons/Female_Citizen_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..b831e0320fe105530dbb1781495bbe2557dfc687 GIT binary patch literal 3696 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 b2^oRhiA+Z3+@cF+5iZ02egzf+yy|}emcGCl literal 0 HcmV?d00001 diff --git a/images/addons/Female_Demonhunter_1.gif b/images/addons/Female_Demonhunter_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..601a1e677cb5a52443a51f472fe47507fbec2535 GIT binary patch literal 9136 zcmbW6XH*k=)b1y}l7xhkgn%Il5PE>nK@*bDL7FsCLlICcps0W?p-Cqc6%a89Qk0`$ zMMVuo1VqJ-iXH@1lyaz6l*>7v@4ENBcdyxN'Z}Y7Eo9A(HbGES!Hvvq5Z@|AL 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Demonhunter_2.gif b/images/addons/Female_Demonhunter_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d6ac363f2c951ab1a0cdc94feeb0bb85b5d069b GIT binary patch literal 8818 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 HBp~`PwJE$X literal 0 HcmV?d00001 diff --git a/images/addons/Female_Druid_1.gif b/images/addons/Female_Druid_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..756778bb6f1a103c9af2b999a14bdef79ee38b23 GIT binary patch literal 5292 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 Q?=(bl>qB%hf}}t8Km5-jO#lD@ literal 0 HcmV?d00001 diff --git a/images/addons/Female_Druid_2.gif b/images/addons/Female_Druid_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..475a8ebe6dd2cd56db6bf3cd487ea7ff058e3657 GIT binary patch literal 5465 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 WuL{3ASDMhxVe6*qlM#lYh5rpcq|L+t literal 0 HcmV?d00001 diff --git a/images/addons/Female_Hunter_1.gif b/images/addons/Female_Hunter_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..90c802d32d4b3037b5284611e51b10ab2a647418 GIT binary patch literal 5338 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Hunter_2.gif b/images/addons/Female_Hunter_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bd4c5b4d0a786848f079a4b9ca1c9fe7df02034 GIT binary patch literal 5498 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Knight_1.gif b/images/addons/Female_Knight_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..67ba682f6da43610a16233d25fea8a7055b7a35a GIT binary patch literal 6127 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 PQ`gw=t?oC2~B!Y&BF7ViH_~kEXFG{@= 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Nightmare_1.gif b/images/addons/Female_Nightmare_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..26fecde461bd2ffde36f8e8fd3aad6a99b10204d GIT binary patch literal 3979 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 F@;|`%^K}3K literal 0 HcmV?d00001 diff --git a/images/addons/Female_Nightmare_2.gif b/images/addons/Female_Nightmare_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fe68ba24b63fc16b6955ab545cbc95567e615d2 GIT binary patch literal 5056 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 T8tM4%wtZl-CXoYh9IW{tx*`r+ literal 0 HcmV?d00001 diff --git a/images/addons/Female_Nobleman_2.gif b/images/addons/Female_Nobleman_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..59e873821d37fe6e40f1e0fc3c2e8d2c1f88d896 GIT binary patch literal 5337 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Norseman_2.gif b/images/addons/Female_Norseman_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecc8a602061f8e1a16eaa9d86bbe6809e6103f19 GIT binary patch literal 4574 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Oriental_1.gif b/images/addons/Female_Oriental_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7dfbb1bdd8714a7bf1f4c15ed8a68316ef9ee4c GIT binary patch literal 5156 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 A)Bpeg literal 0 HcmV?d00001 diff --git a/images/addons/Female_Oriental_2.gif b/images/addons/Female_Oriental_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7217b293c3c22c08883828ea61567e2de975d8a GIT binary patch literal 5277 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Pirate_1.gif b/images/addons/Female_Pirate_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5377746cb0229aa77b2e2682ac3dd7e861273bc1 GIT binary patch literal 5002 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Pirate_2.gif b/images/addons/Female_Pirate_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e1ac50f17611187e668160d85550a2e0439e0da1 GIT binary patch literal 4058 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 PKg$@~Co+q094!8C{K{G0 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Shaman_1.gif b/images/addons/Female_Shaman_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..609ad678732721f95c263f6b5c065f8a15d6d746 GIT binary patch literal 6689 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Shaman_2.gif b/images/addons/Female_Shaman_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e71dd2a41565d7819ff5ebce3775444e33d57e0c GIT binary patch literal 7216 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Summoner_1.gif b/images/addons/Female_Summoner_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..952e42ebf3869f76d3132aae434dd86d675bfcb3 GIT binary patch literal 4016 zcmb_f{aaI4p8wvPo8;z=+=KuZ2zW09OlYt-7&WQX-n{TCI!THxB07O!OM$jgY-`2N zTtave(MC$uv5XCf7N;@|RGoHLJ2$-e()w8FxR&whbg6YJ&ibr4wY7b=v)MfR%_#EPT517oy4J7{MK?rUHTyF4K zfY1=QoE~@%?8bP|VC><5K?}#92bzqt^?1x+rHFy8Kx=T4^i(r(cFmta$|fKxUVRlF4|-^`D%Sl&o^21P;DlAH$vJzq;1 z#Qsno`!^pU#|e$qqy@XpUcRo}uES#&?W0@q*w@vufAz#ZFZXQl7%(syX;SO!-vBK( z{CF+g>-3yC(t7o1)0YJN68xjt3u3 zwzjULNer&`Ro_10YqAirPx`GEQ*68`_M7-Y(=Z}$|oH*S5d(-Mu5Zv&_805g7|1mfCQl89qMqh|8n28ov)ViE-%_f zWS0l$_WrCRJ*kHBdPjKNEYCjts%32WJw%zuwvFF%2(%kfl4_$acgb~Yi|=}oo`5y4 z(#aBo^7c+R#o*!Pb;qU2q9T5Ln{c0c`_A3-?(pRP421k1d8?=*@38PzDJUnFFibSxfqeuzjIXaAFOX$pf*?b zdyx`;FI1?=nT=c5x7E+?FMDJqCz6R$)0{uJ0~08M3}B&XHAgI4&0A= zIpNa{lX6i3$3&AimKKzW5pQ3a>W?E6dyM-AhzW8JIy0P#mCm#aQ!sz2u9b}qNgBlj zNFN#Xw@hG~1@~`|Jd8)wqkmzGm%MIK10w$Ea2_JF)H-D=`lYN2!WW`%A=EgY`mKtY zCJiiHAnF=Io#g1sH}e~PncNMO9$rKVrh&4NY48=C{C8>a21bMq2k;&uf~e98=?+1f z1?qWpi67+ExXF=dpNcYsvxa;7%wwqsdPK^u+UdjuLM2Yguc02DRu6_d3`$vaI&llQ z9ewieT3soRRux2#Iy z(t9i2H4tX(Wj9nGeN}9D@%Oc>{`B)n;g4oOkpHU;Jg$q}zbivq8VN^1l$aMUh%^U} zr9DZYb(W5R(CtH!>bwD)CwXEV=cPs1DE7gpDgXHO-Bw9ntII{6u&U6Qc!n(n~R zdkIO6c-@oJ^1y)H^k(H;6DO4IjOY&wa`to_&n(Dau@L-Jpl=V$DYutXr?jv;7C4%J zCo99fVI)jV^vN&vt=sDvY8y~ih_JBWcQ;4UUEg@!vwyBU4WCPAz@2ruU@cOav}NHG zs!77@PVIcTV&jU2oPPe!?4A8f*T0pN)-vW43WOD%Wli5dQq`H2{n!IaKGV*@k12(o|CCpQ{d~w2SbD!kFLYh>UEItRMIwO4lp5By8_i+tAYYu}6}sI|16oFM zHf3V-HX9iHIEyxrAzo~(WF4XkGf^ZL?Dh);k6+t{NDHo(+R?%f_<&TQ3A0GHhMP=X zEf00$Spcb$|%5c+) zXLht8N$4$#M^1)Aq0}W+V-CW?yPwf)xaM`ra+_PCSe7v~i7*Y}4%OP65F%Jz86!B* z7`+0i)*lh7A0LR9P|b;Ohvoziws#c@|FlfTsko$+kylXcS|-clS@>6+hH*tVAI`m! z#wM-_djt6L;Z|Pu5JOZ;%VpT)oKUM|4a5FwOE*Inr#9dmql`r6Ig>fpwbgMz76PR_4-Fjj4Y684J@YGQbMZm8Nz}YUn0?51^hcqulybw%r)`ptPbg3C`sRIc{5A9s*OA0sC+B}$ zM{AjJa9IdS)Le=TIv}&3a?MY4v~`iDU6;6dhg_J=lBIfAZE>%j8SxK#iGyN6|6&7| z#bV2Ie}+;9q6jN|HIsFR=#Q0aEIaj9Gr|0Mrz2BKcbdAGgd?UMcICI9T!%k5NBmXn%gk()??$hgOi z2>$3e@I5Py+>CZDQxZ;mq7K?sPe?=L*s)?+TvOgFSfa8xa7`h_{BU;Z5;uTvabUxeIzU7Dn;I^~+- zL;+FG3zhTt1ydZX#1{9hTF9SzgI%v7f~>^*(Sh|0dI$5Wko1}XH|qR z5a`HpHzPW;#B4h-`!J*1s zAWXFUjapz=;BmrdFvbCEy^DGhy%lN)b@yUXg17;uPPHG@a1!#?ya1c}g=tzw=(A8{ zizReoy)7%s(H?EOmwKAFA09DokG(Y7?bX^u7HC4DD9h zgAw+4^({L_)RZz2M`MuUQ)*!>o`3&WQlqEA#<$I@gQ(oT^L|ip)&h>SZI*dJiYxAh z#ObAjZA7{y(kA*7>gmc@`A*6wA}5YGK6N(7i^+PIXU8saGYy#Loa-KuUunB^?T(PM z%StLjF4z#dDW1C{*}gVCS2)wT*`I)$>aRnv7w9Isg?742Ki}$4F69JNqEC;udCjq{0E-x=v}r%GvZR| zx)FJXyl@10zZNj-k}22Nuxzg~&$z=d)*0+OR3uJz6Fx#CQ%-zSYpVlP-SD!PKa#{k ziZr5+gmpM7vQlwTudNH#%Q85{|ObW3jE|98+NuS zSH+DUQ%sfY&HVH=4U0Vs-nixW^1MR9g<;uJg252$InF6P8`|0RVL$?t}~kUmjWKOtW_7n(%9ER#*4{Jbsj!krnl9g#-_0>w{$ zhb-4zD?l(je$s1xSnMFur~2k?-9~%yT8Yu^fUVpjC~_+p8ym1X>^e-Ci> z2ro*&=^*IwiA~9U6`$GQaJ?re#xd`tY?F&=$Iq58PRI;KXwOfN+mP&cRCVc)c=o;| zBXftErL;IRiB+y@cdf9(eDw;(S)9R&yJ>65~3!c=cU( XDyMqcW$#`R)CJCzJhL~2fYtv6I$r>$ literal 0 HcmV?d00001 diff --git a/images/addons/Female_Summoner_2.gif b/images/addons/Female_Summoner_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb135bb94031208b0cdab102f37d4fe96e9cbf17 GIT binary patch literal 4128 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 Q=N}g$-}`nK>mbHk}53itG)MO%kchM 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 aHEREN(Hf=xKl|9|NV7DhT2#)VIe!NL;ydyH literal 0 HcmV?d00001 diff --git a/images/addons/Female_Warrior_2.gif b/images/addons/Female_Warrior_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ecd5a38a3f72f9a991dba9beb9ea9b06c7afc23 GIT binary patch literal 6078 zcmd7We^gUvp2zX$=I13Oa03x97$lKY6OA@O+9s9G+=L&7h?Znv)Ko1PY_-%Djdo

xe<$z%UF=(=6+xX+jgy|2%Onb;kF)&G}}n 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Wizard_1.gif b/images/addons/Female_Wizard_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..544fc8a385d07708119dcd68d61fdd141ad80c2f GIT binary patch literal 5542 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 literal 0 HcmV?d00001 diff --git a/images/addons/Female_Wizard_2.gif b/images/addons/Female_Wizard_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b9d7c7779e6313bca3664bcdb74d1a0be774aea GIT binary patch literal 5432 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 P^EKz%SLtwpy^{PjswoAM1E_mA2-P=9xo%U`! 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Barbarian_2.gif b/images/addons/Male_Barbarian_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..f85e05a88c9f22ad91b21d9320a68b4177575722 GIT binary patch literal 6319 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 pu|4;;&K$iQ0K({WTyng%wEaba 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Brotherhood_1.gif b/images/addons/Male_Brotherhood_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..cef9b0462a0c21b67813d27ebe467c8e029de3e1 GIT binary patch literal 5521 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 V)z9C$BhQq0{((y-qj(;y_+N7BAXESV literal 0 HcmV?d00001 diff --git a/images/addons/Male_Citizen_2.gif b/images/addons/Male_Citizen_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca542bfb479c2ea49659f4cb992b75b55b0d9fec GIT binary patch literal 3824 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 q-ino3Libv(iD&ra-*rpQ9?l(1Q2rR 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 ZGlt%MiZNXwm1biUUG2@t@bPHoe*(CxbYuVk literal 0 HcmV?d00001 diff --git a/images/addons/Male_Hunter_1.gif b/images/addons/Male_Hunter_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..505823df66e95dfefa4f3945fd1d59909420f37c GIT binary patch literal 3645 zcmd6q?N?J*y1@52IY~}(PT~$6;D7lh*%Zt#X);1 z&{-!TB86y!f<=oqsQ6aYI9EFK#hH_Uj&IY8UCh+6U7ctUeDUk@A<7~uPiOGSR3*|K6nhk+}s=hfY#D5vC}SETMH>Wgpj5yS*DTJ zRzhfEb*+s}jW}sA7y~#?yGmU&O#=+#B#z^3Wkn@UvXyHpSsiOFwAR+w8uWgaVOfYn z%4*^U3`T=N-(fGdvrIFNgT{u&VH}4ffY1ss;3{`P3R)RhX`~a^)z;J+jDA+vY_(Xg zY_&qlMFU_mj|R#OCM`51LI7ZO9RR~k+%TtM5m9j!N+%%%@cHMiPW8V92_rtt=A^Va5p3X{Kv9jJ%?VuRH( zZZHl&h@Wq;b`%>R4qSTLs)PPg15HDddD!1%H8J@3{zf|kzMpabJC0|SM3)R#b_Tz8 ztd%9fl~aN9zRK|?>!=STHy>hg40Hgt(ac^s(wLy@|MOz!i06u{o-eYw ziwp8O36jW_{Vz;WkT{J5AVChuPM|ag5L}DL1X~xDoL4siZ||i^2rXPFd$NzHfw8z? zLnLWx+FAfkly)s}3T^yxzE_#7cbi}SmiH>9S)as$u@hYcrgRtbUi3HKWh~`v`K-ht zF;qe>9GmnWQ()R>JnU5;TKHglzgOhllFg@cV{UJRI3njP)jU6?%Fmw8;N1f7{Yt9U zw~hSuW>bxx9>?JUJ33SJ9B-Q<-x?!)$4?@ z7mAr@GjpN)Ti4cgR9AkXfu%+yP8tT zO+;ke_Gx~P)z9wfOU6P)#HyAa$$nyY1*xvp#v+63esB3Ra!F>h%SCF4Qyu-KikZJ5C@nLb`o!(|S-ONyb$B z0FcgrF0kU0-bjhk!SKmhmc_<$l;e3xCg%}AE{qw~OPqo&d|X|19#P@bHaU9oW53!l z7PjM=WvgD4WjezS0{!l-2+lb`u`J2&xma3U!9=1)cQ~JL;0!{@USAbddR;*q{xlF) zUYq}~+rQSpMLz~zuiKm9=iCuVdo}*1fWy$hX*DxOAy_7o1+~d4- zg71T=#tG;-@$3EaJW9`lhz}&An5Crqvm0LH3d$)KVe?RRLUr-Iy|3p#CH1lVgUCM1 zQ(1)q-`gcfiY`z^J0FR1HM8TByV0v#r3II$?E}8X9{)l4M&}doD_q}QT#V>Du-*Wsq8p)K?Bc6Kz z(WsaA%+-c~zjofLbIE$4{(+E_ns&J}=J9#a?AuSxKJf2@GY>1w;HL{NPu*=d&9)pP zY-e^x6*)6Z)k|{yA%V#gcCT0GlP5|H+i@U4lAqhfqY5f4q&%T-S)bLwja*fnV3Gx( zqJxMuxxx+PYCPntRbirosI*kyQS9H;J(zm1n78P+LzY}PQLJw^RDL=T1=K$o4!y0o-RW_r>cl7DEqS!G<6y8JSak;Yj644*gg^{Z-B%J<2W z#vr2k+0B80vW0;}uVy%eh|+DY`P1m(6`j-jGWw?`n8xdG@Xk9_Tw7~xc#n~{3w5$%lT zN1tX-(!%whF6~E<*W|KP%LEva`{zBATNh*`rt3hJrG+gc0x3z$s~d_5U@u0%!r-My z=$0Q@*5e7cN6Yb)TwX7FF7{w6wxsR4|M~YKNbNm1Q5b3ma#_zKPkgBFFChPnF!%EP zLeQO|$oi4?O!fBXNV?aiX(r`eD!seqc*VlK1B;qi3P43C2RipU8m^`P_9zD=ut7l4 z{0V-NUV`12cpw{5$KP3tXxg^k0Rx-Z(p>KH zowdr8st}JTwlLn48{QsKq+Yx$rdFj`n5ZPjIXn%{k}4=tA8F!iR0JOcxCUo{>=1Y3 zARwJ?25*@(e_NkAK{8cN{IK=46 z!2pcl>CI(s(EZ8UX|-JXe>AL0Od9MzCk-d$g)T&yS9jeV^UCHMJ^*&Hh}IJ4 zv91hWzqV?~4-jc?hnCwZ*aDa$FHkkx?KnJtg@t0o>@I=OWp#SEgB~EA_coO$Ii7=J zX}SEYDYUJ^i#S_==CgLWH0`qeXzkJ^do2M-br_x`8}8v zT@30(0l_3=+Je@bJ^RL=r5OGDPhRyA@L@^C?vhtkzkKrdNn9uvE|sU`VU~@#z58-D zc6u+&o{CB^f(-nvg+14W939kcyVUdBhuw&_g^4kbQM^(`omnncoG>2LXTH$p#{Nt^ z({7o=3+t}~Q*VC5%?~&KV5e#nbv)`7KSmbGX6nZkL0x(F8cIY-%k-pNJ0%vaQQQti zK@U8jNPQl6&k%}}f@7YdP!v`wJVI0|DMTk1Bb?`cS>Bm=6eD`XB2rf^*rf!?IOZ=i zpWe73P$%$vSLi%B$gIkf)Vg33_=7X8G%n1m;{+t>H*1z=Aoxt83+YWTW?y*SbBdfF z3X7PU2VRLG^xXhZZJCY?NeA6gS?6((f*71qn^ZOvFG5feB13ISRj6G*5qtw7s*c=4 zF{U?iTw~rgV;i2}{Ay|0S^<6Wt6cG1hQo8+iA)@gp(-;rQlwhY89a+CI@1-zleb0R zX^Aw3rK|}wxYWo@g7!>b*atMb`Vrk!hO|Vz#NQtTIgXHR;;kLu(1?c%IEsmScZv$FQpFdyOw*`FL z4(jzvfPexOetvu8UfWj-FbUSb1<*2##!;Kqro_>)J%E&;CB-E+J#ef5N<}>`KxrZ( z#9f_1c3aWT3Se4cGRQH9o~++q|8;BRjZ!HC-d1n5hBQ&2y9xjVqt%@@P2?xa5(@9G z0o7I2!yZtej>xQbS7>kaR4V~+)H-f715`kM-3+wyh$m>ho_y93QC;sgDrq%M%fMI% z@Rk9C-au2d5(D01Koe+52Jl+}hN13Nz+Z-87;R7i{NHZ-U+lpps}sSrsXZ zm6VnEDsJAj3Y)y|)haN@ z3X;UZ*kHYhBE2;Q^{dDNHRiUOY(|nMFo2+w|Lj)cScwKayV%+3vU#n_^BoRvjj6xc z=Gfw()qMsPUR`V`S)nzla8dwB8Sco9=#3bw)T)*4Vt_@ug<)g_8w@Drz@#Rh?FXG! z)Z6T>HsY87H7GDz0y?V<-eSDk2>i9C&ItTzuJ*czW77m*kI@R4qIPG{rMhmeHs1j8LvCCA9bAf7;dzi+_^w002mT+ z0PXh_O!fdn20gsrLCe95tKC`xJiFOFyuVs2!;}&fk5G#j*wkcyg%*=&>x;GBwT8Yj z+P}x&cMy=Tkf`)X0#pJJ3sONu6gmkYRF;D=OamM}tMo9XV`7t$-lp;CrrmDAe6e73 z`kPHDOAH9!^)x2CWeR7+m*$4K+68NoOXcJ8E1p@0?u_I@*Muq|mpWcN^3YJV;?T*q z+nG7br8~>h_b%FE1+($y4NYWsMI2S5nArO#bEbzIBcUo$ZWQQ(#F|3`$8zyB$Iu%) ztrp1nAJO8#?4J${zLU)Rj)y*MEL^;*w`6);m4yYy^pnVAOOb^U@xFZnd%pT_-PtD! z=4?9k%ycUEql!y+duzVxO@?CwEXEFsZbCBkwj@G)E(a=ozU#+dvXAY5zP9cD;|8c% zB>b80qkn!4A+vmE=1it8oZGq=LU@Rf+S#VrRxVw?PxnD?L+`W4S^G-@x=%>m% zmI3ered^nDbZe09L#Fydait7#S-kX48gy*o7CZQW5(IVKBE&i1SNJAByuWi zfgtgaFT|NYQE1@Ikmy3kj}~0wCY8I0jY-Qg;)WzEHMJ1>$Ad#qNBsJ>xuUr_EF2fd z4(OqziQlxvU`Yf$Fg{LkVQzTDeir#APzlLOgU)6D_)s>^lf^#@eY%Ksri0n!JgSNclB2&90@8p8MD$@ zRG6tZ8`I}f94Ny4|FItnA~BE9|3B=bgbujS_*tbmp@$o=BvX;1reR4#wJ>Ov7$)jT%cP5r`kD>V-LF3ije{hN4&fV|2$P`95iHTvMbjb(q)8DNt zl`V{(+8@3}p3H*Y8%Egn%9WphdoM2>(TzG{;-RBkuoPoq&+YEmyympWy61@K3=&8T z436Jl^}7!zos||Ah9C1ww_`wh3d9J@_bCFu13YP>fMDO-?n-H9he2RWTE)e3&;W$zc*p?IX9gk6k7j;E!H0AM@jpV6Kyrv5ow>n}^tKC8d8i zW9@<9Ej9Oh{vaoINE64Azk5Lso@O{3^fya?WTD5!VHTPDfauDUx##Z$P@eO$c6SD7 zSjw0AVDue{nTaW#p}-c&Dhq{a{3#RcCs?J=#r;`_8Nf+dUAcg+TGx>aOx zCMU{jXQJy8?E|PT(&x-C>e57-X>}N~9}}=fZ2sl}j!5=obO@EN|LV+0?0w(!>oKp0 zi(G_yz;VU?=j%~dOcFZ)$80{W^@(CNLb(0WfC!@O8};HWoh#l>fWrazsbp5XQP5@qXpSA?uY0%SNH3y) zG$4o-JWTKIJrh0q=JIF@H0r!2_8dNKyA?=JcU`SoPF(AL6KC4}>YZNF85T;tKW2o${BkWrF%>;e| zp&}@T*&`5a;N{p&*QZ@P{4cZ9j=&I{Uaq)e4+TqGr>86OyL#ew%iBbqGr(Wee*v1_ za~p7rhc^Xok5O#5FpjYj-kQpmF1K^RAeXlnWa|9$@{gjE8awd{9z%K-V}B2|i4-$? z#7V@`_&5Dn<*KMkaf;*74Ps_J(1a9cJdO`R0C(JigrTl z>o7JsQ&Y}>#=WwOyRa!$A(2zc=5gIwVVFk@Qm- zm@(`h*8yH2tglT~m$M?lv0#XtQI~E~z&Mk=X*c4#z^TkIPv=d29jM?yn@1W!KXd!y zj0>`^U+EKyM)?8?2|FQ3?fbKVch@|&8zyX*sV|=x@*0(EsD0w-N=qdlx@!To3k>8Q zkUMcpFhA?=0jDEIF%Xx-TZ;g$*i+?p+Tke6j&v{bg`pxw=F|Uzk65_8du?ZYdIrHz zgg^8F8}}xf2w?f^_TS{E6rBag9qF#@L`@C@QssH1{tIbB_^5cw=>yJb#S{bJv?syO zh2eGX5+K@nR|Di8|cnY;oaN z>*5Z=0xq?w2+!}z@-VYLkA_a5{sYY7C2Q+0$93@EmFNLZJFK`_3^$0_;9+)ku7SR z@$+}Tr(MlgeovRLF47h)XHD;sl|TIP__d}3S=;_4*QT;3_N|$rBORaBwlt?|n@hhd zd=$Mq8WTQ|=&lq_Tb|ow8=_|3`!)7b%W zoW>;>28kou@_}YF9EwqJ8J-~e^)^IWd^gk}Tog911FQX`X!QE^R+d9m62p+Pd_afP z+eelkiJdY!h)vC7;O#{ZBWQ2-?HZAqU&}*$#fJoL6%))%YW$7OA#9^64)A!rjn2L_ zFXlw5!v|BrLJ5_{nO~<%h-!MGa}T0HEUd$uMt=Vmcx`~;mFi}2Bz~sc1;ws#0`!!L a4e9B55(Zh6H=s`u=TPIvipnGySo~i?PWn3l literal 0 HcmV?d00001 diff --git a/images/addons/Male_Jester_1.gif b/images/addons/Male_Jester_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..1719e0c2360648bca73f4f3dfbcf816a2e459336 GIT binary patch literal 5159 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 G=)V9267GBe literal 0 HcmV?d00001 diff --git a/images/addons/Male_Jester_2.gif b/images/addons/Male_Jester_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a6a69c90c6d129c6bf25c51743b0c3e61a9de57 GIT binary patch literal 4860 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 Ct2xgA literal 0 HcmV?d00001 diff --git a/images/addons/Male_Knight_1.gif b/images/addons/Male_Knight_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e79fd0128bcb527363aa9a7b307e1ea199b69208 GIT binary patch literal 5344 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Mage_1.gif b/images/addons/Male_Mage_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6f89cdce09704e6a5060d1642472967ffbb9513 GIT binary patch literal 3757 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Mage_2.gif b/images/addons/Male_Mage_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c19eb8f0a4330a0b036d612c125bcb83a282ca0 GIT binary patch literal 3936 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 TkTF#I*d;IiLtF$91U&U$p4PJ| literal 0 HcmV?d00001 diff --git a/images/addons/Male_Nightmare_1.gif b/images/addons/Male_Nightmare_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..520453d72df6f8eb42201c10f9ed80e55ed27992 GIT binary patch literal 4395 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Nightmare_2.gif b/images/addons/Male_Nightmare_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..028ec3e39fc67673260f5a7aa6a9a056978a2cc3 GIT binary patch literal 5379 zcmchbZCDd$*2nKmCSgKCn2-Qb1|1+m(11foYmle|1PK}-C~Z?4YrwRnii(O#Ev-Wm z5fLFET|-OVAhBX)ZA4VsY7H+6A{BgFZKW?Mrp2Ydu?~I4diQQi+SQfFVn*)oOKGjZUj=B0;HI zqSI-0)0S(|5PH47TnF;?Sr$Do7!1}d!l{CD4TicbA~!d;PAjX^%57SiT`SAW%d_ib zjXIe<4;19*H|gaLy}YoXpv53>F(_IMilV|o+@WqM1QbP`D*|S-xsw9r<>i)XxAd2S z8jGc-rp8)hxnltX7GSm3SgqE&X|MB`t*&mw3S3rTv(?#bHv6>ON9%yQ4vgA>+XnjU z@+WLy!VV_wpsA^8su8p}94*t<>ak9zbF|gm-Q9h&zxU3aJA)n{931iZ$cW438g;qc zqb|4GJuxvc>G8?Qsi~=uDRz2t*2<&=O|mqapwm1J5%N3Cl7dS>GTj{0Z32)fu%Csg z9JV$S!k??_cGP$5LBp2SsZJigxK9|nZlL>QLsuo9REDKC+bis6KzXAkOX~E zG~>XKI&I$i(1IBc4_&BR=o79D^c`4kOYq`;e0%>tGVG~){{Hj#Gln? zmsnHxzw!9&!&Qo1FL#tZzumj${QB`n@15_t{$Rnb@e>cmKdk&U_2A=ghqG#_Lu(Ew zOxJGMCy3#OTUeL5cJTPOCRXU0fKT5!MM4n5Zk6c4hlVSD-OGrDjR3jQy4!mP_v3Yc zhqnB@F-p2ahzv(Zh3?oG^!eR*eMo(ALb`Pzgn^yhfWFTpo0VY&@J zsK?8_pT0`LqBpUGixJ9a)xcYvTY$4vgV{=Xms)Q|`y|<&WyeNu??DRjg!YKE{!k8o z%BcI}tYG1>ovsw%#Z6PylD<;=VKeM42A$xr<9>q@0yky?tNl?b{B~z%dffWIoa*uGcDQ%f zS;aIMO+o!qMQX*^TS~|o+DJlKPKYNtcc4q|vc>M7v(7!m@8c?aEzTN%=o5q@gF7kY zuh6QV#!CoV?w8uzz*u;;De>#z6No!QaZi7^=Wi^Ies>rvC*M3PSSxbk4c_`v&P(FM zl`}U<+Pr3e@qFdJ7e2jd+z?WN`7!+vE$`RL6PDvaK>?x_X^Wpvc2t53fd75OkLT!Y z@3YMQ6p@ zJg~1bXcmdxjQ5o^=o{kiq+7SC4 z*5b>z4k7yF5VHs+(XCp72AIs)(vWNY4II(M&W^HKZ%-OiXYQg?G^oNr3QsV19w-Z0 z_4V*_#c5Z9m((hfGNYlv%}9_%U~Kzlv!5xZQt#h&xExWP&5iexBGvZGqG3`BovF+Hw9P)WeEI91HINRxkq3dYDx z3Zim^&cY7HPA4-?gmbHFOM$a$|B`2IsI|~bR#0`01?dApe|r#$)8q8@p5eCqVe`p~ zOioVlulgZz!9ASv8=wJygDLEZzJx)LC}<+xT~g%_9|C`Q6P$we@da{n-C~?%!?+a<2!b zHH07Exh;Fi(bW;uFFS42T`2nc_9*Js(TrnT;_s!ca`Hr3DorYb+%eh&HFd{rOkjo& zF|!-UG3*nH*t63*)wY#P{?xnm)a+3{IR+yrtS0=fc1HxXaUO&d`t1;$QxH)Nu2?#J z7Th%7SO)o_^=3|o>4k>kDa?F+&%Dc)1HG`u-UbO?(xM5%3gPt>QH24; zUxRJDp3r*RW)@sKP~8Oatq-aN~v=KUapApJ+BO8N0a|0G={G0sbjrD%m;f zylA{Prcbyzh5bO0v>$)g8GD%yfCl(pz5GSWynT|Y^>ZFHwBQXp z`LyUp`~>fVk&~T4ClIhK5VEi69GLC%@yo<$9kP~>9ff&KuAVHoj(5h zs%$Vm)9^46az3K_bRD@4v$K7A+i~VmV(B?A${1Xr>ZgE@_~@gH+%b;Cxe#L$OkXcW zOmAdZ*c{-K<0_^F@Q)^%7ewzE@5VnsG~;|{zf}2df3|H;m}-J|$+w|5KbU|D4y>7* z`VaR~$tKP}Mb3pgoPIkO?v&&Q9Z-v?-6CNR7O_w~Bq#rsz)xOJx1U+++Ed;{V=O zu?e?Cg*B!uf+?eZAUxpcq)9{!u?R)!`p>Q|Ba`-N(X^kmsK))fHRR^PXYQQ1%zHrb|D$PkWoG=Bi z+h}4(EF9y8zLp%lWo+NW$H|~o&JZiZsrdX#eu+puITEp?_&*8Je@jGu|4&5Z{0~GF zo6wFN%qPCj*~|8a|L8IHgm`_P9DTJueu0mZq_r~4YRAq&qoME6FCj;{-!)^&d2H?J zeYZ~xd=Vc`FlxZ*KZ%H&7I*i|AMU9;kGyVwwx(}U`kF}4-m<)-Z$sF@yv#V)=TpzJ zy(9~};MU!=ws`~Q#EQHhCWejdIZh+&BkbleH$Htn{MV%rmVGe*djnz}^R&16)(u)h71=)B=J&ar-XlJI}2OAira&RQOS znSClW$#=;!OAj|bx1PaY)!63kn`U0Mej2-AzCY+lUsSmwtJu#&T$jabd!6n0X*;xh zZoa;wJ@8ohqtv-pw;Kc=4>zh$@qYvWO&cWWym0#%!#7_SvvlDdd^wdk!N{;LJ|;^scSdA}mIy67aG4qVVgzy~R!v)7>2 zc&cnrd}IHjC+7DV^I}I)Dhi0&ug-qHU*r@UEcLVJ7F!PghWqD|NxmJxwq`8MN3-YK zb(PRQQ5x9n^nKF+mi=_0@Wzv5NOY3U33s}`^5WoblOP)}CLcffTi;^32v1SoRzVx=pJ;h4?ZYn)*R%@vOSd(8Q7)kVDWQ{Cm} zBUcU*YkTT0OB0|E>HKG3?!946|46>=kGp#_L6vx+Rey8Frr?Y+Nc-NCnq`;iSl|oa ztoP13OyR0Vi*1EJMfdXOPtq4`3cgl4jUL8MBS*cMJfE;UbHmx4U*D7J^lH+Yw1_(x zaxLs7et_lobhY!dyXT#&`CC-s0D`#y-%E_&=X1gQ_fJ}|%wNuL`U7Gw&K;TY!n)5Y zqK0WdIx90{0hqk?AaBjC+rRz(^yN)2w#^wibl&^o{?}UHz}6jklBh)4x(h3)shsCT z@%i^||8%k92OYjAIXCea*6ufXrx(RE0C9rxfs;$ z%p5rQo8pZdRqY?#H+s)?1G86?v#LURpjm33U0p7vz{bMg-zZ~sCw>Cv{K+u-IWJx@ z4&?=0w~Te6koL=(GYl5E;w$TaAY}I!-AD^+BB~g2gQJ;FhjJa6XCl2R*azt!bZ?KB zuPhICkW~!nE(b(s3GWQkz|0VZ1<0)RUQBKON8Y@qJ8eCIIzxThrEm*LXC4>iJ0cY< zs(4lfel4ZPd4yu2X@=smMUA<-M2--l8}mcPbyiF?5i;}bPa+Q(FV@{`=$qXz>WuL@ zljrW7i@#Mv&1MNptTXn#@JT0Q+@8;feSC8&$y-9;6cU}$;x_N`>IlBA+xFcNB@(Ip zwLJc@L%P>%fsSftW#H{BZ|wZ@m$Yk-w41yl3pRH}M#{G`=A{vX^iX^t-wR*R@^N9- z%9kEfUi8K`Rt)7C4zo!dcRuQ6yQ^F&bNt&FNje)dG&ze%Vtf@slHOt8jHECTtvq@W)yIkm`hY4bZ|(FSEtRuW4wa$Ty7T91KPYc62+iK!igb4biqFrNmwFx4w@uf zN150yG=C%24(DAnJ!1e`dnvd@R)a{~$$86G>~FNt*eCSR?itJo)FVobA%#H}Qssx2 z2+hT?Pp%VQU4nG9OEw8RT04Bw+xAA}8H_X4f~l`2Dynd35Ej3fZwwe1VqIO|AoLBzhU_F9s!E0LwOS|u;{OKRa*~|95DpOF5Q3h=izWz|0M$gXb53}t&?W(=K(PxAAc)!^SZT4_ z69@>3G-!M+!$t%}S1ej_wAEe-AkvY`V%J)?I!d8wf&65PDpyCY7at0gltS6vw4BU<6HB zNHUL*>q(`VkP~K;`Q9Ed#1fV&OP!9^Qv^wx34*Zas_9tTz#6ov+O7ii!byJ+JWoZ^ z6m7^fT&~qOXR1k(ywweP1$m_E%*6_lodApr;sAFa|)?y0-{K9B(S zK6e7(T9PnOuy71|OSA+4DJQPC!)UjqbX}<>6KFa9;##j7gTY#V@z7fZ_DuC;JJjWZ zJ{D*KCkdE445RxS?wz%3Dd?>=m{TDy6-a+r6+SoKJ9oPI`mtu3Byk)Tt~zlHC*|bR zJ|LvHTGiZD0xzx&I_vZ1&Ufi4xOcwmR)0f7f!aXfw~jT8wws&Rs(Ux-2kQ;aO@_g( z27`*2>}$Aw*z)we{c>M3Az{1=xEr+?C67K5jI>hvmTF3D>! z>DB%T9D{~j818Q9+GL*GV=?RC=}CW){`Lv2oFM#-{hb%RAbCBrs4$&1W+o?Tc!)n8 z{Sp%;`}c$Z2msn|fG+@oD{%_!faDQnQzNr(=-iTNn>BRE+GHt7`EFDo)vY>tkl^uK zCie=9IizsBRj4owm1)%)mfMR3VolE`T4hTOeFv?`!(c8Lah`HpVa^tbY|v?sTy2dK zSvNe7D14`7cXUi;WzETXX2-JN6?%1gCK@10>c1@>i4lo{qb|kLk2N-FPXaglBVUq7 zhqcRU&-5JW_&6*t`L_3(#`7_}ll7mXD;>_HHwMq9F|Pix-SViNj@$JqG3}AB6>EQt zIUcN9d*VydSWaL0Sf)PaD6Wses#=f%${JdG<9H_W`f%wxE*l!T`EDa#s7UVkEy{ba zz*5XNeYsmyqy5(>IJmcM?+|&T)hL#DCDq0m_szaHhZ0O2l0P-m7AnTP!l-4>HCOOg z?elE9@YD>72HZ65P(28srfmYb%bk>#?;FQs9AK!E&TrWfDCTl(s9ZPm6;D7I0UufjM{xej7``o8QlOJFiDxk5FL>dOY<3?H_c4dl zrM8(!kG!)t;a$oZ!$%!gIi5h{c0-PodIb1aon>|S{ONjNoV1Z8M|7cB z93Q`%3?bO`H-KPN5EFu&ddVFL;9FTIKJy!c`w)t|*F%_VgZiJPe2pD?PrJZ25PgGz zko*zEaH#!2bzhkD&(Mbq)gVN)@Ard9?@0}U;wp~ehjK6$c5TI97LW6~J;EQ8pL;}aWjI;|G-GTL$QwpH0$pm^A-DdL z%OhDSN9Qs|_M!$Pnm2kkzN6i_Zy6#ky*ppnQ$3cU zaW`pZvD=HYdSYK;ycR=ZN!V_5ihs0Swx-J3_Ty(YADHb^DsO{ z|4&Q)aN=LCuq8lq7h)>+}?kEQ zIuRaEg){K4o;LbggkgcR)^-i22cAx;h)#I0dJ}k>3P8ykf<+N;MI;;1bmP9fB9;{fl9a~Jd@98p!WlO!(_grl ziPftbnf6$Rt3|vlp8y1mOg55$Y~EYVb1a^s`@v{zCG9`IdnUD8K!WrrUk9Zd)Lq@8^4Db__O@ zjc}eZW9YlGlvVlVW8)$8qFC(YeHAyk7ag2%&Gxt3$)b_Uluq+exoAE2GEa$#P924TDumnmfd`yaj{2hrfxFPj?c$CWFe)M7b*~*Yp>`!!SLeR z3B`w}32G$0{XkU3s-i~@kD(io?v)D@v>R0@cBVCz7nZv@+1uu+H)kz*L2-Aw*ydXr zwjJ4BZp#d?b+H`qiXFC;(0n5sw7yHjrc6uI^V1RPemZhB?b#IlB*F(9Dt*kPthz|k z#=o|GJ~K;n%3(ugI>yZpDD!c=A(JH8iF4n`zey)Haed=dhv zk5=&rrF8^3DN9rgp;>Zj2Gc=|e8j|xSM z6@>IOH!e~sBdZ~W;aCxEt*AwBW)Ys@3e?BqdSi3ON^mt}L6OS(;Vi^OAVI{;^McW6 zyzEoPTZ@D>6&#ck|EszGpGhU|9k;b&e$B-xn_OKIJWtUUYzHPykx9#=+p$c|NX@S3 za(9GMgw_<{>~5iAdEBET!EFUR6iueaE^P4%!`~=-G{hb~Y$xAT966(LUlrqP_>0Qv zfp)v%_59oFfh7ug>TYo*r}!gC1B25J>f({Ch)Qiux&9cp@$0~Z?v~Dqu}o=H>rLEb zf7rvrOcI4SgWoO-Yb|ryFi~~DINIeLHuEJb>*^*>MHF((;y{~hRyjfyyzy@L+2M;z zb_X0rFMK)@k>YK!3Bs|2;*n$qvTq+#FY_^e0tSV5w_886`T8b#@`hK-!G@sHvIWQM zRL6_QrkMF+c4)l&N#M|dA{VSg?l1dUe$Jj#SMi9bVk5`9&xXHkeN^RS#K}Kd(}iz0 z^&p$S=9_@`M=i1FAEi;{>5`aAjYp=|r3>0HsfYP12RzBpgb}uJGcD3Ydyj#iW-Nql zN%0)FOET@VwX7-fr3<14G)P36bMn`12?_+m=&1`c!q6YA>HPS{+^lW*tLtI&(sBn+ zTpDlpAYqN(^q^{vInsdY7~o}DjboCaa~BCgM1Fl1e?{ZA^?jNpL<^o#b0(MylWWK1 zX*p*YYx++YXsk?$*j$o_F2DXg0FJ61I6@--Y?=`r)ZX1Cak*{7 zDT?vwa4e4M5RdP3XXENP|35cQePTov)7+RS<&tK6W#^jo>ER&ou(+|fi(A?T3rbtF0Q)A?M9C+*4I6SUG3V}ealPtz1RNp z{(67B`_Db+&bjw~?|1I!`?;%%SLR!57lXy%uK>)<%m4rc1Bs)c#7OyyO;(yTQ8++B zg_&y1XK(`dmzkbqrY?`62)xy98r)zZ6AcFyLfN z(o>8MCrJybBkS@RiYj3YjKB*Ni8mK8mb}D7D^8dweKkYk49!^cPf-+Q(&2(#sLrEs z9KW#LO6r8_4b_aHxumRwB!J26_t{N7WVzz z-voNLB?g&9MkbE{3k~|VgPHddStTpXfJ!8p28^L~WSf-)pw$jW4%U%qA~gKcp~jIT z&6JMp+h94>1gr)?=_>}egG(MTvIq23T7KuL?n|spFkc;NEHMBJ3I_KGBOMigy*Ajl z%i3CL`s#S2)d(h!*Ijz6xzP^3dat>4LkWX|3$KBZeSpMq|E>z(29Su1p+IxFRmit8 zG}T%OEUal})Nj&(>H<(=ruw!ElfM8aJvG@y)orV5ECw@UJ&Z0fi)t-S#7|N>%D(|z z>Ht<6jC57^)Pf6dwSIce*IZ_rxjje{iLI!a$x~mQ^9e?B@`KjFCZVUPAWm+WiT6!H#x?qU{!68kgX zpo-i?Z&m;~m=CfOzi0+PIKc&ik{3@|SkuW$Zut2HJ8>y=?4o-CtGm+>0T&O@$=EaA z9bS1@{$d9@n^R)gip|>mknq{nE(mo5MaUy!sDZRO|ME&9q{!5>BrL$mv*4b+tkhoK z4r!xzg71hPRPM5k(6o5#ef2w~BFno)WWI~Qr?S=qvLXGS?tJ?+tU3)D_C^=E_!|L; zusPyK7V`5me+yh1$>vewe(h6|U**xFt8psSaX8LOGEA(zkXFQb2enNAuE-cwp(eM+$H6*RfY03bL}*8ns={vd9Fl=8a$F1(OG`PaRq=DKGdZu5 zLz8DWgnUZtLuWgd6?E`G?Ffz9wuSb^;7r_sDd+l`2(z%kkK68l<2;flCe9^W5A7(x}i!k zEbhmUwFYA#82uy!5&C>CK^m%T>6M_g4OprU-`DWCC$3ave*NOJM*iP``IB7N6eCgW zksL*}RQ}+iSG!L^kPlB(V{^70l))L#OAUGiUmhs>;^^B2Sq?Ty1)#^!Ec`{s_0qty zvVEOx!Rt#U??ZI;(AOho?o9E8z5W@V)87Zs5`*#n)yDOMuN?Zd;|lGOd!W>-zr+LA z5~pteTb6(R)ytD2w!fallzQjkEmhxYhCA|xs{-xrBy+zfHOVD;k)#l($LWEvEU&|S zBht01s^5bZKjI6OOD3q*`@omkZamN2?N#a@x_n4+{N`AmT^AH{q91XUsG6E`&(Yrr zcvEYK6L<6{BpFFj-}9_TD~$>sm7DwBsbzOU(PcO8bx)w>RW$Olsy7}*Uy6$1Of1Iv zu#B5AL78m3E5eKJxzdV?uCwlBk`0ZaP-oDjE*_3^%5>Wk5#3xsRmj%#MY+M0y&R#; z8kz|p{RIQ-1=+ls5C__bF%p*5^iQVP*Y-!DR9DQVEfb%Gm9s=wge-jc_@ZoYm5)1` zQX1osjWP-9-`e(!M;1NuG$tEFcT_eZ`Z$yU%e|#)Qg=yX^OxU3yk;qae{|?Z;d16P z9U@y%U_oS<%rP#9*S;reGsM^^p4~#Cdx+CcPtwwR@9RJ*>6k#3xQq8e;LrQl;6q<} z%lwvF5ui_MM)7>5PlW8o)bX9Lg%KfCa)t5ZNA`;Z)Kh+qO_6c1b~7D@RlodNd1iHK zNCyZ5dOxCQxb1=zcd`Fi3o;M0D#|(GMEC7}F0%zzJQpe-RkKrn_)y42ZxoK01D135 zWE#U#06{+>qX2jUm<8V>^MCVBBwlg=!oT+pN{UXYtfMgXj>So%J~Y!zyyko|6zPVu zN@M+W7}8hB@Sz1&%t*R|=s^hDEakkxN?j*6&HWWf=OQ&9XMOv3f)NwCK{mfT zup&>CAsW1guG)HX=%U~I0jvK`E^n5W_nZdM=K<^d6Q^C=)yeYemrh5rfPf0Bt4U=6 zQGD}sd-a}jZ=Cyi;>Gu6pmyYuIGK>y{jA8P{b)Hm9t?7P`#bn6>`ZL;=ju0CHdO4q z5)j4?QnKSt+$}x+X>R)G&XT8?TA4n(O%nIQ4hKhIYn_+MR68Xu?TxlWo%+VU?ol~Y z+GNM=Y)~x52tMXXlO@92bQxNmv8SOHk;9vzuwVUb%9pahb>`~4?wVl^dU5=IM|u|> zv8QYdIyvaT$w4tCeVpbNyv{zjVt@4;r(oJOT#GB`)CW+t>2EG6nJEZLDHwOiK8wi- za1b^WaZ}d%IH%e;6o{yPtR=%xVU;Y>KajE2izRd=C>Q#t!;p3_H_NFSm~!I_9gq{V z#YE4%Asp)EQimlk)_Uf#h?Kb=fK`g*haK;}^?nz4|$8Q9c2?@2;33(BYM z`88rxooxm%oE?hs**B(!pV!{7nilOgJf&Rl355oU2MKC^=Foov7P4Oza z*Z4oCU`e;s1++gpS3_~~Qi3E(9W*BZ7=>vrboRavULfOI>4K>Ukv=aVXVxAg#I-v zkbg9eTnWy(P>fzHORvl=Kq&B$Q*ovJQIMZ^;^496dTr}WCLM1_=fjwP$Hn=wu4Q}3 z+1lm?UN*f#{^<4}i&v*K)tb(v#YWOI1v?!J_P6*Cy5~IYsxw0!U3lj+ZuF5K6J~`S}|p5L2b^$+ZW>{iL%8Y zcs&J0KGdmeJpdyhkqp?$LZl)Jp|C38VeOFXkisC(arH$N=YxN`)c(Ql;#qhOZA0u- z98Ncn+uxb}FKlGDpz_Cf^>Zz;LV16T`e}B-CNZioqmWm_2F>>r^b^;pEb$&1*_sWY dLUmdIASrpfOCxIT9_P`l+1%+XQKN#;7OV9}q?K0MMx|G7pI%;E_kMiuet2i?HG7}E z)}9Zu=KR+0WanfNX=~Cz8u$+UbHUKd%!VKUL6Cog0Dpl%5DGy&f0y@iD}iB{4Fms! z?awd|fgu>?vtbm5F%R4am&>(Mo<o= zxLU2&D{zfktx$ATsKFEf8jVJ;1_ly0k`jXkXtml(mBgq8g@uKcT2NeAY}Ck$i;FGA zproY4S`6%3sZLj-)9Gv_z^(&jWo7%zKzVt2Td};NqN2GRv{e9yjxZPu?RwCm2TgjF z(P(rS0A(~(R#tWz!9^pmP*hhXXsIl;S}ZOKSgjVD)#A1Qj}`P=fx}v2x7&woplQFY zY5)FVJGf{s>)3B-YHD)sFK=mX9&G|GEp5IQ(B9rY)MjvWbT}Lxt`2*r!_nE<>FqFH zym--j(dKe?xm+%{%jt2uJs!`5%Qoe*_V@P>_4j-Gox{UJ-n(~4M@Pr}F*Y_nHab2& zHainE_%B)P=Fu&=$O}39(xHQS!R@9k!`1j!rf3F!5 zQR3{%fIIK6NBO5B1ch5i*58{JUld87Y|UAfFuS0Of2IB>X7O&~tqVWT-FIW)!;q!6 zptxrrq-w3(m1(z>Gw;23gWq;&1-@#f1!&qHuN^*curF;(Q&UP1_#~ixy27*S?|$A5o%gs|VrLwLFdFtQ zAotE60?v@xg0`4zDFRAc!>jbIF{71=Q#W~Z`>DH&T6KCm<0!;+BGTsMkhD>2Z*7?P zITiK6Uk++GknUyZQfm0JecO$#W%!Zh0c?x5_&${69h zzQIe=_{0#!aI^DU7%z+kbzA9_g98^@5@>iz<$M<+#_dih)gju&$(xvJyeSG!AEo%O zbR1lp_@b%69L}NiHTVZ*^xb$0MP@~$sF7NTJKWz5C64xn3fhWi)H9aZ7)=b>-Tq~Z zF7X}!Ub@%B#Ed1%K)8r4>JBy+_h-;E+j^J1@<34)6t7Q^@1G`L^Cgr0;BOfPVXTt8 z%&r9!vh+}4dkigRQy0>g%D0ouxOP5w=IW=$C6`5Q#AZgqJqddweVUr21qiiX>2)bv zbS^6Lt{#qSB?dxS;hP_A2y7>445neC;07im>>%NsC#5#ANlTubJI(D(4@LDLi6y8h zI?rg6!shTyeHCjdORZC0U-`B645V>5UCa^fl-&tfclDtInS&GVTO2}JGn}+Ue_4>O zQmCf=$C!W>Gp(c135zLhFLnW`I~abh{d^5rJG;H0CS}4`Ey}PfP3%pT7y~b=MABgV zt}}Ph6>D@oFm!USidNadcrzV=3v-=O!EBS2o^qeFLU$Wy?F1Nh9}z-tZg?`Q4eF#<>qt zp@&wf;rz4k5urF$GYWD803Q3@vX#$SX$#@z6Hu}2@sYm zgY#N+;SsY4wpC>%o#E(C)tTo^BcCYf{dykvfZHp`_I<)2ozM8j6e*bIzgG=o@zN0qW zS+il}#nbq2H(s%{PQ*TXbPx|@nn#f&#jWnT_}a*~CVt6F$z!feSas>=h%G(W-|KzH zKnI3%VLh_)n~NhB#pZY7+=(dQ>^esfc=hGL~)X3 zyuq9L+n>k37InWrn+q1%8mfgK0za5C)V_M^UVpuEeVeGPj}x@fV2SIth?dCqf_`Rj zJ>~4*mT5=sk(}}5Tq~ERx1_F7JgAW$w=q@hcVoDUq=P{qlH zODUt;49>j5vZ~7wFyTD{y-PTAkGwN2fJ|6J(KBc0CpSZ2MBXUDiYh4z^7EDk<716` z)8mJy0-Ta;YKw|jtGN;~J4+2%(M4)%547E_yM8*CS8#*%vuk}EKaFbW4Xd@(Gd>ZM z+$#|oTI3pY`-B#UxkOmq!pFp0>t=kZ`O+QwiNO!16gQa_ih7=ykWJW=Zl-3)Yg_os z`9BzFoIA!Q6tq3*y@*Ztx~1rZ&WbmHp7fBf90iUKvPsbrqrm-yfn)Z(fME1u{$r%t zjqMiAbxk}j7TCD=(_jrO$~bdQ z>r0=8cFdv2RCnc>7fz}+%$z;jA-m2T&6ia{v)j{Ya7vko0dFdq%F7&l*0Qzgd(|u~ zGd9PXcR5IaA=j|eiyfTcO%6ZGXb-Dy&W=$liQHgG%;MO7lc?vk5bLR$%auJ=CW}jc z%TWC81c9@Te%VRJ9;IZa~;648w1C7 z_#QB#+FHn&8cc9UZ+0E{j-l%6W{wRPFe|VintC1W&YdHi<<3xU8ATr-akJ_K8;Ea~@N`$perL zK(Ff4Q@$A3w}l|lgYDGoe0$xyWU|m;gyLm1GmY{>W_RYIznu&Hsqz>{M>%=_sW+$c zdx&;8fQ4wyQJ$XYKh%L+4ODQ6m2PSXBWa(>GIRMotVmxsHf-9Lvq1?ebOA|Dul1R! z8v1P}8TjYss=o{!6He-#L3{vZs!h{603BcR>F(l?q{w*8BzEeLq~opIqeo9D)tEg1 z_I^O8$bh#`d)6E zJp6{~%qP0g>gLNcOAhIKn@@f-UQ!_-4kYJ59zN&#LGC_dYbRn;qNr=)2jn z5pxJ1iyECgr(|wwbpE4a zz8EaMTKE1{@vjkJ^%vjVNPHEggcY|OdHMN42hPs4HN1A@*^YG;#UDZ4Q|C@-2KSXZ zI$!(g*B_>(zP@H>+d1*9rJPkQL(>gE{3Qmg`^z8ZY6O|nb8%Wf>z5&8{awA$HaIp3`*>Q2;NMJk#48?VBRGM~+xqd!Yhp17prkP3yH# z+-riPF&~!6y-cT7!vb65vV|cl*PKp=h%LKOh6dDNX}0tX4(1@U@b};WlbFP57EZnu z>s$1louZg4)o+E-^5rwTBjWl=k`t%$(IU&R6c-{i=*%IBhJF+Lt7lGV5X0!DRt-k0 zz<*WXCJ?#8>r+M)c`+7VRwyz<=X|nmNYFv;R$Q>loYxQ83hNnTJRO6Vk72F|<8#yH z2xvvJ1zN~{LW3pESZL4_C-yrtx@?qO$l=MlgJLErz`;XJ8KH!=V-FESjhIO7R8tUP+aDY%XdM<^BMp`#jCUFs~)nFtpRJ ze4Q^Y3BOzs#)`3mDiW>{%hcBsx1lBoYkN^Wv8l_K^>clp$%+vETW6B{<|qi}7BlF0 zgBPj7-_t3RzopS9O)WuOn69vIro+FwXd7YvA47RI1Pj?BwJSqcQy^&6%&Ea>JlN-~ z;PtZl?i|L!WK9CqV%+`cvZCKq#e%9Vf4i2I)}!2$dbhFp81N_ zTeaBhz&Y+}#=m6DDXab!2OPtgSTLXuj1QzSQ1$)l(7P_yNZ34X8ACWW8L(jNad4&T zW2KBTq2={ZNZE-k^xcQ%^egwgCRaldx?>@FTHtc)G5S_oS(H!}oTu>{SULWMVsnnm zwKPD`c&xg!=LZ0dlVVV;J74TwW&eW z%*ZcVA3gN8=9bmqZ;v7Nh{I)T-^OG~*ytnA1?r+vF`Jl7tYFSR> z+aHDRWyw@HZO&x%f-{KV`Jso-oR2?e(eBQ#UaI{t>!a1le~ES1)+7qrI!PcCM?GKmA2^N%5WJ;pHt?A1OZ)t>iL7kVNFn?|MmM%Jp<4 z4){{~lGB_6?$Fi9(>+OPW!iv$d68GQH|k8Y?v&+BXR>AMJ3IOdz@1R&S=!`}OqTGIe?&2lY(7^dypA z1)Uo^{-%n<9?ViqVJBN@E}4&x*}clZNV|QYm-(qy)&n=V?Ns>q_|=bcTgS|v1N7VP zID-aNCN*yL8&k(wt?yD4(O&v-;_dRpu)tGSXuq)@S-m~;^Sm@SQp7fyp#zjJ3GVB% zJ4N?+rJtxc<387cc#W9;d7h!a8=1|1tdyc|;ErmrAy;4}*?7%`)-;Ng@mB5S*nCOD zR_3xZes`Mf){jS=jYBdevVx92&;8|Fas+jbdI*_s@VXkgUSCgC2YpKolxJ%+c&0xb z>xr*KV|JlAV=@{n)`;t%CDZ2ge7GG=_6#TAoMKZkd(fV0Uco1NMv$zePGVwNPqnn+BS5qic`4V+shJ8V2t30RnDHMYRXZw(AVM^cz=4Mz9%S25>Sl_ zRHD!kyEuOrl2W)in|`mYH$Hns%1_H@-Jecv+Q9xfP1I#$DMM+*#tfw)SYrNtB01^n(!ph-|%Agn; zYopAZ>H*OPS@tUx>%3MD<)XEEU7|`ajpwk^1BNf9`b@U<_G2^LM$2I>uuP9muI6AS zW^o}vCwg1*k_rVtF@BqIVva@5|aX?k{cmLy57 zR?D(1L8xM<6h)yZfnj89Ltv;XW;m|X=`f5!05F@)d88^Doz@YUjnUF{ol0e*RG3z4 zpP89asq!#PmzS5vQmVNT4~{bqJ*mafP$*QBM|E~~noOqInHjyl6G2pr7C&sF&9thP zrCfPb8Kc$f^*WuqtgNi2rbe&tHq!*H!f*_a1xS+B;cz$*2p9~3NF)+-*=^Sc9EN-M z!UhuW_I2a9-e=Q~jEwZy4XqZPU9Y|7vBkots2YN>=8?c=vyF|7RU63J*%^-Gs;jGg zJ|9UsEEbF3@8{c{4u`{FFw8`!y&g9|I50itGwAj0?d?__QKr)#K76>{%1lj7jg5_T z`+RP*&O#HlwY5CYUu&;*8p!DM;|`bEW6@0xco75}92_(l`~+b^QJgc=dM)15-5v4Q z5h~TSYu8u`n;0AOdRwQXQHrYVapvK;N~dd`7#o~^JQePCg+rmbx;mPs*gOMQSF6_o znxeD>PLUMDc-?OI-0bYVaH!SenYo82}`XG6asIT0Nul_jKbZqC#VpaQN}##}*yowK7(n7C~?fqZy{X&O~bo z!f!WNtya%Z=I$(G40@)cz1`__cEr|(p0SY;B9>`V<@I`Jc{js!^tkP$mf}pbi=`Nv z)KR+Fb1D@(GQ!)emf2`D;O}ub>==f}qWb@_lsV~!!m>>TMr+~H#f$)oc}@8qkt_w5 zf$paWergkd&VdSv)*SE!8_|Sp`&giB_$Z!M(rNBHH+qa%wr6sz@BI6(lLal>;{NWN zC+SU>>^J)_jGtz9+|mzRdT0Hcy`^I;bflndGc(WZ4L*__S1*4$T=OZJFUi~Rc9^X^ zKh`8mbi&Vmc4t>3k<-Zp3wC5G*wxA5L5D9RUe;@azPWXYb7MT_xle_jbCFN~#6ra4`$U(%uYXfa8dlKwhc>VyHk>8q{wY(bT zQk#w^Ew`FFcyeurmQWIr4`=%>fkm2YMCf57qRHDJYzdYeccV%KwFNl7L9)oEp8J3( z7fN74G$9#kS>5{&|I(5A)GpqQAWx+Dx$3<41`b&mP5^7cZ|WdA*rG8beL+O1Wq1gF z%-_<;P=qa7F|jd-ln*BI9;mZT3{n04`2tL3WnoGClLcZKf%8q8(a|`mnr67VW%m4| zNwxkbWAo#7;gCR5W(CR$ZGd|wYrw_rP<>oI3JYm#uwj|0vS>jAeGVl04OSk+QI5*E zBo`kPy-hM4G?fw+LTeV=%qoXzBM#4DtBUUM8t9NUKQ1W@rMLIMvxg2VLpI4*{|ezCVIFf;Jb!S`@tq*G zmRYv&SvGW3tU3G+3|E`Kjt3`4YJ&2DL8d{X>2!%79jyq}Q`BR}QPI{lFLFYr0|fDP zuZJLc8XFzLS5f_L!9MaF3|?Dvr2#NDV9Y4c^$Bo81R!W@ZFCr%t$BcgEJxe@wZI)= zKgt{o3`@sz{tIM;PehMMtF;bRvbA!qDMRA9%_h#T4RY|Bj{c?;{{Y8Hr31Xkdgtls zZ|ZTU$0VG}JZg1AvR{xOQ*UkBaT`c;=*U_cZ@_z4;R|TJNY5cM#0NxtMcg62iDHe7 z^SfB^84GB`dkmrh^aa$P@AqR!c} z!gjMW%e9#U*^l&hZeGpo)leDQNR=>S{Pb_Nx`A9r{t+R%CF$O!eWy0$E@BL**TN`^KNr=b1ch#`W># z*|vWTHvc0oNA^nbl@r#gBdz)@Y7%1#q&XIWMvKFo>CfJn&hZaN%*SQ+2In8cXQYh? zVT->MiG26|=B4)xl|x9OXhH8+rmT?%9Dq~y?3i=?=U#P7<}=Z;F+9@#XxXj_(?z9; zYbf(;CmrM0A7<0~Fdo5Z3 zfA8zJ3DLk4fGBJvis0tRyY!luh(Kf_&6t*L{8~*P~jt2{Djs~H^k#9y{Ft6OH;M%=SGUZ6T36#+B z{PQa)mjM3dfq($PV|SBN##VkQS~%l{;^JAT_;tV51)w+wiJV!2<(e`w8N4~}wW`{B z#}yM@|%fJsV-AD<@sU z(9W;$hL%8JA517X5S*Xp^|Q3uVr@v!^&aG9gk1+R%rmo`c)k^qqK7>W7?Eb;P4ly~ zl?4L*+odsi*Y*}IR(8P7ik9Ksol%a5b_F2ti)%tMM|6VB=S>Ok=Bg6U8_{2~rmWZ@5c zq2p)%HM2>eMLr0Ml>;OI3JxwRVE#1%MOrd{NqP&DR_Gi6OS6&9g0r(QdREvKXmE5==%85mKDNBHM_5dyEb2_fj_^f zbY`Xg-hCF(`FGm;clL%alUG7`>OtjWHFe=&&ExxDhjfycYW6O=QDSV7^*lZK z_20VIDkRtZdFjrCzieymZAoW0yPFd-o{IWzMU4%};&Py(0RU}2|Bu`4h23C*VJ$XZ z*N|D>qPkYvekP5tZxjgsNTR+s&)wd1ayRq+m({i<2HU}IS6>$}7un*L&YJ+|#5S1%;waumO-*HThspAIYH?Mk-y%`csMVA8g;>-=NBvr!ipGqFQ zsv?1C%T$1c_671QYW+P{{?`JRYhi)~8#cx7sm8Z+F#J#m{WNqNPC<@4+5YK`T%rVH zxa2x*noM(pg3!HMCCSBFmM__<)RVjiE>pqaC5+_i1?G@+@p8xBb&_;^?WaIYg{l(# zffM6mt?K?dwD7aL7v#V~ibM%!wh^lfM{e!DI&tD1_;<1h5FG+uSgf7>Py+8PEqhb_ z9*FQV`NRpSW~t9LF1}d2JP7W7PdEK0Nfl4$F6Qdu0jecgSnA0=mUF}Jl9D~@IfjMA zv=vC6gD@6rIH&WSFFaM)Kf3pKcT$79m6i-1kz1A4I-4T?Zu z=*Tf4O>#Sg-hFnV1SLFia_ht3YhouPVHVl$7j~&PAK=wO=kBv`g2ieSk{eucIaTbk z{6(3q$}t+oBS+NYJ*q3YcjQ*1w5t1H!T#rJZ?*_F+M>-u4ddhC?Nbo|tE$UVb1Eq2 zKae=e1#;T(``p{H<~@dLh}G17_{qBI+kT%>9fO_FdqCp}xW(f?;mk)r;mjW%!v&0c zU#)ScpJoDrxNxa-$+kxRefcWG`EfMRI=84vzTwaIPX${KS;vR>E!jAJXN(IJEL_0n z|6aTMRfIj#{W(54FWN`@Kh8cSDZf}X8pp2h5S0s2 zU)2ZK-!e$9oM8aqpkMe225U;3b4|s>2asyD!k?r%Jtm zt%qD<9sba_jqs&!U0z%tr;you4E(4o4H9U?9Vg0;iHflWu8znVf6)*kmMXD<(u5bx z*DsWGRqdPlWJ%_R=*$V`*kS>wcw@Wp;v1gJvW1qToIcP{hRcNa_NEf3Fm@2qQTtF#3oZEfosfKZ?eQ-AyL{Ab`@ z`^)^_kqy-uHzreMaXH;&5U4HIO+tD2leTR}ZNKrkuYw!%mFWZf)+LLwLqmu&?5=Or zUjERXbG626OdfdISA?Z^M+-3YpZg)C*tc7(H~N~y;pVLZxL2e90zMG54JYzu6MN{75&S{JFgC;v#@&7#V5vj zfGGD8O7^^b!PN$zeJOc=7*XRS$UzN`<3gs!7{eE<;|ui#WSJ3qF)2y`IpyHsHp^D& zQcYf<5IytCTs5y1SV*oyz^~{${#=YI&@?Os#^gPC?^;lHGB)f{mWSjtyYs2v1|9(2 z^>EetWy4KfBYoPoGX+Fx)**Id0+Rm`&{VG)TDFd78=c!SCUzBTsb_KCv#7lCArzLd&sB z8`~q|8NG2&i|+SZ()ef^PtGZV_s$I?u8GtW;G;l;EO*6ND>O~g&oLap$RXJo+-(e} z!2j%JrGDQM%$tt)hginu6=;whkjlp++q>4Z5k8m#O=^_PM$k*i2STy`;V3Alx)Kw~ po2A*-`a;5CJ#&toQ6pBk%$~_xEq>2=)McZ16)ehR)1MP8+_Kb76U)qOv?(|8? z17;Qo!?N@Gynj#TWThJHi6{|0Kxh_T2$2ZsliLV{JUI+SnY)S%&1?0&rG_rM!JEst zjc}3dwHvH?*0v&jo1N&}g(#)ftfATp^-~8Cfup`s14$r*igc#Y?o7s@B!?=IKac6! zhQ=F^!|u@Q{EXI1$Ox;Jav5n`kaM9n};4o#HTzSmw?5x*r=ql2aGQyxDXtk@k6!ji- z+0qcLqD@8-+?QPp(B1t{1B=pJ6qeom0Bbqqw z>}#|-GAUOs_2639gRgqMJ8bSeGiz z3T}>zRyipJIeV>bw9))vz&q9LesB?fqr0!#GMa|9(n-nes&W^r>{aalwM2?oU059dud(vnWhuBd4|>||LxnGBEpF0Zj>oh zo`s1C+Rho>(8b|OacR6-MYoBTxeuN7*{g~<%p&oVX5C=;f|tL)-m){pR2^-3ZF2th z^yiR7^<|IYO6=-JHI~>xpLmYrzm>SFg$%w`Hcu9#&bod{K2osa`O=hU zmlt#u)3!QyGHJEF<+Vym;s%5B8uxTi~s zQ%f!%-H$1|4f8hMAI@8nlVYO^)GDqu+h^*dB|O6gzbIp8AG4}MmCN&Q6o1&~7;H$! z?~a7KZpi~l#zgU*)=zl+?g8#+No;n2vsQ+sd zmhpZjija}4@XIonsNU348?zxQe4BA^NRR5$@~eK5J+Qc(=cAT(sM;;4WQ@f_l8eoF zFqzMaM2eY!WTB;8y+NiT11*HE+=K-wEft{z+aeS#cy!l-2nEk#3z~RiD3LnJVGG@lo)gMf9g7n%8oVf9+dL%x6xZI4MQXr#%Qlsw$(KEgu(pRQ( zflkB2&HaLT-m4AVPjN)QO~k0K?~O}Os>80wJ^qea`0lbWb&V;#D}}{*#GZY#>rZis|qTV z!LxkRf61sj>hnj2yx7BXiT!;4z7?-@zDB-NcP+4A zCOq3yT(MWQpzNdMo=OLYG2KV(gN%=h49i`&^Rg>0Oul%Xc=dI=^P;sKXLmMjv_Ji3 zqNTd%r@Uk5JoBmWZxyOr4K?#}%RF>7E`2*j{PKsf^5QSAc@s}{?!0+ZRI9cNhy=yk zjqllniBf~tDyY>bm8iG1%R-i#6eMweM?QAK6`>*>2=yFaFK! z--%@@G8;N9hhkSfQze#>+B3W4c5zC^VfB{V)lzctR|OfftVM+h7IwSD9mYz0Kh@Y% zA~5}<{**YJ((sdP{=X}5nU0TM;?=Ps`axYN`E6R&1}x~_Us-GxBU?D(B%cv%yDJ#| z)72(?{Sj&G0&R*opIaCD+TlNdn)R8mh3yH_h^&)@swiM zErG1u7hnu!Xs=}6L0$IZfKFJ29-m}Q@!{KVU6L41$&qM7Q%k^@NKB4}aMYR+8arm^ z!ecvlY}ai=I2)AK`HN7hITppP;8h#5*T;9vV4hG}9y&m@sRYvJS18b*tYz|?^;mLY zMV*Azy(uWpPfusUO1>Nmxw!MRK(df{2Oj#PD}Ai!%8&hKDKj>?B^~#LUr-h(PX(ex zcTk1rN~wxB4y?on7HnKydC|CZH;3?aHHQh-=I_JS2u0;pu^V@`^-D-4`JOP?Lh=!J zLbulmK71r+B@6HPxU-APd*YZY>zei(QF9I!B-2{h&{yJr;)t*_zUlM@mX-=Jx2WU< z5tIMMGE-VdWqj~^X*0Yg?u8rWN!WUJK>oy|9#8+$AQoW~AxZwV4}&8{>lr-`t4TB$>PZC&p<^@BP+^<2FkpXdLUF(3h z@D%E8Is`*L-tIDJ5R?;C3nUZ-2XvS%jT$}Vu%%M&LcK{xji2^IQZU4?EvVB^A4ZT_ zkb}@?5TFc#yMZ9fAfBwr@K2!(Dnu$w&}~qnwqz3eZ@khr-R_*|cGEbTYIi_hc;_kv zuDD3j;I~;A(Y(v*Ez&!TG}INujUGqS zjZQ}EhX$G*@J_VPh28XV*Ytq*k4=-`eYan;WOYlt5Ggc+1W?|ZUX6|4=6v+$A?vV3 zTXs{E=OUw)Z9hXbnr;s57ra__z42&8LloIr@JX%J!HM6se0|+w4)P?B(PN!=eOC`G zFs?W=tiP>@N=&ayTs_7sJQ2)OoraqguUg&-UAuFk{Pq@Kx9vGBn~&5&4Xr4fQ6*$v zvspIfT;^Xw*U^dfxhKBbav^llf5uR{qjsJsux>cOMpT^-eXOQ*xV9xQ(y{7b(jJwx z9gkD$H|95DnO1euCfNv;zFFS!^pVsI`|YOr!D%|A zTZOZ{C^Vxtd_C6T<58hZH?XXbi16;ESizF@))O>`7UQH?x%JG=BLey=*)K{r$MOpV zBzttPa`-Y9l#o$p^kzuN8YCrK;;?L0fX7xV$V$4#%N)%Ts4C-vluC|`kUlIN#^s8c z@7@fPsA`c&p^Fns6)OX(2+ddko7c&8qzlLxB#=EC8xB`I92*D|DJO^9jJMdSt@$BUjyvsaM!j%0|=zL0CF31idt z4bE5GM;VG&3TA?&DH3+(nfWE8NVWO?J}mO(f?{KoPVuqtoItDKqSoHaJIU@Ivxq{9 znzUp4Lf#=!WM1F^n}uP&4>{lskOSBtH@FLCgWTX9m<{NHF;5}#!*n|3T zh6V5E&ag@f%m%-Kc3^w%I4MJbH)#DE-heKE4O)ZHz%w8XgoDlCG++!W|E4vF4ub$% zgY@7!>;_;zr@NX2dI3~$7aRquVN5_-@DlKbGY%LGmV>o`I*18i!ytgofHaT{ki(f9 z_y@3I4S-kx8&n3cL1IuD$Oo#yc$fu%A4UKM0lWwML2j4`P=C(LR0=c&=YU3_3$O$- z;d~7sfs3FiI0{~Zh(IPd2M~gkpd%;?=WAdO3b9@#u;Iv*v8`R8iIs)zPN~?M8oUC9i=m>m*te`23m}`d%cEh>V z30nc90ox0L_MYx_Zg#?4z+}O;&}s&Vg>8Wi0k&atVBcU%0eD9yZP3y%2(UjeP%wrQ zUriWvdO&*o+Bobs7!2OSGQiFN&tN=|4^+b%0Puh`i~s-+8wC^R-sN`faKl6Z_Am&J zQU@#p(B9VG_Pg}{vET43X$3xLn*4<6LP^H9@*?; zT5+#5*4AQayv=);KHWN0d!kxYE7}o1%wEn4V4^+!&#AH6b9GeWDNgg#`MS3Z!hFgy z$-T|W6Q0!;%m@ZQk4<`hcs?5B8mg-4K_)ODds8|uYj_j(-3S*ZrewMsq~LW?ZkE?_ z<=d?2WMPB;&dnu*IRhA(Y@EcUjSGhUB}-MA1|cG~`TIVeId-^Is?cnEx9o$^p36%u zv!A98q3VQ%pS_(GNvwQL5;c^dHRw_u?OS%RFnrgB{lRj9bh#gYXrMj>{!cmRJPqh}-W{CdHYOIym0mb@YEZ1&~7RKoZ23*n|(YX&;%kKvfN?-gI% zUbH(r__5w&w=+|e1p^~wSVrrm6ak?#lJhsIGO3c0o*2Z-s&b`xYgG)ZINm9bPl!BK z=}CB3e$~7DQ}R9+H0FuEl>8a4%Mgb5M6&UNp0Tl>ev69LNz{|8qFSZ={-`f3OMX0+ zjN7-ObtP|feUKJNT4hrFvNIt1y826J*3!KD=Mop73(^05vZ*J)XXz@w_`6iZ4^kyf W>;+lYjd$}<=%X2-1Q+Az@&5(CH=4Tu literal 0 HcmV?d00001 diff --git a/images/addons/Male_Oriental_2.gif b/images/addons/Male_Oriental_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e694a97cf73817df25ae0dcc8dc9b27abf80d221 GIT binary patch literal 3848 zcmchZe^e7^y2sziOp-}5fe8c{B*hGkkRY`g4U|Z(J2T;zQELd;LW*rL(u&b-G`7`- zo=rmdQH`3i(RC@d@dwtbSaij;R`yH+f~`tvwbX7c#;O2AB1o1S~m+5O}G zegAsTdCz;!^PKnje!kzQVsUw~zF{7i2c`j-nVA6q5Cnl@8cjh!qjr-jm)(LbW-HZmu z^?HN8XC;N>R8JjcZ?NNX*4}8>D{!`qwdx2n$rRl#Zfw-Bv9Ts-heQ5=BWA0G44X1x~6Q07*1pAruyUaW6sO8UiJib^-$c0Vqa> zsx+1Y!nDlfGLWRwG4lYhDjY`viV`RS^u_&-CI^9|QzIdbS~Gnyq&M`tsx-YTsfm+* z5>Gq>ngR_eM@bdg^O|M2(=l<{A8MjVC5g*T6K6vMUG~YrZXCz^ce{Fh>_Dg8QcTR; z7$6k(sf*nfEn(LY1OWarP5%!2^o;?1v3~R|NB>r>5JVOd7>PO zVpM1ah0F2oIx4h*)gWN>h?|t-8aZlZNH;^`7~1<1V{d zkGnMrz$#JeGW|ds>#8EB2Lt{(aWasgHZ6KkpqqDaTP%z9e#ABNd5=bpkM4Joa-dNHM=?3R-<9}! zca_H7pzmpOOrCa69CweO4!P>6iQ_Jl3XljG_gUR_8VUiE#~qVjg6<8b{!WLx(KL0) z5!hgwJY=8hbj%C}rjEF#1_R@VTm*)a3P9rcK$D&#P z(`NUtWG4?!)G28y_hetF>`7*sA0UlzlPI zOQ!F~wK#QqC>zD=^|pNgl4jvU#1Ee|vU}3RYPyf}wTaW{p}Y4Ug#7`2fg)T5Do3D2 zdy3N35SlE_m8?4!v(u$%*4IqMX76E$NAD&8#Y8~n0IW5_~_JZEs_fqKS5GFkTy)#;^xw3vM#ENFrX{DF* z3ZZh5GsX!2#tUUP-QV-*1*C;BIg(KY7x$oWfEwKt2avNBn%Z-XN76$zQUK954kEYdZdu){)y1+uUP&-&z ztmKPR#j!TWmp}J$NX`$u59euuYFvJ>TZRe<6n|a&uFZQs|5?JznO^0CZNxj*M;^^T z@*`KuUmu8+KeELpyYx6$zdtH!Y^w@{a-^x{;8$yK8gG8+6HtFD-p}&#y19txiM#wx zW;^}H;67dl?<3VtQ#2|oaEASoym0@nR7QoD;+Ir2w0AzH!&z9WxXFsN;D{M0v_Y;9 zbH-RW*?{|`ShEercKt(6_bPNwIHlk!$MG`^@rW>aHOId9sU^sWlbvQ?YPBv{CdfD# zSSHnZBr4y;)f_ zuI^B_Bspiq;>Zo*krd4Xl$7^koO3!b3x+7R$Lu40^uT!cy`;Z6hJ67xURW%L*Ns_{ByUF>w(ibAQ z60{uKyC`#`!3KHFu%ujZ*LEZXQhBl9!ps#mAkAu%*U|@o7dD<=EAlPoFz5xd^xJz2 z05mHdtyR-7x}A7>;m=jo6`qcH-kR2%A6Ozj^(-Bz>q8hJ|B*}0?4uq(j4e`67t%H( zAAavQOTj1mcFkI_qsL~uf1s)kKo}8U!wFGbyvk6Q&UJdy)JV-3xbsB(wo-uY;q2`1 z^Ujv*XLgfH%bP%d44y3;Z0GS)*O_c<7y3Yh-G?|gT3#CdFKAuHVDjQUr+ruw8Wd+W zBQivYndztM@-N_!NOi&H6K0ntP^i87$u=O;j?n__TI_8jbcyyQW!F$GNix-4LHd?3 zX~IR$AS=ljJMs1MrXOVyags{odHJY~!PJJLIJYxXr@d`l7*z7Bms0y8$|`IzKVu=g?S7@~@YLxuWu)zwQvv$*J;5G=4lPUEfva17BTh5YA~l*APiY z!C)R=(HARCExfK2rnHI=`ot60qaQw6O4~A_->H7JfJ6m(?>mtMP;W32Y)ICg`i)dh%RcC!z7Wl8j(bKk z%)kihhYYw<(`{J_@v^1@K1JJo4dJ3cK-O)6Ofq2j81f z?ycYUzTwk{cS_{*fgqLl^+?7|y4-&o{`vbs_?_7UTYi)eO|THEZ9!EXeZJR{R3r_- z54q&D-&}1$)9wTp>?r;MuWbFFaJVnBK}+CuUTJaj8fJUZ&1Tp3LZrN zA&7syA0<8OZt~|pQ)4WBC3OQNC9V)q6j>_gh7c5sUCMz}PF8eSR%@2&F=geNN6`CA z7py$19Qoar!m?6eb3S-7Yo&$rrYO3>J65nM^I2ZenFn5J!FTs~d)D%4h8N5=SCXV5 z$b%JQ8;15bq+CGxMc3jSzs0Q0FDcY<+`hdj7XZBN>>p|Gk-}ruFn_io2uXVL(AG?50UpE&b$t9W}`_?x6jRC``Z);oO}ZMHa{+dl3=uxf&>G?bjv zwq}2C8{=nq1Y!tz^+I*oLR{s0a!2+he4cl4sk8keFJfnr+|BX(Y#9=~@D%?}yo&yp zmcnJ z26coV`-<=YsRSvIhavy40DiOxE6(4)M5%QZ3e0`VtpX{XUZ62IL_6o?@`FxKgLTz; z0lMz6&GYb0LW~C1%%%NutbA*;)W&fY*{K3UrukL6{lHu^3f{PN)WoOg821Si!C|=E zgDTlJz8@7gQo@MT1kNeCJ-h=SZ;j-& zh_W~1Ov*h9;;s581;R!s7;X`+xD+-bf4^DC2(KeSj})tq+l)k6pAS}l^8yW_==~k- zMQ3myPF&7y1;t|J+b-B}rL8?VG&Ypfa!UKPk+(+c$+G@f;f%`SJL=9 zbZI3#GCKx3JrYH8oP#lrz9lK)0F!c(>RJA)zs66T7j0BG7{wV^J%0Ig2gwdoKg8*?!k*i;|2aV-pr_Xwq(3&v#}pQ`Hht&#Lz$9 lTcvLHMlNUXF<-x=>WWpQJ-3N!5f)ro;TPvStL!u=`ETvVPbvTa literal 0 HcmV?d00001 diff --git a/images/addons/Male_Pirate_1.gif b/images/addons/Male_Pirate_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f28289b076ff343d9951ba18f8c523b41898b988 GIT binary patch literal 5118 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Shaman_2.gif b/images/addons/Male_Shaman_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..c532dac50f8627530f78d8bb44b616aa4b951498 GIT binary patch literal 6690 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 HwAcS9miVc> literal 0 HcmV?d00001 diff --git a/images/addons/Male_Summoner_2.gif b/images/addons/Male_Summoner_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..de917f25b44626ab9a61aec5e2518c36b1455293 GIT binary patch literal 3854 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 b`7*DYh&%0Ki8vqlXtuP$Nn@+n7_9vtJqFkx literal 0 HcmV?d00001 diff --git a/images/addons/Male_Warrior_1.gif b/images/addons/Male_Warrior_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1ef88beeddaa85a2395715deb17374482de420b GIT binary patch literal 3902 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 Mn+@J1iUQC74{qZa$^ZZW literal 0 HcmV?d00001 diff --git a/images/addons/Male_Warrior_2.gif b/images/addons/Male_Warrior_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f341481e8c1be4a5ca195986e5bcbff93e9ec58 GIT binary patch literal 5334 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 literal 0 HcmV?d00001 diff --git a/images/addons/Male_Wizard_2.gif b/images/addons/Male_Wizard_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..996b53d7392c6f23c3140e59b3996aacf825dca5 GIT binary patch literal 5329 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 literal 0 HcmV?d00001 diff --git a/images/arrow_left.gif b/images/arrow_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b2988d8792f40396fdd56b3a441468349771a1e GIT binary patch literal 138 zcmZ?wbhEHb~*Lr4LGPb%Y- zBaA&e4;(n~|NnoWa>bu4%nS^?3_3tI1IP>p7V{0BKkx1Nq1$bo7~?L<8aOxOvjY21 q-DUv>hovfOP9G>*dvE6@J+TKi4J)2JnZePi!Sy^?b*>8ogEau`g)&b7 literal 0 HcmV?d00001 diff --git a/images/arrow_right.gif b/images/arrow_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..6239eba231ecc6d9568a030a01b71aec7dba37d9 GIT binary patch literal 138 zcmZ?wbhEHb~*Lr4LGPb%Y- zBaA&e4;(n~|NnoWa>bu4%nS^?3_3tI1IP>p7V`}!HSaH;v9Hv)j_0CjSf)_xMOy{| qj>AIB*o!vi+enu#im;UIYX5N8XW66k#+4E?&#G=Qn&iU3U=0AXsW8X@ literal 0 HcmV?d00001 diff --git a/images/arrow_up.gif b/images/arrow_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ea2c8f605751505ee2efe3170f61699705668ff GIT binary patch literal 147 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 S)S;Yv6(lM=R&rxQYT^Gs^nC>Y literal 0 HcmV?d00001 diff --git a/images/del.png b/images/del.png new file mode 100644 index 0000000000000000000000000000000000000000..a3260d718e65db8c0ca981b1ae420c2327510bff GIT binary patch literal 433 zcmV;i0Z#sjP)@}57R_TIg>CBoNxiQv%L&X@E3+;i_a7x?e! z`a|dK*6Rd85I7+O7k5!Od-@Q6CAhu5$4X!kj8O!aLIz)V^Qob|O*}lsz%>eo&4DxV z3i0Oz7^9$^K|DXf{&85>p{2QlY%K#%#fuT&7@WN>Y=zfBIfJHAFvjp!%p#FW>8_vy zWL}bZtSRt$hoPzzg<=k6xdNr!fKpW;=gUy*pDiDS3xa@!jd@h%Dx`M_C8-Rn%?deJ zLOPiRAw=i1`~qNVZX7pa%ya~^%hMo7M5lF|6-F;bOw5cTxVwfS{~!X}tMCW|rchHr z+gs5#pasDI@J|Z(kaFJ{`?1?yc5u!N0JBx*2az36N>Q&hkWUxj?sr2|DI$lb22aO- bq2u@hxDAf{u>CL|00000NkvXXu0mjfrYpV2 literal 0 HcmV?d00001 diff --git a/images/druid.png b/images/druid.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2de82cfb7e01b75ae448135ff106cb0e8881ab GIT binary patch literal 39039 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 Hu0mjfxJ_KG literal 0 HcmV?d00001 diff --git a/images/edit.png b/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..0bfecd50ee9f5bc5828f0c0745aa3e0effcbe250 GIT binary patch literal 450 zcmV;z0X_bSP)Rq1}l<=psl5*5Xz9i;M}s*NP=ugs7Q#8Z;Dyx|}!`#}xw_C3!B-yaPC&0j)XcpuX@rNfq|q}N(wJOjA& z>u+z?dfJEuLePrqzy!)73pvLjxk4d6XNZt?hm_iYES{i}J5y3l?}PPNYDBR7oPc~6 zL^d)Bi4Q2L3pnp!nFxN9c2E+=@XAl&+;2m6a~kZj1r3Mz3C=hmUG<{+vWR@t4q?fJ zhFc(ozZD#Mx`^Q~g1v=K6!QnfuqyD4>U4EjF0eamL}Jx| z%&`kR-H+3GBYr*Qx}frLU4`%n9(`uSomzw)t%%NagXkA*R5Mbv9VLDp1wMo$cOMa~ s3Wm%r7^bwK$2$}-<~D8p`#1iScU4^XCLAA~0ssI207*qoM6N<$g3sK(Qvd(} literal 0 HcmV?d00001 diff --git a/images/error.png b/images/error.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1ba4c664158550952084ce4e6d8ab72d21de05 GIT binary patch literal 706 zcmV;z0zLhSP)VotaL=Y9#qRl|7 zT6n=|G2l)RjG`i>g+q-_siT-Wb{U-%oo42J&-1phz8SMNb$0LJoZop4?|Jf!G5DXz z|2-kMuQbq@c0+cNtRxANpGfvoIAq`HkLK3r>u zM0X@DSGL(07-m^n8O2de88h=ex)8Xt2 z>L)}92%)t?jsmruj<3P;)H+f{5#L{qVRQJgGo6aaudYKf9*0(XIak5JxA0r+@zy!T zq6l}-Rg|2&04hQ>Awsz7eE1T21FiLd15ip0W>#ad#AFynZKoW_THqd519u^^{kBh^ z!PjsIiN%?i)_QQqAx(82^HZeHK6s?Kw7CVT`8lL!qcFz6RqunV-iLTNgpaRBw@7xk zJ$)bCb;_ahNBu$u_Lg})NcvP)qMkV>rK^Taq3OS3B^dyhZ+5d5PT0AT#=;RcfJ o6n2ra(@f;hiRUwaH`Bkw50%lcOlk$|{{R3007*qoM6N<$g60`7FaQ7m literal 0 HcmV?d00001 diff --git a/images/false.png b/images/false.png new file mode 100644 index 0000000000000000000000000000000000000000..9bfb378c59055d7e2fac787691fdac9cf566e52b GIT binary patch literal 1004 zcmVWM^V4m2&AQukGf5hEXJ>zBf9Bs=kRZ|?xcA|l?|k3k zp6?Ryh;R{vhjY0CP8;dgRYlhTl!xK4|0fP~b%uur2F9N0>gsVYPLHn0W-gu1&Mqxo zo49)QOe7;*e<%TsV~&qUM^BBsGBk>jB*?WIV5$mw<0uLcx(?+`TK|0V(kG{8=ij$l z%tjy4xDWt&^4PJ9uMQ0j6^kXPYJyp)K?w}j0N$*!twgG^O5y#I;LKD|`%%s<$g z-X=KOxBvL~$mn=h$bw$20wzi3ho?_|^uZ559{Kjh%-JhTi_@&820DFQyJXdSg2CR! z)qA%$tF;xvO(O4!vDeR$q|IqsMUZ7sWf|Ms(y}L#OfIZfs!^dPUf!OXUw*Z8mT=R={spxYZzibaS;mig%NVv4BO!AmpT>A}It7n*zn|2~s;VrKSu zZtFq8kjn5Z>)sc%kx$}nobPF)UIW5X|LNAPsW-nlcQCmUOQC87Sc+!Ogu@qmn|2&( zFbJBqerKJZqh$rWhJkj`R5wln#%N^;)KUp*wVISswZvPK-yKTE?xwWc5x|!t%%@J* zg7DGc$lkWA67T+gCmu3pFO;bt5{= zZ}i_$>Jf*}2cA$X!3K6BpT7xyt5kj|8D@&GgbhCZ_iAq;KY|k^_BbM24^Xy277;8% zBC46DxDe}V+qb*D8+pCJdOffzW=e0*-8?GkMta-IFCl#V9Rhtu;Rt9%SZk!g&iTOM z_XE`&0D|Md)zSi@kd|Mbn0W1mAfDfLVk44~y#XBUu;Dn6Gy^t<0ovgJ zL?XD7h%XOMO^q#x`R^b38z~Gt`$=@T$40&wV4ORV(`jyDuy!q9`27ztf7yam{)_)d afB^s|-;LIZ@no9-00007#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 literal 0 HcmV?d00001 diff --git a/images/flags/ae.gif b/images/flags/ae.gif new file mode 100644 index 0000000000000000000000000000000000000000..78d15b67dcba8937b13dd3a4514037af411e38b0 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h{#{)FXaLsM)&N)l07n4){QUF)02US&L_|bQwM{!a zJ1#CRQnykxG&K7~MF4vM{#jZ7dwc$OclrPT?f?J)bO8HGNevAR^78Wg`}@(+(fm(O z`aM1TR8;{7Oq@ zz-9buYW-7FAt514OG{zCU`Vq_{&I8u008sz^ZNSw`1ttw`T6(v_w@Ai_4W1k_V)h( z00000A^8LV00000EC2ui01yBR000JtK%dZ8dps(YfO5bj_#zRHBt&hsWTg=!;f$OB z5N%?XN|`>NnbQOA6bhMJ4yWt!dV-n+(jmd+bap#Dc{DE@EOB#nJUccj8Z|T<77l=n zju<-{6E2k;i-I;77&aiC4jdc}3nDNu2L~4y3qJ-YCo3H&F$f3>3Jt8a2E`Nn2%x z*e)ma?d|GgUfMJ*;#5wpU2^H5pXC4me0OEedwMwl0Kvb2w=Fw?004up-P^%bgn)75 znVGe-Ym9$Uj(dB5Z#G7R%u$crhciH4k<0CYeBZx4Wny4moZreMBhqK1`Xu~6I^ zV1mz)AV^<}%Vie>(<}uCucDHiBm%+1HK+W={*92I(D{i^@+;so| zRIAVK01}EvipKwjichuW0048F%I#yL(PX{m{gRegoX&i(*{xWCU7*mff}Com)BpfG zGK0ndBboN*r#gkiP?gI^k;y)Z$NId%)XLm&snlkm&w;bs?}3Qrlb!#?%J_(o@AUcq zt+48#s{g94G=IbS+~ro4$6B7xk(<4+kg5PKqAh^LT86lYsLr0T(npcU-;|;E;+Dy5 ziPBVUA^8LV00000EC2ui01yBR000J#K*Hg0xf~k4PKUvSI1#bMNU%^vEEYpaqme*< zFN$NlLYXR>EJmUrkVX_r%T=2NScL*>rZ^OIJSh?A6Z8;wq83-~oAR!(A z2_69oHYXAoGZls*A`_+$AR8SPprQjIq#_RwHv_5`p`#5VA21vo2qCHlT3w&HAg?LB(9j#x(?I|`wXLLC literal 0 HcmV?d00001 diff --git a/images/flags/al.gif b/images/flags/al.gif new file mode 100644 index 0000000000000000000000000000000000000000..c44fe0a0aec913b8667d8d4f97acb82bb5b33db5 GIT binary patch literal 370 zcmZ?wbhEHb6kyz3*}0WNQQnvVdvF@dpO9#693UzcW`aWZ|>R$Cbv9v>Zj zRafpT1H&yhiwBXux0xBPnW*0JvAA zyIK1a6Z5xF`pJP4pI&E-JAhTIwFxZ(2F);`!Bq4Wte13okgB~V^5PN-pf{h*p zAteG86(=ezEhsMpAT$_0Jer-Kp`)c3rxy$`FghC>92^n5A|eY59}El+!~wgvzV&T?|aJ3FiQL`3`h z`_}*fy1U{404(+O_3Z!vAt9Xr0Cq%0u~byK{7g*uFfjHiD)l5J`9D8TPqy~<_WMUi z;o;%v=jYws-QVBe<>lq$Dk%YNlCM|w%ym)?La`QHa4b+iq7-%^Y{1n`1ttC%gg%u`ttJf`T6<&{{Hdt z@&Et-A^8LV00000EC2ui01yBR000J!K%Y=}dKe#_4k*O=_#~nZLK!| literal 0 HcmV?d00001 diff --git a/images/flags/ao.gif b/images/flags/ao.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c854fa1084eb333de9df427f96983a28cf4e35c GIT binary patch literal 244 zcmZ?wbhEHb6ky+^Ctb=TzxAm zD>E~*kIg~;k+`^QRlZ%U&n^BU9kJnU1 zPQnxjG{FeO0s$jrjXijZMsVrF4r6%i^#a01MGiQvd(} literal 0 HcmV?d00001 diff --git a/images/flags/ar.gif b/images/flags/ar.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9f71f7d6ded61642de6f823046cc62c7e3830e5 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hHn;eb+5GqBX{zG>X~pw=%k)gc|Ao`~`SG%K%Jl$* z-r4N-Dzo>~)6@R`{sEio;qv?T_VyE}@Al(K)#>w#)Ax+l{F&PMqu%_G)%W`P`sMci z^YioH@%e+!^Z<D}-6A+PhVGu49(E0Y`USYuTe9rimz0Ujl`@h=fpTgCg+xq(Jb)Mb)3#0Az_4WMx z{PgtnA^8LV00000EC2ui01yBR000Jyz?WfY2pItY1_Py%s0^uSYCy%5cDc)H^#~0> z;6T7)IUHiNMCH+PZQi31q|-T(77G&2&ge>OT369R@m9Ep65 z8VE8n2!|XTKMgl9a&&fh6sf5-3_E6M39$sTGcySa3?*4x85I>Q9v%h53II$JJP*nu MA|D?L&>uknJCLTx^#A|> literal 0 HcmV?d00001 diff --git a/images/flags/as.gif b/images/flags/as.gif new file mode 100644 index 0000000000000000000000000000000000000000..d776ec2711bcd6ff8f0451188b0d3c739c309e70 GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5hRaEwDEp<;cvh zmg&=GczFE-1N~@c`kMd%Y#p=i+=i}ivibS>_Vx7WjD6^Ue7Tf#+fG92l$7$Pp!)If z0RZgw%*BU?{gY2F>dj8UqI{sBo&W%!m2%IZQ?T#W%Cmn}&{}ieU|-a1ec)YD`Q+Tb z004VpPuE2}qKtt60O91|;+lr(@aV!rLGuFu0DJ%fyH|#HRm|hs(;*@M@Z_)f@#z2n z`4JKSA^8LV00000EC2ui01yBR000Jxz};{7Yxs`H(XG|`1)fiX)Ii8&G#!|e!F4z! zs)6NTQe0eH21#YHXnGUH=@Sw;32hB)!k1s@2oM==8+?2b6bUi{bsRGi76TO>6cZFY z5eXqWB0dHV0691*D-|Xb3m_m7ody7}H8l_gFBlaG2{fG^9$j9qB`7Nc2c1V8$jC9v LF(WoN4?zGsMO>ji literal 0 HcmV?d00001 diff --git a/images/flags/at.gif b/images/flags/at.gif new file mode 100644 index 0000000000000000000000000000000000000000..87e1217365c869c8bf2fa6a35cd597108dbe47c5 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h`uh6#`1tGq0P_F<`ZYEEqN4V4a`#J1_V)JrL`3v6 zGxFNCd z0RI30A^8LV00000EC2ui01yBR000Jtz@PBvEBa2zfl?s&HJ+0Rj=?aEP&Ce=+0bZe zF&it9SP&GXEujEwK_IJ7NOm)nGM`5;mGba-F8}}m0T&lN4j_AefP#bwhKP!cfr9}E z4i_7UGdTqj5pi>McNiElDkmmoW+XZ;6%``07O7V>9a<6+6ch>y78W~715Cyb$SNv3 H%s~J<(#ocW literal 0 HcmV?d00001 diff --git a/images/flags/au.gif b/images/flags/au.gif new file mode 100644 index 0000000000000000000000000000000000000000..5269c6a0e0a2c5ff0554266d9fdb854c5e8c2807 GIT binary patch literal 378 zcmV-=0fqiYNk%w1VGsZd0M!5hthUorYNpAFmH;h|$9IETa;%q+vf+)8=jrf|D@Z|H zod5tb002@WL5j)H;s5{=<7sHLz0`J#yGmoCo2knH0%eb#!f1W6HBp!Grld`4sybGg zi*}uDfwPsQ#=67WMPHtAg}5+Hlu2TrK3SXAW@_hgZ|Ka?-NVdvJ!zq$!lkm%e~Gu{ z-R7UU+uf|Qvx1nUkgSJ)r?+v3=()aYMRnfc>)>y2ws2+)GW3#LM5@q^ivc z3EsHAA^8LV00000EC2ui01yBR000J;K!R+LNDNZ5ijpy6EEc<5>(xW)0Fuy!=U5dM zz5@;dG2Kc9&Ex{W1QrQe28YWWU;)a6gaLFGEGH@g0xmx>6dxZL77-B(H3kPCM3J(k+1vUs2B&Z?{ARY}Qx>_DQ Yq5-4|5jGYZx(rTFPY>D;4ckEgI~~rLTmS$7 literal 0 HcmV?d00001 diff --git a/images/flags/aw.gif b/images/flags/aw.gif new file mode 100644 index 0000000000000000000000000000000000000000..27fdb4d13906897b572573cf0364bb72d800054b GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5hVy@I}wAfRm&H!$=eY@L?#Ns-Z#*@h7^4~=A+$(ao z+WhWz06LcW*Z@PD$p9&oS*g-$v)5g!(faFb`{`8xSE~8uOZMVC0DQavW3K>8n)&Ht z4Ti$^=34gSQsQoIPNB?(!QOVd+upGNg1_EXrq4;9%K%uj0CTkyip2m(sT+~W^x{gM z#NB4F)enlq06n7UiHUr_;Bd9rXs^>~vDg3~h5PDU27$ly-!xdL&>@k>Tc^(eGL-k@ zLtd-XA^8LV00000EC2ui01yBR000Jxz+GyU;&5;n3<@>KWGb0gD|V&_xBzzL_Kr{{KP*w!!KXxD{01P+XD|HEL{k zjt)FM4GT9E6c!df7Z*7Rs0bqiB$aC=m<|TB0ydo!6B`>H9UdMmEC|A@87C(dDk?BA L3_TCe&p`k?K;@jA literal 0 HcmV?d00001 diff --git a/images/flags/ax.gif b/images/flags/ax.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ceb6849f49d128216572e9fa7d9b6318090c31b GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h?7K+=N~&j+%0+m&{TK{}s@VA2hVsK$H*K~jXt|NH z*!$9ZbezokXJve&((W`Y_FGi|B$ogHY}Rc6>$pGw08Ri6i#&3*p1k7uuoGU5$|z#4 z05+msio*PRbWwx8{gjVZg~j`IZy#d4OMbrm+m-ZEN$tT}^TuWQ#Bcb`Z1>`#>&s@^ z003f-#r)x&X_C?H(Rm(Qt;<;e^k`r3(rfm*VENB=?Mg!PNkdP8!|Aa!@k2cHz9{g% zPS1@1A^8LV00000EC2ui01yBR000J+z{F_SBV+;r4kr?^I1`xY3RF@Q3JwQDAdrkO zSA%E4fC)4q9Z4gBhDEontMefZI+EVYU|2L#DkujBJ^&Oa69gb0A`J}?5GFZ150yAA z86^uhDiAh8Z0J0uLubnGBOtx99ax8G$$0b#*@te literal 0 HcmV?d00001 diff --git a/images/flags/az.gif b/images/flags/az.gif new file mode 100644 index 0000000000000000000000000000000000000000..d771618498ded597d5d95979e455fa797e77c0cc GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hG_KcFw{-xD#p8>NNwwNmx!VAJ0NiwR0Biu&Vqwip zOaM;+E~Zu5Yiu^ETmW~t(_38SmzV%D07tWGlK=qTdwV^wV#`ED^V-|$xVX?#Q2=DD zSH9tA!QLC9M*vu;a>n9b!Q*<$8VuqG3ax&5B2k|~b7DarE_DPRAqW#ad>9cw5)Cyk1OyBqhCC;V zAsIZ4kpK)Ih8>tVHVYdRF#s~32o@U=A*2fn9u=so3#}U!23?pSJP-}DtrkyEPzcHn J2M)?X06XGIopAsF literal 0 HcmV?d00001 diff --git a/images/flags/bb.gif b/images/flags/bb.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7d08e57e3686b1fcec0bf4668fd99ffa8bcedb2 GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h001id$12hmiRI literal 0 HcmV?d00001 diff --git a/images/flags/bd.gif b/images/flags/bd.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fd27ecabe8d3014611684d8d81a1c6a8529fce3 GIT binary patch literal 361 zcmZ?wbhEHb6kyB6foGBf_Bm?D%#Qiu>wVkbDPVFy-ika1 zX9gfp{K*2M7<51c$WIJxZ4UD_jU#(5bnG@?xbvhkx3Yz_p}ajOznr?2L~$dpks%9PyRABpNuLt0 zm@x~7tUWs;4}+)%_iQmeRSsc=MIsFHY(l1Ubk+(BGcAg*v01u>ErV&V7pu>y)2AI7 FtO3oAcfkMv literal 0 HcmV?d00001 diff --git a/images/flags/be.gif b/images/flags/be.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae09bfbe149911d7877616273c87935511426dbc GIT binary patch literal 359 zcmV-t0hsb-^(-t(N=ow_9P#e}`}=eD?6 z@&Eu-R8;%>M_5@|_xCUM_9{9$I{f@h_4Oo0MMeGT0QvJh-_Zc{?K$}JHsRv{)!_j4 zH#bjDPyPK-`S$?N+W`0XF!|^JKtDhG_F(+{W%TVI(cb{u-2kNk0Q2)e_Vz;Y@ih1G zFaQ7mA^8LV00000EC2ui01yBR000Jrz@JcfFqvks8E44}{2ovS0s(>8YJ;r6`Jhlf zn%Bs4Ikf_g7Fa+1{qEacm)!07%~Zffld)F1tmLtAR!3` z1{E!iku(k%l_WQr6#xo96D2evJ)sQ^6&o9-sB9V%5u0s6) z0RI30A^8LV00000EC2ui01yBR000Jqz@PBvD;5z*WFqlfI2VIKr2>KQL;wnNVXfZ4HdccqdBJh?EiD(F7ySJE-0a-*78Xf) z6z22hJghuTxlQu&@=LW#?(XjD_UiguTl{2X9HSg9sxA8Z`uF$uYLh+rQd8>c>iRuB za+*i>_V(W1-s}JXC88zuJ3I3L0ObGxVT&^JG&JM!<3O`O@eK`9xKaRw0015UE2S&o z002g_Mp(L7AfF)M?cXq`Ft^jU(dW_l0000&0QfXCJFq(7@8IA^8LV00000EC2ui01yBR000JsK%Y?PC_;`JO=CpZEXdlVD~0yZ`T z92^)JBqRf$3ZWz`H4^|EAvXmDIywmnC@2Ljr4kYu834K=AtfcNJR-s$#Ka@VEiF9D GK>#~f5SPFJ literal 0 HcmV?d00001 diff --git a/images/flags/bh.gif b/images/flags/bh.gif new file mode 100644 index 0000000000000000000000000000000000000000..56aa72b2b645a4054500f28e6c2336aafc8ab784 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h_bn~@K|%RaQv3V+@-8m@0Ri?ZD)>7){p#xK>gx0$ zAoV3B@eK|4MMd{ZOY;B#@(>XHYH9U8KIQ-b_%=4`0092|{rpQy`$tFa0092b(EV<1 z_b@R0W@YprAM+U*_%t;7008+{SK?}vx}hKAh$0Q&m+{QUg#^78)v z{{R2~A^8LV00000EC2ui01yBR000Jzz@D&ID;Nu*&|{g&^nOqaA_v<$0=*^74@Y0EW_r?D_Tl*4*fbh-<`Z*OQ9fXJ`8Q z`T%4A_w4fHc6QubTh#;u$Lq@T#l>^Sa^>jUSiV?Nx>Lyj00372o7Cpiup3;{PE7apk*31SHeBncV- Utrs{bA<@wS)YLLEFgig1JGeZe&;S4c literal 0 HcmV?d00001 diff --git a/images/flags/bj.gif b/images/flags/bj.gif new file mode 100644 index 0000000000000000000000000000000000000000..e676116f8ea589be623ced9474ae95d26b409ae1 GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hRJK(0^&~s1I(o@^_e41WQ~>+?0A9UbvXB=jF2-~a&g z85!s20Q>t#_b)H?^*>0kM)vkZSh`kXzhXnJKwQ0Ca>jG^Ha7P=F#P;XPO?isuRq-Y z004;qA^8LV00000EC2ui01yBR000J!z@PBvC>oBLj7IbMI0n!Y^zleoArQvqH#po( z-rY+S8j(uc=htJRjmzi2%;h+lJSh)=Y%T=?F?2Y16)8Lf1UeED78V2u4GJk09ThS; zFeoZ3EfYDA3Y0w^Hkq596ALU2H61+yubP|_ARrhl5j6)K0K60w7Z(c)7#Kbc5fKH; O1qjXvEG$0LK>$1EJ(0`+ literal 0 HcmV?d00001 diff --git a/images/flags/bm.gif b/images/flags/bm.gif new file mode 100644 index 0000000000000000000000000000000000000000..9feb87bc9e846584ff47884f0b08b21637a36896 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h%NG}sahT%O-_0y6<%NaQJ3M;2WAotO+PA@tO>&t4 z0P)({gu!msuDRZ0W6m)#=zMvq0081^YK{N^wg3RwN=fmkrF9`q+gn@JN=nc*HQsD& z*i}_+#O2mSMaB*e$6;;MKtQ>Jn$tx^&pJBGAt5v-P1Hg{-@(h7i;IzlvBP|hgBLyM z&(`L)*me*ge$*`cb~Pfy=?di3Y#kD$!}09k(( zJ%<1QA^8LV00000EC2ui01yBR000JzKv3Z3WA!c|ijop(Mocb21BYnAHVy}d!^tTC zGQvy((QQ1Zg61*EC@wAwfnce{(!2a&q@bZxA|gBu0cr;w9Sb27FDnTkAPF`zYYQeR z3nUX1GdUF=A!=+42BjLC5}%=K10^M-9}hni4xnlStt9{eAF;DqTR9mcX(VfGvrZ8T N%oENNKhZxy06PV_l#2iW literal 0 HcmV?d00001 diff --git a/images/flags/bn.gif b/images/flags/bn.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7b6b0f9199a96b4ef57eb4cac7413fe8a71793a GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h*@ScBy8zjGWz@n?Mn*{IW$=0|4^4?A^E-v-e0KTa|+?tW#iFo|`==t;W?$|Hn z-uU+CRPy)t@7qi8-B9t*0QKfQiHC=(s;czoc(aE9QBhI&?M?OB0QK_MVPRqZ{{8>} z0RR90A^8LV00000EC2ui01yBR000J(K%Hr5su*RLOJf-b{C*G!V><10G8u!x`RjRA z48!Aq!7LVt3C-K%xD}|w;mjgUd>@`j!C9pMEiV!~F(eLnI5-3V03Zc_5)vU21tvBF z1epL76ape3A(I6a3@$kb11ACk6c(-oH43B%2N5$G9v%s5gG|6 TzDf;E0Ta;<4ih8SH$eb9y}PV* literal 0 HcmV?d00001 diff --git a/images/flags/bo.gif b/images/flags/bo.gif new file mode 100644 index 0000000000000000000000000000000000000000..4844f856924ae58edfb7fba44e7f5c448a2409cf GIT binary patch literal 359 zcmV-t0hs4vV(D)Xgb0J8x6j)oh?9PI!A>Dfc;*-7r+SMA+W=+{2y)j90jO;OfS+aCb+ zZ2+~@I#HDX`@xU-Yhm@MWcaUe{SE+6*-y~rdg<6v>DpD3#Q^l7S@h_CxYj>a*j4D* zPX84HA^8LV00000EC2ui01yBR000Jrz@P9(D-Mpwk#h8VI3JN{C=>`BuFOZ(dMJ2f zF@>TqYQZ?1nMNb~=yZbkhc)S3E)GY9H53#K02vt#up%M=2&W4R8yh_+f5#0kd62+7Jp F06Q~Io@M|5 literal 0 HcmV?d00001 diff --git a/images/flags/br.gif b/images/flags/br.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c8661626bae57026266d56824709a9283d8c7ff GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h*yZ@7)EQ*1WcKzcVzE>JD*$C`>Gbp+sM%CSoJIWn zQhU35Q=?NucKT?rY5e?309XJTgBo9}UjRe^CWu`v2kCd}8kT1>3rugqR`S3bi zgXwK^s&kt8u;D^CmlU4TF*&3(uH8eG%5(PeNv*7*{qs>jm_YUIMD*z&EnxTj{8|8G z00000A^8LV00000EC2ui01yBR000JzK%YxI2Q|##o}-XBqc_nX~imf zicKPi(J(H}D*|_FGz=@5CIvz-2nvM?01#zd0|OKZ7Z5dh4=oKZ93dtH2L~iS5FP{% z8z>nK6&yE_F&%{?3?MWt20T0lI{^_97(WvuAPEUG12#Gb6t58)vRzpWG%#ai8o)?P NOBc>R(9u6Z06T&Vj4=QJ literal 0 HcmV?d00001 diff --git a/images/flags/bs.gif b/images/flags/bs.gif new file mode 100644 index 0000000000000000000000000000000000000000..c0a741e5ca69ebadee7774120d87675df8f6671f GIT binary patch literal 351 zcmV-l0igazNk%w1VGsZd0M!5hMwYHDg_-ri8!;Q+I)&W*gF7+nE;!qRZKOZCw|d!C*;+}}yn+fUcmx}HB1#?JuD%K#f2#Hvf&yg>cgPCviDJJ8U&oE3tS1(vB1E9iJ}{c4-fTIVo~<2!MAGgDgFLhzJ)0iw_wz xkbjbsiy1pHWd{cv8#N#x2P!{4BvmsX9v(bA6ciyL1UCgs1p&Uk1i`{V06Udwm5Ej<$3qzlIq*j_PPM<>g?U%;q-DH zHz@pY7YC=NAd&!=j7w<4FL0hGvELK*3i%RX*Bbn0QcQj_}5dq zmwf!+Nalz{@sUyQ6#(zM0PNRa-@8`meof^k6VUOkydMcq-6}VrsEW3M&=`)TtD{ zkw~S{$joSq1J_#!yF{6IX16(Ty6p%d*8_Z7HV|nXKMG+4A`cH5A0#9j8v`5|h6FA( z4;L2(5HAQJk{AL67Ca~h3=07oI1(WyCkX-y5DY0AHwzmGpCJw>KLR=w!~rk|0|O=| X4h}vlBO@^-B_JRi*e54G+(7_4r_HFM literal 0 HcmV?d00001 diff --git a/images/flags/bv.gif b/images/flags/bv.gif new file mode 100644 index 0000000000000000000000000000000000000000..6202d1f3a2df4184878f5ed8bc23aa630d43c061 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h01vKZmEH98^zCF}`uh6sZENy;dei^_23FAb_xIv4 zFM6fq>gwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC literal 0 HcmV?d00001 diff --git a/images/flags/bw.gif b/images/flags/bw.gif new file mode 100644 index 0000000000000000000000000000000000000000..986ab63c2764732ffd789269068ea5b033c3ace0 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h0Ega4$@D@(LOaCqa&mL>^72YbN;5Mv0JHX7()euE z_k-U2W7PVV<^THn`u6tr0G;YpRaJ`N{r&y@`1tr`()K$$I{>coe&7CS*7_2|{`B

m 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 literal 0 HcmV?d00001 diff --git a/images/monsters/energy elemental.gif b/images/monsters/energy elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..98b49a9b7493869b479f5ceb7c288f86591dd556 GIT binary patch literal 8805 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 literal 0 HcmV?d00001 diff --git a/images/monsters/energy overlord.gif b/images/monsters/energy overlord.gif new file mode 100644 index 0000000000000000000000000000000000000000..090b778e54e35f78d020f9b8337cf6678b5f58c2 GIT binary patch literal 12195 zcma)?c~Db#|ERxbNpiAsvH$^DPC{5k8Wa^3=?RPC+K6aT(FRvkw1`Vlu{}xHK@148 zYQqkS8W0r$ZNe^~2E?sZ-+doyz;Ihp*EneUl-p6Byf zykt?}yjT*DfDeG=-|Us)QL950%J7+fas&d_uRfy8ncyApwSKn#hy>}@_o;uT{EEAt zXZHH$U4MD%=Es|39Y9IO&{%_{A^fA~rfy;sxuLmX6p7%h3z_2hl~!xB+f z12{cdI7}9eHbB=Vj`kJNt{ex3OmO;jp}EBN+HtJ*G;+46>&J7n2c`Vszh3 z5$JFsP zs)4GjLEG2d+M`f&DrnyW_hpMZ6G6LKburzoXgqGXIH>Qka3EVSQ0dTG@7H$s^X3xI z%ikCFcG#^jxl>Tz%{$$PFZ2l#! z@X~`_?FHPkkGJAJl=vJNo z0{iyn_Dh3X&L5$F)wA*3b5D~I-1-tEkL_yjU)OZ|RCfyRO1g91x1jL-m4_LObS)VE zq2hMBBqiUerbv4F`{VbkKxrk&$#pRw6jsF0yT6fECgO%2o~Qn}ZmA+hwe+LQDn_!U zqkDNH?YZsaNgYr3_T0@F&f(Ro`R7gwO0t9nd9Jx-peEI~NzXcUMs}jesiEAqdaJlR z5fttfQ_-MkDX2)EmYXIl(m3Sn*+-J0vqv58wnTpS-Ij(M>*|^UjZG^%T32=rFS|Il zvi*M0rCxBn2b5oTyV(}-ZQCc8)WZG-pu5D*Z*;88biH*((vwDX|L27Nf4s0M@DtN1 z!k{;4F`-XPzmlky#5yi5k65Lj#at-sCSJs??K$kTDLF{Ib=88kv+2B7>gVDr^#)m7 zH3p@sMQ+U73Ni)LAdAq=(#SYO6Ljsv(A~`{BwWl1Qufc&WkTUNB_R{))VAns{Dapi zue^el3vVcc6#5x!)E=@x!H3xC@J0qtyvrFr>;&HQbV6s) zvR~8S^2mVT&nN(U+Hw5?6(Qc9GIr}-LTI+th~q<==v{0xVQxu3B_I1cTI5fcy`!5MWtjBO;;bT(#k zfLz3r3O~^SVHosXy%2JNWI7|P*qYDuxzInM1&~;0WYd#Kup`8G(nynWWKR1|$ihN4 z1-UE&H1APmw(#=%Rlr4_YkY*UoxlptMmYs$ybCn0gMIWyGIl0wl7fOcs5Z$-8W6_j z%(svm(ByppUg#tz;pqu>Mr@^wz~NN^a1Xw7Wi$nFV}fS?=U9pp)K5YR?d25{R1Le> zym;F5<)$URQ%AjgQj%!}BbZ>7(hb*p;_r>T=$GHu#_C>w_()hKdg0cUuHq&HyKD3m)JzTO;iQs5uF z6@>31Of+QUst+kp$~w~ZT@t}Sk@~z8I;R`-1^Hz_koOk3rk^ZTqG@Fb9>h<)!?jj^7!b@IW(utVki*2v#1S>r zZ=~(CP_*Cc5k-oME7rraf^}M(0Q8%E946!xaAM^OnF~T8jQ92RQZJQ@Gu{g*kYYRf zl3pC`64Kb`q9ZSYeSfYwBgluQC#!%|NiuycHGm?aBH0;+qcY=gi;717K>wSwnZb4@ zr0-NQ1snoAFzuD>kZ+mJGD0yUk*ns^lgw&Lp$Q9BpHX%za;pQ?L%FkHanwA%AYHzx z84_AZnn;P_6aiRMUPhZCF)9&E@TVKPF?Y>Eu`)~2+0aeK=qXkd#bJF=!*L0aJ!Q(- z>xBu$s($rDwPd0^!EcByChJ-!PnIy0(r-f1 zYh6IISvR+zD1zUZTms~{d!(9`pENH1)d<&MTRG37KJ(^|r#esQS@62lOu6*IQ|0I35kHk*pqqx+MXDaA&m zs-L6>7|?0UDUNOZ^H~jP>Uo?nbiNs)(Uodu0onG@mt?Lq-_km*lFT-DLIG#m zjccUnODDCz-A3&Fl(1s2fpL3HH@YH^hR6+RI2OV<+CoAj7TDnhXm}?^xsEz5JD>&r zWJLyl^iO_hm`eB#q&h{b7ID0ez_h@wpjsT(PN)U*`a?puc*EhY)vT#EJHib<_+mLl zKm6iy08r34@2?UPBj9E!(c6Dp7z1-Mm=lvF?$Oe-@E9ans-&lSnc%|s7t`V|=}z#% zcHEoY&p%^CJUh!~g;QSFy*snu7m7=W1B3B5iIE4uQ#Y}K|9oCTmX}l%kf9d-^d?LB zq5^T(cY>quTNlqt(6`!ti^+pyDO-}DH}nJLAf=vL9eYNqPa5zRXcwjYPA}Qx^XBZ% z#L)jLm(Gng^)B#4He^^Bn}d%0ZE$|zs*ibfWmV@V!K!R^pySV3O`Ubq-wgP~OndF> z5Bbi0nd&lO`8n?25dp`{=iE5~zq;)V4~OCZ=J3D%ZyX*_)@SALU#bUdggqZ`j{j8D zSHtKz0vC+sv_I2be|>T|8?LsZcqM3i-}58~YMMCG+W^{9k76VbDY9#wEW3SGaMMcT6PlYpYJ2tw&;Oh~l!0ITd*J1t z-4kybMt{FKcKgWrCdPvn^okXyHQ?M)aLG#MZ;s!6alGeQR%fc9yA0et!!~Du^A8SR zeSENUIR0WjR8`DvEaWwuvO9MUxwIc{zNI#Nzr*yV=1x2~wFfkeX*(WgwH*aj$GEjx z&|Zh$y9(8oNxJH3b!A9xB`DXhYVzT;uj=lO@93!j&1IcG)_Zi09qvektF%y!7BugN z8cRJ}Qo%?jax2g6+k9xaP+U^UZu;e$yU#Y<+ygG}1nH-kRoR>lljF4<*K?_&tCgM4 zPlK~rP-iSC__WB};A(Cq>dK+=mbIP9@VQL;(u3gmv#ocnq?$5qsHp3S6{LHi{-BE6 zZENa|fq|j;^YL!i6lJ%1HW~InHGe<+`FYl0j-WEfran_v^T&%Vo5t;5QbT~8bXIr~6bvY>t>V>q63 zZD8Bw-Jr}24JOaH@F=GD`;D`mDPj7T0vQ5;80OeFNGbOS7H82IA}%gPLP#OT+sv+ zZUN2Lx$0Z)hG)|2+qjoHY)3oA=UX?QmQVk87HHiMc5MRNcSF0WX^ro%KDxN3V+*G= z7pt>!_)<`%;Wd2&e!92uyKSj)K-#GkWf7Oi%0kAD7)75)NuXUm+;Cx$@#MhuZ(a=2i~>!^+_aszwdQ zSTFh9y`n1}cUu}rx>Xu&JpCq$O@ozvCy?1rVt4t5GwCWnz)wfgPc0?3gfuo&E6>uF z4W+I-Imuoyi`@Q%#CK#3RiV#pBRW;|bei&W$%K3?i=4RtCj!$%4F$9nfv*Se(y)eE zyb%6@nGoNUxuVVGV7KbF(ZR~L)Y7W^H>R_H7sYpBu!(?a7@@D!z&bB4uYJ+6kh^+T zzx=~U^ojj>ln^EMx z-0nc;>dEDXW8@L17YPt7v4>zBPt>O^rg3Cbad`382lXC>X`^wg)T%&N_@XalYJ75o z10#DJNO!wJ_qgtgLhvY@G%`L(o-hIgGo1L+o-mOp9`GYw;XtU2!FvgPpMchQ2?WAU zx+ehJ+Gzowd09x_>>vxC!{omRfnd%)qwraAqR}PWcO=C5i>S`yaM%)y7TGf|LG7J@ zi;WOMPOb-hwD|;_?xeE>+XN95l6&x@yTWGc=SJ{X_dcTytDuXr!{aJ#wWmb7(-N%v zN1ClYMFKd2@CRI^MRz*KRy^FxaK&-OAy}@b_#w%Z896y{ z4>4NK7Lt`Mglz~X_mM9g&6?>Y2;4=0YkW*&X6zBKg6g3DQ*0q8&=ma(cGjHQ1Cg)g2@$s_!Yd?k{Nz7iQx4EtxF zk;WDcCqNJ9Me6|V{hxcelox4%0(<+yKKYC6R9!c4qRy>bQQ>a`ygCr`{&|B*N^C|Ggo?r~dO zZx02H0j7?$u_$oHkd(6!EaFM?0zcVGxbBWfwbyB8otA_h>e_q{%s0YoI-W6-$OwME zKf2aH?fJ{NND{UR^EIfo>zDPjrL!Br`&e{}CI{Y@C|s2+W$B|$oEyOTfJ}niFv9oc zh~TQ}7m3Y>MXt3?beFI(#%iYsm}kV+aA02Sd-%)7RT+nqK4DF#Qo{t{dr5^ zg?^NcGR(rpaE_wi2(!Yf?edgtJ}*I%k)o!(8p)22+cM1xgaTG8ecFUP)5A+Mmv)n6 z%Sc>cwD4#RjA`3d@cif$_>^c#YNL@pCxU_w z5O`bcIQk9IFAGl6PJ1s{#+ZLM+$#ZM7I-bl{LsxZD{*NxKAQk0c2iIc@nA(Y&S+&Cj5PP#Wi6GzA(hX~WWP*MZ>74$?xfy5i2 z?fF*QRhbs9Owc-8K&*d7k!}8L>e5Xq-9IV9dg4=)Hl0IV%vb|{8|E*yvuvl2AS za*LhxVLCKnI17@Dbn&FO4`dHZiU<7@U0kUMN?G_Tf!9E1E zl9(gOTlaG%A%%H=kE28!<>s5vCN^|}uA~eHO&n)S2OV0hgPj7JGFL`#<=RF(C54e$ z{128U=?BDKu8IiwKwPkSd7iV>a2Cq2V2fWs@ReA;$d`g5XW|;XlM!01x=P0s2nR{0 zw~&|(q;{<@bzboL87D5TYhF<23ML0E_?{25J67v976Ti4MiV43AV?Byi(5=M-mJ#O z1pc5o^wTYsDcW)0Ip_<;)E*p8eY98Im&A?t7d64Y<)0HuBZ)P;X=hZ&!tKX1ZB^C9 z3r4t-NJH1z3C&}`YEk@0JE1WgkDl|3^-v)3ZfQ1g68iGp2QJYZ(x6-- zNIe;gc(4z8eXk&Y+nlwDDZDi&;gtQ*FRK66ji+Y97tfLQc(B zrTIKQG}ODiT;v!FHX10JoAn~~D85|9oBRGlFnt;BRjlU={<%VORPZbv#pdc8dA&Ml z{yKtP7iWZ|66R^oFf@`PLs2;G*kcpA+DML^^GWAs8l9VK6!50l-_mnTs4NNL`;sYQ z{j33(`g5GhoE`ONDu1z2lWvDpnvzQ@no~qA^!DrX{1l3M|H9`sTK;g&18k0y;-3_9Gi}uej27ba{#W5vy8lfu zbLh_0@1HFo{@W8i{tr+1`=6J^z1BwmOT~aS(-+#d{g~ckE%-a2x>~e8OLVmesrz$a z+-ecCD+m7m`L~Hfy;*%@$soTJF3hy+d2p!pw2dhXYJ8G^<73a$9H?0f&Q%G!kHBT` z+8-Xbxl#_=%0Y7mQeBFe;-HcTJKIixQELrPhAurxYkP92=P;$ zPDM*<;qpH_CnhWI6+qqZx}K!l*X2NM3rmL!cpzD%U|IJ4I3 zFsY!$8iI8W7pxusZOOe?h35TG*_gIHh3K6cd7i^-Xh2$$rR`%o+6zHb0o1l1uAHpB zm5Cp#0@q)s4IlL=j)T&Va?7%0rPf(OiOiH?f9jHLe?WPEHFVEpdoPt+SqNoTdzfC< z4r^s?=hn6sdA8Pdb+6aym}(FCGO$Nl3;O z+ST*i%T;jGeyF2SRuqGk?E^P&?rGd@S7L4PPs(~;HQ${)b357fOd@F9W7~L)SD#2f zkVVVb1G@8rdrG-OXVBrn!Y*t6URm|SVcV`}l{c@(pJ|CQ86B_vc;QxxBy}I?JPb@1 zdR`3eY;J+h)!AOV=G1h_vGFTVkR+`5N?e`{+EZDVA7^&nI&3(D-v0TUktRlYqWz6R zxB55N?hhajO``wIJpQ;oHnyR|YA>CjE`e45t$$0&tc%t$MlJKI74+*tY8>cD<}?Ll z_C%CFIP8|b!@Vqzd!^i^`V2_cKvg#mRIe3O#WQzq16Mxfew)bu%G>+jF(Ah}OV}>G za!^t~oM}F6quU_4cyQXuSa4%6xcrB4BFgF86`*nhuVFuCI4Hl`;&!WhT|?i@z6w^) zMd!2a(z=uA&1-9GtQK?&G-rl~rR*v~OZt_lrFbjxalS+7BFI z-~9?3>0Z-U%WZF9-5B3+^M4q^|Gu?)!n^~ zIY zVf;BH83e&kr)O^y$E)}|U#+}(XwZS{x!CrR#JRM~^rVDeOegqff`nqHa0 z@(6nq9vqK$rPDI8357lP03@(Q3e{>ybuzA=5!aHUak$076oA|Mh7`l^-cd9NjT1#ToWwnCcvzZdcE(cpv4(r zmVGy2K9-{B#Uk7+)Rgng(Fh#d5dn4s8}YD~R?o>#<2;X+l7h%axiOIO!e0m1>t`x4 zHs?Bwp}s~nCiXQ)!c1M+0Ta*Kw-eEOO&av4;K{Z85JQm`a1wN%*+{|?4g`OeWX^=U zY*Ip;PqRTgxpZR0$i5Iy8AqT%A`DTm&{RM-|GG=ONL0`}w-*ZtM=#5WRL@so<|TYD z4*9u4iN*qjdy5W83l!A3y%x%$Ka)@p#pk~Fpb&#ZS{I#7CQfSS_HW_yKS0R1H7s|K zvZZ>+?X4-DnFF9uF)ZCgnABnwmkkuQb}A~kTq;H~yS&EQdIcudx}76_&Kopg1vgnkm5KG7+n zty>frQ{0D$@a9I37Sm385}t3C-!JXaPMquUKX4k12xht8?s(gy^Ff zab9WAICE0ivmG?&)|Q;$2Pl|KWhbx;N#krCmk6z=CoW;>mvNzXkwELyD}-2$?mX8d zm#{Rm4;)CiuGOpQ1Cc;bLDJl&l6phu=-@3KD>>dI76 zgiR#u)1lyeS#J{e0``)a!D`Q2i+x_pQ#U^Bh8ODuvTW$3q0BNX<{zEy(?@Grv0;XlY8o&IO?hE%G!+B9>E*#e?|?DC7jOIe|5s z1!f98&`5(5D4MVSwg!jTMS+yf+c$K1ipVA97ZTfK9W&J~; z$po-+dl-=b5a#VaNp-abVdz34vdrLjCv+uMKRrT|0Hj_sU02GtO^eJMO@0i~XA}Gg zkvZiL`PK-3+7jouNi;c%#)}D5*vw25sN*RlptXziQ)%Cc!H%v=d9|0fGPUUf>sdq7e$?lpimnTQkI;?G{6%`wZ zFUH4=>{PGrYlJ+VEe1iNxFy>diJkJ~R>C+B(2SRmPx?Q`M3Cp4gT@x9he+1;XlgTe zMsUb93!H0t;<~AFP2j+=&y9HvTptq1Vkkzd%j;)Gt@`3ay*fsK2I8wY=?OIWwTb}~YS*<*8qVWBuDjd_Zoh;5Ewx{tos9|m z6&AI!g8p#M0m0N>b((F!W})vx(%r+Xb*WeV>!5!sTlFh$S55)@;w~hA2IZ1u!cstr z^t}p30>UdY;kqvZ(*#&1Y5(sDoRr=>H!*s2mI^>mSSM_$6!je$tgv-i_U$ zKHaXj475xf?orbUOGMU?-&O~g7usHX+x6t>uFf|_cdavozhC{g7Z08LPXuOPG{>S`kukhmQnvra4$hU8+L+Va~OLd~28uZ>}#G2dxv*42f z&J6B3Z>8!Ks3R6`_)okCBUZ96a~e4Y@-o556}aahXr9>7W7Pwz4_N0CMQGmd6>2k5>)%!cIon*I^yPdTnvX$EBRt%Mcli?MklQp-k+?+;a zTg@R4i)Wrr74IZ#+_?r;|ig;}yLHjEo&n+F0s!t4NS)Z!|lcAJ(><|GX{Pv*__bQ<|Vw%ReX2?X+(0+{b#em|ve^ zHkH6NXLxnV;GESQzTwryaxWCXCwrk}9 zq`Vw1*(1GfHI`#g%P!Dyh^Y@cb2kH=Ix4dITc=f8&f3@KE$qvHd#z}`2Mky#e7o)7 z3Q*SSZ~D?c|Cq2qe)5J@SH1vE8*Q$CgWanp?tR6&aN*NiajcdtjOut$V>JP*NL=?G zu+o2`;|;4bSgq!$O|u#3pM7z|O8G5P{q;2_6TSBG%Ki|;>$zlnW;KNU%!E6driYrA`$zDY_$q;;ia_1>00c=t~-d-bl^l7SNOo&`X&WS+Aqc*$=!zYsSx~H5{$SRW>VhTj9{1A^&WLmBlk#HDwoA#LA zT)$d+A8^DnWg03VR0NzhF>8=MO}Rx0Em=;4LLyc{U#N|k3W4IhDo{+WBRf}r?6#zH zH8F=A99a=+KK*lav{+2X zO!oX;0nRn*L(nZR5?BaXe|Jgn0s~+`UQCfW1x>F8|byO$VmV z<)1t83mB)kN=gy_xZi8zzih*3)7=e|YWuok!fJAyl$oLK@|IbZG|8Q!kt%8$u0O_r zAf$}|bkP{vy$|E8)DbDs;Hy%{ei3G5{0m?}b9q9Cu1%(STBA_m`Sk<(jP-v%LMG7OzPN3A7-46Cgo=9%96=Bx-PK z1_y@Z0VH3w{+?!qu73fFYG`-jLoVi;M~O zi_*=KP>eu-g;;M~Y`af|`hB3Rt1}QCqu`KrQJW$K$60~nGVLTlDh#kZuc={N6+#nUYah zF#*xbx7buCbYb+f(3aO@wC|iEe0$CFmttY)S}(-;;?~gM z_*nJVYnu`M0ZmRDwOsR9!j6i|XZ>9WUw8;f=09@?RjFXK*vNLq$#2p89+!+*n~!2t zKoROlB8;1ahXj`rl+;49J^TOl(9xJaF*}TnG?A#D8nLN1+9NMv!F<3?(Mu6_Kg7Z1 zewBV<`*NN|@aUFsIx(Ar+|>MYb_b5@Ogz}E2*%aa+}Y@Eycm8k2UbH$K>y@J6}gsR z`d3?6gKqt@NHg$_AGi7Vp%a9(<3-%1+wJ0}$k1TbBVL@J>!ybz%of0si%E3cA;Rej z0k&=;5v1ND#Ny`qCrZYm)RPb=Im$XfBID5-bRy4&pA0zC{>5&=`!u4_rNk~A%=fc^ z0Hp;EBVH?9NNR7*4qy>H2>Jb$CZ>Fh<1IF>|2!d;9uV?rc0HyzWHx$*nO3`P>6f9+ zUSTT;CTAbX(ikD{)3LM&!X$~b4&7t)93NIEjjoS2aJr!gOp~=p7sW2NusJVju1=~PMO2>$ThrU!6^$5fYh=0w6!UDWG#-_aIkHOaWX)7WKcz+HBkrpa= zDK&U_T82G3sdeXAY#Yw-5kU>Yl*if<`f5P8pe&TYc(q251|at~)kwV9SpL#U!NLH2 z9uAn*{zDQW5X0tcu!P0BW4W9SMav}TLWW(7vse$=P1Qpn-tKov9M zImx|2?Lb?M0_uDZSS!aOd`WauPo{HgJ{&ijiNgJz$mK|i<|F%^`%w?_5v3NC#e!wx z2#y_4(|m~y?WtK@uswB>?)3Q#g0veoTPI=Tw125c?k-|xVw7c_JrQwhADNyUU!`gI znnVxr;k?RDUNm(I1xMB0i5F^6ezbv~pQ)CGz#U3$Y%xgT1c39q`IxN z@;ErlHp7HG&p}JRvDDsNLe|Z> z>^@qeR7248?fY6&#bZ6SJvFXqNV`ltrnaHtNO!k2IlpW|!?AVU(!T6jIMev`{j8GT zjdR#QI+j&A%r-)^LsG(XKG9t~tT#!SHDjH;ndVr(bwg9LL_Er{jO50#>@;SpG)1a3 zNu#Wm;zdcq=hXN%HoWWO_FY5HZB)!aRHeeE>or!Y?A-ZALZY^l=Wo!CG)l6%q2XFg zx4)9=QZ~;sKAy*??v;MZWk=F7T$ahR>Y|L^!K&-VtL{lkn)vhmPBzOBFJyN?N`= zHL^}U&EU}WL^i-aPN_;`pF2~Y#;NKvTAjeA=E|Msdc?0ZH=#09mBy~;JvY8UPr6Dr z#sB~RSiyBUR+cqqq~+E3I8B(ZnAYXf_o9r@c+01+z}K$fW0^qr;-1*1(kLR$8pCf8()+-nyXWx~1a1q~e%|;G~k<(v0cD zvFB4!u{<`RIzi5GIn+2dugR+GR&%O1MWr=Rwm3n$K2NqXRhndfygYrtK3ki&mFk~% z<+q*Tbyd?}U(+;QuR2zwH9NP3O}fgG={GyOaZtvkhTE%++*m-vUO&jky63~H?ZT|; z!>#PPs^GGQ<-LODQ)RAaJ;+aLykSVm*v0WvOVCnHq{_AIK|;4PM1Vj`us~C+L0+Lk zVX8?}p#T5?A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^U4Py>HB1Tb>o2UeQa2o&MUS2TfB6x3nJ>J^KYYe+C5 zK_bS#YE0_H@z?KP3>OTqv?9_{go1DXz!054!a)HMP_7g*x)9YM5GGnW8aN?Mm_j5n z{c}Y03c~{}PNi*GFh(&FAO3MA(aRgbDV+-9J$2yY0aR)161;K3%&0mp!Z;vk1BI%A zCJwkzWxxi%fN*d*~_u==8irDiIJ)!8p)qfWR*#6sWvt!?y`75Uvq5 zkVwy||7HyGPca;bf}9Db41&rPX`nLSV`;GR8%HJ#M++GJFcCo#KKysdJzkt3iUWcO z1c4T54CG2`Ev)tm0PAgp;3>3-z=1Oc+;EB>KD_Zp3?39DLMxK}qkwb&L9j|HjBVsw zWB-JLg)&b7qe43ic;d-6Q*1I&Dl853MSUjhgF_1nE;itt!gPa0_MAlF; z!a$rb(on`57kn^89gHK-5o3(eg&SQAG0g+EB#_X(3rqCMDnB_?$~Fbmpav|kWTSx) zT?CVZBBmtt8){4HK*J6HNJEG^V+bI?DL710 zLJ12HL;x>{P$-&d3Bf_bK&9AWN9H(`kpvaL_&ty?@eITdMn5QUoIzF)FpxBX5#&Jx zI1GfqzW*rE1qB-Xqd^77WV9{m1S!JCA^%WA#zBW{FOV$}{6oh-lw|Nv23Z^-1{VM1 zgG5EYK~<0k2}Mw$F$fOi6Q4)`Dax>e9T=kzrAUH6 z=CMJ6%;6Un2mucNfDi;HoWcw2kOw3#l7#`%wiTdSO*^x5e5}bgcUqH$TXDDIUoSxKS4;q4iW&43Y3ZqmXJj4N&tv| zSmFkJAjCjo5C@B-;viv&L?n* z1ujl;feRc&1nz1{2$UcYbWorh2x-6{P7#Y9q<}98ImbZa5e$RGqY4^mfDvP%4IrSi zAuEuA1)8UJgC*br4-{xb0~+v%6m;&M3|WFA5Fm>sNZ}vda0fS1(1S+w0HF<$MGiKq zh=%<`2bM?y5K1sij6TGR1ChipF7N`AR^$xzD5Og*(g7fBpbE{RMO>f=h-Mh2zzh7YgB$I#~Crd-A@#^I7ibOvb?5$*0Z8q_5)U#-fR% z_|l``Mv;B(qW1TU=SPre^~SvhvjxvU*- z*@iDj<2PeB%o-L)rr%!>w za+_PGg5fuMqI&YEW?wQk}u4=33XMS=DvK_D#q3ehHTsXlHUjWe(;;ngYukZ}pFLpimCF#h|$f>M9A>8`FC$P@ON8cZ#5&a-qUzVn-d+ zp#+x|q=FK+k^)x!S6)R++CQ>E{dD%NW~inKZpyRlX`*WO+gD^VWsT_e-8l8n(bvjA zO(VPeILoZq;4@2jk6^=?kX`yxZ^TyFKyN)t!Uk%dqPwyX>h^hj6mE8KqDNuIz zcvlgn$80v6^19#X9=#r#8cV&B-v2;+>$kClEB+UH#n_@stNsVVzGwM{npNsbd{YN? zsFXZDp4@uHs-c`P_9SKcrb!{izrq z-*as;?MAa>^)KOVGw$jqmBU$9J@1$QJ&WnhwQl`kRZljh?8y<$c;Uc<^ntE`HmOhZ z@ZOe+zS*@EL+dZz&T+k)>iF~AdHs{JJJ0ino9X?@6?n(hoj=FlcKGEo4 zeaJDYTo7vv!*tqvG3p0-18I=gnea|IP3#(jIjgaGIrxL5$eu0a1x8$@cSTZGk`Lc& zjJx5B4{sYHQ~9jY-ETe{a2UNy{Ii)D}T{ofqL|8fK6;Q;Nf`uX=Aw9iPY z{fCQ0vNs9$x|Uku4V4yiOJ4SxJC~)UCw}{4(IKAjJ%2~2V-UiT@51;z>=$6JD{MaY zv^C!l$*%_9;@J}hgsWs93@z8*r|@5JeEI!2Gedva?l=^mA*|}e7lBb^yI^_TN4>El z^_S-PZzYjuZKmtlQRqzz(6ED3 z=U?=RJGOrT`7@n=$s z5iqy?HkB049Coy87fAgc85mke$wDmFZx8aD>zx7m-7tkZ(DZ%Z3kLHvp~$d}^E%+^|c(Rpz}+=?~bu+}eM9biLj0>FpndH28Vr zxLOuS+L};N?wl73X3tiUL!p2tXZcBA!T@=o~x|F{>+-UJU5o5Pn+=mYHq^tOrF9`;*%RO3zt(ZGGrY#7DK+0pzhNPeKU$ydy6z_8E*$ZCLfwL_COSrq4t6)wL z-e6XVZ!=Sh6&#y0<&2L!ycS|(Z<#M<(rs<6+7FZ+6&3TN&TKm|68M_5_;GlOcJaJR z@N@NfoBai56dv#R-8-SIjd(0a2`?@0Rq$ksQ6w18-n!O33#B7e;Aq+pa`Z-wJMO(3 z#=>c9ZKz`1nmb}Al+whImA9}XEVrIB>3mV)FoqWF1#}xN^=wP`@D)=Br!FSxdRgMo z7EkURk-3Jt%dj{`S;t9)=^%Ux_B_AuZ)@_LQ8DO!e4lGZ^rpjIJi#y#IdmLxH}<)j z3Dv}ztlcM~--j-U(Zwp+!2(n8nm#;N6kH~!Pm$f1Z_}?Zi4q`U#In&=?dYQVZTlr< z^924ZTQTjxvh`Jt!Q<6LtzmlVqGvl&gLafE6 z6_gd4!@-0AY4Uv@>a;hUZ3?!4 zH<6udNnEDD+sH)kG|ONr`fC|3_pLRz$JKf~hPV2t(f70b(uFdvNuI(fPE%X&KE|4Tkh=}0U1A)z?OTLPTRxJ=0@Pe2hAl?`&5;vFso2c@T#_YtF0#N-IlFK#=Mv1B$5k5tJixnH2v zg2+1J1ny>kJWF7c<#E7(qRiZfH!Q2|6cPn4ONgHrU=KE%#8xbpMZ)qn*G^`h}}R_|~XQUK`}}Imqbo-j2|VT`wcvD68Ehf{W_I z*bu>H46TdKo=NVS(N!vJSkdv6~>_ zk>=x5o>#Nr(rfn*=$U$RqcuW(8Ngb`IFq}XFKLSn(QC&ehm zwx#>+@eWbT6&%~&m&PKdiD!#tKF&sLM1hn4R(p;&JqjE4l|*yYEC2)(WSczQc9T8BDHa z%FD}(i;D#Ufs#2xUXy@vI*Lnbj*N^{!0$CEol%de*U~nvt*u4TPc<|&?AYg_%OCRF zN?-_TpFfMmva_?NQmL4Ld|fro>a!u*+^6c%RcIB=MAa$nl;0O551<9fM0En%EeVVL zhO}|lN`9ouNxyXZ^j!bL(aN)!kjr`nZ&g@{tE;OzIyzbj59jCS4TW#iV{an&c%m2y zlT%Y{HajvpZGC+`_IS?l$cTo9Mn^|SYip~KE(i`i*WTV47#Qf`8IHr@Dk`q~`}>2F zJ%IN`EPiEaX=!U~o0^&$6BDDVjq~w4^{TIbK=NnE;dNl`-_+DZBogU#`rzQ;`1tr9 zJJ(!6-pa}mOWwu@lASjWM)FLNy>(*;dfyQD}ZPMuIXi7>77K>e4T2k`vO>;fJG^UPF zCaG!1SLW;bkaB~AgMnMt%F0T2cXxe#JshsA!6;*3&7(EYS{fvnX*kGShsS@?4|r-z zaNebk*W4R{ClJ8>g~Y_f(9lqnee}-`k#4qO%A_Qa{SD+nu$)aq+Pw0~VOZ276bi-X z^S!;j9UUE&JPNF-XW=*p82Kc~+W_9Rz`Fvt=758VaNi0w`!+yM19@v8Lkhz?0*_LV zIst^6z`GJ{`>Q&sQ->k}7Ds?v8Q?DgPB9#*3Wp;AJp<5EcQD`ihpYvJt?N3EYLQ<8 zW&sGg1)S550tf(rhm<|(zCO-0FS@OzwH)lnYYm}<+iLTz13zZMKtcevq0dBT(Xx@- z%|d#cBf2twkLf26=lspXn!}z{d|L=;I)3jEe*I%}!?Vnz7pwXn&V-A2r#8#*QGGg2 zdu5wNd&RQ1H*QpCpQ~Ff6k{x?KX3eI#FTjQW?mNSH$J%gTgpoB`O6Ncag6H2s+%$y ztD54H@lVW{Oj0yV%K_f%(H4cH%|z&fSe@QarCtx9;bjYXm)k}wtW)#PPPHG;Z#`9E zQ?J)kC8xUj{xK)~V0z8hiHBDo;M!gl$UK!zEcAXkCaJWG`qkr2Yjp1=-FjDx6&CxN zb*RWUZ>WJ)LZES_GX}dk1v(b_eWcHn11^fhw7|I=WKz5W3cCB@(FVEo8Yl5how0j` zdC*d6r_=mP%5J~q0q5a~#~qZk^Tmo0qj4f_H3qg=fT5$kL!%&Geun#wzOj# z%E55CCLZeW>Y}u*NF{kD+zWLSgIh!nd9n39Dt7*tu7UlZ8gd56AIpac+{tujPs+cN zlLj2df!J2UG)`PY9}b%`xt>m*TkqK9vL7ePdU}c)$%naON79$h zYlm*+_!v^IEOYcCPPcrfrh0XbQT#mcFUX@cHYJ%{`gH-@9ii}o>K2m3#<3<#?upXo zKd`WLn8@W1mdaNFdQKFquDh5rm!sw=EfMCdnT_Ra&(?9yHG!H3<(%yP^lBDCz3477 z32kT0T~k2(zzO?5oRAV0S!0;RL;M#f9)udX@QYS&4WZNrX=%!aGIcXMcO@a z-s`in8#g#h8~9IMjO$cq?qb(bz-n}dO5;j6^7pIz- zS&sNJRHhkV6g{D4S&d`bblkXQ?Bw*Fn9^q# z12nFfLc=aoLwvW=oy;N)r6D5*^t!LfZ;mO@I8lCaeqG`@$P-8Z4V5T<>~F{3g=%Rs zNoUz4O3{p&MK!!?5hQ95*BMLLQ9|jI*g&|!>o&ODLiEx}-Jo?-u9Lc5U<_%53+7yl zR=7JfZb-GYk~$&M^-5M$RqQI43n}KJ*FOn2cLvmvzjnwj9k}&q7Ro&vy8j-qmkEz4-na#lC#-nFUG1?;Yg@y6cq^5y;%l+DfU}mQBgYD*6dh zLXS#_l0ZpOU!|U=pwpU2Gp|WsDwOAW`OqwRz8y@0TW?pDa6<6=_e0o}tW>K<<>7Enj_ zQn$cd!cEA6ndNq#*Mb_R)HK=B7QR|_bEF3@ zhS@!F#JBv_5K+*UEU+7u7V`_&ti0rl}WvdF9!w#2mS+cWVN^e literal 0 HcmV?d00001 diff --git a/images/monsters/evileye.gif b/images/monsters/evileye.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca2ad4eff67a2e3358ff88aac29323e223e6054f GIT binary patch literal 3061 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μEq> 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 TZPVEY^N0~JWFY3j(1!m4-bfvw literal 0 HcmV?d00001 diff --git a/images/monsters/ferumbras.gif b/images/monsters/ferumbras.gif new file mode 100644 index 0000000000000000000000000000000000000000..d937faa1b88ba8d04e9f287e6d64fdf196d5c8d2 GIT binary patch literal 3916 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 Z*Tr5HQ@yXuQR}XDuU(gx?y>>Q|6l0NSg!y8 literal 0 HcmV?d00001 diff --git a/images/monsters/fire devil.gif b/images/monsters/fire devil.gif new file mode 100644 index 0000000000000000000000000000000000000000..1653406127237be2c49f529eaaf5268d30a13859 GIT binary patch literal 2730 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 literal 0 HcmV?d00001 diff --git a/images/monsters/fire overlord.gif b/images/monsters/fire overlord.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cbccd0dce3d63dbc9f3e3f1efc4d6b6f65f8f66 GIT binary patch literal 5289 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 literal 0 HcmV?d00001 diff --git a/images/monsters/firedevil.gif b/images/monsters/firedevil.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9afb89a9615cd47b1b0e313056e9f129b028724 GIT binary patch literal 1702 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 literal 0 HcmV?d00001 diff --git a/images/monsters/flamethrower.gif b/images/monsters/flamethrower.gif new file mode 100644 index 0000000000000000000000000000000000000000..d938b8f2be97c363832e100ae5f37ab37f1d5876 GIT binary patch literal 2661 zcmd6m|5KXx9l)Q5?+6kEv>54vh>BJdv{q@1DfRJA1gUEIgNvH*|fzCug6AS7R!OnOPiU)fVL2WYFnG9-@L2W#wONKPbkTw~D5+OYn z(j-C#EHk1|0ySW0CUh7IVQ5bhHKb5&D$|h+J;{h688N0JP%6@sis-P2F&TkV5j_?$ zrL!ADD%z8Z>QYgCDr&%@W^6Un#&mWxrK5&))R9}(tr z78G~?X=Or^kK6jr8>8+lf6zGx^55u~x_DmnZF=dGS8^ME|1AN%QF#@4P6w&OrMEh- z>^w8nR7@fdFk23}Hh;Nu!`nP4Y#$x!${Ao6E11<^7U=KP_M*Opr-b3<+*4oNKSlv) z6J<{ZDJ0|5L|!Rd;jOrC`cdXY#)5_8m+lT#)M*nZr{xiMZIjw~zl!;}=ixs2)ZWrp zi9AuIJoHVC{NQiCq=U&fzuWJ)_Qc?S+`6vo&K%|m{|3+%if()ayqMlb=bD|&T_^tl z2cPR6X5{W1=1|wh_xv=dRe4r=X?L!)-gLtRqJZK7b9sPAwxh@g4z%6>nhbCzBrhn7 z`=gtKCFLOq$8CfF9JduEw{jYgk;VSUE6DaDc-%vv_Xf}4sL!h`ILcYonvHZyA+z;9 zwSjgYWXnA%4rJ~cC_Lo`l!XmOF`3&AL5l@-hmZ#fbK(nJH0WO|95t^MRl(_xPVDLSqAg3>QW@+JKvSuN-f2&Tu z6S~I_yZ7kOd?wp34(Bp$OOAqP3>^!vw?)YjMhpMS5y*VX*eGqc=bpvJ_szU?IInDLc0QMlA~+UtOD(5X zD_p6PQBimyx2O-d^3Mr_#VWjMXLYc{;QC{Xy`m0)D^Fs+pR2&wV9~Q%n^u+@nrnHb zR|w*Z^zpSNYLO&K>$zhIom?kX>;?b*;BdYemeCGRhS{$H4r=APwO#!g)eB8g5d_~P z0>*0x@kB=C+}_!T-#1u>lc0xvnninGzup9{VW-QZ*NRT?@#PPs#QsJLeH-~~`rZP$ZrZ6)jPTd9cp8M-i!p%6MuA)oU?UzO0Qtx9-0znh75sH# zO}DM+m;TvCH-syf$k+-eevf;d(nyhU9SD%eJz4p2n^*AAaT>5A|0dN?a^9^c7*8tNcC6#VsR1Q|!@lJ2$s3^ku9v*t)frZw; zbyWhM9c-3_S$D4i)t|?1h@yZ~a9B!F1KWWTe94vKo6G&0euBs_(C-{`Ms2KTztIn zLmy1wVnE$U7xU_fjd6r&D^yAGxoQ~azD~%|V6O}E;9}Rh>$fWYLm%)RkCdr%o)+T3 z>a98EFd5A=u-W}mkbvwQ1qjysUH+rHH|j0VsGuEeN_gi5=9_E;AWGFJ<+Tz*j{n`a z&nsKRWdQwy3*o+Fh%H|uwy^vFu}Wvf)vB#>iiJ2xqyhtC`_Z^{HY{4KE)zS&1j}ui zI7~N6>xkPhfP3s`r~N!a{_K$T9X7?jOZlN)Tm_QnznbIJ4_T-}Sv~6%_+pRj%fBCK zAXZ=&MjzT%DwKgOOl$tfLp(q&APdsrD%b3#W2@GDSJcLmOF@PoA|FuWSey~U-|F~y z&v>$ee}=%Jcjdi{DM}u|&L_|xC`IrNqSW8cOUkHJrxZShd!6ySt$F^RfrgU=D@mUy zy{udmzfeBZc+bN)d(FDd>u}aaez<(_hJ`LRbYHy((o8HFxi$v=GPa)ok$PYcBX6>R z$0sD|7Sj0*Rz8G~^+8+F=;nfO5?A=CWT1ppZly#~@_T=Yzx?a(@D2K~oO5}rxzG;a zc=zU56FNsl61K2JU1U2Q94~!7r#lwrOpHW!A!;j|QcP7#aHIlsrQ^O7v`r*i8a_RF Ji9`Sz{|g*&APxWk literal 0 HcmV?d00001 diff --git a/images/monsters/flamingo.gif b/images/monsters/flamingo.gif new file mode 100644 index 0000000000000000000000000000000000000000..280d61f3d085d53cd56c73b07224f4799a2bfbd9 GIT binary patch literal 2466 zcmd6peN>az9mntUl0457^1OrqV-`IS!iyG#qQ}w_3c)0Xw*rMuL5flf0!4uWk`a}6 z2n54BRz!@2BA~6HqKHBP8DIsKDyhXyM7tG`0W!8TSF8)7>&}s#?Vs)J{(tYe_j5kK z@Aq!@kU6~-W)953JOD5Zvk-U%&G^~Vax0gFWTc*6gc_b3EDkdWcKF^sg--v zMpF)URn^`<-TvcX@x<-Bf1Q~F|Jky5f)X6S2Nur^-jxOhY!drP9oIP^kbbw_;t7k_ z0Id1@Ld{1})sc-~#yskXv%8VFdsOig=Q6cW*hgbUA_0#;m?lE#SO0KVx@N(!U?u; z{iO|kCWVfxjn-`#Vsd)&-ZF~5o&IHIIRjp@`6m$5{}Kd-q#^QE#j30~&Mktd2~x_e zG~Ka=_&~uBUgI#8;_vz)!S!)WWncLY)znKthT|IH0vk&ZCW)h6J+|;rl#a--)Dy_& z1Fp(Y$)hObgUG{r0NHNzVY;;8K(%%+t_L8gXcXtG0rH8>()(-9!k{Xk0L6PRr6(@E zzxfOxbu9IP5Qxnw1Vh0J-M1sUC`$;t@iF7_gYL{D8|Xn|_cleh4xcXTKM_k_G8CaD z=38%S-A$edCYiC{-|A7XaR)CD82;=+)<1;&Z`i08j`bJqtFBFRE^85x%cu~E86*D) zY9$1IkvqFWpd)p=Hhg2wyx)tX&MG0ZigYdocJItN(&d00z0<7^czOX<@U^3*B@+Af=t+;t#N6<64LyCc?J} zG;{X`e+*PhI`$Xie{}CGvJmnx-g$>%MB1T#+uYOk)8?AZCKfMI^M6JSSPRS8b{)Qa zA8|_io|h*#?KHNJGL%>QVxYm$Q!r4>UlVUsvHFp*7i`qZlZ|cLzj1{mJu+V-S~WFm zoR(&gmKZ`)yzLNV>%J8yBqFXP5=B#URX&Szgpzw{m@C`jTPi}>?22%`NdP8dX)esm z%1o|Ui(tQ?;xML`!I z;&7(DJgWN15fm5Qn0Y*B)w#7a+jpCDXd~OK1dEfN+SylvIx%FiG&#)niTN9k-8QW} znW!@Jn3Lhljo(kN0&$|ICMn#_#7&R~{H|>N{_*|Kb9z)mLi6C21rLRcgZMS_^R&Pg zPqXYPUEFv{j!dGkgN+7wvg2`F(>r^TqyQ&8Hv_K1O9>9J5p1{R^Ql5fue|&Sn)1=4 z7KS`e6(TIpQ-R6=QWV1B>;d)r_~mQ!BGd;99XzB}kD z0z2p^Z*Q+&jpYY*zk9dR8(swEO;N$Gzmv3s48otyPY=x+*QJYKd@q_0Y0AaF*0Ajg zEX>oT>iul_sbT^@y7rv)gW0p|`b@$HxZa<6AKv-ewF(=rtYw9H`YIpAzZE9EQ)p)r zbb70yw)3C^XEbk&*;rZa zp{*+aKGTAgF8S%>&9(V21N(oPR)6~cNUIhhcqOk|&V{$dAYUydR_|hBv91mbjtIbz zKC^z%AT0#MCZ@FE?Gljkl|HmE1Um-J%AYI@XLPNSadDSl=)kXz3EhT z>tk``i&lixslrf_%Fx$hwxMFN7S-{G^tG7bMjxV!PbjOZ6Q0*%S-m({1(3KG--6@K zFsKa3L-C%A2du$TFP?4!5HyNCGeXvbmj8tG#^k|`JLC?ge@@6Rxoc|711TLTe literal 0 HcmV?d00001 diff --git a/images/monsters/fluffy.gif b/images/monsters/fluffy.gif new file mode 100644 index 0000000000000000000000000000000000000000..336306f7595e2532f23d4e4fa42c24df068b5689 GIT binary patch literal 6265 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 F4FL3o+VB7X literal 0 HcmV?d00001 diff --git a/images/monsters/frogazure.gif b/images/monsters/frogazure.gif new file mode 100644 index 0000000000000000000000000000000000000000..41f307e6e81f563c4db1773f7a76ed4fe908eb13 GIT binary patch literal 657 zcmd6kTWgX50ES<`sUx+aV#@+e-N}w?G7oLezQ8s^jwo z0s#U6NKQg*0ZC$W6Lvdj8bd>1@zIrm&j+;{wr?01Kt7MbLAYE{g<$)NL;}OZ(5Daz z!R-dG5h4RY5O6r4^dOmpR*Ps9-QQucKx~Cnih3i1!GJ~si36f87*}xo4a{Z~3h;Q) zT|qDi*(pRKFuy}v8w^>L%iuPE`V3AJ zBTu&hm3)d2Hf+rh=VY%&g*!&ty+v-Z=JYySraVDz#HBSIC4%oIS@leUGZt+np*Yyf u)C>KUnDZFP*;=9}Ui%8;`<$iJ+-k%grY5O$>@DqBJiA^>(`&sKfX=_-gQo}p literal 0 HcmV?d00001 diff --git a/images/monsters/frost dragon hatchling.gif b/images/monsters/frost dragon hatchling.gif new file mode 100644 index 0000000000000000000000000000000000000000..b809ffd3bc129688406bed72b6ac83fda573f644 GIT binary patch literal 3639 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 literal 0 HcmV?d00001 diff --git a/images/monsters/frost dragon.gif b/images/monsters/frost dragon.gif new file mode 100644 index 0000000000000000000000000000000000000000..f32ee5e8618b8834966d105f6179ddea719d3dd8 GIT binary patch literal 6161 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 Q%kYT~JkqxzTpY~%UyU~EB>(^b literal 0 HcmV?d00001 diff --git a/images/monsters/frost giant.gif b/images/monsters/frost giant.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9dc67625b84567a1c77aa220e6c8a669098adc7 GIT binary patch literal 5262 zcmbu?`Bzg1`ake{ZxV8|KyDJ207~BO-=Hii$RD7L{s30t7^i zij`XH1jQD$OQ5yI5uKZa%}P5#ZFQzj8?3g}+D>TgXV9VL^x9@9s&-4(E&HHJhcu`KGr6 zlM2&?fwrqwB8d_Zm7B1mOX$m1zj49b*CPtcK2ek8!}e|d^j7+oHe-2`sId8!iVbW| z=*E(b<*C9wYeM!F$MK}4?S$frhFrSZLr- zQ(~eZK)CVsaCvoqb?m0sdc!lDD?j)wVqTxPB?2LVq+#P_masVeL|ei_*6A)TF<= zJ?gEh=%BPx;o4nHZrr6_WoUeEvcT`wv9*%oT`f7`C(ENIUr)_nlVlw}T@-`1%0g1o zvgKJh>*56dOfQvk%^6K1gBmD}NkQ32ojjZ$7|43LAS&Hgm=((LE;xC`dGG%2kFO=| zI~7}Za9gTyv^{6TU#@d#f`N;dFMm2wr0w2(aYET(=t}J%#VIrY5QC61MGe^s20llCeWcYxWNWC#u(^t~q$%V9KsH zZgk{dKb+H85H5&MUl+#TVK~11EURKVr`VL_`}x3*xEgGKe4p&sOaxVU0Ze&mmfuB+{-*Uc4u#o|Ml@IYSJc(bG}Q~3VC>orNislgn& zH;)}(TCja5PaqBqPY8%8{p(=S>gsA&p+pwSQHJ})*1wtX>IdsLm4Etbrca_;R`-Ta zgtR_I2mrv#nqZZ-F1xH$AyZ|?$4Cg^%T(~3NQnnlfvA`B%Ok-60A2-FDcn4(#b$un z5f!u6AxAeNEI5-ldT#14Ct>G<+0pYeM^QyDH-BvS<_U4>rHY$lj}7F=%Fo)Jtc6=e zK_;mHBIfn)-}`iqd#N+@Ci%cl6phzWnGwW>WB2bqqFrZvOF#2s?7Le)Qu;ySz8@Kn z3=C}Se)(7(zIzIAaQDB_^zUeC6ci zglCRD-%q#txpA_|?oJ(kTXGl{zbqtsX@N#thcaNf5h zb#WW|031l39G&v*{AIOxo?!7bPnCRIQG&6q{enFLOc^`n;P9~1C<;~o)1Lu+JRbo` zaBFsPPrtQ{ zc#;mR$hlc!0OPfbtqxkN6u`-;C>}{qec%M3=hMaH$%*?zSojdCZ&J?u0RT6i2O~2A z5>e~$WC{@?P=s5&?9_J0*gcv<3q$2k1rVp}>BGwYkh@NqXY5lgC9uJJRhyj!5dVav z8zMI_fF1REU7Bo!J7;XTATOh;hqy$h&YGvVQG(tN z$K}yfE2TB%3#6nC=cTwkvP4cse+39V0YT6LkeDhkI(~VIrUO~cwK^CrrotJ~N5%Is zalcjX9|bZ?#Z2EyixIu+f~0NV+^Ls&tG+0lh_&?Qu>*d~I=zc>P%}ifZErxer0+h#k75G5sb8fqyr3 zWcs741b>Yj2*zvpK^Eh81Ch*KYK4c|=0RLRsrxO4xD{N#ez}HGp~Fb)eAy!PL;q)e zc*HMPJ7~%wD89|ku0;$bTA76)5Qp%sURsOIqsO8oA;hSPVCfqY+bZ56u;|> zkM6%qtY(I|KalZN5LpXs zXIPA$;st6DjQM3cJL4YEw#A5W)GqDBShh3 zP{^Xq5SOc8-yY2JwiwOVwR%2&FQ~$-7fdh-F{X0}EiaB!^55gFFhEE#;R(t{O+dQL zwmN$ztHnj&wY_#wYBG|8mnaOCYZY`_Y{vwa4yAFBrs~HJMykN`+#le5BUtcATzy!c zjQP#)Wb&Q`fVUWL+)?>kn0tuU^5j>r(>l$h+ByrCRe#rryI}hhMqrseh%o}hN4SXD zVrcFscC%uo5fm8C2RhZYnR1z(j(I{dHYw4O?7;ub7}0bKXf#%~sS z3(C&HAKVA18{>>b?;4+fYbK-A`i7(Kv}Udr;I1t6ZI(Rz*T4IT;s%L6Ug>fOldhzz zZC?)XX8ik1N)hK+@8;p^faO6C;hBZL;QJQ%y%A&NN)=pdv?B`54_D)kr`Cz3glut& zxDM<+e)Jj)WsFP`k|Mv)XsZ&>Wv*jFl}&o~1e~3c{NZ{P$Srg6134YR%5%+|BPVGk zvxdvtww`z={f{42M_=3_K>rUEr2jK0-uzX6>l8yBZ2Ymr=0$2fNW3^Yvu*9^y-!zE zm>oYQ!p2O@gsw>wFLwX&7XL+BAo}iJBkCN^?|-QVl|b_2hCl@Mp7pmWp3IP0{Dv3k z8@lLV45kNSnx4~;Cy$cv#O

v=j^b6%_x}F=0IBa4#s7NR`F`B`Pft%J z$^T%_^Z>W_Z`k~L-2TnY%?ZH$?d|PR&GwVz{*U7Ra@Y5B*!XkW{dU{^)z#IA-~0i+ z{Qv*}A^8LV00000EC2ui01yBR000Jwz*cIgnazBo(F<|8pir7d!)CkPB)!FAr6S=V zQ4A)w)4?(sMj~NSKnkb$WbUX_9{30EM~FmN1_A;W2L~J>Ap$>qe}RLAhanvniv)mz zgocP69S1)&6LofZ8wI8XGA|2hYbG@TumiFp00>)MISL9D6)qkgBD60}C?FsZ5FZ~U KB>>I$03T&+g{ literal 0 HcmV?d00001 diff --git a/images/flags/by.gif b/images/flags/by.gif new file mode 100644 index 0000000000000000000000000000000000000000..43ffcd4c7168eed43697af80901f59eb800c8d2e GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h^B5TYTU+S>093qGEvhXRp%(m0OZPA^^#B0Ij1oIEdc!h z0RI30A^8LV00000EC2ui01yBR000Jtz)u48^BIkZWKtmbxf~9RbTUaK0<@V#a5Iep z0SL*!xnx3z#r7u*kIUz@Vke-0Mi3R*j9w@d8Uj8aG?sYQ0`8CB=w=;M2%_}ui@050@}uG%YO>r938jh^H}W7}|?_-K3K zM1A#akM4Aj*@T_#<5Dho0|wkLR+Wj%A4LZh+xDUfJE%({`-8pwZ9f z{Ndf=;q&d~$@RWoci%R5=|6Golc2NI>C&_C&Srt-fT#OlgzToYz=W6VaHPjheDCQ1 z0Qmp_A^8LV00000EC2ui01yBR000J!z@KnP@c9VHqA^5jek3~#rqn@gHZc$d2LOlw zESpVnnI#fE!PYA}v>K7g;gPVUDH4&W!gwtlDlj}277uE90W2*A4kiT?2o@tVY8n9n zd<{A@5ezFM5R@U77Xb$~5iSb{2@nto0;3lk92W`(1`0B+uL1%c9Va;fHy$1_4;jiS OAV$tU1JTmcK>#~z$E7#` literal 0 HcmV?d00001 diff --git a/images/flags/ca.gif b/images/flags/ca.gif new file mode 100644 index 0000000000000000000000000000000000000000..457d9662d54d976cdd5b4f4d8e480831995d9af1 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h_3Z8L?(Xu0iRy=l@p^jcX>8{c8~XbC@H|54tgHR~ z{p{o9^^lbH_4V@d^4S0Y+eAs^MMu~qDBL$X>Rw;?qo?RyWA1ZyrT_rA008Uj>+XGl z$p8S=85!+vbKXr;=1x@WC@jm%%f!UQ?PX@=VP@_yIonlP;%sf|SXl8(Q|!II=^rQF zYHQTg)b-HQ_nxBe&dtBSzw`C=^ox+{QeE3CFX-Ld^p=?QnV#ZRTln|*=)l3>GB@Ep zK=kzVA^8LV00000EC2ui01yBR000J+KotTJ`WcN5N8rKam?{;VVhR8p4!gp|!$DLS zo9SV&nKc>_P{CQD5frZ&iNaese34Sd1QT2iS{?-@5Dq;)78xNq0v=;27Bvwq0X7pl z87w#(BnJQ}ARs3T0TMkQ83qg&6gv$72??Yc9X1~r4>TSr4L=Syv$PTrxB?pmy-ESg W8WRx2Ob;9`BGn_;G8ozzK>$0p52i2x literal 0 HcmV?d00001 diff --git a/images/flags/catalonia.gif b/images/flags/catalonia.gif new file mode 100644 index 0000000000000000000000000000000000000000..73df9a0498e644d740d4b977b750e7c2f81c6777 GIT binary patch literal 238 zcmV>2R(OZZtg{&-mI@-yij3G>G+^+_kur3&)* zRQT&N?ejb0wj1j3Dd+AZ_{=f;YDez$MDjlu?7$`U=P22&66m}k?^h%Ay9L;CJOA^8LV00000EC2ui01yBR000GRASa4Yd7M;wH4xyw+omXjATbR_ z?0n>Vg8^n>fW%@nfksm(I2?ssXFBx&2Z-zhVK{ug;Ll=Fsbn%03&zS0Vzt}ua>-~u oAAx)zv9`Li2or*W1{5_m40TQqczFpa6e|sr7L^tWmZ&#vi!oWTyicM>= zhmfsIOrUA~?N;j4Rj|#BG>=sgeLO*$Wh{(RN}X%~76AYBesQ#oRG(};m|-=NS^!f3 z07L*pms~xQRYsj?Ih9>zu7hB!eoUQS=FC1!n^Iq*gHNGvceRn>%}V3YQ{vNQ?9xyE z-B^6BU(voNRhBx+#7NJ{QUF~SLYHNzx=l@-V*pPXW1vrLt#M?oaMHv-+Q~uM%1;1Y z0{{R3A^8LV00000EC2ui01yBR000J%K%Y>!DRPd2jX+TGJuCy%<)To8M1@u1)Et-! z4FCZ1kz_!)38gZ#7z|;GLzP)TCJEQ?_GmS92P!fdH9QLmFg-~ZIRFP3EF&Ey2nhiJ z1V0-WClm}eDKQ>+moFMW9109&9UUY)mH`nF5U3#^XBr-Nmk}@#6R090Vx1o}X9PQG RKTAs$&=o(^Kho1d06YCiiGu(D literal 0 HcmV?d00001 diff --git a/images/flags/cd.gif b/images/flags/cd.gif new file mode 100644 index 0000000000000000000000000000000000000000..1df717ae5cdacf3d7ea543831aaf2fdb0f94262a GIT binary patch literal 243 zcmV}Nk%w1VGsZd0K@0RL4d|2GYA-u}p90A|GB{{Rq6xZ3|^8TV$2-0BSTOZ tJ`>D_6ZdB5brBvA8-;Rze|2hu4{{fe7ZH+^gBA%3n3x5d9-W;b06Q}=W@i8Z literal 0 HcmV?d00001 diff --git a/images/flags/cf.gif b/images/flags/cf.gif new file mode 100644 index 0000000000000000000000000000000000000000..35787ca489da892f75fb431d52e85ad726b85b3d GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`b9-Fr!*Lr7?RSH`T1A%_4V}hIiuO501eXV>6HEb z{f4IZ3O(rdDk{6;F$7`+i^_{+i1YaP_?Wc%`8YY$)BsDmOGURuCY&a1$Zh20=d#-z z1~B0LYiod^_`|~h^71dM)(v`{_TJtA03+Vc&H(ZN001BW*#H3h`~AS?Tbi4q&y8{3Je{YcVx#GE#tooSGnC6XK%v(QD>^g>goG3n0|O9?HV+RO78VydITQ^T z7y_CBCy$bp0S%X$n#~#3Y`-G literal 0 HcmV?d00001 diff --git a/images/flags/cg.gif b/images/flags/cg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0a62a51cafbd00551b5258b17284e542272d4d3 GIT binary patch literal 359 zcmV-t0hsg*-+&G0P{37UEWHq-x`d#!NAM+U*-~a$r+f?z%0s8ts^UDeL zvnuz?OHkNM%JOCP%@Oy}7yJ8Qtm|UG@JH=Q0Qas=P1OMRQ%3E-0QS8pX5D6<=tSKB z006@PA^8LV00000EC2ui01yBR000Jrz@Kn9C^BR*mWpEg1)d7UWio-yN|?%x-i_`v_xJf&S^aWy{$F4GWo7tRSoJ+U`$V)sTy`awef zdwTg;So~^g^&=zw{Qdb`TlOj{_b)I0d3pQ$`~G@*?EnDy`1tzz`uzO-`T6<%{r&v_ z0RI30A^8LV00000EC2ui01E&M000JQz@PBvEBY7&!0&LV-EJ8Ts8aZ~C=NldmkO8` zznY`7-33@Eg|DWK?QA-ptl_)$cJFv@g!4^yCvZGD5e5(pFBl?vG&3Fp1SKCNgApMx e4+#J&94-$1Sv6Q#~ literal 0 HcmV?d00001 diff --git a/images/flags/ci.gif b/images/flags/ci.gif new file mode 100644 index 0000000000000000000000000000000000000000..844120a52b2ace1595d581a03c564d71d3f14f0c GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h`m8gwt)$}Rwl0QB_q($doZhX69oGW>l24Z{ucWdQrJMgIQ&Ce0=`%{KnKS^c`}_R-{Py=9HV>Qy5;rs^761T%qz?}T6ci0NGb$-49Dtb*84?W*9y1jc3JND8 O%n%R`H#Z&*K>$0Fexktu literal 0 HcmV?d00001 diff --git a/images/flags/ck.gif b/images/flags/ck.gif new file mode 100644 index 0000000000000000000000000000000000000000..2edb73994c90da240f120ea7a3143da4fd1b0723 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5hixQZ�Ba-d*wp60o~!^6Yf z)83@4%IKArdyBAef1%iKb3RdjrBiL=Y-?zGr1<#wL{@{-8yPn@f!UCkyJvfopvUIJ z$^ZZWA^8LV00000EC2ui01yBR000JuKpslu@tis|!iT^lC=@zhtI;TsTrt6jVUws7 zxfdW%3j}1K2jyUJWPY9%1^~e9OqatA;@}v50|f~c6+I0lI1zjt3lu*c2@)0-4-6qQ zZHx#9EFUl_8EOZLeG3Q(5kH=xYY`fK2B#Ynssf^}rKb}c8me1eDy#>i5U)Q?PftI~ I%*;UmJAFx!?*IS* literal 0 HcmV?d00001 diff --git a/images/flags/cl.gif b/images/flags/cl.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc370e6ca757d338d851e78a257338c5088edff GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hRHfwoZEXNt#rj)Y{A6Tir``HdQS$Qg>gwwG^78T% z6WQwbRFu-}008$yMC1Sf^*cNC008nXF7)l~g}mnO@9*&q4f_B9d$#5KMMd~DH1{tr z_9`m%Bqa17ANe{u`btXkGBWcS8Q%Z^=jZ48KR+|dD`anSRHa6wc(|D`gRGQiV zKd)P$+t=y#k;CU(nAH9K{@?BRcd_F4@bLKf`1SSm-2edm{QUOz_Wk|+`uh6&`}_I% z`S#~9+pog_ literal 0 HcmV?d00001 diff --git a/images/flags/cm.gif b/images/flags/cm.gif new file mode 100644 index 0000000000000000000000000000000000000000..1fb102b295c86d04176b567ac795d92913dd23c8 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h_AD&?YG?LHIOgU6^Ya||J2?0EN$l+aXu@dsc60gp zR{(|p_4OoEyHoo_MMZ!}X15^;I|>4pih*93Mh&*jH7OM41RiNO4Iv>JI2af>8Vm%10~a?T4;>i= z6EOf9j}$tQ2$eiJ1pojrA_No^Cn*;Q9Uve%rZA`!B_$jw8(ceVG$bT&JtrI-J{KD+ P%ry|t&nYQB)Ik6{8V!;B literal 0 HcmV?d00001 diff --git a/images/flags/cn.gif b/images/flags/cn.gif new file mode 100644 index 0000000000000000000000000000000000000000..b052530978823707ba275dd861a188e55cc0f181 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs{jD)lSsJ$0Ony~-8MD*C@0eNB6BFS@ zMa=*J+b=KPKtS3nE7mS9;ZRW6B_-onSmsz(_Rmq*ARy5V4c|&i>2Ge`MMc&hANt&Q z;Z9E4Iy&AuI^aS=)fpMW008J}YW2)Z`zbm)I8f18ZBYhGiKN`WYtZ3-}cTd005pyci#QlQT^Lg`Poy8aNCjBL@cn87O~(gocQU000aq zE(MW?BZ-TZB`6LOEgvrf12zf@7$PD(0|ui3v>+g*rl_g14!yk)z`zE>!$AN$75JQN literal 0 HcmV?d00001 diff --git a/images/flags/cr.gif b/images/flags/cr.gif new file mode 100644 index 0000000000000000000000000000000000000000..0728dd6a498c4c3e2a69652e0476a60aafe60171 GIT binary patch literal 359 zcmV-t0hs42Jdg_UT4O>Pkug0516X`S5ac002{7e7D^g z7-xgL<~uv>q@;wL%<=N_f0xSk`T3Km)a_MO?yRf(%F5v-CF3hA004OLuC0xu(fP&1 z`~Cg)zP|Rny8r-X{Qmy+xwyFi0C$nbbdJMriNM|f0Q0uB^|!X)X=nMNq3cgi<>~3? zKtSE!-{2n~@rQ+ppw81lKlj4H>!6?d$jI})zWmhGdz8rG008;?{Q3X?^Rlt?^z`$z zv-|%3A^8LV00000EC2ui01yBR000Jrz<^MQDHcD-4+0U8I3*fQ%;A9GMx+vA2kQPf z9G%V(i3rXt)vZ#iZ8oz`#}hjFY^mH~GFcG@Eerqv7ZxuqA|`u&fP#dE3Ji${jDduO zFA53(A}}>{C_X$H6ci1oG!!xh90sliX97JBw6rc5R909eB?}7)zzGFNOT`EU$jQh- F06PNatDgV> literal 0 HcmV?d00001 diff --git a/images/flags/cs.gif b/images/flags/cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..101db64939d70025b6a4712466a58640ff4023b7 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hb92T1{{HrJb6{Y-^A;8W0Eb*$yLx)b`uh6#`1tnr z_U6mWOiZzCY{7nh$ogAb`htS}=;-`pWJN`<002mXgUk6+Q}k?X`aM1Sii%THw(I}^ z_(VjCiqAAOru92J^8f$<0C@5)F7xyA@?~Y^00000Wb-sM@eK{&008^@`}Zy`kC4)& zq}umOOIcXC_%t;5008wNAvrm%^>}#re0(e{q4_B(Wo5wQ$H(;b_57fq_4W1L008{_ z{PgtnA^8LV00000EC2ui01yBR000Jwz=CjC2pL1BWU_E*9sqzw12-_dGz92g%kD>pJS1OzB3BBl}#4;B_K92_4XCnq8zJs`##$jBwj KDJebAK>#~H;F-+; literal 0 HcmV?d00001 diff --git a/images/flags/cu.gif b/images/flags/cu.gif new file mode 100644 index 0000000000000000000000000000000000000000..291255ca3f7621e4af8eec0a3239a7f75d22a6a9 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h`T6<%$jA9;XxiJ|_Jq?EnA(CY< z^Mktn01D^oEiL{1{bi~BYNytGv)%LPT>u#CPn-Fj#LM*b^z!oZ@kmH@vHX0t{$Zv0 z_xJYzDDRrW$MaHBY^?fdsrf&V_C}QTL6Gu?z5f6J;cKn_Pnz}XMn-6>{zR1b-T(kg zm-P30drFx2Zm<52y217DZ~XhZ06QEjsZsy{ literal 0 HcmV?d00001 diff --git a/images/flags/cx.gif b/images/flags/cx.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5b43089b01283eabb0e53b270e414575d24679b GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hXV+)rR004|-W!KN{ zNC0jCCsdO~%|(se94IKpt*z%-a!RsRc0B{%_xkE$J z01Qw}%}f)z6QJZj005*@(oRo|A{h)Y9}6Tm7Z(8=IXf#Aehv;jf&nNIC>uCB zHYx*-9uf;62?P)j1qCfG4-7mWou8o_r4OFew3<>lq3*RJB@;{4ib^W~d`$By{bNBYx1_V)Ar{rvs$#re}e`qx+D<%^c7!WanIvNN(RvjoW z5F08akT^R6JXkUrFcA$A5j#3KI649bIW<}XAut}QI6^ox0AgcgkS(k;NlOj^1P28L L2m%5#&_Mt@EbY{X literal 0 HcmV?d00001 diff --git a/images/flags/cz.gif b/images/flags/cz.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a605e581dee0f0d8500f0f0d67d7feb3f1d6f03 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h$^Za_s@~NB0d}k9<{23PM6~kq^6u{Lz0&OJ>gwd> z<@B4I-QC^sl$7NY6Yq-RdeT z=_DlWG&JlxI_New+5iCPA0Kg@*yu7c>@P2RquY_Z>Wi=7@Q;t}OH0n(^6pSjm$>Bp z{r>ANF4x!BW1ZgbnVD^*;lkDL$Ay{x{{H*>`}p|y{QUg+`T6$t_Wk|+`uh6A008&* z_x1JlA^8LV00000EC2ui01yBR000JuK+EYzG#C%aL_)!|m{hfBYlp+xc)6R8VSx;0 zwH@`E_35_VzyLAEYIQ#ymle>+5ac)U_o}coB^fX@3kwYmC=U-Y0u>X1A{QPVBpVzd z1P&hn6(<>yla-g54kG{sC!ifJmY5D07!*AP0W=a4D=85X9v&Yf6tV?9ARq$A0szX& IJeDRmk~Z$xI*esy^4v)C;Ck|#M6-%7SXfx=i6{ABV78<$X*oGRKRWhOQtvY}y1KFV zSy{b7F`I-h{MDq&xUcenaD!W0=FJ`I9v)^%Jm`WQ@8E5%t)rE4a)5z>`|+ZjoRH|x zB0oPbA^8LV00000EC2ui01yBR000Juz>Q<*Nd1n;q=UsQ6mn1oqt{z3e#_l%GHG~8 zq|GLU_}O9-iB9+V%pPzQs_d!=1Q?2`r8*oeD-bdPb$EJwet-~ygcW&veSd)vHG>2& z3JM9EA|f3fB_%fs0Vg~e85$ZOARZnZ96mHSFDC=H0};9*ya2uc7bC(W1Ox`hF9a9L I7Z*VQJGrf#Gynhq literal 0 HcmV?d00001 diff --git a/images/flags/dj.gif b/images/flags/dj.gif new file mode 100644 index 0000000000000000000000000000000000000000..212406d973881f3be2b8c1f4cc4bbed17bf29119 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5hvFoud%q>TR{s5@}G|e*rmH>^h`X9+3l(+oH+5S}6 zRQ>$@iLLoMdHZFo#G1PLro;XGn3y@xIeet{jH&k|YV@ne{w>ih07~f+#S(<1_x$qm zMAJn1`uTmH^&`zAak9z{!wnf?@PVoKO4dn)tN5V5{29p^`uh9#_xJPn|6QiQzvI@8 z-;I^$mj1!P6J75BNr5eK_jKNL6v`Co_vw_h`PStA>hb+slm7rY=iT(({{H>|hXDKg z`~Uy{A^8LV00000EC2ui01yBR000J#z(h_!BsPw+N<{<{{Zt8y)B=H+Opgb`hWY(? zHxpuPFfdA^iJ{AD<1A$}dZNZG7O%|$m9SAL8X6uR6gqej5eq&jEFd5bkSicDiV+(= z9RMU37at!dG!g|qiat9t1OWjb2PYXB1U(&lngkcCtr;O90X-=-E(*dV92^o71gX6( P1I^6^(9k{8(?I|`axbfZ literal 0 HcmV?d00001 diff --git a/images/flags/dk.gif b/images/flags/dk.gif new file mode 100644 index 0000000000000000000000000000000000000000..03e75bd297377de3d398b7c36a613ae283ca64e2 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h@KjXydV2Tk>-Tnb?>;`x008evN%!~n^<7=$LMcM0086-4e2E%>pnj6VPWhsG4xqk z?Kd~;D=YMBYV&4h@?Blw008hoLg*hK=NTFK`T6wp^yo4&{{H^%PEN=G0QL3t`{(EL zR8;Nl?dUZ%@mN^t&(G>PIqy3=`}_OyPfzgx0Ql_A^8LV00000EC2ui01yBR000J)K$~wk`LQOGN+ra6JbZ!Z0HqsvJ{b@UkZM2? zh|Mq8a)@ReO~=rf1j4PKqIOPqE{nosuxZtJ3Uz81BNzogC_g+rG&m(Y2L~%A5i1El zii{ACk&_V-CJ7ZD1`Y%zHyn2(BoY!QDit55GdnjL6s!^!77RTVSz9{-DGL}fFDDGX UOCb*pE-?)S)G8`HJt{!}JEF&=EC2ui literal 0 HcmV?d00001 diff --git a/images/flags/dm.gif b/images/flags/dm.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f87f3ca6a52c118cdfe6bc0a6dbc623025db1a8 GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h0BZng!fANOcuk|@^oCLV{QPvaE&x*iRLC-1x?DV} zJY&COmA5ucv`vA{f&J}j^z`(2cXIaSTlV2N04@MOtv~a0HZ`d=OG-l;8rvDgkm9|A-a-SpKT&M)l)gBIsMxJ{ow$M z%uC&3AK>~-_2NPAW-IDzF!Xak@og&eZ!urKUH){MK+`4=x$Z$a8m$@ z00000A^8LV00000EC2ui01yBR000J!K%Y>k(X4(2fD&*x_#9A&KyZr`0t;IL=X3_N0|+uPBp@IdNClP! zB@7l52nHh%pc@(jI1LRs9t<=FE+{4$3KSXvre`5FBqOdFuoM7T3keA#5*QF?3MwkT ON=;3M8x+#hK>#~#;)-ej literal 0 HcmV?d00001 diff --git a/images/flags/do.gif b/images/flags/do.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7d0bad39e027d93dfedfed5b001b2f32ff31205 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5hQ*62Y{r&1hL|}Np=Q=v}`22Z}&g@-X00372A)xo| z>*6FN=QcIe005Mv*vtR`=RQ8}^Y)FN)mwADIaaUaEG+u=_4M`i`SkPYQc~+ySNi(; z`1ttt_V(KV0C9)Q=SoWLVPU-h0K@q<#=ip))CxkzKSY=X$< zL_~g)(AnST003d>)zR>8Z~XW7^YioV^ZoB?YU)o_;9x^v5Wds;H z04ggcClfFpHk1%@3K5!|6g&tXC6x>nr9G$=00<3N8X7ksr2`WaJOH&zOd}&PFEGjo I%m_gMJNYW5asU7T literal 0 HcmV?d00001 diff --git a/images/flags/dz.gif b/images/flags/dz.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed580a7cec832efa9c9aa4900ddfef45d938e132 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h+S=Oe?CkdT_Kmuu<#K4(d2Vc{iBy$ylfS9*)z#Zr zP|?xR;o{=wj)z;Dd-Cn=`TF_*Tqpob5aC-;jhKPlQ%7Q zXrzXIvX}y9HFT?xhPIz!o`89-ly9hv^Yin@$;i&m&eqn}A$d)7dtl~!bnUsgMUH7q zk#6YE%<9?K^~=la^zu%kfVpj8RGfPC@bGl1kIrskW}19HgERA^8LV00000EC2ui01yBR000J$K$LEn@kBffjgr9t05XW^U;qL^u2=y;hv3lSh3Ar3bR z2QDf#BxXJ)5gnBWDGC(?Fc?0KK06X34hJnPIVmfujXgiEHiV-zF(f2DK0iMt5*NxF Q%o`;O3nn`|B_%-sJGCdIJOBUy literal 0 HcmV?d00001 diff --git a/images/flags/ec.gif b/images/flags/ec.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e41e0ec8c22fba363719ef9ba536c7c168e0ac7 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h=)C~--(>ULTIq6f$N&KQ>yZEeTiZH1)+#FZ<5&06 z4<}}}?#2N0SW`xQ!*rUrS%aqSH!=C;b=Lp@_v3o@;cYr}zHF1RT#e23;dA=uW9R?? z`{;r7-%R=Def;Tb{p)l1=Y@Ks*JF*X;Y&;N&I9sFMEdEB@IpHPDWd%Cmr;etFm1b4 ziONiY#{J(5e4o4#Q;DSj0N+DH{_J>xqrTK1ALCL|{_v0TP)qgVVnTYs_hVg`w94VK z0QuJ$A^8LV00000EC2ui01yBR000Juz@Jd4P?V00Bw+bdIaP(i=@bfiD3lDK$>DfB z5=o^J2nYljANLy`m(PNV?}ej*K%b9BljwIkIsh>}H83y_4;L3BBM^=k1}P#K7%eL< z4m%bWEG!ESk&~8~nw*{sI|c*;HzXu82eAmVHZ}(`8$7xV4LK$zC@2xb5fd8|$jJoD I%*;UmJDaVaZU6uP literal 0 HcmV?d00001 diff --git a/images/flags/ee.gif b/images/flags/ee.gif new file mode 100644 index 0000000000000000000000000000000000000000..9397a2d084aa397846d125405e06e31f81ca3eeb GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h04K9&qux6^JMr=HUY_3K;^K64b=un6(b3TWH@g4; znaaw_QkB_ElGrLMD;O9UA|fIH7OP51N&pF@S)1KGh}1?#Mm9D!KtMoLR8%*F(lLS1 zDtpcN`1tnr_Vo1hd$8pD`}@DYzxDO?071XS#l=rgPyGD+LyOc$kJnU~+b}RN!NI}9 z!^3#4gpdSZ}D|-{0T)`T6tn^ZNSw_xJbm^6~&f zzW@LLA^8LV00000EC2ui01yBR000JwK%dY@N*DpiNMtfm_&^|+OLn^j0tDKO(QtwY z1d58ALRB;yPE0{^g~yHZIn6;Seg<2{B(Y!w7b^}B5EwsrdwqX_gAfk_hcA47fP#b% z4;Mc*Cm|s_IUPJ6BOf|FJvuD~Cp(~`q^3Os13fGSpE;pCqot>)A~**JFfa(m3kxMB KEi57;K>$0OoS+N< literal 0 HcmV?d00001 diff --git a/images/flags/eg.gif b/images/flags/eg.gif new file mode 100644 index 0000000000000000000000000000000000000000..6857c7dd57a75a6232f2ce346c8183f63a0686fb GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h@ZEI!`uZ&`E%IYy^Wl9wJUsGTToDoxf`WqTG&Ji; zN$_%V?nOoOYisp-df&`s?Q3gWTU+Jj<>deX?p0Owii(PgiuQJPQc_df008#(_Ve@e zL_|dLQ&VeeZ0P_1G&D4OdwXJHW7PlvOG``det`CnkoJy_`}_OyyLRnZ0j?@dkV*@n*m0QjV&>^wd7_4WMx{Pgtn>i_`#{rzTU zW&i*HA^8LV00000EC2ui01yBR000JvK%S8I`Am+-j50IgIi8oxqR|)(3=|5j=`eUZ z9U6myOC($h+v;XIRVuPl%CT5LAgWPs-_z*=Ed(zb8aX>T5`2CrEGz&3g*zLFdy4@C zH8lW+8yhKMfJ|ZDMKRz4<1t0FMbfn-)8(JO2LuNwG=Z?A-bJ z`E+!2M@L5hY5-$nWBSR-;~Eq4$V;^5%--{3K$FCm^G`jL_HFE9K2`{FDt`eI@-rZV17Px0~b_w(}-mJa;< z`~Uy|A^8LV00000EC2ui01yBR000Jrz@KnPEQ)@BBw)b|g&YovL`OkFrJW9AdpfN& z6xa?#1`*CG6>Jp&a}IEy??J05c7AP^QL9~22K zE*l#uDFU7X2@sS64Hz#k1}qsFGcyGRJp(nQ7!wm07YGQbsW~z?qzwVX!zRWf$jBl= F06Y6ZlW+h4 literal 0 HcmV?d00001 diff --git a/images/flags/england.gif b/images/flags/england.gif new file mode 100644 index 0000000000000000000000000000000000000000..933a4f0b3dbe2f328d15f73895ba576aa78295ed GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hm;eCXgM;eo>f(xu{r&yob#>cSRqLap(9h55o}SDo zDA{sy`}Oto^z`}j^Sl56&oMFg@$uMAP0=E`CvM@Qe^-`(Ba z<>lq!;o;-s_-l#}!9?AJ#~)l5v{hKBF&@$K#H{P_6M zRaMcyzvk!aN=?0fyu0Xnen4Z^|l!7&RRaciTXx zJp#iZacpmv+sp?hh$SZn*V3@eTC~F)cv28j}X6%!B&kQV?jG$JK3 zGAWG|6e9}@0RSrmHCa3njvx&-J3BTA0t7l*I1!H~tU^0E0;XFLC?qDUAFVk{O&S|9 N001rs&^gjU06PoNyxsr+ literal 0 HcmV?d00001 diff --git a/images/flags/er.gif b/images/flags/er.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d4d612c774fd0e2af39995926d21a3c0b8c33fb GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hX~bz*eB|_YI{*XE_{357d0X_DP6BTLW{B!MZRY?0 zy6Y(^N3}eC<0QHb`Po6pE007-CF#rGn!wCTDNk;Q#VfK7| z`MFH@&O-o*0Pb8vDyb?uvO2XpU-2?D_Q6E+9UbjoW3d1LRIf<(p;ccs0961%*ok^> za3QR6snbeIineuFWX#1pUi7&-%4kxThfdREezBl<`psB=irs;JII2%5xM4o^M@sas zMlq~0A^8LV00000EC2ui01yBR000JtK#c0(DH;#RgG5=`Y*;rKU^<0Z8Iq=^z@^nt zj8NzY!d50Y90AAaWq3LYsGN-$QiMDwIS9VK0l}>&D+&Y0$O_8K H3PAun=2?lT literal 0 HcmV?d00001 diff --git a/images/flags/es.gif b/images/flags/es.gif new file mode 100644 index 0000000000000000000000000000000000000000..c27d65e5f1218537ae3dc51733ae628cca95ecc6 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{9Ii6Q&aWzCHD3!^erv?V`Jv#0RD1w{{D9J78d>e z0Q~$+>;M4s008~{ZSwLH{{C9~`$hLlOZr4a^fNR0JU#I8LG<-I{cCIgdV2RnMC@o) z^*cM|008(lHt`J&_VzII^BMU70QB@9`1m&9008;n?pN$nQT$9y^1ZOY&ZyvwQRJse>&Z*q008{} z0RI30A^8LV00000EC2ui01yBR000Jsz@PBvEBZvphLXYfWuBSC0fQ+N0D*v{nE`mS zx5=d9p%AtT1O!r3$s!RG2{aJM3~2~0wOLu@bOIw6cnByb8!b37b9EyjgbEG|E;=?Z zDuIs=k&`(*J1`cGArB8AGa?0JWCR2(EC~r89|R?;Us@U(92^v81U*U(OvN3?B_%z} GK>$1Bgrgn+ literal 0 HcmV?d00001 diff --git a/images/flags/et.gif b/images/flags/et.gif new file mode 100644 index 0000000000000000000000000000000000000000..f77995d0ab47d81355552a534b769575ffe05d15 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5hcf00^#no`Bb77rgPLfgiR8&xyi)FFm_4Oy}0000< z5dHmB^z}RVMn?1V9Q^!CnaZ(wy2}7F0RH}S^jJA*ql7PcT3(xf<>df*t&~QKYx`kh zQQBLHOpS(ke6LM7b* z00000A^8LV00000EC2ui01yBR000JwK$v1klo*YvWJ>XRWip*kWqP^rIJ2K3W4&?= z22Ctxv1oofnP4pdxJ`sOVUTJ~7We?b1u;bs2o4Mwb_)*=0elcDCV_&46NiWZiw6-7 zn1d@gA0IUoHU|eZJvSvK6f7$n4IUyVIUylBARs6xB&r)51-%WwBCjVTBt9d@BMHjO KEX_X8K>#~YC5%M? literal 0 HcmV?d00001 diff --git a/images/flags/europeanunion.gif b/images/flags/europeanunion.gif new file mode 100644 index 0000000000000000000000000000000000000000..28a762a59cae1c775b52f2c26b21ad658632073b GIT binary patch literal 171 zcmZ?wbhEHb6ky8jO69TOFm!wUDVT;A)?!_C{yfy2gaWmCOrR*q$^bR9R{scg(%O@TO|giqzYsR{U*?U8O5D U#0n;zPAS`BTG1CL&&Xg60F0$Rp#T5? literal 0 HcmV?d00001 diff --git a/images/flags/fam.gif b/images/flags/fam.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d528852dc3f4efe6cec2d7f25e4674816af4c7c GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hRNVW-^HgZw`+DR4UETfrREzpag!n;y)AxGU`GuG5 z0Q_s4$@N_T#q;(ub86K9{dc4FD{i6i0O$Y!`2ZM9+WP>!{6yRPS>gWu04n!Og8-@Q zX3_w2;{EtOd&%=?%JpD#+5iBn@?_xt`9y#Kvi8pRX@KVc!SYYc_GI@scgXT(_%w6B z@k@E={?GMu_c?g^J9qp~h{yC7X~pN zixD#c0XPp9k`)&RESV9UC?5|y0u?$m9uW=^5k4p=Eh`))0s?pi8o?w7A0I0{4<#ZZ Q8ygeP&<_tB95+D#J95gS9{>OV literal 0 HcmV?d00001 diff --git a/images/flags/fi.gif b/images/flags/fi.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d3a1918280816780d79856b678e2ebb5bb76d66 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h{r>*P&)WbiyhL-+$q-dTj%J8aF`-s|}I z_)&e-x4+G6k=`<8%JTB_Re;vK!qWHn`hcS2hNk7+;_YFI*-d)X!O7PE0Etd|&|iq! z005lz_4Q+m-1heNN_f-z`}Xr?J8L`~36s^SQy#NO#iq_xR=O^YZfY{QUg-`ug|x z_y7O@A^8LV00000EC2ui01yBR000J%K%G!05U@^_N+NMGkubX74?uZM06bo(7gP9F zQ2?M}m}$A*k1s$F%gUQnOp^O_3LOlK(r9=#2Q3gHAOk1}5E%j!27d<-3l}&82rdo_ ziW4({gOY{_4h|X_2{m(rAU=0C4g9xlX|nrTtN5Iz&ug^#l$OE(bNB!&-(s`+ z(LFiN`_)KB*mQZ%Q&iJjT~wa<0Dk;Y zc*Ul#)rlEBT(J49dzFJDNq-YNXBkUnu=&@Bj*x$;ak%+jh0f%+zRwvM=aiM^)7oiO zk9eKgA^8LV00000EC2ui01yBR000J$z(?UQdmU(uPA1c6hC&BKFOksoERcZ7B*5V$ zJKh992A~F;4XhHmNMt(DWCF6qJg|>Sk$NnA2sb1o7zsBX6(0(Vem5357#J--E-Miw z4kr#J3oHRR7Zf!EYz7P`92^W9o}r_q1S1X{4kH>F0ivW41_ZtV91sS#TV0^KA|kxQ QO&w1X&EkWpbP#0IBkZG(I zI|I#NsOdxu#!OOa0CKWjOjd$nAd$g9!fBicDjy#mKOiFk5j-s+BMm7kHWn5b9v}e@ zc>*B;6BIoe6&NBAmk1038!Vg@9-*U`4gvxi8V@g>D59he4hRSv8xIc-6AD>dprRuq Sq?g4^4GIm@(-YR$K>$0bS(5+& literal 0 HcmV?d00001 diff --git a/images/flags/fm.gif b/images/flags/fm.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f8723b7da96997e52b64aa9a90b112828d0c3e1 GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5hah%8;X0MsK*@LOh2Uethrp>9v;gPl2JAA&LzTSzh z)RVN={QUfetkP|n#`gC1kFwRR$m6EL+`iN1mbcgdG>o~=soV?qm!{D{dLOaapBMH1q}A?D&`J_Xutgouc569)lqu+uPC6(d+B$=jZ3+&CSjG`}^|p^7i)j`uh6!_xJPj z^Z)<S_%x44Qgjl}c&lY3ENVi*#SF`jw zQJXCyqG-9^-Pb2pO=OL2x3{D1Ihy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>J5^c-oz zY4-LpRD8_-{&QQrTlMuMUAjEtsVQ89)Jk>C0BQhQfWTjb&-wW~PP9V+MgUT`Qv3Tx`uafl z_%{9h0C&iDRDRK5zF=0lR${+dLvP7|&3P=PEM>u5ZIH=rkkx{r-tzJkag*0|me@V5 zF#v-AA^8LV00000EC2ui01yBR000Jrz@JcfDPBlOi_-G*IA0);Vj6SERFYJ)YQ<(U z8Vtsk{nc(W2xPNCX*9l22$ga*3^ZuCMA~Rr!T{VS~Ynna}=XVtbp!|Lf{JQmlm=H*ti=+u`)AVSnMi-(+*O z!o=O#-R=JV|NsC0A^8LV00000EC2ui01yBR000GnV5Ce?*=1Q51Qm2lOygk;;}L`x zMcji75JjW$iF_oI&!s{5FcJ_(MDzF@0Y^%qa!GVN)-V7Y{&)%*0&>hYxZMEDxBPL3 z5%_H+P@p93bqfgr0u>A&4+I-^1_%`h1P&1b10D|?7Z)C52rC>24jU5(0STrB78V5p KtO)}NApkqQ-f7za literal 0 HcmV?d00001 diff --git a/images/flags/gd.gif b/images/flags/gd.gif new file mode 100644 index 0000000000000000000000000000000000000000..25ea3123187325ea334cd556a8725f10d6d6f1ab GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`PfMK+EtFuT8_Lk@?HSvIRN(7DqzG={^NFipiU;F zCK;R=^~gEr002p|M#j@PRk>7Pxj^&N8T;Qyd%9}#%_{qI0R7}u^8f(%%UDdOHb$H> zrNlTjrYKjZMEl)f_-;nm-dg?PYZsyy`QAL&008*hHif@+iNkvM(=_#7H|f_=ugXT( z#UD1X3&(aoaIP6(j4a=YRrX{&i@Q&=#15ajd-KmV;m$br(m?svJpG9PimYPY008{} z0RI30A^8LV00000EC2ui01yBR000Jwz@PB9v-m7Vf(65D_-u%1R3!RX1DS*qB?w)< zlQ7Bjh$0qz?3ck literal 0 HcmV?d00001 diff --git a/images/flags/ge.gif b/images/flags/ge.gif new file mode 100644 index 0000000000000000000000000000000000000000..faa7f126a7eeb2cdd66c8e7d7bae6c19288d00a7 GIT binary patch literal 379 zcmV->0fhcXNk%w1VGsZd0M!5h^J`|q!^7$}FY#Me`uh6v*x2;+^!)7X+S=Ow{{HKU zgyQ1j?^;yL%ggeamFZ|=>XMD}^78baoA-%^($doUzr5z==J?*-?}dT$VqNpPw(o#@ z@TQ^D0RZh(PwfE!<4#BNkd42;zv=1e-{0TY*Vp%_r1Pz)_oJZqq@mf@+3(57?L|NN zuB_s9ZTZg1Edqm6FfT(fIiI{QUg={r&g% z_v`EHA^8LV00000EC2ui01yBR000J&4c69K@%@B50D}3d^dxy0jRWQH6{`n86gfi4j~dT9~*=NI5-0gECQAS zEFA+jC@B(&10EO(qZ<$%7Fil-I}9EMun-Xj0Si1QE*y6rAO;Z%ATSZN1Q!k$cK{Et Z1u!cSB1{M>B@`4L9Ss570U{zn06Tokyea?y literal 0 HcmV?d00001 diff --git a/images/flags/gf.gif b/images/flags/gf.gif new file mode 100644 index 0000000000000000000000000000000000000000..43d0b80172e97a08147c64f811ea5c7775ad46fb GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs;a7*ui5eO@$F<*#M13od&TML>hy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>|i_4OqFa&sJ> z9G#v)0Biu0l{WVFGxY!f<>dhXdU{*CTlOj{Xu@dxVPWe408+M7M@KpJ^*#4YO#N$X z04V@3r7r+j002h-3zZ81H~=)MG$f)V{7g(UrZOs{DioO%`8+-NH#hzL001BW{8d%` zQBnN-PxkgJ_c1a2{7PtMHDF#Z_C!QLuR!eYHu>~A^6x4Tmk;vt6k)z%_)}Bx^G5vu z0RI30A^8LV00000EC2ui01yBR000Jqz@PBvD;6I}q{Z@!I3tO~W>cvESUe3gV!gIV z1_LSun`oN=FIY^TOlTHWArNrIdW(k5@j?tT5OQ@f2MZV&4SfTDfdzI42RAY^IDP{< z4iF3!0s=JzA{{0p3JNDVB^;ZcprWLvIUpS?3_B7M7Z;tMpe3TT9>E{OA;lcWE6G6s EI~OyF2LJ#7 literal 0 HcmV?d00001 diff --git a/images/flags/gi.gif b/images/flags/gi.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b1984bc692fea25c149976f81b83eefe4115c6e GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h`FL*WsY>!XF8KKP@?25#^YhgJ0QX)~`D|k9&&~Mc z+9?L`uh9(`||Pe>FMdMX=VCmTk~2$@8aR!Ju%|O>|Rv)6$R*3O1V8X@@io8 z_4VOMJp7c6@l;63$H)7GeDvSm>F4L}<>dDE_T2yg_4W1r{r&g%_w@Ai{QUgy@9+Np z{{R2~A^8LV00000EC2ui01yBR000J$z@D(T*>FIh#e%^wH5$F&&qvMWcs!40Fwi-o zRNvzyQ*667Z!ervAP9#U8fSxSs*eOJq)O;)I6F8H96nb(02me*7!rX6Erf?22`(!o z36CE;5Hvg;9U2lO0W&o_1s@*;F)1$qum}eMBN+r4Fcd5|5eOn82eSbb7K;}G0=y9s Q6U`F_710$p)Hgu@JB@m~0ssI2 literal 0 HcmV?d00001 diff --git a/images/flags/gl.gif b/images/flags/gl.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef445be003587758a9c100f3b8f4ba28d7ecf95e GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5h{JgyUWo7(cUi_n@_4W1b?d|w;bMrJb{QUg;Mn>xD z>gML=`kb8N;^N-k-uIJ}?-CN$*4Ffki~Hf>>;M4d008wnJM;hm`@zBTE-w9UZt)Eb z`v3s^R8{_ylk^`S{7XyU008qD8TlIRt_c0RS`uhztxb4-XQLFAy9W8Y)^` zJuWpLA`k}^93>!Tm@p=s5S}3%0SPt$Fa#4Ms2dv@Ar}GyCLJXtHYgSr2L~A$Hy6qj O%*++fAt5)@K>$0)Ft+3X literal 0 HcmV?d00001 diff --git a/images/flags/gm.gif b/images/flags/gm.gif new file mode 100644 index 0000000000000000000000000000000000000000..6847c5a8c0232d984f7c8569a6f7b89b96736963 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h5tR{Cw^Y_hNB}DU(KIvwPXGl@{oP|@Y?=D{_Vz8K zEdU7Rgsc8MtUN<^^<_5J($?(pt{=R9%q&BwrH{BE81UXb>EsQut;Yv1MHQik(Ziu729_51ku@bd5>o*}!zyZH3;^!M~Kr7~iV z`@;YLA^8LV00000EC2ui01yBR000JuK+|tHq!^E+B~N4wt|z8sdlh&I zV1nSJx|lDwTVlQ2h2E@Ig~5nrKB5=m@qk%g3kD1bE*(A|9w{Io4h}0effX4UA|ePK zeHJw|AP);O7aF2GJR7Ds7^yfqB^(e94JZltZIsglm3;X*=`$a|mSy>dB6#V>6C88zu^&&H-GWYjO`|w8m z@k>OnMEp-r_xCUT>j3rjJ^cJ-ADQ4|UZN~l|!gvlF*DuHr^e2w<21@AEEG#Yme6E6cS92*@l3n(-Of<6(3BsGdK z01J;M1r?G5BoYpb04Wa!CN?Ub7onn0QOco{QUg+`T6xtH1=3N z{{H^@`uYLs0P{sE{&r#j%>aM*bo5g+`)pYGXinn*0Nnrpnf#Fa)@c0_0R8%J@IfCP z?Ev#+Nc3n-{_Tht`2*d*sr$8G{Nri;wS@lZaLKWk0Pz5I_G$i;g8a&V@kS)|Y*74$ zcktZGA^8LV00000EC2ui01yBR000Jpz?Nlb@fbag24abz#86OyR3aG+L?TDd^W%6q zm@uZ3$pFqWmF@uoMM#8Fps=}&dL~uP_J~B{0T2at1}`QFFe@o=a)KKp1_myNJ2W$Z zf`kS<5GM&fjB|Aw1|J_R1t&jaWM*do46(5{I9Co@6BQK)yb8V)N=p>OA;k;F$Uy)* Dz3QR) literal 0 HcmV?d00001 diff --git a/images/flags/gq.gif b/images/flags/gq.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b4e0cc41ecc29ca33c6780e4d3334123a4aae24 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hgTMYUq%n5LcID;e`TO}0hyB~y+1XT70BGp}efw#` zX^g`9);c;~yk7VB_f51-;%sd5^Yi)k_Ls{20EPenNC2q-07R`s0CxcL_3{8@0P^nc zQ?^t0`S-j40N!F^-AYQ*EG+r(xBUG4)2@!#O!e!cz8 zA0Cg&>FM|To~6)`!;9ZrTfW1<-{s$-(EY{8$%?;)^!M`gF*dl3;n zehU*4oDwT5Dk>YJ8wQIqARr_RtRW#fEiDW`2rv-0A0ILYyd@%R1*_B3)xyo}qO|0?#_IX``tI=dzRBve!R7Gq z^7i)l@$&REUCfQ5+v)A~;pFX!pW6#P!~iM0f|}g`0GExV;q>(NO>)(NgUjvj_M5HX zdz9KOSIL#A-T)c2xy9!I0E*`6^7#4u_xSts_4?!H@B%f$;^N}`{QS4X=g-&gSa!$? zG@;Vg-SYJJy~yXt%GLlFq1oT@=<4&Tu*dA~^78Ze2O+8G=k5S}K;&nLhPNH9Mi1~aOXNQ>;tg^K!o zy} OO#v0p&mq#%K>#}%6u74V literal 0 HcmV?d00001 diff --git a/images/flags/gs.gif b/images/flags/gs.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccc96ec0093b08b01c9324d90d77d962f297755d GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h#>Uv%tF_jJjVUR4c6Frd>+Sq$P!khzY;2-MM2%x( zpgTK-N=lKOAUxya>SqWx001uP%+g(5obhdC000!HeVPCOQ{{YoFff0MVvA5vlr}Yi ziH5ZE^YlhWeEpe$=UG|P&Z7Bwao*qN_(R_cf=VV}aquXVN$HH7Mwx{F#FkLGXerQFcmx-4h0Af06z@`JsBAuD>oY$ z9Vjg)1wRl78Vm_&mjfdqDlCnkqNErD0|X=m00^E6qiU}M2fe)*w_9DUX_v2_O%y-N J%+1R|06RkFo6i6M literal 0 HcmV?d00001 diff --git a/images/flags/gt.gif b/images/flags/gt.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e94d1dda0ab4a00cf6ce142d317cb66ee3eb114 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h@$~p=rThS0|Aw~zRF?YyHudc9^y=#B07&=%1Lj$o z_fwVj03`2ClKOhD{q^ z-S_wRA^8LV00000EC2ui01yBR000J)K$~D_sU42ASwW>@s04#3NTSi`bd%92gNr~Z zfy~8v>H$h6nZi2=h&C5pc?a;wK8u6^B+A?_b2%6v9~F5PAQ>A36FoaQKNuAiF)t_< z4jUv56OTVU1~DNVEGP&LBm|t0JP!sO933X66sjcvpAW7byeTLJU?VsaKe+}bCMhXC U2ulnRD=rWaFfAx3KG{J4J1s%9mH+?% literal 0 HcmV?d00001 diff --git a/images/flags/gu.gif b/images/flags/gu.gif new file mode 100644 index 0000000000000000000000000000000000000000..eafef683d5f0280f58de5bda5d17a9f6766e1b72 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hLu2wfUGmw{){dk8VSf70S6`E-|AU(R`T+pn0086w z0B(u;VSV*ndHHFC_fc>2?EnC4hWt!y^>T~)W`g^3js1zA{aktVewF-slKS)j09khQ zcaZ*7bM|(R`EZK;R(1DQbMsMf_ET{3dXxU2xQXOyYh`5VW`Ossfq&m)W}v!{w85sr zd7y5H_s4sm-DX2_jQOBSd(Kv6bdLSnyh6udh2m{-jf1Iwb*Wi)_(x~-_W%I#007$n z0R0I7A^8LV00000EC2ui01yBR000J$z@JcvDDrq3O|J)m{0z{+z+yQZFd5Ip|${z=jq{PzuC=Q~5-0B`hi(b~_At1AP$`Hv$4G4-z{77YPU! z3yTCQCpZO?00A2bJO`Q$GdVRflK}xCKBW|AIvoWt0HLlUJ{njaF$)e33=9_=AtMjH QOHB|8&mca zFyyoV_4Onfof$`~LHzt6FQ_jw zrZOL(AN*Na_Vz^e^*<4h0FKKgkj*RpcXwN^Q2P2@{7+C2mk;%Jc8zj#{Az0UZ*Tno z0RI30A^8LV00000EC2ui01yBR000Jqz@PBv%NQj{k7vRBMV_^UX8L&C3I$5Q$>F>{ ztJSDPGM!Lb?kfZym(L7Xz^4Nsa38lB#bCtdI{*L&1_l)s3N$ko78No+J$45U5FIQ7 zDJ~5v9RfZ)2L~7vmYA9iu_0t6dgAvPBml$9+5v;@M!AjQT4$jCte EJ2d&0^8f$< literal 0 HcmV?d00001 diff --git a/images/flags/gy.gif b/images/flags/gy.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cb4cd71d6fd05fa1d42a8afbfc3d25d4512a43d GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h0B!)EnQ->^IW?y=)#$(Z`^x}K0QyKs$J@E-_10Ck zRFQ`}hRlg$zhl}@PxkqF{&#ow_ALHaR{$~q_V%iD!*>Rh2K;Jj6P6VE`dV^nM7Byu z^YyC4*j*zfYV=QR4sr<|QTZR8-|O zG|T`1^?G{x(b3!h0Pq<)OKR)9c8u3q0?Lk55MMdyoVe2?J@L5^%W@he1Mf7)f?Kn8^N=f7&AM$Ey`@g^S z;opdmE|u59$9OzQ z34=fevWx;4&bCXs%n}pUtb;~`7QYiX(O~6jE&wA4Di#z!8VMgf1QRj@H98n79ubEd zA1Njv1PuT&lO7TZJqIhA9UnFT0xc+_G^7V5CLJRq1_1~Our~!64pwb193eOs5ef)>y2ws2+)GW3#LM5@q^ivc z3EsHAA^8LV00000EC2ui01yBR000J;K!R+LNDNZ5ijpy6EEc<5>(xW)0Fuy!=U5dM zz5@;dG2Kc9&Ex{W1QrQe28YWWU;)a6gaLFGEGH@g0xmx>6dxZL77-B(H3kPCM3J(k+1vUs2B&Z?{ARY}Qx>_DQ Yq5-4|5jGYZx(rTFPY>D;4ckEgI~~rLTmS$7 literal 0 HcmV?d00001 diff --git a/images/flags/hn.gif b/images/flags/hn.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c4ffe8e84324c2ea40f2a50e6e0ab391b0f77a4 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h{{H^N#KdHN(O7iOJzc|ei`VMx^A9$%dy?7!08#)1 znqGO(CP}>X_4TB);s6q%=H}*wmCI^_)BpgALu1Ik$m;m`_^!I)y2a@L0CTm$sZ_G1Q!otn%E>FI>#O60vzkrt9J5igp zzvo3;r5ixGm#E+K^YhQw@k(dLNN346Sj6My@y5{a`T6<${QQBH*1*c^!OHB#&+fCn z;s5}9A^8LV00000EC2ui01yBR000Jzz=u$%C{B*YpYpM4BA$hUL?T!W1{nonVI7n_ zGzy_+LeWAI*{yft?JAg53k15PTo8bs1moav78?c)gaLT~IUEKY4h|MJF%6N1h&d!1 zfEFD(1~DHE0cj_1DJdEnJ{K1wBR(t>0%Bw+3=A(X2e~K-6I5JY9y1~$1OzH72|p7` N8Oi__SwdDR?U1Oct<>lpbsoy$<%>4ZP`*n40r`}bR()Ttt z`anPc9HdB%(f@9$KW)_t+!_C!SY zNl5@y!TbCB`~3U-OH21xR{#*5_*`5{daY=p+i9fUY^2*!lhgI}_5A<<`OM7p^z{Ax z{r>;}A^8LV00000EC2ui01yBR000Jwz@PB9D;5n%Bn0vcIG-3yqv3GSWXym>Qd(3B zw*qIQNVKxt#Ud8s@W=@h3*!5He3wJ}EjZ|UIuvzyd2Smd0)L5ucrY(IZzKsRJpuwf z6fO}NHUuIyWi=inBNithnw=sKDmf^l7O@&23@a-G6&W}-6RQsz8acEK0L1_u9Wyfs K2q4ZNK>$19yrlgA literal 0 HcmV?d00001 diff --git a/images/flags/ht.gif b/images/flags/ht.gif new file mode 100644 index 0000000000000000000000000000000000000000..059604ab20eb6f3a5063c0321ae2e8b1badc4a67 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h_eVDX5y0py7K@tXbA{g4008b+M)GJ`1187oMl)`K z-2el)YjMhyqv%|5)@6Cx>Od~!002^H)9y?={9H`*b7Wm(#C?w9`%*&y9K`lHCw+s| zWoyXG004!R;`1vPdW+rw0Iq6%+Dl^4TkZPe^MD(g2S=`tUA zis1bK0C;`T3l*p0EmYUr3G9Lf{dG&c}c8K5aU{L*g zZ^ZxrA^8LV00000EC2ui01yBR000JtK!i}3$piw6WM~;eG@dltVBqmwKsy01**8HYX?(2@onPECK=~2^|p?qNJv%sw5;3Kd%S7JvIiTq@}o?5e3G_9myR( H%s~J<4X=$u literal 0 HcmV?d00001 diff --git a/images/flags/hu.gif b/images/flags/hu.gif new file mode 100644 index 0000000000000000000000000000000000000000..6142d86817c12d74b84a4b19d7f60045bc0dfbd8 GIT binary patch literal 357 zcmV-r0h<0tNk%w1VGsZd0M!5hqT^01W^xjxG*;4(N1r^YimXo<#s90K5PIJ(xW@mOAQtd$j-n05|~QOiVA4FDi~I zB#R{0Dk>j`9~6NU-aAHk%VprRSYEHkW3d1LYzG;FX-Onn zhgF6J3W;1D7W4HDkIUyyCpYMsOugL>bxM^~Bsx4g3U+yWeSd*G5IBW-G<<%5f)Efq z3IsJV5ik`68XFuQBOeYoKLi1tpP{3r4h{{e0RaZLGo2KlHx08Gz!Jg?#6QNzKS2OH D+N+ap literal 0 HcmV?d00001 diff --git a/images/flags/id.gif b/images/flags/id.gif new file mode 100644 index 0000000000000000000000000000000000000000..865161b0307cfd1609732950cba4d9a6c7999aa3 GIT binary patch literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h@$vERqMhVoS?qdq@s5YO008Rh>gML=>64A?o|*Eh zrs7RQ+%+oWP)6leP3C4^%m4uEY-Gd$0Mh^f-T(mF008J=SL0Jj?SOgeXkX=AQ{hNG z;Nal={QUj>{p@pV112#cW>!lRp)AA@TZ~kuBz>JZt9nj?3$I| zJu=`!IOdLs@QQ=*jD^)03-0dj`1ttt_V(S~-QNQM`}_O#_4WGt`tfFwS*DGCZG0RagtD+mZL2{IlY9UVA2 zJTyKvIXgW+J0LigmzkTLpFceuJRLfinw*|L002K6KBcCovp+vJIXwU~#0CZj2Ou0A IHqAi*JCOOXTL1t6 literal 0 HcmV?d00001 diff --git a/images/flags/ie.gif b/images/flags/ie.gif new file mode 100644 index 0000000000000000000000000000000000000000..506ad285906c72324b51a6d2e9e067177444dbb0 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h?e*;dhXCjR0OsfB^nWvY$$IE^k-~a$hv`X}aJLBWy`k7kwdM5alQDVPh_<}cg z$alWJu+Y%Z_Ixbx`0)4d=;7bnSiD&Ei9hrp06?xk0FeOr`1sub0Qvd(_V)Jr`uhC* z{P*|wA^8LV00000EC2ui01yBR000J%KwMxL7#Ihqnay^&U;>3`%h&1nd_5FOr4m3_ z3Qf#v=xtaOSj1Zhhho0+ZbSH_)`1o+Gy=$TG9L~JHC_*VB>+7;IX^OkASMD03nL{S z0E|C83<)406eN_FHxrFK6$~H;2Lz%k9ybsZn-!@C85trZ5?~q#w6zQb1R^3j4H6O@ R94;>}78WifBs$hX06RAOp?v@V literal 0 HcmV?d00001 diff --git a/images/flags/il.gif b/images/flags/il.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8483ae52f057c8131c67501b466bd5bdd3e46fd GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h&d$z)rTd+o`NG1&dY<`ek@k(P{eGhQTZQw1l=tW7 z=jG+)m$UxY*Vn(lzst+Z)6>(tySwr6@#Ev;)z#I-#l^k7z2V{E$H&KTkNS$B`(=yv z-{0Tv?)r0>_jQ{1{rvrQj`wtw`-Y$OgPHn>pZZ~l^#@1kYm52m>Gq1J`T!;000706 ztNQZt^z`-h>FN0U`}_F#_}kmt`T6FNFb z{r>*`A^8LV00000EC2ui01yBR000Jyz@AX3SS%(N&TQ78Ku(Nk)L>Al0tW)&!|MIM zKc9~mtI=dOoDJapig}vSIlaR@6mAehL=tRNI6FE!7y?`uh6v^7Hz%001}u^YiprrdUp*P5>YP`}_P! zpGo!Je*W#Gp|je6zJUGUZGV!-`~3Uou>kk60Pv&$_RcK)-)V!4z4y>D`P4o9*i7{F z_5Z&BA^8LV00000EC2ui01yBR000Jvz@JbEDVj_+h2nO5{65f+!y(IMG6aDD_4?|E8002HHJ`#B&EQtsfIthX(C54AHEF=^& zGZsFBkrE6O1_lEI5h(#GEe#DFDIlMsq^78<9UTEH3^5uS8ylgc5v2jQ3?arM$S2Am J%qz}806T|Gt@i)` literal 0 HcmV?d00001 diff --git a/images/flags/io.gif b/images/flags/io.gif new file mode 100644 index 0000000000000000000000000000000000000000..de7e7ab385eecd5e55ff60cc67e06604c2ca7ead GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5hk9Dg60*GdAx`nK8)1|q)z}>aD+IFN@_tw~um%5oQ zUH}I&%uGl6=jQ+bZe3-z{imduwur24O~l6HsI1iay1I#n!|l>Z002&Gn@c|@i`(4n z^4;S5oS8~etev6F)Ya=)V6#I@sovo3?bO?TsAAjG&gr(ks>Ph* z!_4l?IpEIRTSuAQ$wl4Gdcnoo*L{uP;PFveu(G9OaGPHBprQ3&U-$C&tbwT4*z2iH zbD59BA^8LV00000EC2ui01yBR000J(KpG&RP!KhNfWxs^I$)d~V#R5E3ZO!S6`4_V z6-cK8$?*h&N9lkYV0?&1C5Jd!D3kT!5c&K_Dg*>6Efx~ T6b2F>xK2wL)Ya4r*g*h0BUh+0 literal 0 HcmV?d00001 diff --git a/images/flags/iq.gif b/images/flags/iq.gif new file mode 100644 index 0000000000000000000000000000000000000000..c34fe3c44ac029c96bbc44f4fd1a814b8235902e GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h>hlr5TwF#*M)d#ytK6*S_2zwh zeZJzt{9|KdV`Mx$JnH}e6ciNp`uTy#gZE5K{cCIcMMeL6diyvyTU%SS;kN#Ec2ZJP z{fdhD{rvodg~H~=oYJ26adPhV@ia6vz2m)XX>5&)jg`-q_vX5cu>1kC^SPodc962ANhPDA|fCG0R(s%EC>rXEG#VxED|S$cs&RS z2`(fg0G*SC0x~8hIynjoHZ?CLB@GHcKMe*B4kH4$5V^Smunia(8yg10v?I2>u*u5H Hut5Mj5z(S@ literal 0 HcmV?d00001 diff --git a/images/flags/ir.gif b/images/flags/ir.gif new file mode 100644 index 0000000000000000000000000000000000000000..156040fc578e6a7a1bc2399c40523cfa7f41e945 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h>Hq-wmX^8Wx%8{60E7U`<;$nnr{(44*Y4L!v`WnA z%<_bU{AFhI#l`X!754V_V!mSfy1D>&0Q566089W}yj=SA_It{E0Av9A)YSS!MEYA> zQn*oT!fQOPJaWZz`L(wAP*C$NE%!u3^(7_sJ3I0K0Q&m+^Yioe%+28d0Qdj^`J$q; z-?XpZu|K0fcgT10rKMB0Q&+lI_wn*Es4)09H~Bm~{N?5Q`}_6v_1ypf{QUd?i2(HU z^!@$)A^8LV00000EC2ui01yBR000Jyz@AV@AV`i9j8aLsTwt)zr_+HzDl=Jv(z{%- z98MzP@ziQtfdV05BU%cV!cd^Ue)u1cX90m|4-Yy%ItO`sIRPvY0fIg#g?NZ3CkqQS zgD5CI2Mah68K5931EdWx4Fd}+3>q3YHWMNwBo4L?6FaOM8zH_UBPAshvLZVs$R+^G M%PP()JJCS^JK%<H%{6AP`uh4~io)bW zLI40qah1w#lgUwhyjX(1-Y6#{SfxyOxh`R>^78WUd3Y&Zs6KA9003rQhr$2=S>ro8 zL2b=SW9KbF%;ngZTLPLvXX(003%_#`gC1`}_Mq zZ?Urg0OwX!>R49iO-$wGMR}ioeJSROX0EIFs6(2AHF(e8b8#)k^3NAl< z1uP_igM|PT05Svy84m~wCp8x$2NM$(B?|-|4>LR)J*%x277-{5CRr*xFFg-AI1)4^ TC@l+20RuM!8r2Ke*g*h0+u4{_ literal 0 HcmV?d00001 diff --git a/images/flags/it.gif b/images/flags/it.gif new file mode 100644 index 0000000000000000000000000000000000000000..d79e90e99e9cd5e9603313cd6a840bdf23abd8f2 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h_e@Lxg#hB>;@;lg<^TZl6BGGWRrK`q^*uf8008nX zE?Bx*09OF<4GsSO{#?CW^8f%tuR>I|RRDbed&+wNWdKyURP`k#^BEaWwod?d0P`|3 z-~a#si2%aF!uK&TNwi7yA0PHBD|yIybjEb$<>dfx005By^foqFyjac6&GsxT$jHb` zvrG6lH#(|1Xu@dvTwL=tHTFbAV83D8+uQZ^_1ypf{r&y>`}_R-{PydN zd@J3P04Wauo4O>(*?IKSABDqIg2{K~!vN>OBme4q?$1tHSy<-VS(SxFl8t()nOR+_ z82|tPA^8LV00000EC2ui01yBR000JxKu0YFC>9gQ*XA2tx8hJl#0*Mp>0Sg0!8Ut&I4@2FfukLorfVND;ysdus$jd6&pV<1`G%tV`Ly8Bp4YsKNA-K63NLT L%*+xME({S;F)=14CLS9-epOaZVqkDu>-d|2;g6S>^(yPXxw#C% z48dE2V|K+PCnx*(_+)2iU%PfqW03}fJ3~oHiL0w?aB%Q%7Z<77(tm)Ur-#9U;cr+N zgEqsbPoFMcy!f+k;)|T5KXd2*NlS|e4?lnYyy;5Qf3s%Y4fa}6U9C7@@t2F|p9vH8 z#KcUQ9m|lwur<@(V3|SEzNA0?{$IX+wODSE5FK4vS^4?%=N~_QeETpBlj-E-sawYi(g7&(0-fEUvB4T4f<;-Nn_YF|o2; zPR>G=U0K|KnT=D;P)JBiLV{D4T~W`7mzRf!dD(JPQ(0DSeSPjD!ot!gWKYRDGFSru D;P{a* literal 0 HcmV?d00001 diff --git a/images/flags/jp.gif b/images/flags/jp.gif new file mode 100644 index 0000000000000000000000000000000000000000..444c1d05c59ed6a43e63fc7cc7b809f47422ccca GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h`8zxI_V)Pr`0wxU)6>)K?d|L9>-R4&_%=4><>lAc z*XQTw_9`mr>FM3w-PP6A+uPgwMn>P?-}p5(_A4v+G&KBGRoU6u`8+(~%`awbW*4FfWef0J9{i>?b(b4r)RrXt3`~3U#lau|syY;)f{r&#= zmX-Riul(uh`+0f%et-M>`}Fkm@$vD`&(Hb!`TF|$_xJbw{QUj>{qpki^Yiom{{Hp# z_5c6>A^8LV00000EC2ui01yBR000JyK%Y>^ zZ-qQvx?SNNBcTYxnl_dwY83H$CD#LiO|W?MqSQ008AJGra%+Sy)(L zKtS_hW#AVdH?TYMU14m)ZE#IZ=jh_q*T3uM=grE>+tbJ_q%`yK@!;9cQBhGDp&(aW zTmS$7A^8LV00000EC2ui01yBR000Jsz@KnPEDA};in72gNLW1HQS$WNE|=TG!hQU1 zqmx*N_}3(3k0 GK>$0)Ly?03 literal 0 HcmV?d00001 diff --git a/images/flags/kg.gif b/images/flags/kg.gif new file mode 100644 index 0000000000000000000000000000000000000000..72a4d412c805708b5f27c5a38622a46e86a14cad GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h_@ztrYismlWAm3S>^nQ`D=X?MALtqy`N~7;BO~Mh z0Q7}9_QNy!)z^Sy}N#MfiJr@?Bl&Ha7HBRP8Y_^G{Frd3otEG4X{f_I*qA zRZ;RtLgy?j^jT5wKsN4QBk(~w_MSWUl1B1aSopv?^tUSXQ&aVKO6@otQ-kt?Kxm(j!%+|jWD|880;3=hGc0v?6DBMW3lJ+U92_?)1pojJg)9p* zFDNT9Iw}edk_CkpGc_D22{8%@3J9SS4-8^tW;PMGBO^TlAXYzF9ykXF1UWe*BmqiH NOc~A@0nyPx06Qe4k+A>( literal 0 HcmV?d00001 diff --git a/images/flags/ki.gif b/images/flags/ki.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a0751a221904a25343137a7a4a5aef71e112f5e GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h@rQbxtlas-yX9F&_U_%w)9PDz%0^j|=-Axod}+hX z=jr9+wZiA)NjCP*$?R@k%m4sugwX&3cIsqPe3aPF*X>qgj_Sf#^yO0uE0F15PK%z~ z-Z&)b-BpmK;Bbl4VSUc>-FyH5SHA!N*4*%_xZmPJFEmV*2Fo_ z*3sn7((l~9Q)#JVahYm_&5fD6=@ literal 0 HcmV?d00001 diff --git a/images/flags/km.gif b/images/flags/km.gif new file mode 100644 index 0000000000000000000000000000000000000000..5859595e809b6e8a98704cc408a7267920ad3e80 GIT binary patch literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h01oTx)d2YTQ~LV)mxr|gYXJ84_5A#D>GSE^G#2{$ zYS`=8Xr1@rNGhkd+*cC>-6gY0NwH0 z003D4A^8LV00000EC2ui01yBR000Jqz+1paEE)sIKtVU7P!3SVWh$sDAC{b~gnq9G%<3I~Ib&TxZo_Wz4GoNldUwcoQc+PVr+09H^hX}@W4 z$7M{kOuDfv^id$~I{@0++TY*cX=h@foQj5lTxDTNZ)#U`Z$igy0G*nShJt3@0001q z00000A^8LV00000EC2ui01yBR000J$K#gzcix?9~4dBO&K%OUyg~VzZYz-9Z=Ys^k zsf(+i7|j@BxE&= zfD;Y}2OkwG5e67L6dfQd5*3^uo+`r_g2Jw5vA>G4cV05t6HJ39bN@c<6qBz6D!#KiMNMeIXE04C?|QdIlO%H{9> z07CBU008xJbKL0q_H}mli;Lpz{`=nD`qR_j>ip&>-Kkf?qp>#egEhb6n~@L!P)=#kB|46ne}gQ`^d<%&G+_& zgz!;PA^8LV00000EC2ui01yBR000Jyz#3&pF&GI*f<(fR;5N{WXj&?LJ_tlX2FuMr zJ5OM&P-K258UXfsX&j7@#S%%e28qiW#EbECBM)_V2?7lO9Udbj9wZI{c6b7Yh&vTN z6(I}{gp)QdhzAE6438<20yZcuh#(3-4<{E55iTtQCMJ44S6EsF1uDV|#5YPz91su~ M%quGs&?`XzJM&4QW&i*H literal 0 HcmV?d00001 diff --git a/images/flags/kr.gif b/images/flags/kr.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cddbe75b3087d8abe0be4845b8339b490d1f713 GIT binary patch literal 385 zcmV-{0e=2RNk%w1VGsZd0M!5hbeiF&rli!=)A@*pe0+RUYQ_6SMf>yfXlG~P=jHkN z`NYJ;-sIx-_4V1=+U@f4{Mgv(>FJ7!ipSLL%F4>_4Co$*W>Bw*WcaQ;os%!>*ww5^7Q%Z@$l2x+34={uCTDs*VScizN*CV-{0TH zd6Uc0&-1ah(9q5D_4W1i^R=DBqpaE5+}zL8(a+V>{{H^`{r&Xx^z!oZ_xJbw{QU9v z_5c6>A^8LV00000EC2ui01yBR000J_K%Y?9={z1K%}De~FnqtCW1-9CdcEC-qToG$ z5ecD|gFqAx1i`@z`EU*i>M$@E20IjD(Ez=15iu`z6%_*-4mu4O9XMA#GlePzEj&6I z4IU3y5i%#DGxmY1OX%fq5vlW92*%oB|R(z2m(A46FV>*2oyUO8a)aN fC=on74Gj?iC_BeXO$-bnAQ&bdDK-`sEMJYmMn>ov z8Bb47;^E>l>J20u+s5T1;X@Z*S%*UzWbssOwF!_RG6&GQb!{>9vG+m7@|Vx4Va?&x;h|s8^>EksaoG6! z)kD0~h_BI+aM9+z*OX+^^?1j!Y1aFT%dCRUyWhV6pVFt_$~foGMu({bf!E<)&gZJh zcmu!xA^8LV00000EC2ui01yBR000J)z~48ZQ0cPx# literal 0 HcmV?d00001 diff --git a/images/flags/la.gif b/images/flags/la.gif new file mode 100644 index 0000000000000000000000000000000000000000..d14cf4d82c62f716ee124e1b2afbf8bd79a41c0f GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h@;N!BW|MW1+gp6p`T6;WLw!AE%7&og%+>Dva&z|p z05o36ggkg`i`%h(sQO}J`dwX}Ta4QP0A+*K004**002pC%;o9xEm*|-Yio;0fSXi= zWQ5rMdV2LlMC||ou5z0I7PwV;)8qgE_fk^#O-=Y#SMe_|03*I%f!Fu<_ic#Qe>8A$ zjoVOl&P#I9?eO<~n&4@O+E8@RvUs17PJ)$HiA-?KpJS82kg@FV_MTsmO#nY_15fb) z0Q~>}A^8LV00000EC2ui01yBR000Jyz@KoaC>DLl&*#@^b`pt9=J9}-NTp9NN27s2 zfxs>j*=%Zo3hK~m$R+{=Vr8it29&j%!+{Y97c&NfA`~G9G8_W}e*`KM3kC}=hA|u| z0|Ppa7ZwW(7&n!eA}<_r1D_Ze78E=VIAb<78U+luEG#t@3RNaoB_19C#3#lQNIps* MBh4cc(9uBvJEn@1%m4rY literal 0 HcmV?d00001 diff --git a/images/flags/lb.gif b/images/flags/lb.gif new file mode 100644 index 0000000000000000000000000000000000000000..003d83af5e0ac0bb96a30dfa4932a43915e3fba6 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hD%NwCGBEU>P{CMGEg1KS zeDQ2t^78WW^z_5R!lKNh@M2NS003L0TlxC>(*OYVfpqR(PCb)7+W-Kx0092|{q0*y z=0r06{r$uM0O>_Cz5oD2mPARKO855m_4W1hdTsvx{`2?sg}Q{x-^=AcF8%xb?N~@C}y*Yt0X(b7Px_hsW==K zScqkVAP_zl5J1Dut#+tdU@{^ZNDhF>)amse5+XJyb$5AuelQX`AtEVucLe}_JvR~( zAr~Pu4F(Jbl9e|TCjl214*@(3p9K^p8!TlnA1VR@3Arsk6jxbevSu$FDk{865gr~O M%o)xZKG8t{JI9i#CjbBd literal 0 HcmV?d00001 diff --git a/images/flags/lc.gif b/images/flags/lc.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5fe5bffd2017b1a599d94b4fd5745098fb0e845 GIT binary patch literal 259 zcmV+e0sQ_)Nk%w1VGsZd0K@-TAu z@%Gn5Hf!~fxAkFQm2{o+Dq`bplkGn{JYR_JahUI(!uQRgGWYE*V~z4EUfn8R;k)Ab zD`W7m!s?EOgeqX$A^8LV00000EC2ui01yBR000GmAO?&;VKN1yG8_X0a8NbdhBOVL zLocom1j1wRpil(7Kn@{Dcsz*+MWH~xbchE*A|YTR3d}%LsOSWU0Jk&1U?vZ;S@1|W zEEY#%!l%dubPWa<7X||W695z$1q}iN3LOWN2OR~85g80V2n(K{3K61=DjXaTs2Uj` J8Lg`!06T6AWa9t; literal 0 HcmV?d00001 diff --git a/images/flags/li.gif b/images/flags/li.gif new file mode 100644 index 0000000000000000000000000000000000000000..713c58e1df193b0256be462a3437c95af926e600 GIT binary patch literal 359 zcmV-t0hssmzVQaqZh z!vGnld1aW&008t@L+xl)DF~@ zSCHT;5Aa4W>|sowk+<${TPX`+X;O^vO*e2`laHREMR3Hv!KX%Z$msw8@N{DP;A8aM zX8-^TA^8LV00000EC2ui01yBR000Jrz=d$QAQ+E?OlA>Ms8Tt_X2aohIv2n)#4`Cr zE5OHtlNd0c?Wre<+{WcI#k160vSM8vL!sa@Gcf~$0}O^XEi@n?3_m*-BO?wDH8n3K zB?1BvH4O(AFbD|=0R;sUnh-7l6$d1uq^78wE+_@9JTfv5FrlykrMCye4aLR{70Jp$ F06Pnflbiqm literal 0 HcmV?d00001 diff --git a/images/flags/lk.gif b/images/flags/lk.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b3ee7f572ddb8199166f65e8803233cdaebca1b GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5h{+C$v(@WyB7rACo`;AEGyd>$jN1;4ZaHnYW)E}!% zW?Y+G^2j5eHA(i>Q0~Vy_uOQ;Wiqo`Z25*h^Up)ccqB}aNb$@)o-{hmhC;)6bf-mJ z#BUqfm@L|xL{*nm?Y}d(V|1=kX0cgR>%uPi*;JV=LjIy<_SHC}K|J~2a`o9;{gO~b zj6~k2Kv9%W%7Rquz-MNmW!9KB$9p@^f)K4vPsoC6u24#^QeDi1F3^N5-J&1%*HqJz zNBP-TA^8LV00000EC2ui01yBR000J-z@P9}>Ny;N0EKe7JRUy;;&f8QG@+10A{zKQ zKiL8RfM{-9MQ$?~?ZV@-L}7q=JQ>`fQW67L5OW47AT~1*dp!#uECeee3Md&M1qnJ0 z6%Gq81Oz<_8$Jx93>YRH0Us6w6Al{(12i2GJf^5GEfW&~BLfY;CKwSZ9274Wx&baD X2f!vN5j9Ls4Oz$U literal 0 HcmV?d00001 diff --git a/images/flags/lr.gif b/images/flags/lr.gif new file mode 100644 index 0000000000000000000000000000000000000000..435af9e506f70a8cc09022ae3029373facb3ee0c GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h;Ami@006B30N!R@(LFP>wA0{cU&H_a-eX$bURAaL z0L}mag@?Gl00885ZR2ri;caExT2b3qO`HG#003CoRZC`RrPfSB{{H^`{r&Xx^zZNW z_xJk9006lF0M}Vh++0%OY-8tyeW0Po+gVT3L^<{6<@f99*ic8`Z)VtERnRakXhcp5e|E(;u`37noK1Oy)wCUthEk~66;OHB$20>uHx6B9o_ GK>$0mai$so literal 0 HcmV?d00001 diff --git a/images/flags/ls.gif b/images/flags/ls.gif new file mode 100644 index 0000000000000000000000000000000000000000..427ae957e508a6c90df90c68f2320b119bf372e7 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h<>loTn-%~u03Dnr01s_coyhC#>_wKu-`(3QhPvwU z^F*&lB9T_py_GPCz4`h1JF7bYL;y65zx(<2`1bNAe4D>{miq3 z-_Wu>lENi^wBggYHmEi;rZV;K<^25nD1x_as?K<^(Hx*0%H8JxF@pd>jnU!i)xevM zzS{Bh_0hVG_wwpkqRl_4Nx00`OQv)D`};(Zy>FefA)7Sq=GVrmdHehO>FMeG{QT|h z?fUxqA^8LV00000EC2ui01yBR000J#K%dZOFz|SQBw{&J`93faXQa{edb{7FRUr5% zuMMY))hZ4N8^O@PSTMEn1Jy~8Yyw1swb43i7#0Q1BE`QJsoDir+URq$bA z_uD)C=X3hyYxl|k{nP;W-&O5BJ%l;7{1gcNpq%=3ZTkB9`1tq$YVH6;-d(c!gv9#*g7BZ7tSf@AJVX6BGjjJwH7-dJBDjfrEu6Jso$1Tgt5T@ literal 0 HcmV?d00001 diff --git a/images/flags/lv.gif b/images/flags/lv.gif new file mode 100644 index 0000000000000000000000000000000000000000..17e71b7eb6bb2dc4f4e63837cd70be048d08f1a1 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hu0lhpG&H(YRP5Q=oE#jaGBUzzYjgkrX8-{F{QR*- zMp^&>@!{dhdwRxlbG1=Xtv)`;o}RKwN~JC?>B`FV_4P>r0O{7&zFb^^008>>`uOXBfMEz^Yiom{{EO06y@dR=+o2W&(EqnJnGli#(8&0BdeM3Si~wcH zWdK_MOTJ4`!BBF|a&F9S0A&DS#$i#vQ6;V=O}|YrvoJcgI$_CS08#)|!&QRRg8)SU z089W*z)n}gS2eUXe$#$x%4$KkK_IIjJ+wVHwKqAlIWMsNmIg8Xv}C?!dXPQLsh_4fYX3GxH~nqHaE66Nxn%-yh~lg zT>zN?A^8LV00000EC2ui01yBR000Juz@Jb!7$g#cB9w9}<=Yc$F ziVG}|X;27;)=uKZg;V4P1KlcBD2pHH0x!=EIXV?6G7AF;eR61lgA)Z912JSBb1oJi zjUyr)2@W%q1ePBsDib3BB%BW&JfWAQrT_pY8vP*D9* zQS~Jy`a(kaR8;@^dKPd4Gs57O6~vv^*%l3008@8Ve~pW`bI|jL`3=k0QLX? z@&Ew-Sy}1;0RMY?^dBGd85#F5F#Kw2{AOnQU0vb;0Q^f!`$|dqJU#O=GW}Fk-v9vl zIy(M&dHO#;`B+%Ga_{m6nG9Rd>Ax1Hw1McAs2WLHYgY` z6f`t43y=joCK@A_FD-PPAq530EE*&kr2`0$sSyzdEE`%}2@)6r6c;-x1~NTMO->#j N6%{5XEIrae06XmGiQoVL literal 0 HcmV?d00001 diff --git a/images/flags/mc.gif b/images/flags/mc.gif new file mode 100644 index 0000000000000000000000000000000000000000..02a7c8e1bdcd38bf6ce52dc5662d1d75026b67d1 GIT binary patch literal 359 zcmV-t0hs(J z@$vEgU0w3>^YuSJ>gwwBW@i0#bo***^dKP5&(G)Q=lpMP`cF^&aB=!vT=-K{`Bzu= zL`3{$W&C$|$H&LX%gOm?XZ!p6`1tts_4UQY#rF30`T6<%008sz^ZNSw_xJbo^z`!b z^8Ww;A^8LV00000EC2ui01yBR000Jrz@PA!E9NE>gVJy~{5DXBD0LdS3M$qL<=k{S zh{`3QSTr7xNTLfClg;P|r6tKZ!sGHeO(A{i3=A(KRWbzt00RRFArc$`kTW|tG(0yo zJvu%;8Xy5Pl9ZO1nm#%iCILH>m6w@592`D27@?x0nI1l~7`*}l78V2qB^ogqHZV3p F06Uswuu=d3 literal 0 HcmV?d00001 diff --git a/images/flags/md.gif b/images/flags/md.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4b8a7e3f67097d65193a435018d68d1a0798af8 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h-B3dS0I{c(RP^B~OJ~w#ecS!+UE*X}+e$s_#sL2E zdxMwa_T@3wGbO120GfwGY=qpl008>wOY_(!ev{(-?r8k%RQufk<-GvrZe-g=IChNQ z;8;xg=tTDAJ=7~4{L%o!0032S)?azq+CVawgFOHMpV&Jsp#T6{b=dgkK=$QK zj7na3)ioRq>SWf5>VEgl*qCmap|6ni3lGcpehgbe_P8#y9A z5-l$}B@8DGl9ZPO9V!o<1E3!WC;<>Y1TQKK6B9hCAFHij1uix=H7g!8Xlbn`$R-I1 N7|j?CDA6cE06R$cn05dF literal 0 HcmV?d00001 diff --git a/images/flags/me.gif b/images/flags/me.gif new file mode 100644 index 0000000000000000000000000000000000000000..a260453c2f73f32c07a75de3dcc5d990fceff33a GIT binary patch literal 238 zcmVjVnU0|@E6KJ?8$=pz#6vOEuFvF)}# z;jSy>oHOJA2LItkA^8LV00000EC2ui01yBS000GR;3tkw=|CuST?pX5upkRc``kCB zQ&LacI7(;X=?w-y04{*ZbTFMGvZmApHX4mndfx o1nz;Q5ovVj2NQP^Qb%-vf-^D)jE#*G36YTzlo14%m;@mJJHTpU4*&oF literal 0 HcmV?d00001 diff --git a/images/flags/mg.gif b/images/flags/mg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a91b577d138eeaa5d0f9bc8a00cee9ddb3305062 GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5hO0r5Eo*epARO$c#>gwt}tUXz}TK#Kl05$;iBqaAt zOy=h1HL5k@;^Nxc+S5HKFQqT^007W49sB?Q3zZ81D*ymT0R3iW`$tFmK|=XFJoq;@ z_c1Z{D=Q?TB>YTFGo~^sq$(7d6#4o2?d|Q~-`_T{HrGcp{9s`hq!%KpBKAZ?+fqQA z008=2T<2$9^*=xTaB&cq57$mREw3&6{QLd<{Vbv^{)L76`}_U<{rdX){QUgy@9+Np z{{R2~A^8LV00000EC2ui01yBR000J&z@D&2ni!3dWMnYt{eC_lE_OIvP%eQ$(S$}1 zf)6I6*>F1CUeu?%h{@(oVl^N|bvD$vd`=`_0|ab5JTELWCnpaN5)v~l1Ufu5IR*s` zG&CwIDJdov1Uxx8I|d98Aszt%A~GNd3p_hJBLJwXtTGf36$_*zBL)Bf1(ysU5H}SK S4J8gG7SR?6)D_kUK>$0+p_E1d literal 0 HcmV?d00001 diff --git a/images/flags/mh.gif b/images/flags/mh.gif new file mode 100644 index 0000000000000000000000000000000000000000..92f5f485c3bb6e33dbf40656bda07e3742c071a3 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5hxy0R=s?qhQZg-KxskYMq0BsmTlZ|k9L}{`3+q?h( zR7+~BwRBrkbh12StM=p2001wAo5ymG!dYjT_kl4(W29SsxmkI%WrDf@02nq~q5l5< zG+3T%hPy{i_^kXs|~^Yw2A8*Wm7JgR#$@g7wX=EKr+wc$#u) zga8S9A^8LV00000EC2ui01yBR000J$z@Jc9C>9k+r0W*}m?8s-MAX4pF1;1)7uak9 zmqsJxaa3M2*zHH~2F9V9!xy6n9;ZTt0KkM6H4_YWC?6#`1p{Fr2sH;XcON(r7Z3#! zV+eu*2`K;_JR=$z1tNb3oFoArAO^0Z1sFX#I{*?IAi1t192p8MEd&yO3mz2}4jLT2 QHYx>35Yf^Z)YL%$J4-p13IG5A literal 0 HcmV?d00001 diff --git a/images/flags/mk.gif b/images/flags/mk.gif new file mode 100644 index 0000000000000000000000000000000000000000..7aeb8311b2b6a4e18b278d1774459e57335c1b76 GIT binary patch literal 382 zcmV-^0fGKUNk%w1VGsZd0M!5h{8?7{*f{@h0RED8_Bl8G+;I4bGyD4h^Z)?$ye#Pe z0Qq@4_{>KBb#?o_NBKub`-VsR###JvPyA(N_xCySnG)&h0Qash_NpfT`gijf82*1* z_ADp->r?wvO!Pn?_H8-zM>O_oC+#-?`<6rdZCLqcNA`9q-v9vgEga~^0QF4({Wk#o z;{ftO6#bV`_Bbo@S`*#f0Q2S={CH;j@M8XmS@vBk`Mx>y*dOuA4)WtH`maL$zf}6u zUHXiT c9uEu*1koW0J17S$NebF3Dhepy-!ee}J1K9L&j0`b literal 0 HcmV?d00001 diff --git a/images/flags/ml.gif b/images/flags/ml.gif new file mode 100644 index 0000000000000000000000000000000000000000..53d6f490c1777de4f9d44195d5e188cf2a35db0e GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5h?Da!Rv`Xjz0BXW&`22I|=m7luY4kBM_en|lS6BS} z0QD>^^Bf!ihyeE3D0<0y>GL=BBqUL`QS9|j^wb<&y<7l#0CL82I;uJVXaM*3MDi08 z`T0Bg`a$^kHT69`Sh`sNR{-%14e|g0MX^Qu`$zZpFZT8-{QOMy^(0idRNw#r{ryqn zqX6&tQ}py6!4O&4|n0B#;M4t{?E78eo$BmjCQCk_k@ z8#yZ$1CTlp9+W8*m>UP110*^a5TY*>8zLg78C)PL6EPYZH9ci!KNcAoAt5&f$OSDc JD?iRb06S!MmRbM+ literal 0 HcmV?d00001 diff --git a/images/flags/mm.gif b/images/flags/mm.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e0a2756d2ebf850087f556cf77289009985f3a1 GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h`9nkXB_-Y6`1CwI`dwZ000610?d1Rf_%=58OH1ki z0Qx>Y@=a6#0LOiO zmFiJU*Kly;czNVTM%}@|@=HtGMLW(_Sl(S&*Yq|v`$$OfLrQFA+Hq~)c5>d`008X( z0002PA^8LV00000EC2ui01yBR000Jxz{c+1@_u`KpBFCl2H5} z6@dU{a^V0ggeKDchQ~7wS}h4+4h`5NWvInMX&QAM0|z8LHaaI9AvAOW9Up~0Dhv!c zIRh+$kRK2?2OAz|3nh<{5D+3G8z2Cs2oZyx7Z(#F1z8qb2^ataH#Z^^6Fo~!J_-s4 L%p)T`&_Mt@&VP;h literal 0 HcmV?d00001 diff --git a/images/flags/mn.gif b/images/flags/mn.gif new file mode 100644 index 0000000000000000000000000000000000000000..dff8ea5a63f0a3ec96dfd0dcb95a0a7abed8083c GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hK|%Ta+GzgCTz7N&^f58_NlE{EdHYpV^(-tZD)v!P z{qr0g`)FH4IPLW$B>d4${Aft?00000>He%%?EnB(N%8z!Tl!r+X=(iC008n66ZJhk zFfaB$J@rRN`ZYE9@eK_C0Q>*|);l}-OicXw001N;_22*iT~hJ;*hC&4^z}A2WnlLn z8SehbdH=P0{@ro=abhYY@cxH(Jvj0tAMZ;`_b@B*`m#j+-ds&V?)h6){ex89008{} z0RI30A^8LV00000EC2ui01yBR000J!z@PBvlZ1{TNn}Z({0uLHVKBg0S(d}0;4}yr z7LX O63r4KCnr7AK>#~`43F&q literal 0 HcmV?d00001 diff --git a/images/flags/mo.gif b/images/flags/mo.gif new file mode 100644 index 0000000000000000000000000000000000000000..66cf5b4f05dc02126365be46762113446f171a8b GIT binary patch literal 378 zcmV-=0fqiYNk%w1VGsZd0M!5htJ5t>eK)_ z0QC0sQngY=u|?YK+Iq=)am8`~g8*H=UAEn}m(P~~SpZMAPXI{(M6N^tbO3P0Y)Y|8 zF{LnGyi7l?KRT*93zZ81EC3pu8d|!738K-oN;DY5a``m@aiMCmJs`=!Yv%|;$A$NP0yis$eeV4+6o4SOY!gi9p zM{BlIcBwmInnGuu001C@l!%F>i0sgicaElSjJR!vwDiBKYoDF;_+o*uV2ZQ2#p3<#r26otkD|Afrn#QA zrT{I0A^8LV00000EC2ui01yBR000J!z@Jc9DGrW@Wby}S0t_sN1J>IRN~QzTvf;G^ zw9^DZx#}tgQ1uJ literal 0 HcmV?d00001 diff --git a/images/flags/mq.gif b/images/flags/mq.gif new file mode 100644 index 0000000000000000000000000000000000000000..570bc5dd18a8cd881e03c9a56c3ebcc514191fa0 GIT binary patch literal 379 zcmV->0fhcXNk%w1VGsZd0M!5hTXLl}RGv_4tisCRo~+NNwAAM6@??9o{QUgT*5k_3 z<+j1v03U?2z1I2p`2YfQ=H})A05XA<#O&_!U3RgBn8lT)&AGzb003F^_4Q9`sk+79 z)!F8Zoy5)5<#~_6003wJ07b~q;?UUXLSCYGjK03e-o3`%_xJh$02lxgeZ$M$SaGn5 zoykaLr%7h0`uh5Eh`rk0=-}n>)!poAfw|q{?_YSayv5t;>FMF-?bh4q`}_O$_V)e# z{rC6xA^8LV00000EC2ui01yBR000J)s+bJnQ06YHGuI>N; literal 0 HcmV?d00001 diff --git a/images/flags/mr.gif b/images/flags/mr.gif new file mode 100644 index 0000000000000000000000000000000000000000..f52fcf0933bdd5a8e30a1d2f7d76b97f728c9ed0 GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5hfXF0h!e{`M05z#K0E7ThwNXT_L_@GK0BHc&>@Y2) zEdV_LGo>>Cc>sFJdH_lQaKv#rmpNj-VqLyn`ujyqt4;6rEkm+HBcUUs*-C4>Yd)?% z09ybVn;9mPCQ7wRAB!JPwogj4N;;}KSh-nLxKwt?b`+Wv04D%Dt~*`4T`rj}g2^NRIXC!;d4wT zq*5W1F>D3{g^24V?FtnNg*G@SFop-gq>J@F1{Wy|3@{!T8w&&wB^5F}G!YRm2{||& zBZ?3qA2SIyEiE+(ARQ+I3k?Au7aI{Q78U@dCpQc~s;wylD;^%SH#Z7D2v=bRA_it7 X0}KiZC=E*-91qqD3qRT@3qb%oq~mv! literal 0 HcmV?d00001 diff --git a/images/flags/ms.gif b/images/flags/ms.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e5a67aa882715433cef156d6586341b5f50c8a4 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hX)9;rcXyqRRA+R#002$RY&qox!(I;tiatq!836tfEpCMGHrtpi#hprWH0 R%*0Gi1Ps#B9@W)B06X1&k5K>s literal 0 HcmV?d00001 diff --git a/images/flags/mt.gif b/images/flags/mt.gif new file mode 100644 index 0000000000000000000000000000000000000000..45c709f2bc68af31bf62940c2765474f1798639a GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h{9|M0=H}JY)8gXd+}zyq6BG0D^7T48^Z)?t008nX zF844n^(7_xQ&aH`4fjn=^*%o4008+yLjL^y_A4v&A0PNPHuW|(^BEc9008;`0Qo#U z^D;8u008*-`1kks_4W1d@9*vH?fF+%y|}p4$;rvc$olW^`dnQ3OH1=LHSgWs@$c{U z>gxP*a`^4->+9?M^78um`S?ag`~3U+@bLHR?EUri-2edj`T6_%`}+F&@$vEg{{H;@ z{Qdp?A^8LV00000EC2ui01yBR000J#Kpu-nB(5|Xgc6ZRfMkMSulKvT007je@kkg1 zq!RTPYe+Vh1tsO2n8vwT33!M%Q3az80A1@CO2Pzy23OFzU0RsaB P1SJs>85tco)Ik6{yXCVQ literal 0 HcmV?d00001 diff --git a/images/flags/mu.gif b/images/flags/mu.gif new file mode 100644 index 0000000000000000000000000000000000000000..081ab4533607939fa2bb70838fc34e35024272aa GIT binary patch literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5hXLpgiSZP$WRO4r7SZaqkShP8&IRH}tsWeF@M5grg z9I{ASQfj;R_bo=PMwrei`}|AYQ&U4-vj8yw`};!q`8v1&07+!I$^ZcJ@)M-iJ^lS{ z02xc0(JTNK0F%ocb%UJr^fY*j%c=kX=5TR}#tlqfeL7RE=z4lqal!oj0001oFQ6~@ z_%-$QB#@o3T5!GL;Q+~dh!2YZVYvWbx?nF&tVsX>hX4Qo07T(lUZ~kbx!`7w$P=H_ zG{XP@A^8LV00000EC2ui01yBR000JqK+JDAv>1=0ttvyIpt@ zV8r6K62V{$#zi7IootDOBv($Q)aydQ2AAhJFCc;dgan2JCMEzLDjN_G6ciOL4Gk^| z3K=0WjgXR*mY5luF*H0o8X7(w4-X$7JtZX%GY2&_0=W*m2E8o59tXn16UD|J$R0re EJA^uk@&Et; literal 0 HcmV?d00001 diff --git a/images/flags/mv.gif b/images/flags/mv.gif new file mode 100644 index 0000000000000000000000000000000000000000..46b63875b1fb72f602ec068d935042455e4ed795 GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5huG&JNjG2bX7 zUf*8qWL@xAR&wZd>Hq*(-dlR?e&j4S;mhrjc|>04A$;8)`S z0OtSzA^8LV00000EC2ui01yBR000J&KoICh^cj7XWaYvHNuH9y;BY_?2%g5`;v{rB z7+xY_k&Q@zMWCA#i9Uv10T*cjAc5Ziqk1!D0yZ}hCL0QQ10E z4K5!A3<5L;Aw4e-84i~V69ok&Ius@_FEym52oPo@8ZjFiD-RDoF%A`09$5$1RfRXqB literal 0 HcmV?d00001 diff --git a/images/flags/mw.gif b/images/flags/mw.gif new file mode 100644 index 0000000000000000000000000000000000000000..ad045a09c124c010eeb1ce5adf28a3b5f28fba4c GIT binary patch literal 364 zcmZ?wbhEHb6ky*$`1tskt};Cv73Hj{sjsj9l!1YTh2fi-*-vZhJO+lp3=FYLT>tp{JFRo-FgKeO z8=H10ZDC~Ol9G~$h4%Iv?WGsUM7y{oF853{H?QBG)m2&PGtDq@UsAD?lfhC0<;BVj z#tcB9_>%=hG3bB@ke?XXIuFb*@UWWOb|OASveA--DS+GID~IwG@e>Cgz7aB;c;eS# z$*AZytAk!GPFv(pDNbC$H~Z|;EgM3##FdN7*m-%?YU)H;8jH)@I%?}#SX7mz%uO{7 zB_u34I2ac(TB@+>@f!)t3kcX68#8aR;bOHC5s{SS=hqfqZDS*_m6cWMxa>(;yE9x| Ic8(0z0Cd)M=l}o! literal 0 HcmV?d00001 diff --git a/images/flags/mx.gif b/images/flags/mx.gif new file mode 100644 index 0000000000000000000000000000000000000000..ddc75d04d8f2b05b315d7960abebe0604fd9e1fa GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h=W1?MqI7z=lG`;q09yu2oow7kOSk|4gMO=WUGP6008&*_j9z3-aSIuFE!ygI_=U{QTe5#NOoIjeTn0 zPgCSzWb*Frqq3jR&(FZHllS@f`1JJRN>BCo_B@ne!esC^{avh*CKMIRzCIsgCw literal 0 HcmV?d00001 diff --git a/images/flags/my.gif b/images/flags/my.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc7d5236148edbed734df8a666731eabfe88968e GIT binary patch literal 375 zcmV--0f_!bNk%w1VGsZd0M!5h^ycRK@$vKMn%&Wc>gwrCP4ndB-bGE;007*krQl6hwg3PR2bl8W;?|v= z+c`t-!oudp#sC1t-m0qLEG(0d(AyjwOiSF{&w|6PC5LxQv8}`L$Hm>dyYA)gZEfLq zb;9-U_3P8q_ut>$)TQIvp5Md6@#pS4JK6i^<@fFF57%;0^5q7T=u^K8V V9UTu35D+*ZAQl!qJsTTA06XF)t_T1C literal 0 HcmV?d00001 diff --git a/images/flags/mz.gif b/images/flags/mz.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d635082a690908e3fb17ac14c490b6e39eab441 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hzn{ItTgr0 zDoM0SRJv4k$#wbKH`<7D=i|-KQCR?l0Qb{IX~JncI6L;oUi8m7`$Jo91@Pl4&nF6HJ%NMG!|np7M&mJFnd`S z;Dk7V)%HGxlDY(F!(afG;L$pKA~KIBQ>mCt9zFsFHx?imJbfl7Cn_oxf;$!uh#4y@ zBqTa1DJwod8WO{DxC$Yl79744z!$n; MATw7ID zxc~r<05kw8qA8o7*lKFS`8zusoEwLP!}w-x>*4D>t32W0@A!#{^3v7p>GAk@cW`jU z004T%z`N>543qa92rdRbTTX? z0zpAR?ol+JQ4KNphQ}Za=9GS^I)opnFrH;D5NQ`CF)Iu|8ww8=E(w7cu10t>=AFvDtISC1?JS!^|BqSmt R4Zlq`It0=T)Ya5M06TOHp8)^> literal 0 HcmV?d00001 diff --git a/images/flags/nc.gif b/images/flags/nc.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e91b9a80f4e4d69a3225e1dce5faaf099e0499 GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h`1UqumfigBbxln;GlW^1nnM5xtQvMkiKydqb4~mE zOZ6p91xLs897bA=+xIhAq;jj9Wutth<3o&Q{rp)beNdsHPy72s04BQtEdXStf&etz302BcAJz(Vk0GY1JkF)9aD^ih>H220taUFf^?pvR{s9m6a^}#yc z;&5DEKu~{b{JDF^sD}N%gIJMx)7Mb*^IoXOQ@7N4B>**Zp5W5ZnnsanRD^C$gw_B{ z%K!iXA^8LV00000EC2ui01yBR000JwK%daZU~G<dD>FPV6FU$1Tl#-7C literal 0 HcmV?d00001 diff --git a/images/flags/ne.gif b/images/flags/ne.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff4eaf074e9ffd097b3820ad9c56fdda7e336fd1 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hRJT99`H4pOc{Bh|001ul0BivKq-omi z-5Z!3)z#HJsyzPw{?X;pCZ8tq^78(xbS|PU_V)Jd1_1LS0R5U>_T}39IRHtqN&A&l z`OdXry<+|C;`!;_)#%mw`uh2@hWqQ`L#{(Jr8EBT<^QjG{fh{R2`<`I?)V<&E-~N_a_1VeylTP*H)-|X#p~s>8{QUIv z^!4@iA^8LV00000EC2ui01yBR000Jyz<_WV$QUh1OT`j6IVI49ltyc9a+Sc~a=C3# zC<0-%DijD6oXlkMct-Hg2ZPaJUO$Jv*Q<#J9268kK0gc*dp#*GWg>$<5r&9-DIpvK zF*Ae_5k3qs0yd&H3Z*O{AP)~9JO~{m4Gkp|5D*IsD!CH}t{nis8XB+-JF~k8$Os0@ M1_#Xt(9l5uJ4gkx9{>OV literal 0 HcmV?d00001 diff --git a/images/flags/nf.gif b/images/flags/nf.gif new file mode 100644 index 0000000000000000000000000000000000000000..c83424c2c3c02352efee0e63f4011be0129e2fc5 GIT binary patch literal 375 zcmV--0f_!bNk%w1VGsZd0M!5he5-s+lT5?Q!}a#{VxD6FD*%M8gf@OQw9T}|+Qs_% z`tkAcHlUu^q!s_no*yY$Qd@Ws`T^ev2YNBd%taZ)b&HerT01^PY(z-K&Gc9#3 z6Kxa8-N{OgN<@uBSejT3X$?GtJVJ&-Q zlAGcJh$&rKcY$4i6R$4Gs_pAt4c_1a2L504oCv VJZi&CO)EV$Is!d94Ngu$06RnPl%)Uw literal 0 HcmV?d00001 diff --git a/images/flags/ng.gif b/images/flags/ng.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdde7cb3bf708d1ee0bbea86c0b0d407d708b691 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hddYe=r#ABU@?5=K?(Xhw#BBh20CL82GN&^2`t<-e z004ymFQhN^_4V)c@9gsI09gP~wovNu>HuT_Pqj~3yIBpE4FF0204xAXvq}<|5&&!f z{r&wVp(RDJMO3y_RJl|+syRQcKP;pyAD$l>n;8_E6ab3=`}_Mzv`N<1*4f$FT)A9C zuSCbw$K2-J=kDiNxmX~dAa}@jV83Blyjbh&>*(+3y~n*~z-IXP`276*`T6{#XcoB}a*Jd(-OcsFXEWzRIb^=!HL%Ey) zv_XZsL-`yb#3*xtia&y~kLOT#TJ2d4L=l*IIu9cqG9n5K2Otp{0&_Y)4;>^WAqoZs z5h)%5fImGFlO_R{1)3rbk39`HB_0>NbZe0G=U#X^llC=&nx18Q8b z*~KC;8kJau1Zed*od$yt1k#~x9JS8t$N%+uDLOef3=BLzJO+J#I3g%8B!)g7iF}M4 zA}T5*haMh21`-c&avcH!cQqOsHZcbgWF;*H5)~B)2s1MU83b5b3m9YyB`#>ZOHCgj M%mL0B(9l5uJD$t2%m4rY literal 0 HcmV?d00001 diff --git a/images/flags/nl.gif b/images/flags/nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1c8f46d0c328cc5ceae99f0ccd7c5047ae93d83 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h00DIV{{A#>vH&5E`eJhySf}*>0P^zk`uh6#`1tnr z_WpW_T8hK{U28>qx;k>TDrThkJd0frAGJ zJ|Y7!3?LsJ4jT^wArKH68x{Z(4k@EDry2zX92_AYs|=l=p{@d?5V!!t7{$dF$R5fb GK>$0vUY#BQ literal 0 HcmV?d00001 diff --git a/images/flags/no.gif b/images/flags/no.gif new file mode 100644 index 0000000000000000000000000000000000000000..6202d1f3a2df4184878f5ed8bc23aa630d43c061 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5h01vKZmEH98^zCF}`uh6sZENy;dei^_23FAb_xIv4 zFM6fq>gwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC literal 0 HcmV?d00001 diff --git a/images/flags/np.gif b/images/flags/np.gif new file mode 100644 index 0000000000000000000000000000000000000000..1096893a70f475c9407efff0afe534deec81af54 GIT binary patch literal 302 zcmV+}0nz?PNk%w1VF>^W0M$PL2MRYH7*)Xl0KxzO+yDR~9Bd&n)-ENh5gT<88gd8> zINksN8Wle0ZEZ6t#ugrb`|Il{H_R+VwCn%?>V17GBAM6#0QS?<`sU^xC!PigHt+xd zCm)0Ch=}A}T_iHP>VksM008;i+zJmq3lK*N5Jdd&@D>s_`QYFZ9C)t)039us#{dBO z!001*8$=^#$@~*BhC%Fp|N&D*RKe$V2vVE zgga)E<;rVZf~hZEjT=pYS$?HpgsSP$e0P?%02^IScAi~k7044wcNL72H z0022XXp~BFoJMb%ex18}nYmYeqi&C}YKyLAhpKdxwBY9LVuYq;h^v#U#7=ji-oaQ@ zdZdr2zb99Pc9gTbfdKK{n%}h@`}_Og!(2;rp6JhZNN}2do3^;e)?K91Plxa2sJDOF&HKr zE*oYG26Qh94+}pUBPui}0%>%h4*&+EBoQY%3kj96S*)B^MPQa-6ojOH2jJ KKh4g~K>$0!fQ&2v literal 0 HcmV?d00001 diff --git a/images/flags/nu.gif b/images/flags/nu.gif new file mode 100644 index 0000000000000000000000000000000000000000..618210a755d0faa72b11a29fb07ab7c0c66d155d GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h+S2WMhw1sIrumhX?dC~rblC3cP2|Wt?9@x}*;M`1 z)ryDQ^6gRe@>%BGJ^1xp-@!HY@K#%S?&{$}^-DrUv-L;mT4>Cr~&;6Cf*M)U7i=ifm6#>L0A-h+C{{`!3V%V7S%zWsM^{ephu zSXt%a_3Y$C{qs^*R?64m{PyBoZe+BAlET4@;6XMqvHP^M=Hf~8>sa&d zQ~cj?A^8LV00000EC2ui01yBR000J#z`|+~z!VA;U1FBWBrXVvOyNQSO1Hr1@n}RC z2#ew)s0@ArOK-&37#JYRc#vY5Tbs6l(D6uB05B#yHU&Hedm;oLF#-!U7y&0OG>8Nu zI2s2T99>>M43?NVFPj_al}cTuV|24eRGOEZ#pJ@uA~}%ps;HHCopL&7HAET>aRJP@1%w*VbZ zFoFSP7(X&DldJGJkX{u6q0)13Hkd(Sz)3JBEFB#ZI~E%=5qkkH2{kf4EiEMt78pMP z6cjuf2_GpS4;&d97zG8H000=B9-$(nrl=RHoe&(arKc1C3JMnm2?$vWU7;Bp8W94f P!3a*z2MN;C(m?<_p3#U7 literal 0 HcmV?d00001 diff --git a/images/flags/om.gif b/images/flags/om.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b8c77501d4fcb4eebfadfd58e5fceaff2e50afe GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h+*(=yPyqV+`uOgo=i4(8_OGpsVE0083R;zYDW-rnBYR8;o%_AaR|(JCs|MMXTaJpTIn z{{H^hN=ni@JJvuz)jK;Xt11+s6fdnWB&Z}Gr5_oi8PPU2(?37XD=Ppk0NPJa{P*`X zuQW@zOVl+r@9*%@FfcihdMqNJv%4i~Eo0CzVo6B8OTEf5zMDiOxU0m%x> KKg}vCK>$0WIGL^h literal 0 HcmV?d00001 diff --git a/images/flags/pa.gif b/images/flags/pa.gif new file mode 100644 index 0000000000000000000000000000000000000000..d518b2f9780dcab0072328d4007ce28bd7f3f064 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h^IBT&h=}R{0Ar=~hr0RfM@IlS=<;%M{QUg!czAZM z_3I=gfVTM3($e)~WA1BfZL0Qrv-s`p?a$86_V)JiOiW3Y@$B^e^3>G&`uYG^^3?zU z07&itDB=Jb-d>{h-v9tqob>K7G3_fW@jN{5H#S+H^-r1e^YioXK|$}w$MMU{*Vor) zsQ8`8`Wt`s@9*&B@cr{qQt*C$08jDgGBJ3u_qf;l_4W1r{r&#_{>#hD^78WZ^z`xZ z@&Et-A^8LV00000EC2ui01yBR000JzK%Y29|%qH<0z*6k@`pQ(=)3n?2fE?^81HVQKd2L}%iGaDKVEdw7W zAtw|RI6WvlJq?qVm=+eCJplncC=)ahmzk!WD+M(wJUbkT5D){Fs2CVLxf}+^9UUGX NEDa446FbsD06SJcu!#Tw literal 0 HcmV?d00001 diff --git a/images/flags/pe.gif b/images/flags/pe.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bc7639057b36907b31b465d608bbabe017e9409 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h^*ufEE-v|0Rq+iC{{H^*5D@!CMe+au{#jY>0094c zd;WKK_5c9-U0wAhCFTGC^BEcX008O$0O9}u`bkOiGBV!)0QB_q{7+B)R8;pdG4?Af z@)Q*MKR@&zAO3lH{N&{RTwMKNVfRi>_`}_O+{QUOz_WJtz`T6;rJ6A>nr9g8|N7Z4l;6&9Wb9V>vN7Z;}k0Tv7*TLOTX7cLb60X0ia2{Ohc$P*Sd H%s~J<+RLIo literal 0 HcmV?d00001 diff --git a/images/flags/pf.gif b/images/flags/pf.gif new file mode 100644 index 0000000000000000000000000000000000000000..849297a57045d279a8edf2657314cfc5e9496ac5 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h>*-{-007)PJmXVS~=I5Zl$?gej>%Xy+eIWCjc!MB6xayJ1RFUH8(khJb4FhJ0u`7 z4h}XWKRg{jdX*#+5+xH8C7m4|JSh(@WMvQ#At43^Gcy(x4^~()3>6gu0vj6^yGct+ M3C+zE&=f%cJBfF#l>h($ literal 0 HcmV?d00001 diff --git a/images/flags/pg.gif b/images/flags/pg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d20b078561ed92f92a9034f24d382e33db894df GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h^8x~$QBin!c>Z;D^(rXy7Z#Wu9A#x?Ha0fs004Ph zT=`X1C@3gIL`2jvG5BRRQ4kPjH8u1yGF)9HO zv9Yn<008_?gxH1m2HZvX)Hyes-+Tp<$^*n4~Y zb7k{F8o|NAG%qjt$~^l^NBc)d^tK;HOG}WDkoKx8jeC3eyf@NOQT28u^@Jt;00930 z00000A^8LV00000EC2ui01yBR000JsKuE&p>lu%LWHRx?u?EnA#nKX~7K;i~FbQB6 z9@(apdl0lg?nI&U%r-HT=|;$GCm_ltka;{vDLW(>TQ3?H95oRR5(GRnE`(`%4FU}a z2nGZNCj}Br2Nw+u6bLX33=ks)o*h324ICk+s2?9I1^^PS2NO02hohLLi>^P%$jQkl GK>#}|p@q}{ literal 0 HcmV?d00001 diff --git a/images/flags/ph.gif b/images/flags/ph.gif new file mode 100644 index 0000000000000000000000000000000000000000..12b380acd38aba726f63d337660206bafba34339 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h?EnD%{dn;U3-t8p0002=^z{G$ZTCh-Wg>ZUa>f1q zSo9nmG&HJ0L9qE$RQ>(_X=%a$080J+A(&zsEx%BMH{QSvA zMzSCvpZcn;`DJGM(aU*x$@=p0`}~dn|2OaN8v6Qct*w`)jh10xzMr4kva;e>SGjk0 z#@zq_A^8LV00000EC2ui01yBR000JtK%8etG#HPOWNo#R`4S0;R5$8{D3QVA!5f9H ztwx8zn6x4VOGc7PP{QM~8J!6PI0c`WJejyUSt<$&EFw2K7Z(VN2p0qe8UZvMGZiEy zCMOFE8yF~Q8WJ%umzkRzohVu&F9)TXoErilC^jn<4!H-rA0HSPARs>#0L8||D9I>4 H%s~JUbKv57`IX+(7_4In0sJ literal 0 HcmV?d00001 diff --git a/images/flags/pl.gif b/images/flags/pl.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf10646366e6e2de00d04ca75e60c5cbc662e5d6 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{qFAkZf^BEJN8OS^Z)?o*4FYaF8Ekk`~U#>U|{hL z4gLK6@(>XEMMd{DHTN$s_9`mw008wQB<27B;s5~jA0PQTI_dxb`$|dkGc)rU8Q%Z^ z_4W1oKR^BP@$wWD`dwZ3Pfz$$RQyj*_vz{TWo7T-;q^m9{d9En=H~tH@&1mE>Dk%q z-QD@?>-+8P`)FwVYHID@-|^$)`}_O&`1sub0Qvd(_V)Jr`uhC*{P*|w{r&y_@$vrt z{{R2~A^8LV00000EC2ui01yBR000Jsz@D(@Q2_ui7b%sRnPk1+&qw9)bUIq@R@=3r zRG&4w?c#Qg~;C6SYrmzfL-1{(x~hKLO(0s$0JO|I|& literal 0 HcmV?d00001 diff --git a/images/flags/pm.gif b/images/flags/pm.gif new file mode 100644 index 0000000000000000000000000000000000000000..99bf6fdb60bb4e92ef55622efaddf8f322b76e48 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h?t^XN;o`WXG33)!zpqdL042z~a)Y9Q@o8aKS-8iy zR!d8tYGZTO$7JFF03%=p(9_j;c(7Mkr+;*4Kti<4xJ3W}MK(9A003k|M4)nLSdxl; zXl0UNTWQn z(|4Hw08db)Oii@bWpU9>T+&u#e}KN)p=apm=EA8Rl9AwEI2nzYq!I&Itw5<1trek03<;E_85kuJ zje$hLSrAGv%L6nzWCw$di0olVERfYFghFxTA_O`l3U`I>`Zo5O=hzI051K~ z(R_<>S8lfe08IC$s7zz1X_}18YJZxl>x+b1RQb4~o>;?C9eRBNk8W`r_Lc|lsEEJ&qabh%J)=l-If*U#vAcDdW0t59c{qL|M? zT9{XUUdpxCcdTA|sdZm*-y1o{004QLj>=kgbga1}^|Q9!qO@64x&Q9&duhKhOrw8Y zt2YSqof5S0td1JtF5IyBnu)pA`1x=TU`vH2oDw`$OXSl NPt6Sp(9sD&06UU^mbL%@ literal 0 HcmV?d00001 diff --git a/images/flags/pr.gif b/images/flags/pr.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d5d5896709989000cb51a3d13f77593ba68938d GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h+}!(XWcK5CcKP}F&Nw-JdHlEl0Hy!|%vx>p^74iN z0QvRx*i%&8Y;0Ux{?kK4@$K#Q_V$_p06{_eFCVq(Yu0Mu1g#KQf}GBQg``_)WL z_44un0Q<-&DE#^O`uqI!^z_+XUZh^7#2p=wj{eU)Jl9!S007rWM*H^l^=@hX`1ki- zVE%t==D}z#U02f4{@KaN_4oMMzrScv;No#|s%WaWd$?3l z`~U#|A^8LV00000EC2ui01yBR000J#K-9rPG#HPDgYxhz^kg!@Zr6ZSDxwQR(rme2 zpD=4dj;J`4=E~6mfIx!*i)D^bIwf1lq2VDI3>yy*CMOad7$5*XDHAgU86F-aBqjikL05|~sR#yLddH^c` z{ZCN+Z*TJQ^7)RD(9qEN`T6wq^*EA)g`sSy@VtOm+tkj;Px--7*}^>iaB*p(T-NCNQ;|jW zJT~WeT<}3KL6J1>-QDecPGFy5^ED~-XH4SISMItt`%_2oxIILUMEXKP>S-$G(A3=k z002z@A^8LV00000EC2ui01yBR000J#z@Ko)DRMMOjm7f&d`6>2>T;P(6xay!GgBQl zCjo8;3K<64-zZ?S5o!WK`Ru?zevQCJR_YOQEp!DBcMTLKGBGPIH!lMY1%nU^2owhZ zE+h;LkC7Q6lL!(l04NCwJdgz$83rPhIu#W#12n1`9UTL&GXVh<6cHF04|u})Ik6{x-5+a literal 0 HcmV?d00001 diff --git a/images/flags/pw.gif b/images/flags/pw.gif new file mode 100644 index 0000000000000000000000000000000000000000..5854510fa9ee2e9b218f8a783b331e7200512ea3 GIT binary patch literal 374 zcmV-+0g3)cNk%w1VGsZd0M!5h^!Fw-sr3MY{Vk;Q_V_gbF5UoT@rBE{09@{2zWe?A z6ic)BJF4{nIpTWB|5CR2L9O^bt@&)j{Y|y{amD@sd;0)z_FcaI{`?&O`~-Kxq5wnZ z3zhL$y8c+Y`2bGqII8$1q4gi0^hL4z6q)ifrt=w`^LNPpXTbb>#4U`KTifeJ-R)Blm+~v5?p?h4JgnuO)sBnL$6UMmr`nlDu=d2_VNb0k217Wg2cg`?cj|ZmKYK8v+zND;a@583Z(jCJYUV z6BB@fFESz~BmoT-5(^_W3KB;M4z`ua|7-SPAJ^YioT?DFsO`}f(|_b)H>_4?=C-GiCy>VSFs z`}^nV@a^yU_SDh&($MzI$oTW~>UneN>hN%Z%JcO4_xJq#OicCl_5A$&{Qv;;^z;A# zr~d!|A^8LV00000EC2ui01yBR000Jvz@PBPD;5_>Bnb4&I5UUC<|OCLdiK6o5=c`StaMQcHnNM|M6p zWG5hOF)4pdM*IBxg;GuM?(A0$1?lJKmTG14@bHdbTJ`hu_4V_2K|7&%bewZ-a5ph} zML&HFMX?<>TYwrht5fRZny~H2eGe{r&y=`uh3#`S{{H{} z{{R30A^8LV00000EC2ui01yBR000JwK+JB45oZ=7$k?u1o-Ww zQyM@4(hv@tLCrhu@o#}@Z;vhj literal 0 HcmV?d00001 diff --git a/images/flags/re.gif b/images/flags/re.gif new file mode 100644 index 0000000000000000000000000000000000000000..43d0b80172e97a08147c64f811ea5c7775ad46fb GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs;a7*ui5eO@$F<*#M13od&TML>hy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>KmW0Po!Z_V!r){ZaeyVEp`L^%SwzVzog`06(D@Hu4#=r=dt008Ib=jvcp(q3Wp^>_62^zga4?W3f@001?Bw(;@t z09Bas^77^7<@NRTA^8LV00000EC2ui01yBR000GRU?hr0X)Y)lAuKz+Qz8REwn9)a z3{2qvH3I_2s8o7CU+tiIJTMH#r9drkID!MydHHk*)hkxpd<-a*fmJ;IxIYX6fnl+9 oHXFsqV|f#H1b27}3LPGLZyy^Sj2(oG9t{qY5)vMln3*8}JCP7%O#lD@ literal 0 HcmV?d00001 diff --git a/images/flags/ru.gif b/images/flags/ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..b525c4623312f57d837c23d28d18fdb97e730de0 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hjg9#7^8NHJEf^T{&pl|Ioc{d${KqF&^A;8`F!xne z{o~~C`deH4WMnEU_Jf1>A|mzr`ug|x_xMmy`aL~#bpGDn>h|{bm6iO`M{w)_0QW>h z^*cNB002r#{lgqh;ebFwadRwpd3${j11fPZgLry;eggw3CNVS_ z83Y73HwOnFA0#9003CJ#W_foV%^7cdX_ehGj%=Gw9;mAnu^D_W7 z=LduTA^8LV00000EC2ui01yBR000Jtz@P9pnGBADj&jBP5uOB&)MP5yJRaD{S?GRB zB?Jr8;PDz;f)^~lU}}|$ZZsi$z6db}lgY?r7d{683JNV8000iJBqS#%E)EM3G&BOc61@h$D8VWb55>g`$jB!TWms0>s z00000A^8LV00000EC2ui01yBR000J$K%Y>EKqQWnf)CD0m(r zJv}=CC>sq86eKMmKM5HN0VyXIG8hmB79;=-r5XV=5-tr23^5`E000U<6IWRmn=~jA QAiKj#Oh3}o)IUK0JE%R1wg3PC literal 0 HcmV?d00001 diff --git a/images/flags/sb.gif b/images/flags/sb.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f5ff837fe4c9c0280ee8d3e4601725c86099fa2 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h=F3Yvg*&9A>&CB&R#+8hXWlG(Eab^=%ELz-avT5v zyNiqG`1t&CbK*mbL#DGuKtJ0_O5Mem009BWB6cEdY~WH-+ftKLkAI^^Mb;E;6k1!{ zM@QcdX$~}jG$nT>dwb=-sE7aw0OQhQkyik>oq}+jK-IWxrkAL$qP5}FUE|~U005uT z()GW-L*&F?zQt&@weYW*0H3Wt=*&N!p6W|W*j0}*l49~5{KF%~rz9CJDkgb4`&KMEBV z5ji0M2se=l8XlDu5k4n9ke?bIq6#US2qp#w6q2hQ20sJ?BQO^iI1Ua00UjQ+KN2zo MB0tX0(9S^sJJi99umAu6 literal 0 HcmV?d00001 diff --git a/images/flags/sc.gif b/images/flags/sc.gif new file mode 100644 index 0000000000000000000000000000000000000000..31b47677e0d51f2958f3c833b36345c5267a064d GIT binary patch literal 357 zcmV-r0h<0tNk%w1VGsZd0M!5h2apH&la}uR0MF>s_*7N=`bz*a003M7rPrqb0EaoI zIrb?j`8z!JwYB?;NBfyY^z`)o{Zjn*Y1r9l^YQX}ddm4=V2_TNgi;OnPEP#%0OaK4 zbacsIU%dVOaWA7U`anSVHa1>f!S^sQ1pzMr0D1hDWy#3^`hA7#=imFXXM@Otsi~>p z;A$(CCHOizmzk*S_48)CX7}dp=g-ge!ov2}*Y-q2?(pvRb#?ejNwe9raB#%d+kE-$ z079-pA^8LV00000EC2ui01yBR000Jpz=TkE(inY$q%u)yvOG|U$zmZ8G6JTk(~3k2 z4iFhbdcSh@gVtvZd#003=tu-+(Vym_VDgS_JY{{BRK z#{dC{7+JJus@d}L@_Du4_4V}tNweYM;Z2p&#oX?Y!Q=J%`%;3+HgmrK6qrSn%`J4o zTAtQNjn7k_)YH_|01A&Cbio{b#432i057Wh`}<*!&`WE;M}o<3uiYPj#+}LNC4<8N zRi#s**d+4_rI1Ud8VwT%$LkG9 zm4tY8nRFDDE~G&S9B8pp0*6unx)cKn6nJnh2qh&xJ6#P1AvOyE1uh;Z9fVyYFDfDf zizyQd1(H1w5FQL6m=Q226ofb%8vqavGYlIG84o^$6$T?A3_1?K8U!AL79M3a8Uq*u Y0KWo4EDInq86Y4F3j_o$A0I&gJ6ofk%>V!Z literal 0 HcmV?d00001 diff --git a/images/flags/sd.gif b/images/flags/sd.gif new file mode 100644 index 0000000000000000000000000000000000000000..53ae214fa16b78b4c491add45bb56f70f4339a6a GIT binary patch literal 355 zcmV-p0i6CvNk%w1VGsZd0M!5h1#HJ(<>gwuk#BF=edi-N!6ciNu?(O$XO#N$X`a(kedwNQ>O6&jt z{qFAb^Yh~3;yXJ#`}_O$=H}qw;50NePq$C|R#shMU3kfO_)}B;QBl3Uy^z0(K}10S zJpkv&$8M}|T*6#$l*FC5{(%MR9h?+zy#V#mJ^0c!5^0?raiBAOsQ@Hw?3(~Ng{wV@t_^9H00~z5)<8pxux6sb zC3&I%07L!TQTx|M_RcGNu*&}3S@+N{SedzCpS}Pvbp6~^001HU*-HQ!WBl4rd9KO! z&oceN000wR_ts18p#W2swf zr~pHOA^8LV00000EC2ui01yBR000Jzz@PBvYBWry$wc+SU^>50h!qI%7K=?uN0Kq1 zp^`#$@-P4zOT}jZbaE^OuAH)^*9MNJ;|h>HDIXaF4RtgN26(1d0tj zD?NgQhLi+5EeR$IXOV0i5eErYSWN=oisUF9Ss@MUJ~LPFcm&)v_@;nUOTF){LZc=^lA?&Rb7yuAGG?)~!e@L^%` z=jZDQ3G?ac_3P{FK|$z6Md(;q?O0g*`}_F#`1SSm_V)JY008;<`SbJh`uh6!_xJSl z^z!oZA^8LV00000EC2ui01yBR000Jwz(~#|gcu=>WTV2&ohS?dgCG!qSRUGhBgs)x ziPXgez=SfElBUyL6)uU>2@^xBKQak~p(0!+baoma9}XK400{|KSz8@43Jx$1Vk+U%X literal 0 HcmV?d00001 diff --git a/images/flags/sh.gif b/images/flags/sh.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcc7f3bcffadfaf36ba17812e55f66c0fd10b466 GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h_N1uI(B(o`u8Et=MqRQrOsen)40MCV002uoQmg%E zX3wuVOJTLTqDpFg!TAVRxPV;gJFGlwVI~X=wWJAX}C5{ufeNT&#^$$v_ar?f;Ug7psm@myx(P! zWdHy(A^8LV00000EC2ui01yBR000J%K-8gNz!YRF(PnvRUIc(ZBoY|$9F7SolL;XV z5RXD3rdbFAK|*3dU;q#@egr`|)&KyA^78WT?(X_qTl{2XO;pbGvA6pA`b1CB_xJbtQd3)F)A~I< z_V)JmJ3I6M0H-Hi^E5P~9aZrS4Xrh3_V@fiOw9lQw=O)%;Q#>0Z|2P=x>$^&uhg?)LaJG~nR$FF?&d0028l&mS(t0};cjWSy2-qo!Y)jgsTt008y% z_5c6>A^8LV00000EC2ui01yBR000JuK%YoL4$SBGv IJgwv0xa;FBE9*^5?Ot5H007+=6wLqt>r_(O008MkL-O+Sq$r8H8S8KAKx4qwEzI+G%}a&g)Y3x25QbD!hlDJJ;%`1$$yu>b)6{{G_A^8LV00000EC2ui01yBR000J+K%cOO_*IUTgL1<384SHfuU06)29OoSwQzVEFmNnFct&>I;*X(EH(-}2Ut4`IvFn*G%YA0 W3NpY46Bhss8xhtKBqTiBK>$0|z?fYC literal 0 HcmV?d00001 diff --git a/images/flags/sk.gif b/images/flags/sk.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b3f22baf9e1af04495b4044dc6b7082552f9f04 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h`uh6xD=YPOdZqvX{D+0t!`l4v^Zot(_3Z9SW7g^b z0Q5IE_(n!VT+#pmrFx3pcYD)3Sk(MvVrF*P?c?P085#OpTj6_*S##Zknd|h6koi(m zRc+XWli>j%%lG&9@&EwPLR!iyM)3^|P-oZu-rnH=0Ew95{q5}bo}$h+P+f4<@N0AS zkd^rF@P>86_y7RMBR}x1v*+F4{msnghLqs5!}93rthes`;^B~*;cITr_*h!q008~< z_5c6>A^8LV00000EC2ui01yBR000JtK%Y=(D7st-#O+3*_GVcXs8?y!r_n-4Gk-Fc4=#Te}NH$bp|bk^45 zii+iD;b=58%TiL+K0eR@0GIRg^8ma6dU@StW!5@6&j0|30G$A!pz2=UUR>K;EiKXe z`}++Iz&EA^8LV00000EC2ui01yBR000Jvz@Jcf8yPJ~3t{;~I1vDVMq@A>4l4($+36fq z*;*vB3j}JYfb4S7K_IqV^zksnEP{c)*J~*h3kwW9K0F(F1AKmff`lT5d5V95gFYf6 zJ~S*T92^uBFC-ZmI5QeZm$h@{>+^E9`isQ<0BQGNtM+BD z`T6tyd%OBwsPt;F_y8o|RipCt_4NQOzN}z?zWa{2fmx~eYOK=n z`TtdoNKc~mezW1D%+i#`_hp^acDelkQ}0NV)r7$OjkmFi!1VU^_V@Sq{r&y%_y7L> z{{R2~A^8LV00000EC2ui01yBR000Jzz*cWaDj7}4g0j=;{eHeEkN2o<7K>dID&=uD z*Q{f8YI^(6iMbM-wv`};>!xl~57L0G(5cgT0(005WKJoorCRkl0k*Z}1EMqs~T@AfLO-Z1$1G@jH!!{k8x@@4$=Y5V$M{rzqD_cn3Gae~M%jLtP!xmeu* z004miA^8LV00000EC2ui01yBR000Jwz@Jd4Dyjg0fO0VSIi4hs2WP9@5?Dmj@sf-L z0u2cBU>y`%r#BQHKXPY?mO&bYE*jU&v}!3J4IcvxI(GyhG$(Ed?D5n;Qou76u|287HNu3mdkp7F|7T6}=P`W@kPY5ycT4$SElk KB_%%3K>$0(ftB|F literal 0 HcmV?d00001 diff --git a/images/flags/so.gif b/images/flags/so.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1961694ab98384142d534dd682287dda3b37892 GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5hl*#@8Nai7+^!WgD_KCv# z;_diGo%D9P{RM&j*y;L4obv!~_CcBQdA$Bvrt<)H`AVPkb+`F!wEI@1@_D)WeZ2Zl zqV*7m{vnb7aJ2UTUhjIi_I$hgX|VTGqViFs_KU>*akTis-TJ=T_p;Uaki_}8+WS?f z`4fr%A^8LV00000EC2ui01yBR000J+z}Ii+YJ3(8lSU+w#9|GA6oA3pHWtQgg@Ofs zfJlVoQ7BTBgh2p#1YBXVqB5EI){qu05S34QARs#zHZ3O!1Roe>DJeM_89ERMCm{!k zH)m-)92^@Rl_LTK3ma$^1``Z27a<`d4kZI778Df+26-nPuMQ3>10oD8TsRLj2?qiK WB`P%o8ci_;1p(Fs*aO-GK>$0Av#T!v literal 0 HcmV?d00001 diff --git a/images/flags/sr.gif b/images/flags/sr.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f7499ad954a455a4742c4b53c3c8c2e3f558275 GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h{bgnVP5}D-`e(st?DFjO`Str%RRD(o^B5TW%|-w+ z0Q^cy0Ac`p%6sVV>GJmT{aIT3Mn(X20A0Oa^)fU4cX#$nOZ6fm`SUsZtWrp_N%*!h z`N%jstUdKBEA>4+GNv>A008Cy0AapkRJc|5`}p-kKHmTUHK;eq*~>w$LQb_%{7+Bv zE->^rIR0*M_(4MUMo9KZL+$zT`hr0CQBe6^UiQK&`q)4Bd@xY9P*}QJaK&(S$aT}@ z)&7c%A^8LV00000EC2ui01yBR000Jtz=LpjkQgP5Wb)8xHhMhXU@)5ONV>pGz~z>{ zg~DU}@P&S_Gyssv7;2Un%q9v|AO_YVfx~eq9v2rMbuW1f5i}SWIe`}lgds0_5ilGZ z8#jUo2rhLMHh48~GA1q*Eglvp1Yltg1hEdYvndi(RwOGL8Y&$fC?FsTNJ#<5#|p~J H3PAunnPZt? literal 0 HcmV?d00001 diff --git a/images/flags/st.gif b/images/flags/st.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1e6e092b35de465031930db0bd661ab5e1665e GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5h>+(1NYXDigRr~u!tf@8tDgf~S0D8)J08#+;^(Ksp zB|57#OS4D$XG}AuF87sH=sZ2EN%iwBqCt&9G(Z63I zC5FqgSU4ElO6-wZMcx3wWCBs~eiaGrF&MB2Fc=Ug2_hGG5)BOlA}2Tm2?{tFhCd$? zIurvi8iWZb87&xx9}N@{adQwI9UL4QJ3lusV`dIBBO^T|Bo00XHCI_-wYClgAxa3# N%RbIN1qD7q06RBYi{tlp#qV34i@{^(4g`4a4_Vxe(w>w%R&?NpnbSvS+W;xo_4W1q{QUIv z^!@$)A^8LV00000EC2ui01yBR000Jvz@2cXP<%eE(}~0673_xJ^z5$PLO3 JD9tEA06WZouv!2B literal 0 HcmV?d00001 diff --git a/images/flags/sy.gif b/images/flags/sy.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc8bd50948773d5698d49ad4a214a9847fb09d5b GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hWMpLfMMeL6dRtpt^Z54G*4F-Zc2ZJP^Z)?t00918 zUPMGh78VvQEiIkZpY;3oG&D3mK0f*Y06IE44Gj(V_xJnz`}+F&^78WW@$u2o(WTp` z>GSJcx?cTJQTkk5jLwen`S9-U?)+n8{cCGWOH1}FEaC9s&(F{IF){czH~3Ri`Bzu@ zOicY$RQ_36At538JU#tzar^xH`1tts_4WMx{Q3F${Qv;=_V)Ah^Yrxe{r&y^{{H^} z00000A^8LV00000EC2ui01yBR000JtK%dZuE8-*)gc6ZR_ykacK}I5t6d%^AIv6{aadLEag`pTaC_exT5fcy%4KOea3=|X%Kdu7<2L~k!u(Gqfy~)bU Hy+Hsw(&wg* literal 0 HcmV?d00001 diff --git a/images/flags/sz.gif b/images/flags/sz.gif new file mode 100644 index 0000000000000000000000000000000000000000..f37aaf801198a2afc9700c33f0c71a126358ab67 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hP)SKIa=JS-G|P)m+04jKi^iE37kQ1f3|ghfuCK+v zy!pv|^0!#~)RX`(j+wmEt2H#&Qvmh7WXN`P^N|9w&fx$>ou$Ot>ZUoCxzDmpOx&n- z^y}vvWU!60$?dE|gssJ`%HF0bDZg7<^}%lLu}-6#n1TQRIDEP7vQx7|K$AK;o2bX* z;NF9Bke|TT+?ruTgT&>+xd1(Px`0BOMMh>}V!~KdkBf<+owlM;QM^-3UXKTY(pY#G zq_9N7D3ciXq~*0T001yqc9~yusj-_rQfPT=jJ;2Ft~+I=VT8GruG0Vj6f#_( zdw8NeVyW?`rYlf>GFOCig^kv&x08maHejIu0AXf`y3(>idm}~m>CH-UuJFrVP;aPR zfVDtqs@>Gy^A^8LV00000EC2ui01yBR000Jyzy!yDLKy;yl5)Xh8V)Z}?$F4XOqf=oV1d{G z0L4$C=&@XpP$;5;1P-1Wz{5ZgI=t0`Mu12fItUCIA|n?rFewi+E^asl95DnKBP0$d z0s=c78YLALDg-VUBpU-eGCmU_Z7Ng}vMDgWn^XPTyO-%p+miX?J_wA48NJ?dc&%gix@ZxCd zMo8@7TkYa*6+^k?Eic>2A?eLf=srK{&{XT*SMTVa!K(nxmjLERNb%Wh04=j+gw*um zi08WiA^8LV00000EC2ui01yBR000J!Kp14mlPQjh-($IiB%X)c>4ZZ009e4oIgo%p z6bgy7E44BK0asE1lL(H*nU>}yygkp`F#~&-k$9M literal 0 HcmV?d00001 diff --git a/images/flags/tf.gif b/images/flags/tf.gif new file mode 100644 index 0000000000000000000000000000000000000000..51a43250963e5862d4cbf19d34a4cbb53cfb3b7b GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h001pZU8DVNZ2$pje2KbYajtcNv-vqX000$MWuyQA zSN#0^Phg}#QkuNN)^2>YiIv1WPMJ1Il|E3Ic7(Y4K|ufjMvR!oMOdHvM@Lv_sQdr` zI!%}SOiW#EtT9BAMOK~SF!)>sd0a|`}_NDe6vbhpg~idEkTe^V4~jO=Tc*&YI(B&33vYf z{{8*^A^8LV00000EC2ui01yBR000Jxz@E_e`)!T`h0?<8T`s<;U^+XESST65Ns0bS zoeU#@c||l^$c*?4SID=BWCs{P9>2vRQ#oL691>-#1P%=opahkdnGGB!Ar3kQ2nrN4H9V6kE(tj+Aru_B3QSA@ L%m4__&_Mt@20fAt literal 0 HcmV?d00001 diff --git a/images/flags/tg.gif b/images/flags/tg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca6b4e7744dd89a6bc12c61900830fd7054c6554 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5h0Dk~jxmMc47642D^2ro9r#5J^H0#z#ZN_We$SKvh z1^_Vt{aagHt0hmR8T(UH`bkOte0=iOL;iJk+L8d~%`E_80QS)<{@mQ|(KO@FI{Ml@ z``SeQwYL9-g-WnS9hn^fasXnzU@@aE_0A*s)iq(TFFUb2>)d9meE|F2N#~saMXo|n zv`+re&_Ap@`{PF{pez2HoBPE8{N!r=R=!E6)`2{7IR*wd4GlR1J|18X5D+H?BQZQ6AO#C~ zZj2B*CWQ{41_LuRDjXXdb9E#HtT+@3CgjLrD? z`1bbp?EnCCbHrO*xc`EI{B(5u{QUZAYCAitgoVla`ug@&Rbpehnw!=D0DAxcF696K z_gGjgETMOJ#PUT&N=mXpMX`H)#`N^`Mn3S?zx3nKxuvndD=H4<1_92Nz?A0IqRO~o6>FfcsJ GK>#~&ADH3* literal 0 HcmV?d00001 diff --git a/images/flags/tj.gif b/images/flags/tj.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fe38d4ab9213a814453896b2edaa13d69751c4a GIT binary patch literal 361 zcmV-v0hazpNk%w1VGsZd0M!5h_u-uK^77qdV?>HXQj=5ENlDQ(G~a7$J7MMc=y z*!ktE^wo6Ybaedu{MuGlEqW~$Y!=;ITmTvX_St@!008;<`7(VnK88ND007xiQltO? z4Q37a-i@sQ0K5PI_xJbu`ufw;)Arw&*G*0K(P18O9$lJU`10Lkpk(>!wmO44SeIDz z)_6;fOZCrPBXuLrEG+ligEfFPE_^QZ_4U&{J^TCn_V)Jk^Yi`v{q*$o{{H^I008y% z^#A|>A^8LV00000EC2ui01yBR000Jtz@D)8DQ1oy&t_TaA)bxs;UEx59vV^;A?adC ziG6m&a23ORXuHz5Eca|}BhgiIU*A&0~jkaG!QT*5fL05G(W2+ECd8D1Ff$Y5D>Z(Kgr6= H%RvA;T1}p6 literal 0 HcmV?d00001 diff --git a/images/flags/tk.gif b/images/flags/tk.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d3a727fde64fe5afc971a13eb412b6adfd2de77 GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5hN`-D*b=Cj?i+Ymfv9e^Ks+7aKP_MM8m!g|0N64?R zUCYB)=IQr2RLcMWrT_qYR&LfzWz>w7qG^1}WO~}ArDQl%(d*n!it#^at|=Q zZiC(|ShZE6J+iZYf{ukkUC;mkv==zTQfkCSU%jWNdN54M-O^Zli@vzFe|m$Bf05cC zKgQqLd|RYYmX>1A$Y06EdDhKt*wAI;+=h{!fsvezOXSZ9d5~1|~QjkCxAr=?}AQdfnA{-Di2t6bg7A1rRBMkzH z5h^z*7#1fTFFY`n510}=F*ybm9RMBx8z-d{AtWXXHUtV4t{brr4io_p69qIE7djXK S4JQe}OH2X})YH_|K>$0GgO)@9 literal 0 HcmV?d00001 diff --git a/images/flags/tl.gif b/images/flags/tl.gif new file mode 100644 index 0000000000000000000000000000000000000000..df22d5823900f670fcccfd571052d18619ac8441 GIT binary patch literal 360 zcmZ?wbhEHb6kyP#$Sy@>RA3l7_!0_GMJ0c?LPjd1n28O@c+234TJ_!r|1d5xP{p_&*rmg)+Pw%_F z{*R!bpJ8E3mMs3r%Ue}d<>lq|)5i7z(7Ml|KR4UVotE^o%=&L|@UQzpKYuy=d}{sO z%3#)_`2U;?{~D`4UAO<47Fk&6`p3uTUu)Fn)iu9jVtjmp{>1q7PmBEd)8_B4n!7;T z89+esCkvR?0g)g-F|f5d96If;6W2FcrTOFLj|puWtx6N`*vN7iKMA@Tq#3o);1Gk! zt$2+^+MGp?KS>5w{;})xP+D+G#6U)hgPFUGuU&~<+gh@*xuvYa!kAGsNW&kJvCUQg1b!{qiMqQS3Jb+e7ief^9TsnVMQIBd(jAkHiJ^(TR z(sE@CVl9uho*Qa9Vwrf(YFx==Uu2qj%x!0^001v`OLnM=#amRnCmGavY_-n5b*G3S zZa=@&$l{@y!Pd!uu9CN4UekYdMu%TVh+)lTQ_*Qug|L;uV_;{VecYOo-imP5g?<1z z00000A^8LV00000EC2ui01yBR000JzK%XyF3Tz&o$6@(v{(J@k;l+wEU>?vUfyq1# z5grMLF;p6p3&K?SsvI25s^)5p5DN+Iw>gn=A{h(-03H?#5G@vbEF3Z+H5L>jhlw8- zKMx8b11ORR1&A#l0tlH5Ap Nvp)evPSMdp06X`pgsA`k literal 0 HcmV?d00001 diff --git a/images/flags/tn.gif b/images/flags/tn.gif new file mode 100644 index 0000000000000000000000000000000000000000..917d4288c9424fb3a01546189e8765091127b7c9 GIT binary patch literal 375 zcmV--0f_!bNk%w1VGsZd0M!5h^fNQ{JUsPWT=Xq1{dRWt>+9?Q0Q3L=|9X1*Qc~pr z0R6SK_S@U{OH1`5Bl@wi^BNlVw6yxGtNvYG_C!SbJw5tFMDi08`GbS`R8{_Qa{X>@ z`fhIV4GsHYVfp|7{#jZ4YHIvuX8K)S`$|dR008_?Px|TU^sB4=R8;miH~8o0^Ho*( zy}kXx!S`rq{Iat5WMuTAq4(C-{omjDSXlOaeEFQ5_>`0RcX#~n@BLF#`FMEU008{} z0RI30A^8LV00000EC2ui01yBR000J*z@PBvEBZd4gYsZ7{18wAL9+>oJfm8s;Y3U( zAQw%id+=0%0rv@BEC>ls3-=m0C<-3|lzQJz7#IvO4h{i%8apO12`4!e5d{Jc5Qjb+ zCL|9WH!C+b3<3}rDheMVBo-19F#!S*C@dEj03{zH78Ml_GX(`Q0v8<}10@GoS_usl V6ai>y13gPk)C$%mB|X|f06P+8o0b3o literal 0 HcmV?d00001 diff --git a/images/flags/to.gif b/images/flags/to.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7ed4d11641ae1c1c9001dddc7653973045b6c66 GIT binary patch literal 367 zcmZ?wbhEHb6ky>fLOY4)K-jAT5ud1p)Lqh-N z<$Y05_{huq&Bf)rm)AQ6hOc&Z&lnhfCnkQevifdd@YBlbmy62}GqYa|4Br?SJ~1%7 z0?N9%eUX>{VPf)GQu0q$)}OSrU$L=|fZ|@BKW%J38yVeaVED_x@XOx*|NsAg{`~n1 zM1TMOtEu_@`}h0zAK$-!|L@|(pAiv2vCpQaKdo)Pn3?@cNciLJ^B1TvIQZYce|H%e zK7RbD_>+YJ1av?I$WIJxJqP9oNK9U8B-xv`xzV9c`%w3V)w)iLPIk0$6fCf0Sn%{x zDVLg0>W3fS(so96m->bCaJE0W{(5JbjsdHARt1lskS4bcV_I`7r<{UFCpV*Ny4ZwC zOcpAViZist;M4#va<950ObGx_e)FmLqqyT zM*dx0{(5@(JU#Lg6ZbJO{&sf!etz;UF7zNE`B72*o}T$sRr+CJ{&8~sZf@}n4f;Sp z^(7_x00913S@`7S`8zuLadGn*8T@K${AOnQU0w7aANV&n^D;8v008zZEd1o;_x1Jn zx3~T2>G@b#`=X-vjEwX)Hu%`s^z&1=FloSdBO001^NHuL}h<^cioeSP;!OZ6ioDk>^tV`KjF^ZP_ZT3TBBo16KQlm2vd zQ&Us+EG+!)?)5!A_ck^}L`3*fQWzN-`Bql);^Oy3Mf+i4`Tzj@SXlgKX5Ih*`dwX2 zOicSqN&HVw{OjxS-rnQE!T%*C_Li3YQ&ax6wf=c|{pIEQ?d|mA;@i8s^@fK100930 z00000A^8LV00000EC2ui01yBR000J-K-lQ_8{twt6zaizG#WDtV}M{-Yys7YMG{FG zKARG4D<~>zYaIqU7$YMsF$OCSTPa-< XCNu;KlNBY$Oi$Jj5HdtWJ3#FMOnWx-8hvD?$HWv97lqg?>qvO8n2**KTU!;U!T=C}U-{`~y>{r&xE00960 z{{R30A^8LV00000EC2ui01yBR000Jtz@D%N0$Glhi}FHC^hQvP20;Y?WUfab;q&Rf zJl;-1o)8F=miIuiK_H&WhBLrK7z&=lQ8K_Q3v?Ja1t@t83_Cjq3xRbZA9o!B0uCt# zfPym-A}|9T5-B+`a)OW|5e1(TV`XP&4Y9E&7gi4sCMGN@0W~-jz&}d~#2FbYFBU(` H%RvA;*H)jd literal 0 HcmV?d00001 diff --git a/images/flags/tw.gif b/images/flags/tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..cacfd9b7aacab39f8975b3567d65ab0ac0e62813 GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hT!hm2HZ}K4OZjVVgrwg97pwU^Jz|N}_C!RuxaX3R z+42(;bClWlEiLvcD)KHa_)=2!B_;a+0Qpu|03onbeb4kDAby|S@eK`4c+2`gK<)ql z^*%o4008@8Ve~pW_b@Q~MMd@i0P+9;>Hq-Z008;<{h68F^dBGd85#U$X8K)S`8qmR zfzkU)N%Jx?-v9u8o!jg|OYt^3?MF~|nc4IrvLjctHMir)KbL%AFn40IVgYk3wN9R)E505}yH88dhhC@CKu z5(7LgAsQ@&lqm}~Ndugopp^>?FEA1+ou3VPsu&m#Fd|zMT>=OQ93M9?4-Y;}PERBx N9UUblFh0^j06S#9jNSkM literal 0 HcmV?d00001 diff --git a/images/flags/tz.gif b/images/flags/tz.gif new file mode 100644 index 0000000000000000000000000000000000000000..82b52ca29807dcb6dfcc632cb22c853b52f41fd5 GIT binary patch literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hH>mW~=twm*GgMGB0EGY-n(~~{hJ}v++UjFly<5V? zGv((-l#VL^EZzV~%ve}h(#}Hwc>n-7;(Ez?&fNe~wNi4%b5yxgZpTgG-b62?@`{K< z4wmr%MCfkBZd6o4RI$8w$akH|0C{vt=I~w5=1NXZPUY=4K&|$_y#TwnJ(Sm4U%>#R z-b=3FN5SD+laE&K?OZ=UJoWQQ)zW5VWMWgT08zM1*yTZKziEAYJTs!-;OJm(ZLC>U;-H(TEIYv2%*H~(po?UXafo*1`Y%kZg3lCbT|PZ01^=%eGngK zf+q$A1(7}oGmB>oI4>Za8~_azG?xN`0R}s$92yNjH4hIkJS06RC;$K&#J5Zb6gCbW M9TLtB&=NraJ0=2<1^@s6 literal 0 HcmV?d00001 diff --git a/images/flags/ua.gif b/images/flags/ua.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d6cd83f597ea6681e2afe62af7745ce3f6ca463 GIT binary patch literal 360 zcmV-u0hj(qNk%w1VGsZd0M!5h{QPM7`C0160QB@60C@aYxYzmlJl?hdD5Lg9vioVm z{QLY%`};)m^E6Sn{NlX;a>o7uX!Y{)6MD)207L0ZveWnXMD_JMYr)=3v-k4yE?vI< z^3?!hz1%{t`SI}$`rZKc+5kMR`2d3cOSb$stN8f%H23!}_Vz0E^(0if{aL*JF{$?e zSMNTn&v3-x`1npkuF)W$^Z;G)E~obZk;jVA=Rd9W{ow#%zWV@AnRm$kTDtn~&j47v z{s4vlA^8LV00000EC2ui01yBR000Jsz@P9p8WE0!h;r6yjV90?1fr#}mt*h$* literal 0 HcmV?d00001 diff --git a/images/flags/ug.gif b/images/flags/ug.gif new file mode 100644 index 0000000000000000000000000000000000000000..58b731ad5c6cad47c4f3fdea21763c6537010a5a GIT binary patch literal 359 zcmV-t0hsTZ9Ldc$_uEAD^(*~SQiX+mt4&QrL`0l3 zGwJ{U^I|pg^BMNoHu(4V#K~8fCvvH7Y_<0hzdd<35^L84=NJ^lmZDq z05Tq%0|OAB8lf5xE;BI!8yhJFtPQRsBLycJ9UT-DI5;7@480~MJ{iIb#Kk?wKFK~o F06WatnQZ_7 literal 0 HcmV?d00001 diff --git a/images/flags/um.gif b/images/flags/um.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b4c84839342c61a9e9b079291cb4b021824019f GIT binary patch literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5hkhb2ayyfgnOtAm})YR1Z`T5EK0NdKzxytP7LqnAS z0PXGV={h=h008FZ=2U#n*E%}(_V)1b@a|n*^!4@I0RgAGged` z<}EGM003Em)7m2=;wUJ5wB7vt{G+(wrMcqs^YdVp+5Z0ie}8|_(9rL1Z}Oj?(HgwPoCbr1xqqpGZDk@KR$ya{R?(XjL^78EL z>|2A?A^8LV00000EC2ui01yBR000J%z@PBv**zY*3#h{Ebbcp9RCFu2A`wcjCqexX ztyU~xA&n*zL4qMLd_}Q>B{BkVc|Ofz=0OC=W&j~-3>h2=13MxC1tb&z5*T z4=-gnf*2+Y7aSlT5DF;;StSw@lN$~W2L~`0D=KMghB-DLEG!TWGO2e9c^fnb1Sv2~ R6;2%n&;tVs3Juml06QBhscHZK literal 0 HcmV?d00001 diff --git a/images/flags/us.gif b/images/flags/us.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f198f73a777a6af8d3c8e0b9b2ce48168a216dd GIT binary patch literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hV`H}Z`ug_v_3`oX{6FMd)+t~b6RQz~i+ha=mD=V72{QPBRx?@WGIy&a&mbT%E8IW!TtSPICuH}{{8#^`tkAa18?Ei{{8*o z++%0NA^8LV00000EC2ui01yBR000Jzz@PA!N&$|l2Vx0<{BkH=DIlQ+0->w`_Cs+v zo`Ju(0i zIDb4K9W8?qA0G<`A^`#$8+MVC77acxDm7+kX%V0WxGEYA0Wn&rsXHq)79ulC2u)2S N7!(u-2O82r06XTKt3Ch# literal 0 HcmV?d00001 diff --git a/images/flags/uy.gif b/images/flags/uy.gif new file mode 100644 index 0000000000000000000000000000000000000000..12848c74131363a1a78d279e0df008422b1707fe GIT binary patch literal 373 zcmV-*0gC=dNk%w1VGsZd0M!5h@%H;fi__%fSEy~E0ryX58U@tnfv?(_I+q}t_4Qnix#T&7(5uVr_4MOio7(N|?EpEfD0jtmtKZ}4@0!2k z>gwrJmf57n=+oBR&ePWO^Pb4g)56Hk?(TV^#OU(!mFe&FgRg5)ut8It(x{3=C)|Cn^R8 zDg-qzb9Hxk1y?s44;Ky<6@`X~i5M6GED8Wh1F_g*4pwM4d#!!qcQlV_X0LQl(QglQgWX)=o~N zs#9y#)#_SWs;*me^YineLtc1zyPZ5(07n2WkS>`vQk5}H003XTz0sdUUgF~Kjw3G;uVrPhOQB1;a)vsXI@#Fj+1c!~v)2uO4Y|45_4W1q{QUIv z^Z)<=A^8LV00000EC2ui01yBR000JwK$NBv)N2g z55eGigLPuDf_n42)IJ{$$6^VMOeY0P^?M!uJv}ZA3=IGPJU%=XEr5cAhKN2OivkCM zgN28QARs;|ZgnGfc`Pghs3$)p5)=?N86^n`2(>yoC94t<5f~UW6t1wbxg-n63jxXj KKh4fRK>$0~?46DP literal 0 HcmV?d00001 diff --git a/images/flags/va.gif b/images/flags/va.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bd74468d6b328a625c2c3a44f46dee979ec4b97 GIT binary patch literal 369 zcmV-%0gnDhNk%w1VGsZd0M!5h`uh6&>2vnuTm0>e`|5i3<6-H{0{iTR`si-*^77r?-Sy;d*4Eb3)6(nbtn}eki6e!)2#sX_4N1m_xa~( z`}*d=)eem$>`1bABvjFSO z2hY#XA^8LV00000EC2ui01yBR000J#K$XGgGkA`!O2uM9IDMt)U~m|q09e3Bt~bosFgUFR4!2l23cLIxVa!9Aw3uv PA|fvk5D^hS)Ik6{@a)B^ literal 0 HcmV?d00001 diff --git a/images/flags/vc.gif b/images/flags/vc.gif new file mode 100644 index 0000000000000000000000000000000000000000..48213816af17a104ca3d031312588ff1ec97afc9 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h<+T9!_k92)04bs=7nv8M*+f@Y(Rq2~>hd=H{8IAs zTTHS{089Y!^dz?4HpJ#eOR_ES@J;{#v|wP=X1y~pr7`sM9q#fd=I$2!{A2t3MU~Gd z_V`Ed??(I909LnE-|so}_C)>tZ~fZiZsGOyJ7i?uJ*qu|g5K=G0Qvbm4wMe~ z_%#3k#{dA4_Rs+I@l$)qMrLQ$x7{S@@E=65LZjC@?Db3Z^kDb*E{4l1{QOLw(vPW{0^y9Kt#=06`#+-d6>;| zi3CrhSs^L|8+SHQByb!KqJuGP8#FZp1Qh}jB?crND=iQZ4Hg&#ETR%8B&RJpJsTFTEU}{}Y;GJOAtokgXrmG@ QFDlL|0MP&f)B-^OJ8QU=H2?qr literal 0 HcmV?d00001 diff --git a/images/flags/ve.gif b/images/flags/ve.gif new file mode 100644 index 0000000000000000000000000000000000000000..19ce6c1466f493ff8702f776364295095e8f6f2a GIT binary patch literal 364 zcmV-y0h9hmNk%w1VGsZd0M!5h=;-$J0s{U0cl`WmJUr7F7|H$S0Q4v*`BYTv008{_ zTlhvs`};-f!2lv6%=Y#wa&qIDndM4K+Vd6`{NDhECxQ3(PE}Ri`(a{T2v_<&J?Ogt znn#xPJ3I2$0Q502j53Gv^7#M&jY5_H_S*or)BybaO!@ge`1m&f0KWbGRHdcr_xCa3 z008~{QMuY_eHnPH(uwZR0O8{CgM{9$YN{kh863OF{$woXuOh6r26)05&!b4g?~2dwnYeHxV<01%`Nh0E;(* zjs*obA{jLt96386AQcrbs4yTt0T>G!9UmVD2NSjv0Us@`7zn-#z#Xx&2R{MF3CYSW K%q>69K>$0TIGSMq literal 0 HcmV?d00001 diff --git a/images/flags/vg.gif b/images/flags/vg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1fc0f96eed0e8e31729bd61b0dafaafd9e2c76ea GIT binary patch literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hv2~Z&tGEgRk^lftJ3OnlUwTx6Q{u$XEiI(VevkkF zGOEL%N=ve1W4!Y{Hb9*F{CK-*|gnUAlM>PJ3Ra zQc|_7tXl7(omPZrGc~4?bEzUCpn;xH001DLzMfcEx#f|R*P5w3Jg?<~fnSSWex`4n zmS&=zZ-88%gAql>zg<5+t~ffW%@r4ygT39(-^jveQ&YZDNvvFvN#bZ{VO6h+dcDrEeN++Tb~mIuCKQa OP0b3=3MA6fK>#~4#*32x literal 0 HcmV?d00001 diff --git a/images/flags/vi.gif b/images/flags/vi.gif new file mode 100644 index 0000000000000000000000000000000000000000..66f9e746b6aedf561e504119ba5827873e95414b GIT binary patch literal 376 zcmV-;0f+uaNk%w1VGsZd0M!5hy}ix*`QYQ*DC_I%kJ8lA zu=VVWcW~0y*4KiTN%-~CE2lM>r2|&>G$uO z{QUH*s^DBk+3d~G_xJhG&(HAaYxnl?>(w6k^1$rhM)K@)=;-H*f8e~%ro6nm?(Xi+ z&MV&AUhe2I=jYAIzf$h**5u`u*46Ut<)i%ezGP6{lCw>moZY{_ZT0I`%gf91^78!r z{PFSeA^8LV00000EC2ui01yBR000J+z@JdaDzXMB6k!?pQ33(m!nfJ@D5b|^QE-Yb z3kv6y;RHk&h)c)vEi9H@YBFIIUM&c$!2l^P7#R#V9v%<^E;Sth3^Wx!J|ZIr9|sT$ zIU0)z5)vQ|7zUIFCKU+;i){u55I8e2I0ywK8a+KB13s%PDku;n2stZ4Jv=C@s~{jF WG7=RPw#7#~Vbius< literal 0 HcmV?d00001 diff --git a/images/flags/vn.gif b/images/flags/vn.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1e20c9412cd1d7b33b1daf3b2c178896dc8b1e3 GIT binary patch literal 370 zcmV-&0ge7gNk%w1VGsZd0M!5h^*lW6008s=0RMV=Z$Q(|r8}|tomt>1Gt7B0Re2K6Fw*Y-)IWQI#0Cy89EhP>g9}zJa7Aqu$J`^n` z8yPPVGc}PU4JQN~A($C15i~qIk_`Xkh5lViL;|4Z{t5e0n`vI=`<^?c9IDRa7k-0NcGH0H6RuK|iOTd$6W&mU?-! zOiSd=P_uOaRjpM3Jpk3mb|N4h&A)S7bXb)D0LPU8)vEyM(@)TMcNoVRGchg`#uNPj z00000A^8LV00000EC2ui01yBR000JxKojm~^BIpmfKvHWkytv8v_M5zHGp5J;<=O% z8VF=S#$dIb%H+}#lLr_KBrBUR46a8i<>2usGbukmG#xn)1_A;Kj2jy#0xv%+BXnFaf>|z!4DyxIZ^PF(}Fj L%n1w6&p`k?=S6^; literal 0 HcmV?d00001 diff --git a/images/flags/wales.gif b/images/flags/wales.gif new file mode 100644 index 0000000000000000000000000000000000000000..901d17507dfa6428fee33367dfa321144dcfcece GIT binary patch literal 372 zcmV-)0gL`eNk%w1VGsZd0M!5h>W+{~y+8f^{g1|Rx0K-U-R{uKzCkbU z_V)7G*vVT_dvPE6`1pF2JmiFbAX}WbY>sxB#C-6A(&>Vx9`KL0eoJ z0!9a7i!BnMtsrrUg&Yiss6i5?1vSA;vYJ64A1xyQ9w0j^4<`&49UXBU4+I%1DLw-V z5(Eqp5e^O;B^o9-7?uhd2N66I8xtllBPa!>mjO94HykV^8Yns_9JB*93knJ^2RJev SIUK$0m_LeLF literal 0 HcmV?d00001 diff --git a/images/flags/wf.gif b/images/flags/wf.gif new file mode 100644 index 0000000000000000000000000000000000000000..eaa954b13694ab9e3aa3f77ed03e372f47abd722 GIT binary patch literal 377 zcmV-<0fzoZNk%w1VGsZd0M!5h&PhqoR8+<_HQRP}!7eW1m6hRjw5!6hZfK0Vrvjcot`l>h*P004CW0M%h( zi~s=2L`1g_56L<@oB#mVW@gMmL3{uJ+HY^zYHHJ6UC~ZX!!|aLcO;jB`)Sd~r&_Kx8K1!xK#3pNWCBR3HR1_nAiHUcgS6c#Nx zBM>Aw00#^o0t74)76dOS8W1I&p8_>05(_OaGbD|`4_aIa038Sw X5-2MK!%I#a)EOBg8rc^Y8bJU%oBE4P literal 0 HcmV?d00001 diff --git a/images/flags/ws.gif b/images/flags/ws.gif new file mode 100644 index 0000000000000000000000000000000000000000..a51f939ede562216b0b37b393dcb489ed82968bb GIT binary patch literal 365 zcmV-z0h0blNk%w1VGsZd0M!5h_e)FtZEa>|qxn2NNlBFUL`1#4*76e*_bn}YdarbA zqV_5(@-8m;Qd0FLCHnvX`Bqo-ARzG#4FCW$`anSL008wqKIQ-b`(a^OS)BAbI`=Rz z`$a`eL5KDL08vMZ@&Eue^dBGiHa7S)H1io5{AOnQU0vb;0QovPoSnn_ zN=X0!Cr3Mj^D;8u008thHm$JGc6PAP(c*D&sd;gy{7+AtqssF&H9|rNfACB_)6>)b zz`*{@%=M?I_^+?*JS?uRuJrZw_IPddab@*&Y4P##wY9alxVZO(dHnqR^z`)g_4V%n z00000A^8LV00000EC2ui01yBR000JoK%dZ;DH=6M&EeqlcyuF)gl4ND5GjL$>A7Z6 zphjcGV8pf}SF3fwU`VABOrdy{Ouf&Cv)hFR0|W#GJv==V6nlMtfrEtEGj2CI139h2?+qF8yg7~KM(>I76BC%549b)tgR3cyaK+k0kXM2#Kp$PK>#~Y Covxz* literal 0 HcmV?d00001 diff --git a/images/flags/yt.gif b/images/flags/yt.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2267c0546ff372e5c0717dc7c79518a2e6c7cce GIT binary patch literal 382 zcmV-^0fGKUNk%w1VGsZd0M!5hN=dQI%E{&B<^JgC);3%v*F7z?w%N6`wAR(t?(XjVva@bK{F;^OD$=jrF?_44w&xw`uM`}+3w z^6&5S^Yi|{zx4F<;o{-`_xIb`>SAQR@9*%~*VpLl>iGEh`uX_%`1j_muE@v7-B3cn zy}HE5;qK(*Vp_BO`S`A^t?KFN>FDP9@9**P@!CQ!^Y8Kg{{Hgv^7i)j-QC^K&(HPs z_5c6>A^8LV00000EC2ui01yBR000J?K%WqU!EqFd*XuH~2tdByZxHc#3fMxVc9QU- zxkV_HifvGv+HU9d<#Gsw#?`2QOoGoY;Z6hsHX{Io3N0BcJ|!JF2OJV4Fd`xVGc*<% z9}hMQJrfc(ECdV$GbRoW9S55l6FLekHw+9FATkiCBnvw$I|?cWz!ftNGdevG8X6WB c5*={}Iy^iS#tKbOJS7hY2LU|?J>fwBJ6lxJZ~y=R literal 0 HcmV?d00001 diff --git a/images/flags/za.gif b/images/flags/za.gif new file mode 100644 index 0000000000000000000000000000000000000000..ede52589199b0360eb5d92c3aa174dd9b4eda473 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZd0M!5hF)_^b006PF<;vvPpxUzcF*1+H0QR@I0052rWoA>f zX{nC@YQJ{?X8`#~NcpCw=<04pMbkU0T}ZKL6cofkuVd!hTKQL3laW?hxOaNUkaBW! z=I!PinK(0|O8_|l0EH1asaij)VRO4@DWOa=rdQd~%iPpd$-#c2o?ddgU1ML%_`SbN zzjys_a44KW>GFq!yIRD9Dg=(mWWb=&5I7H)D?zi00;(L8Us2Jz!9{=2n`J#0yj4Z J%+1b006TO7llA}r literal 0 HcmV?d00001 diff --git a/images/flags/zm.gif b/images/flags/zm.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2851d2b405c7ffe20eadff1b0bccbb7fe8b62e3 GIT binary patch literal 358 zcmV-s0h#_sNk%w1VGsZd0M!5h12q8d85sa)0AZ|Qe7$@CSO9UhacQw>07n3Xz=QyN z09mM6ZnbVK7Z+x*X59b)mC2R!C@AMFC6309Ri;(#I5h2qJzc9^6%-K4004-?hyZf{ z?0+_7u4Cl@0C~K6QlwILxpq#XPLarw=%i(BvTfa;TRAi_=t4Y6pGlmsb?BK_fWLrh zvuo)zF7Aj!c&=#iibv>(IcTqFdAWIBu3d}7i{vC6S+r(QqEP3IKjWfbC?X(Ns8<7l z0{{R3A^8LV00000EC2ui01yBR000JqK%da3C~h`_WMPT$L7t<@#HLB8NITOC;A9a# zAp@i3z}0jzSQGLMj~$)Mf|8p76eF;h9Ir%pJTV>$6K-S!axQ;7FCH5G^(%_TIQaKBkgjm`_4Vd*NT%Co08;=cC@9!j zI{p1s{QLW%S4PJ=83BXlXiPMy_R-c=~E;drwE0IS|{@$n7s@9&mlPWSgoJ3Ku1){pJQz1QK_^1WV( z003VA0P?x1qSjyW@A1!4Hs9R<+)N^;rAxq3MCs`O@AB}RTvqYy=#=S< z9u8+f4xDa0TB@-xB)W-I0RP{6BNP%#KZtT7E1^c L%M#Ad57d~vNzfF*5H^OeGbH3-;7F4J!WJOy0m>18nSrPv^oBtS)i5FLRz6o`Zau@D^#F|jZdh=qf(NN_C7jD-VZ5hyqo z35~@!mLpF0?*_m>UO5{0-Ua@ovHE zi3_U|*XuqVA2805zrTv39vY!?DmIfhPu(7wrCPda3mWadJdD22$hD8Mekj>T_(|_6)$tO z<#ncC2gk?>MA^A9)^0r)9oHMHkjkv53jAmHl@AW)tQ2;88+u4Db^@<9TN^updJd?( zYEgJ*tD@3D;cDNd(XY4^-$`(W7W~ zlZnNZ>(p%tQo_V4Z#-yZmrH7o8^nJy!>rW2ahyn(e;lI_jp@}3hf9h)1}t+Cjw8(* zqZiVi3j5K4G)|Yo1M>Y^GyA!zY1YYLb@Q(tpPAbPc)jZ5v*gvj0q?TxZ#f&;8}bpJ zb}CxkT70her=2QPyMp)4q;F8TY%UKK#k(gtqTF)nJ@h7qxP=S09A#tTxu@{>-JXE>1@NdVnf=r;V>mIa8EgYRN{iqD7h` z!usod9C4)p**3BkS0+eS3ta5fg43ZR4wJyuGE(;8_=6v0N#0FMz!|Q7wUAk{wk*M-3LLz?tYihrE&+=<`af^ljI3AHLm@~2Z?T}ljYV>J;sU1#q zr~B7vKHF2PsEGD~%pdQztXuhce1q~p<9EjTzv=|{y^mFe_s?f`^$CCPnsmSBZNc)Z z`3s3Ru_s$D_myGqSUC?5Wo$PY*BY>fK+?8%hc-{Sa=cHbZ$x(Nh#z>tgaferAC+}s ArT_o{ literal 0 HcmV?d00001 diff --git a/images/forum/smile/1.gif b/images/forum/smile/1.gif new file mode 100644 index 0000000000000000000000000000000000000000..f41e41a7256d7e645871ee27c97c134291bb93de GIT binary patch literal 948 zcmZ?wbhEHbC<=;qo)^nDU~bNyw&vVL{2tpk+*4b``g#th~&?s%Z6e!&J?%R!*CUyRROuKE%wy iRg@ZaZOtJjlTNk*?+eV0j7-nmd{#`zIMl$vU=08c7;Fy! literal 0 HcmV?d00001 diff --git a/images/forum/smile/10.gif b/images/forum/smile/10.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac97d89502e28451ede3536e3dfae68d5d120641 GIT binary patch literal 979 zcmZ?wbhEHbhI@Ay?%ra! zeUstlb%rY!87^OBxOk57>?y_*M;VVFVLWn>@%(AV)5jSP?PWZ;mvR3t#{Ih)cW-Ch zxs`FpX2$KC7`JX<+`Nu){VK+FD;d`=XI#CMarH9B6^j^GEM{E3h;i8h#wGI@_wV1& zFbYOPVBkVP@h1x-$aWnN0m>5$92*!IIYf3WN;ufa!6;(Wkl@J7!7jK?!Jxr`k%dRj z<-mrd2QG|^ECLn_4mh@Q%UWs4Y*2Dwn8wK!_25F`QAQ>vo=G|#MlOyltQt{ARtPq; z3$ltUSR^zobmkB?sgVfWz{t$XDPoY};ONxGr{E*f@*%;MnVnz3W5poFP%NJOCG zp%$K8*Es<@nGUmZvvGH6Omtd$h)>3<;s-<1kAA}R$8jm#YEg6jkf92y##xg`Qt zY)E==gn@yHLt(;#gU#GhR$4L)39Vg>Y$7|3Y*@J1ak^%hz=6u*qm0a2MPfWr2F>kF z9DHxSyxfq`E}+h36*0lVv5A#W$!Eg?#+J?|0SS|W3k{4doZ=P^vWb%qHH-3Vcx*V3 w*vc-X6&|vqVd3(2A*B$lD;pf0+XNK+CUDHz@PM6P-DiX7ogZn38W(`=h`A=aebG51s!qkAdO;|NndU z?qwJSqaiR5A)xq^g%M=04u}Bd2?mbk42&EiHx?xvY~)}RQ89En($2>&xJ@JRQA?+g zl1b};wDfTWuZfuXsKslVY;;4w%_LVYVUt`ljTaA>o)xkSHqf~7 z(D{T2Z*N=6gar%Q_~aZ~7#=QcZsQV^QqYJ{Jj})?u+ytzL4$)2mzZ9HfyBduO-vfm u4jl@KPTZopQW_cp3`?EZcx5D992VpsYGUIPkx)=ba%yG!%f-XNU=08&af(0y literal 0 HcmV?d00001 diff --git a/images/forum/smile/4.gif b/images/forum/smile/4.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d22e98192c9d3894c3e277f5ed314ce7254bee2 GIT binary patch literal 974 zcmeH`ze@rE0EM4;dRJk3X6BYs4$%!Qg3)p)S)quLl+X`UDx`=cTx^Jxq;jaH3L-KK zmkNwlhjWS=oE;i$Yi)|ASN;_(z2Wi3j}P9&RKPo$FvE;5K+`lfz!y*hYhV?80w2H% zcnMyCXW#{R1RjG0@DSVq^I#U-1~cFWxCyR->tF(02Is*=a0#3R=fE%+0jI%9FbIb5 z2s9cE{O8}mUmI|J3%WLg(ysO=Al*SH+0M)HdQQ^Wlr(gDQIsnqYW#OecC~bpj2HES zAXwCvnm5WyCK_{&?_$V!8^NdV+18=j2eYO4Yqz1#SxU(_fli0lmeEkpod(^}Cdw_n z*kyGnUYCDgUT~|as;6Ku^@rZ>RhO^Wlb%UIPOcP94yCCy-~EzxxOeNLb*&dI10jTC Q>AeGs8{%rslTd-NAI}(b&;S4c literal 0 HcmV?d00001 diff --git a/images/forum/smile/5.gif b/images/forum/smile/5.gif new file mode 100644 index 0000000000000000000000000000000000000000..015423495790ea95de8057677186e0c18ade8e84 GIT binary patch literal 983 zcmZ?wbhEHbv)eATl3hDY(OPt&?zX7s(zp75q*`p5EFpX(NWZ(jPVXYK#Jd-pPo zg3%Bdpb${}$-)S-S_edc@&p6N76wKRkrRs&4mNTyil`Vm9ckxd7u=+g*wor7q!f{} z;Xsl?x1eb70s})PmTqn#D=n3SO08WY>K-i(77LZR1r)gZWC8_Lo15fZrf5_cDsyuS zh>5)U;CO_ijn6t|!3PFMM_yT*1`ftU&g{IRN(L4I8=TsBWq8D ziA9WyYemXOhNc!yAqAU+2@4z;rgDiJWE@CfY+`2NQ`gBj;Lym(q@)(I!Yt8&fx#L8 DDi(Sq literal 0 HcmV?d00001 diff --git a/images/forum/smile/6.gif b/images/forum/smile/6.gif new file mode 100644 index 0000000000000000000000000000000000000000..d000ca5aa602660b3feb9f529fc906daf7e16afc GIT binary patch literal 979 zcmeH`zb^v;0ENHSRgXiJlSp)^M1(Rl(&4aNoBFj8Obo?p5HS+%RWvPy?;1M3+ z9mkz6E<4U;_v3#Sz6%Am))oIjcv^m?+7C8PyhdI^DT?uj+`ENF)75X41L^d)A-PgM#Gg z^2uZ(J%Xcc`c;{Y-X%+G!7u`*RR~a*2Uh5l;l)NsJ RQuRSy7`s`&Xs!_H{sALgU0nbG literal 0 HcmV?d00001 diff --git a/images/forum/smile/7.gif b/images/forum/smile/7.gif new file mode 100644 index 0000000000000000000000000000000000000000..993ef075ec560a1c21035df62eac0efd4281aea6 GIT binary patch literal 963 zcmZ?wbhEHbKSMTTu0q&6#i)hKaZ6QGR%&Lg)5+POTfWn{Zohf;UbDu7 z7M&+-Ctq-$e%W>QHTM+{{r>;|zjyE6;NW0}Q7{?;gDC_Qf3h$#FfcLbfE)$N6AT;+ z7+5((A{HeaY~)}SxiW##nU#ZGaN36t2c6q_B{XaT0+JFq1r)s|FkDn@KEcXirNxtZ zq4}T?r`5C{0Za~#v(2)nNd#O_We`*OTE6q92^leEmnwb2( z6HY8>WOi;BkWf+h5VEk9TS6~l0mDK^PUcimw+RLhQ#+X%A8F-0Sa6VumGi+XRSscC P#!Z64S~W8b6d0@l6aQzO literal 0 HcmV?d00001 diff --git a/images/forum/smile/8.gif b/images/forum/smile/8.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4910467145898fd2b3535505fa25612d82a94e2 GIT binary patch literal 979 zcmZ?wbhEHbp1n!(VN#;||?euhyn8Uh0v z0*XIb7#VXJ zNLaw&+%BMz@j+oxLNhC;fJ(%Nf2OM0P*?AOvHcW6l+97PJ>JlL6$kfW6 w>pUZ1B~x=N7aMn*LZj1CCq8M5k`EseTRIPMayM}(E@Fu}Jds(Qhl9Zy0JP|G5dZ)H literal 0 HcmV?d00001 diff --git a/images/forum/smile/9.gif b/images/forum/smile/9.gif new file mode 100644 index 0000000000000000000000000000000000000000..59bdca5a6ca13e75689badf12e023ca46d6b5c33 GIT binary patch literal 981 zcmeH`%`1a(0LQ<-$1~f^Y)_ssYcxw)2rbE?{0x&Ea5Cj(V`?`qarQjsLQP;sam^9=y1B-sYVjPaV3syI4r|K3HFPz zTZo+kumszA*vi3XHZ}|hWg?h?pbo1XRy0^vV@ZWY6&B=R0D>s64lDxUa2Wsm8~76g zx!=E;{!)~f#3!KG15xmnkn2=b5WZ?g5PeEH7c-R#RAklWju%sJypAMm^pDzLC_=0Z zt9MZ`DaA^M=LZEr0HZKE-`AMSbXhvT=H)`sG;<5@nTZQzGA-ZpMeX%9a&3mic`b=- zs?omVY#p$(te11Xy8`voyhqoyMM+eZS>p0juFXBAHk3>Hjmdx9f}n;{2%o0F%K^k=1XP~YDq>m@VFyY{pcW`637jN6bZt4^ z02pc9NRu9#BpBSt;Hw#rogo?+(!+p;21wRpX9=K|B^p=~z**YE(gX{R7?LAuITC2# zNSvbq562K3=oy-0X`XE0X`H7$JOdCsXgEfoae?s&EFrL@z|jI|cz_MFM3^PR92w@B zFxUzJCvvpNGorwXAcwg)&%_0Qje{KK<079B*hH91fFKHqxR4aNq{t`ZfRK!blZo&| zoS%pb6CfnSiKLiLgwshtOi#ogC&kBLO(&+(iNF8FK>yEw`T|8Sq!I}7KyOUnV){=& zir3J%Vy>+}6!j_4rOv_rli%+}GxSE@-#Z&=oEz@aqUA_!Wi=thZpA`(C(h>u5+6DLMm0ab8#WAT2&R_LDj%p#9 zD>-BsS@;8{McdTB1V>6_Wy`E~!ynD34hN*oNtx-v(C&b{ulQrv*r~|URn}Z39y<_R zl3g6U>mGlY8HE(|{%oo;Ab~^mmA#vOt@P>lI|EHyQHc>MUIw3Dv%ncJ(6LO^qb^nm7B&IpS(RbQycR8un}cQn(wGKMd~zL zUEXbQ3c+*rFRJI~*R_^gJK)>JK3O5=H_g=16sw%am@=}=j^D>Ol-;V&$TCQaVxMOW z>+-V~Ye%R8dunUN3>c}VtJD?+m2Di%q;fFEVpb}3{`>WF%dSWy9b(F>FiQL;xo*-m z(5~4u61B`T8_jvD!cU#-=QuGM?MNwzY zyuru-W*dZ-AVc~&16!P}|in?uX__g&)yHYmk-dJSpO6 zjiTn3pjVby`~2m+*{kN5Pwj#`LVY>r`d0*EL-ty_f81Gq*jzK`)*45n%iB4-sddTJ z_Uor>o;iP#H<=0Zr}tis73%&R?({kaTv27)*n5}mx%atK1x{+Ozw)&E#N~+{H!to{ z@9eQ&bZ5FxOr=lWusp}$4LObO9`rM{{UX{-pyLN0?fC8L3T*4$#!KoN69m2U58}s1 A3;+NC literal 0 HcmV?d00001 diff --git a/images/green_skull.gif b/images/green_skull.gif new file mode 100644 index 0000000000000000000000000000000000000000..78740842e352d7d0ffc6667379769e9d4b5bf509 GIT binary patch literal 905 zcmZ?wbhEHb#ld?gJ0bwIKI0xb*zZ482w7zC#<2+d#+ zn!_Nxh(Tl-gV+uR@gocpCm1A7F-V+aki5nqd4oav5rga(2H9^6O8;3^{Hp-0|M|`Ti#z{UcK@%Q`M-PN z|EWv=&)o2T>Bj%dH~(L`_5bSa|JNS=zx&$%i(qGt5~CqN{SZ+6$->CMz|NopG8&X8 z7&y`x_+=OzHYhMOGACY`@o|w02Masnk&cazS~^AKRBRMFnwlB7R1`!K9yBcAU}uiF z;L&iPiD|N7$`*qL$0M9fg7zUV1QMLtxY${lW+XTt?O=0kZCdfr>2T8$C)=0~2GK;v K7Ir2k25SIE9d9uJ literal 0 HcmV?d00001 diff --git a/images/guilds/default.gif b/images/guilds/default.gif new file mode 100644 index 0000000000000000000000000000000000000000..404a0df8c95da49936f86f02a720160321c094fd GIT binary patch literal 2854 zcmeH}>r+#A0)~I*%IH zG)#d347>sFg95++fU^J!+)yAyfd~a*3ot+w1H>~x3IoU%;DDS3a#B7O^c~CE=0yDo4pbjp@2pwNH0-) z9W{VB>u{LV^LBM~_~r9&MXK?$>BTpv@4Xh@XiQbx$X(iJ;w%9t@>kMRz2c0nSK2fZ z1V6+{J9m;tZ+|{oophsUrOe^QSihm&9Wv;%V0zHdw)S z(?K4>)=2u=CNV(+!QKN!a9rpN{L}ullgHPWrxR^{j^|q9UwH{}61E%ZJsBgTjt z6%J4#924g+>H0ATc2c4kBSv%8cy0CTVAe+oPHd>hU-kOimWn6N*k0MaKX5oSjS3d6 z6PrOsansLE4v2=Y0CtQyEXlWqECf-=9z|Y~-?Ct^y!U4EnB>x*cVn6NWv+Sqv)*vQ z_g+%5UH|IiHI0iWh2r`1{L{yu$Nam9ec|&zT=3|L+)pQ>?WtbB;E<+UmK@A}+Lzm4WoOZJF+b*oy5_7EG<`v#X zl9FySAII3Pj)rM$x2UP4ZvYN0=VyC20E)6ML%>&js>Z`U%Db?{#hidf{Jsg=ZLQB$+>BUq?;q@fM@N^n z3OwhThch!mtf%EvMOtcn6%i0a+QyZx@`(f8vb#aHE^*7YX5EcDxY05UbUHO1tMuoW z&;!h|NHR`)a1lpCaYz}-V|84=GQjUURF&$8vKTtknss^WT5+h%!<96fM=rfXj|U9V zsli+?%>%_W4kNb`nR{Wgj!CmN9tGIG{GY88ew!mDkX}lVs`;MHNC}AloOh{Me2C{J$x35&I2kGE@AG*K=yHr{k5eDS zfvaeo-QcpfW#!S1GxJwpa&=F9;J)~h;0qFBk4Z&x4c4_kdK9wsn&3=+veK~}g`dm) zYSJa;9~2+!dcl3MD{2YX9TicFbyGlNld0`~w zM4ORh9E*bZIK)apj4}Sc(eKcV^(C>7@k-Cez$iPKw06<(E%@!z-Y$I0mrD<}pZs|B z&7_tsD?aGi8L3aJg#6{VxK{^+WyiA9tu=|)HG}m{i{`N_?9o`hjT!ZKIjo%h&GgV~ zY^UMOju5UKum0Ec9ti^?&BqU(_42Gb6YTQ_U!Tn9h_clOT<$;5?EK2$xsu;}e&h4; zi$~ek#1$NqrmD3BIq<}<^6MXR9@g|N@get2tg)4@Ex7YCdvVTHPe-GknLwCTEStmarj#^TRF0*T;|6C!Fxx=26k%q$Hfvq+jGa{tYrA}vL9JGGfI9a%By&c2B ze9q^|w`%@EF-V?M)eerP2*4X{;}9vz1ss-=CFrVPJ7m4!xmOLg`Q{M)1BWvm1I zQr14}eeN8fN_$I+?$?r89+xOH#V?BLapcAPMM^xMw6q~SAbM11`_7M~Ngbp>Ae72} nR=U{t&xe7deSNF!p1C~$0X+Mz8}yCO=Dab*bcNl*BM$!`|0Iu- literal 0 HcmV?d00001 diff --git a/images/hist.png b/images/hist.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6b74cccd9ca72c216bd6862924db35a25cc7db GIT binary patch literal 117 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 RU}SCM^&>L+7KSzcKL8;Pic|mq literal 0 HcmV?d00001 diff --git a/images/icons/add.png b/images/icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/images/icons/application_add.png b/images/icons/application_add.png new file mode 100644 index 0000000000000000000000000000000000000000..2e945076cf7686b3b408d6eb2cf913992100da15 GIT binary patch literal 619 zcmV-x0+juUP)0Ag3?`k8$#1J0F}NdayEtTz+~+#EG995YAF(1xew#=1J)ogJuY z3Lxu(1VP;KAh`GKm^?X0f~UCV*)Nf5F(3GKr=#9qzp;L29U)FF98>T4&VoHZ|-ho>^FRq4ws;uOVa=V002ovPDHLk FV1kR43LgLf literal 0 HcmV?d00001 diff --git a/images/icons/arrow_down.gif b/images/icons/arrow_down.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0bb6a4ea640d9b2beda344c7485d260f5761779 GIT binary patch literal 131 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^LBUDS)q5?HkM0ihoS_kK#PIl-D%-2j1P>Oa%ti-AnU~WT VI^xvQF6&qvTT*m#iwgsTH2{W9F7W^W literal 0 HcmV?d00001 diff --git a/images/icons/arrow_down.png b/images/icons/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4e279377bf348f9cf53894e76bb673ccf067bd GIT binary patch literal 379 zcmV->0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIF1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^LBUDS)q5?HkM0ihoS_kK#PIl-D%-2j1P>Oa%ti-AnU~WT VI^xvQF6&qvTT*m#iwgsTH2{W9F7W^W literal 0 HcmV?d00001 diff --git a/images/icons/arrow_left.gif b/images/icons/arrow_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..932ade1601685c41edc2dd9bda214ef64a6c1283 GIT binary patch literal 131 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^LBUDS)q5>oFTFC&>rw8)8@*v1Dr+iMvL^E6%~Eh;Sd$?t WxAs8qPPGtZ@;%yDC2um%9*_%b^H literal 0 HcmV?d00001 diff --git a/images/icons/arrow_right.gif b/images/icons/arrow_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..780431c2bb9277f136b819bc3f184cc5ac0916f4 GIT binary patch literal 130 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^e!)r4)q5?{mzsonZZAyOp_;)oL)=2bWn-5p2Sa1ShSFIw Ud!#sBtwr7EEh)h($ literal 0 HcmV?d00001 diff --git a/images/icons/arrow_up.gif b/images/icons/arrow_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8234178efaea626368f6bb5fffaa716e862b596 GIT binary patch literal 130 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^e!)r4)q5>o$4-6JJxOK08WYFNxvd2&rdbFbPdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O^9OfoSNCh6N{UH*G>^7ov@7G7j2))Sp-vPxR_~|#}oBaGXXEK?XK|Y^H zHk(B1f~_(T2#W< zvaL<2kX^Wk+SW9-V%M=b+k-`2ClPnyl}cXV$lX>%QAD9oKqix6;&?ocXf%qjM~iIW z4r(PA#H9|DR@zYr^SQ^mz+r?4uyTP%4!Uj$G3|@^f^JjEqDb4hL3OR}pcKA@uPUsqI85-ih+cW#mYc zi0T}yV>}fm2znF>#s1x2Qlrr{snu#3KhP}(-}k}y;R(|2Hi+?dY|h`tqN){Y<$y?p zaw0sq=UXrho&gF8gkM~M(ASI^Qdy9lgzj1YCn7%n-^X;n>!?(5DN%7hg_ zql4Wy8ok7Z25lz}lpb~*ktPRPq%ZQ*4qNZB!+VJ-egn1}Am_E)wd|HNMlZ|>D)M67h? zOIjz3DJbk0=97q(mSBd~-ilc0Oupt^z$#N6O&at_s8u-PL@9M^gQuq(+UH^IB$&*DHP!HzH+vkEzC?S52tN1$mKhziPkOR=y$ zhl#aO1Xly_M?EkN>tM6E5T&Ht4dh{0oQr6Q1b3J=sM^ACOsvD=TSP81#0oTC1v|Df zgpp-GhL(KrE_8t&(jeFR1W%(osQ12tvSpHp_}~HR_8G{VUO;FILQv(P-b)es=)ZlJM#c>{Wx-rgY3D#Ol9rJl39A<60Xo5cneo(9g5a4q>ayzV-7%Ue2}0_ z&TIets{Cl`n(nefrZ+9F8|N&Kp}^StU2b+&pVj;XvgEdBL3Wlp00000NkvXXu0mjf DwZ3{L literal 0 HcmV?d00001 diff --git a/images/icons/bricks_gear.png b/images/icons/bricks_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..9dda1f3b7f68d85b68bfab89e22adb5761252101 GIT binary patch literal 876 zcmV-y1C#uTP)}BC?QicMU^5VL?a?LB9X8V39(?I7E*R1R(9AS8WMki$D$Eb?YxS5O;PkQ)zZe7i&(OD*qKgEa-hLrn{EeHY%)w@WN)m^I*?RV}xV51G@XX=oMX|VH5kxA12qd^*JUe-5E5vyz z*o46DI)>u@gYaZIxSbt6Jw2cfv&o8i?f6lefyaC}RD^ct7MQ@-)>afYZHAFv05`fTwOcY(uX{m!`!-R zbgphjLV8VTxDeZP|M7#V{!Bj#W)Tt>QWQd%_&SMvK95SJf@JL+=$e74??o^U;_;6) zHa3pY@d*yfd%?0Sa`IyLfwELOFR3)fI0JubCw8x^M`LXqf*@dGY8oyNY^+Z}*LB?J zAH-O>>eo+1rk%1hOvQ!2cN2d2?-uHXIEo8vToeK|KINWnNa4+Xt#u)Ykn|6RndSZEQHfCZG5CcC=T z`(o_NTOjbCK|GPF4%)<=%>`agEOIe^kJ+gSd~H}=`AYZIyJS-%Y|LeBxc&DE@kHvV zh>Ui%*7I#PNlilw1y@n@6l>qJC^2jm6{4Z3p@!y54^361Eu)pbu{`o1V_kbZ`MR$y zdh|9mIxVK*qV(LJCr#hETgDW!z&|9$wh3`VrtfF?un9PlRLs>2y(-4 zrLKn+LM$+c2R9RpV`rECN`sK@HGt)oU|=2}GdOWzXOuyDL72-1pjr{L%5=%8 zRQ(pEyJS{6KMcTc^`djdIyOcaz(RmDeoTeB8zvcNthS*`>A=K4->m8f9c)wTh(V)x P00000NkvXXu0mjfbTF;3 literal 0 HcmV?d00001 diff --git a/images/icons/cart_add.png b/images/icons/cart_add.png new file mode 100644 index 0000000000000000000000000000000000000000..45c2900089c5b3867019ddf2d1c9c41552d66b32 GIT binary patch literal 711 zcmV;&0yzDNP)uCxwbv=KH9zoUDon>V zr>UxI+l z#KOV?tXAtCMJ|^E)z;P)Ha0epPNyNuGGeh9*4Njuva*6;Fo-}P0FTGRu}4QoI5;?f z$z&=kve_(-kB`yqcK=$PP6rN$<5RocMzvanBuNc}!7!r8WHP+bYPFEh=h197LA^$! zfn+j?{r!DJA`y-Wg+eHo%iPh-%*WOJf!=_4JdR?q$TO(d>pTNeCUT`x=_#{;C=?2$j;X1sGkv$Py1I(P z!$Twz39zJva5zj#0@-C@2}IWEbb{S(Co+D!Mh2YN-Q7j4Rs)eqd1+}0rBaCoa%Hv( z_V)ImR4Tvy@g2C`Zb};S^YgG+ER-}@($Hu$P#T`&g=Gkj-rm5_>p@&oUYt1fLwX|J ze5DHBL!@j);j;`WIfC2L1zdi5R^$Me%XOaFdp9>XM@hqIG(xY}Q_`58p2l6>Rjidv zSo>h6-65tPLP|ZR0blt578bWNJ3BinisDB`9zE&c`pZjrU$*1q7cN?9zz+a>(-SOd zeqB2|JMjDcJn8ZAag2?P;mWgfcq8A3P9ElDU1GT3!LQP4wNR;4n4FyKbHIS=TjBtW t@&m3+C;j&_I88CIp4At!{qxjQ|2w4%;hGY8=Cl9+002ovPDHLkV1ip>OPc@y literal 0 HcmV?d00001 diff --git a/images/icons/cog.png b/images/icons/cog.png new file mode 100644 index 0000000000000000000000000000000000000000..67de2c6ccbeac17742f56cf7391e72b2bf5033ba GIT binary patch literal 512 zcmV+b0{{JqP)CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00007$(F5I~EPw2+A2=20Sy*#|n7r8sf)7*RgqMLv3&KWmL+^F4r z7i0Z}>kq&FSJ~Z9+<5!dQFwCOz1ndvw%m_4J#=sT@Q1U19`B}1iL1?~3va{ZF~|VI zfHw0WI@T{zdi2I_>3m@YYk3d;l(JU>d+bPFLOo8G;T$3)1!qp*$dock%HEEk|V0 z3L2&;r~p>tQh+yD{T!MxBF4;%7xC6JH1CtlE}+w%Xkuu&haUcdHC?=ZKr(+GZJfIQ zJ6@GU%>XYSae67{=&NN{rB<>+N;FbBA#_{A0WZW7cXJ0E=}(_?dx9< zr?bEW55s(NboZ^^cb|S1s~AxnBh?-gQ{Ob@*3}OO`vCi&FRqICO$~lSg*6r5QDf7DTmJy^bFNy&p3d3; O0000LZjC;k_h{kHThqfC`(hFmxSO zSd?`bB$R({-*5T0gITA{|Fu6pn0eqpx>}JTL$UWimE@yNe}L98c)I$ztaD0e0sx43 BPNV<; literal 0 HcmV?d00001 diff --git a/images/icons/error.gif b/images/icons/error.gif new file mode 100644 index 0000000000000000000000000000000000000000..352875dccc0d862bc66d792c0d6866c962d1e479 GIT binary patch literal 599 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 literal 0 HcmV?d00001 diff --git a/images/icons/house.png b/images/icons/house.png new file mode 100644 index 0000000000000000000000000000000000000000..fed62219f57cdfb854782dbadf5123c44d056bd4 GIT binary patch literal 806 zcmV+>1KIqEP)v;U&v3%|^C`Ga3?LtY&4dQB4Oz;1v;J%z!D&%WRH@BZ?x; z3)8@IUIv@hG|@IwyHLC`l{1<4BK>wam95g|i|?Cfzt876&-Zx_0f5*l-9`IJI&mHu zE6$@xB)6N}7VeR;!X8D!TAw;;&0Bsj?A071cO>X3K0wl7WZ1;Tg!4LHyNcnzoeQ7t zNW`aSlm8WXYkek&ir$13=ngczvf zV0vnjNpCF&K8px}dunv+`LIb-sOC$_jD(;IBI$xC|7`(+9cA>Vir_V#z{?k7SX^Ah z^71m~W@q439Ycqfhi7+gp#A14n1n1!e>$EdeATG|f798Y=ggzwEKH2Q!qU2QA(Se?dwqG69%>n$6rtE z%F(845Az8c{w(XgimJg96!jLMz?zS6I1HUm2baqQx7&@nx;lhHA!r6vs2|fqJETOu zLxeu2OQ(3(au%dg>AcZsWI(zXn9XJg1cLe8k~0h0wOL=&HK}7X k{AKr*U4z7Szv)i%9gTgghwgU$Q~&?~07*qoM6N<$g31kYk^lez literal 0 HcmV?d00001 diff --git a/images/icons/logout.png b/images/icons/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..7d44194fae7f5766ea58ce8ff7f837a6af6c94da GIT binary patch literal 3414 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 literal 0 HcmV?d00001 diff --git a/images/icons/magnifier.png b/images/icons/magnifier.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3x~s(Fz}WT9-}Bt(^(&F};yW!O1^w#9{YLda6wbOy9(PfXpeyG)ns?mn5*VpFx z#oF^ud$IEN`pn++fT6{)$>w{c&$i6sslwo|$K*#M}30j=03t=kD|PzR=_0 z>ht64^`gM!%HH;No5{e@A%?ayUyZ%rqQOo+0fqZk+jxpl)&rp_i>xWxy@e<>yx1}*^& z4QmN~5CKF`MmkJF3nC&5N>&jORWS|%Y87GyBnuf6cnVEL4s{h06IWkoDi(VX7zYmt z6B-&)VH6x36mLrh3PTbaEq;DK8yg5|NHcr{81j009y~ChW5-90G9^yrk@4Y!hb?W) wbXf7Hzzr`M5OiTcr3V-|SQurAlS5935ImA-VZ%t!iZdN{?1<9D0HZ(vJDXZvn*aa+ literal 0 HcmV?d00001 diff --git a/images/icons/page_add.png b/images/icons/page_add.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bfa0719bc3a2ce4fc529403f0acd6b6057c956 GIT binary patch literal 739 zcmV<90v!E`P)BG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO literal 0 HcmV?d00001 diff --git a/images/icons/page_gear.png b/images/icons/page_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..8e83281c5f8f0381c43adab760e0b29d28f16629 GIT binary patch literal 833 zcmV-H1HSx;P)m{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr literal 0 HcmV?d00001 diff --git a/images/icons/page_white_delete.png b/images/icons/page_white_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..af1ecaf2981fa37628c8b8b15ee389f9575e5f6b GIT binary patch literal 536 zcmV+z0_XjSP)(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN literal 0 HcmV?d00001 diff --git a/images/icons/page_white_text_width.png b/images/icons/page_white_text_width.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cf13256f44ae8092e07e88b0f4243a8efa9f0e GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R>*?YcqH(@;f-l!01CbW>s1Izr z3LkoHh<3E?TVANoG4CX|$empRCCS=R(U(hVJfm~E?IkDKRK&NP2|n`v>d(vV;W1uY zrFGVdwn;4b{qUtE`?GB`)E1ga&i2|7ncUL1b!KMq^QnT#_gn?_Z8(c`1Q~Vy3oL!N z$M8vHL&U1J3SJF!56azQU3B6>r|Zsm$HQ(N)Ek< zrc#vXMLdW}TWpphCZsGREkUZr{Mg;M&b;luZ0IGA9rnH1`DVU1->eh_0hG(-dw<@) z-1S-xc+D!@wd^?Z=a`M%%phe@J_EnT0QpH7V3 jcG~XA#&PRl)Zh6(yXt(^KFGF}00000NkvXXu0mjfDwr>g literal 0 HcmV?d00001 diff --git a/images/icons/report_link.png b/images/icons/report_link.png new file mode 100644 index 0000000000000000000000000000000000000000..23f2611e993021b5c01f473fa2ef17e599680b1a GIT binary patch literal 754 zcmV8`o}o+HVTUg~@9%wnpXc-b-uGnzU`3-*UT|g@ zo0_}${PYS~EY{64<|1jn77mAt-?u~fu^oW-Nf+w%`k6u@8ja@M>gwvyr|A)Vn;(Jq zaTh9;N=r(m5{kuQGx>ZTM@L7;fK~%PHXd~T2WUVVDHIB*)oQH<8-@{t98zrD@5JHZ zAeQ1{U@q&rkwFmX$9#l+-MHA38*g7^?AM8Z6TBRY)Oa3%mOx}M#nz zh*gWh`lJ+JUrX?Dpo7v${ylY!X;i*V;Q5;bok6)={&T9q+Pw}sAOdJS3JE!pJUeO5 z<#Nbovqc8bb7C+dL2z~$YohjM^VqvRC>D|!olijSh(k8_3$j-~kxr+P$z)EM!ImFx zVLQBDFU)2$oK7cV9tr$gQX9rVLQxFP;kVqu3*=*2iwR9~I z2%y*NDMYDM7ETPbVvIfF!JwO<05UKhj|ZR6he#xXU@!=e#{({xOJ5@aFraFS!OXM) za*3D%bUGdS`uf1(a3B(iXvmt>8U|9SG*1mwD%GXs{;O~d^x$DXhboiPR#sMEx7(pm zD8THaYf^K&-E;=0BjsO4v literal 0 HcmV?d00001 diff --git a/images/icons/rss.png b/images/icons/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc6ff30ba5020600aa4ba2646beb9eb25dc978f GIT binary patch literal 530 zcmV+t0`2{YP)8MDR)G%QU0LxY1jsDL`i z5Y)<<0mFa+Gyv?I-SF1`9OhtF)?#(7@ZwPg0IYohcf#rgRl*cR36-)JAyh$ycISTR z#|RJ*0Y`3-+O5RfdxRPJ@Fmbb_UtP8y?FXu?dZjo$& zzrG9Rp9<^S_%m{rBJa8vxT8 UVM82oKL7v#07*qoM6N<$f={^a^#A|> literal 0 HcmV?d00001 diff --git a/images/icons/success.gif b/images/icons/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5206b569d19a80154417a6bdf22025cf6f53b1b GIT binary patch literal 606 zcmV-k0-^m!Nk%w1VGaNe0OkMyTf#bK!$l^1BXY-PZp31m%7-U)Bd*+~eZ6PR@4%PL zhPmseZ?#yo+NLsoEw9(1ZMRp_^~AN`tgF+Tq1Tn9&zp6~Xm7(|bhlhVpf5X&HjvJL zo!F9k%x!YWXtm+4x8bk+{riK?cb3hFqt}+%?9`pki>TR~a=BZX(Tj7sTz|@Ne#dY9 z{{6n=wzb=+I-w=z^yBUK>+$*Uui>1U$A_QNk)_w0g~fH2$Ag>KktmNNn$(S)+JuqO zeRj%f$>_gvxmrw@J#@lZaKBfg;f#a6ZFjt2ez<5(n?bZ~iJeW6GzBO>cV{yb|dBJ3K!(@iWd~v>CfXZ`#%yLqoLdxmDv)QGz z-KwkIoQueKZ^mRYk1lA$MSj6)gSvZe%20#8d}qi;C4(YawK%Zju+5i9lA^8LV00000EC2ui z01f~S000NOfPR7zMQH$40X=hqj0z1iyEv%?$mbQ(# zwJpuiQJP8?X_`#S8b+U_G6=ziYB!xPAcq{)ZJ0bECH@ zYx#`n8^Wzn^J!4>=q^bltNO15ry?0ecSLkjpT@vlid!jk)Fjf7&)q_V5zGs#3N%6* zbW~7Hg=&P0&~Y(|g>$hC9FL?;ttzPDZbpZu9OLb33^e2;FNTGJxScp1&q4M+y2ntQ z?C(=hpU$3~`Thx0eHwi0x`q+!d5k@|0_WHe%sG3e-s^MM`xM-ig!VcIA7H}X1ot~L zg=MLB4w-Q;Bi!!u2|I+Qb;0{{4Q53YX6+4_aXena{nmt*!YG7ua~`qc>o=?@U?rOU znS7%>klzi*muXnbM6i@4FR@s^8vTjDgy&%J?w?`u>NYMDFa_2%0SQ(qJE<3=<8Bzo zfdU60e*y(^$RF%r$kl)p7=7tlCDa$+J7w>}DU(O#~fk>pYuRvHi1E9^msg{tLeV XM&GIRvfA7%00000NkvXXu0mjf&%8>| literal 0 HcmV?d00001 diff --git a/images/icons/user_add.png b/images/icons/user_add.png new file mode 100644 index 0000000000000000000000000000000000000000..deae99bcff9815d8530a920e754d743700ddd5fb GIT binary patch literal 746 zcmVR5;6} zkbg*1Q547RkCGx=+ZrJV#zL@SQK$qJV#CSW)Px1IG~1R7@Ce7&_JfOHMV?!rlp(uU_DLu%oT329{ zvd}^m>Zu}~l!lF)$vj*+!9ivWYi3=6E`B>+7|Su$tH+R~2!#ne6eorwU&M#{7<<90 zO$iMuFlR;n2z>v9nKwp!?XQQ|aSfBtZ^J)10wQ zP}rH=KSJQ4N-!Ms3A?4X%~8iSR-zylzlSXd_?|M%f3%_Vax4V#xlec^^VT&5JP8rX z6}RO@h&}Lqo`s_<751_e20DK|@e2`2FToK$y2KTlwyhFyPdYY*B{>w4$%B}fnn&9d zQ0xQp-T@b00q1)Ft+NxwMg`RMry#!}42Vk(RW1t-$ePmK0V@&mp4&IBO>%w~~-qNFem8*NKi5C3*h;eH{=}2kRqEdNlF-|c6B{jNg1xE|{xZ_qq=T!wMF|0iq|AK>&MHw6~-ksQ9RtH+=$?!G=zinz|BNIO*d}XYdmm2K>Qw%i9j?X9SgRBJn4W5%uAclWG_T7f?M4s9q5$`w5b| z31S}-Tq~-?NahjDw3mU5cfqF5z)+g+pPplGDyLv1f8WAnTQ+Xiw;{fhcBLH^j|gI# z2~IT;7{m9#PQ$2>16f?4#0x*vLFksSJ~;)W1wO>uQ-rAG1{C+&5Zw%%))Pc(2_k9< z`smoi)Pkk!SK)SAcOy>0d#x(Rl;b_GP?XFE#P>r%M^9Kn>j@#I>kHsrS$qYvKE>lwZZUsXcw4nFNHZZ~?%71a&2u7&aV|47ZvJKBUVO{)!ekB`ACp}1 xSnjsa#jtYM{A~v!cV^R$X2;lcpKyd7^}lwPp>~q=QF{OY002ovPDHLkV1lJ{Vb%Zu literal 0 HcmV?d00001 diff --git a/images/icons/user_edit.png b/images/icons/user_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..c1974cda745278a404b9e29fa91e0503a84accb1 GIT binary patch literal 833 zcmV-H1HSx;P)wKwNApj*j?`*x8fjj}+T^cdNV;=~VOf{An4CI`(Q%x}`$a=uBQ`IcOG~+O zhFmpv$jQAVt#pVn<-FwXyxzC#)@;^BTYr4EXV3Qe?Ah}?KRp0?|HEG!QT7K}`6R>T z0?GlfNd&N5h)SxRamGIduGtwfO1+4h$^b)DXu0o8M7BEtF^>B+6kDUTT?1tl0&27( zTPtN#enUj2hcV)v4ROVeu()d=+i@S-%91h3XQQ_&2GLH&h;==J>*q}oafY~7o8YOx zW1up~WKKQv35z{tnCiF(G50p)FLR-gi@=FATO4h+zckVifX~k}G4#+4;u7niZGj@H zRkx!55oQOPpc>+6Y1FM1A`bW&7GI~k7+8?J0DewkUh)LOJkrdTe3;U(*Zgc$Er)&@ zD+5(f%bInl-ZwzNw#9d8%I4~~7EHgs3zhUKHpaRkt%*?UWMg-Zz7eUOc8t^s*~Buq zNnU77^3>6u=K_U{g-umARHHXA*H6dCx-dv81Ap`v`JB`FJi0MFsY3lE z5Gw;{eLz-+019a$Hq}BXzXU@)LB-NA6Y>hD8BxCLDcvPn`&N6q`mxc}yMb~sKo@Ed zDbOI5^9}?Dhz0FQMoKPVwk00IILo!IfS6^eQMBJdKtv5PI+Tbj;^0Fo6JmY=Cj0!M zlv6P`lmJPo4+6tWG2fYveukB1DzkD{lX z41Nw7E`C*@hclIfDYh$GCw<#Tk~h)}QkWS=$Gv&wY2h|l6&7Q)uMmBi&Zxg?1_yGk z;>5+4_M6eEhsL=ygB_>Q-+`#k4z^f-l|x?d%y)UiW7wGPG|s;O<C!`|bYx^wpw1_1akU+Fbto@c#Si`|q;;{O{JI zKL7ps(~KMW?5zFz=KlKU!)ylUwm#*xOZC`N_~(@R>z?w~Sn$)2_Trk|p(*m$SN{6! z)t5oaeID@AjLCNm>%mR?^27GrT>kv>^x9kW)=>4^T=m_K_S;(Mw>k9LSM=P7?Z;r+ zn!%@z}zW@ID?!{30@3p~b1M0m%`t7aq)>QP|UjF;@_1RSX^T*wyGwQug z_1ID0q$}~%h2617_S$0Y$yf2$o%!jM`Rl6Bg%pl)$`bZ=CnWa z*jMYxfd2gR@X~?!=b_Pw8}!;;{`>6o*<9jMFa$4ITk8VKBydEBL<8R0RR#vNRTi<05l`w abWr0WN`^Kq@bqAi1;&Ru5R7mL1OPku;!|e; literal 0 HcmV?d00001 diff --git a/images/icons/world.png b/images/icons/world.png new file mode 100644 index 0000000000000000000000000000000000000000..68f21d30116710e48a8bf462cb32441e51fad5f6 GIT binary patch literal 923 zcmV;M17!S(P)A9)b<7tX~vT z$e)FfZ+`X4_uKyq#wJHC;J3lH{lhQkUc~Wid;*pnjhM12xe-bPByd^xuQ9zgeM^Mm z*tc)|P}LtTnHXr@Gkmmbkg^O2bqyhO>LP|qjIwW2@Di+4EuKm~&tOO2!N3o{128Hl z9v%fgerM0C#)7P|PMvxr*!Gf?eGA8f{OT6fS`9l>LQCg)p=~c$Zr|AT_0+_?F*JJk zlapOT2Q(wWx-LMq(TxXxLn+U;!LV)MhNp~ommdh+fo8T*&g-yQbbG&ze&=>tC(Ar=&^1xlA;Jc(6 zcCi_xs8k}-S&#ONOHm%e@#nGC7F++8C~r29Or!_{(QGQEG)+O^J1BCPmgM4JAzC8I z`jS9bO>|}Jq_#$IRzp0d34>)&3L%7MN)eTv!0B!^nn}f4z2*vFE@jv3dn zG>H)u>FR7_d2JcsjvfZ$vkP~xik@T^(_N)nx=tqJV+tQjQ`owJ83bf`zX6Ear*=Mhzn5QUuXE|v zR33Qyi8G!0{H2r##d#6R6YmYbZz4NTssT;cXiGb6lxO+k@{ba@2D~*hKDY6N;Bkh> xhhCRLejsJkAIT{5sICHcfU`5>bKmUb{{y)0nR3PMMxX!y002ovPDHLkV1nl+t-}BS literal 0 HcmV?d00001 diff --git a/images/info.png b/images/info.png new file mode 100644 index 0000000000000000000000000000000000000000..a237c178299c3f414d9e51b807a925b294372cd3 GIT binary patch literal 783 zcmV+q1MvKbP)m0Y@4ffyLP&hH8$HV}Up^c-=NMJx zeN^-2A#-&!Ex{dE7fx2Kv^WhYp$Orocj3<9*-sw6`fpx!@WqvpjJ0yHBcaKjwniG( zt^r^natsxoaDRGv2BZDC^Pgqk0vx`a&)7(A9NJbF-`!fz)SRWb5aEN8s9QrSv5vyC zG6O$9T&9LoxeJH0D}dfh_d7-0(4npI)b^Hoa$_Z&6ZW(9SQ7CMc(Pc=m@u^pupNa%6uyJ3nlqZe1a@ zj4`qP+`yUae{KPw=c_AeReu}}Ckd4nG+>M=0yhnE=Z}GN|39X8(F>?Qf_quEA-Mnm N002ovPDHLkV1hK`W844$ literal 0 HcmV?d00001 diff --git a/images/items/no_ammo.gif b/images/items/no_ammo.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ae611e4378b24735725646ad88cb877e229670f GIT binary patch literal 1186 zcmZ?wbhEHbRA5kG_|5fM5P%3vOG_swCoeCrARveWf#l@m?Ck8~;^Jx`XaRx$qhK@y=otdPKP*_V zq@khVKQNvDXZR1MfHaT=1Uf)LU`|kAVBq-2AZin!P@v%0$j+;#vf{%*hgL}=0~-y4 z=EJNa%63b3d|cqt%x_?EWyOSK=XMcMk1r7gPno7@J4Ut46nfY^Q%jla$d8MPr`YxL zrS@DfUUw7{npUd@8f`gMm~^y@+pFWitE*{|-Es119Nqp$ zZY)ug58+rfHQ`KSw)X?>iwl`!Cd6M9`|~Q;@rID%x?8F{7Bog4V3IYE-IH*HiLbyo z!XT!oz-gYecDyf7=!XY~_;qSrstX^a?(oyhO1KmFDy*5?V{={SgqNPTTP4-s?Y#2h zN?Y1mwRvxY*FL<*y45aZx7cRaxoxHf?>lZiD_PKawIj>nq|C18t>*Fj_Wde)>w9f> z@BEaCug$e*HtGB6RsVX(#4FwKfiW%0HATu%60)u1_$j;6#27+o3XlZHb>FJp=Wy+j6bN-Kl(GZ|r z2>kxAV8N1xhKB#ZbpD^=KbQj2Ko$__00n_LL4kpR;~#^lO@Kmyf@32)ubRq=4+kAu zB@7H~Gz6Ltvx+F&E!pvLflD*Lp2d|F6Ox_VMMOQmL=-$_nxgF()iP7)VKb{m=&K{0 z8y6gI*O!k_$$0pfiJ!}ZWv}F;q(k#L!iApfRB&wyZm?uWxQ~;MlSC*u!Lrg6|Vtg!?)sMabGzII*i{2*k3BUAP{~ z#;W*aa;HVxhj>oe6XFkS|2EybDA=*gsO;52pnL<2bv zCAlY0e64g#BqseZiBO&<^ejEV#d+oyhSF(YXUfb?DLfM78JxR7d6KHicSer>h2KL$ zjAIRw!dFx#JZo0EarLslv+I&cF5*cdiR_9p#~WK-7g{BI>D|3@wcS{9!LI|e>|cfl yhX@C5o#HIOa&zf|%3C25SOW^BLOpo{EdnRxaUD(dWe%MYv}vbNOP~V-gEatqVS9}L literal 0 HcmV?d00001 diff --git a/images/items/no_backpack.gif b/images/items/no_backpack.gif new file mode 100644 index 0000000000000000000000000000000000000000..4693cf9f6c88b228e19d3a789d5bc3f11cb3bc3a GIT binary patch literal 1343 zcmZ?wbhEHbRA5kG_|5LJIM$KMF=e zfSw`n`@@0-OBxy){sYtbe}?~H3P=N4K%fH@1m*+<1_q9Q4B8GW6bcj^8`*i))+}&P zY-tow6S%UVae-5#l$?=8M5B^RpMX-#nhXJ_wstvvHJKF)7M$v0_jGDF`5@7~TU1Ho zM24`MM-R7H$r6o%#b??Dvd@`xI6h-y;}KK1Dq!-$Yc_LjQ_BYvt;1aYySaQ2#K;>_NgvB;1JLKVe55YroPsxOneeY z4zTw$E_l#1A#(*o&F-u257In3KS;Jo7cexjFDzwXtofqLaNn7CVgzH}wpIZq4x4Gu zl2TW3nm&#Z-B9*8!|K(IWDffx(J)^*&Jsos>u)z6v+I~~UX5_gTX4}=>?6mmsS!rg zri9q|iad4XF4>^eCgHa2Mifis)kzbD1w93lCs-bHobTcKH<^%->29AFW>J|YC7Y?>GGpP%hbQmbIw6U_f zS#&TScI;p>v?$oHAknp1Le}O$#>9oq+|u?*E;|e#9-AsAIISch@KDnA-^ENe`Z(+Et_O$Ng;YLNuITPR(jh2eb&qBC*G0^no$duQa++A$ z1v-=q6cn#3UE^?1-*@zQq6?RhoKc0wN5|$ieytaeL~kU#V%aR?yTrh7k!jnd-OQ6C z6dpRdOg~~Ow)Qn6OWJ)YgMNcMA75PLlITjlyF=j!JHNEizmESGZZos5kmNYE?8LOE zt^4F`YOYUkJj}++on@?JxiP`#xXe_sCiZo{&kk1k)}~%?iZ5knVi!HC9-dLUmQ^86 zv(jCjO}gg7O%_2Ng*X?rxuMsYWHKBQ*d#J0JYtea*)Wkwaz~3mM!&7W_3ZmgBPMn| zUs`h6-8IzUTFm5?V)OeYm&{-+wrN|&yyurGM)a?#!P>(g+K z=NDCzCi90aKj3VndSyZ^ufx}{+K69Mr-f+68XR=Kb2B5j@uTjuYa#P0&8E#M=3{A` z>$%qDqNDRUje{)5a!r;79{+nXD1u3pb&|JqYL>vv?xfN{R)w9Zb0egdJ6)L+W$A13 YdW9r!W%Me}(4}IF^JBeI9T*s_0Uu0&D*ylh literal 0 HcmV?d00001 diff --git a/images/items/no_handleft.gif b/images/items/no_handleft.gif new file mode 100644 index 0000000000000000000000000000000000000000..11667b6d94ab196f157a58adc1b29d4830a0050f GIT binary patch literal 1235 zcmZ?wbhEHbRA5kG_|5fM5P%6w5O4wlFAxXko#;&~O430`MJ2kT(RbS7w#Al`tm6q+Swhj<`3h|^%DMRwHfn{ynQ8ak`qx=*xYu2 zXS&^;f<3w~*%#O@VD#EsIwjtVKW4!lHhGN$2if_rlwJ0gTAMa0oa5tG$C5v;J7n_3 zua;g5m8_Y-n8DYTFwdXG^~&|um5vfM5P%6w5O4wlFAxXko#;&~OK<+M0JRAp|(*R-RP6sDGyocfyRGfl=kC*XpDhSwH@<3(Q_ z%w1yI(zx5cdR<6j+b!wRv*6ZM#>-6=!FCS>ln%G?$hhoydZKtu0IN`5(FX>nxAC*> zb!)bC+)zyBmvXuwDwxEa%*PfVxAj+P@m>BMo)b727qzrE%J)Wz7GxOpytf*!Pznzsq(sQp7Qs>&@|CC)q!43z$CFe!HBJ z@9Gle^tAIpBa>Q@`Q;#)jVxjf8i&3$`gX*M%6dvXU{$Eh_hr50almuQdE9u9F3Wa9n*gv4`5@z#xkdu OyUfM5P%6wFmM6`FAxXgtx3mY$xTDO0A*0fMDV|Br&v z5THc}{Qj_D!IFlChX25H{-5DLm;%y377*wF1%Ww1fq{YJAA_h(fI@+SV_HA(6qVM_2>$#Zs&cS6rSd%<1I2u!$w4({uBwH4#D? zoa?k5YF(YpXYFJ>d`KtRo|2T{JebV z_(5^U1qa%H%xe--ae48#p|JT{UxcLIhlWQ7yV!N)CR8XqVtjth$N!NV`>KUiUF^@@ z3+gv8X53iGd{FqEz#^AU_V4x;_aE43MC@ekH52EQUvW(~`P|o~SJ|Wvh~IQ`Xk0L- zWwq&v`%ID<4U>vD`fgpo!Sc#gAicQv%Op3Z$b?HVN*NmtvMbkoXk=1}n-Ns)5I8k7 zwWc&7qIVu=YJf}gT8=6GHD_l`u8C|7pX|t;!@$HT`{C)0=ykjwG~{4VxgA4eg6p%J6IhLYiacPTVBlR5>lJX#K_2C4FJ(=W>x?I literal 0 HcmV?d00001 diff --git a/images/items/no_legs.gif b/images/items/no_legs.gif new file mode 100644 index 0000000000000000000000000000000000000000..e57510b4f63274b62ac3d7d0e88f985b0fbc182d GIT binary patch literal 1340 zcmZ?wbhEHbRA5kG_|5LJH<^%->29AFW+72re3KSe0*?HC0 zEO1b4X%tWsxU!&efm5TDoRLLDqmoOXfKtqw3<0OMb~$}DnH38boa$otbZR*HAkn>B zR7vARhOpWRE(Qi24ylqC0SonVomN<0R%q*Du&MaLut*tjooyAdl<&xv)tJe=QIlP^IuS%FxCD1WRS7Bab z+{^2X^%EOeCNl9^u*h<#%CIvuJZlX$NfYoJT~&5*_xg&74hk<2gCmAV$^Zg6zu z-Kr7LX>^Z0tW&jN!XpRkI+qK10vZX)6F9E9q{OFOeKN6HYL@uo4zZgRN#X3i8yelr zRlhvxG4nmi*vl5^BH`iC_2a>mTcI1GeHi6fl&7!>c0TsvSUQE#xsc0q!mN`EO$1zJ zLs>4*WPf$Du`^`X5n*@3sS-@n+x>REtUc$rdECwDHQ6 mAPrWlRnELtD<(S%vRF)>%JbJnXc@=XuGel%xgr7#4AuZ0ZFYG8 literal 0 HcmV?d00001 diff --git a/images/items/no_necklace.gif b/images/items/no_necklace.gif new file mode 100644 index 0000000000000000000000000000000000000000..512542b39ef642024419f6c198ab834e918cfb79 GIT binary patch literal 1189 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 literal 0 HcmV?d00001 diff --git a/images/minus.gif b/images/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..499a2e2aa8f8acdde96aa99bcfd627dfdff1318b GIT binary patch literal 858 zcmZ?wbhEHb-cd%iG`h)%_^eP=&=JcE87tn0|f^M1_o;Ya&87b literal 0 HcmV?d00001 diff --git a/images/monsters/acidblob.gif b/images/monsters/acidblob.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3ac9be6000ba2e6be722c1f7a1fdc90337027a1 GIT binary patch literal 3112 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 DB1^Bg literal 0 HcmV?d00001 diff --git a/images/monsters/adept of the cult.gif b/images/monsters/adept of the cult.gif new file mode 100644 index 0000000000000000000000000000000000000000..39c12a4d38a1a12b4f24db09f6e2d9065b24bae0 GIT binary patch literal 1537 zcmd6m{Zo?#0LQ=2_H1n9ZLq=S7&u^qF%Ty2h`<9Iu)$D>S8>`9K{UArSz-`9FkTcv z5EPNr7;i#n21s{Vc{c$pU#JAW|sIytQ~N&kyJf5G?e`}w5mQ=(&vC{TDY zk2iREc@YG08gO%Sb9HrPGMU@9ZIeo+QBhHWfq_m=PO-7Ep8_J0h{a-26y@XN6Bid3 z9v<%L={W{uWMl}1Lb+TX6BDz3{rZrQ5PyGvXJ==XN~KgPj{qJX9t;L!!-fs*?d`d_ zxyONogoG2oFyQO!t57J~fHiB@90qti9!Zkhw{Ks&c5P5lP-J9eb8~Yy&lMiWTwP`79a+033gM))xwrpu>Y5Di+p~t|$z(8_xvOpj>1{e&6#Kgq5()ga9p69^*&)@eml}1EF zI66AoY_`>>KhB+buLC%L{(P~Js=8xRl>a0l4DdGjG)_wL=>*{M7 zfRT}r^78TkASo&76%ZO4nw^~;6%k=d3ON0NAp{={Y%-aefxT(UJ$v>{ z0t*WZ)z#HYz(>HwjT^hVx`u#rz}d1mtxD9?)HDKg8N(j|MMXvLCWMrhmYU7xoq$fK zyV+M>1?WR06%`f5#l_o`h8+ktPJ0B02^xKiC%-;{+TP#I^( ztkcbW-?US@@%}4^#bJAvX2%DvwaYXuQvJl>T$eKY3*+3x(EJG%F-s!by5PdST&1Qi zlqSNTT0h%CTk7rEP123i@A&j zu2(d_ppQLo)zcFWoSRlnIw20FZu0vZyF_H3gCa*)F{k1s!tqv^?KLll;6Vgmp;rPoOQxnU6 z=CNz@Iw(JMg~ev3gHxr8>A_egY)tk+nZ=iXbCD@5HuQ9&kYm12nD#PgA*z;<7i#8f z{KuDJ1N(K8fgR>)2C5;uP7|XRGhekX%@4BvHF7rg} z+q7P$UfO;AR0u({Gkp5lbm+C^)~_-)g(y~T=j4~K+$q@g<;u^-{eQ09H5Ci_i2V;t C|GH!V literal 0 HcmV?d00001 diff --git a/images/monsters/amazon.gif b/images/monsters/amazon.gif new file mode 100644 index 0000000000000000000000000000000000000000..92b0b7a0163aeca22094ac13177dc46f9400f48f GIT binary patch literal 1596 zcmWkte^8T$8Gb&JkS`FDFZlu_B-jrVO!$?A1SEkHJ|Hjx6hWxNiY-(asMtjhTosYv zNJ%lASaDqiTf}rSYq#*jA9dZ93e{-U^JuT5N_SZ4U1vM3oj-6}$I|ECyZ7$-U6p{ zL*~%*4xlz3n}OnF8k=wu7y^z0Mx)Vxc;^AY-DF8kP5sM|Q>Bdi_uRyG(~7RHF5m9z zG6ha`)!qBR+tpIhUSX--L9qHbe1^ubh$zPw8$7Fp@1fTx&c+>Hh$8Q1EPv7e?rTkYjq-=!5x=)Nq(Ui`{Mp+imr;B7 z?zP!$6$*5O0@H}BtgKx+TpMv_XJ?x!^wim=kG7u(S&<4UC703hhk<_J{7W`u!m8wY zfL+!3_PppIZQkyUZ1QbH6J6+=@fhFmWH-~G9Sr(7Z=BQzz1pMC=5GL{9Z6933Y zzb5JAx}g8qbT6eY9WEIk{dm9Jyk$N(e*Dq_rm#=tnDAXbq^mwzcX{I7PrNH%z9M^Y z|FvsMgW#qo5Wa@HWwS=LG&wVrHf${tju|igoo{}=lsb2?`BSM+&+)W47Yp6toYFCd zxm|qvJ&W^{FmUGb=j!&mZwdI9g6`xOT5qx=X?)HZEr;3M&CU$3ZTm(T9Jqa9PCD+j z46V98eLjt-44<1Vm^sM3zuG=m`7ueP9V%}eD2znx3R8_~DPi!|v$Bf$>hK0Xy z?bvwt!N#u-5Uuy}@6zFP>Mp9zh1S;}Ug$SGe7|N|oOh1y%l^W?FPQMw(gG>0T5z&N zuFPof)NS)z*V$hUi?IFGC+!!DD;EgGe^kyuoa0$y)M0u&KuT=iRRs-K{3Qg*WOVal zmfJW*v6b_+vqX-E5=&U-j(gR*zzw^al-=n~IjJ(*r4@UAJ4H!3rkez-(ELzI?mM_$Y0ryBXAB!;UkH+Ju*(v8V( zacN*6rpy%4=nY-{4v(&$8ZR`5k;{x5*<+8^B7NqDBSnL%p12|(bD2K<6?>@6O0plx zs=pcG$ZF~mF4{DUE)HL%y7fk67?*O#*X-HUD_>I|=w(I&ldkYL-X5G5ZCzyd(V_4| z-ZzzBl6`idn*EdZ>2#s!bNjJN0&@7+MM|$R7mJ_D;dfa7dk49!{o5IZquy8$lQKMc zAu^-9b#0Um4I*)l??yL4mj?(#+=ulOjssV3g9dkn?|Rmi7ez literal 0 HcmV?d00001 diff --git a/images/monsters/ancient scarab.gif b/images/monsters/ancient scarab.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ecc3742108ce9a35446cfa83d7b4787176547a5 GIT binary patch literal 3048 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 literal 0 HcmV?d00001 diff --git a/images/monsters/ancientscarab.gif b/images/monsters/ancientscarab.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcff35cfa99c8facb52f56e1adeb8bdb53739de4 GIT binary patch literal 1898 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 H1Cac`6Wd7R literal 0 HcmV?d00001 diff --git a/images/monsters/apprentice sheng.gif b/images/monsters/apprentice sheng.gif new file mode 100644 index 0000000000000000000000000000000000000000..34040f2ed38070d098a127243f9a1aa76ff84918 GIT binary patch literal 1710 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 CVa{d% literal 0 HcmV?d00001 diff --git a/images/monsters/assassin.gif b/images/monsters/assassin.gif new file mode 100644 index 0000000000000000000000000000000000000000..1368da74ef0ea935af433e382e63318dc7c8e5fb GIT binary patch literal 1617 zcmeH`3r|xA7>2)dKc|<|(|c)4ds`5!{?OaVhfx8l5d7 zg0RVL-i8Yz1h$zCo!OGbCFQo^W;R{6WhP`%lPOu2tuZD_vdzi=*z*tG=gC_YuJji- z2_V3eNqCOcYSruYIXO8NizPcdTc^{dq@<*#rg9u-Fc^5A&&tYDtJOA}t)QSFKR>^y zs3<)>-EO!0e7@4sQlru6a5yv?O<`f7OeQm#Oj@lrEiKLC@p!#nmIRh%rBbO}E+-JA zq@-lsx^)>D8D_J2{rdH8x0|MEf*{tcSyNnGoSB(fR#v7|Dpe{~RaF&9k`zTD2!f)h z)9GXwrn0hf?b@|cKt)lksHkwcTo{HK0VFs)88%BKl6+@MUS3`x5K!Z+LZO&`_khD- z#1J@C34$OD)3Qf9Yf2f((1KW{M!o>dvEp8)z9Y-Y@%>Cu^E zv^uk4ar)xi2`+8JNa)JgLa(9V^`*rtm%cv52Tq#9SI2J*xoSUbxN&vj+g<=e-^wFC zX3H0sue(2eQ0?Lm8Jb{X^80hu+fSoSkEaCik%yDhce@5)(-Ab3Y^3@qb;P^BgcIVL zwFeISks#5yI9MwOZ?Ua64PsWe|_X0D9`2DF68|iYP^dtiD&!^yTMzd+DCI@O|g zXt47*q;c+=aU43O+qWF)yQyvu(J7`B<~poeHdl;m(xflixmJ&AaJ zA5Gw%kvg*1!A}R6TvtRO2{SJO*@AQ;*-s-eMmr6iVHmzOhrfe!F*MANCVHib*G|f+ z=lK|3aFd(aW6Rr8j$7yP1j>c>cVIfOpO7(+FCHh2HzClMp^S7eMI)#H{)X5bU}efM z>Y}5<=wvf@Y=eYL4s)A5$&mW+&4C0%$dVXYW_HeNUh-YJkugYn1w<2iRs-ln2??&T zzi-W0;?1)nSjxPDl<@MPXuOOk47)vpnDi675W_x_Cj}gvYMeo2`^HodY>!u}eAgk4 zyA1sTYxILiT3h%SL-e~{bfOsP|!Ki#if)AZ=49l{wYT?G;h^$hpyeO<1Qv@iW-Jreq-ggvpYXt Pc`(xU=gLEpz@hX%;?ZSl literal 0 HcmV?d00001 diff --git a/images/monsters/avalanche.gif b/images/monsters/avalanche.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b8179c3bbc105ce9bcb73c03bdbf9557793264a GIT binary patch literal 8098 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 UdN!Pp4kfzae9smFU literal 0 HcmV?d00001 diff --git a/images/monsters/badger.gif b/images/monsters/badger.gif new file mode 100644 index 0000000000000000000000000000000000000000..718dc4ec2d6c1009f5335f84b320b5b3656a22b8 GIT binary patch literal 1256 zcmd^;c~6>m0DynIf(lg!yxM8Sdej-O;ZcczM-VE9M~A^KCR*n)JQj^KnYu1+B52X7 z5$aXtD1uY*1iX(-5lP$4Gf}do^=N0IF4nHeTC;z4_&N4`geT9#;xNgSd>WvE^I`BG z(b3Ta0%37+F(oBsd3o8(+bbp}W@Kapg+igx=&7lx>FH^`UOzfIDwRsRySs~uit6j@ zwHjqbMFoSwI68V!RaI43SZJ|W=H})mCMMe3+xz?bi;IhqNF)S7XJ>DhmX>^cdN4hJ}S2_3HKYb*t67v9Xbzo!!vTaCmqqm&<2oC)3l@<#OfD&d#gjSC7;W zO(xU$#Nhdd^TfnN2m*GyJuEno%lnMUWGv1v?Cx1>Yim0?IuHo3w6G)=i}84TKtO=O zFkVtpB9qC;6f%p&`jm*#Xf&mzrLJzS;s$Yfd3iFE6%j!s5PS#(UkZg18yh=0IeBn! zpj0Xo5)!tzw`=d_R##WY$H#ANZSC$_*&J3}T%1Oul0B3*H#ZZm!Z;Y0kdXN1&6!T8 zJ9vKB+bg@prNc0eNF=7ErD-%;01&P&moS$wbUMAbq3iKQU+@xA`&d6FA2Hr|rSK;hd+&AAatR^neT$gtF=|z@u&rMZB)Dxq}<9)0M2_%sDM-pexkDvtJOX zgJ8hFjS(>DOKhJaX%CDNyaEv}ca3keAcqhbgY6cjWxG$S1mAt50@KR*%{5E2p+p1zKXOf4-f zEq9M=7!(W|5et}qOr(fWk54aXXlOPa0ianlaz7<9GBSZ{K&FaPp@vW}Fff^aOx?JU zOj|@_QZY``lKQA>kH8wUjc#v#C zBLYc0Br7W`he|9ZEFp@fe1vX7C@>^jZBmF!Eu~vFftz$?d0TswZ>U{2vW#Ssc}R+L zMK?k*n}JOO0RR{n7_gF8t&moXsD5*bXQ5d&IYcwss&zL*GJTeC>CB~nTsD<_N{C}G zy@x~0o^FnBO|P4ORxliDfM72;DlZxjb3i6YC>L&9Hk^V@e}8|3pLfKbc8_d95e^7y zT1UN^a+tP=n}B1dT{nQ5bBv6P@zkt~bVaI-*)NeP}+At%CID0eMjL{dIJA{0I<6E;9F zQbZ}3R5F@?Oo^p@9UUDq3(3&nJP|38R0hKj9QnYgV^ree-N7fvf)!=~#dMQ#^pwX3O2S!J% z?3v>44G{_Rvc}lEx8;WdJ@CD0(CC2`B2z}B&F07)ffq4Wet>aPf+!^E5RKSS1xXJT zf`%+%@&X1am6JcHQ5GZ~CQF7cs7awh2%S54Ae5f4B1Ou{DTpnqgzHJLTicj{h%nTsri3hU zSGo=eXuSXu%@6&^;NE*LOaq4`*ccJTHK9DxUpN+|;0rQ`yaJ1XCbhuHWG{pf#xh!5 zu>>8ZHBrVKAN<2gDm?tM4iwatWXC&ffcV0WJi>5;2ne79&I%{EaY-9y03gE(B~?(% zAFE83MJ$on1A~u>I5WTs=dADn23;J$0}ns=R+1|Y{E$c!H?)~g0tw8Kh8udUP)-8W zB#?p+KJX9;hb8I2h8ZsWlR`Je1Q^#B8onJfh%j}uIY!A~4==mSIaTRWIzHCK;WP-6lnN?0SY!GA%F?+t~9|j;s9_!7Zrps zg9ZkS(?kSzQ~*!KD$Sts4i$7fgTf)8P(#N8puExw71XeU2?7-G4+S~z+_O+22p~WN z5%~O1(MKmO6bngwVS^7rK`k}aLZy&H4mKE2hd^3$?RC~(Y_Y%?EgD+(*=g6*flTne cU7=8P*KPORc;~J6-hB55?f2h+_Z<)bI|gt{a{vGU literal 0 HcmV?d00001 diff --git a/images/monsters/banshee.gif b/images/monsters/banshee.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fbcea05277eba4d194936e990f28b3cb0402edc GIT binary patch literal 1473 zcmds$`A?H~0LH&>FWb_V-n8_3Yp<6U;cc-{M6u;4?OKphP_T955T*ihd88xCtrbWl z!Zn0jU74uS zqD!+TrQ4D+Z3dHdS7x@sVo9;&78+uT3`mBd%9?uAx~r}_JE1Bkv1(6JgMC|5mco;3 z$jUOO<>VRn>@(&%%ubiBXm76DVRMz*-Ng=9nbTF4`$Heo4`D}QLeZ-$ZwzDgGiX{@vQh-cha?L!IU*4rbe>W}5?WmR%eQ4=nhv(lGoKZT~ zy%v&a=lU|_{I`x(x#vk>*^+k}zX%&F zF<6cx`y~U^1~5PcjsYX3rv8$3SQngZXKsg~N8BZ9OpR=P+{_*+_d^UD1 VC?BX=3n5=mtlf?6719An`47YMtnmN< literal 0 HcmV?d00001 diff --git a/images/monsters/barbaria.gif b/images/monsters/barbaria.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2ed08270f8842f5e50c9fd40738fd2329652a0d GIT binary patch literal 3262 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 bPD$!>Q`D7_!XVl@JS2$Upj0YMN% zs3L|%M8y^u*NT-0N+_tPOhu(rHXXETL2V6|l40gy&dfZ_%RT4bmwWEH-}4Cx4ffrT zfQ1rRCi!;LufKULE)8+dB$V=P&1&8Vk z!1=0FGc(fy0Py;H`{S6vjGh|f56H$}@8MiIn$88l(G=%Gx7Z1QDM`O-XTU}Ph_C?; zZ=4?CibWtoy{v@*@B*0O{D24m%F9bZa59JjfbJ2xDLyCCt}QPjKh|}#KaJ_>VPs@T zL?Ge-AVC1c73gBn+W-I?u6?%L<<6P!JLjpfI|S-QO&*0P$md~ zgLJI{FoSh5NS)NZ#V4CjuQ-6aT}ot<4+SeTfYP^*V;s7CXG0g-H)lDdDr zfB4qqT&-4n_rcWeEXBy!P`Ssl9P@csrjb+oU;X4eIzz< zOMGMFv9#1wQ)8oCq0^<($P2jvm&;>-bHJUNn9wNEjfRvb=k^ErFr2N(>Jw?l(NOx{ zg2K|4$xBt1)=r)tuAJbwpzzO=1x}8xzP=kHUi2P#ap|Du;qlEIsN;{GwYRtV`3H`) z?i=YUO4z#R&1j3eH>a)Z^1BCJ62rlq-xLP>`mwKFyD~sAd2l-O$McdF0_n~fIbZ>IQ_|lR zrcb)_b_Bbflx)_8tQF}Y$I`qT@>0rE`6nprPD1!tCP5BBU7G)~^bN60a)Otkot^E| zo|4B6*pmBKcpmDWLCF-F%)Q?Dk@7&sbl6g;5?iHGZTim0hpU#R3{ zcOSM!);Cv!#YZ|rOPMmACa(kgssf3@nTjEb^J+;EF7Yx_!TA!ZEMkH zeezNvw}J)1vAgG=8qQ%2%_!;yY3H5_lGEkBKSO2)s`0KocCE5=tln$y?xW+3iBn<& z-Pn>^y`%~SBi3|dnhmXD@P3u;r}lS9L1dF_y+X---UBgu&a01^`?bv>EwUral$y#U zpS^T}Bm zx0M2wGkHX|)qP4lf+kaypu~Im5g(r>j4m^M+QCMc|2!{K*ixrOJjPDrr7E3p%KT&^ z?yN5dFY$VZ!F!|F<<5$+=mDfa!yIG=YvS;gtCG4=4|w@esM9S%WoGLa!IAyEiBR17~0XAI#gKH=iTuHX1Mi;YFCp%MhU1vE)W!i72&o>%Gu@C7v&kx8M8L`uY zwRKH$Ny~M+`6%<9f3jtI9Q|>b3)F2r^6lZXVi)deiiAI?(;y@mtR#x=-n`uHfiz#b z_pH|5S5GfYjkSzD>}#|Lm!MIL11i%^?n{HWcx9iJsI8`&7xnsAr*E0IE?SisSh~+Q zVXuFh3w2OUT4mBQmYKnn{#V-RV(dxEdq6c;w-<{|7GGA_t1i}}?j9`YIR+)MRp(iO z9a*D{W6&c6sL}i-o9A+II!Z6cY(9!IDIqGvDT?0P Zlm<<<%Fansbz?WG;O_4dT zxXJq<<6?LgWfIMQC?Q*BkINXHP4Cq+2kiTE2UkU^0rPE8M=3eUSH?si?|?a<4rs{B z^9@<|p>@Iq>pDE&S(7e%L?)OlLuq42T>&lE?lXRLLCMtbf=vJUL-m%PIFm^bgl9Ej1tQYY&|9Dy`* z&vBXm)MoLzl?N(=GKrgc+KgVYV(814JrxdV3G9Daf&M>M*sUzJR}hMDHeqxPue=lwd&pZ#-ax>fi*NTV#ZACEZ<$qdH<4;(4eRjaM1ok``=+f1vlH(I@a=TiG zEK!h?@1E05OC`8dIEsMHi!Xr;6Cba(OQ!E&8fjJnVa$ur<31DgdBa!V_Ld`^xI?8q z{2@c9>XwVLdTHyfGVed5ml1UPO^u;^VQX?iNyFo~}I?%8_QAB_9vwVsd=O)1;_UeY%sVQP+jMB&Ndu9e#ByrBajFozd$JZ|_(fN11dh`E z9`D#ek?IrHugpbZ*U_!ZK}D>xg@qZjp6B?{labWwepNC+ILzLqq6?&aVgwY+#R@=O zh`x@7iNuO6V&!gu8euU+5s>A?U5ZS(zPnXYF}xpFf`nGo?Y(J2s@KE7 ztYVQ?tb0xhkg(B$*6KWg$_E15fdQST{MF{9A>Bnbve@hQA!0dVWD0PZJ%pZ!4Sw#j zFchIjXAFJFeBQvhp`dP)%m*F}am##d#bdrlsfzWS7lD&g_3cb7;|Xb@2Gf}89)b(f zWXW|srf&_SrT}qhZ6TXO-at`ES@eYg#w9K^5PaHi@d4Y2nlI_mbA^@sE!DpX5!oce zNn@RcMC_U={k%iy02oGL{2&h;dNsC3H*7WFb=0UuUBErSfu&h2P1AIgLCe7pA4bHl z*lfr6_aYe_Rv@bKyrZe-)bc|nvTC81wb`)i(ODkDP&s?gpclLvuxFvdl-THc?TF*O z_KR&O^g)MN1BlZp(&!yDp#M&+&Ywgv)Iwzj`GO`!!D?Kbxo;fJe;f5v`pY*49u&m@ z0hjkj`>^h6Q@eW26q+AYo3HlevK*GM)YR_jD2l#>C=ll=dP^5hZJJ1* zt01TFiJ^1f47$Q^F2AotBXhH7YHSjHiDl$Y^4^ZnMSiT_xH^)PO%?e`F@$$;ZeVE%kq0Ew&k;o_}#S91qYu01lli61G>3JyNgy$n*(aB&LWjRUD=f%*|J5>JAG|33i2`h`XS literal 0 HcmV?d00001 diff --git a/images/monsters/barbarian skullhunter.gif b/images/monsters/barbarian skullhunter.gif new file mode 100644 index 0000000000000000000000000000000000000000..13ce5c1bda56c0f91ba0e32196ef0cada3e50fe3 GIT binary patch literal 1401 zcmZ|N?N?KE0KoCz-Mwt%-VN?H7*CfNlP86tz(`P{jfXK1kdO$}4ueTfK^+7-(Qs@K za1aC(Bv2R+p^+TNgJNm93CL8!r#K=ko8XBsIB~?%iX_lp)|>D7{sEteNKrswsuyqr z15RN6M%_r$uD+vNr=}*eElGbbE)E;|_lTVybt{kV2&i|1FZ5{F@z%sfiT3Ayd?qit zyi~oKfsi1OnzG%&&SpA{^kS?#j7u5bNYd0F|EjgrIChVTn$68VU08Uww6x^BgvEv@ zYzY;{h5LH1gCPKb^B;)0FK_~0%fB2q0L+$5?iD+BHOe}w<1c?ZKbCED9aOA|X%J@h zor-fwwhDsju9NnY0Y%a?_a$TXBbzL5?G9v;Vc2oMm4!WKSI-KzqE(Zbwzg>W;k7&rv)ISNak?rk zU18maBK~K;P%vq%bixrA*f9ETpy<#Q9|2LSv+GW$7_8fF4KZv-*7BRI==2?vJoMo$ zl<7Yk+e)Y!$h7^mIR^UqEr!isNsSWDJlP4RlO8Q9@B(Eh?IAY|mzx?aj$9206953I zHWP0l5{=IT(J_km5=}3i4p9P9rkpBq7N{}^3q-)-K%}w_ZzYXoH~(DFO7#Ml4npEG zN|0wrH3tYr+s#kJ8|_Rwb;H-Svq5NYVIj27+hq|H&cvKIXFh4kdZt%Lcy8^ju2gQq zkhNydPfeUq->&%N#giX=B+^ zvyo9jv75$E-_>G+IGQAy(fFMW{R#Sv--nO-?eu=0ZtUQ8h>w3d-T7XBN;XRIh_)|` zxc(D_8EUMB-^lN}GB?mF&6+Q>MW(rOcV=qj-h({*QBu4Jn}!?=4p=aWJ-)Jj>4;{$)Xa!sL zYiu&4Kz;Z^-BO&^!$i7%z-9Yvi`-eDto0)$Q7a|3 zl}QZmU~RLPO*tmEbkWKn-93z7FBb!*aCO}_7eXe}t8{=$A{5&1*>MoZKggq_pQH-h ze6k{@Qj-|mLhwPPrWs1~w=}wqiALK2l)Hx>I<8Vf39(%laeQ9ruCt6HYd2MS+%<>e z=-ZuBb@dpQObwFj*n<@UkAOe>*^Nj7lib6RE2q=WcDd%*-a$j=m^{Ih=#^gzos-Da z-<(QS!{qiDankHDQG%szvE41aIj?tiylKngOuEV%Wu1Ept~TG~PE4Gm$=(%aI0Hh% z5w03Yu8P=uE!PBPA*`2!5P*#CFcT|WIB8D>1qOs3#Sy?PfMZw*O;A!0ka-^}&i6Md zBg@N$VYzUoto@8_v7EUNwg@^;cgv&NC9v3@p3LzmU+Qvd% T8AGWzRJFc&pG|U?6>j_oKx_tq literal 0 HcmV?d00001 diff --git a/images/monsters/barbarianbloodwalker.gif b/images/monsters/barbarianbloodwalker.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bd876b167667513f8002d7765b7745b4474bb99 GIT binary patch literal 2043 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 F06XuiB?ABe literal 0 HcmV?d00001 diff --git a/images/monsters/bat.gif b/images/monsters/bat.gif new file mode 100644 index 0000000000000000000000000000000000000000..11ecffed93661f458dc1f2a81259ef79833c1464 GIT binary patch literal 1202 zcmZ?wbhEHbbYO5`_`a2akB3`;kC%suQACJeOI1Nwh@XLhfuEO0NmkNCU$dqtTU1CO zAtFdtQasexgOiDonThf8$$iO@p#ko;S}F?stSpAw>Y;vK4p!zd!G7|x68c&yOiWBF z3Nkk4`bIh$=0>`vhPrCXid{8%k%7MKOpFRLQm%FuY^<#R85o>wtsJe*i?fm>M1;-s zwH8e85Akx~<>6*v5X?eqkG>#7o zOplM$)liNN4X`lQj|}vR5Av`y(kaYH4D#_XP*=7zF%0u^aI`kghz-h!kDNQDtF@}w z#>~Lc#(dfADViz@_T~mYuJ+E>#-A7%=FObwXlW=VCd$Lj#mmhV6YL(~Zj+x9s;MIH z?QG*=ZSK;^$?gtI5U8q#z?{tgE4|uEfH^nvocl9357e zo|vDJT%4UerMI=RAR{usho6r-A=tC6x|A#s=z2 zDhkqF_2mIxF5$k;d1>+1W`_Q5wl?O**2cO<+G?Ugf(0pYPBs>4vEjDndQD|{X>k$Z zzV2&hw{_K)C5C!h>T6jTY0F7T)E4L1TbQhw)#~SFKcTrQJvO4Xy5!&c8^H81jDg}$ z7Dfh!tqeLKKZ5cE1IK@cY)%=E4GRu7a|mn2oY=7NaJzuA*Bp)ObkBlgmRPQM7yVLWe2)b~x-YYLK*@xguv1 z^V6&C##zT=5)B(W)qUm!vL!rmaFlh|;xl|v;?$xRUY^5qsc0ed${T9TK1M;F4Gltk zezpmp9UOWD3g?_)yvWA*X%eH*mwpc+Mo~$ng$E9FDJ&41E@olF@^JIh%ikwHoE@Uz zpm2sKvhu_Ac@FFjLPzB%W^8EiV%!omgCRm>q8rz02L}NL#vdP#DK$kLN?>Tcs^lQ1 zd?0b5BV&R>t2DO}hex83%AykuY@%i@LcJ8URZDHN^k` literal 0 HcmV?d00001 diff --git a/images/monsters/bear.gif b/images/monsters/bear.gif new file mode 100644 index 0000000000000000000000000000000000000000..4249b050281c025ed2d27f203e182000077506ef GIT binary patch literal 2382 zcmWO5iC5Z(0RZ41mw>1of+8YvC;}pv7sjJM5ETM5c%z~fjjbBBqQ+`sl+!y=)WoBj zqA_WDB-O;Wwy$f!BTAK0KAp{*KB-#k zO8Cf8(W2p9suWbkk_X=ByN*37Vt`R1*uqMp+D(xkAJA>EC(q|bU3ZI=|IyZ(iTOHe(K^rI*o;SqTOM^0E$SL%I3k`Bd3BO0fQ1eL*GTMNO)|e47 zWe{C3NU9W^siMf~5}qSBGM|S(rRC1(`3)(Q%MFPI31KDiA=he!R2=e(tuR+i?f@xW znn;_9UKAJF{)ed13W-fgn=0dJIJg24`J7%j^IBX_u`riUXp}QrW%M~qX|Xuim>GF4 zKdSl&)mkJf6p}vgh(GxX#gWYz&1DG*K6P1~!WhDdEEWm@(m+E7OYvobFem6{+pY&&aW>eM3BUa5vPGoSd zlye+<{`s=#wscx|q4>l8GA)ldUclyr;!Mi$&h)SfVc^Fd(zi=Fv*rACTZVgBx!os! z^BBKd8|7-1OjpH!b<;XkEnewJov9KxDWgUWiP~6dUVP}>38^KY`>6?>$YHeS3A?o% zy;5+Yn3E$6{_Tf7#xHOP02~7R-wFLb0t5imA#jMMDi@t@D=Ltu-&~wq>&3B-&M24W zHwMYEb&offF5Moc2mZ6!Zr#1^kmvfMlXeRP{PgMLE|HJPC!)RZM(4^2M33)<Rj)POymS*Gqza0(KY7l&vlT|x!Zs9`Hm`jX?*SBMNJep%pJUL*3zJ4r&6mon79yMfo+6R>FgH}5YZCFEWE9W=ZIO@%N zsh6Lb0iY+}WXFmXPZa@UQn3oDX@0f<{Y`n_EI6W{PY+Np{HUf|UaZ+ApLlRgJR{rc`TgW6FR(>+pz(zwgbPplv9~T9gQi*~XSXb^@foyhw-R zVXcr2$*~2QjM=~M9j5V4zU9E(+;c$u+zS>EOFl5T8OziPtA7UY5bIkF>!6&zg6ME4dm-^+8D@gH3?mae9Qwc^(mvaJ0uWULtu!LC(yN1p@p1joXUu?iK##)a>Z{qYLZc5%c&Qhw zGnsM0HR%vO*atzaL9BoYHbR&8qZkyL35q=2-$lz`%Hj1MS!fsC9^S;nthBGAdBy?W zgZW;(5kcpeZgBfNg9^_o_Tl$d!MFvdIFM2Adw~2t=pfcO`lm|mK(XFLQXfDAYmEIl zxOso1D#{OxgJIUv+s_e(TjO? zu`=k98G#(24@0C5^p}c0+;we4*QCk!BVDGSw8A=O^I7=dm*#&rT5(j46_zAgg*`F* zXg>hM#tz{4tG@Um(-VsJDiU$T4Ntx5^n))#5&M+eP@)qR+Xp6643;_*ojkq|GhmV* zG_F_?@duHpwkGq|tzExUD==R+cviayB0oOhD{M|!?obe9RXJV9V%l<|IWjb)rkC_k o^yr)S+#y^L2-1j#zr9|F(tAPlP-)S5k>%4gqP#MVfCG~M5AGCZumAu6 literal 0 HcmV?d00001 diff --git a/images/monsters/behemoth.gif b/images/monsters/behemoth.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c0668c730c5b5d4c427694f65695a6e059d576a GIT binary patch literal 3676 zcmX9>YgAKby8g0n*$F#g2LeQHCfrO!FyS6W-Guu^4N)l~)j&{DpeBM=7q+u^2p2Wl z;Di}E&9uQ0i`967W2V$4a}tyk9h;)H9P4ywysSc3J0;H8V%M4lCq3u+p7pNhd*1ig zyT0egS6W_@r);1A1s1{o0|&nzfCp<3q=*DS1ON$e5(gq2kOV@KI2nY96ybQVEh2FV z0VHHllQJC0f6o^VjmZpZO6ru{5s3<+YM3KC0C0w%>->wK# zXC~BT3$>YCeHKx$QCzq|QKyt>RB1Y;sBS~DPARF|l-{f&4Vxn0ED^q4Ce*1UI+bjH zadNvVd0m5icSTxDMVf9~VS9z-P=%sJv#F(VTW5vjZB6`3nl;g8jl!%=|KpxilTK-_Q=V;9p41jwbxP~rfOiRkn7`WyAW*hLYhHjl-~c@Ys$^om(88HLiBenYZ^|V(Q*EwY>MoqvI_qSLX&- zXT^ADg{xEJ>Z}_#Rk%zVm#NNW4rBdbh z<7VA>P@CJmW}VmE;xpIztaUTyx*2QT<5T-w*7k9$&TG|;TMv1yEnaK8&#LnUg>Apb z*6y-(dImeawoccu$vfQXb^OK`9I)wpwichQea5PLU^_Hp+x@k@WyTitJ0I9PeGXfXB?&(hk3?jnh9RVt+Ni(tiwF(u+6$mvo7NKEZ+XGDyy%;qompI%Szer3UJi0@`TrpK1z`cO4A%UbgkLiO@FlR!i7j*5JzaSC z>iQ|?(5+rFvBEY_x@idDVYu6Wi_4C{bLeSG#pVh`gni!WX2)$r#t6zic~*MR*HIom zImzaPHGiG-AgMwapQ&nUIyqgy#8^r;JO8DcJwq_=kMj#Kqs{Ac>jq0%bpeAC6x2tP2Km#SJ&Xxk8+!?1s)CkwxoCOMUemU#`U}9 zXLI&l>1Ze{V835@{>GiJbbB8RDfi|7a(5Wra&`aTo0htt>YCNI@c)+OJks6fzn8gf z3ngZrHPTq3zSi2hayu>`x~Yr(}Zpf%AbE$3X+K@T^t!8 zX-@5S41k(fzxDC|D?h9^x_NAfz2@CosLwb!4c!$Vqdi>&ktY|xCE&@{jWt=oEvT)M zObFUdfm<;@z3K`Dmi&p{)kmD3p1619s?#aP>4M%h0|AB|y)J9CoAaFuDM$bF%NL*L z3$9dqIUUwf?Uh0nyU1>N#X3iRY>6Urkby*Q_{A)(Me+R>@sQ;Ng|U_bRqm~^3#;P`2BYNhw?8<;vKYs;b*=C?7T}?oKX7F3r}v7rDG(6 z2+N$emLltaxI4A;_cvMCm+h7Q#KJBAoG#+9^kN8?m`5iOB8gQPq6kP(ayRj;Bc?8| z;MSKYA@&gLNKIMd*30L5McHerUl7RlA}S=KY_yb>@`}R9yw+E@1t}c?4 z(-O9ZkWUw|Ww@s}_H>q}a_D#mt2nw|EI{D+>)UDGdXbowy0w+Q6}mN_)yH3P#Z!?* zfqu@~ag*_mP$31}68$;;7|lK8hEu{=SWXASjoqc*5r{TmwD4y%@<@+Wg;%-l1 zRnG1Wz|MWYuRH66f}4Nk5~#0r^AjlMyE}GH{S*|{r#0o;nUJMoi-$~lXkk$j95{<3 zRG?2OhC)A7PhcGZCR|E|{9~{y;hZO=ihu}--yNA}F$zfY|6fwbBPwH<; zCA6|Im1r^wBYR`Db~J5i+WqqE&y3i@BJ@)#(N#B`kYR#EBM^9?KJ_1_L3qLf#{;J_ zTdIo~7=dHU9>KhhWOk0)#3>QO{D@GP-%O$Pax}}%aQ8@u<02psH3CrJ?26jxM54#U zc(wGF=(HrHBLBR4kCfry{p{o_zu-V0#VvX5LDOM>Q!K7Zd1&cfSJi-V^*EB`=_bqU zc&5}8W0j+EHb1VkFuV?XSK_=FT0e+L?y4d5CB&7KdH6kK*9u`M8m4i_{Aj^)uCRDz zctNp+>`SrR;f!et!KtoXe08Kjt0Jn@Py*Q~Y!bom-3@TLga<1UEvdrK%DaU30E`6S z^@D0ykq;5&l(FDIG$JQd7=kmH+cHw#D&bN`U|H4u(>sYqUa8c>xvJ%+Qw<@fVj$69 z>|OVV?cjL;Le^QjE9oKjF3XxiVDFLMYv6t`#sUYY06JC-sey_OXaLr@q3~%6A5n9Z zUpHb!2PPselBV#7G^WxPqi?ub@y|UW8$cna=d^{TeR@20tZ-$$wqIEvT=$4^<+lcY z!>fkS&S^AtHn``Tc4FT=2tOq^Wtd-MXXDUZp3@j*14KM+6lg4TcfKF$>AOW7e8p)3 z;LKjCOYrs!-ZAI1nD3iEUCK2#@OINi9vFmruTeeOWf-xpnc;7D&usuhAq_YbyHCps zi$Oqxv?!)o%*2y+R>&*%UmjVY*Y0)21?242KWmBCrzSqL*FqpkT%JGplx)+U#(w9A zQeQra`<8?RM$nxUtNrUid6A@!0;y#lJl$;;eB@?w&2aoTPF(043d#L9iv#Id(N9Ty zPtkea{#qk(Q4dGlbcd+MSZDXs{l92f1k=n2X91zDy$IBPIBK__C98#nuIBEw2L&Pd zI0NFf(1CdnQht4i^LS$v7x4qh%ZAWYi+fk(1W38^geb{lZ`dujfbC3Zt6wEts*nx6ioZs--LFl>O*Lk1#{1=$;k9>7V~bx^ctG!o(5}p86!tsMRw_y|X)q z@{l+E=*siK)ZVe1*NZ&=m|CR&hTlfl4o*bG3QnnSKMnt29txko2Me>bY{Mhg{GUe8 z2bl9 zZt?slwJK`z^W+CWsvjC2r?I@}<49mR3l~moFf(Is7SGO`?_L`f54C(`Q`GB~dlXN7!$vlc#=(#r{Ex9|&NJx$9Eo{9TJ2ri!&EH)aFs2m1)%xDo_1HhJ zp_OXcQkJ;X_z)QK$dxpvwV-WI?0^_MphtI-CuM=~bb#(vW4RxryJ)m`4B2K+*+m^a zBPAoW@Zn5k3yBs#F=;6zeH!_A09yY7t)`G2{m^RvHkG^~UB1mQ4~pzPt3hh6AA<0{ z{chM;1b-8bs?=zWAKe{*a-GoNk=>W`$cO)P<}AZ~U5u>MpKcYyn*yOcJG7ZXQUjc; ze(qZVC|!-F`pvmh!Z2;b+5pRW_>6<*e)A!#rVQL)g|LpoYxV3YG13=tHle!pb20MM zBJb~h)S9&|-VeT|_`ye>KF$3>&!^NIh2ro7 C!e0ac literal 0 HcmV?d00001 diff --git a/images/monsters/beholder.gif b/images/monsters/beholder.gif new file mode 100644 index 0000000000000000000000000000000000000000..58d4b9ceb579e3fb033f6e988e3b3828cce4eedc GIT binary patch literal 2567 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 literal 0 HcmV?d00001 diff --git a/images/monsters/betrayed wraith.gif b/images/monsters/betrayed wraith.gif new file mode 100644 index 0000000000000000000000000000000000000000..bce51bc717dcde199294656f26cd84d628c3ddf5 GIT binary patch literal 2282 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 literal 0 HcmV?d00001 diff --git a/images/monsters/blazing fire elemental.gif b/images/monsters/blazing fire elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..071c160708625ea421677ec06f6d258523e606f1 GIT binary patch literal 3880 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 literal 0 HcmV?d00001 diff --git a/images/monsters/blightwalker.gif b/images/monsters/blightwalker.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff9aaaf8aa8f6657b0b5d734ae532e2d849e7a8b GIT binary patch literal 2035 zcmV_@+axgjm&blzC$`0000O78HkSN-7H@WF!;2m}7;4e?u!2Rzx?NQdwqJ7lw9X zM;HusOe$wf7FaO^pI98MM+-O@8M%mC6$}SSNKPUY3`j5&Wn^SMB@=5gAlup7uy$kA zgB@)-HTlSkt9C|VJRX8bIi-&LrW|gk6Js-WfoUL5|w8> zqJCN{8y+JX6+9D-BoHJK2ANw%H6Rg7Atx^+Brg*bTsj?fJ3=N51Vk(yYDFf_ z&C3@MC%0`o3kVBdFcvEv6yK{p4F&-U02Mn836Vh!UpgjLJ0lGU1vDfZ0RR*Q02vMo z5efwkNhlHk02(b286p=C{lF>odtlCuf!~Rf z{rvkyMOy2WCZ1|Kn0Z%_SuMM!e5|XgfILo*T|m5Mg0FyJ(s@PT-`~TdXv2DZoR57l z6$KOm7cLkA!?~mExPSD&g#Pm6Ee{*QV~ZgW8iG6=tE7y-x0i)cHH%R>jbSY}DHp_Y zB%Yg-&x$zRk0;TLG|YAw({LSzUMf;A6;d-A)VQ5gI2x&MUi`&~plUp5Ni0}48>@a% zv~)@DyJwYQHPMzzUqLPX>eO;VEOAOG|NsAZPA>4;!ROu(ySlmc+y-Vb8EHKffoC(2 zUp1+AUjP6AA^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANm8H@BPB5!!Gi~7%7-Tht~}ZDWy6^!SLSqSGvQ2{cuXp& z*|T6wlMFx*HKKsv(V{s2F^$0hB~zIzi9&68m8#XIQuhRvdXi^KBYTXr;Pfv}oRg4{ zxpLV`qc+br_7Y_S7vONwwhW*HICLNbOoELob}XrvL@lkajUb73dd zg9FAMY&lWj7#v+KC1AkgMjGmlOpTlWj00@Kumd8LWw~%+3zJWAAQ{1e1&@R|B18m} z0}CZA2&qk?fC5Mu5l0sj)Ut#f%FLiadrWi@M>fIn;D#F<2qDJ`xP$?LAF%ub0e~1m zU|Bn9Fjv7BBJePS6DMq8O&Srr@W>-7xIv04uE^0zF0jC|LKuEPP)r0PQZ!-&ee{7s zE=GtUMm+X)DZ^+0Fao7AALw-!H6U>M5hIk z^l`~ACJh0>E>37LgFh_r6U!E!T(N^3b6gn28`F?M1`R1h0ZRmbI3iG+h9IB^BL>u& z5CjG=q6Y$ou!+wgju>$S1O<5ia6%I1u<*ndF%*%&4G|y`97|9PKmrhL&;iDXgOs2L z1c~TjfF1xSBC0_UC<1`9dL#nDvUC~&!43uJFu}MJxNyw~H*BB>EM!O_MFg+};S3(l zym1E&OVBxDB{oFztPOJ_1c3!MI2(x#m56EtA}>I2i!jkR;J_=G*b)RX13-XBnEJG` zNdR|95yd$s$|Q5MqPMbMLsoDL(M%kcmRO_ zaNr?`6eDWk!vJppK|(s~P?3TeBO+i483N>i0;$uA7%B>R2tbAcEhK8XT}e=RmeA)IUN|ampOf;0g z@Ie${paL3-(mg;t;RrpbQjGzp32*3tu zForgKppPLz10aeZjz}H^0_+&VD@pkeG&Dd0G~^#2g4vV(jS7~$Or|oI$;@Ut^O?|$ RrZlHX&1zcnnmq{!06YFA7BBz+ literal 0 HcmV?d00001 diff --git a/images/monsters/blistering fire elemental.gif b/images/monsters/blistering fire elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..2443d3069b453310d04f5b1680e6bbb1f65dcf0f GIT binary patch literal 5055 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 C6ztRh literal 0 HcmV?d00001 diff --git a/images/monsters/blood crab.gif b/images/monsters/blood crab.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2d17b4cdad54c60777e13b614375e51b6c2cde4 GIT binary patch literal 2700 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 gYVPHh_i=f-VZJ%dOF^y|$sHa1z`J=d0lk literal 0 HcmV?d00001 diff --git a/images/monsters/blue djinn.gif b/images/monsters/blue djinn.gif new file mode 100644 index 0000000000000000000000000000000000000000..999ba4edb19644a7e01ffa88d9580fa616db8f89 GIT binary patch literal 3230 zcma)*|5sCYn#b?G`AQO!n}ja`gWLcjLBIsDC8&54!WSvUKrK?Fm{hAcU@ z2*J`ZSlXpF?F2L(uw*8TUJp9nZW2O7mS)kq8SJ4kQg_0*cEO$5Lg%z(&v`xP z{k)&^ocB+kPx-F0LYW2yP+$cB$N<1%Fa$6ihGD^T1cHCGKp+wcU{O?}gHRkbVv#^5 z7VMA;MIuqui$!AbKUyr7=89!fu}CTw%fzA`;tf)YHF*iJKfZ9TKjsXwqdWjp}FPF z#*Q}|&NSB@IM8uGeYQodZ8`8>XKQO`>nQ+;v>i6K96o>isHvl6prfPr^zokd4(sWY zpPeh;_Q9bNV_QRS$NtYc_Zd5m{Q7K%>3Gk%_s(^n{mA&9{i3;pFgJ{tn;re92t>?2;msP?Ko~Ha0g-i_|C}S^yQ)ZxZQ`_{kX$_!{H_z ze%v0w9Z`aWBS7GO;)V~$12`Te@Td)bIr5*lBTP8LIKD*SVS-q4+l+2|um88ksVn_{ zJc>0)SbYw=&w=}*p#*-9uzhp$N;J-g2Yh(YM+AIC(2ocFL~!np?f?-85J4Xv_7PE* ze8h^6hy;kGfX@;1*`s$0?#tn6$CBUv*iS6^$5wpymB83afQSTdM8bsM7yQ;e9rOkK zzOdi7a?KqrmiE1OAnOKN5@%ft5fY5)7;agOPB+AB|r6c6uck2nWL9U?dV; zS_!WFvM?Q43Wmdxr6@})E8(R`l%?=WII^-7i9}h6L<{);mFOoj2mr4FInU3Z{|SJ; z27E~uRyb{L1D&7UIOQCi=!VlPt&4D3H=S3Zniupzy3FFH3Ix?%+SQem=KRYmS7JYv z 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 z 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 literal 0 HcmV?d00001 diff --git a/images/monsters/bograider.gif b/images/monsters/bograider.gif new file mode 100644 index 0000000000000000000000000000000000000000..522d1f04002d0d0c9eaec0bd6c67dddcd80089b0 GIT binary patch literal 1946 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 literal 0 HcmV?d00001 diff --git a/images/monsters/bones.gif b/images/monsters/bones.gif new file mode 100644 index 0000000000000000000000000000000000000000..be2aabba7b52ca2230cd1df7f6e37a98863fae23 GIT binary patch literal 5316 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 UO(S0l@;BTpYiOOv;eeq30dH!PB>(^b literal 0 HcmV?d00001 diff --git a/images/monsters/bovinus.gif b/images/monsters/bovinus.gif new file mode 100644 index 0000000000000000000000000000000000000000..35785d7e1a7803d18c4d32e6720ba6fe4a7ac123 GIT binary patch literal 2135 zcmeH`X;9O58pnVCB>!C8fkaXSet`r62nk1kKuZ1ra-roAu;p-?7y=1$1o$JcixR>S zEGSs-R*N8vY(bVDcwl$SVE`Ft3RYTZ_W;*Yb^D_6=xT?7jWeCuw>$fKpI6WGy!d{f z`OfE2sul5KEd&sJ3qYHkx7?=Z0g#KLxjZHbklIjmeDE|Gkd5IUa=HA)56dATA*LLD(B7_Xt*RX^*CboJ$k8D}%mn(Jk9- zA|`qS3;41uY2|ojhdQJtnwcvS*=iNpT(8e`F>Se`7aQLc3gG7Ryxbx<@z3qfjlzGB7;JX4<6-rRuz9n85_hz$BSbf3jeSFApy>|Q@T7SJ4Kc$ zkBSfy5r+h4YubS0rUZeYuC6Yk8ZWD)V$=!f^ptA77S|WSIwNj? zvfuVlsaC*!Fft-4N=rY`0QVY83^>Fq;U0Z44znFHb=qn@R9EOC==7XQSW{~_ROb+R*YmAi@^x6uYL9aUq12RmwW3GXX|FL%5 zSFW$XVR5y#TpvIOoL3|o8?=C3uS0qL?0~urD72mNs?19*7HVkWe2)eaB+ho|#n;Ys zl2F={8GCmxXaa`Y^^xwbF75yUq(}eo7awpe?9V3&GPl2|>}%@`AT@_ZIg?U)*pj5u9L}1On}?>qKa#B9|`KMx)Xr z3$4xBW~!&OM1pUhXV@V8b~!FvnXPdlyU8XsD&dcJrk+i!$)D;jn>!g|FAs_@ZS%T? zXn_n6@Yp3-g`nKAWQqzmO*3g!pss3~+;wenJW){^@*;<=_q^eIjv%jAvb(?p7as@lRq$U3hx8H ze`CxPh1lplXgEcBsBrg>ku1mtGFT+=L8>uJv`!_=BJbW5PKu} z`He+vwmZqwE!G(?Np2x0WRmuqFn1D7ku!w#*#h^x7ov@4Yp1433^!M*Hf+e!8X5U1 z_VSVPK(^IsevHl0&F<}_u&BRVQ_y$p0uq8@vt9$eEqB-KS(oXE6p+TzfrnERlI2(M zC}k?cc&x>5>y;-z01#NZt#x~INHZ`Wak?AA$IP=1h`L@w^e~awvF-c)_ZjDfCc3-! z!H-?mi0ppu$QDH~i_H-GLdM7~R;bbROzzAm`N9@3WH*1IVs)*OCbU~ezsEKg`NjsM=ZI6#@4>fN^icu zKIf7%;DK~&@*bjTmX{v-bV9slkVqD?JuC?}{yaJH#fb;+6U_Rz%l3aWH5&M;e8{AG6y4I}Ujouzw#8u3s^Dg&PN>f=$(XYI3;j#T+E6;dJ~b^9 z=H~x>Fu~q8>GNUKi;}}F2NF7l=p*b46~}mdr1auw@q*H`QJ6XWvA128GP?7pg|L)H WQxC;u!nNQE;ZEr8Vax$f;=cj%#gWJW literal 0 HcmV?d00001 diff --git a/images/monsters/braindeath.gif b/images/monsters/braindeath.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ec481e788b22f42f7141bd4c7d9bbefd4800df1 GIT binary patch literal 3292 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 literal 0 HcmV?d00001 diff --git a/images/monsters/butterfly purple.gif b/images/monsters/butterfly purple.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ff52cfa98241a077aa0415ed011b62efec3c6a9 GIT binary patch literal 417 zcmZ?wbhEHbbYO5`xT?Vb1pn0@{r|+UhvCR8hBLDnrhH;}zK&tCKSSj%hGXX#cF$y3 zvy)-97elE5m(u};Lkk#I=P)#1W7x8p;b0HLntq0>3^J037|tAF*tvya(>{jH|J5H( zXPCU5;q-rv=l_K-&u3V&3FIdRwtWs$3OsbA`cEt=I+%Xh{kCfVgAElvdb7{J*iv;i zZ}6XyWicqL$|;Hq3-B`V3J8nKN-M2f z&mhPx!XS2=L4;fIYJQ8xlP3*TZiimJdHe4DhmW5=fBE|D`;VW$e*gLV?>_@GSC2Rg GgEatxZH93G literal 0 HcmV?d00001 diff --git a/images/monsters/butterfly.gif b/images/monsters/butterfly.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bdfe81f34eea0f50da4f630537f30cc51096a34 GIT binary patch literal 2540 zcmdVac~FyQ9tZGm4j>5u6A|SS-vC+!g;>$y=pt8uAOYkk!S&$Mg5?qk+6vtl!zp(O z0!lTU1ymZ8R#9t%97RQz!#Zpix0`jVg{?EnI9&s=>;VQmFV8>|KFfQ`W0z;?h3@CM;10Gxo$fRGIV?47W2Gn_WT#Rb~{ zUmzHW1f;-T;2@9+qydKk8E_oP7jpbUfN)?J5Uc-gzwX644&EvHPd^022-=CTNQieq z5{qal_Ju$ejt}-DIR&YyIFg3L$B-|P1W6>}5=kCV02BeGKow92Gy-Pc=U7)4;i3CiVh- zuZ<(|yFwf*MqU-NtC3%a+*a%y1creLU>bM;%ma&n)(F~_(5{8n0VGP~sH#9&8EPw0 zUy0KVs5^yv1aO90678MnP~v6a|T+qD7IS03sjNV5AQ2=EBqW)+sRxLl0}0v0 zRu`cO=U{ebI`LjYdO}7jk(Hg9EKABs&CEDLIHu&}WO=%}9zA;0Wog?bDKmYe3j{Bj zY)gz{lkNz0KPXt8sASs&tCWLsmYLI@F;&Y@3C}*HIk>NNq}*cbp)?lM>M9G`p809M zPlL1VW;ziy&c)V|vG(R!eqp_=;a`V2FLcz@FTmIPn?W!dE zz|baF+*EY;bV{wAx0>hvb@3p#N%-4?XcQ>M8@D?Sx%`+SH(mq7XLQy3L-XM^>njaR z2l|wAw@S^N_l;led-QdUi6L{j=uNulEW(Fo#Lz{bY^1?$_bf}UY8fe__3!D{_zqW` zT;uQg&l93iV`oCNoe8ziDXaHYd0UjzcBF;WB6>>%w?eMiW=2;!jDJ-M4W2a)qvY(FhW~7hidtK>$c>UPl7arcd z^4WJ^kql$o(5tFG@{MVKIcNucY-4*W zrDR`#o7~-Jcy|rM#e`m3P~>aQ80m6PX_}#GF~cVM<)2466Rq5iRb~loBPMGiWMP(! zp;0>GWTO`LZH7~-K!5iivQ}U8Y0Ox0qVjxQ@19?$&3dqG+V20(Vs31T>R-l=M5glg z{UCI@6}%`tFLlM2CpEi0o+nj>t0HJV27ik(t>x`_wdhbTz7UC!kwiP=23IAQR=OCI z7V8|_vyXPH<4%n8-jTe$t=&A(BEOPO?cR2XO|EZycPjCFW3&5Rn8^7HQ|-4O&7PkO z{QRta%TRGpE_XoB!hYx3P$9A0SvTv_cad~Ce@Vt{F@vljuNCQJ@cd$44Yl%GC>d7A zv+hirtylP*q?nV%p#^Dio-qj>B7|*k31$RHd-zW28<@hf29DS_d)FaC(VxYZ;m$l0jcC@R`?- z+d-e4!ZDWx-pYt86b_akx?{&C4uAS8Un7q?b=I*ZK##*MnUj2Xx|>7c$hyQ9SrNA) zD|I+X@r~$U&d24E@>W*^6R#7a!R-zaGSi-Km?lOBaWc;)gY_H=M|r#S@al_dKIUxG zoEtLs4*W;pA{uSEygjeyeRFHfYG(LY=S8)KG@ycyz~R*$&9l!7Z38~SPrmI>n8BrM z1rN9M`|nzZ{8dkd{jBNmVl4XDJ?^SL=TQQi(~mx_woj~C7>{PfleWQm+^2(W4AS(S zNHN-SSdXBC4@uZgR z?rn9OMku~-j(?~02Xdxu{+>t4N4(oLln+61F^}@mRkd;hPEpN4{^m&GPc{B}94`0E>QW|bnG_CQVhOX>R{bhekHe!n yRQ-G^*pzH_eZqX?8(`FI8zGzUcp(oiX2!`lTigm+6b_j}Na4^mhxZ$s!|UHz);V_o literal 0 HcmV?d00001 diff --git a/images/monsters/butterflypurple.gif b/images/monsters/butterflypurple.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ff52cfa98241a077aa0415ed011b62efec3c6a9 GIT binary patch literal 417 zcmZ?wbhEHbbYO5`xT?Vb1pn0@{r|+UhvCR8hBLDnrhH;}zK&tCKSSj%hGXX#cF$y3 zvy)-97elE5m(u};Lkk#I=P)#1W7x8p;b0HLntq0>3^J037|tAF*tvya(>{jH|J5H( zXPCU5;q-rv=l_K-&u3V&3FIdRwtWs$3OsbA`cEt=I+%Xh{kCfVgAElvdb7{J*iv;i zZ}6XyWicqL$|;Hq3-B`V3J8nKN-M2f z&mhPx!XS2=L4;fIYJQ8xlP3*TZiimJdHe4DhmW5=fBE|D`;VW$e*gLV?>_@GSC2Rg GgEatxZH93G literal 0 HcmV?d00001 diff --git a/images/monsters/carniphila.gif b/images/monsters/carniphila.gif new file mode 100644 index 0000000000000000000000000000000000000000..46becba3a6b23ff597b944525401bd102907aeca GIT binary patch literal 2567 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 tJ@b1n-q&`eT_`9@&!do)-g z3@Zx)Cl?ah+S(%t0uuxQ3j+Z?B@>BAFP&jCN)!WeL>@dG3rt5z#d$nRDHK{W7@}b; zs%JTB3k$Zhv&@W4#C%6Z84)WgDjE?CEEEcTJRU?E3~VDIBohjDNJBe1Iur^9S|TZm zii$lE1btK~BLo0!I~-&r3Ofw|d_y5M8w|8(EQ<^cOe7LjI5nPC8Hzd$OCS!-n?g|= z3#D2pRV)*XL>nv-2164C8U_Ig2q-xq4OkxwIur?GEDkg+D?=3tH!d@5C=1oq)zXA& zG!_buSuK1s7L!jUbS(>8Efa$@8vpb9SmzN6LU%^axxJ> z4ggkERAVXtHpg$0*YE;365I`yzIVcsMT`_nx5AnT1YBeRFQc-3k5IpqI+IHeIt>lJU^|^*C)uJ= z=;q<0prB|j8PAPSL?|nrot;B5DYI-4>#R$OLQAM|KI*beIua70TO+GqD9nR0fm~T~ zAq420dj9X&A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWF#CT;T!z(aj!lVOJU`v+-uk?YrCeJqzr8vw1 zGV|umlvn7i*kLDEwily}RH%^QOpS9f{~bMf#nrA`>+Y@71|or}I0h_qBVpv6f-5jW za6#Fpnwlq1I3=O5fQKC$L6X!V!b1p&B1Nb03?zrMr zj~)rGF{=_ohYuLg&?&P9M~HzXR;(=l=|e#VG&d4bhg=~jK|XO*D1-@v|DR&q!!wk@nfe0NTJ%EEfrdR-l2}8KBfCEG>?OK%s>e&_Dyhix508!vhf1P{#r?ctOMiSsWo_FTIo&5;PNRFikT@xDdt+L--&B z3^YQZMHXRDP{5C;zw3^4{22Ha7@ z6)Lo_MJInOX+$3|EU*F$4y>WvrW0L}h8S0{(oGdYKmkXpCb;9piw1NNQwt4Ha|H=> zaDnS)bF^^)w-Q~^0vaOFkpwi4Y!HMNa466P1#~b%2aJ%$BX3MZTw%ZnaL}aD6#;Y3UhPzb{axn{(%3Q0L;3^GbUKmvty5O6~Q z9e4o27ZK1j^8#=Rid)f3$Oj4YdRj z%C<-+jlv6b1R!!7J34@$8*{J_xz3{7^hX+3=;O;22E51tyDKOl4NO`o&vz&p1W5s|;2GSM< zMdX15D1ZYBuCN6;oIXzyL957=Yhd01nVt0~(5;gdc9?3i6167BVOV9+&|E z-KYT%BcOpgz(FRfD~TU2afJxfAP-tF0QL+}2Mj_08d?xQCamZYKlp(ODL7$R zw1EVCz=aYHpoJ6&fRBA-f*&3L4L|UK4=ecC6$CH>XIw!JDR=-RIpT*?q@o^ucmOPN z01sKjN{);G8g&qe0dU2SK4~QuEtwlm3~~hm1QQXpL`klaIm~7{^O?|$ TrZlHX&1zcnn%ERcKmY(c3S`@u literal 0 HcmV?d00001 diff --git a/images/monsters/carrionworm.gif b/images/monsters/carrionworm.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ee814cc795fc8d3e64bc0597cfddbf190b53cb9 GIT binary patch literal 2037 zcmVdo)-g z3@Zx)Cl?ah+S(%t0uuxQ3j+Z?B@>BAFP&jCN)!WeL>@dG3rt5z#d$nRDHK{W7@}b; zs%JTB3k$Zhv&@W4#C%6Z84)WgDjE?CEEEcTJRU?E3~VDIBohjDNJBe1Iur^9S|TZm zii$lE1btK~BLo0!I~-&r3Ofw|d_y5M8w|8(EQ<^cOe7LjI5nPC8Hzd$OCS!-n?g|= z3#D2pRV)*XL>nv-2164C8U_Ig2q-xq4OkxwIur?GEDkg+D?=3tH!d@5C=1oq)zXA& zG!_buSuK1s7L!jUbS(>8Efa$@8vpb9SmzN6LU%^axxJ> z4ggkERAVXtHpg$0*YE;365I`yzIVcsMT`_nx5AnT1YBeRFQc-3k5IpqI+IHeIt>lJU^|^*C)uJ= z=;q<0prB|j8PAPSL?|nrot;B5DYI-4>#R$OLQAM|KI*beIua70TO+GqD9nR0fm~T~ zAq420dj9X&A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWF#CT;T!z(aj!lVOJU`v+-uk?YrCeJqzr8vw1 zGV|umlvn7i*kLDEwily}RH%^QOpS9f{~bMf#nrA`>+Y@71|or}I0h_qBVpv6f-5jW za6#Fpnwlq1I3=O5fQKC$L6X!V!b1p&B1Nb03?zrMr zj~)rGF{=_ohYuLg&?&P9M~HzXR;(=l=|e#VG&d4bhg=~jK|XO*D1-@v|DR&q!!wk@nfe0NTJ%EEfrdR-l2}8KBfCEG>?OK%s>e&_Dyhix508!vhf1P{#r?ctOMiSsWo_FTIo&5;PNRFikT@xDdt+L--&B z3^YQZMHXRDP{5C;zw3^4{22Ha7@ z6)Lo_MJInOX+$3|EU*F$4y>WvrW0L}h8S0{(oGdYKmkXpCb;9piw1NNQwt4Ha|H=> zaDnS)bF^^)w-Q~^0vaOFkpwi4Y!HMNa466P1#~b%2aJ%$BX3MZTw%ZnaL}aD6#;Y3UhPzb{axn{(%3Q0L;3^GbUKmvty5O6~Q z9e4o27ZK1j^8#=Rid)f3$Oj4YdRj z%C<-+jlv6b1R!!7J34@$8*{J_xz3{7^hX+3=;O;22E51tyDKOl4NO`o&vz&p1W5s|;2GSM< zMdX15D1ZYBuCN6;oIXzyL957=Yhd01nVt0~(5;gdc9?3i6167BVOV9+&|E z-KYT%BcOpgz(FRfD~TU2afJxfAP-tF0QL+}2Mj_08d?xQCamZYKlp(ODL7$R zw1EVCz=aYHpoJ6&fRBA-f*&3L4L|UK4=ecC6$CH>XIw!JDR=-RIpT*?q@o^ucmOPN z01sKjN{);G8g&qe0dU2SK4~QuEtwlm3~~hm1QQXpL`klaIm~7{^O?|$ TrZlHX&1zcnn%ERcKmY(c3S`@u literal 0 HcmV?d00001 diff --git a/images/monsters/cat.gif b/images/monsters/cat.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e5e13d449b4a9ed4bd5b713546e21412cc3f60e GIT binary patch literal 699 zcmZ?wbhEHbbYO5`c$Uln1P^ZCcyRmbf$bYiwAC)3Ic{lc%)`YYB_{mk(>ob)QA2%Q zCu@uSdp50_J6}#hX5X&4`*+R_^7i22=2DQ6di>y?lZ}OehFU_1w-7(yg6R_tbX3!# zf&}>mYD)6blH#5}ewZ8|Rgs&vVAgaCea#1V&VBvz>Cm19Up{~O{o^|$Be#x<%EmRz ze|-N|kd;xF6?6L7ilYY>9oW0)^wH&_Li`3gnhqxVllr>U8`1p@sW$Lu)GiJ`3J!kH``3n{B<#g1Tq@rfo89@n#m*6gnWFz;J*uhQaKQ#X%Le7A=Mv zos$jPo`MF(N*@B49F8*!83nsCURrokG?!sT%gHXG8?6Z}91}uW-^5rJ7f3ulHP?Il by1Tn8KEJwqdi(nO`x}_KgwvYZrz%i znhL}4vSrJHgM&A1+9Vc>RVo#a$1@lV+1c62$;k+UtX;b{ARu7YtXYwfkrfpcAt50U z1Z8Gsn$6~-q9PCkaX6e>txiizb2uDTRaFb3qNEEKE=Wq+vSka3qSCn7ZQHhq*zAai zh`am+R4R4*_U$DlB}-9Muh(NsEn2ilAP}rru_8S^T__ahzDkoqzklo`9Z@M#=quwh*cm#ZvOp!>tXD4Iyd*1k^ZHz#g1#^nNiO0SsdZ|l zQH~U;3pECQQ3_qI(5_SRvG<7kK`Gc=i-(^-3h386T6&=5mlk9+MLv z$K!CK5iXk(%i^$ETwV-^!;eeka}uz)y)Qbpn_iK}&lE|<_rgA<&u-IG{mm7nPh%vmaG0KZ#G=`{&6+}uyu3n`xs9YyIRZ(nn3oXC6^If!9B~{kjuXpE6bN~VacmJ=z@3;Y(&lbdD>cT6 zxr!%q|^VTWOPa(yc2 ziAPxRc-~G{E%sru?v)y>*!5UdgOC67?|=RCAHV+c^G}Z+{{6?lJ-C1GuYbAw!=3NH z`}X!Xx5jSXxc>E5*ZzF<%Rhbb`Da%?z5L1OrHdb5IDc;B?3s^FpBf%=51u^n$K%J2 z9y$Es2k*c4?jPPcG;pxL&(+)0eW0tequuGSx9x9j+1I?csj*>C{qDM2+pd~w>rP8m zWktEUtkhIeykq;ety?y~U9{<~jYflhgHEea7p{L(Rgj;jROGIc=e)6Y&FbH;`rYd* zvsYv-&s-*3x+LSZSJM|uQHfY2TqHy>rfw83J?IP! zrr~-V1A%Fx$PfrT-Zf_dX*!YZkJ8?+J2OH|@aMM-%$P@_3&O%_C}BW)l}?N&Ln!>s z?RmuHmni;6?_EuX#1Dsm_6rRnkY?swT2r!PVHt50|M9Z2Ks=YKv$@^1Sp(_T!NC&Y z^zdoS1Y_2Xp%N%UQ8t%d(*lOPJpWV?ZHfD=gr_5ovP0%HyKjmq#HsYxpXg0^OLa9+Q(F#VdMUc6v8H}sZR>suey_vX(OHSd zf!)}bfLi;@FuMzA?)KRa9o;`}AL>7S29u+-;l^<~#3%HB;gk2>^ub;4eu2R$ME8%F z91=pfB@V`+`xUm?hh^elWXLe+H1u(m085?!>LeXdYK5i1)FXAK;+rUNX4b3FC$)%x$onbTMJ}adf2RJZZvx{f3wQ zz3Xlh>~;I2AmQO7Mw+cStvPY!PZ<5sgR|}ldbt_AQZ-4J7L#&1#_1i4Un9sm>_NB0 zrbf13L6e(a^2#C}zwfYPY@Q4ZONe+eq`3TYXQ?!;^#?}KRO&CEQJ2G*dRMItCe&9q zG+|Ni+u7V!1-3e?U~qp|O=_=;5ZK*;cbNz{j~drAFsTN*Ce-MN(}#vqJKM(5=yzAH zd(99GOYZFRs_%c7`tVU`&|E}@QZ_EceeBgrw*U`zCJ7C=D@tECq_!Q}rgxM$23oREXV;;NZCExA8_atW0wc(YZ z35IcfWNXMxsDuvhKJPu;=wslRQz=OI(5% ze0A-h;-U-L>GOf=&e!~EE7Kq4d!xqx<|peZ_A^Zz-P2H8-(1(yT7z%0S3CE1c=}g& zmDAI*Jw5EuJH8&~A{;s9yU=ajlRd2cJamzma2ba?(0XC~G84XT_BAoehey0-3ej~$ zigmGH;kmcafgzUWGwEd0?n}>~Y})oP@vC?yHK|x2!2utnrgMwwcyk2H21MAonE_NN X?m`ZYnD(*M%QnsVEql)!2(aM4Gj2!0 literal 0 HcmV?d00001 diff --git a/images/monsters/caverat.gif b/images/monsters/caverat.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1c25562aad05405c8b9730d109038500262042d GIT binary patch literal 368 zcmZ?wbhEHbbYO5`I3ms$ZARu69Xc!a}l%1VjU0od&6~)29k(``t zX=&Ng(&FXi)zi~cTwKh+z%XUX6emN&bC#A%moBx`)cp7U22c$bUy^&jV%__i_x}$pDDcpc>OZlh=wy!7{0kYp3Z;Up zbPkEGP72tmaX>tWtLLP$gJXl9A={g693Q52KWH_M6f|IAiLU13=Vs?)t_osc6l&pM z=V?e_5#r?+;N@nljOpfO=ip#tV_Gtok)3S;XC))^ayCwO0nU1^PXDZ0&iQOSf++=z z+}wQija^AhOzRlycldE}tYhZjV`61K(Z$BfnxDONeGH4}d|_c$7S7v&Ta1V#C72?E=bPb38UKIx3^cz+epk;}dC0 literal 0 HcmV?d00001 diff --git a/images/monsters/centipede.gif b/images/monsters/centipede.gif new file mode 100644 index 0000000000000000000000000000000000000000..3683ae00c1a043b82cf17562a6bfddb47d9cbc2c GIT binary patch literal 1548 zcmWmDc~FxF0tN8*<aNF#)BB zRFLIb#<754ErlJr>uR@kr+`YM&M2;~>#DOWO51TeyV?#@r?VZurT@M6@0;J-V$Zc~ zs-!^S6^&F`h%QuE6oU`5VGUui2wtj6mK+X+h#AH}juHD)P;SOY+Y!cNm?DjtYIw?# z7{H1OM>>gp$&iYeQUPj`kSvB;%6FO2kOGYuF>)A!z-6E|9jbMNWE~+Q2tZ_#faHO_ z7J)z(kst>tMhbhak)dot0D=L~1A$y7pXN$F--GpMurCEQ1OhpDaU9$^u|uI@#HX;XI6$;^Q)m z^=lVCji#rQG@&TbhS5J-Nm@$(qIyk}8>8bLR(@9=4rQVt6TkQ1m=!cV86*iMXo>Se|j^Q5sZ6fu{sfo|W(U*(rw`+F9;;ULrZi72>)1iZ4 z^EeIZXwHC52bWewGfrU=-=Ay^3 zw%9a_W;AUM9=QN+35W5|etl2FhOPss#9E=@$P zKJ2U6>3oYpFCaKzv5%lU2aD$s%tZa0*p;w`O|?52^bcM3Hvk`l>BH+64^%(1)+Ev} z{>t&!Pk=*%<|=Koqx01c?yov?dtB(?^|ei{ zym>z1l2V>@_WPn~u4B-DSATPZyeipqmwSJ*d*8KE`&09kcCWbNk=W@IE{t*BJ2+~q z_sx_K$)oP^_y4D(ds~DcVo@IgZTg+r=^Dz}@F>_^)1UT=TijK_YM9_G%iryaiYXrU zy1p4^9-!{I&Rl*q$PbMl+@^jR8T+2ExGXqmh&U#eFA8^<4ouyeq#B#4mWC&A|R zZylxodZCiVC)(qiVn@b10!jVKfp>?HGn4&g&!zl3s*ZG>tJiELIMd&a6vY{rJ2<4@ zdop^Rb+=T}JA8-W%uU4IiWc4IUyw_iNM6{hUb<#uTVJ4v2;Lm^oFtl2ImI(V;1jlY0#Ng^J8i^x-b8> zE9M9Pc#pvU^0|vwH$7TS2v^12w3ft%OpPYqt>2OZ>JwCU*cC&+6${e_Ds zyX?*v?05b#AS&ROOsk!}qAjy8uP${&{*QXroyZQxICkaI`m1*DQ{G^2EotUNA zh9x(ZWE<`k1Y}$|E{S+m-fxXAUhbt7EuBkk8pG3U$JZf~ONP9}CvmI*(rQAqtiOPdF| literal 0 HcmV?d00001 diff --git a/images/monsters/chakoya toolshaper.gif b/images/monsters/chakoya toolshaper.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd1431eddf1e062850f90d6bc07c1f685d630c17 GIT binary patch literal 1352 zcmZwFdsI?)0KoCz<#I1{xey6nO%YMaS4L)5VrCZ|rZWp4)k^09A8AX?`6$x15Kxv` zSy>~pm-#-fk(p^PQQOjN9a}G}RoF2tPiNV4wwVmKKlac5`~La;bPUh8&r4w4DdR=8fBsKDbd0JjataMoYo+pZLSp$JQQA$M3&w-aF zJkl2B(Vc9wR2LqPH@1F^$5(wdkLHqEz+LDc>Xl@Hn$Fd^yTA755nTx^)VUhKyGoH`)!CO#h6^y z1EK-#8)Pu}lPD!9C|N%H24mK}&D55>(HNA4E{|B3UDVZ{<`kH~*{daa2zSD(URDGF zSUAs8*_7)7F9rO5#TioJwu~ZN>Dy*H5u(MwHh#8hl&hh^BKtNo>3)^v7%=X-Bl4gQ zO)5~BWWc03HB1C#Z|&VM%@DJytjQ=>YZyJ{nPlTGNQWdMLHdg8Gi(@+DW4aP2{alA z5ccWWo!u}fKz=)*ZBZ>c;~ZqqZX(H&OEBTDG|7t|;}0%lo@4T}5ona9_KrliK;dY& zo1Z(T4@LWQQMGS&R>S8xd)8i!BmXpx3^#P=r<&<+ea?Ci>HTtb%c~KRdid0JQSdXI6 zNuMaVAr_dxrz7XOVRT^2v2~NuuESbSYSJLD`gGO3Qn#e}CdJ54di1+D;pxc^3ll~{ z=u@na|6!G~;b^+SyQ%83u~8WA+V=HitJI0jsLTqFv1d6%faanE?PpbL6&^r0T$_LG zlV^|tVRwz@)Dh-Rj>?c*dR_WboY2#p6Zu3911GzUHn!9(Hw@t{`qxxBv3DK@tkm-5 znI8X{B4BPUmq_)~8~)*TbQadY0Zlb^1m4}niJz^vN^7-B(_H`vif?b|n)1}elo-$V z_VJd|*dZsjO#ZiSs^k(E@2;{PNqoi02Ugy#L6m!4Siz! zkwz+w;r(JVdTdNCDPf`x7MxuU!KxS_N-@$*p)k6eCwSTKGPIOJ6>t@1g`^m}g!1xb zr4<@{%9pR)eub9s9G_^%Z+=g)qm$jL6F@~4m@6GIF+Wh4<*hzkc@CJw;GUzpestyGMcF-IR>J#hM48(qstrUkg8T+AC z<)bL5ZEgFzQdURZ>2I>3=nPh6=i3GECuYRIuzZ`l<`tw^0`+Xr+|4~8mLK05-C|V5 zqYla;5Qc*Rl^25F>j4FWX*(!MdC!pK{zq}9Tv_ie6$A_P$7#h{;SOlylJW4exA^|5 p5?@aMQ4cH6UgZlKSM@p;e)06aCU9^Z#lnQuL;H?p=tAjW@!tet^ymNp literal 0 HcmV?d00001 diff --git a/images/monsters/chakoya tribewarden.gif b/images/monsters/chakoya tribewarden.gif new file mode 100644 index 0000000000000000000000000000000000000000..93eabf11730b5b2c2d7434bdcd6ad1cd7e2299d8 GIT binary patch literal 6649 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 E0hn${3IG5A literal 0 HcmV?d00001 diff --git a/images/monsters/chakoyatoolshaper.gif b/images/monsters/chakoyatoolshaper.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1ce0e451969a76ce35f71ae64e3550aea369a2f GIT binary patch literal 1694 zcmV;P24VR}Nk%w1VL$*t0Qdg@F;y}pEi$XJvsp(t6elNni;TUti;`)IX>?5^yKR4%GJk`nVZzv+Ja+56F4VyMJ7Bg9I%gX z{rv8fRw+hFKBc;&>F(_&926%Z8x$KP$kf%o%E&!PP)9%?9vd6s>EVWqk!W2y`uXMV z@$N4%G6Vt}JT4@vgIaQUd^|@>rM9v&A{D8*xo1c$LM+! zH!Kc-{*vyl>GkuWP*gm&dh6rg_NS8B{4Xs zv#{mk%%G*DN?c(wLr6?MDZk9i*}kXQ&vf79ydt;_Md{7JNAn zvckf$!o)vNRz){1NHrw7$Iq^sNoq%uT5G1uJK)ZN`LKtqIpPo9iH$k5YMHXhB>)5j|;&D7Gchh9e{4TX!0K~H1I zl3_yT=<)EHwy}5Cu#l{qi?^PT2@epRs$>TS2aJ=ICNealUnGp4l<4g1A}~OTnwls! zM7pbDyQ^9*BPYbVX+l$D)1YOev$4RodD!6JMNv~qTvp}e)KF?~d|5=<!q!- z+~Mo=?y>mux4wx_@b&eVb4>E~^z!%jq<&kjeo)ol)x^cXdwEP^Iv=;j#K_OcJ3~P_ zK1Dz>B>(^bA^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*EHC z10I$Iqz$+p;AK7Ufv12&vLzLLDNsF-~vyO9O-uQfh2q zkQPEVAXaQaLm^uzK>{J>S)oG!LI~jmF_8!npJl4B@`!x{(1T6}h)4kz1QcX~0vk4z zzyuR#P*M&*c35zS3Nq;M$1X%r6P-g4h>?mn{@Ap^1vk`lLsAfogTfOK7*m51^Aw>0 z4$d4=gan@;A;2*%wBUplH!=i)0=Xz+#!odJ5K03dX7NKMBESO078)qCh#`JRFo`fA zJaCH>`~1+@T@*pUj5sTN7>_8yd3<_G|%jT#TF0H01qPpxIhLjKdfWkpMl0P z#|nHD1i=L`;9!>){0N}NG$6?T@qi3GV3CChI`9y|6;E7o#bW2B*JVP|7=Vul{oyc0 z4G^%ig%*L#&;l61sPKam56E-H1DN!)>lHd6ao%#~4VzOU=D6aW2Hjxu!4_6%F-8Ct zEC2!+ZS=B39#}lUn5|k^@r149Jywx4o%j-(2SY6IffZJGVFeOZq>uwC)&%iD0y8v0 zFk{##2k{o>CL{<2QRH+^6AKIxF_#c5@QM`{_y9-_*I$N}^ ox$_|HRJBgqoB^V~VDfjY4Wr>;Fb;`R`30EY z5)O)^p=c}Kaa(pP00DzFczb+r2aSgS26Zfu1BWyK4top=3XPqCBme>ihGli9rv?QC zmNZ?Qe+Leo44@;T2BdWc0|WsBq^iEHGiPiL2Wy=bwjuxpz`X_n0|TQ0(+H6~00<2Y z6@RnIVkXbP)CCXFxdI5kl4KKMosFK&&g=pO1=Q^b?hLRZCZkT525$I-!N&o>gK7Lm zQS*g>z=CQ5;_2X$Aeq8)=2Qttw}5~I0R#~LEZ}F&kdKZGB7Bk)AON%iH6KW{xX+)< z9##&>#8)Q(h5!PLBIq}200L`JhY@ro6i%oB5(q#Puu|0ml-3ATi~5sC#|UsvL6AU7 ztj(JQz@n_EwHky0Wp|uCAgTZa0c^3YS{D{zFNy=cj;!bn7Iac zx)0ja8UPL;cwCe6(_aDB5lCqbTFS3A3w#ExAp?SUy1L=TNsV)XuMpk^h|3trGYc1P z|Llfx6;8-s7cAI}N=Tgx1uRUk1HhNHr_i{f^hLeMDYT#ptwwqGE?5ZI%A2ohO89gM z5FS8Sz2CqBT}OmwRYSi}U7zQDUMz>_aq82d5DC3MY)@b96IOeG1jy(2=LI?mmIVB(+ literal 0 HcmV?d00001 diff --git a/images/monsters/chakoyawindcaller.gif b/images/monsters/chakoyawindcaller.gif new file mode 100644 index 0000000000000000000000000000000000000000..9fffcbaf18e55535ebf7758c0a5a547300d170a5 GIT binary patch literal 1701 zcmV;W23q+?Nk%w1VL$*t0Qdg@+uz+dUrn0BRu@1mb9H+3_Vh+^M&jk;R60~7FDJ{) z%b}*GPIXR1L`F4YNj^S4^Y!#OPC4uE?VX~jHb6laM=dKXEk{X98Z0DDTU`k$9UVwE zzRtdCb#^2)B{n%ZqOz?mH!d6~D;q^JpQNLcrIP{y0!nyF5hNKKNiq&ME+s204igm% zIwk}H3?4^0A0ZF@LPL|$z8`uOGQ@Xy-M0|NtIrdl;NI2|=7 zDljq~BqcaKI6rki)!)@JGBg}THb8qoR$x}k*Ult9Mw+9f?(y?Sa!Bax@+K)K)Y;fn zfl)biIq2;0Pf$@aFEdVGVYo~x(0y}c1KBNjX=+vM9zcS}HbKp;gtGiWm^IZ!!N zI$)D%=IG`*Iy=?g-c+Yge~*wkcsR|`(6qL-BPuJ?-PLM%Y84_L8zCbyNj22o-014) zx4^$;ba7*Md0=>aI!{qVR)lGOfXCIxg2hd0dV6G3X6x|uq_wf8sj2DkiK?xvam7H< z*U^ZKjLX&3&)3%R^YKP#M)URal9ZH_n3s^ApVQjfMv_E@(1l-^TNx)QGeR^}WoI>X zHFJ4>9Ah*-NJFi+xHwHuLr+rc@AFfCP=$+;NKs5&r&nEFU0JVGQ-V)`fPmKA<`*6y zCoV8}h>H6B`ahmQr?9EGySv25$GpG3!N$fEJtn@$%osT@+~M6wb4aGMxsR2UHa9oB z$i}F#v9GeTzs<)kPcb%UH#%!P)7I7*I5F<=@N&>{?(*|yqhV-oaEFkPgp`%%?B|xC zrk19sNKQ?1vUPK~b%2G1Z*_Ku%!lCP;`jOY=jrI@>+5)qjNatpKX^XR($lcEw5P;k zGGj%zySgPVFBC5vYPo_e3FbQ{JgCwK`W6+pUqiI8*HD=IAIx$9>7+ThCND%=86B8zE zYMn6y2-$-%fY2Q)bdG>}`9_4AbwblSRB%ivl`%txU4kxL{FD68CpN}1?n-1rYKj|VS86-+~F)pUVu@ic~w zKU=D5;klhzGess%LKSiB@RJFaNYe=mqj-@D3nGwE z0082UphFEe$e?PXYg!ZoTqel>0hc2`)ag?Ud~gEB0SlCnMhUzuU;_knL}E=ZAJmY; z4UNgrgAA=+6hjD##SjDzmeODYAiuz%j2?UFphE{XR6@)$!014R1&S`n0}b%zc9RIH zS^L8dGT5-n3Jt)ZLmds!Ag&G{u%ZJvTd|A8g4*KdB1Eqa6oZ2JhE;>IIozUgBe@*H zOgl#S(h3DM+>pb&7u)bK#97^t$PPOoF+&bM<#ZM^WIzKCLf>li(Msijo253HFvBH~PyovX+9YGg3}2+#gQ7U# zu(hi`{UAh8CRh+fAvVy0L%;)0Jdh?2H$2Og+$LFzgAhT;g+t*q_yDgDhWB8@3_Q$$ zc;X1yEmsXP6h1=_qaS_)4`^aNw@?Tmz7(2=YyCL9g!8bvwD-#8!wqo%6vN}FW{uLV vO5xx`3_ffw@$tLg-ce9qNi3K1G*xf?_1I^x{r22<@BR1Shc7-t0RaFz%IO3{ literal 0 HcmV?d00001 diff --git a/images/monsters/charged energy elemental.gif b/images/monsters/charged energy elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9d3d260ea5b1f788b2693a7e1f47ccd534d2c6b GIT binary patch literal 8647 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 QT!aU8q$^YBa1&GgCvd}Vwg3PC literal 0 HcmV?d00001 diff --git a/images/monsters/chicken.gif b/images/monsters/chicken.gif new file mode 100644 index 0000000000000000000000000000000000000000..000bae5ac5aed22cd63e5d635b57d213df8b3ce2 GIT binary patch literal 1217 zcmeH`YfoBt0EhqQz~ON50&>g%83k)s%Su9ETfJoFu-1+)z2K&8lVOzEbz@!|vn|;Y z#rtK|)f9^{;Hc7Sx4uA=CTdM{#0{mgDQ}V4WVFlbu~9PHxvpX2x7O}_xASo_xF81Us6(1X=!PG zets|*oS2x{-rlBAC=3Q;YHBJF2yDb0@9gY!xm?rJ(+dj=FJI1GI>XD!$yr)jnw#@( zY-}7J9?E2Im6Vi}mzO(T?t_B^vsUtT1kY|CF|s+#XlghBpWx@&US6KXVu^rB{rRzezu))kSV2KS zR#ukJe^Pr^5D^hAlgWxNpVaAeZnwL|U@)0X7z?4Ipq(uskw|j6oQa`pYimDzDq2}t zSzccII~1B67?et->+9>YJdw?2D=seH+S;nFYn`8;&&bHoYPF4xjrCPkGcz;#bpB^a z7>mWCQmKD(MVp(O1VN0Bj;5xjW@cs<78Wv4Ab`nlBXk%BOeS(s76VYg;c(K@(zq=8 z;^Lyy>3sTh@Ns{CTU*=Y8^_>X>6J9-|B z8l*YTF`AC8Yn4aB<1nFvjEOW@_1C%I#>@y>xh$+DBbN6@AL}fS!qdx0g6t;!TvIco zD1;N*&B_MJMqXnHC~q@n3j-i`WsAn?xfY6imp84P^*pp8w+9pyFmTAXK;J zY8h~R<+IOQgym2xpixdAgsZD=v%&3wUbDhRroeDZTOCHA;gdI*8X~(L3QLL!LsY8a zF#!I!29LX{5GFMNXX4hC4F8LobL&<#FYn3TF~4cujXj5!w>>$z9BjrYF&Y9xG6WQVvM@3*@G^O$WI1F!HY_;U%pt55b7I57!|ejfUUNJ)E;`yRVVrg6#Ky(P`xTtKWIQ)5IXPJ) zcvZ~FO;24J3}WqAHY6}G%;d|wb>ybNf#$h3qQ7Daj57``bnTU5F?hfjxYT?0H6O04 zjKRwtR!7M)EL_I0%4=qs?1#|T*EXh}Womd}vNmj^{XwTxE5&t@jRhx9nO2Fujhkw~ zEdKWO*Y}>wI8M~{a&G@{>Hvq7gG0lE*GbD_HtsUzbU4t!#&IJ^&3eHW-}5=km!;ft zU})JjIl8`1K)lqKsm(qv_f!~T6FZa2;TDF=U;Xc_R^&1GpwP&~!4$*&FSF)A;~fP? zABhDH2U{2}EzV`Hn{dmj>~8kXLp2vHof?lai(N7K|3kf+(S=cF#fN*FGk^8#eqbnO zyTii3EF$vZJ_Aq8@k#zUq81k#MGX=ZnFTFw2r;mUc!>H4dMG6M=y8@!=qz8l;!&5* awil1O4UTC%?lHNR@wnGQO+ literal 0 HcmV?d00001 diff --git a/images/monsters/cockroach.gif b/images/monsters/cockroach.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea5854ecb921f6e6332efb231d3a4cf5e14519dd GIT binary patch literal 3242 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 literal 0 HcmV?d00001 diff --git a/images/monsters/colerian the barbarian.gif b/images/monsters/colerian the barbarian.gif new file mode 100644 index 0000000000000000000000000000000000000000..d92fcec75bc6f9ab3aafc0e576f93589ab12fa3a GIT binary patch literal 1456 zcma*l*;5k-0D$q`&9d1XZ{ihoaL-gm4s8REi*iK~52Eh#3UcZz#Eee-uDyS7AIrFRy`3Ds2{^|4h_*WYik!eKFk zowmmv56Q@&V>|=|0gR0|MZn0$&`P9+iILh{&2UC^VzGk=?VGKXiVU&{BSh^6LVF4;2r7a3AI(_)R_s08%L{-``XkN zYmm%^$H{w=E*fD0H^yOwhPhso@hV~+KtNoHcNI?EbZDbzp1nyJ1rV}tAp@z;<;}|y z!Xuyl6f5ErTqYRV1!{dTj{?!Mcemuhpo^6GSR)i3b3sy8Y8?)JscsKtszt0;DbBfC zrQCuQ_@dLd59{_ac5N`E&;?%AS(9LD!kH$R!n2K^ET=7C*EG6*u>Y6O z0&)|zjKe@_9vNTaTNHWO=;*y)bK=!2Pk)mnB})rzrj?}FNpf{`Vd)ynxoyZXs}3-< zOoOL(4&EEsax_iu=D`rjZ_Mn2zkCl;oXLe%#QNJq|;L@>~s8v7wjS# z6)}x8rtCpUz6teMJLvglBtbbE{%~f4J=aKQ1?3e`=~2Xz5(jS=xuo&j*Ni@6h*ONzWa*Cc|#(LxhmI zdV1buLINHB$0WWUM&gxaNX5L#)hLok(!QoC;i^)Qid z`44G}gqcdy!a-KOg)J!^tuqpAY@aUGW6qJJ3{=SQR@$LpN@8i-6=2GbNc5X?3avjn z$Ph!+J@Ce%*L^8bN2i7hfi`?B0#li!PX~PW}D-;nue{4G4|xj z5Pd5TwT(jW?k(+V`EDK{q)LPuH1Ys9y(B6(Wbp~m0Q3JO+QcMro&f%1=fd!OQaYe0 z7N2U+75hj}+d-&$m?fR@Y_=iHY)7)-HmUxTE%4MMH20k{)Lv$pC5SOxViK0nR-;q3 z%gufFNuuB{)KVAOD7##V5BgYG{Ft|wYOCYq9UnI^be2Y)kHXfxUGpTZHK2_F H0W1FoU?3Ea literal 0 HcmV?d00001 diff --git a/images/monsters/coral frog.gif b/images/monsters/coral frog.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3c6b122398f339729876f7f78a6e94f0cdc0027 GIT binary patch literal 834 zcmYL`TTD}T0Ed77o?Cl*+H=}-dO4?u(n^6M7a1ZH@y1HA;J7rXbK#;eg|G#kx5+j) zSTER8Tv;=bXw<4Bkwg>Xi!LNfN%k^d=EJgN$sV?sEtwA^S(dqF31d&o_walD^7{^U zc7$3+eDL9CU~_X5K#8w}5Mnb!un4@FkHsL`#D@>TFia)`gTe6P1seS5Z-(yGCpw@w zl>^mKJ*wB|EpHMhg%xYUcrGT3Z3m+F!&c=80Au2B^A=sZFpoO=yMqw%W* zoFYcs;L==|`!O(p%mBvPv2qrNL*RM7rUWM5L^HIm!(=k~9Edfc%7bVW#UkElMJ|Ws z)988yj~_#EC@jkgR^k36ZjR%0C!+P3AA+i@OQ)ch>bc|CU5TSDplNz|811!?71`tU z>_Kxm zR#(AtY`~4)T^Nr*E797jvAhhw6K;=tdKwE07~T(yXwhsaybZf-FBC8}we=6oX0u(f z`!~%!k;DDrw!TP1T|Gs%V)*}}Ee%^+!-9t$R)Bjj0}v9ACuftXE2Y*sVl<|xQazR> z)lPbtJ9|=XBc9rG)k|eG^}$=M2LkNSzW3-IOO<4o>x{iGFyl=lbih~WhkyJ{PsLf z9Uaw$V|T;rVfOQ>;Ex*%UuMa7(cs3$y?qhyAB^FDc?KppwgC6dfAaCv?3F}{7?SC9 zHc5!}>L;^gBA=}j^NR`6)8+V-lviCV%pL5wJy%|TgBV@6dk0qHp!T{1?tAvck;)i^UTJb>)u1| zarw`ed8IE{n7Mj$`WG!wl)@v6JulhX&^znJ_B|~RPOK@#nWV%tPGnYN*8_g-)nD@; jkKGS=>BgZ^`|r>1HGQUc|Gl0r3*4F?{C<8sD53RV08h(h literal 0 HcmV?d00001 diff --git a/images/monsters/countess sorrow.gif b/images/monsters/countess sorrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f146090b27f9c591fab5a045054ba95588c503c GIT binary patch literal 3244 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 literal 0 HcmV?d00001 diff --git a/images/monsters/crab.gif b/images/monsters/crab.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd326d65a15cef47dd456079b85a31a85a41da37 GIT binary patch literal 1408 zcmV-`1%LWSNk%w1VL$*t0Qdg@ylN&(3E!9?ftnP$3cHl1A2SB#kB(#8X9O6$fS+ z24W)x+lV#Zi8qKl6uCq;Rwf8aB@x(iJmHE;n^ZMeB^QV^B9mDz#%VxeE)m>=B%x0* z#ZL=;ArnX=1ffPCq(29nJP5B%E}AC_XDl1JRTsEX8{lp?fH4V-Jr0XC3#L&q#%43b zXfxG*Bj}MZaS#Z>OFefT4m%tX;)F-JS{37sNG2QzoKq#3Q!dDYb(5AE8l`VggX_BKN!bh9h5;DbqxorT{x{>Kihpk zTOkD6hA>Yi5ZZS-zg-->WF&4f7|3QW&{s5{SvJ5}8e%02e>D-1G$2zi6SQ36-yU1pn(Q&d=TFSHr&8UJ$+Ou(gn#h1IjZv z;BeXnDfqHO6H+iDr-w{<^2z||{IcgF9vtyUDO(H*(ggyH<3S*sTu{!ChaV*(wtPWplXj%brW z3wl)LYbG_+0LPdv;UvNpDXcJovjJpd%w1MpFpC;5-XQ8x;GS#Ky6m>=?z`~DEAPDY O)@$#*_~uJ*Kma>4VhRiZ literal 0 HcmV?d00001 diff --git a/images/monsters/crazed beggar.gif b/images/monsters/crazed beggar.gif new file mode 100644 index 0000000000000000000000000000000000000000..e111b3d0b6b5267a57876246778af2c5868b8acf GIT binary patch literal 2082 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 E-?3%l9smFU literal 0 HcmV?d00001 diff --git a/images/monsters/crocodile.gif b/images/monsters/crocodile.gif new file mode 100644 index 0000000000000000000000000000000000000000..09ca2316632442176c95d1f0d918269058eeb79b GIT binary patch literal 1723 zcmWO5iC5G20RZrC^7|zr_e~O#U`|3Vl8^u)iD`hCYl#pDgmQ*}3M(QiQnVgG!XaRd zV3i_mWpxMER_bF<%j*#k&>=dp+Q-{tD^j-FUE=E7>Z@DU|Kam-x*f*cIvcQo|0Dn- zfOY&T%Uznvd;Aw=2b9Otwc2zH|1h<7#Ook0mDTIGCN|<0I;UboCpg&nvArvZcQeR3kADeX~MenEDVg}i`NZce=)ib#UBGHP0 zv+>Sxvw5#LaM`K1Q+W{vp^A%FqryQcwUVQ2mKp{#c?CRGF$1RXfMOuZE&}3^VSGmJ!)M;y0gzJJtdd-$V2C{bZzQAz5I$B z7Ih{Cs@j$vmFMt1obTWpLi!oNPEw5{#U=mag$bJl_7^&Y+q6PS@TDGa4LKO2@mDHiI zvE<#H^M`UPPq34UFeEFPWg{DcEQ}GKSw-6(q$wm6c?HkkXHrzNs5`liQN7lWgBl6s zCP+{&FgI#dr81%&^AD~#?MRwtzepd^1wW*>*2=vWrZ_Cto6za|6t-TuV?a>Trf^3j z?g6E4kI-~erF@O+8P&N5wHf=;G<_mWK1nm6IW(l!&@7HIHPS4FEU^# z9#U_sUS&bca&e*xlDwGAn#4Jdr4n`t-6tsO(p1BsbVrzN>esz`$>lhsc18G}3u$r> zGy8R&=AhDYOrPJO@wE%Qqh@LoT>0CbwVxFH@9C=W1&jb70aQQX|7nB`fTRRSV0o^o zi?fj=x}xg#RNbtS!uO0DpDiJd2Gf7O))BL9X(XPo4%MHOIlre z>k>y*k{nb2>I3})*1R*s(V}R2B61tPiuSNEA5=%rLDT**5$Zg z+8cR%3;i_hy9Yhz1{==n=#u+32CuMuzKOZ_I^m?&Mi}3kj+ZsAz%D@%6oubR-}%wn z;%CVIlM-dvcShLw!{d2u*$;D_PV|_Ngf#BCP~Huz(1eb}A3nZ1Parcgull@s?05e!hAA{$g@X+;)=tM#|w(cVqEOQu{izf#;rxJ zZWYk3c&od1NC4P^Q%lc&Lp1dKy=w{e-t(ESPnC2E5v1zCvpD(JN7qk_yv7YDzD2A2 z^3{T(u>D0G|miUOjb#!&Hke@;*Rnt6thO2Epx<#%Hh#Z2M<&6(* zjOWweGQSw_oRw1A{E^HL+BUu~3JUTUpeDP`iQqgB%|5bF*Wa{mx0KxBe%BDWMQiwe z+D-V&dbm*PU4CF6``kKeFG!9X4q%BDMyhkI^zK$y(sJXMcO|c-Kf0cWUtQ_ajc;lR zsA0k9Biupw;!T9LJRe*gVc7xn{9@6v+)vSVf2*g0x$NkTVhN0P>?aW~1;kZ_xYxg07;W=GMQJ{&>DoH4gAEeD8>RWph)n N?7Q{5ryL3}{~u_{GT#6I literal 0 HcmV?d00001 diff --git a/images/monsters/crypt shambler.gif b/images/monsters/crypt shambler.gif new file mode 100644 index 0000000000000000000000000000000000000000..96caeeb6c372d105527238dab1c455ce9ce8b90b GIT binary patch literal 1894 zcmV-s2buUsNk%w1VITk?0Qdg@=*OunOen`yJk-ChrX(DUN-DC5SJtX`RVEuZJSWk) zsK<&~Y&areLnw(_GeamDcVk3=XE>;OWMwuM2L%Gd$HskCOovM}gfYALc1P4_S-OOIay2Q%HYUlWYD`BbyOe6EbX9glDP2}LLoyaw zLMK@h38-yJzkg84pMGX07FZk;q;pEsNkfc=eY%N7nDHyAB zUE#HaoLLxWT`<+mzL7*Xy-qi2Ni`)E3l2&hkziG_e_V(f5}t8HGGZ~5VM2CHJlVK> zt&LlGCKax1R0u*-Fo;`5T>t>9TSuO5ReA^jdm9!V z6cAH4BTOnDq(Up7T{<)$78n!_Cmj_QHW_zZG>~#dGzbB>U0D_?7c3&m1ax=1r>fuKUh5{VHgiL5)Jv{%=7c|4<8Vvt)ukj=?pLwOgtm1epS%MyUL$x zyI?t!jZnnU(6FYSgK#6Qk8?=}2BLObzPPcscU8~IzQ>Vx|LNm^JuldxbA3`k^U}mD zAOIu}3B;OW%93rpjbN&dP`_&^uXaRpRyMbXVt<5A^6cwwCIg{97GX3H?7UEoDRTV@^#?GOc=ETsj6(FdvgcEOcyVLKhUWkap_oVpN-uin4rDrGZePh*Iv} z;H!sNiA_eCUqo?6KdzQy#H@aNMmx`(c+5*s(_c)gWH)SNE@NRilT|d8UpIqaO1)wn z!hd*cNkWc*NS}pIoOn!+MINn?PpOq!s(DCqSUrDGG`XRWQavVpKNVasBVs!#u6%2- zk8c0~0RR90A^!_bMO0HmK~P09E-(WD0000X`2-0v0RI3i00000AOIi$00{p8{|OvO zu%N+%2oow?XwaWSe+(lE^vBPMi#!k|D)iS#K|d^`EM?SK&>@8j;*hxmF~K28g8ud# zqLAYNt}2~aWH?hN<3ouQYMfkxf=0Rv8K%f#=Fr2QkqapV3p2}8jA$>mw4$KpU4cG* zphg`Of&~FOgt1Mgr5K`Sa--%Y~bJ!A87>8 z%M|PoQ9=d^igSk{K0(w|08C6#VgkNoK?D&TDws+MdWhu@F*GLSPYeF|Kt=}leF0)a zZcrfPLltz9g+E|CgqTAyHnfjAMYQ9OHcCbk$s)8A;Mr_u$UuS&b{OGL2mZ`30~(RI zA_R5^WgtZtkz_DNf)97BMFDH|)ogLP4&C6u45Pzf4c$MF0VamBodS zT3+;rL6e4A1s-HzXpPZAkr@|qTCfa;g9&H+Rbtbpj|~V%ANqr2R7I0+O;$7z)VL3eB+B#Gb#q1O4ei z1JOZ(H=odX@i8OHynHlXP+_*xAE|X?4*CmZ>5a2N)qdgsh_VBSs2($dWX-5Zk_fkh z^H89$!NfCQZSbh50%gg3Ep^=F#{(i{V30qr;L{ofAP92`4hZZ6NCO+x<4*!dOuRf1Qje~mQe~xM1p{!!71TF1$w|%3no%T!stMj zbWsAM{)lo60+#O7Lj{};kp~zgFaV!J3q|Ts1|#S%FoY5Mtjg*`8TeuZ0%jmE&7~q` gkU;}Zj9~|`NS#4VEV&@-5)wjm;H*f19uyD&I~sBcX8-^I literal 0 HcmV?d00001 diff --git a/images/monsters/cryptshambler.gif b/images/monsters/cryptshambler.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a1482b600587e3c9fcb8ae50725d1e52f3c4884 GIT binary patch literal 1513 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 Gi1;6$0oxt` literal 0 HcmV?d00001 diff --git a/images/monsters/crystalspider.gif b/images/monsters/crystalspider.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f5ee167a09fb709eb8a5b412d752da910dd9a69 GIT binary patch literal 2241 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 DB1^Bg literal 0 HcmV?d00001 diff --git a/images/monsters/cultadept.gif b/images/monsters/cultadept.gif new file mode 100644 index 0000000000000000000000000000000000000000..39c12a4d38a1a12b4f24db09f6e2d9065b24bae0 GIT binary patch literal 1537 zcmd6m{Zo?#0LQ=2_H1n9ZLq=S7&u^qF%Ty2h`<9Iu)$D>S8>`9K{UArSz-`9FkTcv z5EPNr7;i#n21s{Vc{c$pU#JAW|sIytQ~N&kyJf5G?e`}w5mQ=(&vC{TDY zk2iREc@YG08gO%Sb9HrPGMU@9ZIeo+QBhHWfq_m=PO-7Ep8_J0h{a-26y@XN6Bid3 z9v<%L={W{uWMl}1Lb+TX6BDz3{rZrQ5PyGvXJ==XN~KgPj{qJX9t;L!!-fs*?d`d_ zxyONogoG2oFyQO!t57J~fHiB@90qti9!Zkhw{Ks&c5P5lP-J9eb8~Yy&lMiWTwP`79a+033gM))xwrpu>Y5Di+p~t|$z(8_xvOpj>1{e&6#Kgq5()ga9p69^*&)@eml}1EF zI66AoY_`>>KhB+buLC%L{(P~Js=8xRl>a0l4DdGjG)_wL=>*{M7 zfRT}r^78TkASo&76%ZO4nw^~;6%k=d3ON0NAp{={Y%-aefxT(UJ$v>{ z0t*WZ)z#HYz(>HwjT^hVx`u#rz}d1mtxD9?)HDKg8N(j|MMXvLCWMrhmYU7xoq$fK zyV+M>1?WR06%`f5#l_o`h8+ktPJ0B02^xKiC%-;{+TP#I^( ztkcbW-?US@@%}4^#bJAvX2%DvwaYXuQvJl>T$eKY3*+3x(EJG%F-s!by5PdST&1Qi zlqSNTT0h%CTk7rEP123i@A&j zu2(d_ppQLo)zcFWoSRlnIw20FZu0vZyF_H3gCa*)F{k1s!tqv^?KLll;6Vgmp;rPoOQxnU6 z=CNz@Iw(JMg~ev3gHxr8>A_egY)tk+nZ=iXbCD@5HuQ9&kYm12nD#PgA*z;<7i#8f z{KuDJ1N(K8fgR>)2C5;uP7|XRGhekX%@4BvHF7rg} z+q7P$UfO;AR0u({Gkp5lbm+C^)~_-)g(y~T=j4~K+$q@g<;u^-{eQ09H5Ci_i2V;t C|GH!V literal 0 HcmV?d00001 diff --git a/images/monsters/cultnovice.gif b/images/monsters/cultnovice.gif new file mode 100644 index 0000000000000000000000000000000000000000..cccc5970695b563e47a80addd3f9ae8101a3fc2f GIT binary patch literal 1558 zcmeH{`%hDM7{EKsgtP@qAE=wPB_n;WNq z*O3enmEmFz4hNb!k(o_*Nm_;xwz(kAh20WNG}#Ph=$O0wFo*xa{(wEdKY5bR^S+PE zU6`5G$O0DpF$(m0eOz2ze0+RNOpMWJl*wcUgF&a$MMOkswOXlEs#Gc^5=m@qtVW|z zsZ=ygi^XEOTrLuc0020SD-?>Ts3?k}ghF9-bTmN_0)YTQ5Vcy3qNoIb$jC^)-wz=S z1OjHWxvj0u>2y|BRwgAS`FuW-B)wj5b8~Y^Nl8LNLPi{%I=;81r6oT0l#H#avgFYo=sO=<~DPENMl?K-WN#84ps+qZA; zaZ6aEI8LpO7T^R53kwTfF4wzz9C-%h+lk#b#@oib@=YdFXQ?qQE$vK~gVEqsRaMu| z_EWt(Wq@{yPEvUl;^n6r?`2JpBnkJ^>qrnxZK_ z+(*ij>*l7$K0insJ#QCXI&L3!%OnrwBU<216_dV_pG?MU9g|f{B$m(Y&OX)Eb$1UlAUS96)hw$&@KaGBBSa0_Y&xM8_?04-_Jse9j+k+;u z1UuT~Bt+nK^W++HXC~3b9nl=I|7=&{X~SRX8hi2E0nw0tyZmCqAW&D%On@vN9Wh78AAMpLH$Fk}M{kIAZ9rG|( zz{uE40VNCGWoEFK)`Fb4%jaK=)cXCi%5Gc!`e}QoQOdOhLs+T5VvaI|#?X2y4TdAi zzhP#@u2nCJ$o+IL-ayW>v6dy)sgjNi<5ZF@WXGgBe*hDudbuH$!poV&Oa~Hq!dxvA zG!3#2M7c5^h6>RFi%tiRGJ%UGdwhTG=r0F zQQ2!kfT>f@*}*!Ba$L`F5D}Ysj3hEGkyA2+kF;^ zPz?4L$JK!#x#tiQ#5eIABGJr|%|z~p&gU`OdG5F}vwD>Uv>!l(?qPb6(Tk%xgff)h6a^dP8cU(6Ztko)~{O-Ey$(-!afHc zKpb3f6NobfUb61&fLF=)bTks5Ky%mtyd6e`UF-rucZb$00w;Gq{;qZ6!sGATKYH-^ MhmPx?m9ilFUr|bZMgRZ+ literal 0 HcmV?d00001 diff --git a/images/monsters/cultpriest.gif b/images/monsters/cultpriest.gif new file mode 100644 index 0000000000000000000000000000000000000000..c710221ee429bc334bfe0772780d4cc015cbd5ad GIT binary patch literal 1566 zcmV+(2I2WfNk%w1VL$*t0Qdg@P*6}?TU!V+PE1Tp92^`kFE0{Vj7COA1PV5TgM$`v zvj9ee13YhieSH8?q14pW0X%zod3ifKJ53)k4h{|gL3sgMrWZZUA|fJTVPQZ(Ko@qp z0s{*GMSTb`N={BrN=iyAD=Q}{I1V{i4o7hSiT^P%F%eyp2rWn&L)aP`8XzGd00000 zO_UTB6$J$a7#J7{EJpz$Jpc+30s;aH3kv`O1s)zAW&r;aX{K0S`&Cs{qobo;U0oWD z-!wEdC@3f;B_)-Wl@}KmsHmtjGc&QVvChxX#>U1H5)z)Co*W$aV`F1nVEc!MhiGVM zq@<((N`QcXfLU2tn3$LVuJ7&b?G8_TCnqQA>FEH8`T#IjH#avIdcHk9J#TMsa&mG2 zN|pQj`z;R^cXxLYLS_+9dH`+50D0bqhlv1h=_DpzMMg^igZ>a!hdDVpN;o6-_Vxf# zmO40(nwp&7pKmobHzgj#0AsZtbFctaoB%IY1aRyUHoe{5-7G9D3`ufKQJw7U?3R|6 z97f=*tgHY&avNB_lYA#08e;J9@KaM$8HCaREoJA*CIEr%0DbWn7{v{E@zt`i9XU)G zKhG8~%&2mA0E_HvX=;N2edIGW zMiz9n{r&yN$HxISy&(ub$;r#h%+1Zs&5T!eUOzBXRc>2dcmPk44n=Oizrh(QSpXh4 zVq|-vp`ieO`v60H0dv|z7$hiPxIRIR4=2|EiTn>fiR9$u07#AI=H?SKL z)*y@77CXx?G^!dONnT!F;^N}l+}s#I&>2G36F9*YJI4kgGypJKsi~`rA_4WXG+Y(}&iAr%?TwF;>Nk2b7t*x!T zzQ9yeRQ~VSA^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*vN%k7HAw| z(wNJF0)>?<3@wPatC@o^3$!qhVL=WHe_(_txnUPC9zDDuwJA}88iaJd7}%g<1yz+O z6na2a$$|krTZj1QlE-esgmoMS`N?7h0EGiaMyKS^4bhlH(h&4=gfE&67D7G~AV7wP zE8QnqJQIZsj<8jiUfn^!Mg$8f5h!5)L02pkkr&WOvKTfk(i}<4ECEwBuU;BcEItqb z(tt;V21cZk-bgHPVBj82Y@vn&F&)uLEG#7PLjVEnpu_|G{1hE4BFuop7LS~9OM`T< zKtm8F48TMoS%AaB3n;M=jyo*a&_qnfO~FDfvX~e|0bd}Y2mmbPFknb5^ixAkJ%|>- z3lEUOLJTiTK?IQ%7z|#!} zu#iueEWn_^5Ex)kq>-@Hp`l1D!~qox+i1y?2Y~o+LJ}CTNdX8HWWvHRa&DwyOp~y1 z#VH;vA%LkjD3FZ{A?#N`o+lLh5J0CN#dL!YS9rjJ05K7;fdK?)00aS*zM}y=w1ULK z4V{o6QxOsn&;<-T3{V6CH@H!N2FWUW!v+NWVCN6fc5%Zu0C+*b2v{J|ZLI~|dP4{* zu;7IRH{8I<4mU7D36U->n{NRjxWK|bCfJeh2(%RN2Ndtts?H4^9v15)Q|vrG6iyIz}76fH4AHaGqkb_ZT;OWMwuM2L%Gd$HskCOovM}gfYALc1P4_S-OOIay2Q%HYUlWYD`BbyOe6EbX9glDP2}LLoyaw zLMK@h38-yJzkg84pMGX07FZk;q;pEsNkfc=eY%N7nDHyAB zUE#HaoLLxWT`<+mzL7*Xy-qi2Ni`)E3l2&hkziG_e_V(f5}t8HGGZ~5VM2CHJlVK> zt&LlGCKax1R0u*-Fo;`5T>t>9TSuO5ReA^jdm9!V z6cAH4BTOnDq(Up7T{<)$78n!_Cmj_QHW_zZG>~#dGzbB>U0D_?7c3&m1ax=1r>fuKUh5{VHgiL5)Jv{%=7c|4<8Vvt)ukj=?pLwOgtm1epS%MyUL$x zyI?t!jZnnU(6FYSgK#6Qk8?=}2BLObzPPcscU8~IzQ>Vx|LNm^JuldxbA3`k^U}mD zAOIu}3B;OW%93rpjbN&dP`_&^uXaRpRyMbXVt<5A^6cwwCIg{97GX3H?7UEoDRTV@^#?GOc=ETsj6(FdvgcEOcyVLKhUWkap_oVpN-uin4rDrGZePh*Iv} z;H!sNiA_eCUqo?6KdzQy#H@aNMmx`(c+5*s(_c)gWH)SNE@NRilT|d8UpIqaO1)wn z!hd*cNkWc*NS}pIoOn!+MINn?PpOq!s(DCqSUrDGG`XRWQavVpKNVasBVs!#u6%2- zk8c0~0RR90A^!_bMO0HmK~P09E-(WD0000X`2-0v0RI3i00000AOIi$00{p8{|OvO zu%N+%2oow?XwaWSe+(lE^vBPMi#!k|D)iS#K|d^`EM?SK&>@8j;*hxmF~K28g8ud# zqLAYNt}2~aWH?hN<3ouQYMfkxf=0Rv8K%f#=Fr2QkqapV3p2}8jA$>mw4$KpU4cG* zphg`Of&~FOgt1Mgr5K`Sa--%Y~bJ!A87>8 z%M|PoQ9=d^igSk{K0(w|08C6#VgkNoK?D&TDws+MdWhu@F*GLSPYeF|Kt=}leF0)a zZcrfPLltz9g+E|CgqTAyHnfjAMYQ9OHcCbk$s)8A;Mr_u$UuS&b{OGL2mZ`30~(RI zA_R5^WgtZtkz_DNf)97BMFDH|)ogLP4&C6u45Pzf4c$MF0VamBodS zT3+;rL6e4A1s-HzXpPZAkr@|qTCfa;g9&H+Rbtbpj|~V%ANqr2R7I0+O;$7z)VL3eB+B#Gb#q1O4ei z1JOZ(H=odX@i8OHynHlXP+_*xAE|X?4*CmZ>5a2N)qdgsh_VBSs2($dWX-5Zk_fkh z^H89$!NfCQZSbh50%gg3Ep^=F#{(i{V30qr;L{ofAP92`4hZZ6NCO+x<4*!dOuRf1Qje~mQe~xM1p{!!71TF1$w|%3no%T!stMj zbWsAM{)lo60+#O7Lj{};kp~zgFaV!J3q|Ts1|#S%FoY5Mtjg*`8TeuZ0%jmE&7~q` gkU;}Zj9~|`NS#4VEV&@-5)wjm;H*f19uyD&I~sBcX8-^I literal 0 HcmV?d00001 diff --git a/images/monsters/cyclops drone.gif b/images/monsters/cyclops drone.gif new file mode 100644 index 0000000000000000000000000000000000000000..81898d3ffbfa61e3a169e5f9e158056955df792f GIT binary patch literal 5300 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 L{m&1H0Ji=g9s~Ld literal 0 HcmV?d00001 diff --git a/images/monsters/cyclopssmith.gif b/images/monsters/cyclopssmith.gif new file mode 100644 index 0000000000000000000000000000000000000000..31036b74b6edc5a8d95540f48839fae4c3084b49 GIT binary patch literal 3529 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 literal 0 HcmV?d00001 diff --git a/images/monsters/dark apprentice.gif b/images/monsters/dark apprentice.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ee981795cfeaa9b20111fa5e5d3299b8e78a409 GIT binary patch literal 2133 zcmd_q`&W~P83*v^ee>o9guDp}Nl1V<5bhuW0d0Yq3xRNx03w$|G2tfIP=TU?+WH2Q zaEWNZODCfW76i1jpl&S=HH{*Ao;n z41(-$c_Lwf0ZKoXDu5jv8e|}#gaBG-7p&=W3+e>e(TZ!e;`EHPchi8>GBYxD**RIl!fOTjxdjDz6`S+Txlo-SW6V!{r$AYxFKR1< zBEy!_QbTE(;TJ_tmg1Px252pRqrD;oOn>>X5~`}U9eO*i+lcj6L3Qo+ns=)Qt0Q(b z>>Sw$x|3(Yyh zt;GvA^rEfgt2Ve~&p+D@-*mvx(YmY0Oa9&o<0p4KIEg;#hMC?y*ZOwMo!&DwV7dKq z-K}5ly!A=dKR+pa@M-0rN80ZErsLz;e?6N0U}d)R`?-@(mSOe(?4+yC8#SA<)k>Wv za*dpV0D$x*M_pTHs4FWac2(9@5J}1DI*>lcn31pwp|1k3mLmmVyo6OIh7%4FLEVB2 zXNDF*)A~4&YaZ&Ev{51(=AO2EG0`eeyDmISo)6e~(B(1`^o0*3bw!q`250P@sJBaR z#n*E3ql4SydiFj^Ol$QD=gI5#&zjX+Wl1r{!qH@nSd+?>4hyA`sV^?;Cvq1>V^ojABPJRoJgxR}w_5Cq)M)vVReYdsS?E(C ziDmq4!)!SDq;$@yd0 z*C#a8BcDx6Qd(e)pMM9GEle|+C<rd}+@-wka*b;_~p; zHGK5T6T1GZD8GBbf%%H@|A~-LylVIpLa8aC<+1E1gxG6@v;RRD^co@dUkI6*EYj6w z^F?EzBXfG)3Ehp#DZ4N8|pda z$?GhvL=|W3wyF5u1JUPu)Pl$l(&m?Y@_T?Q-o!ieZE#MdfYfSDamNz!5SQ`;9gTl; zm@Jr9pE>+dR)6Z6DWkRub9U!q@Y0#*_|w_?+p==sk(!cmD?h7On7>%0Xu7-F8#~1{ zNs;h@r#C393-4(t?}+o1QwYb1f3@NEZ2#eX=XgtI&X&oo34*QFH>r>?>OV#GQdPqkxs#@4i4Gb7S{KBgc{GnuzFpqS#bY!Z|%OHe(g^ZH-Cf_B@BVN*v6?H~LW z1r42+{%&4Qhe{nFm>nBzlGHkCmQ0Ngp_LgF43EwHHKYU}+ zu*DNAgBK#?i)t5?(2bFa_4@tHXAgUCAg<>~JDMb~F|)kt3G$MUw3|d->sKCLe%5-? k#Gb#US2%p;@gGK=2nm;otu>7Q+BM|J5fpMqvlS5gZv@AZAOHXW literal 0 HcmV?d00001 diff --git a/images/monsters/dark magician.gif b/images/monsters/dark magician.gif new file mode 100644 index 0000000000000000000000000000000000000000..a77d6e51cc72cbb66ebcfdcfc6d13824711375ae GIT binary patch literal 2242 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 AZU6uP literal 0 HcmV?d00001 diff --git a/images/monsters/dark torturer.gif b/images/monsters/dark torturer.gif new file mode 100644 index 0000000000000000000000000000000000000000..a483ad89762c4ec3b1c3cafa4d339d0e8f61b84f GIT binary patch literal 2377 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 literal 0 HcmV?d00001 diff --git a/images/monsters/darkapprentice.gif b/images/monsters/darkapprentice.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc224ecee288b344320f29e3548eae26b4643e3d GIT binary patch literal 1604 zcmWO5{ZrG29l-HVl5av1zJxD%0D>Wb07-xZ!gBzHZytmsgcCs})~GS%TBNZi@)Q(G zATh{;2B+iu6T%yS!T-7$ZA{{gResjftk ze+&m4{=E&6k&%#g<%?EmO9m#BnS_Fh1AAj2K0cmGr2+tkVP(;fl$6Bfa)m-+3`*F~ z0~U%jiy<=t>P2ue5$X~^77i$i(&=;tgFz(|^O>ND1cX4KP$=*4p(F|z0Lfuczyc}( z5CkF7_s7JW#-LYebLZM)@*$KkL zlP6Dl4#L=B#`qCxY;5fF>HgpMfljBJX#*U`9b(XEG$xa&t*z~v6?#nYdID@V+aJA9 zT3Y(kRrv7|d~*Swe+-Qxc;bPKj0}-TR9#)2o}QkcpTBF@F00jQx7&+~in6n_|KWq* zb%R7AnfL$>9Xj-&uZGX(>-G8wBH^Yz=hfU;R0uRRHISew_b zW7Oc>A|dgX4OV;M-sSeeV{rL>m|EWa=0^Puj|H$(&-`_>PWWgaq(~&sZk+kV2h0A} zqeqW=z248xfPHVm?%lg*ZV#+q0r%0|GZOf0*#7t6rHIhbyWN%-_gaibU3`VK=8 z8yiO_n%_<#Jz+!uMl9kH`e)xBdpzuN&3r zJj&W25cHoy>gDn*D9sUwx#+WVa6|wPn;|kfN5EzF_V&8n?#|9m89&PDbh=zFhr`j_ z-0Z6ZtyYUCpo=azE(BdPlye~}gse};Dl03is;Y!M-do=BTL=MQ8>Dah?GZQtbsM&6 zJZ-=?=c2MwOu@j!<1Q>gKd!xhZLv2xt8OiLfATADoVtgnd*EOGSWaza=^MMt#UwmwH=g*+d=Zs07e<}Q_uX6{3> zxg95lzw`;7*ajZZ47v4BK7CWSKva4VIvcAUn;nY6>xXX*zP5fVsnp-iu5%_(1`%n* z%S)5JtGA4gMCXqS<2%B5r~1~lo!_~ML&(zcEw;AeVr7wp=ITGz)g#QZPQ|U1E_SOW z#WO3f^;g1ci`b6Olic`_u+-YRm*Df<+mGD7@{9B3;%`1|e52XE^{QOU578OdHZ3F_ z8ds${p|$@xk^UwjLpR$m8sXAt(1Sm%7o3oItqKVMun zyFscE9S1d<`nm6WOzCH8u%#7w`H{tjj31bes|~7w?de&D;O3*pgpf4F1fKnc&q+*7 ze!9hk4>a=~342WMFz8?M)F}O+WIN{e&5T`2S5oh2CK@JjPimptx3Yv8-%JwS(t~4$ z@TVzGm3ZwOiB8W!rB{ht{{@x*aq?OrpC61me}A_ zj>y`+b5eI2m6R+|zj+p6jjM^IkOurznMhGZB%#r^S$;IzOhi61VMJ2!w;G(FG2w1% zMgNZmat*>#PNu(-&q1Uk;KXUh43KW&1u5aAeP(=sW|BiVzqXe}4Kdon$d320PV%02 p4h}RYPctS=RRA0?01$ToCnz2~a{wj+ z0s?OUBpCn*KL8a93JM+F#C>t9aK0ZFRWIHb-N19bKPdj*_Sv4XVGw%bTQ;<0J1QzFtzbE1Hz5K71SuarbpR%pR5Abm09QeT-MEk=A|xswKX?Eq zJUl$0Sv2xxA+lmRLo#J^R;@ojKeCKu|MCF$lpM{ZYIHy*gkLrn2L*pg4&XC7w1-#6 zrGKtqIetbdUH~7tmT?ph9#%kt@XDYsBSskx0UsF>byu))Q6s2vH3S3(ZBnF$WIK{* zH_fMeI4M*+ELnG1vuQdaUNj$jT)99a3;_WFr-ov#iDK5LbLz;NFe6Bpcv&$eO39>r zOE_^C5hEB9B|ahoEglza03)rEb6@};Djz_ibVKsUnt@0vN-q$GN-R1c6R=`BTt$jb zI(1P!dtynHj7=^%IXOTuU_mis5()v9Q!(MMc@qvDK_dc>PcPmyJ1-mtZ&RmmQ>ZW; z1vND_Eh0p8SFgOPk!enzvtv6|FC1+=Bt0rqrgcMm z04OdZMgRZ+A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*!gQGsNTW%H3|TvJq)`i+23s5f zq9ce8A1#s|`3Y2@P#?^yJ-YDD#|sWZfi!(u2;9Ch@Z4Oo`l1C9tuD<1DRjur1v_}o z6f0oWYzvuaQK~)Du1*>}ecUk1k6SdrJH-9BaLh&#mYOo0O73=?S~VM~Jm z>Hf?tX%_3TGyvADIzT7d16KBM*!}Vc)t*ihAT$nH`jw?MwJP1p6suI7JkT_^*zn~G zgAqJTJbOj5bPHo^VEGaT=u{U|!#vslu&Xbh0T}}lNHDWyw?`d*up(Fk=~EX@U4Y06 z#-&09KP})R&pm=Dkwqvs_%neXBk7<+3r!$!jX8_d1Bf*Ia3M+)7$h}MD`t#=1Qd?w z!UHW^Fi4UPO~9ayD~pgr2^W%Z(8O|ybYlWNuUOy>IwPpULjwZ1=g|-k!hi!Y)a+7$ z4HdLtz$P6akbw?60KtnORA7V14Go-QWJg2Hl2lUuRX{=uMPy(B7*j;@PYxrflgKz7 zC^HHIx{Wl10ch+{LJLbU@&hAFv=9XpQ9NOR2Oe-U!U$*}^G$+#gfON?7=!>y8#%;~ z)Dnpzp@b8PMBzaMR(Mdv1c6Zh(Z&cstWe}gF;KCLCL;`h#F<(cVMH7WP;f^QrxuY) zAR|Qa4-f%tx)Bf40D(oXOvGWu97r&b!4r2_kpvQO5K=@D1dUdbwIjp;1_cQeK|vr% zFu?>8$TC5O6X%|*lC?m*(o7Wt#6SZZ5x^mA6@-KlMiy2~kpKq&YW0d1Q;2Yb7hYg6 zg%QEZVc-)Hyir0+uPDMm0v+(+g$%%mFhCVX$Wg@{NhAS=OEGMdfdCMwAwfBa;L?Bx zP=v8B6i=k}1_M-(k_`vB1V8`*CzOzY6k}L`g9t8(AO#6CkgA3|ww&Mq3JUxn#0(^i zl9mVyh%pEsFa#mQ2P&w9fQb+efG`77E$L9h4-Po+0SGUUz<~}G{Gvb)4p0n~2OM0X zz!eKn@N5k%@X-qjmIEb)3L3cZ!O8#7Fo*{I!~=Fy7Kot%3m?oLg8~|ev3gVgU;u&( x>!d(~KqBdRH=DB?OLQG*LAgm1Z>+5)z(lIE7d& zl3hMXB?~JY8hKD9bW|}U92!qC6%z^uJSrKZc0PVoDqBP&G#na*UN&GsB2_mUa!4X> zLK#^-B7s^lDj5!3KOvN7IfYs=J0k{qR4$HYJBnQ}WIiZNDGnwU6oyqNj9@KCDI6OP z1(j(#LoXhob3t=YE_g~FEg%+=V={M6DQ-$8T|FOII~_D35NbvuMkfwPG9D`z31&YT zJ}4JCCKN&`6?IA;O*S5#aXupv1x_&;A{i7R5(+vc6c!K-9u*v&Z#Q7K9-AdPA-qIW`hR4QLO9#u3LU^*UTJsM;?8YB`7OgJ4iCKt(?M@B0a z@xz>7J0?mg7fdP)TfA$XEoungNk4>h+sC4VKa?K zA%IgTJSQ2Tb3~+cLsvB+?!%qRgk15`q;B&UN{;s7Zp!58c{PB zqIx&8iBeKG97`@9z<*1_e_3KW7(+24dRQ&ov0h+29A-ZqOE4H}J{e9l9F%S{m~K8R z6$g}YOlLqDaYP$G9}jp&9coD@Zb%><3K4KhD`Y|}k!(VpWkQQoFUFT^!<}U`7!I?3 zTF0ADYC;}wN-u9iA44e-p>j4uEEgdaAVe$^YDp+=ODLpzK5k7b^~aolUp{k3A*+5z zXhS3CxRtJkR&7TlNGcP$bx-EHj954vOfD6>lT*ZlN28l0dAL8dA)#z2z=Rh(3U6X>n;f?$TEB;}fH2^8k5zzHuh zQPW^VlZp!}@)3zKVgk>jTPVC3FaU%QBp1E`$zrV2yE7w>GEk%i3V<*Gv`CQ><;#^B z7)&^cT+=|e5ga&-z_DutDnw_{%y_V2o)yw74K#4Y3KT3k0x;wveFYq zD|Cd~MH0}6#t0>3j>NEG0ZtnqrJb1nvd8OE1s}=7cx@`Co7S}ZK1#!<%00#*GkPrwIF@P}-8a^2C5)ty~GYuP1Y~cbM2Z&+~ z02Fwk0x^k`k| zT&D{F45%@V1NRW&W=bQ7A%>e+0Fp+bQH%ft2)DEW1}!-#FlbF&#DU8l$D9z0Ic0DY zz%94*k;9=&TK|R=D5JUuYM4-+N%LI_aAzy@$Y5|S}(FG&@ z(6K`c5=e0C7e-0-1}Cb>AOiyZY~oA{EliP37AUwC0vTO=fXoe3oZ^ikJ-|Rf!)_^1 z%p86Q!G|7p{IO3V@NoQ92q@GN4FL&=lR!GkNVCU*ZZVL@4*~3>!#{5<;Z6!y;Otfg n$<$KIKqw&6Oag92E%nq?S8esxSZA&E)?9b(_19oy9S{IJniUz$ literal 0 HcmV?d00001 diff --git a/images/monsters/darktorturer.gif b/images/monsters/darktorturer.gif new file mode 100644 index 0000000000000000000000000000000000000000..a483ad89762c4ec3b1c3cafa4d339d0e8f61b84f GIT binary patch literal 2377 zcmV-P3AXk}Nk%w1VL$*t0Qdg@VoEuul6O5bE?!DIVN^_ARZW#z3M(Zd#j%=6Nl9~J zQn$9YwV{o$SOtrVi?Wh-A{!ZsgnqG}iZm-GYB~r!EFo-cY^#}x+S%ESd~1=Bk@xra zlXzOGsi_eb@n}dYeQaB7Vp?leL}y%7gm6}pI|5ZeF#rGmdTnB4 zWMmNy3(9;8n~j1a85ChoKg+qQH#avyH7&fWoqAU@n}%_Mf`aYs?V6gI!L5{`p`mhK zPN7o;EgTH_`T3$^2u(XIL^&~oP6?BKW?fB1$j8M^K{$Fz3wwKe|Kh-bZChz40drPE zWI`bh3kg~@4*&oFwQLqtR8(|eO^9`3(!sK&rKNLobA@nWIw>C3*49xxEV`zVDIp#~ zH!zKSZ~guKrILVFE(lUaJvlBZH7qDdIx%fpOKw<978DdI9Td{i(!;Z*b1VV9bqh^B zG0e=&qMevsOh7|1Bw0l@mxXh_s*!3|N~fcq^mrd*SWPP-8f{-sEF&FEEe)-jg=$Va z6c7$wPe=BY93U1FDIOSEN<$qS8)Q;Ol8lGf#<`!LpH@jemX?-nLkLSgH5(HT2nGd4 zDh&$=2Zx7;Q9?RYMLRDd8B9MqLM9O&5d}&%Cyi7JK`$asJ~c`^F;quFNH;151q4Gi zDb9NrFef5191lY$3{gZmM>Z=a9~=b)0~;3=HYgnf0s>$-5$Wmah){+z?NG)(uE4MqLi0f6jx0~*vGi;#Grae8OCD;Rz*CUiFyC_ z%4SA2cxPO0Pcn2`M%c!+n3$NJo0+t)ti8OttY;FOigl}}qtVaK>+0$M=DvDzYtXEY zq=IT$O+=uMc}P1ox{_sYTTC+`49u*MUteF%qH*1=c&)9if_rs^et11FC%B}GR75yT zI4A4t>i_@%A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7<+WQ$kMpxG^Le50*w2j1`My#3^S4oC$ew$}E*G8BRfis|HSxvp)RH ziEv7qG(Hs)x=B>w6hLy)oOv~rpiOX9n+lxLiilLIG!MF%Md_nRrw|07se#G`%d9pn zxGE?ztHUWrM%mpup;a0I9$dWzYJrW_Q3N*aZHTu}SdgtyVIu;D63bXWLt1Ll!o|Ok zg%Z76e0R|rJ#|yRLX%0900@FHr(UtbLV_Hn3KcSgi1foLq3ZZpb7Yf%2?ttDVRNPq zzZy|2%Wl=`z?2mm66i>vXw;cQz9H`a45jC^9!zIYEf=7m8D&eD1zQpjrba9zRcPqw z70ZK%@Zv!LMi^=ElLjs`K~RGp3iL$?W-M*M#sp!|^NRyZjI%@)n2|IE7+@SQ0U*kO zAx9mHoY9I~m#vV+0ZYx1g%$}^v0W!4)iuy#6MYDQ3sFQ73j}8nP{;ug5E4afK`fBN zJs5Q0hyyfekU%FNxL`>gYQ!T$jw=9|P)M&tVTmg)q(y`x0&G%)D}pI9Mi(vgkOepn zBtQuzA9R9a1|Wn~#dTtii5VfUlwt`XiJU-yB!o<1-xRTIuz@2MXrRF*8XVAxE1E=L z3yyI_LPMBmy_6#=lzce_qDNT&vgZ`rSR?7Hm5R`T7MDPB2@O|}Foi9Qu+RxKFC@?c zCxl8g#TX&^LdF4-P@0GUd^|%!0emPEi%(SL+QAYz?9jm!%_I>ECBV?pNfc9@;24iO z<>V>e zi52dEkd4(cOcKLo7|byTO;d2-$rP@@LPCe)HPAo`a7g~y5im6JO)w%+GKCd5>>~&< z&FE3VA)2Hz#Vfw28WPy0oKQd~zj5G7?Y4hbhZtB;g9QROm;eDHM(mRZ8CO^#gCA|c z(uVS=SLI3x#VpVV^$fX?2LdLfDo`xkcta!JU;_r=AqH&_#1}x20UuZa5PskS7urw@ z-%x@LNJz%?7UBwG@IV617=RxP5{nDGp&QG%Kq0_@3JEX}3hP4zD?l;9NvI+dAU2O28v?;MQ~2URTtSOJ z&>{^88_E>AaE1e*0UTzK02x++1XQe|4m~)83hclIDV#zUstDyDKO;1Pz{!xV@B_U* z(*ZZ^pbwAuf*>*=iEy|flSA+VC#66I3JjqVk@&2Dh$B?2_P6i34tgA5M;2ZNf`5(>MY6td=P?hFv1)as6hHmfK5=qLW-&=f-Wi{ zg(4UL2u+AW49@AHIygfgA%KN8(oqd&2tx&=fW;wdaWE`OLkY3~LI42Z0z`PgpgEZW zI|ji7Cal8*959A3o=|}p)IwGxk%cTiK?PaFzy%%%!AKAKn^J^e9uK%f44&YPJCuSF zQE-9gR3cSF2tgKLKm#EDqm_T`$rY9;g?#oz2}`7eAZ?Y!allj8&uBsu9*9))G*cC+ zN`e)Ht?Lx@VFw7rfJbmag$(o&S;+zb5I|+j6Z}9|$xdMa>iNweI@^>f+~O9SP|jTd vP=U}Uw)Pe}n(ZoGvfG7B0RUVrEGdOc+~OMdxX4Yea+k~8<~kR-0RaFzDGR{m literal 0 HcmV?d00001 diff --git a/images/monsters/death blob.gif b/images/monsters/death blob.gif new file mode 100644 index 0000000000000000000000000000000000000000..5e453dc5b46213b85c3c5f586e98c5b0b435784d GIT binary patch literal 2859 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 VwWy*j=6#iHta08*-+Lsm=s$?xtTF%q literal 0 HcmV?d00001 diff --git a/images/monsters/deathbringer.gif b/images/monsters/deathbringer.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0cb35204642c53c7d99b03c389c53a0b7bd3279 GIT binary patch literal 2885 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 f5C>6y&m7 literal 0 HcmV?d00001 diff --git a/images/monsters/deathslicer.gif b/images/monsters/deathslicer.gif new file mode 100644 index 0000000000000000000000000000000000000000..5282275eac74a17d3366c8278f547c086fa9df1e GIT binary patch literal 2161 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 literal 0 HcmV?d00001 diff --git a/images/monsters/defiler.gif b/images/monsters/defiler.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd266d6df3b090247663926ae99931683ea0f327 GIT binary patch literal 3184 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 W6GeuPH{kj$h#GGwBT@|^0028ukv$Ut literal 0 HcmV?d00001 diff --git a/images/monsters/demodras.gif b/images/monsters/demodras.gif new file mode 100644 index 0000000000000000000000000000000000000000..a661cfd73952ee5bce920822a643f357b6901ee1 GIT binary patch literal 20062 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 literal 0 HcmV?d00001 diff --git a/images/monsters/demon skeleton.gif b/images/monsters/demon skeleton.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e4187e53cfc31acca2f1b9e27ef646e80016cde GIT binary patch literal 1480 zcmbu7eN0nV7{*U;TiV{Xa6zyiKs_yOX*YuvMICcVOYfyEL%>4SB@=DwEfm{c)?TUT zK02yWaGO=ZxW#PMxyfQ=7>Fi9mM+ui5Y2|!bS`Gfa2>{FPJ`2#ja_hV$+GMpPjZs? zob#OXKJWWG7F+qUXPgi~Fr^190Av8@04N2(3V;WIEdX@#cs*R+5f1-AX4X3r$vHN9 z74Romg5%QMi^8m4t@eyeG4RyW7c~0mocw7CJh^n~r^}arZn1n>U47Z%xV~=Pq{nkR z5V-ML=7DSapYP-vb&_m z3P+(xyLa#~7F(3re-w-fh_N>o%hrV}5vbO{#(Z^NyS_XOkc_N(DghtWy~*VQR(|1I z4umhx!7>hubUa+9(P%w!2M7I-FA=0?_sMadR3^;@@(ruw@}K@5<6H-;~u~EJM_<*8wH2P!yB{zO)QR%E!C%VkaglmT$Z} z%pb0Cn}*bF=~mVk%0%}fD5{vmB3F8-olB7Dnq$#Jq3q`qB6yJxL~F-#j_jOlj&(PS z^N*>Ek!azo!U|tJ%gbST6l3B%Y{AwDUpF^l{0KL8Zj0A<5vGVfmnB887QJ>P(p%YgJ1*QvLE&x4%pD^rG_&m~vfOI>!fKM9|_PnxThSfk1+|Hk~75A%id3)|O& zzbVxMDFcD%d<05>>h^HCnnx7U!W9gxxmd>FEUaAVBMkL13rEFIpG7t##CZr8=Wr05 zeJ1)C+E5SR5bZ!Bm!AQOTl+LuqhJmgYK58h_~_8y>tB_$3WpN|i^h!t{FZhTScoKJ zS&B8ReRzhdGioljyDY_K-VT7IqsJ1bwnrKaQWho<0}PhZ-TlR?WE?|Oi8Yb-*ttDs zt7`w?PiL0^9X~0`L{w?nO4Z=_?f84cedY?OfwfYF4AP`?zxBc-k~jGuDOJI|I3 zAJr@tbVh{ilR1+xVTK0QNkuMpLv2GGQ`)sq1X>+v$Nt4)m7cu6`)iBT)%C&lPLI#(Ms z`5Kx?e;Zuk4Y?WF>+mZV`#kn)hB5VLgp#Ap*ux0Ehe z5Dtfn{Eu%oQ7uIcl%Mf+(@|w7EVkM@!cO3@)@rg7tC=~I+7t?rewU9i7WUFj@V`=( z&g%Z{3)%t=MPjs!+5}4s1|}d$nhMN^)m37&(qMrLP0Xg*RAs_VjO>3M&K%b@c|(wK z>n8&=W5wr#0g8ssmKM?(gx&!3czq-z_^Y9_UY#&VHhM!e8D!kIlEIl?6oF^|1e!g~ A!2kdN literal 0 HcmV?d00001 diff --git a/images/monsters/demon.gif b/images/monsters/demon.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc1211fe3e43cd2b66c1f2d5e1bae97033a9fe2 GIT binary patch literal 31441 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 literal 0 HcmV?d00001 diff --git a/images/monsters/demonskeleton.gif b/images/monsters/demonskeleton.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2416b653f5fd294fa04097b2889c83d66cbcf43 GIT binary patch literal 1450 zcmds0=~Gh&9Q?f(k~|0r3B*7f&;U^)mmqimA^{1P5sf$qRSPJCfD{!i3feJ1IOGr% zP&}#_0YMl|1P=(dk823xK^11OV4KubvBe7HB8*du|3>%Q?(FQ$&g_OqhOPHY;sYOy z3RnagfPf%e080Qj01E*9)2GP*8v%^X&4NXGzW(Usq07V4i zFI%^sqtlDc%uWGVA;?uWd+zPq5;CRF+OCep$^@8*&ypkEbK(->IqP78Z3RN(F_YotipLBIN`02M3p7nC{J+^Gv3GWaLLH>&Foh zGntwC;o&z)NljetKuE}wsHmR<13#Rp)W3Wg0dUR1LGJ1K`<^{Iji!fTtCdR2NaiEa z(J~K@0{{#8`2he@4reST#?aZRo1E0Pwuwm;?d+`X)vG`E?Yq6g#VC_Cf9-J5+UAU< zpaAzTg}!_Ou+MPJ+&)59-&26uxb9ZUuJ;wwoujTq z$fW~ic0TEoO8Je!O3tQI`^dWuL)E;PTf2wuE)M~(q^@KP1lTq*2kI`;@nZV5$)j=o zi7s0UfF|L+xGq8Cm#(n)z!Gh$op`@KN!`|hkLCg9ez7*Z$d+0ov?D6Amx~b*SJcV5 z8RNjFmXnl@`7skU$RAa==AuOPs~eS?A7&DFlw*vI${l|7!)Lko?(hCdT8IkCmp0%t zH~~C_u0Dyg%(NFZ0V&ZrEVTVO`0jI`Og*ex6^Ry3$rxHeEziw8F$I-z-bRN7luDUi z{hij%%hIPM?=h&jM@Y>2JWE}TSCQfBdPI!-0ofL~32yj^WvnI;E#b3q3WwVO;27Li zj|g4i&~P%ep?pizVKctl29El-!Wm>60;@3&9r3TFtHY4-tfB0{@)-gLx<#ry;MJ?C z1cq103Fj0hkdk=v*M;6|tV=;{ZidrNeL6&<`F)!#MtwV~3TR<#dnDA804QdMOUjBB z!0!k76&1?e@{Jj8jgF3Nf-tn@I_I`{B_ixf#)B`hzEcsvA5TlR_=@8d?72#Ek3`(w zM#Qh3^j|r}C&j^L*ArMG6Nn}CtT-QP6;7hWVJw6~X8;njT+jepbH~2)V z$SASF(FR;_5g+A;`fo?Qf)R1F*Al>;&Arm5BjBic0d|?@l*fn{x@{MxuXhzA*~i)E z&gY8N%@&@jq|Au(_H#QMKNk7o_NP0DU|urXx{S=8HjgEHFSI7qEjWD|>$O}rJ<~@I Vcc1NN?#!4Su-o5uI1)i1;6Df-1>XPw literal 0 HcmV?d00001 diff --git a/images/monsters/destroyer.gif b/images/monsters/destroyer.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e2f666083a3d3708d90e75dbe69b969486b8c09 GIT binary patch literal 2433 zcmV-{34ZoRNk%w1VL$*t0Qdg@mVs%sn0Rh(Zpq2XQ&3H-k#v~|40K&X&cU+2s*;kD zlCrY0dwYASsi>{3ttulMLqkJnO*7Qg)V;mEfND?-3kpL#GhJO>q>_GyhK5!{F5uwc zww{75Ei4lg5)}~+{QUe&OG{EjG-60BTunXM+1cDv9i57Ewzjn!8XB&fgd!Ui>gwvV zpo+%7w}^v%SWQ9g?d`O=qfp&Iwp^0s!rKQ8L znmaQp!NI|~tei9~BqAaq%*@PDQBjJDiR9$uz^#^PX=(23=W%gyY*|A&IXSqvxYE+n za%5GHaZtj-!kwL+Jv}|jy{?3IWvq^FWo2d1(9p4-h!_=c4BN)I)(@gfoDv|xvIOnx|(`d00014NjNMZ7U<~b zVNN+VHZ~6p43u(C&d$z>aaT%0IFfZ$FeMp!VMQ|~6n%PjjdfZi9~w(JCaa~K1_cFf zVNy{?J#}bWbyYK3R#DZ{(a+7xNk>IAFDW4y4+;qgX;3y;SXZf+f+ijmcVtgpTv|^+ zF)St@4Ga_r2L=NJ0|5X9*Voshqodc>*7o-Hk#<SVuK=Z)$*CIy^f%mXL^% zjEKp^zJg^(gKAHWX+l6XDb>`}Nj4(#Wg)PyuUuPNC?FR%+uGTHabaOs zOQ4>daxN7&C>W=ceyFCTuAhsQgmB{G;+l$h^P4qycX#UP>AjJTxL)=W>i3@oshk|xu~C&&dI_+ zKtP*+WB>pFA^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2ARht>*%6SEkt8z$Lcjw7%9IuX0pcJNCc&B_S#oIk@*mERfLQcg zC=-wynm2`#3_6q{ARb74D&_doXABQcdjh(JlWGFz?8j zWKyXr3P{y}(T2g)(P(H4R)ML2a1P8k$7e!0gmBwaPnH2y`aYQ$S%JvvjH;v!nq5KK zYoCh)Cor_d6ptS(B#pq-?878L1`LS*b?|9piX(;s%h18M%I5-cIyt)+#Zv@yZnl{7 z1IUEBPtSl=Q93AW@QF-KOdvo_fY30VA>DWbLp9XM0SN~xP!iM>DF9-K1TqvN;6$mw zK?HjP^h1O%s<84|0+$FO$Qf3gg3l~uhyn;JscfLY5Uh0Y%mN*ZD3VMI3?V}ga5P~< z2@DkZ1R#_gkbotp2trLDIryN(C;SyL#sE|RBEvHcz~Mwuw1ve=IZeQEM;a;gv&0kE zP!YnKrf|Vb3$?7!g*R0Mp#>l)gpvd+tUz#qG_j-!0TuzS@(BixMf8aPh3L@FE_O8W z#uA};0f7Q{P$EV*^i(nm2?-$oVFe&wDD#FNzA)fK6FoQ~fCqM1^T`45^dZU(Mj8Z& z2MT!6!2&=eVTThy5RpM4tr!7_2<}kxfFN;bk&PvQ#KX@8PCW6%1ymH$#5@i_po0Z~ z0MJJPXe3(@ASGZSg93%LyFd{TP(g(NPRLNowh?f_ML4360Z1q=xH8WL7|)Xg5I|&+ z1PT{;@d+LQT!F@H4gsP-3FSzW#xo_bGJzLUG$0KkK>|X;G7+$G0xy?P@<R(4alU31`%BUu||0kc_2XsI_%<0IXmp&%M3+e0mvwd2tf@sjEHf{DIR!% z@#dQ|Fu?$T;9>zAj2yrRC|jH*(I--Tp2h^Uw9<+Kk33!m9NLf}!U`We5Jn`QI3R-z zPE3#mE3RlF6C4)cB8M1>=mClxM5HIt7OGTmAZewgVh9xDfTIEl&jX;r1KgALfCW&P zvBC=W+yIIiqrAe2^$~5610Ezu(v2q{=$#>QVF(XYpaLE^MI>s_4tcOa4bCWo7{ssz zImqD$HweTQMnMdF*uo6dAVMaNfxrBD!V#YE#3;nT1T`3<13-X-5gIUqEj+*(UpPSm zPGApG2;&QEpvDUSoFRfT$YBd&D8ncsL4^?gaa@^1Y1af9YRn9X|RA6 zyYRpRevk(rv;i32I6*c}@d-JUffAIc!w0qyiB3!)1S!yg4WbB>)V1W_rPy{;GAq*$*Mjl}B01Kuf6$DVlF1FEwtxW?PAlO0(_}Ir-Y=RcZn1lzU zVFw@-Aq_HE!aD3=gA}Zw4t22L10KML3gjagO;80Kj!}#k^nw$~_(lqfK+1=pLIB?| zLO(pP4jUwa2<8}s3^HJce#|2TL$HJ?2+@cx5F!Qtdzy~w})Gd6%6}VV~3vzISF5m+U zHei#oP_hDMK;aUXP{aeE(S@yUe*K131;Er5X|BG6HZ zq@o2QpoAu>p^HJ_fF^TT1yTNhj-Gu0244urb{ZQIO3*_ObWnwcyzvVa7~%t(RR|yg zK!ZbGs45c9@COC{&{K#+B6?*If*4Zq0Yj95w1DuzFe(s1lna#&rVEAE_THjUKvy+$cC}Pmv0T<(sBBAG zU>KfW9%2+_?bPA4K$R(z%?(0o(3yanVVf?|u_Y5X9Y2<3qQ<+rEnBkx%g&FJ^T_$W zlk*)yugiJSi~$B;0x%{B27^AIZ+<%H@pz^gn4X?y0Zc0J;4%ZiZ6C$nHW*|mL#a$A zlh0&eSr#{-?EEzQvNy+^DJi{<{fHB78F{y3`eXK?k^cZ#nuoV^E0s*^c z58!~y&|Dl3lgVVVlPJ0`GLoGi^YZz@@NjsFq1bumR7^~}KtOp=Mum?hCszQ-}ZIEWHptD-y|2G>D=U02*%mVeh|L_&Pu_fCFF#|hKOpG??jx@s+syWQ?|C%wl-?V{5ylmjIqaTMNp!xrna$<0f$VTrP5EWMHs~?C%#PoZiC3zS@vLNYOG5r{Oy_X2u3$jwMSzDSRTn<0U$58h zn1sD_!f}8@myOSE8&@8#e>qy1`s;#Na4qHe<|*EVf|Er^#u2Gz7z780dT6q&bZ#pr zB|-vuwFhQIM|#dRNk)f5ikl}COtIvX)D0`nU_$}wtK5;@pLM5dm%JWLml6K-M&gVUflf7y{!#=G7YQU5h}Ry>W3Un&Xjqkj(6vC zO=GYB;prbYj9=YCuMj+V@Mx5qU(HePn|LE))h3xc;)!_C|1IQ=p??W^@4k+}U)v}- z1Gji7ikA3oXE}PtNVYs)r;fW-pA7v8c3aueA$8wCN0yX}ap2a);}*jfJ@KiwGZ@1%2n@HX&L;ua${E0;GrER(CV@;K&f yDl+!%F(Iro0fDTmqy)#vl9uEKoJeqRH(~J zyYoVVMmM!-C+#p6yYYh-cdz{(Aw&QmC;gJ0e}IJfq;RKL4ZM!1AqgNgMfpQ5r+VWAP)c!AP)f#A&&r$ zpa6gXBqIR=0YU)*7XU6O0c!!Mg%Z#MfCoyzMgSTi^eGg2q_-keWPl6-IX&VL;t3!~ z(-0C6ArMd?kPAT^^2M8D-P=Fu;lmr#95&^4ZYk;N#v}8KK zFd>9Ogai?yB&d*8!WyEf5G|PwF?0mN2tpA8MhGH8Nl+21gf&8=2u($3DWD@#8^d%! z*nv<7B|&shREJf<+CfXu9gMYuk<4^(bSFZc6wyghowT)+rr$8mIa`?D$5@9LYbQgW zVG7SNg?$Wjg|iNDbbwVJZH577P zkMKj0+Odatrp|hP{{NwVkYfP+4Duds!o!^aa2EWmHaU8tgMK(C_gBN=6XHQ+=CdJS z?Kns$OWaSMToW{`NXjN_w!BoaJTLfQc!C7l#cH=&m&GZJMNU)wNMjUeSE$k)mrlfS z3^=_ftEu{pFM;0$vu*Dye5Y`1MvQ&4>;10G)CW-v`z$6~<*XzVhR-{<8g>pqd!l-a zsmod4(SLsDwXKy;-xPbuI=v3vZ*BPTYxZbLVQzaSB>5}yBgQQ&hZAOi6Ulgw@5;N1 zzs&#Q?d=azSvbGAXyx$Da5jGA_}}qq_o+JU#BatU9l5h}qe+KY zSTEw~@2-xESn@^la|G*5x8{U3@x!?bU!5p36!o(*MRtHJuaTc7dE)_bVwl)Nei~Zx zdLVw-puYIRW1b^6R$;l^F(FU8)g{}Ys`xfXPx-sCwYdv-pD!~k$!@l*vTd6N*A-qA zM)TXRoolt+3i&H+M|-G2I3n6VUYy(zJNT!K;Z28ZA1*s@*Ojr}=MDafZ-R?_r#}e3 zoMoBIVFp|5wDgvO3iEz6c$vQB-aKO7-Q;D9-qQ7og~Emcb^3aQY3Sqq-oW~+>c4Rr zbwnC(-qk*QMq`FyR+gL>T?gAj6K!NoyW3$K4DExnhJ2Ig$aqe8$sx1Wo4a37$_cO7s(Se+vt7Ss^RysscU00K$3pVFEGr=#?p?7`ps5H%40LWp)v7L$$U{n_ zEdh+I)}Q;CEO!!1+dKm>eN@EVQP|wvM&%)&?B)xgr30?j$HZC`Q!RG`dHa6bWN~wi_QuR*u)GzoTX{*Q z>B5pqSebD=rdl;T%VnI7;aB(lnZ$-=bH9xp0vd90GqPv#w$=;%35CURiBwXsi1abJ zKV8xGN0sS-tUCKaTXA&IV2LIaXP@QFEPa^ksZP=ySyCx)JXZEGnYqU@C_kFO2kyj@ z{h)1eHXU4l!QK5bc%N_wF zu9(gM6Hgwk>CIPN-G`-uZ-Q$pImCp0N##-efa2alClH}Y^mU((XYO#c%D0t%+*9Mb z@arI+RA=&|hN|Lo;EMb}9>UzEnImLe(G~XJKdDQ8+2w=fNY?wvh2^Jbz^vekytupB zY|vD(T5n?Fov-v};I$h@O^NQNp>3cI}KF1lPwnR^p6@)FnuDWtqNBL$6x$?6Qy!EmwLcVz;XLcb=8w2e{H_@ zuNMy-Sg9$QTh{OO8;6g*38KD*6XAJa^p?_5-}J`jwHVQiVLyhye>6RINJav1e>m1_ z$O6wezD~I-t~oV#JT)o0LgsCM@7zF^SOS6OzB4Y%U|&%zJA~i8$9g&n_Ox~#1P`KP oNSWp9p7by0EdBN_nOM?&D3P}DpWL0y#OpgAe43_~zQ8N~2TI|c7XSbN literal 0 HcmV?d00001 diff --git a/images/monsters/diabolic imp.gif b/images/monsters/diabolic imp.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cd8b63ee0ceef68a661f34c8710b548c47941b9 GIT binary patch literal 3273 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 MrZlJN$$$U=I}be#ApigX literal 0 HcmV?d00001 diff --git a/images/monsters/dire penguin.gif b/images/monsters/dire penguin.gif new file mode 100644 index 0000000000000000000000000000000000000000..19432f5f6dd981ae28e360128956934862055b8f GIT binary patch literal 1490 zcma)*=~EMT06>4c8*-CtlaPBi1ju3z2qYmO)`XNBH7W{K+u{Lg6^qt7Ocjj@f>&Fp zcu_eO0d*Waa4ez(l?sSjupV_fV^mbUi3fr*rv3^2^xo$;^O94OEV1)(fP=?=0APRs zG6evDkRcL)U=|F-NB{)LbU+et00d|-3!*VdFe!j51Tc-v1k3<3EdZehf)rDB=iEwuUQY(uFvOkFkVOb`Xm509SzXg{X*+N_aRL zB&JG3DwYY?(+T4CcvD1z#Z%s4Z+8KOhYCXLxV2iHd%qfF6ei}5qlqGMuBv0AgmY>X#n zMjDBPw271A;;b=qBCL~bUnJOVsgq_V+ii*V>B*_)S$3;+TI#g)w3!)6Q>JBPC+DWm z&T?nS7k!=8G!?1LE=Fn@i~k3}2St#!ILloYs% zH*R*jS~n0|Hto8)j$cu-qvcn{#jVs++afBqmACBzN2^#jHYHx%i4Sg;w=^^M@7}Yw zy7u~x$+df09&WdF)Fd6Ms_tpfojF0TKTvn5uCa0d$)h!YTxm#du5W8OSb3oNNMrNC z;p)hv$LsrA(>l6?PMrSz(c$@?Q_T<0n$MhVdvR*+pPinr-YdP`ecip6u3Wx$^;XBD zr`X>&uMgb5q3*XB(&wX!4Uk$x{ z_jL5R-~a0An|H5A-}rnZW5eT5-j9uZ7$5V07#;oO_kVilbUKxO#?-{jnRc5aF-jka zK%YlYj*(~z;0M~z{&^A{0O}{;r^!-UYCGLjbi%yumbwe2997!BCI>0eJ&{E1bG+~* zx{#Aqgj3^5b}_y)fnkQz2_mMF9bL7Z;YfZSX-{O1hqN_-C|crJu#p`MTZjO!VF4up zX3BxDv7A;@(Oyu?@c{<&-0ETPjHS8mpwjjV14LTj7XBn!eTYPIG{jIW?Y{FrcrFNf zoHxdl={FAt?asr82UPu%c&bcqiCI>x`uR@aNdN^BDgd?jT)J~Do~TQ#yK(W~ z0{QFCP7-B+l}lugFy$SElU|g*n!SoMEr;f%@kyScKDS+&crmUy}X) zz_bes8<&5{m1p)6OX(|Jtla*Q&bhbpZ(u39^~JEka30F)FGhbMYL=8Igf|fd{lMI&ExB|nXOH*F0BY0LNI++R`$ ztvx~%4j!a{DYM8KWfo^Tv>0Vp+UjsutfHH8;BD=eIZ0MM3R*i(07`#0?t(@p9Cw;q)8 zIQ!%Au)eA@>+V;Mb2GbAc|mlEHNMP)n$~|Dv@!ZiuF2yTZ8wx<*9zJTKi-VfJzKSq zQWe%6pQ$a#P)uGo+S@Zn<<09EeD7T=b+kV0VE;pngyDr_Y6lRDn!GNidC2SL?Ba94 G#Qy*wuM6k^ literal 0 HcmV?d00001 diff --git a/images/monsters/dog.gif b/images/monsters/dog.gif new file mode 100644 index 0000000000000000000000000000000000000000..67942659f008a50efdec23d8784ac89cebb68583 GIT binary patch literal 709 zcmdUs&2JJ>0K{iu3$IH{UyITQYUR~7vS|}tp`V|hI5|zO(t`6=*WKctPehX_d}yl z2viD{Aixmh&}HZxVHqkTVFd<9RHHHhC(spY$l#PJKtv_kAmx-KgNy^L5vM2^ib9Fp zFi;o@6o#D6WFV@d9FZANGI)@I5>nE6AxH`aRXEEAxyDe?DI+8sfQCjFiE4xZ$pDKe z2ym8Epvf#5pgKb-tOQ7d%p)o&@aJa@|E>5hQ2_ktUth5P39Nr({;@=I{9H>YmpZ{N9Fn4Y;;yg&QkVd>H1xhGGbJ%90Xe&N;P>!os9c$3=Ky1bHX zHHoW<2Gmp?6PlbmrRGm|$HCq`ZT2d+ZjcF)*y@%pw*I1XqEI|163KD?oAkvHCSBd{{A;0O zrp5}V*Xvu0$J2{T!svy{U`%Qs+3g+OF$K{D1`q$3^7Kik^5uFgvlYL4i~Pr7t8N({ zrlDE?F2N+lys`c>E$!R7Ej^B0s3IWJBn;)>&VPL$Guyh3FE7-q6OO)-&$W{t4EzI* CLXh?V literal 0 HcmV?d00001 diff --git a/images/monsters/dragon hatchling.gif b/images/monsters/dragon hatchling.gif new file mode 100644 index 0000000000000000000000000000000000000000..a7439bd8d1477d0115c53463644ef5ce5a769330 GIT binary patch literal 2782 zcmbu8`#+Qk8^)g*b9ja^Ju~L;&|n6&Ga@rXF`{9dCt=2+HP|o|hSdxu-3k&;84FeeV1E>Hhloc{}lA+yFP= z9q>t51PX;gU~mW!01S~h5Cm|BNDu-HiAVxjkBZy`fdB*pBx4lW6h)_F%}qdv2~Zg* zm43H3VYlqSGP$6Y zJ-BrzxRsA(@eVg4NTL{{^gLa-cwg|NICvb%z&l~69qtEpN9sKki z{Pp=F(Am$>DZqd$0r_IkS&VlMHQG-k;h0<4H$9COj-#?mTitKHq%Rtd$QGCELB zjz4WAtAr0!7$=mI<&{uUB{}&tCFv|#u7OgjDJeCSglf861E**(?Ex6sEO*W zvPx!5m6c4xOw%wkYAj?8P-;Cz-U6q#(iOGTv<66dnVL~Y%eYKSYk&`5hLw$!jH^^- z3#@E0&2E4*uhO!v!8tAPktSnV{l{}=;?>U*nr#zXIkHaXfi9-(E<5%HC#jA1*OlCb|}8*r`_czw#($5A16*U#181Qi|BKd4sm5;eEAq(HY7SY=qn!* zCJcL~4f$mDd;ML8)>Q(}+mO#Yf%lC#T?@GJGeY`nbDF`nTQAERX0Z|4Bazfm~W$3>e@1)n$qzzqNa(tX=% zdka7#>qu?e#eNlJDbo11*A14y_DOTv_WI#chR1QbU&o~%zF~<^t-Z^AdM}ZqYnk&{ z5MoJA5!*faEk4F)w_QQ7(Iv*VBwTQ}hFXucskPky0;o_O3nFgw}Dl=`9RCY_s<0cA)B=X>v)J+G^RSg+~*4I(EMP@|H3|)-n_zZyqoc%YH>s zE`KzrED00isgKd*KzBe zQ%?od=;c6^&L+AB%t?1r+bGuZP_)R}=pveD*lM7?g4J2X>saeAFf^k_i(v5v^S-5G zk&B^W)xDr`RQ4ZuTGSz~H~rS)n^H_+_JMwL0`TS-fsbeQBcj*b4b1dMo~bR)cnXW{ zJ8Km~aMSei_-0r9WC1ctyEKkqai1RNZnOuLKljx6)`RR8pl;M5In&*n7Nv>JTlO!0#g!3~zE71`&R^E0#V-DdCPkuG zV`uFq&ULTdZ2qxyi!JKzx$xj;Bh~kl+N=$zFFMT4QN=Zn4jYG6=<3$B9=BMJtq=Ni z-kNeWxi(z(%l53b*FT-yRXM}U#F#9z+*7>&wq1|siW{5LJE>Ps_0;VO6^3`m*NM*C zdEpkqw|=l|?4Gv1awqgR)uTMae;iaV$9PTVef*8}sraX77?TJ8UCaft&c`Pm3~K%G zPT%MBN|1QtyP|7a)noICnOT~H>pm&#e(usZLE!M$am$n&?m*oAp1euhdd4D*xZH^l z8Z-y3jPPzQFtx@;!nbN_YNrBYopot-#Q0b!_w&e;zE|oP_k1mI+pd4d8WNbRm3s_q z;aggsazSf>)IrKg`x5nJ38N(Fx7f`mi+CdhvW>^j7I9tW!<$m(fq8FTx?b_l=W8rA zT?vz9iB4cgKUOduUDXvhFd)|25MBOK?ei z0-p8RrCc&*zE|}MQryZ(sc#mM{&p+ci5`LVotMWLM+(w5i!qDQOa7$qw9ERMY7 z`j=QY53t5nUlJ(a-*%63Tx6_IA@ME7bHk=F^?#Q4A`8MEZJSn;mZj+R>&FybS2AYC z?wDs7?1+8T`e7SWcb6J9;ZmWZcD>dFym4%}zOVRR2a57ma~(Noal2r=Y%JmYrm1%? ZZoc05urzF^TU&jYs#|~m4H*J<{SU!WTUr1B literal 0 HcmV?d00001 diff --git a/images/monsters/dragon lord hatchling.gif b/images/monsters/dragon lord hatchling.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cbb1e59a1d483818bdd5b880b0eee0c1d38fb10 GIT binary patch literal 2881 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 hC!=`1lA6mwD6D5G^7qAX-$^Oh6dafT&2- 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 literal 0 HcmV?d00001 diff --git a/images/monsters/dragon.gif b/images/monsters/dragon.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac77434c54208e3124b1fbc4bb80cfa7613a2b2e GIT binary patch literal 14616 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�LA$i> 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 literal 0 HcmV?d00001 diff --git a/images/monsters/dragonhatchling.gif b/images/monsters/dragonhatchling.gif new file mode 100644 index 0000000000000000000000000000000000000000..09ab1dbfa931a9c5141cfa1c8524eada958a0eb9 GIT binary patch literal 1785 zcmV@Nk%w1VL$*t0Qdg@NpKJ}N()wb5lCeYG)xLgZ4O+65;#r^K2{7B9t1>W z4R@;-cc>S5rWkUl6?LK)bD|e^o+38onH3Tl1ZR^JXpt0Wj}#Xm1TH`cA~6R+TMb!(5j|N8FGUF` zI|n*Z3^-8>94G}RHwYdp1`-$NY?T#ys~B*e7jT;vYn2scj}%pQ5o3xINMjCbwq;a<6h&qYM`#XGbr3;d3~rtk zd8rs^k`#2S7HF0fc&QgkY7Tj;7)oakRCy3kZxCUZByyn_Ym^mlo)ut*6Ks|iYqew= zBn2fl2W65IZJZTtoEu_^6JCQ7SEwOzpcWt-2ws5`COHQ!LJ4=K7;~T(PjU}dcM(~H z5jau`ProGu1_4H74Leo~SbGseV-0ei7A`{xai118ObT(G7E*E$CNu|IzbkUB8(V)8 zV1yGxUkyK54sV7TRaS%&!5iC9lGi4BHm>f`f7-o|h zJXZ_&s0mDQ6sTWj&9aer4Y?c)V z0R%)}4MJZKNM;UOfD&4R6KKaobEXz)uP{Db3^!5~a-bJxwjpz&7ysMt6s#jLYw|FIk?^UaBNCAj?Xs`tU7ZELK}%t7=9gQ_BB&J&>Z2jm-X7MV3;;X`96 zMIcAc;UUW+(Rzmj$YR6@W4%FwppNXR9EBr$zYbxhXC|zgH-e;@Ei&1fKZ|e^yfLIg ziYr$d3lD7-cn(LF_3A#c=(W>g)Jxv~2n3u22iz=~SMby9vV#IRtnRWN3yDfPD!EKb zA>iqaC-AJ032`0WP)%cQAi>xsz@1~j12=4u0~B2Vp+kDPfpmidH38$t5xC)}mmYm& zAVL5+d;tUy1gx-<6cP}a(S|+vH-b7VO_0wCC{!?jic#o5Kmj*M5lM`ENwI+)c2prj zIu|@e!VE;jA%cZE^ne963Me2)4@}62(G3fzfKE8$uw#WQ<`8*97$po~r2xd}07ny5 zY|z0CJA@h80?w#%%Q0i10>C2$K%>$j8sKrjHXINTz#=T%fkPgBikXrqV?@)9I17*g z002tBA;k?J9Ds)lHY~Bn4LGd-RD}WIX&4MRLI~ka5QrF}gc3clf(Zr?5a9w2l~i?u z00Jly#T=Sebb}?eG@=a%!juw<62F{4jtW%_bA~cu^rP$mQEc&r57AO|LoU;hA_OFi z&~gnAvgEVFCl(a4NEQjqz(!+DKtSOQV6;2Y4XI?4>oTWs!$T`5^svJp2*_YU0xi^& zo&Y{j!)}HJ%Hz*Fn&`t14?LUzLk~JAKo1Ok5U>XZG=u?M5;r6v-a2KJA&C|&S0YUT zI>f910Zg;8%_ubhryWTV=4uKWqsq|15=nQh11|TN@WLEzkj&RB`>cWn50ltHPaa(F zAa@Te)KEh&a-dLlOQ7)95rG!Z05HQ1BGl6XFBdeiff!>TEUe&!pW@vBzy-!=0RV6v#FN12xv4b84o*lu<~O?7qU;?@%yz>R zJ>-s(UMo3;3>jFUHoO-v=>E|SP(0y<^He+$-SIzlkpmS`7W7{bR(N4N_fGNgz2cXF zK)xC5qW@JVKu{3^7Vfl9#U)W7EWJi5iGmLd5WnRV!3RJX+5a}uGlU(afj*O;_@?#~ b3QF*T7|fssH^{*bdhmlF450``7!UwEA(w|; literal 0 HcmV?d00001 diff --git a/images/monsters/dragonlord.gif b/images/monsters/dragonlord.gif new file mode 100644 index 0000000000000000000000000000000000000000..24819ed451c7e9ae43fa77c7631c4642341cdf55 GIT binary patch literal 2842 zcmW-jeNauEKoJeqRH(~J zyYoVVMmM!-C+#p6yYYh-cdz{(Aw&QmC;gJ0e}IJfq;RKL4ZM!1AqgNgMfpQ5r+VWAP)c!AP)f#A&&r$ zpa6gXBqIR=0YU)*7XU6O0c!!Mg%Z#MfCoyzMgSTi^eGg2q_-keWPl6-IX&VL;t3!~ z(-0C6ArMd?kPAT^^2M8D-P=Fu;lmr#95&^4ZYk;N#v}8KK zFd>9Ogai?yB&d*8!WyEf5G|PwF?0mN2tpA8MhGH8Nl+21gf&8=2u($3DWD@#8^d%! z*nv<7B|&shREJf<+CfXu9gMYuk<4^(bSFZc6wyghowT)+rr$8mIa`?D$5@9LYbQgW zVG7SNg?$Wjg|iNDbbwVJZH577P zkMKj0+Odatrp|hP{{NwVkYfP+4Duds!o!^aa2EWmHaU8tgMK(C_gBN=6XHQ+=CdJS z?Kns$OWaSMToW{`NXjN_w!BoaJTLfQc!C7l#cH=&m&GZJMNU)wNMjUeSE$k)mrlfS z3^=_ftEu{pFM;0$vu*Dye5Y`1MvQ&4>;10G)CW-v`z$6~<*XzVhR-{<8g>pqd!l-a zsmod4(SLsDwXKy;-xPbuI=v3vZ*BPTYxZbLVQzaSB>5}yBgQQ&hZAOi6Ulgw@5;N1 zzs&#Q?d=azSvbGAXyx$Da5jGA_}}qq_o+JU#BatU9l5h}qe+KY zSTEw~@2-xESn@^la|G*5x8{U3@x!?bU!5p36!o(*MRtHJuaTc7dE)_bVwl)Nei~Zx zdLVw-puYIRW1b^6R$;l^F(FU8)g{}Ys`xfXPx-sCwYdv-pD!~k$!@l*vTd6N*A-qA zM)TXRoolt+3i&H+M|-G2I3n6VUYy(zJNT!K;Z28ZA1*s@*Ojr}=MDafZ-R?_r#}e3 zoMoBIVFp|5wDgvO3iEz6c$vQB-aKO7-Q;D9-qQ7og~Emcb^3aQY3Sqq-oW~+>c4Rr zbwnC(-qk*QMq`FyR+gL>T?gAj6K!NoyW3$K4DExnhJ2Ig$aqe8$sx1Wo4a37$_cO7s(Se+vt7Ss^RysscU00K$3pVFEGr=#?p?7`ps5H%40LWp)v7L$$U{n_ zEdh+I)}Q;CEO!!1+dKm>eN@EVQP|wvM&%)&?B)xgr30?j$HZC`Q!RG`dHa6bWN~wi_QuR*u)GzoTX{*Q z>B5pqSebD=rdl;T%VnI7;aB(lnZ$-=bH9xp0vd90GqPv#w$=;%35CURiBwXsi1abJ zKV8xGN0sS-tUCKaTXA&IV2LIaXP@QFEPa^ksZP=ySyCx)JXZEGnYqU@C_kFO2kyj@ z{h)1eHXU4l!QK5bc%N_wF zu9(gM6Hgwk>CIPN-G`-uZ-Q$pImCp0N##-efa2alClH}Y^mU((XYO#c%D0t%+*9Mb z@arI+RA=&|hN|Lo;EMb}9>UzEnImLe(G~XJKdDQ8+2w=fNY?wvh2^Jbz^vekytupB zY|vD(T5n?Fov-v};I$h@O^NQNp>3cI}KF1lPwnR^p6@)FnuDWtqNBL$6x$?6Qy!EmwLcVz;XLcb=8w2e{H_@ zuNMy-Sg9$QTh{OO8;6g*38KD*6XAJa^p?_5-}J`jwHVQiVLyhye>6RINJav1e>m1_ z$O6wezD~I-t~oV#JT)o0LgsCM@7zF^SOS6OzB4Y%U|&%zJA~i8$9g&n_Ox~#1P`KP oNSWp9p7by0EdBN_nOM?&D3P}DpWL0y#OpgAe43_~zQ8N~2TI|c7XSbN literal 0 HcmV?d00001 diff --git a/images/monsters/dragonlordhatchling.gif b/images/monsters/dragonlordhatchling.gif new file mode 100644 index 0000000000000000000000000000000000000000..f7b129e056f6a9bae6f7064366ed658e539ad91e GIT binary patch literal 1794 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 Khiyc`%6|YRB1;nh literal 0 HcmV?d00001 diff --git a/images/monsters/dwarf geomancer.gif b/images/monsters/dwarf geomancer.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfef30c8b2512e85b25b028896c6d7d015329ac8 GIT binary patch literal 1701 zcmZ?wbhEHbRA5kG_-@3IFVAqkKHuNp|NQy${r&y>=hw%_$J_Js&-Z6|zkmMy_464L z4Epo!&*#hM*Vq65|36-z;eNgR{QCO&_4@zcukW{)5Aq6P*v}xZAI~tA;r#r3eSQ7^ z=lk>X^Z(!9-}%Vm{rP_V`270*dU<~N{QP=;dH(+T{`33i7gty7%k%rH%JR$0``6Ep zm*-#aZ|^TJUvIC^z`y{s2uO~C(GZ|@2q^yN_Hzvhc6JPKHPSO+W(3-&_>+axh{1?K z2V^%Wn=o+vXGrCc@z}87U^9oXR?LYF3!NqZD|!9-{^7w9aebwI4T2jV9q2G{YCH4e zeJgjT=>OJ|gO`q;n8amLmh%4FUunRuDiZJwR^E1q2+(!Hk} z7|qh*Y<}U{X3G44hjY@BW2*u+wOBMi$+vQ9>8I7qELh~irx226qgj|5(JgPM^J6*V zk(>2wCi8q23MMz~X8CVhQIM#ApOcyGkMalpL!LdVxpHa03LBsE2&%T52~=pg_eBbF z|Jkl^n0331hKq{850zLpo{(K4zXKPwcCab&FYvvo?#{-__2k*9-^yM0SsCmV4E8KJ z-ytWYviy|g#^!p?H2%c~9~3^@a|#?1{~%DC{P~`Mn$UurPfHp)P82rR?BC^3vEB5d z>7kIk)Rq93hj+uBdbXmIfS^YxoQJKw*@3mAkLZX94V-ukqGL3)SkK~C9! z!Hz8Qatscwtbdc4I3<}R1erK?a3uGL-`oDE{r?`0iQOC=FE7~hP5Hs!XXVtw(CsGo z^RB%Mm!t|q#Jh?Iy#ZaO6W!$#XR6M~UDy)f0E#zO65~yA<05#xb$9Y3;%yRIycrl7 ztyy`%)lXca^4Fae#wjkX_R+g|qCP!wTO8b~v__I)dGJ&f)4rC6L8~1nDE$wdvEWlu z&}^%-Vsn14E`n2qO$`vZBF)hd=o z2@5`{9IOXMa)-stEsclNZoBCOC@?-hCNFQZ!yrnDolB5Y#I7>vzK+s#TH$f=0n)S!bRH3~API3RId}m@2_|tsQ zo}r{NR^ literal 0 HcmV?d00001 diff --git a/images/monsters/dwarf guard.gif b/images/monsters/dwarf guard.gif new file mode 100644 index 0000000000000000000000000000000000000000..d9d3669c1b972da60d70c34643f14e64ed06053a GIT binary patch literal 1704 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 literal 0 HcmV?d00001 diff --git a/images/monsters/dwarfgeomancer.gif b/images/monsters/dwarfgeomancer.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3183fccf0afcc968f3fa67968ccf64cc256d4b4 GIT binary patch literal 1320 zcmZ?wbhEHbbYO5`_|5_NEiY^RI#N1hnIwem!gCh5L7P> z^70Du3X0NXNKQ`9R%9p!f$HMw>S{~P>YnPBo|Ya<#hz?SAl>uaa>|q`bG#VlR2$A| zsb1@4xi-jY@0{v$*^1|?v(L2@pIe%J?%cU+$Cln(JLlforO#Uw-|wCC{oIuQ*QWfx zxA*`1t^Y^CXb8|H1QdU=FfuUwXV3xV1W=w};P}VzpHs$T!-9j&9Ku>LCpIiR+%BN( zHOFJ)qNCjs##whxY+QW2U%|Oc#&gq>lan=qSH+y%wDk0JgJdrjhs|mXGg)%=A{>ev zTW1+%MoCyrQEy;X%Gt+a5YiGX=-R*TMdlV&20`tx83rG}JZBPiuZ?l>iNC)#s{~w;4_Lr(fsuh_uUmcA zg@gl}(k3!k6mU2cmw)D1JJD;|$|M(V-bwCE6BLsfKF`um`gh^Y1*^Z#XXLjZoF>A+ z7qFFqk%M6ZV?)ncacN&iCQc_`4wHl@N!I_u71I@#d|2YEqB7xerb+09C-w{#2WC#x znXsT?`tiT2&lqQ2eA390!?d7*J*{r15QB7wW=M>-|%>=7xFm-mo8ClR08&*b{coKo#wLiz*D^ZflRd(jNaZMA=z{OxqIQ z7P#`ZK&_BzTkR^3kWBZT5Sii#Zh6AGvFu2b)q?1);bKA!L#Bxrcyt^Ia5E5;-aEgi z3W=J)m<03TkdI>_vq{V1uk^PJPTqd}%&SwMBz$N$^ZLNALZU8Qs*6g^>m9v`I!Btd ztfiQT-E^p-{#WaFt21bA?p#u()BFWd18HMZr?)&4k=aZ4Q|cf{-D0v?@X|$vTo!p5 z4#QyZV#m0Gf`NtfP$egUt56D2L3166T*!wcGN)QHdayEkTPcx)cw8p#;ulAtaHa5l zUquBi(x2M!q5~N;XQ?<5Y*fcKUBDY8^ZUhcwBlMGZWlwnwqK|}>9}Dz7Oci{MUuX< zxq4z>t))0KshDfru2RVg0Bsq1kQ*7NI3McKi*7(RkA);8!?;r z4!M+UsJI=QX<9^7HKyWb3ms{&MmL!%Thmo~uAQk(`)pT;1|eV*7b!ojC?BR9x`_8B cOOEFYol8##RzEL28w}jF+&x++mjUek1MTRNBme*a literal 0 HcmV?d00001 diff --git a/images/monsters/dwarfminer.gif b/images/monsters/dwarfminer.gif new file mode 100644 index 0000000000000000000000000000000000000000..60cf3f0a790ebc353a2f1ab3aa805f7d5b24ef58 GIT binary patch literal 969 zcmZ{h{ZrEg9LGQ3hi&YEiG;Z|!=VF0@f<_GF{Jno*rtMGHzr4}a63_<>uylj>WpJw z&|r**ZRlX=91e%^q`;Cw!k8o%5q5x9(ht;m!I4HmWfvEBYy1Jde}3P+UiW@04=Ylo z1`` zL5Uo+tw{x!lQ9hb)BuKIJ>_7^gB$_2s)ph$c%lZwKw6y+#!2v$LPb7EMeu5QtcnLF z71S9sY{ra@WxuYISk=Ht1?2KzMGab)WIZ2(KaPbwoD%qT)II7pkG7i+^T1{#ohM=c z7TEaC|L=5TZ#s7Athgu|t`Tr*F#Qh=G`tZK#%{aK50wzh1Fci?xyNkildj!&IK;3p zN$I>q?<@GHAyzat=`|YqrN^(P(CPFmXOq|GZ~r#cgdl(b=sZM@09h}b>Ll436Ke&al&gnA>kLK!PEYF^BxF39eSn#F98Lv zT~Bmtf{rsS?e1bn{0MR^M#AfmR48WrOWOsp7yKW zj%&Wo>mPM>_w@GNxao#L=&v74Jix_1zEul}TxK|n$))?hyafmDvREW@J2#a^Lm7<0 z8;}*wWU|@eY>d5q7DKl^n(qNw(sUA=Rwhu!E$`jA4OMK>tt^Su1HwW#noe+5BRYOy zRldwi7u#6@VBC-7yd;(%sfrUk=>80m)nr?{64MHWOAXe&w9GQ{%nC(Cao#5NdhcUf zWAV6nUid)H#L;G!c$Gr%FrJoQazW0$7_J)Okb$A>xx%9{KC*2N73|zm)VDU^L}_?Y z5E(X1>8Ed6_tTf3>37KxmUe+5}xr$p#m*T1b4*mzf<5YS8 literal 0 HcmV?d00001 diff --git a/images/monsters/dwarfsoldier.gif b/images/monsters/dwarfsoldier.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6dbda0ee1b18c125fec8fbec42c64f50190d25b GIT binary patch literal 1277 zcmZ?wbhEHbbYO5`_|5qN1XbtCwbbNn~ed z7gswK_iU}Mwrpu>=}{EuiPG%Jw(O~P>Zy*J0|ZOYtzElz>#=Kl=Tz^V({j$z@Z3_T zb6c~Y-`o2f2;P5xzjx06YOnumTmBzg`v2bE|IhdS|IhG$6pV(zK!x82)q0cx+g3u$eFo^Fur#Nr^_;L~E_De=JJbDATAip3il!N&BniwzhhB)pt5FDw?; z_>#hz&=SBb*yY9`ka#4RL0Zjc#;l;19Lu6z84S1_S~__}4&BmOJ^6(nGlSoSEndMb z9lTOcrp0jk7?@c8mC0wbt~s7iay--RYSn)h1_x%11rEZDt5PpKDESb1 zA(&zHRTqZNRhAt|ky^K=++anIV`flc zXzVquRJa<*?(y_VLeQbGU}nF%olo<5R1{Pk<;y-e&fr~PsWwxgqVm9;#7jTZig}Lw o4EAMKbiLYd$Ex*WL5o<{i-jF(t6nVXF?;o5@q{K30R{$Z07RyXZ2$lO literal 0 HcmV?d00001 diff --git a/images/monsters/dworc fleshhunter.gif b/images/monsters/dworc fleshhunter.gif new file mode 100644 index 0000000000000000000000000000000000000000..20f0d8e8fa6ec09c1c819f0ecae9d9793c405d79 GIT binary patch literal 6747 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 literal 0 HcmV?d00001 diff --git a/images/monsters/dworc venomsniper.gif b/images/monsters/dworc venomsniper.gif new file mode 100644 index 0000000000000000000000000000000000000000..49eb0b3886f4404e69e98a67200501840de2d0dd GIT binary patch literal 3075 zcmdUxe^gWF9me1LBR9D>n%tY*8xl-e5C}=6ng9U`XoC;}7BF!T0j(scX9#fyCl<0G z;YSr3iUDL|#eiB{)K+Py?P}GgAl33?QmuA7ojutZb)|M^o^CxJd%AWvqSl`6oSkj$ z+P#0g|GekC=f2PLxzG184``aL1aImbHeSO}Q^OSPGvMZ8@Zk8s$S@fT>+S=^ZWc z`~7Ev9d|AcZIQQ8oB$7j$glVX#=;+GW|)of3$+Nu9>s;uL!SXSU)o|j)@|@t969E= zadrp?y0nWmgd=fZKiK}~9nWy!%mWt&%_KY)Wr*YzYA*g^(SW7+EW@`V*IbXtCwmkh z$xrG$oEIss|Myk%l&@C2TMWsVNXNW_A*yCvyD8A?^}uiHQLGO+>>kBSdqLN=7Id!GDK3b$*=&A}7mH zAQDmM#Q0O2?L7t=ca1q`b8<1WKW?>mvAyBKP6Yc{1@{f>MjlfFNFMl^t{J9*@B{e< zk7s^ISShUFO&J0RDo84j{UR#z{5+1V|K!Wl+fe|)UFzx?)AflM_+wDGVtE$tu72{b z#cE+in|18Fu#3H%^QGb&W}JK2c3Cs<+k|bfx8!0hf`-hHrWK;3!F3Va(N^je!14tQy;2t-PhpktoM_cR5y`q)4 zgszJ*pqY?QhHQZm%E5XQ4fbP;p)Dsm@~N#R`?2GY7<--Zn(_fLT1}scfrM}F2BZ`x zE|Vs_e%}Hh#a;yzMV=S&l1Az~)hCegpC-xDSB^2CsGz}QV6T7QtGoiVkx$KC^bVY8 z7=B@226wb0MdkEB9(3+Xxt$DTG$R~G%Ght_9x%Ep#W!cF6Xq8zi|I$-ZMr>!O)`=9 zF#dtquvfUAkGe)Ix=tzD1=cPl2h4rhKT>oL)~b7|t{?sr`~DjS-!#ztF)zgvbNPdw zywAe}o?k9Vj|RvZ)`WWc=MJ?2&5;+m>}{et){(98K34O+GGsGrf|YfpFP@b>+k0RS zgi}@7_Rd&H_)<^y3P21OF{dAuVkhrdaFNX3M8AFJ;Cmqh&WU&y-1R~n^jxxORr-6( z^jbX-F9$Z)hxk?IMNLW4;~L|J0J2KKeG6vQ4+2pCgaEY-+%zCNR!v;1Zt_9GyuX#A zgIXIV1Mr;b7CLvmZy-rq&mw;>M($_EzxWLn+voh3!NvLF!Ax?-c@2x74_J{~xb}6w zkmTKLIasP-^=~tw?Cht9++jQ}6&)dvGL6U3!c;V1OI+n1{6 zpr%CRaaMmfQ_--b2{ReJPNq#PaaC!uXl!{Q6plDyL{yX~eL5B*{kFD>He6H*g)v8$ z$gm#c8#v&<0oj^0`w>P@$#DK8HBfe54IN5j!)RE{%i1`;P*3;k!_!{F>t0(_49e<0 z*?6NoUcY)MXp@{;0EDfaT5~WUXt*k%H{1-e&K;BGGFuBe}#6^uaA#EQ$uT9F1WK|7UMz0~%c>#8Hk z&0}C|PB!_M?#`@EwPxu(xaa-*8UG*5V>aN~#rZs_{CeQd!fgn_9rq7#Yxl5l17*fc zfyz3OFn*;%8-jbFS9cd~=?T4)g`0mLZt;D%#cdQFf?E`VTN;9!EXtFxa0_PPCMzLE zd~`|JEZoFhxW#&57*0$I@4`)z!eMF_Zc)Ep`c1fXfD1x+(=6VJ3dul5qkC&PZJ!!| zni1YtpS6~++wpWn;StbhaR|Fa#^>C-DENmpQvZ*$T%p1|h@hS03WC4`M`xfKq{Uun-f*Ytu;7CJ~e(Xsq(*VGoA7LZ?VnzRS&e8*nie$M45bW vr_Hb)BuF4ZsLj0Dh|EPVwO*nC62Z0^X7flS+h&flZKh;tbiRabGiiSZ6AiS- literal 0 HcmV?d00001 diff --git a/images/monsters/dworc voodoomaster.gif b/images/monsters/dworc voodoomaster.gif new file mode 100644 index 0000000000000000000000000000000000000000..abc342516ca3117b6702bf465f2d52362fc733e7 GIT binary patch literal 11439 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 QMNVB7Vg7=r62aWR1BPD(>Hq)$ literal 0 HcmV?d00001 diff --git a/images/monsters/dworcfleshhunter.gif b/images/monsters/dworcfleshhunter.gif new file mode 100644 index 0000000000000000000000000000000000000000..b75d650a4b0a4b894cfd541ba7951462157d4968 GIT binary patch literal 1420 zcmbu<_fyk%90u^u`M2Y4NH_6rlJ(W z5VwY*XDcJ3AfQwP+oPO%*0WV>@4&Wa?VVSue?wn?!1L4dJVJ4>$IgAe$QS+n27Lkm z1R`u~Yy|r676^ez0x}ga0+b9nMAwrDWQ1YZ{sFVC5^&oCe`N6M?(QlIvqT$c;rG7& zg={@G1RVnF-C)EANtigMk&>lmi;sYFGcnVB?waF)UR{Ji3B zzF9{*F*ZGY_vmFm<)B2LMX9(xOUHZH{fi=k861=9|i7Q3~B-P6M~1p_Wnbs@Hqx^o}sP^r3fddEYNuoQC6 zSi8i4YaH|}$lViQDc&sXOJhknk&FYGL>e2rmD|rbIlfPE-ZCJc?2`*VyFB-{F&Z1{ z3;SKUE|Abd4?YZOsq&Do!N8avauiaM_NK~{um4olFta;4GJKN_czf=QZN$f7t8D`z zU&N0rGwJT`KD``9reKFPcCD={Ra4WyYb&4Y`~UF&Ap$~gki+Mg&znH_23n?aL>l$& zO59M8IIHQsQ^T|j=@Jd~P1mtpbDzu(_1|ma1=MoH!vk|o2z8C&a^JRglL7{Q)?hHu zu#8MUpJVub1Jy$c2Imq{yeZ@%cND%22FWei3sEan1UNS?`nSa1Ivz=8sw6E zdTB=lO|3NbA{nXc5x2O7!Ffzy>J+XXiK%c3KfYAu;ngOuQxhOs#7_d zHFBCaC{~VOZr7O3<(NqNZmNO<%rFV2epHRlDV(R+PAe~z*0vn=l=raz+9L0a%-}5}Z(n@EcEdmzSsx4KkP$}T*qm)~vSfqfL;tI&cGH(nKP-dYb z2&IS=yg(4JqIOY1$Aauu0xAMdL!41#mf?Ic%#s;jY?^Fy@L%k_J#WrQKIbH*Bx+-F zX+)#H9-(;w06~H>2`~W+HlPnEtA!O~VUZNTf{Q8#RZZicP)xA2^C8U+e@r=jW-0xq>E*1sMN9mCX*mAD!L#Mh5@}7bbBB=2M%9V^;abvA71bJG`9Le zTAo95=DXbQrNqeok8ZzcaNoAlxp;G>-?2QpZ8YP^&gi~iyh0C$2NcE{vh+)txryz# z8NV(YYgVZ!3fGt-vg^d-XNwvJOqJes#<+0zgwZX*3>NSM=L^BMR*r~7JKa1#AxPH& zmx-=~;O3DnA`a&GgW(Gx7)YXow0fiuCFMH62=$I1JSl?V#*EKAq3sfUTS`nf=EawA zD>BusKWx1gis1vQuCCs65ITc!STtB$LrOd$8BWUcsHlGThN2!x`;STGH&*QP$O=0{ zySuxa3uwnk%;1xwHP`hno1UOhU6J0VqP}@q-?U4UP!7wM%LHPkd;?^;Sc@dU!H6#A zL_^Pxw@$`aUer0h)pXs@$#gO0ayeH396q7k zz)5c;QXSZQG%@Qnz^Kw|uUM)y>%>udA5G3%C%Yxi`@ z|NZ0X0(1Wxg}o=|A%BEa3yBssfmk07({sOVMTXaM|K_EsGwS?F85{Xh>og@luV+cyjGb{@Y^9>EjGhN9 z)HIg;)S|<+_??@X;zgNN(}tj5mLWfZdgU{H4JF}=N2;0+oY=+|-nD0%Mxz+Z6{pD| z?LlRYo!r$TpK5<8xCZ>m>54-9X0nTf3ERvbA1cVJkX6H&G4_Yi`c7e#(fRp8^J+116k+PH5~hzD9+!z?RMzXDnRNa#Wm=IG8K!}U z4p_nrtXMNXxdb2I>S$K*27N9hew(10FkxTNb_?<`lf5JzUd}S1)q(Wry$Cx(n>v*5 zXKRDJ{&O6S=q>Sg`x$#vfSBJezCf?_mo6F=W%D* a<}RHr^v?BnmA{_5+;c+tI&uEs;{F4loOO@@ literal 0 HcmV?d00001 diff --git a/images/monsters/dworcvoodoomaster.gif b/images/monsters/dworcvoodoomaster.gif new file mode 100644 index 0000000000000000000000000000000000000000..8fad0060070c8201fd4ea18e542f791e220e0008 GIT binary patch literal 1471 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 P51n<*V$YP*fQY{U!QhLr literal 0 HcmV?d00001 diff --git a/images/monsters/earth overlord.gif b/images/monsters/earth overlord.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8e4c6b6cb27788b3de18effd519c104f24fe730 GIT binary patch literal 7061 zcmaKwYgkiP+OXH!=N#DyA%ycLoC1P|GbqXqCjn6dqK$$Y5ET{Mh!pWSI|)aNH6kij zrj1A~wrV3~ELycYfQr@jjjbK&ae}oTW^5;R9EWzihBtk`>$|S+`}3|J>(_d&wGZog z)_p(oiwZI_t60E->DvGRn4usG0;psuwj@NL5uok(WNM(7r zs4UWVNnB7-xL74Xb~iP?)79}(R`N29V*8rqU0KS#eB_CJ*0!9;io>DxhD8+#K}W1R z`%B~7E{ETAUVc^Uv#+hCB0_wmFuEd2Zk|Q|u{7b(?yY?bqT9D`^(pYFPmuTQZCN)% zu_Q6-y+8IG$q8!Syv9&l-$nk&J6ee=-m_Bvmz=o6OP>uU7Z;E(b|lc zt5z;Zj@w?h{(|H5=!KyRXHJc-n>%>2Z~gM}VsrAYO#g22hFP1kA{JX~(t;F8uUiqeL{)waA zC)#&!njK@<7~p7Yw5}+an>4edro6NErIifvq5W`eiz+n0e|ARt$lFKyEnDBO)}5=? z9bK7oa_5ET$@ImW)(At98f3{{#{ON5jN?g~SAFPUt4veg+&YKYt zx@@&iRlV<-eS1FWYM7lIfFScb&Qt0+(pfV^sqq>4^NN<_hn;QTcBo;U_lW;5Bm7rP zkOZEC@M+Pa{PHEaI(>f9Of3q%A@RS5{hlU(ng%}!f(spXrKtTjYA~+;N7L5_;BF- zbNzvNS+K6Xtl9eJ8}Zq#l}CSxzIq~0x>>h$;GLz}iet}=Piu->ggZi0Z8=*<7ahoq zBL0b0+rsix?N4O+du@Rv*sJM~op>FEVoLLJX%*~HTF1KZyd@9#KZ?I;9pT$c1H~(^ zh>xYznyu>a@yfXRtKtJv45M70xB##2fLUQ_1wBBd%S!4tFp2431Rb^9(P#bfv^ZB>rf}f5~O(i(8twJ+c7vx ziqQbVEH?~Trqwg@LIXP?@pawP1*IwAb@6tigI%v`zPGHBgf0RX*J&*xTcM{Q4wXM8 z(Tci6GkFfT=K{o~h4S=_$uUaa%A|vd+QdCkmfqYeP!=h0Ob%>V4@mnzuBA z85(C>P_3J@2BaG%^MNph1=4H}hXwQ&GR}?wdJ>4cN`HtXFr!jUsPv{$hg6nTuTzB4;*Euw(RdKJ2D9F9u0l*vh8@xZrz^Q+TNNUn(N zVj=0WH;WWgi99N%Ca;M}v5Au+!ESTF(O+y>OvIRpl1eUt9J2Ze5Ao`Re?;b&ebo>w z`tS+s3{sXPu|W6jZHOfHX5@g48ZB3c&>kM9>z%02TALG<=G%26NMMp@lv-1}#rrzX zGFP{U8fXlkQ>Yyk*U%;&3U}B76Q2GS4qpFNXwyl2?%#g@gYw9#d{PwexPzwOG0zV? zp5^{aTg;C(f^52Fvqo13+v2!T`$Mb$`ZT7Z4!NVhso0feq~uu*RS(fcX+Hq@%w}ER zL0?E)L{0aN`Gl6|St{klah3_M?JE$k(@uLRNc9HuNNT^mgY=2~nM1d*It~$!Z4shP zw~k(u77VfW9N`-O5oOAFberF!rCV7<+aB%)l5*28X!_5kXx!EY87dD5)+4Hr$ba*( zSF>0cRibr`qEus!0wJHccRMHy{`uuH(%g^y=GGx2nJ_nnN<&Fy+#Fi1bl2 z9gT_~V=^tp?`UVu5-6qLJofR9B> z{~5#sIm3`c$BBmVHCNoUbwLe-wiG&Huo0Q*fOr}w)K#A|Z|mknNA+VDY3@oO#>(#s zpkEoV?!2+i$MTI5m+ArJ8LDAG_pidz=G-QJN5DirU`|1W(J71XnONK11%mQQz!wYh zX^SUO_-HSpW5ItSCt54k-jpg#D)i_4KOwde|F&_UIn1^f1iNAESl_2F6o;@~@3#tA zHm2spt^ENmz0hD4uh2Gw@kuIp*rHOg)8?5^j4K5y76vn7R@q1ItHof6vDtqY3)Xza z4(D`Pvr^m;HL(a$^l@V4JtDJdRMs7<3x4Fp#2FU4nh~g|xUYi$A zooh#@j6^ie`eGbjzv@AiAH%^7902`BWQOBStdb!p+79gwR)lD+ips)@;HJ^5p)`C$ zIUu{njLD=%i(-mzN2UPHj>#3^IHWliiKhW@+r{Pq^s7kQ-Ca2AlcwT=hmvq%6GJNP z>;immcIKWZYoZOTu#p8313=vHV~4EIZqcN;8x}5f`s}f@{*@4+^gNa>u3^E?Q4GBOqzY+Q`PVU=3*o8UVOD{31E6Kw)@rQDw8Ik17~#}lLTnjp z&g#E+sCa6#>28$0LHP)e%^D5Zv5lM8ng%y%dA!igo&20JjAij5m0AdEx$}tQO!$}y z57aYKdyiAdRdBCL>}b;IFk!L%FQQ&2tf#D+UQtVGB~N{dbK}pin%QBa7@2C0^8C{R zpN0GAdMu>IxmY?;HH->5Vv((*P0kWaZBFttqlI)>{EqKqlf(>)rf}-+gWjakwk9%e zk&q#-6l%GU`;*;UP2a;Oz&dfSb{dFir@-!}1kua!umOueI8IzdctF&eVddKWh!)hq zGB%OmI#YK!u=>1cTw`jU8*E0Bzs&j9BNeAqO=7vg5>&xFOzs&``e@8=t!1nldh!$G zlnLy8+7T`W$~YPX0RxvOX36V2SpUIgRfyv_MD^f5i;SFaC7^z-$LM0aC7E_B_RNC< z%!cOnM8Y#%%VkP$!D;@_;PiSZ|8Q33*P_ps)`HEx?m9Nejbh*#UZY(t$@oz2OIbyi z5^NQx?AYOfoKK}$08tnNKark2y>=_dCzL~YnY*%>du89IU`mt0)^3-#7MfW9=;;H) z;&R5C>QW*i6;NTOQFL6YsBny6-!qll{TaC6-4E6Gwp)BvPU`5RzvZ+>;1;d@B=lp^ zKz*`F|6Rer#MQ`Xt@)ir;15#&v&h~noLkO7R+Zz2&?MhK7Fy=cNkTv?WZAS2T)b%G zK%3YxNckE@u&LQkh3UW-9ccE^bOA|WxaxM#$oPpd9M1zmcbl%o#~(NML~uR<1NpLX zwv~VX(Cccg4#V=SVRuFlK+gnOiRP-3J&)5KZ7N7LcFgL%waRC}84|6>f=f8)O!bfx zoHC2y=0%~lMlFkYf=sjj>9fv_r9&ruq z1ctYeoI>mKgb^;SWb3ei2Z&}q!d6nzj7Yx#2ap6lb3Mpz7QUnfDW$?#J67WO11WffyK(Km!f*2+cu1JB-y( zXRY9$Ow$6UX^9I*?GS&4mV?M52F@^HP>*Ohfa{@p{U3^7@&kGp#DEKTku)uKG9NTL znitr`+gvXJ2E6J(-c-lPwZslPh_h2MMq`=>`NX$%_HB8PEjZnV3HUux3|KWizN*#& z7QPME8QYdKFo%aZE*!HXzu|DzSS8IO3$M%4tH?!kvfPGKCMB(}q_y*Jd|pmzi2xh= z5|6F)7B+VW!61RC zK%lpb^*IMfJN`-cqFm!z$RPh{O5(Zb z@kiD&JN}9mf3ID0kwZiPKVzEV{Bl*i4k5Kzm=U~5RZO8!4d7pFC~dOM8-S5KtYWaS z6SziOd-e-*Wa-LR!YMUFX`gL_5)U+bAZc7%=s@a?UGv&O2@4xtB+Y|B<0~RPOe@ds zF=tzqKtkic)Bth~5YvJ#wmbYdgm}ej*X-xdUu$}GM)SCD?S|JS3=+7$lW@g6dSne3 zz~7>5O^>_%*!k**RzeSZneJat9+a3mUlsHa94PYzPu3se8j~&?(aW^Iq7-)11fuOc ziyT%~flbET$?*dg79$;mMvpU(*N;|}cWe*1bqLQuYS(q67J9v(zU%#8-w?QwYz9J5 zOLLf<2W?*+{pi;>0NX1vzOsVHN=!XxkM^FNcmw`8_lsDWcisPW1Fr}`uLflQKO&&B z00Jp&a(zGI6@lV9ieHceRH{G>~&Qb^wK0Zl`jYmf?M}7$+JdFZ>;^f2Z;d2_~mz!(3aYCPrUNjA<;bG3q&URH|J53kG&D*21uF7ck%vULETt7r0!KPd)%j3zFAMZ0?L!#-JYtmQm+X~b- z>!xu<2XzV=pK+q_hfjr7m%=%D@zA-pFsS7L`EutL@BD~iB|dsL;&;5vd@Vf0=HLmn zR{O4~O3$=Fp8-dV1nb*A-qy z&t-mRblUf!(J9^d;cF}i!E9WFCfL+b*Zz(2}8}B26M^nlzt(gc;?#c z@&7i!dm%0rCy+KIk$04oYXtU{SPF>P;65u_X?&W48^C1y9P-l7w12j?*XlQuw_C|& zE)y$#keLV}6oao;K$9;bxs+XD#X$onp+K9;09UoxuEKdv+>6-4SyKQTtPeBixxJS9 z`nGT10qR?BSj$77F1Ka&7>_)U;6+}E4Kz5(5Ej5tzAex-*@~%n?Or49)6b&;6D?pm zMQ<*?#baSE06A?J6Kuqj9ZraOFSv6ZWck3DkImg2TvD|ft7TElZVl)+R>w!OK^qNd z*nts$61ys=ZnvXat0dNAMmz0@pH>$BHS01Lx+ECRP?W~%GvGnvm~dL0VKcXL-u4^= z8~;%X%L+LZ;KksiA7qa^iuRqjvNry8EA_|JgitSMX9b6n)J%3+VM!Oelw> z=nN{8sw;~^e4tI&LcBkTdBZcKL$cq}^%EMFgQRO&=DjHqL#Ru{Z1RPreU*`u`OI`aO1yzs}qkiLec#y zVoi@TxY^Z$7}5^bjf{yL{QJJ+te0+)UxIn!t(O@DF>qqWYn0EbLAo0slhPafDDnK%HEJdlZL?PXq- zkkj_&-&JB}1SdJXlg!w)o_uYb7nW(;BJzv}p|J{++uP$*ZX{+3z(u>vqMi}#Zhj%s z$|5q=@xFu_j=r+x_MG8u?c_#QLC|2XiKk-=A^wZIvmtbH5UnlAT5DU44om>U6`<6+ z7B-tE(WqfgJ=FqynmI_id1a-RfV)Pf75`^0!lqBXTJ+ScuAuU2SVZ!#`q*VoQrWzVSJ&%9Yb;cR*_xVkvP zC~1GWK7mzPWWUkmDASLIO>we92FPsyZa)LwKv^-)tf4+jhKhT!MEEV^onUH2HU+Hv zw+|i-|IbDc8E7tU20-BA6c*XO*v|W)KxLN~fq=yX5T93B5MwCA(h>wCEP?&pxPvA8@zpDA<+4H|B3l_Xz<-L-Gq+QqlrlhVhd*fRT2^0@J;e>;Z^fexd>j>V}kh0=orh=CZH z@ISEqX2oFv=QGE2)cMml9MV7J^S9&9e41}g(VW>CIyk6UX2Z8Pod$0mat11Z)K6;v z+p{?=xlwP;pPGyN7V46(H!WXB*cBzi2yRffGMas&lQ!L~nV^{(V+Btc5?l#f3~%M2 zvkd%q|MCN?JR^U9&Fc^4*=E$4i2@IWT1AAUQ_LFeotx>;Y*RQ3%nJ8LN z%U=pl(?5P}Y!N7+#QYW)_k_4L@k8=klcW0wk1{QWJU;X+xH8T5orVi`!4Kh7)68}) zM?UHMHJ?EPmMun`2s<9B;l%$u^f^Z3V6`!C1A~)^)lX9zKJF97+C*V@1r0XQXX$^~ zY+IcB4A#-`W4iij&GI3{_kly&<|6;{5*@d+H2yxgn22w&?K$5MwwSO}+#ZnwM48MV zGa!xGfpb!sanqDjn(6Jb6k0FV*|-l>l8#7 z2i)UA(~X3{UM-lmgPD#U?~&*lnFI1hH&$-Llok-j zP=2;m3mn)550E)Pm{BCNkva7!;sM8=bp!!KrblF{dsmmXZqSGOB_TE*Nc8a0ktEyMg+R`JlcLsGBiBzX4w z%HRqQ5lj;~tf0h>YdrN)jl8Qa*%!h)+_ z{s$8f9`+OA`tnwNWr>m0+HuGo%zR8)&jX9L`MyDIPy*W9Aof5F?R|)~FEXkT7de|r zY4cr@wE?JEB*_Fr)!;u9ht}2t%0b+^UrD%xv)H1gdQe7#6~^*LD+pu&t+mQitpZP{ z--#pWr0;3~m($fT{E=)MYVm$z0<1~FE70F>BKiF?1dH}3VH{TqNqKfAIK z(#x3rT37F9MZU2RtV##bZW-<%=;)eF`Xdr|rB`@bJqI5OeCvPhtj2npP96B|!doxC n0*UrxcQ=6l>N$e_wO8~%_98SMQ5)Zs6u<%~+!v5z0s#Xg5Fng}v*C0S5{PMv2~db~$fYZY8Z;^(>P$i;5Y&jM zs7M1M6;uosDJuFT5CuG1?P*)PV@cG^|w*AeqToxZwYsW0 zIl9Mw^h8HnZE}=4GGu<*y}MAO6#BPpt~Bp%=*(B1JkZ!>G1cod`Kig(x)03i%=0I@ zJ{|vL*ZTYrFWS+4d-7vM>4E+yOEgWI?4-be^7JH4a{PqzYH|S7($us`t*9v~Xx&k_ zPnOiMal=U8*^DruA~veNY(r5_w&%|63!976{GkMY?v;@d5z{MxPPOP1ySCQW<>l_r zNzDrMMQW>WPkve{2}9%wyA)}o=N*|bkq_qQ?|eFOSyF9Le!C{CG*A8GKZ&I| z@?D#%Q~BIr4XJTbiY5c)w@n)}Wj=jBTkk;0MM4e~I7DqJwMy=eBXCqG4!9YC9P z-MMi3RI(r2(zshG3Tntm5M=~*7q68Ic&BUhX}+B4say5yKlI$Xk&%+TP7dD~A1~Fd z>+LvHvN}A)mzEj8%?%Auq$I`ru_vxv3gfc(>}-HV!Pkb)NAdklIjJK9j)o%b#WSb0 z;lZEJ%|5z!S0hcTON4Z7F=e%m`82ZDGmDpbnR)>?FlU z>9b15JNqQ)pnl!qIYQgyd(A_67UZDK+NMSmzj^$5v0Bysw~g^3!N(i74Gj+7KGXH+ z`qjCqn`H(0`ZP)9PR@C&>5vrKkoDd~b4g8E$?djHdsJ(hHA&;c7X~WT2d*)uCns(V z4@SvCiZ=RueZ%HBch0VkvUl2!6s_IXBy6tOaQv=ps zH`~4StejVXl8+bXepHqlzsgS<0PWkmXa3&Zwz7h@V$DHSW_xYbyNrc@5{_;q7`mxIwmX}N{5SHL7p}XnA2W(c3cNCWgBIe{& zW6v^n0`^)h(hcW#FFhz;U3usJE7~3+4}}<`k|jwUtBW_q9h)ko6;OSjGb+f|1YY0+>HtTn&H`2_FqC}#53Ssrp<4L_&;C(~p8*_t!{%)EvjIZz zNmE00$V^7V{peZ9kQl6E z?My&WFldV$4+TIK3aG2)O)Cu?e@)1eOEEzB(c;ph7^u*$5Yl_AarEtq1h|k>AgAKH z7h!}*?m=dSphWf{R-wlT;?8-@~sX7;v1cU#%Ro5hIN*C(&0SRC`M@v`TN^<#;olWEjB3l@btHbPdLt9~Jvo zS-oFTV_Re@YR#nkPg%yi zfF`Dv9z*fV&vyCv_+xKAr4(6F8!^rf%M-i@6AwX+ib^m!R{SN*o$Rrj#LLoa2tO6B zIRPz;9QZ61^92~h=ecS3UFOVqjOehM-sVXNg#3;3P&fle zNp;M;R$rrU{AC9{)nx(uDiAu)fulWjaeM7JGUg%~m)&7mu55+}@J+GH7giFO#F+~+ z5>6~<)h$?^$~fFExrsJ;SESD6e< zG3w3JnPTnzgm8(4(x+!qA(&EPcpmJHv~p^M^k@md>VpBbwBP5_WNS>7lg8$`DDU@R zARnbiw#eyC%btiuhegJy0@JbTV4;(U!=@>X%P`|JZKfZ9uu3ZkS^r+bh1E<0^{^tH z;UuKod`(MPZUqPqe1rxj4-2w6`SU@6&U~oMh>~|!P}gfgKLOSj*MOO|4mS{|$Fa)+ z+ipEZ+deMCos0y0#fd&jUTaF>cPq2a-44Q_)WtE3Md>szfR~Mmh#KUmmj}b=@Mip9 zIKfptVYFf?42fBE&|?A^dYD=zG~t&x;bAHuuFvV6!N-8(dKdVxg4iO#SmZe+`zd_Y zbNw|fM8FUA7SLprX_Br7h@d^hdOeoT$EgTwV2CCku!7-BlM`)@Hb>zo~{ z0F0CZ5b+OZfyloW@OcVa6o7m?wOvMc@YX^>0A08N0XqQ@yd$P@FFHuclV~+)N7t>C zUgy+WO@3L(p)(E~=bTba6(C2~w0cN6R+Mm4c(kD=`+5qO=sN-+aYpypd*a|w-Z5aX zUrtT2cleoXPz~TBo~E=ziV_M_BV(_~T8VbV^78wIv8YLMXd2iN;rbGn;%Wm1r~Qvx zJ@_3I60`2z4GF3)eymh5*o^>X4k3nXw?xMXydzEHCS{Q0H79WE``VGaNo)Pn8SCsh^HZ zzLRRL(~#hutGNkMkZU%Trn6=DgiscsNk0SL=;DyADO~jnSN)K$K-=0hggzB4OsD;CiCoCU5gure4L(cTs5J2-0BzH|DDcw`b;dbZR=CF{QLPhtG zk`7i>D%H#(LakD%)IB<>yFT|wr4rx1pYK2L{q6mD{rG-7Ua!YHL` zFO`uu;@Y!1@+W6zTgvv|p6RXmk(?-uTbG{xamZ-q=g-$?)m4MXBXi@{tqSVX4(->R zxKMQM@T1D)y-9&yi*v6W+|iogw`G0zf9{_-cQ)m6_UR|B|GpVM_V{G#>5S;|Jr{?r zM&|5Z?#69+)=<@3u6gtR)7!UiG@7F?E0dPu?HN|T9o_uq{_sLy)~Si(4~hm#D~tBV zL`CIAHNUz#KHU3h>hn`+V?a(oTtj?Bdh{P>bN#mqv$w1Z+!OKT{>QXy>DRtq*?DpI zkq57S%-Ain2kL<6`shn{E_yiH zf1MP*sJOVl@w79~^GZ48YsIG%Pdi6uW{U0=*LOE$v{pp;FJG`^asGqswl{6t4wNT^ z1#drS^zP#VPa+#H@ZEC}g^ok?fDz{c&?{bLr*m5R%xtmi@(Ta&H_E*Q> zzL$=>xu7o$Jz2dZuunJW;NVvBtnlsZ>o;%S9t_+6x5oSS^xJ~VR})VtOzh3`d#j3? zFV=V8b`5k%QXQC>dfWf`%ZXU!=CdZ@4p;><_xo4;zu#vYyy}m-9-eES^@$HWAJF{u zlT#VHWLRpR7JwW`b?49*eEE0Frqale!c{4klgiqTj%L1qFP=P^&R>-o^z_Z!t__;! zKZkuJo{MeW3U6I~WJGjc!*&bi$9jp^+B%enTa;#_&njrxw-Bbt-yFuMKt zpKsESeEB+>ybaB+H0P&voPK=R40;WSp*utIj_pZ~i#>xu8MX zt~z!+Ye)Y_{o{|1BP}d^WP-p47DduOJ|Fm0l2lf!t%xqkuV`wHK9OD3bpEJ^)%*}< z-Gj$BhWbKk0^j#VjZJ+?EK2zOz+M1wtWIjs4u2ZU(_HOtY<+lURP?O*W3zs+2Z#d# z_Mw*ti4*b;001yIH)k_PTMbnW+f2 z*nLa?Q8bGVy7usDBMow_B?@~1D-b&6Oh1cuNNU-U* zFjIDw`c$IIfkSy zv9EfZ!!&CwcJ+hnd>^fHTuUm=v6*Fwa@Zcw1rVLq2o%^wupuJyOUSD=?jxl7Teb&} z^K&i#%H(6rJZDZK&E>w|1|7paM|&(^QfyWd`bS&~JxbLgOwyJj-(Z5uE>>8+RwW}i zHmTfl+{~*s=a=6;{tD?pAe9u(x5)-TdrFE{V0XWLPK0qb6RivZHN74F#^nZ$heJ9OP$I(k}7+-=paLN!sv%pil`M3V??>XgXfaQqin(1@&8$=%I^C;A$a zXPcz%VaIA$f}5h5fU{NDgp5`Ng!CCiAo*O|Bt#F*)^=EOTa9zsoMF#UjN_2B&*|&x9SU;pJYdYF z#jdlwBgrwZn38Cys z3%VcBWwX*E2r9YcLlVmc27awt4bZ9|lUrqQLk0oa%85?0!H`7ebXGq*?YHKG>l-r! z>ZKHL{Ile!4?0>y^zKp^3CKI9c^1(f@CXeuBBViYb`{J0x?+GNA%K;rrJpUktmpdG z_Bv&rsoEB~I^h7~yB3RX%>_H#c%+?Lsfn)*maN?fLhkz)an$n`azTbh55x#T?7~K! za4w=sx)JurtLXlinR|qRsX9}%SVj*U&c*oFf(t2Xd&t(K_FE^G#O*+CoFK4hAc4h_ zqlshWNIL|GfX7TL0AgCS3m!4uY5i+fSSCueYp*YjO+iC(Ysg;1Ad}{5bVZB6!>|UI zLBUvs#T-DDgfN*C0D2$@=!%pXS2G-!S4+XJwHgBYR-rX8mXJ|}!cbh12d0ryauvkv znSkv`$TAnHAI{DO0E7AD@B|G03_vEQO_Enf-bI;3pm? z18c_?!btM$3T(}ZCotDY@&ApMU()DZBBaZ#ia+v9lY}0D}ZQ><)!D6^S1i210qpnZRkY zNaTF3%JaMlV3e39WA}EzH9OX`{KA>du1sM7iLTz3%Pa3vVimN>!HH^jiGOD^!1d0uc z3?W>K-%w_T#q(1oClC>1WWsbTksjHN;9esz%6X{C;jXQgqXjNSwXISX*katF$U3IB z;D`~!#$)6t36k8e>~gwtO-i2bG=d^?e!V=`nG4|5-SDD(uiWtHi@>CxOQ2n{jGF== zrv3PyhtrVpjUD+hs(AtJO3tB35O1(o%@b^Z!|8P>HQ>)r)n-G}f_byko%mM}lANY9 zwT<8tSgJyN^aQx~*#M>;${_&|@tLx6MMN^0(Yh|-G+lt+#s2&2cLBu+m^58YL9f%v z=E`FPJlrEKNEh+|SoxPPt5^{@6>FHOLjs~ug3$+c0a__Qn;aN%)jzau5w`ez=O7@C za>c`L&AeeXW_Qi#Je>xIPUNB4`VLZ zjHajn+Fm6N@K#sYgMJ>4F_`$fqZT~Yt)_W_d8ibSellql=6#DCH!axsBV6G_(E<)0 zV$@dg@uaIkAR$3UxySXjr-*ZfaWHweniM|`1C9(RrlogJeOC==4vm7zLVl8a0Jz9w zgt)OW$D~n=4;t{&((kre<9N8N6g~yQ3~WKI#j^B#0C|TFvQ2vaQ`&kI@l4fbl9-Hh z43iPKJ}8?@wfh$rKeE2!kB`s3;eY;cxKZVJC&jALnDDE|E}P^FcIc)SM_P_;htsyl ztB^>i%lPO7e!K>A{V6HB#xeaH1{$5JTq_Pbo4hCUTOig`@!OfhT|Z(!Ur#&)0O+l_ zE>b*W+ITwBooMzW-gp@j*A8RP0x;9?Y;C*kv73(Xa%d5+n@Nm1l<&Hk*WK6I3ySLv z0~&iMZrXMC4z8H^-ZSve)-^w#KAZj0cK7;!Qh)ye|Cc!E{|9k?@~VZ&wLZ4SPKhIF zMlX8~QWxzU)-}U7%glI9Y}N%Md{!O5+xyCeH#aMEyOu#F{Zi*O9!WB`_;?8+%aHJm zZBI=Q)zXM?sG7^ea+knb7rmb1`ovLdt&W`lj zt6Y`8e|3;!`9Yn-I+enVv8u6<I0~X_q0FAIH-jz*Z z9bQOsjUCqs9nTcU5S&_4O8vR#p@q*F2bH5_q?I^1&%&2tgSA>0JrRt<>0ktPi&7t& zPWtxX7S~Hshb)RyZoW;U-N39`dMZILG|8QQK%@pn*7{>D8%O!b)Le>eK3Dj%$HPJ? z!Bi5AuzuiL?^1%<-pon7S)A{1fMWv5&ClfT=@vPe#1buB9OhjggriQI;Zc9+bs)A> zIL8l?7>y$2fLCy>gHxljj^MPGRWEfo@e5sU$5xNY5hU#x&pM))KWK~;CTl!O3Y9^0 z3l6y573YtF+35d8QOSQ%L~>I&+=+{UeeyqW@QZ>u9f#*}tHd%I4D3Rn-fNW~2^Kmg zglJ)AP_E-}YhlbU83i<#ngmT4&Q|}DQP~uqK>bq(BkidWh;xbQnh?-T#!vMVo|KOg zoDuD>imMlSC(C?t>5O;i(tVquYEMpbkLe?PM>mB+Gs2=4YU|XdFCcxV^W{kRE|Z0v zgq_ZL1A})~Gql|VTzQoj}I{BcSZ_DG+^5sm#R}o}FhkGin9r5tnCzn4P`q0Gc*$1xszmh|&}`(-<~kX*YtjCt@8p132|xL~8E>gKj&Zq1%u>HZQ^X)Ksu)l7 z1u4PW&WC$d=+S8bnH9+^8!pan^60W25^1dO*J7WR)FD;+(0MdTuDia|I$~Ua8-kFT zBQhhOG_|SAD9Z1Z##AA(b9gVtGhZ=C6(8{+SyYJ zbh$FIWWAJ(0$?)*fV={|#NK28>nSm)&|ZwiPb1kDhAtwD^|E9mB;TVG0F@NLxl}bL z!?T&Gun0zFl}I;E^HD{`&$g^~!z^fx(vY-Q${wja7Dm4&Q<4bPWOMM`4 z6`H&F)F!&dd4U99VJxO@V5x(H^is3lu+<(6KF&(Kc)93~by{?%`+JUeaXjh>%oxM~ zx`W2!G1x02h-t2tgOPivMf6Uyw+kK|{w_baERshT7lSnIVw>5>4oj9Ym!bpy%H`G2 zmg>+~>y86-J%~Az2(KCtt4=M8WwgI1hfmuYQt7|~v05&evq7EhA6Czcg2`4>$s9X< zj?WUEp<^5XL=E>CQlz+8g|6u+gi72hk{J&$DE9h122&T6*~TEbH9FVLgya~CbOefm zPumwm&&m{_#`IV;B-+1hN>0uMfLnq8;5H>JrpTND(>8ssF(fe=`J9JVLWG4?pD%gg zKs!$W$;##tTE8o~7NZBL4`qbiI=NY+cz=!waBWqBOq?oyJ|r2ij^#kWj4J}Z=M zVD^w2vqTRVl7MVmgW`hGP=I!?G25)%J8!ps)S~hfykwkl8A6R2EZD{_wACGqC@$TF zZbTXki=}oS0K=P%7vjKBfY7#nj+(9Lv2m2b_FI3Efkg_`Ut?aqv$;nyev0i6pfe$! zkpz-bZ+}`(XhYIADpH(p#NvarW;d(uv|8_g6bRL=ivb@daitQ(lH$!+_bRY{Ylgq5 zEgiY?M$Z!V*_&A;RQ$%d-NE`yd#`S?*J=D5$IW1i%Oq{ z@I7kSQZjOT!?Wk98!y^kYZd zdjVolq>Loe7P$Lvoc!%b8?#5L2)hd)F^}BGZJc&IsCjNJWq@3v_MvI>3+C*2lP`VW XkD71SzN*PL^m%J$#)$R|!0UeiBR|RvlROzo;2{u5!jwRO1S5ty$Y2JBfCynwqoPd!HQ)rONRdh=LO|3o zIU)u`MMVXwRw?#8%xF=dwUoBDjpC{HEZc*vr;5kM>s|LRxNrB`ul8Es_5JMRlq6BK zS`5VC^?Oj0g}J>4T#!Q|U+BgR^a65ESRb<9nf#5ty56CJ)oWzAV#;gUwTy zl5d;Su6OrLPfcx=Le*;g=VdOJMbMpUUNkj%qW3;Rf?A6B6*>5V^uk-4T|e97R~QIZ zE&;ox;GU6*$6_y*g6`DF(fzJhD&qGifP&?qITd6CgC$7lO>K&Po3<%yX=eboKOf{p zfW2F?CH~OCRbY1!Hg>`#wz}B)UVAh?sL*SuJW;KLRw-3?hR>>%+j;m&-=a zo5ENi9T$G32wdF=vJx_z%b2MF8TI8mPvwBl4d7%$>%^_A-{^6j*`VAXst*O4HKYO} zd^iT=gn-+Xp)Kn#cdDV&X<$vII9 zi=6s`X?s(tgM}`;2+OW)cZ|jQ7$Y5yY8>zMZZf4)E27*#NecWVn&RmMxD1Xvjh?d( zT;577$aMTD(f?ou@vGA0HEug(Ax<3vWO5Y!tk_?*!g02llL;gGQdVbf|4pU$;dNxd zqGbe=&uw2)vB7(P6serF&J;&#Dd{*~%X@MdYHvR?s{8bYoDM>{cDo(JBxeSCe7@81 z$ZFc1tt117nHk}Dx$(r&WGVpQ{rmTv_YUcaIoUFaA~7^rh=o2(Id(7U-oovB*!v3i zXxPaqN$gd-$_h8LlQ*kN*l=oN%4Mdlq+=-s{ z;Tps*wN>8RF?x{U@z$?5@e@iGtO951#0gR{=0NWt9gL=W>uYduU` z7_}|Q8^_!+4Wj{IJeEwbW$qiz5T4)o}*ODRkoRPl!Ac7KN zbiUHxFAd5U_14gR!NM5xQnO-+Eh>T2#>^L3}9ws z7@k)BUBM-r))3(KNMB9=aJ5A5+_?n;a4i-?fUuy|B-tPJ47u+{q$DqIxYr>-Ld-Sc zQjk0)cgm3}I8ZF2X)m`S4|; zBaw}$g{`rO@tUUV5Xv?PX(R^UCP5Ltf-{b68Y#Fp>bB@|pAxAk`BD%v;QS^I@23M1 zx@_4XlblmBy43A@iOiEw5Hfg-(7CT+*Sfjs-Jq-6K3+*~24%u%vlh4XqBu)Tfv-bD zKI=xpwdB28_Be$4ukKudHCl$KN5W{7pf*Y$F{mCEe#ssb{V~SNpR*X4TM9TsJ}$>m z@TSKUSm}#*yOkVI1horsTz*Q|5CaeTJ#*LujrlnJL9t1wgLe3vjnuIoLRcM^;#PZZvEbq-*|5O+i0Ez6o`_zFYm-Z$ zIh4p1u5xOS53+b}1TT`16^odJkLI1E3@dFpe7Ct=)!PYlxNXW|fbTK+xaz9{g<2>{ z1u3+7*$n_il!%^X1~6MG69k}`cnTo4{z>piQc-*tWt1gzr=A5R` z-lU4y+Xa1Egr(sc9rYs8-qJu1l%aak-vXDL|UUrr+e94`bwr)380>=Q8QGC%<(Uw zf%)zl{dE^g;`LJF8IMoNCLo8rLBa+{l=ygH5Esn8M)!w~1@{_HmD&tWIX28|#xqi| zLRa*z9j{%yzpF#yko;mNVD)SkY?)^Y+1T?Gjs&B$a(A)M;%A=cg}++|`OHBeiTHD* zy^p$WPacpJkA(I!*ZA=;apx^q?u4aof7%TW_e0QTu%x94Qe1Ar-6Xk!tmY;X9h4~2 zk%?_;d+6}bHxPmHmUaB5j$EIL@eL~RKtoY}R4vxIRcQFwq$09H0(_LogpUmiIW3mFu-mxL`|~w9$l&y!L&B+Bm(gg2I++n zQfl8qpyN|5t^WrDdEjnMXBX;bH%nb}Y;cfZUo=-V?1={(qZJaT47twb+k+2(hLf

y{jUshQzy{pF%wHw#3l<4aRdzNY>pymayc zY%cno?$=g18cy!Wy~^0Jv&C+tIKLZY|LpuczTxKaaF3OUNaT}pfVT87oTkBhY3#W~ zvC6r=|Biw>Ea)*)DE=OdcKK?%6aB&@vXvM|eBZmL=ZZ{-)!Fr2pYKs8syREU1O0w* z;|lhvVS(O1eil`R%8e{r(8EOUd!p+fGv%BBI(rU$;~1uk6&NLk_ymr|E?V|CE7*iV z+>v@`D~n8LVX6X%GBBz~6t$2^aUjo~9ecg-Alh-&4 zeT&L!z5vSxu})e>?I^*=mzxd2`Ddza!2hQO@FUF=)hax9OaOSusg%7(A~zHwvX3Yj zYRAt}A2Cuz(nj4&E#b95hPMR+l4T@-NotoskpIlmA_JZc%;f zZh+_WA72}eR(U>to0SVEPgrpB$SE%%DCxQ?_osKij(L^miSTnhSx>8S|8v0jswHT3 znf;sa?YU37+>h7i$O-9E3r@>A!=E9O&_6mqgNgI_Li)1o<`cx^BboMEpl$olPTklC zpaEgG5&LmG^X)_nA*3EBdt+C4+;c#K829nU-g)m!6e%}37*Mext>vg+ET(}%G~EGi zId9F<4AL}evi^LzHoa|=6cUS-kb&+qwaugDPm3gjCy{prAq-`qd z*K_*E2_%6pdRQObt9HUQt z6{+vC>>huC>hbiaKKfEFojaP->aJ!yfv4$FPGhZEvj!x(C8Q`AfyM9!NF`~5%bDHbX*SVzt{T$7XUn?$K9R<;}5B~5u(}y z1ja7w(`v(gW}+a^KXtXDTROL3(2wj)om)-Mh|G=h(O_G$^&V2EjPc8eK4{N8Aq#LYC!I&2J^wYt zuArCyR2##cbssJ49r8x-BAMvT2Thq4@)xAZm~s?e_o#z|gidpv=JME-56E8b8DfSE z7FM8MJuH7Z=ZB;9E5SpWyr$ai00_5LmB%5*reYV_`@2xaHLa4Kraj_CubOUlV;+Aj z7`W_?8KdcmmlT26@?ERUzqxZETt{KvAG!JWj(F+-%`*g-QLOo~AW!KLe($48o+}^>XAH69o!#(#5R7>=_m0?2?hn$urGI2YqD{Y_ zYQ@ND11|8J3%aZb^I^6N^UhI!XpMELJ1Y&mcuXD^FY`zzzgkv2{h=2Z2RAyx8A+aLpJ04O`O8b0s?<7R{OHRsz*hI) z)zI0R0nPdu;NfHKuQPEeAno)47iXbSM~HB-V_Q&0?{atWuddD`jNpLGeLyI2!6dY* z;jh~u|B_7Pkk;kvrTrMK227mc^2al7APn)MZBXIo4{kSkdgwp-b-N4hcPnX90r9|G zD&tNQUCJjk7hg3(E#p&YhLgM_TI4t*mft%a1FwhAk-`SYneNPJ89wpTw%Ea%Jqzw` z?lZsM*l*ulZ|R{wbx^|09c(e<=ce+rE^1u6LWy|JJy)>LE_a5Gj2@7@S!?-CazwLzqmgpt@8J;$3-t9{vGi@fe*L*{OYQE_v)YIg{s&;j}VDK G`u_rj*}CPs`o-89THVf9bvoPA~ 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 R)UIG+$IqitXh&nkKLAKa4vGK( literal 0 HcmV?d00001 diff --git a/images/monsters/frostdragon.gif b/images/monsters/frostdragon.gif new file mode 100644 index 0000000000000000000000000000000000000000..50aeb05f7a77e90dcb68fffe2d082a53e5a561c4 GIT binary patch literal 3475 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 McgVvYRwN(*JFkuE0ssI2 literal 0 HcmV?d00001 diff --git a/images/monsters/frostfur.gif b/images/monsters/frostfur.gif new file mode 100644 index 0000000000000000000000000000000000000000..d24699972e7f37468319556e8a11a258e2d21363 GIT binary patch literal 3322 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 xMTJ0>uOUUGje&oZ8wA!{8I4tnazX4&h?8pEB literal 0 HcmV?d00001 diff --git a/images/monsters/frostgiant.gif b/images/monsters/frostgiant.gif new file mode 100644 index 0000000000000000000000000000000000000000..e120cb4ae515f32b3b44ff3ad864e1ab72f67590 GIT binary patch literal 2999 zcmWNQYgm$p0)Rh0uE|9dRJ?QXf{KZFiA0Ud2ZEuZSyR)(YnEDQ&77G-P{B*4W@XEr zp>t{J9G0b-*(YYB%a(3#b3Jv2uBTIHb;9O3$938~{d@ntf8IAiA>(h&6#_!wzZ*ct zm-iS62dq|WsU#2p0B&WQ2QxA-v$AIHdt+;R@GhMff2U9C(TKvP*s8AUb9Y5in?K15 zU3~aW=EccUGBAsq$L5j#r!qY@0`<6rfko4q~~2xXUEz5CnqCkl?w&dQc!)zv*E zabFx32k$IPXf$8CHmTdrrty@O%HV8)Uq%#jf4u)?{r1x(f&_`uh2pZar0T%%&CYzm zM`^rpd3A&$b6?IbX^>A-&xM0|SsxUZaXhFob?0JEPbfp__dB=mY#V2}Ql_t5IQzw= zC`nS~*!6=SR(rGgXe_Bxz-zQx zmJ{wf*_{+z+0&L6rihI)X?R7s#Sfb09}8Ju9)nWD=-zSp9B#y9b5d4Dmg2mnHH|ad zsvH>^Ik9I;V&Q?!`?WXpvX7PQvwOnIY7M$w;a%rqu<$KHzLn$q&Lrol!fx8HmfzIE%%)3sDr#{Mm=d5G<+50XWjr{6JM3!mfeejGwPzV6n066dY{SiU{z-<5< zo4n*^(~KTR3C^~fduI(~R$`BQv~RA37IEOQb@cPEPtqk71(M7Ca3@<)o6B-$+^t4( z{`^DFdeRm2kH}s&PdEoq&!pQ{(Sa^?XEto+i$CPEKaeVdYh5Ln-rk^{KAB@r(5Rz7A zRm6*z5f16Cv{m`j&VAr#H@^CcSz{zO&8N0$n2Y>+#P=@g8xwn3A;lGqar4 z)2=aWV)U6(n%=0I^<`J6+@Q?UfKYcWlNb2_5c(FF0!^$5(AJzs))-s|sgGCE6( z4$C_YTb~KTdrI1_}bC4=Qz z6w+S{S|l+^m6wC#L-Sbd;RzjxMXrUzlviU6nO}#I4*G~~-`(AWWy2-mw_>`UaRWw9 zBR4D8%B7U#>{LAV0~|shuPks0CU^}Bt-ypaw}p&cUun5DF&wTZI8f6bU@+$TXRgeQ zHz>lyJCr1piDN*Nhmi>VT_!w_!dBJ8C`Nu09PaZlR$?Uo8@_zU>356yu%a`B-qIj3TON-I*XBGTAYoQj z>+UxbVxuUGcr|uo`L%21+Dgke)BRV_gy|!e(Xeat%&X*!V|MFP2ep$H?Ron|5yriX zIg*uRW1jF=TKm8sxTT1MySsZrEfLq2I!G&p{osAK7fZRYGlA3IK;mVnXYik-OiB2i%NCfLIPg-wghNYw>YFSG>o_ff{!dZbk4m^E)9Y2=UGVpbcDzM~VV{2Ag# z0Ub&FYc@fiF6RWNYQgkA_q_cm|88}Ihn0y+EY`;#=(x#SM}SX2$1%!>kwYBe#_!AD$opgo)H2iWD|n8F7o+p2|~WpA!+OFal>R>z@o+VgkVO1 zvteao8?}&+=0=<&iJv1pnCoH;tTIGWZKwt|gu%6gn@zpw&j&((va0N@FrF&HO3 z;+&8`W=jL7MA#U68vZOD4zeC;PPdJ0s#ewG9xZG%c`JVcXIwUuv zHL8b!D5k@p!{|LUpauuDFbPLL5pw&zeaR5TS(uEX^||!Q=Yn(#Xz(SB!DqnKNiwQ} z-RE7TmSKEWiS)-pgai8yK46*UNzFqln<1I@tT+!8%gB{BBOk{?ii+ZEId4eQa5O#FgcBAbag%~S{xs1(iY!yr zt=@N=QezGQ37fnC0LvGW1YAxQ&ZfWQK}R0Uu~6-%rtC$XGb%@j(F!p
@-Q~C}x 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 RZ|-`rxzsisBjmur{{cf)pI`t0 literal 0 HcmV?d00001 diff --git a/images/monsters/fury.gif b/images/monsters/fury.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2c29001a62e59e3aafdf8e2507d27b28e9a35cd GIT binary patch literal 2546 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μEq> z>0PvCiE0c#y)9rQYtCp?SDqMk?uRG4#?J}tY{ppTrO?u$jFJJZeiCcn7}INB?b3OL zDb}6MuI~)vp@i405O;k}1odCV*Zp3an_6Qxl&4PAop`RI4zH0-3AgK@7I%Cx(0=^% zlH0Mc54CgE9ucKEvV^j)C{q{mT*E902Ll(&l5_sumSyUuUUgUjFQgIOZ_QAwWg>QX zpsu0d0EfM@ddJM1!LJv=;YeHyRq98(T#&8(Hsc9SpJEsPa{wbN<4(a!U;Q9vAME)D zC;R<4^d^!H3^9#e>2prpi}TZu4aAb$YyBRbvj-eciTdV#{v=-0@_yHmu`>`{E!xss z687vhm1cXq>-Tw!{qD${=8(UW%+-AF{H8|RyJS-r@nLi&L`ud+DqS+mpeRPMsVs`_ z-J>GpNj@;uZiQS^Y@K&76wVQ_o;}$~XFW5MTbf2EQxd!nO@cI*(2xi{T2d(tJ*UFa zh+mT1)fAVCk{+hZr~O>q)Y9Sjqv)&iIabHg?@fCy=3(#v{_S%TbG-%U*j$h3YdWET4{MPL$17>`Z2?Fs>3BQ+K`OnvGgZ zTGd9p+8sOtjoaO|8n{W-bp1PYeZ+l_X@AAGBj>8JlFCgtTzzQWYEW%M_lx7{XA_31 z8AOki@&}sPUlsmQ(G3O8JMLbTTNKK9b2aR=Ab-_HQvrk$vNJ!eSnqllU!o;%D#s*T7dHVP-M7&PHE}b|L z42~Jp5_oN?oB*E^HkTF-7|*7qrhWM%VPwrE20a~pn<##_=3CEaK7@2(8~MxkaS0kN zS_u(!RWdiMGTNBv94nO( Q#edB>`D(eHvR>y&x8!ga}bk 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 CHYce7 literal 0 HcmV?d00001 diff --git a/images/monsters/ghost.gif b/images/monsters/ghost.gif new file mode 100644 index 0000000000000000000000000000000000000000..6da14ea77a2187e1c98cb372f8ff523b04ce8910 GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/images/monsters/giant spider.gif b/images/monsters/giant spider.gif new file mode 100644 index 0000000000000000000000000000000000000000..5dffef2ad6fefa089d53cb27d1a4604c2126743c GIT binary patch literal 8708 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 p=Vz-+zkJrFIc_klOgOzLA6{j+*fqD;dw(s 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 literal 0 HcmV?d00001 diff --git a/images/monsters/gnorre chyllson.gif b/images/monsters/gnorre chyllson.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bf06328f5e9c7527e4d901d9bdf195fb45bab6b GIT binary patch literal 3207 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 ORodr#nt=j=ZT|!QB`#C| literal 0 HcmV?d00001 diff --git a/images/monsters/goblin assassin.gif b/images/monsters/goblin assassin.gif new file mode 100644 index 0000000000000000000000000000000000000000..f36f3dbfee2591ba38108fb7930ccf30d6b9cb6f GIT binary patch literal 10215 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 C6EGhD literal 0 HcmV?d00001 diff --git a/images/monsters/goblin leader.gif b/images/monsters/goblin leader.gif new file mode 100644 index 0000000000000000000000000000000000000000..03f650d828a345b37f32ce006e606a5393b8ff6c GIT binary patch literal 2141 zcmdVZ{cls(83*ulZC}Usv6GV*-#9q|?jiAQuw8N;5if+h>Dsa5#JFImxarcYbwVHs zYbJ+L$VD+9yVR}LI~aG1=5VM2c6mBwND644T6wnGKCmI4F5ba&|*S} zg=PeihzJjbpV%ORT!?Vn2*fn!VXQmMB!s&~{QGxW5JKDzg7viD2oD9!b{5f?b|1BM z@XYa`)fyz&1Y3B-_!x7PgL=BH1~VRno0(X%E#@OlCOEo(dy5g_D!5Z5UL!oR&9=RU zu^l#B^^mX-njmeYnJRQVoJ<|i#xOvHmn_jli$7~u4@AeoU1?(}dwYZ$Tx+gRv6 zYQ;4O`OuM&&{l;9JZ7>Vb2~V16&BvH33~d<#He?|Zl4ychdC0+gtc-Qe*RWlcMW%> z+3fz*?l&UgsEzQ57!iT=)a4H@MVrhL7ja=&1L@2pVOaq`-*xXuP?F_^3Z#U? zF|+QeF{qb%iS}5hG1kaQrg^e?J-9mtK9f@n*HH|KK(vbSCSCt^TL(1X10Fr zG<6_QBvbi{li}N|^7sG>;Iq) z-MxEZQl}j+VS7L}dDioT(bP^YfBI3TMw?zu34jqfrUYx_;xwbqS3tJwSQ^)1huw5mseG& zAbWBuEs~f+J!SyHyr zrG0gLUR+O=_k>G-(b*_>;P#8jw=_49LzW}(l5%Hyt9;|YM9+|-|57Nf@4PWTrS-I1 zjfcNoPp)M(EOWYaWe<`XhiX?`DjZi`rwqY^eOWT%O}i^h?K5`QE?)fONMJJPR37%f zG49rxI)@j84sxRV?i~ND5*FOOn9h!l z%%t)voWW#3N9CzL28MX9qpRhSWAjbT{e4B>OUjap4%%loyf}h>zP?Tw?obyEr9A4z zy0b_lUvnq*sXG5wN>et}Mx}G%tyIqOlRWsWNbZYJ0bKzC|EBxDP7}$0Iql0h-IJ~N zysBa|PB~L76bmn8oN_d11adn6KTbDjd3(lb#eX>+l@h047~-EgWn1$o^=p=yzT>yH zNVz||lqT`W`Zu517{9fE{9Qm|Tg0*VCXZ>@>)BfI>|D{F;z)ykllHggOv{C_rL`Z@ z*J2gt=603ORf;2PJC+kI=!%YPd_J_;#V!sPXO*x%D(CxGd1v95G`LECr#h`d1F>Mb zc&nm^dgkO8iInBJ3&Vpt#~o3f9~iYk9;=pm4)1XL@3wxlrtMjwRLrK_sP7iHhIj3wpjzLY|?kDZmW zvRhVVWv}c-QYTdqu9JPxTRA1)ZAsV_weeZU3HD3>pvG5XU6FsPJT9%+!H2ejKoXtS ztzM%HFVA+q+v$3_?-4NM#3Le*C6IlkZT>et;23{Bq-xd1C4>nx|layj890iIny3lx& zob}Y*pZsQ+qS8Hd!Gqgoe~w%XMV9~L>k}yX@u~QU6icNB^I6_94Chv5Os@MUTbFD? literal 0 HcmV?d00001 diff --git a/images/monsters/goblin.gif b/images/monsters/goblin.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4a67880c040591d099750905a27ee56927c3829 GIT binary patch literal 11909 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 Smix*Q=QVxJ+joetpZQ;db_ksS literal 0 HcmV?d00001 diff --git a/images/monsters/goblinassassin.gif b/images/monsters/goblinassassin.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ad2fc3a734002430f80884df073d16eee015ad5 GIT binary patch literal 1485 zcmV;;1v2_aNk%w1VL$*t0Qdg@6Cw%@LJSrb7DGcr3lRz_Z6pXY2oM+s4n++aO%)Cf z4hk{|7BLMXA|fv@FB&oq1r`Jz9v&fR8xKhhB_$;rI}#uuAQLtb92^`D6$K7J3=IO7Tjg5^cbt6?(RTx1N8X6iXC@3>C zGb}7DH8nL&0s>A>PBJnw2}=bcaUCxL0TEOU7itnSp)49w7Bx39C2Sx&k~UOSR1ql( zCWay^1Oy>34am^QJD@fNF9bja1_(U|5jhVqVywk6;=@#SQJVqCXtbm z7&{H<=;$F!77GOepcNH6fhi(j96FsdLXt2DHU=0a3(?lm3s49OJqb28Hh4Wd9WD$Y zP!=V2ASYQGKB71>n=8!B%tV?zXKZJ`y|gBRA5<0=FnTIJdMF`|8#}W#vj7%HM@LY- zNE=QV7;qF}VPQR}Ga82#w6wHXSXe%%HV|SAIF~X+s5}}%6jN4D7)2A54h=@SKbHEA#)Z5#jq1fHXw3J?Uny}dJ(EG~H{6dVUA zcOwZl2@f(0PPs)UaU$Q}-#$J*Hj*whi7hP|78y$x5fKsI-rm{S*=J{G5;qPkc_tcM z87XxnWbIuPV-ONP4H|0~9atG4Iujge83sTF9cmcH#>OUZBCM>eAXFX`LJvGVJRMgV zOG`^JY%K~33LqdD6;crtFAF$0IDB1McXxNG5D#f-X=-X}MYKFmPftfDBp5pv7C93Z zI~FMe0{{R3A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*XJk<00$}n5Fz5j6Jo-6 z?yT9SLx#H>?q;ZJ71=IQBSsw9(xJl#815ACZAn53fDMp08~_l24u%wxQY>D1lh7S* zqi6+N=19SSQkvl*(8-wuB|Em5>`26*0S^|MO}W~$fOSd|H6F-PwL?s(9wclGaq;8Q zuSFBqkVQ#iOa(@U63k#=GldHh0$No6szPAck~h9#LXndP*NiOTNI0>X&jO1ZSf>1$ zCnH9BiYElv5DB7K;>`nkkN^V=H>L8701(^)#}`3x;l+Ovols37Con_;5rJGmf@U|d zzyb*<2w(yk92gNoEm2^Y;R?mu4FmkD&;UCQP$16@`+!mc0q=~8(VE3v6W}>d+N6RC4P+Ss z3H)et!8E>Z`n%``>1Bm2C3KD5tFQ$}G3+^2;#CEc47X*KD&)0RaFz#98Gu literal 0 HcmV?d00001 diff --git a/images/monsters/goblinscavenger.gif b/images/monsters/goblinscavenger.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a475284b616535a43af2deaf134dc4bb896b34c GIT binary patch literal 1619 zcmV-Z2CVrtiCLvNBXE-1`sWNC{Ul>^xMH&oEOiD){6*`qPGngz!LOnei3Adj}N;7jzRfGckNpC?;(pAW0J+ArFL3C38Y6aXc3= ziYq%kII*v<3or>Z6bTYM4z#qiPP;`^R8&<|Pfb!yA|fF&HZT!S4i+#C7#0+Te|aq~ zEh~8Az>XBIu#dc6CG+9S}hqH3Ir`33lB&Q5;YJ8 z1OfyM1Av8q!otF#o}TwT2hhsIdvg7r!3W|k+TO<-Lc_?JkKqGG(I^st^pN3Lq2mtAk^8^ zc}ymFLn0SS6!P-&A3_@$Ocg?sFquswN0UD`7z#e3I3jT!p>asBd{5om*)e7=CnY0$ zfO{_}BoR~%{q+X0u&}kXv!0fZI-@cRPzVW21-ph<6k`y%x3?K*7c?3NJF_+CND6Bn z1IWRWy|hKNJVL@dMa@4{Cl%u=1yU>; zSSc4Jb|7tNWkw|zue7hx*3n8T8vnW=(M1T~ObKH&6EY71VmTT6{s8>=1lnd1EE5O1 zzq$xD2LJ#7A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwQ={1qw`7M5&;_x0EU)DxgGVo|{7eV8(2yfJ&?aZUEF% zqjTp%1^Qg6nPUKs0c}PZD#*udpE`O5(#&BJ^=O?s*}@S@1H^!VltsG^RA8np6F8x) zaIkU@rCNh1+o}O#VU0UBVa%nytKh<-H~`YjdaXqHQ z0u{_qAn3)e%w-C_V4y$_8J3YvDj2Xp0g5SQ%A^odW=$9?aunoQP+PK{3NIWOV!%KM zEe2#HCe%i9LFNFhU|Z)G~%Cbqbh)F^g1C3J;AcAk74mDBwgf(`YgXCZ9mj zMI^z5af=bMBm;^OO;V&ljU3?rAOtd&pd`u%{-6X20k}Z%M&P=iFk-~B<{0P7rUEO_=)enFjI6K(7b{TU#3mMaF~SIBEXtv50$d`)2zDtz z0R&QLV2KnIaPdeMt85U)2#v~i3^3rpyOsh=ETMrHO9Z1p7878xfrYYtfQ1506s3Rw z34D?3KRb^gh8XB_)Unal0FuPdOnXBDB41z)8q?8S&`1(V*h$S6%fPTSXbLod$}nZG zr3D7UY_T?BC(zJ>E=GGW5&fH`1RwEM=tr~lvi%~<(Ox# R`R1H=?)m4Shi*|o06T$SW^Mog literal 0 HcmV?d00001 diff --git a/images/monsters/golgordan.gif b/images/monsters/golgordan.gif new file mode 100644 index 0000000000000000000000000000000000000000..c50b23235e2254179a3d52ef3dab5062fde006c8 GIT binary patch literal 5177 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 ZwN_b8vgt30hF!fQpL8EEPrGIAe*@gQCNuy5 literal 0 HcmV?d00001 diff --git a/images/monsters/green djinn.gif b/images/monsters/green djinn.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f598d8671e72b2cf4ae17e6bf0b2a6b6b631661 GIT binary patch literal 5771 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 literal 0 HcmV?d00001 diff --git a/images/monsters/greendjinn.gif b/images/monsters/greendjinn.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e3307b2cd3e64c2488faf72b303ecbf06b01354 GIT binary patch literal 3218 zcmWmDi$hX}!T|7d-~b0f1)r#x2cKwWzEU(T5EL{mHO*&+Z!0TGoZ77M1|OxCrfar= z`Ji+~sbywg$45RkXWDw$%`M96dRyD4)tzqbbN7C~|KZ1vj$(ymvjH}+3IHS%q8XV& zwlTFbC)-$<(QK^gG{m0i;Nao9Apmiq+dDhDFkKwo0-RVLj!YL_TZ%zpGkMZ`8VFe^^Vxsz9Ovr(R z@RI1w#}dLgS^HA?+|0;*kumw)tn6LMC22d0xd(aNqCNcbsOZu?3FUG8f`XXxoSnx{ zCY~rxsyv<-$IXq)+P|A$v^%jhT~L;poRj?dabfJ|xha*o1px5(o(gF}<=5hZYEgwg zR>|KfPfSz`lB)NlH0(%iPT8eAxLci{RwYhvE=X_uEVCnZZ%2+$osxY%L)dySzb7sK za(;onZ2$Gb;=YoSo&xbeap_=L#l4b@deuIiT&S+fuRWX7T%F%|_DEA_L6>TONAr%{_}?~c8WXn6<2zX-_W1vH&ot}eYG{D$Ht~EIqaM4U~LXdlOCzck5%ta zJ#{qo%c32PhmxDc>8b;{r%UqB7Z;x^Eo>Hlb}cEoyDV8-d3gL}+*Czwov2NJQuURr zP;*19mt^T>`Fd4Fd;Q_ws{Oq+Wdmmp4>ncEXO53Gm;IGE;x^=suqobkscK0b& zSJk5{y3U0Q?LT*RKJ0CKbG~!+Lf313_rGpm zUb%F2<<8*iZ~Na4_I>Ie{G-2VX1sH9s^j~)OOGcyo;@)vOd1|9-2UO8hBx zuS732PJGoq)v1~2`to6S&GX*6`TmxPOC2+PS7xttKD*U9cjMaP&F1khCuXibML*pA z=V-^9@f#nf^lQ`ot8?9d{o~fmr8$_+2uCY0uI*zlYT zloFhFTeNCXtIJ9HnDAp9Hiz8g1hVawCf52Lb*=NF1PO=VY6bE<^RMg;iLY%lqAwIx zBwOqH7{~}b)F1!--471ImlGO$x1=+LT5D$sU*E=Jl=@_aRs1qJ_cpK(1u%ykyaeE- zyYa&W;@aE6gUfGS_gNZoHKIay6DdBRI(tACv zS{<#bVRlX`(_bkPlmPcHh=li^Hwfh)XFc11LYYM<8$)E)7v;dDEzG$|)=Cez+R|S# zqKL|bug7kG9`+$_`@n)sP51b?I){yb7}1{LRS{K;&CHx9AsvA^a`HEl2P2T{^b3OD z&&Ch;>;4{EoI%8*`U`v5yFeXZzhY~W04Z#D86 z4a5_f39g{SqoqWiWv8UqEbILk_FQ;nsE&uT5+E{4I(cO};K!oHxS$c>#~qu|k5V=A zIh`ZbP{ZrTH~+2olbLBHF88;sFO`_F8kT&AAx5o83fW007{*=XY@FXXaF)ant!0xK zQYiP7)4n3fZ(Q?ft%`M54`T2e$9%`_i-#Ii6i0;+Z|j;zkwPA8FTVG=LvtZB4z=q( z*rRZ+DZTI`LqjvA6X!6T;+$#EqdnOeVnp6tq-_T8C#8KE(7?eU)6@x{uGR~VXEJT)ZDXXEjRl&FTr|;&t13Bk&Quv%uj{krXAe#S|%Q^DZMJ&O}@vMW0x+;M+Js z-nKxF+7!>$014=IAcx~@!a2Cm!)U=IdFZV1PVhyoJMPYS2FH% z1HhQMqF6RE>Qk8=Qbb?0I>N%*&KQ(f_88zs8Fvy;z|e=;BlGvh|R+speQyB89~dQ7v>fM34Rt) zhiIf`H~@8B$Tr=^Ti)sBIQfe5;Lr} z6B)5tEyHjh1>@R+5G#G9AbXj-<>yhS31k!>A%rZ$jJqt?nUZ!hk<5Q7!cH_Pv%Nv1 zl6tg+pwIcsu+JV{aSZq-3IuMOwr2_2vot?9f7@2@Z_ zooQ@mzqL{OSEv#h@&gINrRO$(-n4_Im;a~SgR#wE6KNFUg5x=^?h*-HE~VXPswe~X z(yAnYGzcpkRRCmOc}-VW!-d)PI8*1h8@^+X!rsdepP7T%$QpyvjgaGCg|sBEA#KFou=7-6+R2*Ehoa z%OIa>dbPTDI0aS#!H@VN|xZ8CwcD3oWgw!Ak=Aj=iG*;oyiv=hGsNyAxz~j)@t2> z@o@1qLZETkl#X^{yo4L@v9BqY1USznz_;39KIcp_wlsfshJY! zgaA+JtFOt-l*5HKSFo-P=4q*~sf+Py?{<-wJceP_AOx_0uKKAV9*5*pucFu^75~M6-xr9 zvqr6iLg{i2AHSdBj|Zq!f4!6C2`X*dRFt)3``| zG*iu{pvrxU;rnZ1j>#Th+>0~oh{?R#GuGbIwlU4i|12^6O9gN|{LpBB*zj$JAJaNiHV!{BewA5YWfZsB72P5rH h0!sO~L8_d95}E)2 literal 0 HcmV?d00001 diff --git a/images/monsters/grim reaper.gif b/images/monsters/grim reaper.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9accab812943a22886d9bbd13e823f73e8bf273 GIT binary patch literal 2223 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 literal 0 HcmV?d00001 diff --git a/images/monsters/grimreaper.gif b/images/monsters/grimreaper.gif new file mode 100644 index 0000000000000000000000000000000000000000..3cc4ad56750335c7d057c7da73e4b20775d7bb07 GIT binary patch literal 1852 zcmds$k5g0k0l>fSj$ zQfJkXfCT^g9HgbC2?PR(L?V;PcJ0~~5fOpoxLhtL2m%10QmH0LAQp@HeE!|Lcf-TO zFI~EnpP%2A26#MPUS6J1C_E4kVq;@tVq%8XK(E)c+3eZbSq#HUN=g(8g;XltwryKj zSXgv)bV5QxW@ctzU*GA|r{m+}_wL=B!UriSDO+1x>x-RhYik)98R_ZiCr_SKDwS1L zRrU4t&CShw;*hIXuim(E!|isLmX;P36>Z@%49?8V#KpxKjmF8z$%={! zwOXB&lr%InM3Ut4@-m8|2M-=}I2ZD?q)+wJ}R{i&&`!^6W_Sy@abvylKI zkti}U^2w7Y2!c?l)HXS|cJ12w`g%u4$MNIGD=RA>Jb0kdXvW6Ita2nbH}~GXdpmdT z{AnuE*4Eb5)%E!C<11ILRLDYdF)%PN;Pd$|U%q_!@Zs$2?BwKR7K>F_Sjb>71_uY7 z`w6qz+}PN-M-p=C)Ttv!j;La|27|$7vn`nfEiEmrTG`pNXT4tUXddl%pEf>!{=BKF z>CT-yD=RCVot*^*1so2?>2!vMhOT^2@$~6azu#X|Q*-p_QIp9uK0ZD=I@;deZnau# z&4!$u9FND7l@QsS2#Sk~4;(nKd-v{YDKN!?>FMc_k&%7-_LY^DojG%+r>CbrU7*!! zr>3S1p^}E^!4S7MA=P&Rku*&QvAYhe~r4CRO2@* z$CkV|_Rtti+8;jh>IXw*o|!|=`Na<~ozuxr>u0Vaj8671F>&djkyTDUTTnnfk`ASr zfEyn6@+5C9Z?K8Jn3SZVKA&0W@(2=ZKgQ?0BqWECl1h<90#kEe8a$1Kb$>$AvBN}M zcQ6E@Wg~XKr=J@Mv9Z90>(Ws4hvjl$QA`2T&-lc~g&r*m1jx52&j&$7mKUWreD7m( zV^%P{t}#;sH7|LH&3KJVFCb2D)%AG`oPheZM;wUJFv1R*7$5!HQGmhLcSUv!#Czj# zy)wgm#uti3ehV?7XH&}Yd1O05LNMK9fw?Zo|9c(N)@?+ZbyGdbluCa9P~(NgFzjz% zpitQJy^*wBd_G+4MFU}wR0x2~x+D(K>EJn&bj%JkG({-(9J0k-%svK4`Ypp|Hv|XjfKb|6N@eb@0rMf`IO(HoX|4m* z@}KT?l49HZ3t8cY0l;5$&s~LsjyWj&n0G+X!?nGJGDM1QmMdETp&9J0sd7z-LGc>w zD7Uz{7zQ3ihGXagJ!h!H6`Dt+I(T$C8i2TJoV>-+2j;?xzvx+o-u0?4>i#LKr90FtIlDa|)(Ebj{Ofr2i+}w2{jbvgNP6#g>iBwTG9V_s*44lD z8(%*AjJnG0+(1%)?PeF+-fEx9*WHgUEU;>XE^0%QLHxjh`hjF z1Mj%IX;cOIqSV|Poz=~0HPckrCwk#mHClDZ{P4Grfq#R-EK@(|^)E_qK1a1Jp8PTF k-1$7V4~;l)2*yQjIt?X0{(DQogzQb1dB`Ui!BCL%U(8T9U;qFB literal 0 HcmV?d00001 diff --git a/images/monsters/grorlam.gif b/images/monsters/grorlam.gif new file mode 100644 index 0000000000000000000000000000000000000000..56a73439f8f504b3379a5fa50c8b51622d725923 GIT binary patch literal 5736 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 QKvsAJ$72hXB)Ii|0B?)6?*IS* literal 0 HcmV?d00001 diff --git a/images/monsters/hairman the huge.gif b/images/monsters/hairman the huge.gif new file mode 100644 index 0000000000000000000000000000000000000000..aad05772d7bb8b91735c83b2df8db669194f6843 GIT binary patch literal 3260 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 L!K-QnSs1JVHw}4z literal 0 HcmV?d00001 diff --git a/images/monsters/hand of cursed fate.gif b/images/monsters/hand of cursed fate.gif new file mode 100644 index 0000000000000000000000000000000000000000..722b24d9cfca902d8791f9859d36d5ca29a0d26d GIT binary patch literal 2465 zcma*mYd9N*9tQASB{Ybj1kpr=L{dv+NGc^4BJQ_Ll~l#8v{c+eThky}LbXEGw52Dm zy;1kB9c_aYQ;x8lY84t~`DW=>#_{wC$=w&__c@*%9*#@3 zqRhzJH`dpOPu`^L{*>oRT{!oZKc1^S-g@WeZ7>i#JvsTLykEo=i&Ii*WLjn9nZ~0R zaVWdCr0Th{K4-iQ&epE(h`dBvQgbY7G~@EQtmuSKqg`EGtqm|vO3Jy!UEA6#4?5>3s@)Y?d*9R-rE%|cW;2gBd;Vj zBFH|lAUen3po;h|C`C`uRYyfEiV1| za`~LR)b?uAU{U5@Ycs%eFT^xT&WY^w#ANNmhl|hW06RMyKfi&!ecRR9nJ39F$d!B* z$-Sm-e5$$g+vaA|mHHo4{Zr!3lgu;UD!P*y83hzceWEHaAm?;&L1+4<_0|5q_!|#0 zyWJ=b9hp}R;INYiLvAP4*GS^$SQoW(!r zu71<-Ioi;yFz{HfT4z{l@)a67w#eFPC)cBqew zGX)I%c*SjFIJv25IoQ0^oD{6D9}gRpAxTZb`X-68ury~10QVkZhy&~Z$RERiKO6zz z+khQ?8-AyHumqk>5RM@mxJ3p>RQVD_xHIwMWkNwpXaj(F$PP`R>tDe4cx(Lg$NVyLIaxyhq zthFfi{f94K@_J1jp4t0_C!8y_eImWb=t>|TIG85<>ryopug}Eb3dv8ggWn)?-7} zbJZ|!=Y1!VU%ay@Khz#QuDq97@*1S%c*$O1o-FyfV6uiRmo`Lwbr%z|w}mOKT!o># z1w^)6w^wnCU9$E{CuVbN-LcO*8=f^iy>27c;CKb(l}--1t8IP6;YzP=nB=jk9x*pt zD}of+OkOL}<1wj^v5Ymq6ta~rmLtr_MGaiWz)&cuy%{(Trq-f{Q5b?wQwC>LDPqG~h{1k-9+>-c4JC)8LFS1fge*HLA*sm*MKZKU@hm1ztjRJ(gs zUHlC?YC;5q@R5}~!e(=r^b)wQ3WWB-O3NH8;+EJ*Yk^u}+TK>hb1cy?GvK%su}JmeLhl;CE~^G6#lvr2HAF{7~WLNng}DJojV_h8R_C739t9-JkKrGS-8(NG1UF)>8KZcK71Ghc5R* zfWZIhrnc#$8?dR9aI0fs7i#J}dmP^qexVpabDO}i{A>7nhzX@&7;=Db>FO|nYn(aH zCzt8><9`N}iS%OsmD1v}cs-@$Stp?R_(6C~FC_O;WfN-ZD(JtsVVl?fUv6$|{?pCI zlQ(~IGcW$Ln|iPezSmtPC-xAHmBQ%x3AeRREPJB+s!g(A>diut@*jKj*nPo6SlAGK9I&praq2+gLfLz<<$$Si60)+&PTpGP_4D zp{m&kBa*gz$Xc}dY{)2577j2>MxsWM46|q7hFDp?)slk{pvQ2ob^!pjC9K13nh>C; z?Dk%e0oYiJ1Y5@Cs6)UKF-JjiVo>=&=vL7vDqk8lj)Im~@(>i&2Fo$EZn1(FjATR6 zt79y-2{SEW6nUz-QV(+~DvagSvDxF#3r48U?-z)5nms-?(}sUA8ZnZ6-1Q!lF%E>= z9!M#I36y?HlnY;Fh-ydp{-_V6Y&>e*HCPOAGsP~jVHFEaGDsMc2)QEVNMNxnT1fdq0IS93Z4fFbj!j`WC z$f4$O{__~4HJqONQ@&b3YN`bT?UbKpwed#o080qBIvWk~@k(47{){kU@c!0KP>Cf2 z*%f52-_~7*Uz?{vhPIZbOD#RYyUa{CdtDu83K?&Tm|nUl4_ z=|Id3*K}ASmG;3~Jz5WOqDnKVe?N$#GqAj2zW|>B`?(lTBCfICK2tQeaE4%x($Q@6fW$(Sc!W2E`=*X`jf HfXBZ9UsVGj literal 0 HcmV?d00001 diff --git a/images/monsters/handofcursedfate.gif b/images/monsters/handofcursedfate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8511dbf7e1d6a52ea5e8f2e8d37d5223e1025f8 GIT binary patch literal 1649 zcmV-%29EhhNk%w1VL$*t0Qdg@ytA~;#>eXE>Z78f?&PgIGCPNVf?Y;A#(Su%q@_a| zN2OFnOGZkUk(11%egOahlZ%g9GE?Q=-$OVu*wE2)Ic9P~Yr%M#9Dib9sB`JSJdqgcO85s;>UtumPE<89q zV`5`E1v###sbe)-qGp#Y3@t7cEHe}|RV-vLCmdc~Uosjo5ef|t2oYi~R+LdkrcFR3 zA|$?cp+-VRIvqkI7$O}GASDthVOm{KHY|yNgew{<9Re6jNlOz26Eg-cQ%+M(O;1ir zO@d5%8v_?E2P+l^7!3yx1_B2a3K$0k2IP~z|NsA0QdELoQRcF6 zNqbIwZDeMac4C}ghD#$>s@#VyJKzF`zvUf{# zbZ&D8@$mrv|3(BvP8v|ug{~S570__8MI%i_C_+smOf?`i#J|5jAvv{TsbDo@W;t(b zF=wZsqHQ{6jfIJIa&?qVd3SbretmzcW}u>SW5R{EYBX%iZ=0l>omnRJuf{vVn~(X?7ey zk!FP?UubmhB)B1f8X9Tnq4V^I(1-@k=24R64KJnpGu2djU z5&}qJP(wzNJC_C0xPbu(kS2YeBq{BrKn=L5Y1Dwjpa2fvPYOJ_aqo8O!Ub?KU@(RQ z4i3*I#UWi|!|@Gr0+^6Mj7SnVP~!OitKr0Y>Id&~&6=evoD(O|AhijD!F=j217^gc zAce>nAX?mmgA^M)@IY!C^l=CU6hPoa9}N)Kzy@{sQ zp}-d(8UWcv{TFrDOi9=4lfjgLU})0t??%fB*~moWe~DTi~&VFGzfV z#4==_^uRUa$b*0j=TzW`J+^rNfJ_T;mFR{UKj>kOqbK392RmX^pu;&zc(F$Z-M~Vt zKwWf^0~e{3z(WhB=Ac3bQ_Rsp4DJYW#4n7Hfguev2*E==2bf{1IEEmw#VFf&Bg`fw z>=6wXc@C6^xuur$063}?G6V~~)N;lZ9;h=-KeYC1;7(lV5J3>PfUwRPc5I*xHNZSV z1~2{Yq{jm!zz|Fx$z%dg5JPNmj1r_^aYe{3vBAm%6K}8u6)~)0hR&jdqQVd}6NU$s zz6?RbB~&QT@&i^}VMi4T(Cm^PLTnI)fo@a?*8^2F!pkmJqr`>-ksSCyHm1CxHXR`# z;r3+@q(i12S!}?@fq2kP!2}ayo;Q#lB`{IoKX~||K__z`Cy*Wlj6miCluSU&!;b$0 vxh#V{;D9CslpU8Iq!09f1_p|rx$2p>?)vMn$1eNqwAXI??YQS2S3m$ek6*0P literal 0 HcmV?d00001 diff --git a/images/monsters/haunted treeling.gif b/images/monsters/haunted treeling.gif new file mode 100644 index 0000000000000000000000000000000000000000..df4ff35224a85b84c9c648227261a7fd6c6ee138 GIT binary patch literal 3251 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 literal 0 HcmV?d00001 diff --git a/images/monsters/hellfirefighter.gif b/images/monsters/hellfirefighter.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3c2d00151cc06bb468c58f14f2804110dfec333 GIT binary patch literal 3144 zcmWNQdsvfoAI5*r4(!?3*v1A7McCLtL=NMiA}61*fq+OLhBJA62O<$37>b4j`V0n6 zJTOU-OnZ^Q$U{w}q%hq;WZ`KbnI;vW=GmYSL6q<7fA>H4b=}wXxj%~&;=&eY5{N*r z0KJ9ov@e_B7Snd{`HgyYUJ?yIyfzzesf~_ zt?ljfZ}7PQx>ww})N~Vq;V2#2W$?TZrVc_+$jhlYcQ+t7;n=YnK`sB*Dg>8;Pb@=k z{=SdgilY`FIOBNo6oRRS`~?5Hx;psLANm(|AJ@K_9&c|>g?oqKdG-T1dV3U|f7flF z@u2tIgK50?Yc&0)xT&eBV;Pz@VDMD&(tsWpA=qa>y%#~>rtd4(wk9FCy#k)h`Q;<@ zH=KZ*-tgjAxEhDHkkBQ72L#yWgEppQe) zu7Z#~>V@#CUo;-nv59r=WHM&JMs@_+9$+&pw!J{nK`Oc%TKW$I5NU^d~wwhIX_g zE|=3gJ$(iuA3`DAnQwiD1|Fl=2hl;@f)3;IcN8R(H0&J< z{&t^a=$tp-b6!jT(A|3WxTZRZTkL+so441sED1IkFF!cYa+3O=NZF%iXRR(}LLF0YzWXS(nk{Zv44|tgp*i z7vf1A65k-$VUFypQB7=1#3tcCstC_9RO9o5+QjB)$iG&X2nw|29(8X+Fo*4UND4Ep zUU!*r(;~5~?Y2TMK$W4;?)uEp_`B7o4E|z@VxAP+Vr< zks7MYQmv%|mGF93zjvYDoaCX-xwCU-qGnrpcyn&*_2}fW)N0=k@?5WS&pjIHnH4`a z_-9;BEz!f>%af9LW~)W%;VU2cc{W?GVF~=ku$?nfh#?&#Le;~f3u!mI>2^uR7+#u8 zdsL;iD`SPO@M&RFZ}pcg5d|0CT+BE|0`+>}E_rV^C9i1kdPKQx_~f^z3Wus))PId8 zvf};fyT9VRRIq7v>%Zj6FR1%E<>FRBf@pqdSrbdQ)wWogpE8;}FWpwQH;T$8IsSYuz7my8gn?erDKjglGEoPRcb6%{o7|`+sfs=)lTWW76wz+ zIurSS-57%lkG<*b7WrGTWUuJDl-iim+Z`mk7b!U|(W1=^uj~n;ip_nMS&0=Hu{e*j z%N6tm&zcJizL;wBKFS?arvp2X&@AzAiqw?xKaN+ZxPek(2=$fOG9);ywsmrgCybOi zQL2rt?fx=pB`yQ%2MfrGyPp z*T<(&orA_m%ss8Yx5~rYQ+|n7fBv6D`_hvAv5_x$!3M_ev2U)~|F79p#@bKVx);Sx z5PED|q&&g%(WQ|~oWX%0N=B*bW*j4&kTS!!ib;Kd{j+5T+;cFqL*%rlz)oB$AEHMI zP2zHw+7dqA#-sI61G|;0=a!Ln#2ATB*3r=nzRp`ry2jbK4_g|kA!bS`zqylgT)bP9 zl7$)XmeKWRD*WX-Y^61Z5pG7>pn6WBI-~Y@HkPPD*uGpH)pN+%t&QT6F~MNK1aj%k z{0NUW=~j7~NO7asaX!y1OfusxGKFxXywf+F;JV`q{Hb~|tt^%6Hw)t+oAQ%OgPi;c zokxzm6L&N13Tw@xeU3MTBoVy7ofP~z;#m%Cg+9jS=lHt)RrTZftvd ztsWCuOu9MyFqxANirFac3|o!WywFn}xu|E6YP2fcKoKqsBNe=$@*Q|5<6birYZQ|u zk39L_T73XvE0^UWCbNx@XJl5zcu7URc-IFd7#LIonZnv<`({TGDomwp z=%LfTHR^@YBN(Gm;y9`KaMtlbY8>7`{}jK>OyWDR^n;GpFpHE&lJ1RSx+!QY#Eq2>eHuy2c05#r+slVIVj)gJlx^FiqMN*YwSPY_<=XzZ1$MA(ztXQtkzp4@Xw^2E`d6%0Wk?3TYh^E~bGoUGBh{fD0UKg(_ zhWEZ{Q1p+w!%;8iZq7a@@+~DDm?VSiI-lWWRdVtWo*Liw6GLtZcHYEVOq%g1UL0Sg zORxNXF=kPB1*PA{oMiVLf3+!m_Kc8BpLD9(irLk@3TKls!cW&J6cueo_fyGSB~nlZ z%m&hvLTwtMF+%HEX-6K<=(3WvE@rx2E}{zL9mPM**Gra@u3onMx@xpP)9ML=d$~IL zm=U*UA97W?Ut47L>GLzCyBwS7o@Nu>mJ zu(Bm|sV1AE9#pR4_m+jN)Zk{hWrZ|Y7wLz-jYXH~;-x6aK3hl=BgfSRI*EuB&_vYr zVcPIaRao`D?>W0H(`J}4(d z0xNS#q;WQ2iM$nzB=LhaDAqk7MKAM-;os0s&_2*mLgUX$Y&MdbXU;L?64Xzd^Bstw zN=Gv5ksRVIPD3ki%h%u}s^GVB)>UZ9*@DT}!Ffii;DCj_kyo*u9$2(CBUPM5&_W_p zDMWu%0R4vuJBMg&X;=rl%7mn~bBjv3GOm(X*Cn~Z&k+x^*Iq;)Ezpvz17>zd(T`8l zO4Ium-*;_%@GUW4Q^{gmI2%PB4S^cFBX?IzuVuf*YV&_))k*5Rs}0+}N2NM>7CY8f zI_4GgTe*QE`s|NrFJ&C}mg50pYWM~|$u%3slowvVsJ{5-;d}7->5?=Y8T5VkHZ55C8!_ z&H&V6MjRWyw|#EI3g_>Xt7Z`sVd6-16b-n+)Jv3A$*=hE-(z(2`{f87Ra5lZM?M_nc-@UY*9_TbxD z>{|&$)-Oy+7`!2f^6Ch@ESYqE5iZjK4o$arSYcPSa^AZk=J{pBi5B?8=IFsSocFDe z2MH6lX)cG1dEJ2>U&-;k@A0x2Ki>=XIqmdH2cL;?xw+A)ZyD)S8R^3UO*_%B$g(6x?c9Yu?Balgm-o= z``AK~?;GOMv^nr6EZzzC>I7?(1AKlR!MGmputOv!LzDzO1cARAh&Oi-4lcI$ky7sF z!DS*Y0f$KngLcd(73ODF`r$V$blAR#St`UYvd1m;Bw|UJ#~VcSP|~-*;AKAK1V82y zK1?BEouVB4eBrbJ)|@Z_wu(MKoSW=H`fv<Ejo;8^RfL0B2vh0|8TlV`tv8p`>6cfos$2D$7x@q^pjKH2#iJAFK7 zO@+s&hlP(TBcF~x4R002DY*<+lEMRTNajtPb?^4Xv07X|^t*j-2$JToS9%k#Z*%+S zPWO-9X^B3xY=7GHGs)&?xAyfSv(DpDH8K)~`?EnTP>V+|*z3cH_rG_|)(Jirx&*Cq z?;&CS`px+(I``5lk4t$zFXD-Z(ukvK@5i++QQp{#bmF%^8cX9j@5^z8zIMzo+Q<9u zU#;0^_RJgKBUYx+iWA_Q73`H~M5q0kXAq*Q(rbEDc&@qOUl$2a{z30vYtES#6*gNrAJAPOn zxyv_~cT-;7kowJTkE+LR_@2y2s1YW#TN_iC@)Q1bxA^xXbmXTAVS3ZrC3D@C6X8>* z&qeObeQ6l_Z|CoV$k>Fx?*|Gqn`J4z)Ay%er3jBM52)n4`~8nB-6>`1&mln^wP?%Tv~CS11uuL|ge5bz4qrR%gK7*3=tYoa%3XzWAS4h0Rqr zA14^zy%;?>$H|ac`S{Ai4~Ch?Tdl*_0={Wx9mW&f2h`qxbB~lQXPlkBQ%+(Y#h8%*NZe%ZS=}6hoKA0Qhv6GF#Ib713qrEuQ zS32$d#hr_x(`^7m-qTRXceF`4$o|FnE=qiK>H*KkKa8KHq_+-EGeF+&RLC z^i!sIhHZVGe8KhMFHe z2L$DI6WkDenYUjt5X7Er8l>#t7h^c#0~QQ@!L=X*;Vml-%R#cz`T(TV*zdlxr74=f znefJ#5N|}(_O;o8SVC=*C0@{1Dpe8f8r@|jq|qzQ6A& z=+p}nJaS?M$52$tvQLs5>_3g#)WmrMd=1}{ANUc91yYx|2JvhIirsjl9_n0FA9Bls zpHoiSpN>%j`FUGW`{$z!Dd=_W(csghd>K6O%d-P|UZNpwB&}_tNekf?mWUruTcH6^ zN7<^G`yh#-4|K2|yh~;#B?9!HH!7l?klX*Ig&6ok8m5-j``jg9^;h{Iu&5|%Ctrd_ z^nm3=zg*02n;AkZYWzmP>G^<})n~5yYfYC!a#oLU=|}oLYc0of0J3gWV-vDv&QByN z4oyK`LO^l9L9#%Tslo}7IbsJu!mTSHQx0%`E!BI?WT)!l!ejVlrInG-7!^77QM4*{ z6LR$oW>d*{rLP!rC8@}s6HTZ?d@M|0V3&_J*X$234=DQ|gxbyhxxdu~3uBFql zXt%~$@y@`F7TQr2op#6Nl^(13Mm!U;OXm}1iBWd(t*6HCG4vc%K);(69r=I>VybIXU z6EoOrvFbJ)gC*N66nAm5oE{vCw#ub$3ON0aqpz<>CffZO2R@tC-dLN*Lr%l9Vj7ct|C{4dz zUO8j@-8U>JIbouSQDgxLxpGbHpov*SK!Do}RRR{`9=@6&G0Asdazb zdcc4<{qugX7#%^iS*JTqw`rk1ZMs)^kEFEF8D%&DK*EzZ}2lHhS**x0u@ z2zj2+_yX4Wc`QEkpR2jlVnka;tt%Ht>lgmOpYZ)lu98Q$us%1$ z(%(K=hQ$KBb&@#p3I=G;(zuk^K*=ylpu$4NKT50Ejw(ZZ2ROsjAxosgj7oQt>j2r6Se&qzt)K@;W}y9+Q2Fc|rdxF6T|L)ogDmv2Jp7bdINj3NE1fhLCR zWDv08;IGVV4SaUBl#2<#e@^b^xL%YBxMJ-_gMu=b(AR4~tMOWt#jE}e*{?tsrph5**1BoCxuEUS&M$j?BEX4xAOgUv!d%af@!-CbU#fmA%^-6SoQWR!^ zSVcT+EKgwNKuU(n^kpb|W&PM4L|<-MJ9i&jwP=b7&$T=U*C=o?%2j!Q zL!kw@z`z$8sT>O&!^b#_;rV>8ZwPUt335_`I=KpUhjRen6pHJugBL157X`>KuoIxM zZdb{RYy_PNUucF4tzcmrncfQCcnMJvRXyKv?e)D^rpO5lrk!A$ZyU5rOe*BVf;RYq z3G|dNBNPLbM!01iRLi6Y(8+Bq2Diun3n7l2Kb&B z9M6GT3Y>Zh2A~ml#~WUEp|0n*VT;euGiFk+CJt(T#qkhO<3dH^~6O z|6vyQ|Htf14c9Yvaf5i zn3wuh(Ab{a>l9VivH8Q_uc}6>*ZyQky+86B$>%$}ii?u-4@mL5UZ0=(d&=^xGWSdL zFLSa^N2W_AR!r>>+|@@X3+RnhID&n2Wbk-ECDHx#T7~9YTXvQpKc+eL zSXzp!%Gc?I=E^K)udGX{(_P-?)EJbDZ8>}QQ43R}I$(T3Zm)XhwBn|@U(ymj^Yiu0 z+E38QMLQ)@HU0Z2yzdCZof`H1#I3J2<|5INxP6ays*?$SOsV>bDdDrM9ceVjafjt& zv2KLYP$PS}?NzeBx!Rf%K5JXleUDs*W8^m!SCdya^7rF6_ZWb^$3Gn$6a0x_D3H5B z)#pBs)>aXk)Cks+<9Go;b--anP^11NBhYS6y{Ziie*>z5e@`F7ED$6G^it!d<;fgz z7{A=^YPLvJvoN4KQ0IJTnk4`*!uMq2V?Cd3QPst zJSZ1Byx1s>rkoiyf&?$WcZm)cDdH+;T1$}`+$?@lUm}>CVGi>Ol1zgjL zz3=5c-u`lC4$)BQp6qw&jYll?{_flg&zBds;{EI!>jvR-ElW`>uCXYVwxE$In?seq zgRg!wxa0kPKH~xV_>_)U*kvf%llh60#z7x5&nOKKN1ZkBj}u}z@S^+*kwu$M>l7x6 z0^C>SwpP-@9-XlV=2Ur{l7%H>lfdv<4M)*ppVf7;^C{Lg`>N^o0Wc9e?3I~oNR1~Q zjy{#>Ofe1<%&%LeeLi87F3rNc>RlvKn%^WCvVj$NB=SPfIM5zGM+nckEane}`UGDc zaK{@>!ML-c_Za$_hFQFyZM|yZ>dZ5l-8*(j+BUns6He3$E5p?)&#o483`xPNtLCP( zY)yQI{13tBo)zDpMR2D|vf=E96V8o{?h0NlYqgQRei9%E`L~4>s0O`a;EuF{T5hF8 zs-grE>MDIiemRxQ)soK35(mlz-Fpe68$&LRzEH>Z5D6MaNZ&*kHF~v?T!Yu>rgrG0eW%Sujnr9Hm7(*Jui2x<65tPwu7(n=Nc>0 zqZK?BVVpJ72k53E1e|-f8m2~6_|VoDn07$-$Fzx%)Cv%H+qAx$9~)v3e_A>;=@@Z@&;zc|VC-wPxNYyr8~f6U-)nOx;!AbDJhZ0&^hG$xqOzag zro$NXoJ-m}IdVBJp8`UseX%v~r|IF%+Fi|)I!>JhznEZ0>3|^iTCpZd)I~nmrgdpf z1)LcmC#F>m_${vjdz!bIi=HDdE#xG#1-c^Yp0iuEF!}+1$Hl2A>jn#AwSoEsFO!Q`v!@M^lxiLU?Y{5UFyZ=GWGdb1?k^nl$r$0U^o+eSKC16 zTsEK!QI1o$$fIycKRN_7G&wbkA-9$*l*OpknbIf)hT-yjzj1TgmK6pvgg}+LdWGAZj1Hotw*5n79TuNcWQJ0v@E3*@qn7+|lxQTqjh@6VSJvPzi2Z&_Ifnu%-YF zukVOR9gyMnAaTKdL(o!GMF!;?Q`}Mwq?ti0uz?ROSjxn58qCh3c>1qYY9bPpr*IZ=&E2 z&Hg_}j_+&fr1*-?a7K@&UCG^Xs5-*T;G!r}EyEDbyk(U$pp7F4&mhv%FW81d+Qw;@ ze%Qjjb5n-K0=)Bp@B zhIT4?o5g{6a+ZnqZM2&<%tu+fPyM9q5C{!|8VD886cQw5WdMBkXg3yXD-T^EE_b6~ zXcc9@3g4Ums0{gG-A~hIQeB(cMUKbaG4us$K|MEI=!lt)rcRjfaUav2um%7uHEIZr zGP+re&`OHn>=_wlCxZ3K>YNu+y9R%Kx%BuW6cqdAaefr}`|vE4oDS>Yg~`|8Uh)2| zjd{n$FQP7Ql{9Mo%AhhNy5%v0P?YpUm^*F8zX5U|QUK%_;*2^%N2tUn)sd?*_ z`jZb#mOkmlM=zVrSO3!hG7VPLnb8#Tiz15PIEmo5E5LxBPP?BsYvC^e zAXH$*^F-2=IVeHr-bH&l8jF2krMll%K;iVCALezcN~%sR%u7XwFWZW6A`^_u!d9e= z(U1Oy!9}nUw;PxAJbVrmGu>%7OVRc`TgZkw$fq7PbftQdGqcPXmRRpM?aui}yo%{z zr4vo)*$_5T|NqE3ZuJmr5z@)*vy?yS25Bm$Y}S*VrLP6#6$865FKrZH+8wLRf_QT4 zL+V5mM)IX+bxT?m;wPkL3;aln zbl9zYmqHsDWt$Z!B|bg^Lh)s0z=xs6i}yfs+AB-i%XgS8gKjJ|q6dJ)CJn*5x!fJw zU?v3Hzy=%0|48b$5xhC`S`G_oVijOD)s|k$iV^x7w1fqzXDiBp9C-&Bc1u7~bU0}j5V_jr* zi4Do@ki_Z&3BFvfOXR%+wPBe=L=sWR#L)&x^vR+iO9rAU37W`j60ga;zJO1cMP2cQ z77)X#7}msy%tvHjMB$?{A60x&m5*vdR2O5K5Yxn%?u+Tdq$W&h;#5fZw=OEO6xO7O zfi6XLDW*$Px)ce?(U2Sq$&+DuIwUKyqAJQ{RGA7XVNIQksP`i3!-yKuwdtrf9n{`YwC*`=>7bGVl4fw_bYR#Tp-N8-sp-&0!F?jg=?h z(p6|rj%8!#jWd9-pntt!K3%<|NQK8FInDIu#oxvx?k;d-S2a5=v*Xxd-g96>lU8?%gstpxH^AX zW#%!Fg1`}cX>O^KwM4sfKI_HL*kh|sY`vB1aJ@1j zXLnn@mL(U0g|Gi$^z^1cH95ylWbo>~F>4V>A5Yv_GU`Q@!=U=vZyUwS%YWZ{D&U%I zWvI-?xsJ+=lW4Faqh=s*B;(`j&;QBE*}d1&+BP4u+S+PwcP;N<{q?2v-WDbyOCJav zOb(sCZCd%M!<(LbX7J$o#Qm$y4eK5hcq_BrLAopNtwzt7$_C4<#$5O5YXFVxz zyxW)X#Fkc1HS_j4&rw^>@r~xp-9b+Rq4$1mH9vl#_3Bt!g_2%hIB|M=#p3J(dq?66 zng+_r65DJyy3#{0T6@vvyPT5O>M)_^xn`5%vdx|+bxn^d+2;9%{IzTzHji(iWl$M*DYqnc^ zHsp%d*+ZtxU9jAgP_WUIlGXxSYS@zI5!2#3Wvs=z%Mt&*uA5f^Njs7%{7FMC;}=q% zEC-{LPdylkOJtKQ{^TDGH^+HX;GEgN=sCyjxG`==&*9{CpIQR6g8Iz2p79K%6m5GD z^nV^H@9$jn<|qH_jyw0o_RgeN&Hk#@+RT?jWtQW9&*yQTW|k^_Z_lGI2dB?G`fB*$ USC8(EB(9p9IlrWVGX}Qi|EcC>VgLXD literal 0 HcmV?d00001 diff --git a/images/monsters/hornedfox.gif b/images/monsters/hornedfox.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d62a7057567e53aef2088ea5200a62ef71ed00c GIT binary patch literal 1544 zcmeH{?@t?b9LGQXxdXa!Wu1Ik>g;8JJ%pu23_a=0akK?)ptWOLJ({hvM2E*5TbVy7 z*$Q;S&2wS~fd{9SZEjOjQ;1F6kLt0pZfH_J$OHU z=kxy5);lcJb{c5-3;qQIzyT28B;XVv1_&3B896X#^Z}KT$1uPc9*YCc`f)aZFhDpU zR{*&}1P%ljA~=CWKxXg>q;J5Cz)XPIY^DGxL{bD$Bt~WMiwwiC2xCc-Wm%UHa|vZ^VKY_P0Hz5wC6AfN7iME?0C&zs@vx%_td|zU;Df5cD{X4C3BM z)9jezaUJBh6>g@hmLJd`Zm+>{Y zvn^|hlgZ~Qb}cnmmn%E}*bh$k%XxI&;QdB@VU(`A6)adEY9qSJD>EO#vt89C1A}Z? zp4Iz6Lrwo~JCHIuao?7H+1mPv2NEPR<7la*R<)u0FB-s3QH8wpUSlse)czMlaY`b0+hJWepb7#46vwbW2_p z%t(rgZ#%}9amXO8Tyc8zz>&L~(8)&a@Vta=tB`_9P)6;C8{c}v)?L?1OR_c2QBWY5 zKZUy&_o|=*=DTxs!%~ktUq3>tvUF~Pcvj`K!O&JyP?n=J$+bUClG@dpak~)*2ZYB} z-!1pb74oU3o2n-!obNwhDIDax8P9?(S5X(1fUz!2;M0%d&+Ok|Y@XO5b8Bt6Mhz_i zXtbe^K=P_IC-y0W`6ZG~5i+kjU6yUWG<9*`=YvW~UozEf=)C#v-=z&d7o4+eDaV7C z^Gd{a1qNb&`&saIJp`vZtyj;h6j3E+nA(8DWKVb@Quc{;EPrzBS84h8A9VHTD%)mm zBp-Rjx+iHaYIY_b`=zv_;ZFQgYf|iaI}rF$#{;90ow!>1OsId%20$L5Yfbfsn`@} zKt-9aFtIw81w`d3s`2n``ACj0EG$av^gs_Mv^>%J{d>>-=bn47)t;T0w8{h%X6Jx% z@JX!8Ml2T<88C}bDo3di0yY*3kgkMKAXp{?mIF_M#UNmTNFF=7S)Te3lL1`y?88EFvKxA&843tC^{(sbE3O zLwtNZTAu|pg0Uwt1BU1Y?J)v$M0ma9cL7OhyULzha})>29Y!EiElq2fTm+1CpcB zkRSP84{B^^btL>W{Km{(VqkZ9Fi8Y*U{nSwmCDxQI8!9&KpC?k2Te;*l?AI&FOf)K z0M_B_-sOJct4SC%S4gnsOuI%VaZ*5wxlZ zw6wH%Jf7CpRyLb0m&;L)Xf99$H4hSr*u6s0kPE8@i}kQ;Q9+@^AVx8o?M$fvWlPiK zK@f|@hu52BGMUT95YPye0Wm-$D2hr_IJFdUi2M5FO8$Q3I^Ozkgm2 zf8<91bG~x>_SDARZ986$)2k;N|DHL@%G8VuofzB36orY^z4e#7e~Jm!JRIuOcAw-HtSGuSerx@k ze5uCMS6|f8ae2WyLzjgyHP+t!Pu|23VfRmIF4%eIl9^6y4Y#EpG-*whQ!mt=bJkRL zy!Iu#PEFm@u3b)Q6EqJcTuT|6Wop{;)VTmp0n`+d)_R z{C56Fe&Q{BZ+lC=w{bY~t9v6h5q;l`H=^sH$v^a}Bi~=x=wX~@1bC)9Qn?p8chNW5 zimn*4`YzvLCH}lKgCn23->&U0cAe5M3+iWZx?dgird|vRTp@kry~1Ostc2O1e7I`F zD9ghzM>p*)u}j;$7JB_y&)YiH;G{`hRd{$LMHOQ@M;af-ZI=eW)<&0Q?VY|zN{XpH zY~{OmI@mvRzNLx%o!%0rtj+au>`hJ~{jJBn4_vI_kSindA0JO!R>qZrn|!+Mie0ZB zoTJ>KMUN@}V{zl10f%Ln{~Q+-*WW%cLilpT(O zNTGr_1s3!EMQY*q2R_OZdAdvlxq-^NWD%=^nC9ZH9TKzlcm36j(!S9EM%?sP(^D14 zo5r2x4X0$v0O?=XE3YZGaT5kV-*_wIq-u6z!?oJk+t1xSKKtGCv-IPeOi1|;lgaFy literal 0 HcmV?d00001 diff --git a/images/monsters/husky.gif b/images/monsters/husky.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0fbd5f896d8b9a54b69b06e69cf47d5b456857a GIT binary patch literal 2318 zcmaLYX;f1O7QpehL=Xf3d{7ki_V#vnclYq{U@#a$p^(XBl1L;DhvVz(8xRn% zY11Zue}7k3*YNQ0prD|@z`*F}Xpu;ioSck9V589(6%}>i!UZmu%VM!;G@6f(PiSbU zo10s4aj`<7xOC|f9*>)und$BAjg5^>N=g!o#e6>B)6+97EG#4>gw19X2!!C^;Oy*d z2*MGG#E6IpI-Tz4=eK$DW}D6C<>i%-kf2m5Gcz;q-@hLpAFo!c1pQane(ZEQj~zSq=FJ;-cgFbmczSwzQBe_vLdnX?ij0g* zNlD4c$)QrII2`WUwQCs}8C$n*#W1X@s_N|7vr9`$moHzINF<4giA_yS!NL5xy1LTR z(wLZ-f`Wpyw6w*=#m>&o+}zxfl9F4uZXG#tWXFyjH8nNm<>hg4afOA2WHQ-oHt*WC ztG&HlqtP5Zco0}$|KW!p%F4?2?Ac?nSoRbZX|>w<`T0|)PR-8F?%%(EY-~&_mBKh^ z=gyrUe6Uw8mn#(MU0q$GCb=$6<;$0tRN}#O zKXBl{?p^O!R8(|ybW~PWDwR7U|=9WKfkA^=luEe=gyt$>+7@Ir>d-LoH{D=9C|^m;e0ov@q*XEyj46C&T51oBmPeAJGfnTf4043r#`FDjXYm5gIb$D<8xerJy=dG+@0_InJ zYwSb<{Wa_r{VunikBtvVd;{ygTp8owTWaqq==qI}{`#gsr&vc%=^%I{Dcihi8XtBC z%fh#~ql-{ycy73`*=guTvwl~a)LA|K04Z~wwV{dO zBIe97rZR#m*9h0wzwj*T*TJDj*>#HnQ{+Uh1t4dRPrSob<&KNhCDRC;S#hI~mYLtF z2MGeL5iBKQHU!npVT1$PDRmw+qLo5^(`wM=k-2hF`KASfA(mKc4=ySD@fko!G&PW1 zg=QG9oc`RJ328B#kDJ0QC!^obNtwKDX1u@0g4KpgTh&2<3y+4ZQ2DY3W5!b|h-;_~ieQYdb>NlK1T+P_O#a{v%7uI(qa4rK6j7%n%z zA7WhgUG1Vgj7>WarQ`NK4#oFx8@+65VHkV|v&W13Rm`P$(4?c1Kg~ZcId@T!*pki*Z z5ou=#Tf8nrEp@O$M$FUvPz8wp1W->QQN;CcY3>^5V!eOu_X|bfx?pNcXK2vreG~5%i+069XT73Df_(%^~F#fub}oHG*W+$#UatO zet4g9!8w;JU2`tP$~IoYMhVFOFF~u;pP>0{6Pl*pm$y*JZwG72?f4Tcx2&%Lq}k1v zBMVsVKGf1hn$8*(=BsCJP}dYZQ`{Lf$XQb-7FhrKi5;TF&kOeFnDtmhPwY=KBi(dT z-Ov+vk#UBpNgn;vJpo5nPiziRS%!=+G1Vsr6);fl&Vy30eO5H3&m4G^$f93QR?E9d0Dcw}Fif#MFSgb;4o?px+ln zsdqQs_jSeli%p!aFTUw4{btPH9qpfLqIY^}X!M^lUY`v5mC3`9#4kaki^qzpgNO`R z(hRu%R3p5l*$hBlZCQOmZw1DFESRH$yu@OTl!;dBpJD$z|MxkfctT@^u+H^e5oxCC8R&Hf@G4_qQg#%rn#y6o%wLSK8bRy4f8=$e$ zntJC_`G@N!^8Uv>xQtVkT@m{Sb6h3#829c!e=xU1Kg}FKPZC?vB$MQWN0xNgZ4pJV KlZ4=ag#QAIjAnrV literal 0 HcmV?d00001 diff --git a/images/monsters/hyaena.gif b/images/monsters/hyaena.gif new file mode 100644 index 0000000000000000000000000000000000000000..932ce7674ed7a8c8d8178b086b1e1346a35b2c44 GIT binary patch literal 4033 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 K`ptg4%>M}%$n4z! literal 0 HcmV?d00001 diff --git a/images/monsters/hydra.gif b/images/monsters/hydra.gif new file mode 100644 index 0000000000000000000000000000000000000000..5536e552ec081d03275e9e9026cbbec75ab6c346 GIT binary patch literal 5686 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 literal 0 HcmV?d00001 diff --git a/images/monsters/ice golem.gif b/images/monsters/ice golem.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d6f1a14491d7e0836a790715077b42bde52998a GIT binary patch literal 8102 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 z

sinn|{%6vf8q@;%Bl$S0|k4UBe4#afeJm%|!G-| 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 literal 0 HcmV?d00001 diff --git a/images/monsters/ice overlord.gif b/images/monsters/ice overlord.gif new file mode 100644 index 0000000000000000000000000000000000000000..aaaba2959fd6e17b429e4419a167988187cfcad8 GIT binary patch literal 3870 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 gXLgKYc1E8k literal 0 HcmV?d00001 diff --git a/images/monsters/ice witch.gif b/images/monsters/ice witch.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b93961bbbbdfdca25e74c0f4a520711f017cf89 GIT binary patch literal 2474 zcmZwHYgAKL769Or2jM~pTtbw~L&$|#xfL*hOeaBF!X*I=XhXy*5nCYONFx@ES~WTb z5(F{wYQ$GM3O1BlV^cNMGK~ho7{P{D8(FP`AdcADPN*;i9fu6D-wnn zJ~T*krQ$3xj^pS`3{>~?SMzzHKx;B_a2yVT`PpK~7uuGKgETo`Dg{y%8ij&TjPvSp zkRZlZV&2q1l*7TIQ8W-<4gf?1h%W>ai4X|_WT0=+g9?*ra>_8`(q6VW2b}Ucow3cR z+^rmYFlKSP$G#skem|zG)0w8Gz;282o=aMxGz>V6?M8SXHZ?hAnVC~oD8;1;1c9Yx z3XI3MUbk90Er7*W{>30IRiMidP-+DAF5`nSU6<8#!KCkZLJ&}tDr8$^&VDD@pcNO& zb@e*;Q@5(!sM@Ep-?q#0WU7NIESc|iyLFuwYnRpP@c6!80Q*6% zd#^7Ea`?)%9MuNCa*KHGf!$apotv2h`z&J@l~@dF+>IOeiB0>&?t9j`e&f_-t-DKy zaXFT!Ze0%MY*SbcNsvFj_uI16?osH;sbjzvr@DoeA%-eb4a z%lVz+?>dyuc9p(FJat()Wqu#5Q5X&@6m>c=50xfkFa%_4IEWtrYY>o!A`IAhLCb+4 z>)ag1!c-Sbpv(lC$E>H7;PjNCOzNtW@p&9qyHd$se6L;HDQlH<>XM4X#Xy}CtW{wQ zMBl78^gEqZQe6%o4M&|V3VkWAFBJm-7JmlyP}hla*QcdQL<#Y15@9imJ}3Jm01t>= zj2Dq$i&Z_q;}f1~9#1($33@gE+TdBb)-PHd{^YatqeqbF7iZANMfL`7pBI~pdZIIr z_@faQb2LK72ejy)rZcYG@=na#=I`?>{S^_XIBH(by<kszzZ;_aDK#*ywH8?a;4RNFz`R?YxO^*Gy6W!Y54C{-94!>1|EkBw?^m>3t48)dvx6h7A!39CF1=GM*+c-e z+q#{OpmX41UsOVJRd0Ogxo!d2ylzhfE!}X%mr$QQLkXyT6qr$=ngt@m8_y@Te#wt2 zkAOqHHWEzCZ>#*Hf(%o`|0TLg1oW5Fn#gos6QKR*K!v_Y_B4^WU@+S@aZ5ep4TL*S z5_H_>P%D9wGb=fk(j*+V5kGrTT)hNmOxJ~bK@~!h(>hKda0l63+s@OMK$SZM|DhEQvSo6 z_FIj#$hT)VPQF8TKeo znqNw8A6vfh(n(HY^vQ0fB<&5xM?cuY!~A!4EPG~So-h}UaFalL=4o!)4lNPp;`Tm`0l8&t+OMNn#)&=sa8ijMVviOKju&~K3Jo-u^*^p^y7AVjggC`7 zHMJFvugLSB5l|>R&#ZqjU$imn4669zM|g8aT3@%D6vmj@m=O>uQjZ26<9s>YeJrwW zw$(;SxcUnrc>&U#70{Ry1K5AnMEC!%nxEtXMo{QCzpH@~+ecGraZ5&;0IrjIo%WRXJkT1UM}N2t$&$N*I30?^eTJUqxjQ@B4KvZ80beugw_HXDdh=M1QRyL++FQQc+GPk4k4E8+p7DyOXm<4e*CJtoV z&<2z}F3>WP^qlIw!JhM#KH=j-J=8b1SCag9^#T%1x<4f7qp8QcsWNs&W#FF%Q^^5r zTR|lSi~hn+eZ8Dbe1&AFphO8-mqjGy+q&?eRbNT&c-`8YDjXU^&3K>Z>NqLrb^VnZ zG&o<=6T+KM8~ASf?Kd3SrDtNN8_3HxscWIVW?QF#p5LSOA;tj#g?cyI$LDC|fng%G d_8D=xyZCxz%47Xa!M(N>TAUa2G6)8%{{uS}^osxh literal 0 HcmV?d00001 diff --git a/images/monsters/icegolem.gif b/images/monsters/icegolem.gif new file mode 100644 index 0000000000000000000000000000000000000000..9fb75c2c913ff5b55d91b5c47013ad45c9c1c7d6 GIT binary patch literal 4505 zcmWNRe_T!X*xANomV=c6th=s;QEI;DZz159y zYZVbr2}NyJLWrH4kjdQev9{S~H`*4neXe~ytc|Vj{(JrT{Nwq2B_<`zo|DS}2K+G& zg0c(z((}@)8h?NLPhQix^4`J!{QmB{*MEz`VzJ=4cYb?&@|)*5htJIUxVU53@$}8# zO^<)H48Quc?@`sYf$6!MUjFsZk%8~;Io@4<{-^cj+Y3Lv>HGC<+xIVvFW*^Ock=z} zrqESeK5o0bwbPn=w4?5;@84UxcH709NhQ@K*YCN;XRbYY!82(|#F}jj%IY?Kc1^Rb zQW3pyOUJb`;eO}HYeQF`vpS88S#Enx+X+@kj3epl`dp|JGx1 zM11v~Z@d=etZnPw(a{sLwJd65Ny093`wzcym%mhRt;nfARe$H(V~>Ai8`^eVxV8Vz zP}%i+KDyj_8%wY$VR^?oHg;MIPIa%SZIMMKukW~a_<{ZU%eNmjcVd1s)*Sn6*Y$f5 zYjz}js9o=~LYU874yE}U) zBxlcA&$%aL&RVzg{IlPe)wNbx2Ui^b{KMK4GglX#d-^(VM^*K}cM}(6Z@Y3w{Yj-N zHe*ferGta^#N7u1vhs_2?#|t?8=E?7L({pI2TyD6Jvq?(D7Es?;jexm=j(R%e0lZd z+umRPVvlr8TJT|h%Xwl}Vr)@`M`G3n%k_kvdt-O*3(qf_Usy4((2#lHm|H>?*K@a^ z`TV*Q=Up`E=?9McE?yq8TpyT~pH+L}=Rf}bOHntJ%57H7>(lo7MH~ zbw%I9D4ub#P{}#ajfRBT5 z!b@x6tp?mBD7)WAO^TBHCpQL~E9TAUrzAUDtD6(cy`JZ<>>Ez`wBpV6c|~LAezaD& zc7AW@^hG=q=SCMwy3`Y$KOpB^X&JpK4UY3Z{C;Nu${Da4QL6p{@|BBtncLvGOV+w; zP0rV%>GXCf;s2sO$@A-`#jX-ly}9+l=Yy)$Np76wYp3?ueYFY!w=oIVffDXIG}9D| zIYDEAa|RhxplkL5J0zUgyxdYK zf>Ud=rNmzYJxOxXlg?O4nn1I65jQvmuYnr|gs_18CGJUoIQET`

gShDibOtZ`LJ z)V-x1OJ)WhEb(Jn+WRk@PLY%Tj%P-fXBnmUWGzFm;Gb0JE6m;kZfHUjf$4W9u4P{} z#NEp1Oa|8)sY=)z_@cpg3LFDlk2Z3WpsNMHLyBdEX&J@ug1$>H9H?e8`!zm$qyN1;PHy=4OL~@_C zpKxt`X!0GT>|e=q9x-C2{F`U71jUbo68|)9Y8B+IlHA1-WK-fKI|lp-#9*;#frjI> z;jS}-eQkkeh@Jp8L^Uw`A zT@B1-yqg2h8EA2!(5nj1chr&#`${VCFQ^l0ES))r9YbE(6hUt?x5vGAF^GeGaG|-x z&7wkjp^t@4nn^nbSQPvHoxTK?0vksk!`T%1dqu)N*$T5>z*^1pMomVaB^GfXVPgqd z6~crb&#U7+?=|L%WTGB6!RI<-jdyRV-F#n`UBJbKrH$#5oxmYTLwL{TG$IKZ*6*er z8|Mc<%IGh>?M!*l`{mHPv|b6_U#gK@>T}lkd}+4!PEX5L@0)$mBeh?tu>9YC)6|wV zH=bLoZY+kzSW4=7DkC*1VBI^lcy@8BHBNNDi0&7C0CE%L%a#jP#qmBhBUv-kA0v-P zZ@TYtbfmLX;+MUQ__+UY?qavSUd|Qavu8fkdL35zemP70F0^vi+L0W_%coFN0tG#( z0b~GaQ+lUS@l(d^+-$AY+j6MSRdTL$mCkS3beQmy zSV~2C!|?Vo3`!U@N=6~&Bkc{@B6Ud=uAWq(F4I7uRE2^fb(Vq zST*pBOdsk~T_nry7x|*6iZ}_&8lt_J7$FddY8<>vH0&JAazP=ss$k)%`)Rh6YN50! zD3P>jZ~9yVAmC6l3hV+h!9H%#kWZmj0gH}_6}Nr!6zc27{Igkrk-SUYXo748%gt*Q z@cWKLD9g7jhAMU6;$Wa|0Tlfg#v?d&&_C6{TeZUFxU zu^ij}5U*$OJfSR7uQQ=l2AP32csA#jW;Y5RiLDy{&-6xGt9Hh1K4jxMQF`=KNw7(P zPVs~UJ-DK9G=ZpJhosG9iHM?#h#+7ZM{C^D&3)5_*Hu}7lb_NWy=5$v1DZVC7YNf? zT`dUoMN_&Hm9&lcSk>&jjUSpH2ZNv|01qcIa_kHMq;*m;fT!=Qu8Ps-I(d7PLZ9g? z*n!6Y<(Zm{GfyTISycwoN;Q^18Vfs4TpTKst27lL*ed-^hXiNyFxovVkE1m66hNx( zX+~G$$edmWL~|v`C!AG^gK~ACr;=hA`J01SK{q2I?WHotY;+1#_rrh2hJ@-Q;YL6F zQW59p&F(jETmc%*aX!aFWy{S5PZ5Pi#%x44X?sNx_E(1rn05!oJQGTDVyljwD-o{KjWZ6#(yvSY9 zhV3T_fH$ELjIywY+UFjPsOGoA-eI|AlcE{V%u!g>>BJq4r4+j?Mz2gWK%<+>e?3Hj zrA`We47h0p5U|I$Y;L+*r3n;`bn+8E^oRw)y7C!Aq)FN}tWt0YzKMI`E9Id_77<2* z$9XJ25vO62wpKC}2di)n%Bz;{C>nOV9}2@gHe_;Kle~ac6Jbr#Rjn&!;rR?+H3cg! zJf_&6RW6C5D{0k6is3j#K0HO5KhZga2 zusDMub~6gzfzBqS6C5&)0JgJIgMfUS3C*?Pv+Q66CHhtnUAALW%~+lpP`sj+2dR4L z^$`qbWP=X;GJqMgMB)(dHcxI7kRn>FBhg;F?5UYB(I`tHA(jsbwfJW{vYr%60p2IT zg?7x%2*086R5!WA1|9whOIjg{q$F2QgB(jxv{|AIm9&tGr98IAA){>4tnpFe6ocWG z%}x&Rj8X(~s0kPf>9R;O7RicK4B<|}ZLFxxj%C;}`r;mAw-e-mW|4}6HUb6sA{v*m zxK5A+TjqamA`9)Ho>U&N%MShf{5GdTGiK6>7x6R7%|JsD)6CfaTK1grPz3;N7AtSi zeYDxEm?a=51m$Eq9L=s*LdYr)XcZ}SvJ)%J@F@W~o9}c-k9FCI8Z#(%NDUl*6u=r% z9w8vx`w{&UirCYJje^i2vcR>yL;l7EsTN2JNtdhu^T0OJ>PQDzTWVdJM!B zKy-`;3QGK)Lv)+MtM!OlhlEn#3s$l;fS4-$3kTjf#KmT?PQZpOA{@X3jn2{|&a5)T zhDU6UxLyms0Mg~JoPV$^zeP**95j!`_OhZgqReIv!DwYHjoxCQk9DYt6%m{<*oKg{ ztptaywqf-EFQm|AfGE{RywMxGXMPkCD%D!R6CIjMLK1+D0Q9#pWh5^*GNL>?XeY&2 z9B`juLykpSPhw*pCPF}0k;>(a__!TmVp0g_=Cxzq9mjJQpJW9-v2r|?0EE9#-XaKp-LYu^Of$o2l-zw}(HkB7H3;0pA`(`-9^i|+ z<>8J+18#DPQa4-RI$cwtoASIv5kL{)6XYlZPX_oBx|!w`{2P$W0tkD z$is0GIqNXS@epl6d>9bKPHk|=S{W!Rt3|XiY6pWJCmT<%1QRXLL%Td1Am7>%A9C~O zXT&jf=#~Sz#Uk&s@>fP6q2;t$LH{Y$*`brP0u>-{T4AuaiE|MVr|6nWo(|_}fTS|` z0Uqu>BReU`KeU4z6v)s+|Fxv`&f#Os(6Ak)?BWUw9%6^q=<#?u(7%-TyimswS#!xnbD_;Yb$v7!nCOeKO&3;A pYedW!*PSIF26c2TxwLDr>-5S?Tkl@n_VyAtvAc9H2|-}){{wUI#Jm6i literal 0 HcmV?d00001 diff --git a/images/monsters/icewitch.gif b/images/monsters/icewitch.gif new file mode 100644 index 0000000000000000000000000000000000000000..4527547457dccbea1d4b298864b1c9bae08f34b7 GIT binary patch literal 1718 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

^r?Y57#q6UF-B@RVy(oRwTli;b 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 U4y-i(67~Iu?(upQfl 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 OTGTH%Cgnm92>K_*SeGXN literal 0 HcmV?d00001 diff --git a/images/monsters/lethal lissy.gif b/images/monsters/lethal lissy.gif new file mode 100644 index 0000000000000000000000000000000000000000..94cd67f9ec5ffaae4927f81eb524d7ee13f68ae4 GIT binary patch literal 2509 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∋ z+DFOHQH4QfJ*Co%IJR(Od2VE6evGv`8i^1MbF&$=po*Put{=r#^`B2509f{ao+T;I literal 0 HcmV?d00001 diff --git a/images/monsters/lich.gif b/images/monsters/lich.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d825e581e25111110f11259edb29000e6b6d2d6 GIT binary patch literal 4019 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 aqATJdo`pm{dT#28aSUx!pkNJ_)c*m22@p*H literal 0 HcmV?d00001 diff --git a/images/monsters/lizard snakecharmer.gif b/images/monsters/lizard snakecharmer.gif new file mode 100644 index 0000000000000000000000000000000000000000..40d3d094382f35cb1573549299ff05d27872573c GIT binary patch literal 2589 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 literal 0 HcmV?d00001 diff --git a/images/monsters/lizardsnakecharmer.gif b/images/monsters/lizardsnakecharmer.gif new file mode 100644 index 0000000000000000000000000000000000000000..b2fc78d1c406811f7b27e41a9f5799f090cff8cc GIT binary patch literal 1840 zcmV-02haFNNk%w1VL$*t0Qdg@=-35Rt6Cw0Dgl+qiD?-mh%Pe-F#r`!1QY~At4%$p zNIIKB03ch+w2B)lP^(ZVS0`5oG77h>cRFV)X(?y`WvO+^bO6TgS-W9e99mVhTLmBn zV9IPq7e*9h8zzh|Bzr4+Jq7_*mZ)P09eyT7B?lCC9%O0`$KB?w&+0E)X46$5O=Zk$(~9fv4FrAkSz zQ;Sj;EnFx=7YGei6c_{-XE$a5bG$o-LJ3z8e$jmaD`_8iCjbBd9UKV)E?^)m6i&5S zN+n8Cy@lOu}&rc08Xw}EsHe(CSx-g2`!Q~DUvl0YZw4LeJ+(ZN~=-> z2?Pj34jT*uTp}JRkuzBrS2zp<0JGpnvQz;C0SQbF4G;$hJPZZ{1_c2C2M`DY0s}>_ zQ2_t{|Nj8#;R%6Q0}fjl0HM@Sx>^WO5UHk7J&HPih*q0^Bxby5W5Q{EtYrWXH;sT- z&8PyzxfdU8Bs-EmlO{b&yI07a0cNmYi%5$(5EXS+3INRVU%O+fwu#%r1y@HFN|Q%e zWHUH+DHJjol24MQV5MGM8bFLhv~2(i000OJ2daGnj7TM`zH4D}HKB`8T{azKz-ItH zfq-QyfMYO=e>BX(6W3AI)yflui9lu}Ka_`Ek)k=ox&hF%3Wh@lV^S`fRTtvO0a&ws2nod7l75ffZDWg&iunKb*K08%%>cJbyq; zs#8&?RZFZ=RJvR*gEqsbglk0!PE99eTpe&&93+l0EtNQHVJPiy>QXVo-is4xTs-O zzF+{X*Z%L=A^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*HiWP_S^Mo%>gz&={CHz3j7&t6efhi2Mv&0ZXWB^nK5I|7V5^_vafPa=% zlLH%8B;ZRA-2gGh7+UN?04PKamIWG1q+o!CY0#7b1sc+H!x|)7rp6KzAfbUh>Nw#7 zI=Y-dfFnytGD0n~*s=tUaL}}X4n`cggc&JFA%$!hEg{Z2+brUP3&sq#1UQHkgMur5 zEP+c=zz$k8)d9~7@SM>I09p{HMjT-n@dO7W#*qRAQb1t_ znieh512YROz|KE3F|b4(E(DQj9Wih+LJ4mWc0&X{)IbwaQgmPjCOaVdkSCB>kj}JA zaI-`ca~7h?HzzDH!wibVFiQ|L<&i)YVgTjF5N0qE2S=Yiyu=DXY@kNCgWUiW9WxN} zi5*LPQAG<&v_TVwI}8C*81zg)MFi9>5kbN<(GklMSLD$JO?uGeh8dZ-E72H0tl-2L zI}x-5sWb_21W*egQ3?r5fZWCrEyUr5&`LQW0~RD~KwTnH)By7lVsl}^EqaVN!xDP5 zu*Q)dEkQ**<5;jk4tdf4M2-R^n9zpUG=&ktG&Hr)f*1%iV{%7J1VYn18;C8~-_($B z1k7SjGtH50Y@&@AaA0Es*AFeB0T4?BP&suf1Yk%62rLoC&VyaygBlyy0EQB%r~U^M z5x_jt9d`t^K>=Izycrx}EP=o^%Xr{H@D2@@&{9i~z(W@;IIlDqDs*xEOG|X&{SD#| zw1fcVfbq0TOMF008YIX-oedzA)BZ|JNPr0vfCXgq4Foo@0X81jk|mJi1CY4I3i?)q z34lNe8lxW!YM=of2%v8T0E8v3Kr-}kK@40tonWXT1WI57dv(*;5)vkuG6dxuFs$2V eX0k(>`0$5745APXhe*UC8u5roOyUm%0suP%FSS(w literal 0 HcmV?d00001 diff --git a/images/monsters/lizardtemplar.gif b/images/monsters/lizardtemplar.gif new file mode 100644 index 0000000000000000000000000000000000000000..62db32ac15078b29d5936385aebb0d37bc400932 GIT binary patch literal 2397 zcmV-j38MB#Nk%w1VL$*t0Qdg@gw$NkW(*WL6-bIh?U4t-muXc(FPraUcgJX5w@Dt0DywpmJ}MtX5+7gZXF z+R6v$Hv8J1NT00?8 zB6vFrB1s@BX)R_&BsL=vvgUzQnM}IufFfNXam8FiEEaKXYDzgORftM1cQVDkxjK0+ zV7*KzAskeRG3}@WEM+ahTM3qRQ9C9RWwTp&=T|U{Ep^UbI3)~2f;~N^HcgvOqDl%H zOdXeugOY}N+S=L}VjB9p0-W1<4l)u{kvv9vE|k@EHy;O?W;#xgNK8jWXk%dtG7LyF zAZ)T=LW(^c6A7J>g%Uy)S1JY?MH?1D89|&o6fP1J4hAbxC7IfEPn$kIJ2)O07h=d! zJv1#gUny9gQD(nZC|@C?<86GxUQb!;yQWrylFJz)R@vjBb zpk~mkl1v^91q&j;m?fuY ztP*-GU92Hz)|&`XFcENCh5I2r;|TlgKFw(k<4w z!i+;5Axs4T4ja1UPyz)q7~?`1HMC*CBzCMY2@KOfz(FLDBvD^G0;rNv4VlOWhEoB6 zQAaMQOn{FRsN}&%4F>eE2?r~nHHIL9H1|_1F`Obmen+i!LKR@(QO75Kpdx}k(2Rn@ zDK!uR$|jr8;0X*-{6vBP0@Q#+JlUwWQ4QY=b3z4dJVHw$X^0TdDRfYC#0)ib(n%j# z`sBg{6Y%5B5voz~V@IhV1I`azqBVTcGA9C1f98U$5C8AXiH#HfY+r8 zj6m_iu!U`K#Sl=}&_WA1+%UpAHI#ENApCf&K^};l!iUE*Si*-MM?_P`u0&yhfh7x= zj8F{)WReNgQM2F<5+V%$hKmF>uxrT-gcGjHC>n4wg8&^o!HO0y(22wx-aJ!7E1O6} z_uY68fr%#Qe4xS}aWqlMX?#G!hvGBj0*NY%=VMJil~4kNC4*ogLN7JI6ZcAW5AihA znAC7V7CY?Wh3Ti|!h|23@X%k7A&p25-0p1LtQ2Aw2DAsd$Gf zYH*4{s6!Q9YG4ZgYEguGR03BGbi)AtaE4ta!x#DrL%`m!z=3VRhRZ--Dtw@Z2}+f2!kb* zD1dA&k`4@*0~SEAt6d?k26mj`BALNSyQP8&tqfcZav?@6cw+=FIE5uv5e77%p(irf zf+F@&2?)p_M+!!)d4ig+}3f9FnjMF4Q3v2(801*pLc!dVvK!>zMT#$cYQ=;Z~N2g9d=G zO(iIU6D!$(-8@i-IwUL;CB?*0yzmP&{H$Yi666cC;E10&GdeX0gc6(p(vT)$2y9qJ zCb+T|Nj(*f*74lo;0v@|n%1XAZb5p?~8ssIVB4Q&m6 zXA!bGBGs>R+d~ZkmXI3gmbddGgDw$*TZZ&xA;)c?GKQ;?MGCjMnqw|>r%T=HTKBrx P&8~L0%iZpxBp?7g_>sZ^ literal 0 HcmV?d00001 diff --git a/images/monsters/lord of the elements.gif b/images/monsters/lord of the elements.gif new file mode 100644 index 0000000000000000000000000000000000000000..a66809877c289cc3e2076c939aad540bf1f2ff2b GIT binary patch literal 39467 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 JLpt}$e*-O*{&4^R literal 0 HcmV?d00001 diff --git a/images/monsters/lost soul.gif b/images/monsters/lost soul.gif new file mode 100644 index 0000000000000000000000000000000000000000..95be577b7e95a8ed85f6ab186d96b1b26595248e GIT binary patch literal 2678 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 B_~`%u literal 0 HcmV?d00001 diff --git a/images/monsters/mad scientist.gif b/images/monsters/mad scientist.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8322c8496ece6718c338deca306884ca0989f0f GIT binary patch literal 2222 zcmd7R`%_ct83*w9O-^nkz~L4W48sXTJOm^GgWTmL5Dgb0fJ#7Ag5U-O2>}t%T~7kY zMbv<|pmYrvSE{ZA)+#zX+a!PutJ6u>UbM9xP`8S;Eo;@qty8O=PJh_HpwBb&{QP}p zKHm+Q>k|^SLV$tq0eJU*0bl`uVHk>{V`F1XCX?#1S*=zp6pFdIIjhyG(P*lxtKDw5 z#bV*}`8}md9*?)Mu<-2Jv#zc#m&?`H*XM9JPzoH{tzKGM>eps!wc2KNN`)fUWHMc> z-z1evZ=5+iFfefc{{7b0R!e2JR6xth%DUQItcdjQ@9#GnjRV`fmY0{sIPP>hlai8# z8`H_^vdJcm?PL>(Jd1^djFdC$>+1(~8=IS(L-@YR#5IeHixU$Qv9Ynf9uUXzd-v{H ztMmRiWu6;7FxguHv##AddpI>Ub!uv=U867<43m?SF}Nrwz^5cTo$m#&m`yDeC7^6To`Y;aH!me%~q_9 zdEq*9<5d08rs}JmMW6RK*ezNRar9uO7vShXV6Cmc?c@P{1;K9t;1}l)0(8qqMVjWk z(YpawpfEqR@iit1|*T+MzS$o~meeHBtU1{OIoyD3=g*HEPPf1!%TH^hQ{a>6s z^tsuT921o&iCiNNw|r6`8O#@lh4krG|Mi;g!MJ|zv!?jf5z*nHd^&x1i83`_)>Xgj z#QwThcSmkr>OR-L@A5I@&cdt`rFfiFtxt~2QzR?mV|p8__G~REQpw{&{j43$PRsW9 z-u{0^_y+NeeIG~ouc(dMib|}!1yk+a(^zT1>ULon2JJ_6l?_;99k!{eyh}`*}bpm`}^TnYT)1B%BaU%~HF(XH<48leh+B@@n zn)I4c)-7LJa8M~uVu0zFAL+$h(0UGs?ROsd)smcvFamQ@^3^~=V}!SEWZ9*p$a~-0 zr!j^ZdQf&D9iIXUV;fCgmS8d8KK09Utd!O%-mx$B9*<&VPXf1Y#AW`GQ&v8DJA77yRz)g>Trv-?c+eRl}gDLVW%J> zRq~+pZ9GWlBMrS0rqmirWm*UdQ$n|ySeR5F3~?{XvC@tWe98z#83KN24uUg zqwp_KN>GED`a^8`M7>><2@G~*B~Cj0^33{2N;qXR2~S(#oCibXnDuOn`n?Y3oRCJG zj}-JzUxWg1ix*Fhhl+P7|Mt2c26p}Qus@^B(1tMvpWrmVgvGl+j(wpF`1$j1I)V)J z2oa6f`}Fv^eAG?#m#Ja^mB=M(U=nZtYB?PrLIU~-Ie~gUwWfPeHw``cnW$E-6y8ZW zpX0&8P?qQH%kDaW5I{}`^HNUCPu%8SfBK_Ks3f)K4;<;{O*In=#9zS-kY#)~p`{R1 zZx+&VK|m76tTq#Q)C$?)(o%%e%j>YrvrjvePUX^2M4yPYcgA%cea`xaa+)FZ71-wC zi~@c}m-Lt)FB}a?U4Qf*v9s!Hz>X@>=xqdohQ{3bDrer2?Y*M52GPl=9bLTD+ywm+ zrZjrSWT;+uWAZb6)l=TY-5b4&9x+`B#QZBc&FA2j$U86X6pwtB;Fa75mmj8hmut$* z5q6vs`tYjnr*7gDBuez}T1DY<3Z2chJv9^S9i~eU-)ik2myv%@X-=qen`Wu2m@X0= zq@&Ud`KY^q+%E~hDHKkI3s6#0+)gSRu_-)g#bt6DlPCQKr1`7u-YedM`vUKphbGih zWwuiSqOoBW6(KU9<^%(5Q^K z@>n~2bM~v>6)F&Qf2X%?slKD|`<@C?5Y{_SpMX0m2uGL;>Yb9}e7*SjYkv~biv3ZL F{BMk7-p2p{ literal 0 HcmV?d00001 diff --git a/images/monsters/madareth.gif b/images/monsters/madareth.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4cbfadaf239f40a43a78a21db40694e333a7882 GIT binary patch literal 5410 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 Ji9`Sz{|g*&APxWk literal 0 HcmV?d00001 diff --git a/images/monsters/mammoth.gif b/images/monsters/mammoth.gif new file mode 100644 index 0000000000000000000000000000000000000000..58db34a4606c9bdcbc156ad89dd9be92fbac65b4 GIT binary patch literal 5716 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

    <7+`qqZ)9nRKI z96%vtiL`6_d80m62GnAYE{;F`!Y*m-2<6_P795u2{cRFQtpy@O`o6*NmWg(F*2<;j z3-f07j(Hj5gBcDuOxNJU2k44!1hpV053}(#>H#A~!+T>toh<%-&fF377V<(9K59>% zxO*b@GG@{dC47xed{-tt$gVQpT@b$d(Pj~t)ywS<9J{TSAj*0b4cEeN^YT&(#xlfg z6QGy0=tc*El3y3!p0|D2@29M+Kr`&KTX91w)^PFAkw_I=t8(?bP}PY-GftR1`4S~> z>bX;mWbH(&QZn>^AB1-+Q8#!@1j1pB{o=lmdgWLRn^#$Ep+v@6+(8>3P2agGiq#&MX+sh&bFtM1>Ww#)d2s7)imzUnP=L*-(c!q`A}!vp^)s z$He%lP*h+OSx3Hb`A#(_%Y{p4+^%e>B3;RfJVA}Fl-g=Nud{J5ms?IIrep5fILQP^ znst0EM<+b6MhfvwjkEiAZB=OoW^8%&^dKDAV@~6qfE}B`G8Ep=A%Q1;Ep z4QdOf(!v@xC-GM|#F@cIYZz}W=`!i#Tx>YsP2xm6cYrUqVxJ{xr^GpRQntC+Ks#NlAtZ=xZ#j#wV@^AjfqW)c_L0LT z3GtX}ukralnN<8e>wpU%{1hc6sIBns$ISe=BEGCEoutph(I&}I;4mSoad_`rjaJSV ziqxRWyJj{Jwb@j>aw+WoP=Z=qwyeleL3# zu?2c+wycohaomy{bF?^nAgrPM2=oO{d+h2>t^-%KdsD_#fXV3Q^NgMd(HJS-G|tR- zd?$%^)|SXp`J40xg|>)9TDs{lxZ{UsI^LR^9W&VhMz#e}c`2pX z0REOAQaOJT9PU~m*B76$OyX%RwOE{qMWXc^ID7e#^xfTQvLKm-;BKL-?{Ie}rrpAtk_W?5*B1FiW(s)g2OS9Y)ay= zY{{F^nng}cV2}$HM2oHb*G0JO|5~WCv@S@CZ7Rs43Z2dlgUuA9Vhx^avVyQtkykxX`orp7SADHd^#!9+?O z!NuxdUcNQ?1gz?@gIrT}#CaE()U2iT`T=f58-;=P5ncn3P(SK9_u<&CK7`0Di7wyz zs4k_ljrQ<1NL-Bd>2RzX+E6=AZ^RNrV|I0qlXTco7a-E&nf4-(uFg&h;i9vEl=+mnBg4Tm4jX$I`ehY zVx)#S_g^~6oO}js2NImXtfV$dG-eZyVS~K;CV?E+_dy>zs;Z4A?D7=`%-A@@(SJh< zS8E7d2S)6ALZ-M-LNSXPuJ?RA!<|mw)N++P*7GSxZz)f5Sd}9mNT(d-?E7~xjuRmI z(=`MmK!|gD2w4@&C^;(n>e(zB_2*mH4yIpO`rq{wdQ%ls;IeQkUXghyC~kiSKFDli zATKk5e?cUyyhQ5KrknqizTnJFD!MzrsVe@E=|E&t=tv-j7sh6PEwzq@u%?e1x15|A z#)$)-gzJIGRt(&HT}=AX^lr`7^+9~79rxYtt1a37nixz&S=EG*vi?)v=+cPDZbDD; z3xaGyOfq+2T=5f&b?$d!c~ezFFZy#N@Q7f%hmZ9p;Ytdx|2*YG*}eYX!<*W`G!qz7 zIDD0Cuu+b@xpphO(_Wk;p)6MQg+qHj_R zRQ`hwRV&+gOTWek=chpU!re2a;`cOWguJ4ONB8>7zrOH6N~4Y673dkKnJ}{IyPWP> zZv7WAB&fj8Nvp7s4!z4(A|1^4DpKLSUqbfJSIoRWuhz@4kMGL?iU=2ex4k@L-nss= zm1;02bCM?C>+M>3`$xV_b#!)oK?+cAwc5)0kf)s3jhEB literal 0 HcmV?d00001 diff --git a/images/monsters/man in the cave.gif b/images/monsters/man in the cave.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6a1edabb63c8be4da0726791e93718ac21657fb GIT binary patch literal 2090 zcmd^;Uu;wN6~~Y5YvWn-91TSqeZlQiI%Y)#e$@hFEKJ&g)*>7OCri3*q|;`7Xb1mxXVBxmZv(##5>52O zOHp?v=d_TB030CEO#3P+s}AWklwOTfYSLHZAXO-Fz#rFv&j!hspxe$Rn`s=!6HR)~ zgwkD6zl$0+gOvomnjDCQd@e^a5)68rlp2pV=$$4AdZ>7l4b5)65$q!BnZ?l6-fEu=lx zu`WMJfWt!58eFf2*)J1TqaG*lXp@gK)3i>Xj?ke7chE)oSQzUKB7`FVr=9buA$@@3 zv}p2tDAC9b$DFr&gVs5P2Lp+E>*TfM89=%@!2_sM{uxjA;nGi*i_j`jB305QW*(oayi55SJ!PVnd$6OkA zh&K4*Iy@N*4tGTnj&pOqjEDqqm=Oh_*Wgwy&>F;fBvdiST`(M?Q>_w%Kum{)jeMd8mP z_a@N%e3iL^$>H6~TKQ5Hak?{CAuCwMoD5$Rv#%}KyHWrq9paw|hNtDEwOrn1hVgQP8ODTIa2M#mnme6@5r0e!wsA zhBcCe#wj$6C)KBS{xKbxVCRGQtohQKL&pl&+ox)8)<3#;Y-D>?N72di7zjUaSuy>? z_f^L&JL=xBOqbje*Xqf&v*dK2V}IM&PS0muljVm6XT^aJ#1}?761*vDbu!v6O3XEM} z2T~lS#J#(XE6wAKTsp(IE0}EQ*lR+p*ztGr_MpEAn^Z%5ddM_BGOP&jQx{nE zlaXb2$2g4mUGLDCEL$ah%ysvkWQ!I=LvQybI+p%*b4Hy#a+$g$*BO_nYof~jna`Jt zruM1OO9;jP4dM03{{+Hy2QB3`kvP8)St1SC{RqB#IZ3PuEE7u$Q=9mSNJ=S3>+#QO zauG6RdUJpCop;jZZ(!6_8IxlLi(KTou&w{Qjn+dyhI^ve@*~@XbxJf+vNgPE{k4m0!Cn|l`~P#8a<4EN;OcxPEyntghB$+xe+_|~vmw@*+A1PB6y zD#Xa%hevf~ODkp^QZTW69*GMXfeUH`)cRjM7++YInvr3<1GG(QR&;abZj z_&0}LWfbStw4?V^8Lp6Z&X=oKjGP%eIzTXtYGpLV6jnz0@JHPrWp?KOB#u~lzAiH+ zS+KR}F3!_@q)3vy!-#q;ne4}hS}!{!R6lj3DDAz&D`XbFT|DSInxxb-)e>3eVv3o! zuH)UWSc$gU-N+JG3Pf_Lw=X=;a5?i9vEsCBNy&+F)2PBUbDGy&e>jzu%dc<|(TTrx zGD3=6ba(5@Knl(&qTaTl71;toUfG@$r+fUxu9)o7V>C)U`SC#cVma2l_lxe99J}~m NLSjqbVlf79{u{ZPb};|| literal 0 HcmV?d00001 diff --git a/images/monsters/marid.gif b/images/monsters/marid.gif new file mode 100644 index 0000000000000000000000000000000000000000..360729c10b97b8dfbac67bb5ecb46f22fb077e37 GIT binary patch literal 5235 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 literal 0 HcmV?d00001 diff --git a/images/monsters/massacre.gif b/images/monsters/massacre.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7f80f29c1dde19e485e6e21e0106c5fe8309458 GIT binary patch literal 7819 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 literal 0 HcmV?d00001 diff --git a/images/monsters/massive earth elemental.gif b/images/monsters/massive earth elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8e4c6b6cb27788b3de18effd519c104f24fe730 GIT binary patch literal 7061 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 JC7~emzW}jZ?PmZ0 literal 0 HcmV?d00001 diff --git a/images/monsters/massive water elemental.gif b/images/monsters/massive water elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..aaaba2959fd6e17b429e4419a167988187cfcad8 GIT binary patch literal 3870 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 gXLgKYc1E8k literal 0 HcmV?d00001 diff --git a/images/monsters/massiveearthelemental.gif b/images/monsters/massiveearthelemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..77548b2f54b5eb8ad4cc4b3ba2de23340846604a GIT binary patch literal 4147 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 Kn}I%c4_!5Qy literal 0 HcmV?d00001 diff --git a/images/monsters/medusa.gif b/images/monsters/medusa.gif new file mode 100644 index 0000000000000000000000000000000000000000..9fb75ff524a99131adcdac98348d71d7f0f1f847 GIT binary patch literal 4005 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 literal 0 HcmV?d00001 diff --git a/images/monsters/mercury blob.gif b/images/monsters/mercury blob.gif new file mode 100644 index 0000000000000000000000000000000000000000..f355f0b8bafcfbebaf0ccf7594bb288c4d937a52 GIT binary patch literal 3019 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 N>3lF8I(tJA{{pM{In)3E literal 0 HcmV?d00001 diff --git a/images/monsters/mimic.gif b/images/monsters/mimic.gif new file mode 100644 index 0000000000000000000000000000000000000000..004605c4ac987581012cffaa2ff71210ee718a34 GIT binary patch literal 1602 zcmV-I2EF-5Nk%w1VITk?0Qdg@+M{%pVmTurA?>n!iey2rc}w%##A;hrTth5NJusDV zSc+jjqmF#p$fBEaP2{e8s*{4kopxJFJlV{?_P2b?l47WXUnUp}V@o?rIV?gf8apc; zb5AtGlWHa$6Hq%VEFu{4$f%-;d4pU#rG;vYTQFKgGDtHb+|b1T%ZhSJEZf7G+P0Xo zoQrf*GXBbvK`|mzIwmhGD$J~$X;@6YjAL?DJr@=iF(DCbP&-L79)@aBcvd@DJS1jG zE_+xzRzfq8d2D1$G=yzi7ZD3!JtLucTZvpbq=$5LV^pVbMtNRJ#ExNPLM3ieHETp9 znP@)2sg|#TTFwGQN#&Yf3GGZe>dd@;UP!W&f9}t<*SDtq#*zESkDhZx`@)O= z$c|}AHuSoN#HEdibZ3@cAYe$u9NuFmynQ%?y#<7NF zNa3b#i)KgS!KvQ8pmte3Q9mw`d1IY>V3u%C@$uT1fo;&1W&hZo*_~?Zu6OI;zQ>tx z`sKXtt9k#xi0|+3X-YE5muuwHzyHyd|J9lCxq@CtF7~*C%9?S(qKd+!kKe9@$EJu* zHzWW600000A^8LW00930EC2ui03ZM$000R80RIUbNU)&6g9sBUT*$DY!-orR_?vh` zfW?az-Dq@k;|38yZu}t>aNq!!14FuW$(89)pFUNpoGJOmMJog(aEL4@W7ioOYBcC* zQ{+jLB6E_OL7?Nr9u2VUNcf`74Z$0;NNtEQj!>OC(<)S8;s6^qDc07c`6j^%9X~kW zAh9a&2C-*2V!-3^W5j~LBjSYN)27FTTN`M^03^W!3^>r}`kON5NdP4U3ZP4e1xtq- zOtKu|Bc|I1I6Ck&rjvk%1griG2;pH)6|+j`yv%#?;Et*qqO$aZBu0vc7=DPrP;SS> zL{A8=z$3uz2e$=r7L2&!!i5SS2zrVCiKn4o0wM@Jc-Zh|A}ehcn!R|D;)SG015WK* zx2{4pd)a8P#|9f@Km-pSWZ*%2{>UN(AsyraOg)|4@xUdN(Bld|=48=>AtrDG1PEIY z;Q|i!c!0q~6O5rl5gde~0xc!fSi&_6yb(qdIIJL!4KN}=Lgb%4)u|Wd<+%QEH{q(@W5!Z~MLI6jEQp^!h zyrDuH8epQ01Vb=zK|g?mfx{mn`6CYo_LP!_6jZd6h&uq}@ry5?C=f>sJ0S6gGc0(3 zhZt*!f#^Rs7@&wfI((2rAs^`f@c|GR6!J#`KxB{s5F&J-Mg)OeaDf?Opec|)u_S|v zG9iS($ua6QutGG;n9_hQGw3tR1j6VM2n-j1aRDql{o{`few?s|2^e7T2{{-@;7Ay) z=m5kYfq3u-5JYg101g*$QLeeXpkam**C_FUH1B}I$R=<1 zGYlJSAhQSyqp%Y~K1e_xfCw5b>|!iJL`-D(;fNzHKu8cZ?)c-7M=tr~1O)^DJ4o)) A{Qv*} literal 0 HcmV?d00001 diff --git a/images/monsters/minishabaal.gif b/images/monsters/minishabaal.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3d72f6149e87b394544085431137808560e847b GIT binary patch literal 2030 zcmV6yYi<|A<){7Z=5wY?J~5C<6lKc17Y^ zGW~LKXlVicc4Kue6lhpd#0(3fqN4ssN5(uH^E^9j0RhAj4dhfZXA=tlWMdc>20Sn* zI|2g#wtbue0)hepvjYOvBOcygH{we)&P63-0s*WR45I@A|EqM7mLj?Y1Tq2w>pL_| zOiV>KE&uTY=W9KPiWf#k0@o@c+%hI8B?0SeM??YveP>w2Cl&H)La6}(dIAFfYgGAk zO3fS=+)OQt0s{YKRN5>fmM0Rs3kF>Q0lN_lND~Q#Z(-XdBUAwa>OwV40s(!24e2s5 zorQJLEFJ&=0K_C3S5yH#7YH;g0p>R^Njd>KEF(rmMb{o4*gPY10|H!3LM;~vvJ(mH zPB=0e8B+-aqYVWM2?I1I9x)>$WeWvbL^To%1Ia2DS`rD~Hz__m0Sf{F8vy|m0s=z| z1$ur9a1I8E2n7F8OU@`6$t4uxI4oKS1ZYw^1q1;*2n7WN1Oov94-XIP>+9j+;s3q8 zPfr1#uP3j~;l zh|n@2-ajh;$7;V14d+ui=v6VJ^KmUho znw%-Pudq->0;#Y&qYn?72n6wAK>B1x`)5hzJ}~IFpo*)pYE)={d74}v__gzE!P($)oK0pc!Pzwbu3J3pvaS#v#^oC{sgJbuT zA^(kK?HePzHYuN_F=0|jcVAIiArII>GQuz#%rPId5C_yyDz+O9%Qzu?Jsba$VE>kF z|D0w@ClS*}Bi}$QzZnaSOCk2};E!=nm5KM@S0%^G^B~XEpQVi6) z*$_~m7GebU3_!HwN|-D8HC0%k(9eHTas{~hk)}@sww2h$}h0MT98Prprnh)q22TiKYP6ZUiCSi$<|BQYsu!6ygUQz6_-dR+>l@ zk1VjI&`{H-8nYaF#Plf152!c2LK(YL&FowWH7@ql`N2f1aY*d6gW7fk%k#Aq=Ca_f6!xr6eZ-53ISZW zQb!O=AV7vR&qNV~A_F|ZOA{Pm5X}OiJW-8=rAdK<7nC6+#Sr%70pJfhTtEy6O`K4| z3MI@CLJ(5iP#Xt-ND;>js92MM9W4Bz(o-9VC4~jhlmY?;OBf*wImR?$i3cliaKi^D z7;(dCSWzH{56e(shlB-5@qi@s86-s!zkneH1P4g*!V*iopiK~UHnGGFR%XdZOadTq z4FT&k!2+S~ed9u+?oIMZ6naSiu>u?%OhDoRAgpi$Ej)PlM;x^B@hMh=NYM@oXm}t2 zsxe97f>>o_qW}gsym12$a2P>G1xEZq#{_ruQh^k3Ab^Aebcl)7KV|r!&mRIX>)x{k zz0tr0ldP~(9eTV0Nh`@nQH}z@Krn8d7{sH`uu8E|f)vG8v=AaJZ}krW&3BgG#psGx!pA7pGo4+BVXPb_{A6Gkux{2@mZ zH?ZLV5>=qVu(}upRRA9}yweMJEephl8cIk3i!gp10D%XxQd0pMNXSt|ICDa*7;YS!>EWyF7F;(zJq=CF5 zg$h!5umcDleDLHLYbf9jJdY6~uR>BBFvu5itbjlqm3sh!Dq;lkM+jR80D%f898kdu zO~B)e4kO@!vFd$E@x=f;Ag~0~Qt$u*F+(s>O&eD{F@OMy>~KIA#Oq;!5FN0ChZKa= zuzEsLfB-?fO~G-*6j6+D0T7rl5rPFO2wep@(6=|}p#k~GgA`KWzO_8X40|9-9L_-k zbc_H7FkrBA5HKnNMQ;e88{!aOw4lxj@C96%630&HM|HV^}NK`_Ep z-tdJQxIqmdSqZDl1X6_wkbndUu!RCnaRl-4K!=600s~Gc5-C83D2phE2~02!XPCf) z6&RO6{(yx!P=Rq>SwsYt!UGSA0~@Pw5~bvF4FCDa42VG|8}bKS>_P*cEQ2>v zfXap}uo109i5li0gNI0A7*6nmC*Pn8hBbr_RzPD(kdsGG8uOUQOr|oI$;@Ut^O?|$ MrZlJN$$$U=I}be#ApigX literal 0 HcmV?d00001 diff --git a/images/monsters/minotaur archer.gif b/images/monsters/minotaur archer.gif new file mode 100644 index 0000000000000000000000000000000000000000..32e9c020030f1e61bc5602cf8790db2eed3425d7 GIT binary patch literal 5187 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 F`A<_RoLm3^ literal 0 HcmV?d00001 diff --git a/images/monsters/minotaur guard.gif b/images/monsters/minotaur guard.gif new file mode 100644 index 0000000000000000000000000000000000000000..c021316a3ef45e61b178cfdd5dbca97b26622a44 GIT binary patch literal 1992 zcmeH``Bzg19>u>e%S!@*mmq71yaXa3TY^SqbKZ+#D+K}sfkrgMwNfB}G9sc0NnCJg z&^qEAwE@bhORI$OjK#K^1jS`MW9aEHhZ&`Wu^n+44Rd-%=wRN^{yy^;%>DV^^S$Su z&o}R#+_ZF^2t@Fv8LWhKKr1y6xI<517={M{q;7!F3<5x(ELEY*v84kat^mC}B$`xNUkX z26_x^3pOcC+Vle$$mMdq6b5WIIS$E@;IP?#*A(tHXb1Gt*OTtdrjIcPyvAXnnx2sM z*02f-3snn8f%E&Fk-KssBO_zd?Y?>CN^){?TU(pk?Oc0N3V}}|4NEu1TNL- zbZKd6#l^+JTmW85aKSF1g#bM)CIoJ@#|&t3NP5p-(V$kVA$~26WA*j*29-1%1C2(b z*wwF4C_q|WP*7l1Lwb7pUrrO674YnW%1YqTRr_r=>+CdEKlW&pMbfDWvv4Xa>iS5(U8;|_-- zIvA)27FbdSD>s!N{vuKLAuQ9L(ID4bac1WG7zVe^2{;C!g}YaZVB)ND#F7ZI^;WG^ zqB;2Wp6JDDBlX>2Rnft^H-4m-?jWU1?3di0KTK6dv?r52@<*!)o&t-+l^<)-og=^t*A3(@3UoU9Un}#E1>- zo9njp&@))C$d=uWIi-xng=A~Tpi^u|xsSJBoWc3*#SMM`@Y2`}jFrARt;VU2qo15! zIloHDF(X|}(T}nx9y8Ap$EWFX`)(QdzA@){P+_Yt>8Z^Eh!0_l z$YDp)J}$4_<8+BKTYO``5yaeq?`~3x_ZUmu#HsZ(D7iT^$-WoUMp2LG`wv75N)qC! zI9T=O)vG0V>-TYsjuoN26{b%f&HeioEq`lH)Ru5(el+@W3RSsLw9z zj7cx|W(QJUJ{_l!7M`fm$!7{XoHLf#=Oa9_87o+Emnd4VxD^so_0Ri61ed2o#VK!8 z4UN-N!;1vZbCu! zyE`I3$VofV$^q9q{i*(_gf)-iavR(}IpTKeJt~TsK(u_S=MO6L(J6)!*<5HkDIJk6vD%-jEpk z)sY*CCFFnOOc?*v<}#yG@#XpUUS)b{;3<)!@3xC46K16~dUZ;3KwZDRNt|O2V)wU~ zOnZz79bN5rbeyDjE(#Nf#^uybUP+Q}5vYx9(bJSMR{1?23tiZa7+}TQc9x7ZR;m&@YW-^IG6P)~f zBfaCnY5xK?&x0F*CYe`%Byu?0Z6B#+t*6(^f`XmHnYV>qXV&)BOG zGL0tIbzN>GRU>l|YvjF38lU8Sbl@D)$PH0LS!yDF6Tf literal 0 HcmV?d00001 diff --git a/images/monsters/minotaur mage.gif b/images/monsters/minotaur mage.gif new file mode 100644 index 0000000000000000000000000000000000000000..52e5babc511225ba7fb4c63fd614206d281591a7 GIT binary patch literal 6444 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 literal 0 HcmV?d00001 diff --git a/images/monsters/minotaur.gif b/images/monsters/minotaur.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec805ee7c3c8c92a181e749cfd0a74212fe85922 GIT binary patch literal 2934 zcmd7UYfzI{9tQC9hP;GCc|$Z@)f&-2LI4v$G!T*y2;nM82ndx+aJd+-+(j!G?x29& zr9#sP0VGrkQV_5ps2~VM1**kLWvx|k)mGYJtDUv`rk&mC&WX*v`{UBwum80+{km$WP!{CjE*3i2GxZ<< zz^1npkEGb>l-L-`o}&~&?4d)7SX)Zm;UtPou}2ZTOR--8HoeB;31B0zMfalzr2qiG zU9c{VQK)G6Pxe1k@s~YMU;XCOKAYoY38~?7_nOk46s&|XlRz-pAtT+}9FGr<1SaO$PDlzVCC0@J ztR)E6oT^NAB;f%kg&>Kt*~sEnA(|@B&QGFA&POey(>fRp^_u>jM6Hb}*K`2k@`s|b z!Hp4{_R0y~4ML-q(N6cd8_cc01l!SYJ*Kb}? z_&J$BzYS=W(Ul$rIHM z6GOeo8HD=)>lo8C>Z@<&aSL!QaaU5BPiLI z73QlJ@EWb(^U3d@cgY_C8QFp7M2xgSd1VnOZo@S%XjN;l%I{!wr?rp+-a-_`%gDF zh)Bll{+R$cfm7;LOEjr7Ohn!z;!j1=$YC$=>hSi#nL8gGY&ZZ`r)`)B1vk6>Cw$|N zg{t6h^}REsDW0gS)X~bsJd=ZLJxbh7SD>-wugOQiVI~ou5aCu)NzErE@YJoWHs76| zmJ!NQD}Q1)l^DI(lw;a0apU#1mTxZ>3OSJ^0tpXUan&Bex~m0}Lf;#AtzG{5HH66o zgPPRy=LxDaD5*7PiIG`8Jr5aTq4FSDRh1BDsT>BlH%o|w(>9Yov=4u z1m#138eo5LdTcCfSP$$}*<~dzopTGcg2pZzUnAPuTZhaoS5@2yu&)cBRhK*5v_7-a zfThN+0vL^_z&-swCVK`JzX(>}-{YRw8ur2sJEUy$%8H-TMzlF&-<97#3Lluq_`WBU zJ)Z2b7eLT| zuB-A5dn=7&82}X)>x46cU1da?O*{(B(*Yk0Lhv#-em3fRh?~SD`4Kp*0D2TNY4VQ;Vty?vpD_hxtu)w)N|tRIf->}E#$WaN1)1!1 zH5g4EIb^UkM(gz;kG`z^vc1S|Px{qh%=%K%H{yK_^l?LgWgcEVK8Lw_3w96sshp;8 zhYk2V!7t{)^c<}e;*1>g(5^l2Gq4ZOxVzurU9$htyVHX&wa*=m+1tbM3+ZMXPDXl` z1B2kw!m1~0w@gXFa|ynHC?;)iCOa0fh9h6jP}w(k0;rcX74Z z4g9K1KT?yVCnXq+7Dx!t;b?)a>)hzfEHPHaCb^&$3*lz*dJ&4AuK z#eV;=>ir~tSITLN&7jx6=rZowSf4%)=`eyXjBk^?QL!2%a-j)!bwF_v^RzIllEJ0` zeg{P}wkt1m2c&!KWr6%*%pxA>)w4ylnCThnN81@C`mnm9X}aF&AjZ&U@oA72^2_~` zHLJt)^%NrOkSFP8Ib9DoC$7r`C}v2#Fk_o?tqzkH(z$Bt5isjGtHX?>2AvYbAD6en zGx`e?ggEBEFvU_H-^tEuFUskzi|HXZ1i?#q0%l-7=`cUpjpXmMN>4>Sk}T^(8xOAnPFlF0n9YKK}A0PhzUA3yI+&g24u2~6CYnUe0+T{@nigxQm#?yay>oZRl zc;Kreg(Xu_^mhlgx-qKMUPdTllw%Z zvV#)F-#hE|;EADYQdy&|MNjj>W<^)7!`bpUO2RnYQWWA@0F+8FjA4QNmFt~qOwd}R z2JS~EbFyR~bNceX^X>VhS@SZkBP$VbRXAlbRamvLJ~=loIJ6v0C;PP z$`hFAz{Rd0*NCY_mBEb_qIM0jh~)#7AyL zE4J(U()5joynC7VYZ7q;{jwc-Q6syr$UkF@b&hwPw)4~S*C!k-x?&IT3k#&iO*c)f zz49tLm#8jLA_4xg0w>@LtP2HU;^D<214pBuKOg2lvx_0t(qTLm0d2dB%!D0so0}HV JjC=rG{|Q@bKMVi> literal 0 HcmV?d00001 diff --git a/images/monsters/minotaurarcher.gif b/images/monsters/minotaurarcher.gif new file mode 100644 index 0000000000000000000000000000000000000000..7023e09541764a1af457f0964ebc81f0fde7a917 GIT binary patch literal 1549 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 TZPVEY^N0~JWFY3j(1!m4-bfvw literal 0 HcmV?d00001 diff --git a/images/monsters/morgaroth.gif b/images/monsters/morgaroth.gif new file mode 100644 index 0000000000000000000000000000000000000000..b20672378a3262a0d997511b27e4bab34d2e1f12 GIT binary patch literal 6862 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 literal 0 HcmV?d00001 diff --git a/images/monsters/mr. punish.gif b/images/monsters/mr. punish.gif new file mode 100644 index 0000000000000000000000000000000000000000..99c45b7b6ff00fd4056e1dd2f31a1b756f443de1 GIT binary patch literal 4032 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 literal 0 HcmV?d00001 diff --git a/images/monsters/muddy earth elemental.gif b/images/monsters/muddy earth elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..939bac19e7ec84c0510b6e057d28163a58b1ad96 GIT binary patch literal 2382 zcmb`H>049R7RJvx$w^KEAqfEt)YuR}AR-1Lv&96+B!dAe(uxR3kBAHbi~%b4K!b)z zLKw8f2@s)zL$#CO&>NJ=5?U=2aHA|hG8g*noK4m$~T(%Mie!h%_#cLV&wBtBj47d zM!;+vH3K$bw7nYnW}|HkKvBSK1>>y(Pl+$$$#(ozaH*Zy9CjP$o0&RZ=2vz~6kovihqK?o7a{rbq_YJ3VQgk0~+IlN4@T>Uj z;N#}S->pMGvj5(ZY?hiZ1i4uMGVFuJD`pUT#6d+M5(tnMf*}wjIc;;G!I^8*>>xXY zYG)wYs|gg+R#GigPpG3%>_I!&abL4Mp1vPKT6QT(q?06s2qT@E<0VI1&X(m!T&N7^ z&*%s|ii2_8HJ5i1iAt=O>dc_JTuH8@-&6hu5_?VOad%9nd%J2NwU(^Wu!Z(6ko}Q( zg@P@p+==jL$e_%GmHk0uMZJ_J0$brgtanJI@Ajv1caE9@Zpm z$e_EW;1zXnlc)_O9M&6x$!tx|r4D^Y*ncdTAETiY+qb3~m>4O@dXJ=33mPDCvNLPC zQy@%$KIY%|=p?%y97f!D9J>(buLnT?B^j-Ps6)Q`bFgX1r`fmYR+3Tl$FMN7&~0-h z8F0UoznCjjj4U}W#G*l9&@+k=^1v0 z%j0R9jFxd`JT_!0(RC%*|59A=uY6ozv6jsiGx~h5Am~oT5QY0%yJY*#i#5%)#z^{({BTh9i(3zq9<5D$mfHIoG^M_(W~O4z^e7M~6( z|ESu0;!9`lP%0NK57Y85e|kHWbFIA9LC_7!{13ZE_7t3PZ0H@-Qo(|=Q9uhM4;7`8 zau+uf_WV{kd8Gd0+Ln!st5@;KYv)Tn_JWF2IpyaQ*WKSp9$#hMrEhgr?AcLA18yHa zSB*_>Z3=MuwfFpW_d%9~M_US7p7q2NI`u9$R5d;iu2dywRL+XxJ!v~3RyOZh@M}{; ztxB1DlM*5M?W$-2kfz?EV+LZwh56%|??-OtCHk6TvTq<9&W5=TIZO&N5kj9$B5u0v z&zVCv$S}Cn(N8iL9P~M=X5l;RoH&N-+@WH;F71UdE{Oe8-7DSw;r`+CLrKmf^$X#Y zw?{7=J2C5JdU|L5NQGU1Qq|*`tW@p0hdt88JEpyjyS`^zg~qYt5{XhN%y~`wp#hgF+_+YF7H`03kBR+F@G9!zX09qD5!&Uns<(V@sjFCAcQH6( zh7Vi=r5Bw)jX2qd?1-TsqOX!0I6ELYlF=fq0 zPIbHf10B@{<%}$w!s=og!!|6Y2~`MrQQCaqn{(X4Tg;Gk)26BR{ z5perObO6tE5D3I-aF`m_){3))yzcOJt&w7q{rWR)QNtAz2ky%RVUa{uZMFQ%0l*S; zad6q!>Zqv@!yM#V=K7V`($SK1N-L<>)I3;UGVR-?g~$RqazKYS;lEh8{MEyT+SIZn z)o9E(GYD-`&#FQp8;D|pFVXXBd}aGj@5^u>q(#rXL{V06@HGCnVMM%N|ozRdEBxLdGVaK_nv=J2J#xGy}~ P51n<*V$YP*fQY{U!QhLr literal 0 HcmV?d00001 diff --git a/images/monsters/mummy.gif b/images/monsters/mummy.gif new file mode 100644 index 0000000000000000000000000000000000000000..3329b9bbb5c4a45b17d58f4432f67dc0234daa3c GIT binary patch literal 2449 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 tQ}IM1X&ny_Y`p*yuZ9$R-#clP`T z&-3|yzQ5m-k~T*Zzg&yc;=aV;2m}HE0Aw;51VIRbLPJAQ6b%m#kBp3DGMOwE3&XIe zs3;DH!{u^$Jf2V}6p2J~xm+WWD3!|C*x1>#W+fyfBqk>6Vq*<)GqhT5Qc_ZKa&n4J zr`PM}%$bvtl9HO5nwFNfAT4dtqD2`Q8Ch9bix)4>&dy%8Y*|iD&Z&d%0dyZ5xUzx$hxz5Die9yoaDaMzKeu4COj$9qq_ z=RSGrw5PBC%)n;yz)(MWzVAXm%=VswFZKDZo`jJb?#rVmK0smpSU12Iu|K@l`v;v= z9*s=&K!kn9RXir0wZpC)x!ggDib@tM6cl+5f**f`rPa9Wx z_I!wFQC{8cd+!3l+@cO;%d2OrQF&sWJ4>mnEM@ZYI<;GxZA@mA#H~sqj99wp+m*Gt ziiO0`e3bFmAp2L?Fo6h^x_Z%yu#oKahKY+5t?P6dLL}fG zy_w<313CViDV{fP-v5Ifh~`trA5g;&3}^#ofOG~q-;a7d7y7Swpi6y}>mCXl`2azO zP62%JC~3I&R?^QE(y@=bA$GD>9y{E`r|X@wVxFn%99hI+qLv4as*$&7D7P7!TUi-pfnSzV46Z zdqClnT+Vuu%j%brOMkCEDph}@KApv>Mt#(!|G7w~TGZiiJSx&>Rw(Jgz^=m7n8 zhw)Tc>YLy3GrYj@^Igv5wsT`diyV zijDL(Qf)z<<{IlJGgND#G&NvIIY2=Ww5kkXV?1FCu@u0B@gj*-SZ_KIuaT&yOEGkR z_aTi~tvR`^_`r0fR3H?h!i`1>Z$PcQOd0Xfc+oO%OBp4CClj+TkN%#)#5l}zMhMzT zVe?7Y$Zag-7x9wlA)RR3eCE=|p%tmqm!nTkcI)g;gMeoTX0JYFkwZ zTQCWY^W{zGR*TgJH_cDWsX1nJfdeR2sSH$4=;T%vpfex{bDx5nBANmSay;EA>seC(H^PjKM5 z?!Cj!I^1K3|5H+a`GcjjQb7xmTIDyhu94ob-fw1E03)@zl@$>49iRmGH#3huHuGRH ze8g{NpJ3pG(LH76vk287^Gi7Ei z6skk3%m`M$E-)n<%ZNn3ivkQGmQXN3 zoJJ^)79iE8&O-qkqcODGNI9s96RF}(3HpjU{X$0b1p*ZFUgQp`6xS%k8-)}aR}yoj z!#^##F`}cM(pwA$#ytH|0R-*vPs<0#*5YH731yRassQMlPh%L|c7me-9D6^yVJM3f zLJQ74o;;ojy}}SotaI6doRAqbr!E{>U?R8KXofMQsd60v``4ZwrGd3a&`fN{0yHIp%_acT{IgrJEyaMKR}^~^ z!)lE^(-gA30+jgMBA6#qDK70Pg=svoOeShBgBiSAnClLWvG1J62*ItNB8+BVAztC% zc@%8gu6u)xqILo)pPT@hGdML}!I35w=a?@9j|%2`U7U|?6|=(Vg*a8kNDPX8qAzP` Q3dL!aD=+D30B+Vl04`hVi~s-t literal 0 HcmV?d00001 diff --git a/images/monsters/mutated bat.gif b/images/monsters/mutated bat.gif new file mode 100644 index 0000000000000000000000000000000000000000..dd76bcdb4272acba4ccf7f768c12bc4e321528f7 GIT binary patch literal 3174 zcmb`{`BRhkz6bE{vt)w+Nk|}I0#Dd?6V`x2pDaK?l&~q(XaP|ck%pxd5vNZQmI$Iz zP*70AW;qmXKwK)cCjnFz+eXyZ_UgTnLp@mABlb9RZ0nTUb7$_%{R8gj4|somc+dNl zoRTDtEx-W|);)o@yI(Aq6W|#v^pA+*auTr(QodVwV3c^{rc`f!rY{y98XN24oGRJ6 zEivQWj9u@F{B{QWl;)Rb2YX|#-com$kz{c~ltdbv7|LN?ZQNTF6_o4EKNS(US5^GS zAAcn9xLw6twgw2c3w;MqckYP`nLXQJO2?l+d)B5smc3=i{@Bp!vf4sFY$7#QB?`J( ztEx(g(`If?icfhm-L-}9CUSNh?D^PInO7U+wL7O^{^G$?r5QaZ&*w`M$|C|h+q&u$ z(T`?Y4kgD;G^?8PaJ@o&rD0FMN->-*nQPnk_wP)td9tm-kWZ?%k2I(Tvl0%*gnWOq zV|iiV^3Yg?Eb{Irtsf*r+#hcK{6z8E&p#Ig`P^Ulrc;%I$H=}k)P(akd}nH#xHy;) z5h?ca{OrK?I&pD&Ac^%&Zpsn1Nv_4n$KMLoDZtE+Dws8hYLT_4fD*Itw{uUB0! zN;?qjJy5)Ls5)!-{p_Jb+4EfoTSWm)5rOra!;Uqb$PN#AU}>ui4?YktdayWux8p$d z_Do%trAsa!%(*i)`TfjPT}DE+JT7lzFaS`s zICOISi|%-#I(^IH^jH71RHxBvd~ z<-@D(f9W&Y<~r|v)*9pO_4xDFSI<^K7p^qTPTr}PMIBIVs;@j;7vcZcYtw`Jj|?9jK7W4TbhdP&Hoq`^TNnr1 zpQf0sFE~=P^*~NWUq#-f4|02|cN{9*9l~_9?9aTkGr6|>{e24A^}OVJ7b?L2(+Pe> zY2jcM2-fYlC1z*IB+A6_Fd+i{86WcR7yq6Kpss^^G@im_wCJeLL8>`Z-%Ja`JGECa z)_<#w8&URnZfxMraZJ|AOBo-W?+C~mQO%DJEp`d_Ec8BK!hx1Vwem`AI*o=lxY}Fl zd`=^eM$ktj4YAZ6f8aN+{6#Vlki3Mz%rS3mNsl25jX!+dU*$9Ei)SNJHXMNh1{PC3 z4W@xUz6ejd#yz(res`xXokeya-{lB_?uicMt{xbE{lWsu=xm0}tHb$=zJ0#t&RLWo zQJ+;M+PDIO;^Y@W2PH>#MLx1ZTujn-oVw|JfRd4_(7J?eD*;9+fGLz!yEU&K8|30J zvXO4cztg#pIhwux&8w&X8lmb(%ZIJ~I(x1=Rk(w0)KKV%O9=%N{I#|T;zEh&r8LQm zbIzPa26-9rX-1t~y}*fjVAYUbij19(u94Ud1oI$>y>A6V0$C581?&xSh7M+iL^uZc z63D#0`^2=w@dIvEpM5<8D}tPQ^@Tfj(_WuFf(#p$clq%OAWtUFfGFDobhqpR-Wv5J zyEi2olDL6+0frbha2S&&!*;58!VDvkzxqfa`I%W7e+5gm=h&2FK~jLgk$+lkQ=BQ_ zNx<1u$OgeneCtC{^|Rl%qz{)%n}RQ!^Cc9%5x&KKmajp=w4-Ahsuy*=6rs`?N*sI| zmE?Mn!ZQ({e&D4n`nZm428es7q=ocOzC`Ah+jv4l-lQtfIiS2n0-BpMdtP)DHkY1* z zFDhL98m%O!GF4v|5L%67-_?M%BvA22b5^yybhR5;7>f)L2-E;!bdRTm>>n02LT*MG z!5XsN>xWSv7;qeTgk@o=FQg0qQHtVDlY8$p!aExQgu1;xx(!MeiyEm+RG2EDu{U@1DmTyapdW+4ilo_-Q+9Te*=q>2MeKf4}4Oi-)f=2iiP$^g6z#ZG?Ss zEqx}CseO4f7PCNqtH(5yFj>WO;A-6Y2fpg8hgp^Jq^UqixtOznf`lWz%?-UbvtV0H z?*)2e%-?>@LHNU-m50;4Aj5lwWCLKA3%$afzXc_gQXPs@9>oHh$H0jv4^rUJDLPPg z$|zMsEnNql8Qi?gGv~Ok^oq28R@dCDU)-xB%A?Ct7zY3AM+g--0r8(r{9i22H$=w% z4;GZ3hBqe0pIA8b)RisWcDYW0fgUBsR%Sp`Ld|dHWzB{#Ras>pTx8Zje$_5?t5I{z z1Fum1g7}<5=@pr#8%M4bfpZ8XoWw96Vgx2*YhdtBdk-8!ezV37ii7Tvl>nCzh!bnG zilcsdyWImh8&0oO)SdM`gE+ zI@mP25o+e3*|-DSMY|dzTX*>G7ees~_#TK&wjcjv1PR-`g;|RgqjMtnH*FPw@xmSh z_-=%1^^j1^ADSU*dCr9ocPorX>YUuxG!P0A1p0GwdU&r2di|RyM9|Y={XNg zeSp{cKuPgS>1LP_o)8O)>t`u($j{A)hi~!8C$04r&oR@2sIE4OmPebw#VBzfYx5~Y6Vi8ly@S;ane!c088udK1 zB5Z_dR-xRxa#m^Q5T>?WBDvVsnxfIy>y=Uz<=IK7iRc*o6)eG{yY|T{rIgqSs}{=I zJgy5lo+e3V^Thoha@|n_?rCLU^?<<;$T%4Wi4u6{7UA6b)k-aiU!$}*Mcx&lykP41 zZ8BNE01!L&PRT5WtI5tH1~UD^)aE-9;QqKm13SO&n9aUSGpt%GoiQn;(@-$& zQp{t`zTQO2|0&UJ0?1gQK5G)+YOZ!;MS(VwfcST|c*e0Xofq4t4DLppr>}JdJ^i|d zgd^UAfXc1WP>eUGA^UOo(?C2oM=YbRe$1=MHoL&eZ#)afXjz>`>X+TX-ELfy#1J^q z75O^yAm1Ukj#}uH0M}69} zQw)2i_F<~u&-&}SuY^3-P}7O-Ft_D}S>`k?-5_CLc|^pNjh9NDUOpXbpf%>ZiwqF$ rE@ReJ;mxumG@|d7sTJWX6b4odvp`BJ7To$(mB0MKDWrn{VAFpCKHG^Q literal 0 HcmV?d00001 diff --git a/images/monsters/mutated human.gif b/images/monsters/mutated human.gif new file mode 100644 index 0000000000000000000000000000000000000000..9863675f88f4cd7b3b66984023fb7f7878d70f0a GIT binary patch literal 2406 zcmajee^3)w0>JUz&94pQ$3h6YG2%Y?xd@u&htid5SU_P#OjoL04r*YfhfTHAAYjuv z0hb@zv`xp5V8&yg0%$e>_udvre98ThfS~!X*9p)WGd<&V2X-;@95%IsWN5}^WhTwk zcLD#Tlcz|EA%WM)2AzD+X|pcFf?eg4cJsh~Rsa$nM+0uF*G_RMfT1!ctz0k}b8n31 zSk}t(GdMcQQZ|n2%fuV<*YFJGXQ|<0%1hzRG&n)xp6dKCM_fxvQ;Jpwn3LHDg>*v3P@_`pJR zd2z+|!U9uq)@p+YUR(k{ise}k|NmODwPtr6(fABev8Q%V&FYNpIkq(sQqQ`n}8eErAfl~6nPV*G}$LOwyXy{dcf(Ui`m=QP^f{m)n4 zmakhOpsi6uiNEzE{-(jlU5>3?y)wTmAFSPK*7DC-O0xJF=^svO|Ire-GkSdmml}U- zLNu-$+OY0reZkG_Bg&_14$a*r`aef3&)qHBf9J+0C)edCBy%CE^yDg#j%u*oh( z>4l}mJ%y@FIt4BjgNpW-lHYH{u&2v!J%OlvXA|2-u|%S>E7VrYB$fXq)buoFRS|Gj z8~UKtB2uI*z1QpTwYPO<9EdZXNeKkEx5`$_^E#4Q_a+4Kh6)$~Q3Q#Wg$Mi2e0*)| zbZ`Eedd7jozPCZSeOlI*g4N~M7ra_4amJ;M4~>}2Kz%ed&#kFWyqJ4xS-Mo&fVh~Va|3Ml%GuX;*g zh0-vlcr@R5SSqa`1f9G0jwscYFpVL9uHP@~KN)qKfL16BCNXl)*HHM#EBh=AwJgVN zlwCyk@9EbWpr^#rxW`&kb1%$F;P(7lMtUx`VJmScHpv0&W@{X=IfgBeV&h!~(vl<3 zmiko5J|m)d$pVRDu5x0L2(w7ye^u24Yv?qnV4GNJaY%APHym0dru#9-e+j6rqM~kt zsMcv{gB*?PP4Xo7pzH%&O-N&pjav#en5n=dG5Z|*KY%K0c$6NQ>k1*&-RWUfoux3d zGE|l`8f^dwYFsn?39_|!aMP#U#-d_fl;VvaSiI$*Kiq`G;{O%#f7l-?J@^y**`L{8 zeX6Caq+zhk{7&M3*uP%!X@3ho-hOP6z4=Gef7xH><=Yn7>q^c2f0K@$Mpg-PqrvuL z8+*$$M*C#wHQNjO^rcBC+&ZK`7WY8Yfvr*1p2~#!JIj+|&gJ2p1pvSKaxA{|#NC+FB;LWY-5J@W(#m z;Yu4Mcf}NqsKv`HhJYoty(=>=fA`tL-$X*oA8%1-45oV=eC3&_?`|7Qo0f@BIi@>g=58M>o|Av?%vxX8^Xrr^w1jBo z&na{vKcxVxeoA3UgTb}(%d0M#@OeyyBelG7@IzVNbF*VnSqe%VyH@ZO>17SwXGGVp z&bB3aFIC=p^tDi{QPi+-Y9Q(V3yZ>BbvOuv|!89E}>DHR5zB6I1SQJr0cwWh~Z z)s)AfXqI{@uh?OPnG&cYrd_cRF^V=Rpb;qhqsW*jr+(3;&R`hP?8q}6R_A?cFu}2r zi4NUR$mQsJKWg_`=y}74LsDF6fs~?3U{Y45tunp!N>iIWMV^ym^j(XeyYahtu{jgU zJ@MkMa~8wOFMB>jsJ=Hh^_A)C%!nlE mQo;DZp3RfNg literal 0 HcmV?d00001 diff --git a/images/monsters/mutated rat.gif b/images/monsters/mutated rat.gif new file mode 100644 index 0000000000000000000000000000000000000000..c659d5e6087b0ea9f7fc03b8031391af6615bea0 GIT binary patch literal 3355 zcmY+^YgiL!+6V9n0TNEhfT#omW(W#HK{JFy7*1iramvY{mN&Hu1W`9wkyx#zwSfeU z5+F#b&{7KsRuL41D7YR1A%GAADos%-1+=NU_<}+UwZ3K3Zo9kh{o%Rp>;Hc~-q$ZK zA(j)8$pyH;0st(TXW{w6!ql^w1(Ruh#x%ZQGMG%Janr)gxN%`pWg36*Xxu!;S!3Uf zv2npD8#fw^#{T>FjW>*@xq+G)gUqB;n{+CpPG{1IbvlFTM$PyQh2e(Us5Y3?igER+ z8MSb{bBDI$nn7JN-Xt48cfio7n`sn0J%caQh;)rA&_r&j|5~TIF;#`>t8gsBv5;G~nj0*mM5`QKWjLRYoGJ#QsJ^v`BUzVtr31<#q4+>(&3s7SL+ETE6ZU@#P zZZz%0#znE?BE+zVqZSKl#HxFuWZnCiPL!k)D^y~!S|rftuy2Uix*Y*VA>1Ou8h58Q zijeA@oJX5bod9mx7CX*|YXmB_0PFalKm&h`j*qsaqm2UeA?{bhSI7hfVj(UUU@d$< z1z)DYkw$)C4Igg9k&8HNz@Q4eNGw1^g4jkpP>XrWaB&-kT)^PQXjq2hr!hno58pr` zMZA|PIkcKE{s6Fa^TQ3}*^Z{>gQ;?I=4ALuCjoTMvnlZE6VG zkHA8NFA8)Q1(+AXhX^f)&5lM<0m7HPwNe4ocqmfv79>R0q9`i%h4=`Lq6m)Qn~^nQ zn1&-59srAA2xDOwf(T)z5T;=)R1Jb`HXB2{Py`Xc9w-9yVVLg?Aqc$ReHjYlIP4+t zq-}?2D2xgr5Q9AfVFZOCKGU4QEo2aZVFZQ*?jR09Fbw063kE@$2aWFrq7Z~aGz5Zh zn)#*SG!QobfoK>F#Ar0g+|p<$4MfbXxuVfva}I*5%^^rdKo9}RFbKjR83Ju-APD?% z{LqqJa?HjwUQ}v~|2h_tU{0Z5EN%ROCBT;fkO2k|3;^UMV9AE=t*q*j-Y5HP>7V^7 zDjkH*WcmALYD*{ub%lY*^5$I~{G-kC4RujzXBdayyz`P5Q*qAs#I%*&5F>5%%}#n% zo~yoU%~utR{{2qp_xRE_%RHQ(#bjwbza;$7J{fS*JuP!O@JBtpX-z?L=tq}MI$msT z+B#xW{MkCSWkFpP6W*Or`2EdlkHOY&kA#4el=fo9MDTn2f4!MenV#|W2I(^IWgjlb z*NYsEepz98b(!QHi`@w(n^(I{#4jU{+^qGbhrB;FZ?P;)>GHRti-3&v^ZK!3+Q62* z@5cV`Y`{aSTZJn)_|;4MUvxW0^@$$*ed=17F!%kpYlE}dIozdH?}$EbJ}^D-30q!s zP_pHl-wv{WZu-3K{gG?8pZ8KWb>_8Z9In`DC4XE>J)g=e^>{q%G_bm%Hh(a5rk|*P zuirDT%P+g5jud)*BVX=uYPehOrE2y#7IxtO=5X> z<)rAdFt@(MCaL>G4Ux)OoM0xEPqQ97gnY|gX2`Zh9+UjPJ)0%9MadrekRK<+DdE44 z@CL(Y``P6orfgOeTklY7$x-HNM(8F>*2X_e~0*CF0qfSvI7X-;!=*pH;c&Fq{=t+EwpM4 z;m@v1OK&gHml6E!6H`Yc+c>FRHa#BxmW(D1L%J zm*k3bCP}oD&4bC|(;8wqXG+f=4tnIfbPWuyiLR7UHswxPb0StL$|Kg?dXyEqT?QRq z9=15y>oYaqT<*o|BYMStx$pR3(Ae4fSl=Kr)bI0Reha>;&~q+%d}SaB04PVqne3cDxbCTv6mB9=^5m!8CWhlUC%C}2z#jT3 zI}&GY;ZcEHXbHL$hFE%2^JX8re8Y{liJ#CE*YXIqXNSWVp|TWj2}Q|`3z7Ae*WbY` z964N@mHaYSIk4*ds1Ew|<5qc$hG^&PDi6u&04cQiU0Aaqx5F3wSFgIbra!A zvBr+s$pKbe*joy^)DlNo(LwEwinP&gH$T^SwzZ}xR5tLF_mpQ9b@khQ_^~75|4Q` zg_T-{eD1$yLw3`r8p$WA>90KS!k&ytTK03|rCn^&shZ7m*}XeFZ`xn(dHx0Ww0&Wc z6uY-8_75GmZ#tb=-?}x&GRUmsh2SN>jiUj=^~{{i4`LFgiO!p^na)HbamUBnEpC0n z{>GSjkt+6lzI~@1t!vM<-&_xM#rk(8pSFI8*G`}NZmZGVDU`YE<*j63tIgQhFX#HN z*Hf!vTV8+FVmHw3K)2TiBtLN2Mj&TSZ|ksQt2(E8OX*K`-CVNyEx0M@r^()jYP&c~ zxApG~*8F3s=#bbMc-P_v^aVnE$l0mx)lL0$VJuko1MvyIXL?iMj_*?Mm-=4Xr%eu- z)Hpp%`eHewjB~dca|k@9(7x?``Aw9q&&+img(ZP1HC9)Zld-5`mY)FCc~9B+T@5%+ z3Oip_xtViOHtbH@yYF%TvCAwcJLa*fyM2BW{cU#wDgWQd$jz@vesQ^ueJ)8E(qmyJ zaMFd>ZHAKbCzMVDZkPJ+S^LE-UW%opkmpLmhO=2+K|B2c4HC?m)UIl3MvnfjrJbK} zeuCr@uP97n+;*9|LvR4`VP8*ARtYuGldp3X{Z3{>#*#3OTGZ}n6RL0C74PgIdpPV( z&#Tq@ZaiD7b-&&qriALPu~_%^F=Bbx%(RmkB76KVH=WN*86T0wl%U0ix9ojJ8>HnC z^SNe-dgTMk)%{yeA9FCHD06#OYcUl5Q$yuY1bOCkIrmY3e%L!@Z5wX|YcxaZld0m{ zhP{Xv&PI^lQrz?X5xTEi&auxV{!W}B`05;^6I4uXO6CyLUc(0SQedvfHK%EJzaItWSa(<55n(3itfN`}Q= zZ9+i8Qw=fb7GvoSCG52(w7hiR)wEcbtn@A|>%3gt9&svzt%!ID7!$lYbG4;Df9uJT zg6G@C`{3PqukG%8SO1rSF@Dn%(o)*)_O8URv!_R@{L8Cmi5^e$iV}{$7`aTMzw5~? z3)^S+7k~vUX<5V*PvQ}`Zn={o?5%bsNvPGttagu|3* z$WNlE2iuAC7f;>r;X1(TI?w%{Q=gYJmlU6yvU(!pMA+r1tN9~b%h7b*I?ALp#@B+L z{$XFF1&O+6v3slc1M7b~7hh=qyK~$j&P=)mVR%JD#qPy=`oEyFa2o*V^^7C7ON7z` zjCxB?NgeM>ox)1Rq^bJ5Y_n&hBQ`!hvee(}>j@STcfN$a9~}zBG9;7?Em*7a&KwSf}l z$*U-tZ-~7B9i#LBt`n>^K7(<8LPrYGXHo?@J*$6v+J{o|0N2seCvWD;!%dSw)V%Nm UKu+=dZj#a!pmn3!kb%&D0;^hwe*gdg literal 0 HcmV?d00001 diff --git a/images/monsters/mutated tiger.gif b/images/monsters/mutated tiger.gif new file mode 100644 index 0000000000000000000000000000000000000000..fda1527d0fd8004c9a55299867cbf3ea3c3c1345 GIT binary patch literal 3123 zcmY+Edr(tn8pcmZ2nPtsFz-7j!`_0f+?x=h$pqi)Wqo9-%|JFlI-sF>?eKkY!CcEEE6^;}2ToIy3cB=wwLHEEE}8Q?j+ za(ZdU<_w_CpqSPxC-o|mK?_d;vwCD&k2>_yX`RBM$ENk*ZJlybx7()296H6cjx(v1 zP1nEz{t0+RwYE?Ix0Lg0`=4jEvR1({^1Sq7VA9Fq(&%OKOz4jE;f3o?OG zhFp}PH>I8?DPodRjZ%(LigZX3qmje}g zhUx?>j3}rTz&Zg~DS*@hL@EKa0#Gf04<|wf6x5@j4h1_nkPd}9IDi&~wJ4-TK}7DiH_gRj&0tM9^NX-Ea2p~ft6$dQlKoS&IazKUq z9r4u$6V&dA1E~-|g@7`Sr<4OpIiL;(BpgVIfC>au!+^rwK_D3dN)bo}yLUi}fJzvY zAdm!cPe4fn6fh2RUvQ@|D1`y3J6#eW2nG}ofWaW?cm|yH9Sj zI+y$W;p!~^w{H)c^3cMTlFE@8DlI4b+?dU|*~C0LRSV$K=%ldxw6boK*9m@=^9kPX zdPZgVf$*r&1 z1^|$NtD;}g57@X5n-%1>cXNAFkV<}AOOkRMnhLSfW<}m5cIolZPg^j*)r)sy>tY?9 zw%m6P$hQqJn}D_(+^O!YTk9Eq6PpNft`{-lUYdxq{)L@INj=YVCY?HvU7Qjzdq~uj z!1luv3F$mP&i@ms4- zGn@cEPvYJ?)a$+K(yP$F2$c)X-z={k z!Ps#Vq}UVu(Z1Q^QM73O6uWe)zk1RN_#aN#ej`>KdwtJ_26T3;ofQ%2McyRA9OLk%TNEIm+#dc#&=!Z%hwwhM#iwjSI@}F>$@{;JW#6JEw4y; z!%kp2ETnx!B1! z0-8dqYdF5Irqy$6QB`;syP-G{@84Bs19mKLB?mO@F8v`%xK6r_awPFVEs#T8*M}}E zEE6$u=SAzMd+LMlvV7Q?7Voo-R8>13l+lPAs(Q4rSmQO$R7iepte?HFVSGJb6@QkW zQUN}yXLy7EWewiVn&AIs&5R}MN`61}?e24;@~bh7m)VhlpH#FZYf- z{&0Epn^!xZbj4qOwDGOFfgVOeAs(>pVoc&Dxa`?vG+fVXzwg94Ns5J4Bc!O(bwu- zWjIl4;W^fZfM&v+SNHmZ*Lt^AJgB7P4t#$U;xcRW(8d7tWoabT`B~x#^pLs#1B`_$crBGi$y0m0Yyt=%-kBqP_O-oQNZ0o*dY@Ns1t|K25h z{kmTWN61l?eC#HVuzGeAM0hBupzpN^Q={+Md&vpqr?bd$R{gs;9En*ZERl=HNenfh zDcEdvCIKE($(cCXilbvEv3P>_U&HLtMrxZxVbt@y9@X#9ke zWB-N~uKkn_86<>@W1f8RWA_h30bNIX*+jA22@tmmX6-b|CaB-{?5hDE!M80|azeqS z;^J0bzC6Wy856B#?Jr9h^xeUn^DANTLeHQ=#-e>q*O{hViq8)Vc6Lit z$<63b6Hg8;o?oeIlbzl=JG{K>Az>tXlznSB%CY0ZS9^v(XtYOJ<)TrZHI0=KyT&*E z>))WZs-A>T`+2cjv9$%>W)1PGg^u$5W(J)sFarNg=xnGSp?b`@1Cq(-&r+d{g z<0n?1AWPk_i5=vdgHt;zYqC4bJg9vsf;(p#bKaNZ4%+L0?fo@zw5niLzHse^eBt+d z5dShhKDM#B-*0`U1z1;Di(9be?JI}?nA?!(~V^%YgiG_3YkxHZ4u-*B#$ zOdh2B4%DDdloHT@g*?nxtdka#5AI>nrvV@+ yRsllai+w}f(_GEL`6SvvQcF_b>-9$(H1xmQug8pcrj|E92$>S^-QwW^tos*y;^hYb literal 0 HcmV?d00001 diff --git a/images/monsters/necromancer.gif b/images/monsters/necromancer.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a4ea314a471504c16499082dc66589ada3a5f03 GIT binary patch literal 2245 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 A)c^nh literal 0 HcmV?d00001 diff --git a/images/monsters/nightmare.gif b/images/monsters/nightmare.gif new file mode 100644 index 0000000000000000000000000000000000000000..66882501308240e91d07a20d93710e22e2238a6a GIT binary patch literal 3440 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 NJo}2K4FQ0a{{lGsJCpzb literal 0 HcmV?d00001 diff --git a/images/monsters/nomad.gif b/images/monsters/nomad.gif new file mode 100644 index 0000000000000000000000000000000000000000..f959be36d690f33104192e23023a181dd511699e GIT binary patch literal 2372 zcmc)JeNYp38VB$nd1FaH76`CjsbmQzST%!6 zQc{g6FhqeP&I&@k78!9F15Q1$0kV}ijv{CbQ=d;DaS$eiAua@SAt(ai zDG;6l!vLTx0LQ=zIp!{gs7k_DtA}Aok&3v=wSWcaU4%Xla~5l<0>Yf9u;eMILV}Q@ zS{drvqt(kXi%x+caH$SA=HSz#9(N_F%|Kmttv&;z3yJZ5m*+U?YB5)+Wn?<0&%xY{ zq^nlzJx_T~TS}FkEDaYt4f~qd{p3(=O`NnU! zJXItiM`!PQz14bcI!ad)p`XF*BQJtLr3JX9KtbD$J?fgO3L8ULM_6FCoY@ar!3Q>?ulD&-)SQ% zfW7Usr=G+lC=v-=_1f`Hv!`Ak9HiZ+EeHTO0#9GIc#oG-1qxgO2d+3r+AX*QoxW_I zzG5NLQA;6C2q52Sy|;z5RO?;G&B6QL;1jQ}kqq8)2XDEYwOUe+gzmeXMG94l1aA?r!t|ws#IE&FhCp|mrHty2SUbk3uC=4U+ zdabveGVdYDJVKF~>5Z@B>gp->17@wTY*x2cp{)oH6_%&^5R`U@)}4TOMnF@xWj z04M}P5lQo-AAgm=id#{1b#9WKyvqLh++bJ9O$0HjPRNPl$O5M0V&tQ#7 z5ki{gNacXzj)+Yst*RMon`#T>wnprEA+HnOjY2NHb9-oVQaol$T=&A-Y`^)@sg;Jl_eCH&}XYmVppr=qnxS`#O3JE~OmydBwPWnH!leHW#isExj^wD9N; zq$NfF@C)fEQCVdCcS_Fi*U{?_e$#PhpqG22c%OWpycjR36+LGBEBpdyS$Cyf=GCE3 z;?i@kv^x4%+6>M76_=1LE@lI7`(yDoSYbZ;^kTO6<}wWhH$L$s3zFNq;gG_aW<$7zQLA-o|@_x#al}cyr*6N>Cxi zS*R!IQ*-C87=M^vt_=LcAwKE(s*5}JFDNC^3b2cU?&%u`WUO{pV1iSpXGN{oPs_p z(51F)Mr&PNDyF8j`8J;Fd}+UsSlPkkpWB(@2tQ4t^>N!~f`+l^Ye~~5GsQD)bzHGS z*ARO^V$%S}M#HA?WskW75w{sJe*S^{7?7}&1#e<<_`fcC%9pnPgipTyW2*f zFH)Y$V&DU9#8SS%HV_^4o~bwa*yD#l?1HC`CGM{Ahq05Sm+WtDmnmO*Bn}(FjGCEp zghTPKxPpqFcYpS5_;Jq9!Sa~EiVcL(biW*^hMTR{6iSxPDW`8yId(YZ3^z6ac0 zGU^Z8=X7Zg6PjfNZ}Un%{F?>#?^&1`efy{lTD0I8`@dUY^M1zy%KWy;(44$~u0wa> zNL_qQ|2L*Nw`S#5(XTnVO_T4c56kvVqK`z-w%6h>XDB}_I~uX~^I>(4V1Jf|8^2xh z_K2;Yz0$M}q*bwq_P@aV!q)1c5(5OXJ)v`{hLcCc>h4G!7w+^`zt1h}fB$>?O`hn- z8Iy4MSZ0C9WXq2E;hLe2)36tuNQ;}V^1sEHT5lCKWqleDifYbr7`YdV?NQlC@ZN@$ zfzO~d@WL7(6n*~SXs;HD7&KmGma7FA%GOO9*xz9Yd{7 z?|D9&u}@-nLI`I{`qEVuc*9XqQA%%k{QP8Hq`2p~jq&WFoUvksL1v9;adtPb-y73K zhV$hI`l3I)c4dssntL{iWY5>pYadr^i;{*%_FKcnTVM9^uyv`{WJ`^ym%Y#`RPv8J zZ~n~(U?oW8Hlm&74Ke+>Z{)`|F1JGj#wD9tv@0YB!8g$5U(EI;L!BlDm!~WR*1sZ0G?4UmR%b>St^~zz@U%9LC~u ztOh^-jHa1|NoI6|yy(YgnlcOW!>BlZ$DBRk%-(YY%uGRXc6goS@fd$~>y(-o19a^8 z%na+1xXi4YE#7g?i)i-ih{4L_^o&`&5Rf@AW|g K3ye4zZ1^9hlemZg literal 0 HcmV?d00001 diff --git a/images/monsters/nophoto.png b/images/monsters/nophoto.png new file mode 100644 index 0000000000000000000000000000000000000000..e21bf60d0578a971b1edcbdab9e844054e21f4b0 GIT binary patch literal 27983 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 literal 0 HcmV?d00001 diff --git a/images/monsters/oldwidow.gif b/images/monsters/oldwidow.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4b51b143d52edeab0bab404dcc10664dd87811e GIT binary patch literal 2661 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 literal 0 HcmV?d00001 diff --git a/images/monsters/orc leader.gif b/images/monsters/orc leader.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ce5287ac2e2712bc2df9cbd9e9cb30991630ce4 GIT binary patch literal 1631 zcmZ?wbhEHbRA5kG_%6?2Kc8X#{PPU;4EpmK7|t^=Zhy}051yB}umGxdM6{j-=?^Y*ds!QzYyjn?01wP$9D>+f@B{wE_d z{c2+5T64Ju8I^Chs#(hv9BUuuKEGeWEi@yPUD3hfQe_YCjt4c5IDhoJi+&TkQ6*v( z7TYc!8IjP$yX41&B-LvoLftbeGekO1SU!8?WOmebUZ1JvF{L7BHTO6N0+GTg=5u1h z!~Kv*d6?kX!6B`+1so~jra328d^~L5^`9k1AYeg5Ym<_;Ta3b|M9;~}ycPux42(@o zvZ-EI0s@&m+t>^ZRvchxWMGjI`m?ywNXculDlk$uY|->y8Qkl%$I2-CC=*MC6{|pz zit7Z8d@&J*1$qpO75_VBer|l^-W3y%n<5m zC$YYEclo;u&yPRZvCGbJ0rQgb*{*GY>Jse#I70%eF4S(HmB?}Ex?|&!(qj`7g_FMd zGxG*$gtH0DlwM@xkkV*mVg2>pzk{#vf{6>xJgdy?q z@j{_6FE0;t1G)liRRFpgY*hm=0>A_S^8l=Z9C`e){XoH`uNoV#g4J$?ut!S0Rpz|9 z3W^GfDl02%YHAb;g<7FFckY~8t?usbzBXMyJUl!xF)}|tzr4KsAHe@*>sIwy%-!MJ ze0DKiX$&;<@9w&ljP15A=hBg&Bf4*guY+2D{N1hI;X7!W1}xpTbWSz@ju^?4cO3K$w~iJ0yz5 zqRn)AW@aYszcDRFm_ng}bzd;LX22FuzY~8S7+_a4GEo54ymFv9?N0J$f5|_@bC{y0 zhiw^&{U#7^J|pUFS`QX&XTN?!??TL9PqD(ooH`$9gBxKXpr@x70*n=rBZRH`u43 zy(&40q}#(RH*?EHNe0h1+5p!VeOe1I3m-#STdI#Ix=SY*iP_MP`Ut{KMe`p1X`az5 zmCdbO_xu{oIIo|FeR$Q=RMV-Fxi$vBBuo}RkV9E#<|znpuBqeC7=kJp_%qviDd}sV=x1Qn^Y}6j~zLT2D`ew{}4v zwM?cft-I5H`JBD{%=Y3FhjTZV8L;xTk@Z*SXbGkIn>M1mUT4z_ivg%(!jePsx6mPN z{;VWxt=us6L-uM;YmSD29?lZ4^*G6!A?KHk%*qpX>Xw2YXuTD59TV9WmUEyM=1`7WOJ+_T7Z)GDDHS)LDTSalo>n%u>-b1u(l~#oRnoUjK^KIUGsaeeouw}_#xo*il*8J8 z?+xvG)*2eS`F+#ifh%ckp=W8I>iSX}X7_p8RW98)sH8MkH48PlxJy#XT;gSQP?z#I zq_M!e7sb?J)A~P{%8VD z)yxg&2IxB9KcBH}qv<2^79Q^Z-%)YDMI3ZtpE|;hH#8OB`fQ=jS1P|Jq1Qw*It@94 zj(%!2EV#O9>+d(W0n;dYkrQ1^cXJcR=0%pwN`Ij~fNt+GgUhjCq3X1xQ>e0f*>!~q_W3DCO`58I?6dpBEe`!)9`M`fiG z>s`lO!z59DA!y}ceVy3{+P$>w{Qey@iR0bp(M_1o3%-BIN0>V}g#++ncZsp)de+DJ zoevsO7?ZuHy#D+!8t5(&z4Rq1HAF>9r2MwhMcvH9I_Iwh%3l;kM$O!0yhRos=I7M- zY4mhi=qC)enM7Lj;fpq~pXt|=5+cOMwt}F8qltsw9ktaYim$ZZ6{DRwEGta^y8$& z1a!@P0QAP!bUfG3UbG#uIm{wr^)@o9p5+)jl6nntfA5(<8)F8w9HiCm#Bf+zL^f9Oqgj0!qKPgUsh|7Uq{sRD|PSC}$8{Rao#}unzo& zGp_FaL03;E&Kzi4-(F>hdA``05~1<7XmjFEE@IlM@%QT6ueqj@-jX|hb#N}f=U#PF zpZavD&l`*AYIN5ud`)fJkPPKxOgbgy-N69%sZIAX_|X0C?T)FQv+O%(&l3HqCHn8B aOYJ=f40Q+F#B9 literal 0 HcmV?d00001 diff --git a/images/monsters/orc shaman.gif b/images/monsters/orc shaman.gif new file mode 100644 index 0000000000000000000000000000000000000000..4425d8a73897f14957b3ebedf2984e09b1e6af7f GIT binary patch literal 4640 zcmdUyc~DbX+Q#3Tl|7Li2AUfLjjTxnBZ``kpdzwwMg>jS6tx8eX~l&A2?0cnsEB}o zVG#u-xPpp?B%mT9iVAi^6Bfk!8+C#+^UYT?|I8mV*7u#db*oO*satjH`JLx^ zpT$cSxzFJ-feGzvK)rAn90`C7KvQo>Kq3Ko>P=!I@nI0gAd>^gU}a^6q9`~+9Hy3G z1x!@^keDd>D!?*J6D0-*^8py(?Ch*ke}_ifg&m{Q=`JoV0nX&BWb%5dHJ1jH>SF=U ziO$Ye0l;K3zmQ0{2!Pd)&VVoQh0g>53-=O5Cs5Si-yhiskN`*$LP`Lu1mFjtqy)xG zXJ-zFLr$7wwi$pAJ6Dk)JcqS{XQ(12h1m3>f7=Y5;= zUh%$y{Ra*f9x6IqTvB?Zti0l=q_V2I=2-3V6Ls|`Pc=vzPoFt^?)-(O=8Kmuw_Ld@ z1i3<~I1Oa7CEL>ShCJBbUf$5AxJB+>a2HO>HB~BIa_2*cy%W4(;KX3ZBhBm3HMTPN zNl!ZR$D~Bj5uGi&MBwgfb&9NozA;I}9WwCuXs}s+tTia6u;tY1)xxwr?Ko;sm zmRIv@@HFhuPbDynOwgJZ8S0D&B4Hj`J|?{91!-jCYTCI_=3)IaTu%-WFF!zz#`B3G zF2-ItiSupFYny<1%p%LSKM!{8+iw?ynb$NiRJ_#X7IR?sM60~bltGHyCzt-?3TxmtQeb0JHzlpAzE)%Fiyy92 zwpyp{58HMT_&9w=caAnNY;@vB9o;czqp7mVX&V1EJmeStM#ps}G~QNplI8aHZE7_7 z`*q1T??do{-tM}eZwzT(gIf?g+V@0$BbxoZXJTb!eK2(#LjsCUf{gN9&bT6QF?MGL&a-wi;Qf;WOW0gGA+XJk5rC*WnHpL}naev+q-cX;_CuSRkr{xZIc4;$*bLd^KDfG`zF`(}~$&GY^N$#k)>7G_jOhE@SGHR8f_Lu*X zcl-km#TlitldP1=HT(M1VB72UXD=Z;4_}4lJ(&?-`s86O4hTbc!+l8ktf}7%*LDEp|--L z3RW9YO#q5Pd)i`kg-9j=4LgnF8^ZUA-t;%c(lR$mp7ygxZM!NYd0HiRl50p-&^1SO zr@FncJRRfEY_4i6IQn~q&pYv)DLdf4*b3Zt4*ZIQmeOg(=dMM#D9Oh{K!!9v2!u4Rp?zn69Y|s4EJP}lZBnq2iTNeJbr^LiyQbCA(~3-c1i4+752A_+20`LQ zVaJ`-r~4R|b&OXvO9!1K2J0s*+?N8lR^V!&Ecbc7veC9%9UX94D=|fBFp0$hv zYw)L73rRCO5LaeK2t#D)F?r2%`|BO2BhyBWrswPoz)?HXenDs`)WjZKWi20&lCvN)f%7rtyb9zyI_j?g@e1J@Dvo7FHBZTAuoJSU-#%F$)9FmEa1{GFK5ECQ`Anb@yTY2qVz43>3~6;)^NQO$7j{w zSpUW!%WY-J2$m6cp=jhq(f*&09c=1eiP4}N)9n&@N0Iux>xz_1oGT?|hO_XJ#u-jN zMfx~90iB^cnwp~by)0cD&)vqEIfA%y(p^68AuJkBejoJR`0TDd_h(BVGUtmvTa43I zZ#~;`cF<35(Pw4w_65NoOYOfm7|(Ejq6GotWJ;znGNBL|pRVKybW^WKqTj>~{uzP$^$N|ud4U=Mu$>BtQHABxXDSFAj((*kU_}=q z9v&$>kqT0Jbha*&nGsxNI*()BD&BHS98?+J&{=5lJp7!!$%~>UoF!wYhmZ_JyU^{4 zD(>lityy;LnssANc)pHB@a4+{l<2?NJp1UnUUpx;Q{<|T6LeqU+*t}G)e&E@IOLE^ zZOXJo=gOoxp3oGCVdiTe8IxRGm9!?C6Pd9{(Qi@XrL!_*(?G0-$Gd*9B=~JqSe@4m zL<rD7`z2qS|=#gjOWS{Qc&ouzY;0x0FQ%hFxrq6KDXyq!O_$k(M4!^Fb z!roL`lU17t*@B;ofsF7~0-AAmsGp=UCn!T( zTepgga?DP8@5fL?3q>z|OtpCLpWlFeG|(R;f^Y`*6Y1FD*i~ z(lpPC6?#|nZ;{L&PlbWlRN}@-;S6W%Txl8#m!bOKVoLaD>Hp8%esqJ33iC@bD%zCm zhmJjZUl3*q^byce0guIB7|7j5b!F$jWEuqvjwc_*$#OKcSv1q6-wpWo%M9bF+aC0b zdH!iAYMcRwTxd3~?{E)B&uy(iq+AL&OV7#3E`P>=BKL5j!-Jq*;Emm#36FMDG@2b~J$uXYhu%R)>!H z-kYNDEvVH7&IWg`(`fvKn*y0~i}$xM{r_+I|LR-hf8LS*o&QZwAK9&1O>sP8Dk9vg zTzYktk157zx!|xd;q#351P{qRtA%r$wT$MMQYWz$t^419N|Lg-Gk|6lSACKQm<~;h zjPH&l_WX$d&a^je*Oct|cfDW$hHE=^=6UrDxt#yn4mg}C0G?Po67m*H=u}MQ$ewvx z|9bZs|EU7`k0J2iY6z?oQzO7%D?;CIQw@PI__ZO7s2hR_ybVTF>JeZzXqgl~yxX9C zF!>l9@TTEbyTsf-u^GA>2}V|cxn63F4))3(-FVT>@@LVdkMet^W$jueL${BU zipDL-E2n{Mn$$!l7RR6QB7sHRS|dVoH4%cOgv2BqaP)2R_F%e48ihP#|4Sh>2N!zr z7WTfb4U1m0e`IIh&tbK@&8>?;yvwM*nsL9FLXO#tAmQ0zpNM(Myomgi+#pHB4?+FH z6v+IOE7hre%bRh9gfY_1wA*a^I0y-B9dYNs91f}=Gk&@B<6{c1J!|C{bju7pCN3ya zdiMoe05-1hFbd=R%+MDvq}XkYeqzCfi5-8f30|TXjThJ=-JjkLidyGQFAH^$Hyzk5 j0=_VpzzU!4`1=PUKUX&;r_z4<0wT7vz}Lx413dl$%bfxa literal 0 HcmV?d00001 diff --git a/images/monsters/orc spearman.gif b/images/monsters/orc spearman.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcaa795724d7540ec96df080b56c3e097ef2b4de GIT binary patch literal 4977 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 nVk5Pl$%7qxW^b`F0U`SA&YzdXV$!Y%sP2ooa literal 0 HcmV?d00001 diff --git a/images/monsters/orc warlord.gif b/images/monsters/orc warlord.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffe358f86c228aec3cd37977d10aa36e553c322f GIT binary patch literal 1764 zcmeH`Z&Xru9L9fFxP*X#|FJHj%l?Qw#2>1>CQ>BjlQ z5ODAT-wAMhF6IUvKzP7|Gr(xG0Tj&4%m5RCq1>xiugY`fs10Bk;dB#RE*C{nKA%qz zL`q5u0AS9{-8XvE!2fI@o}lN+@;6E)3R&_>0STJJ#m|z1lfhcRdyRhmCV)zSom9l< zY<2A+?L_=dr?fprQF>L$XnbG&LI!<&sA>^KT1{i}QqMLXbw!1)+T<&-YveU)MdkiV z3)FXT`L+|9b8)V0t0*uEM&__c3Q>Q`2NgB2(!(cwcccl|Lu9r~{u$T3Ye+5}G1Z|- zbdf|S%LSkIj8K`v){{Kb2)D444Ed#!5iazd^v_M|LWOmhT->qGKQrQ?Ut<2T;Cw&0 zU)xj5(ebF#(Jt0{Ju7xUo4?M=VYD}>?Gi~{W$4%cTCvUUK_DrygDg}JYbHlNILI(I=K;M^s=3*PP3J9oOtxgwsKF<7%f@kvZf&KV8VfhYh}x0aua_XLo9i;j`0>l;HX5Y zzfjn&%x>JeRFYKo!-JN2&snV3%fkP)?9hFO%R&iGRHu18W)eYrQZgu(S~$Y;%q{)O zBNPTTs`Hq7*WEKNgS*qS7i`AFEj1P=qj80n4NA4{+qLS3Ti1-H0yW z+SfKKFLWJ_rc8{nL+_z%n6L^GpS8QfDYUquD_*?X;(!;X@@{rp!xL$|tXW%zl_sJf zOHL?FCJ3hW>)sR0vqF)KWM6j5<}zAp*tT(ckoK7|;=|wbc4 z3USf*oMRqzwb;-@j@cqG?-J%OHI-9(^JA^7!S+UNh<~G|X0|O~E1!z|CKOseS**(0 za$5FQUW~s}tfYhvE;13BUaVo|7wpYJ;(Zm0cUS+)E+PwhFWyAwmxynf;a|?;IV(8l zuA|bjnBv-(r}tVK*Tp^z`>bxqp>~Pl+U4S=l2ymd3d7`2Tyn~kY+O~DeCg2P?Jw>O MenQ6T4ry0icHZ||>r&yRb~ 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 m^ACG4gy8B2?C9fn$ zV_>+(z;KU&;W-0H+kXa*Y)g*490J7x5p zbIN#ZSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9aFg=z|6s?5nym&ODi9P6qmx%E-_c0tpV1jbOarp zShzTz8C}@P%)rW9!g$1?@!R`0L8WbVC3h5>(z!VKbnaDdcVynnU>5Opb=i@Q#a@mk z6&Dx`J9aIV^8xAlq8tE>-Tw|2^ppp6T+$|wonlp|^@G%@HVDi;w+;E#wrtC$czha+-u(#YJ z28VW|dty^Mj8m@(#hJ?*2=^KPoVKt{!Yt!Xzg`=M1G_X&=A=qqoz}&?1`!IvlVvR; zh2rEg66Q_!jN5sTU7lm5YP4OJ!NC~EyoSbn#wqJlHaD`a@ssfDwD8DSK)2250He+0{#>xs^pYq|!8-63teX$JaA4 zGH>ZW5U*Y($*0qvJ)zckfsu$qL1cx6xcmC<-RW8_`MP~p5?&Hqass@9!otFCGLcGr z+6ugyQlc_@r=L>eHwaeB%F^!el8aa3(<#-TTB1K?TKR%7<-9zdo>;Z=QiExnoSgh@ z!s-G>ZQ1<|CX1_$=9-GRc*(^@sT4b#d5Ck$HJL60hB*W%{^#~{4GDI33~)8lGhk)} ziYoqO;WYx%IvfmK3_=Wi3=Hfm8$fZ?)YQ_}(%P=i)5XZf*2<(WRouXo7) z%cv&I$3DY~nJLF3&{@tr#wMTHbcPsXGH-#Tot&}|Ba_gMX1!oWpP(Ams<;kD2`RmP zM&oQ5HeF_B!4{UTc4mz-VFRf|CvokLwq|Dj&}dse9oK-$?stqFoa~l=xmY!no$fDW zWi<$K&o@70wDwY1(55TTHD&2 zTNzneIy$;r7#Vqb``Q?jCUr}2O`6us7$)mCk&#z>>Vhs^<#}Da*0UJdJm4s8$g-X6iTOV+@HjaZu+Hv=&y_*=#D!Xi;JkuCB#prKU2CQT|T4kw4R{ zlk+F#8s!;&m_I$Ll-*7I`;SR>1qmM?wD;CO7f?A6?5H@y?+2T%#s!7rE|#$g3A;rY zoY+hiO>8?h1WsR~prB#GwcyYJH%}3^j9n>i&lb9xYgo<-X%uw#u$J7pOY(ex0)sUG DPafg7 literal 0 HcmV?d00001 diff --git a/images/monsters/orcleader.gif b/images/monsters/orcleader.gif new file mode 100644 index 0000000000000000000000000000000000000000..77fc444d1754dd3447ae79a9547cd35091c62f30 GIT binary patch literal 1302 zcmZ?wbhEHbbYO5`_|5xdZc}1;d$j;8LuCAUl=iFK#K6mcky>tILIR4+${67jt zLtxN{fZ|UUMo==>0p$cxo?zhk$MBz1#$&^RgUuYmS}`X!EIiyUpzJlrW8+u(-qyUr`5Uj>u%b2?Y*Ksgtj9esTF>ExNOHo-L!n`U7IW*k-<;n5X+|*UpCb z514s6K1eXMu1^RQh$_!{=zhsx6yMObvRUIrX7?yH_%ItBV}6rsS{6n7ye|qHzVa#$YP&u zktYSGah!BtUemI6rDEV(&ZFspMR_jI9sk{2_RPL@-?HUSMy!#S7wOrGWGtBymi2P! cjI>oRm(3}A^>X=wHmz4HmZV7uFfdpH0BS^)(*OVf literal 0 HcmV?d00001 diff --git a/images/monsters/orcrider.gif b/images/monsters/orcrider.gif new file mode 100644 index 0000000000000000000000000000000000000000..85116da1bed9ca98a00129bfec4eea72fddc32fc GIT binary patch literal 1174 zcmb7<|5K6&9LGNo56}aaUl4;p@ByuO3JhzKY+b?Z638uMeH&Ny*rT&#nl@c3uF(9_ z3Y{)3>>dlLwAHvPv2rWhlYP;$v(?qsZ9B(Vb1rMpm+SX^0I>9AW|Hh?jJLFoRS9vmD9VpuQ; zc8l0%vw$A1RTB2sBM6gY_ustvpD13k5rBA5zwzEQ0XJwkkZ)2;zDR~`*FS!{#aaEA z*=MV|{YO#1=A-juESdU);Jcv$w@ohOX65P@%Q3<5vxdc(5F!h$TPsmCg2yi@&CaXK z10)|r;X=yF%3`sm^4WV`@lX?n?5L(9C`puXKgCDrgWEmcEl3zQEaJGNfr?d%gi+x@ z^N^__M_auh`IgIVM;X`&N=>Lp5DM&etld-4WhO2@tS|anCJT)fP}p`B!e)nHJS=cr zx*D%Kx-e{#(F0?gg301`ho`(>ei05&XmFfln1ro;CQ0P(o@4x|Xyx36qj%dm(!{S& za+8Z6**Ce4#9#&lDZw0gnw7JEaji7MFnZ?$R9k?IxXJ_g`ZyOmlSn(oK+Uv-19{Dl z@SokNSnJ6$T`EU2BjkluTRfv;lx!MerFl~~!gTe~7Q;k)*Gcw;ibO33206uEBn@eO z_be}tb#fZpSW&tB$%)kq_T6-*FKZl%#?c&fFU_mRXD$iZh03pFr++q*pty%pOPj7vQPegd<(#$}Qc$$iW1bbPJ>A0(U)B}u zEdg8%a_be52~&MK(khDFWaO%>jpHO&b$=~B!;FulqH^+Bpk(fz+e4}>Q-)%#{}uJ1 zHU|?aXZ0ln9>|io*S&&U^@^)34dJ|naPm7Ire+GAQ!1?PYs^Z&N#F0jjTbvvQ#bPr zYll^Vel>J&`E3TJ4WHHculsq}Z0spjm%6jABH*F!79Y^?R^3GcUmk zuZAJby3#deP{v$};biVMBuZCbHg4Eq`!EGj6xn3%{J0!OSC>mpJ7T;uZj^GgOPLt+ zqBWy?`p(?QQLmKMXEYsQBuzC1o&OAjN7ZH5W@83s&M%?3fA6{B3y8%XqOZ>LbMH@Y z)oC(LIHkP8`Te@sk_NhMeZ6-DyQAe4+cmA@8ahi7M>$vu+R`P1ju`C{$7oA1G?wqA7I1*bA8Iiv3&&`i%QBH7U+ zW;vm!!<-yap-G%8`a81WmEXX-lHTIiaPx&lr`J_IPL!rJFVJ<`-B zQ2fcl2u!yOI-r~Y$`cG6{}}#r%6M#8aIl#}SS#klhJ}aQ1(dz!cx+sBv|GYB>&}Ud zi;wp!ICsf-Zd!73vPST#n3J29o}RADcw&yG@H0mSUMZIq0*X%OW|^^GT5@yqL7x_9 z#-1rV7i3;$=B<#jjS6_i#=tM<5g;XWfN5@!_yd*)!VXM~G3-n?su&M6vS(VKyVAMP z>BdY!1`!MC^0$q=GPjOB<#0F{&Qq%W!X&C;%{`_J&Lq}?#Adby@_Y4O+}yk}Ze}I7 zgPa!QIyT;L*Q&Jv*VFwLyM0!(n0+88=#0YNdwCy9H{WDrlA5i%AYnt+Ohz6F4uu64 z`5T$pc&2ME*!J=9bVim71`BrN&E&f9Ud-=8glf^FR#Axyy$NZVvz|@V7T}X&U}DdH zc*tLKGPCdh6hno})kcvHS3S3>nl}_!^Kyh&M=>Ta#{8)?pPc`b(SWgzIckGw{btpK zh0P2W4;-o^JQqAFUB$Y6dWnjX!s6P9R9D3gt}AMfQcO;EJZjWnRJa?-dLUzd|98ck z_q?vWO}*XYK5K?bmyg=iCyef=Dh~9REB%-k6?v*9bw=zYm!wb=#|8I&A~(JW>`L`= zV`RwaCkBTH>aDf^UM`E-AsLc9`@f9TbMN1(Tqyw)+_YXUnG%-ua_Nk; URWFy#DSP#D`2sdk0R{$Z0Nt6L;{X5v literal 0 HcmV?d00001 diff --git a/images/monsters/orcspearman.gif b/images/monsters/orcspearman.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ffdba8d1fd557d2468a4b60b6efceba2f1b5b88 GIT binary patch literal 1356 zcmeH{>rYb$7{;GN3!WmSd5M8qZBKsh-MW`h@gP9Rn4Bm*B41=01Wea*d#Q(t0{_^Jc@%`}R zecn|SD|LD&4H|L0g@V=vJzxN=EUZD;0Xy#=*dN0_1$!JWz{Q(`8*p=|1L`<<03Xo8 z4+jS51ERnU;5IN0OaUCoK9Y=*a=BckQc*mO@h}V%@R*{}C`Xdqd)_DTP6?>~6B4s` zx@fiuvz-9>8k|T`9%_v=ks0}pSm^YX{n8Ijf%48Xg9qe`H{FSKp1pcVY5YM^(bYC| z_#@jn$50o0?Pwtp3s4!4N|7MF^s%$Llpq$@B)3uBVbL$NTivElM`B9mLRzk}H3|fn zr+~LoEnVO+u75V{G>Ws+*RP=cvXxCCLEr8_iIKDB59Y6EfaP?OF9qw$w*DO%yuBB@ zr$;R#h2M+6jekC^v4w1soYbqYA_6>Y|D>1+S|a)Huw?R1 z(NAXau@aj^M~?NUI%>z-PxK`ID}jC@Tz$A|elJ$R?#a%W`ut?q_2PdfyDujRvGff<%vx9g literal 0 HcmV?d00001 diff --git a/images/monsters/orcus the cruel.gif b/images/monsters/orcus the cruel.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ce5287ac2e2712bc2df9cbd9e9cb30991630ce4 GIT binary patch literal 1631 zcmZ?wbhEHbRA5kG_%6?2Kc8X#{PPU;4EpmK7|t^=Zhy}051yB}umGxdM6{j-=?^Y*ds!QzYyjn?01wP$9D>+f@B{wE_d z{c2+5T64Ju8I^Chs#(hv9BUuuKEGeWEi@yPUD3hfQe_YCjt4c5IDhoJi+&TkQ6*v( z7TYc!8IjP$yX41&B-LvoLftbeGekO1SU!8?WOmebUZ1JvF{L7BHTO6N0+GTg=5u1h z!~Kv*d6?kX!6B`+1so~jra328d^~L5^`9k1AYeg5Ym<_;Ta3b|M9;~}ycPux42(@o zvZ-EI0s@&m+t>^ZRvchxWMGjI`m?ywNXculDlk$uY|->y8Qkl%$I2-CC=*MC6{|pz zit7Z8d@&J*1$qpO75_VBer|l^-W3y%n<5m zC$YYEclo;u&yPRZvCGbJ0rQgb*{*GY>Jse#I70%eF4S(HmB?}Ex?|&!(qj`7g_FMd zGxG*$gtH0DlwM@xkkV*mVg2>pzk{#vfV_>+)!0?_yLPA1QlR*;*)-o6x z8d?Iu90tp^3|^KJUS3{7QBhG|98q2ZKq@&oIXgSMI*6lX%9JTV40GnpSz67pc8=lN zIdjgPJ9lp_!@Yawo^NIN{{8!Z4vzo#82*of(GVCMA)xq^g^_{bKZ6b^CxG$<1IIsx z|C}-&8x|aF<`CA3Ik92k;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-qGM<~3oSdu?yej78 zrl(E}2FZs?A`PC|Gw`bUTrgPZ*u=`fc8aGqn17o$|`GOs@SPB+4261|? zRa>#4hBZ3T z$e>|C(Z$&YoDcX8iljBIH;}h!IFQhgInjl2O2^JUrf0Ye8krX1jSCN~ z3K%vd|Kn;%IIzuY4zq$t1z*GK^Ya;wIUDQ~YT%gpo$*D?FT1+bH>!*R45hEPZjbO6 zR1uiZxP(z+fsd$9gQLIXkr25`KDHT-(UK{liWLkYW(}p1^R_v%t5r;JY|TB&cBMu& zjopD|L#b;rQ|eT)#~uuG8XTDCBk{MwSd qNR>$})m`azdA0b4V_L7*Y`K>8dhL#9t6s0$^X=8^^*h;E7_0&N#hgh1 literal 0 HcmV?d00001 diff --git a/images/monsters/orcwarrior.gif b/images/monsters/orcwarrior.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf0716167a121e868f50e59ae064574d13412141 GIT binary patch literal 1319 zcmeIx|4$Ql90u^`+Dcj|SXx=YF{y&k!zK=Ji*=hK2Bei}EkB4S67dFMG$90B)Z8*D zJ+x{QMbG-}lTeW=-%hEbQL{@VWC&3&Bs#(}D1L`aOk7!7Ye)KVc|4Cr=-zo}-!o0MErA41O8tv2LVjt*QKKB3FBkZeA7*Pom*ZabB3z0);z-c;UOId&)T^x}GIlxUD$bfsYT=%CepgYVc<6Q26c zkb{JkS$I%r$cA5UR!#ebS4!%OeVeC^tnwE>zBDg8J3G|UpIg)5NzOXHN3%l9f7WLl z+UtY1KT$s~PTgda(;uvBTo}7vHQl@_GTMJ;ut;*qPz z+VM%PBjueEDkR69j{CfGSUs3Y8Qarfr5>l+2eWlsp}4#bgMT&t(?}_sa-KSLM zPib~tc;fmIs^p3I;!A#4%fqx{L!#DJ@|({5QfI7!IjBm)x81GBGqu5@#7Lk`nY5$K zGkh{XIPg;UDL;PDmfv1FSEk>H!lu=eaV<)Q@(-O!+VE=@GRAAWc3{$UUYSry&)20M zdc30T#6$aw_Lb_R^S%wQk4$P=1-8W-D@>~{UHJWM%FZ=ESjsgSw^X?L&6@*mb%tWr zy?kx=(Tc6`*cBbDZ?>+Zc)#5hV5<)FbXxUqc9nnKmK*Nw^3{iXx^MJ`d;9N)!+miB LBf0gl8hrI1CTL4q literal 0 HcmV?d00001 diff --git a/images/monsters/orshabaal.gif b/images/monsters/orshabaal.gif new file mode 100644 index 0000000000000000000000000000000000000000..0176ff590712689095f34b37151e06aff137fbe0 GIT binary patch literal 7156 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 VIm^bz6Dj2%CcW1c8H7Vi{|~AgfOP-> literal 0 HcmV?d00001 diff --git a/images/monsters/overcharged energy element.gif b/images/monsters/overcharged energy element.gif new file mode 100644 index 0000000000000000000000000000000000000000..090b778e54e35f78d020f9b8337cf6678b5f58c2 GIT binary patch literal 12195 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 literal 0 HcmV?d00001 diff --git a/images/monsters/penguin.gif b/images/monsters/penguin.gif new file mode 100644 index 0000000000000000000000000000000000000000..19432f5f6dd981ae28e360128956934862055b8f GIT binary patch literal 1490 zcma)*=~EMT06>4c8*-CtlaPBi1ju3z2qYmO)`XNBH7W{K+u{Lg6^qt7Ocjj@f>&Fp zcu_eO0d*Waa4ez(l?sSjupV_fV^mbUi3fr*rv3^2^xo$;^O94OEV1)(fP=?=0APRs zG6evDkRcL)U=|F-NB{)LbU+et00d|-3!*VdFe!j51Tc-v1k3<3EdZehf)rDB=iEwuUQY(uFvOkFkVOb`Xm509SzXg{X*+N_aRL zB&JG3DwYY?(+T4CcvD1z#Z%s4Z+8KOhYCXLxV2iHd%qfF6ei}5qlqGMuBv0AgmY>X#n zMjDBPw271A;;b=qBCL~bUnJOVsgq_V+ii*V>B*_)S$3;+TI#g)w3!)6Q>JBPC+DWm z&T?nS7k!=8G!?1LE=Fn@i~k3}2St#!ILloYs% zH*R*jS~n0|Hto8)j$cu-qvcn{#jVs++afBqmACBzN2^#jHYHx%i4Sg;w=^^M@7}Yw zy7u~x$+df09&WdF)Fd6Ms_tpfojF0TKTvn5uCa0d$)h!YTxm#du5W8OSb3oNNMrNC z;p)hv$LsrA(>l6?PMrSz(c$@?Q_T<0n$MhVdvR*+pPinr-YdP`ecip6u3Wx$^;XBD zr`X>&uMgb5q3*XB(&wX!4Uk$x{ z_jL5R-~a0An|H5A-}rnZW5eT5-j9uZ7$5V07#;oO_kVilbUKxO#?-{jnRc5aF-jka zK%YlYj*(~z;0M~z{&^A{0O}{;r^!-UYCGLjbi%yumbwe2997!BCI>0eJ&{E1bG+~* zx{#Aqgj3^5b}_y)fnkQz2_mMF9bL7Z;YfZSX-{O1hqN_-C|crJu#p`MTZjO!VF4up zX3BxDv7A;@(Oyu?@c{<&-0ETPjHS8mpwjjV14LTj7XBn!eTYPIG{jIW?Y{FrcrFNf zoHxdl={FAt?asr82UPu%c&bcqiCI>x`uR@aNdN^BDgd?jT)J~Do~TQ#yK(W~ z0{QFCP7-B+l}lugFy$SElU|g*n!SoMEr;f%@kyScKDS+&crmUy}X) zz_bes8<&5{m1p)6OX(|Jtla*Q&bhbpZ(u39^~JEka30F)FGhbMYL=8Igf|fd{lMI&ExB|nXOH*F0BY0LNI++R`$ ztvx~%4j!a{DYM8KWfo^Tv>0Vp+UjsutfHH8;BD=eIZ0MM3R*i(07`#0?t(@p9Cw;q)8 zIQ!%Au)eA@>+V;Mb2GbAc|mlEHNMP)n$~|Dv@!ZiuF2yTZ8wx<*9zJTKi-VfJzKSq zQWe%6pQ$a#P)uGo+S@Zn<<09EeD7T=b+kV0VE;pngyDr_Y6lRDn!GNidC2SL?Ba94 G#Qy*wuM6k^ literal 0 HcmV?d00001 diff --git a/images/monsters/phantasm mirror.gif b/images/monsters/phantasm mirror.gif new file mode 100644 index 0000000000000000000000000000000000000000..5fa1a7b3cd7abcb117dd3bf4560f2356bf59e494 GIT binary patch literal 2098 zcmV-22+j9LNk%w1VL$*t0Qdg@Dg!8zc;}Tmi;ijIk}cG8P0mIJLXtj`gGbjZ4^IQ< z2YM=Nm4fPWD8<-z!NgpqXd`3*D*@BT^XrnxuZHBcR@)!~-3sqA7Gq)@VgXG8h%SU>Ggr1q>I!xl5j-e-EqoFf z9RTwHqD7v~YrHHPD*>Yc0b2s*JoRfNyZ|u(zFDnh7_b3V0|R{og+GFbE_rAjwgadH z6_^`-CVT{13jk~aN+(L`i^dL#6#zT{ST+e?QZ~UbG4c3pfck990|u zgaAVarvhyX1Y!#S{s0G>3ribHTn?51kpUeb9IIQau2QZ6vH^7?a}rcA0Ac~7M4863<8`3L=Qs%MF1F`A;@8|k~WdCOr0_cGCvGHI}SHS8AYZ^rq_77 zTpC;jdJPT-4F(Ge1{)1o6j=gu2p0er0|NsR1rY@^3j`GgUlXAs0U!wt2&0wkxUBF5 zP!00{_&5MIb3S8Dw?y52!Jv%mjXsJ4*8-|YrL0Sx`xFG2u7>QL%* zK6IQuoTeh&5DOI|4j&4R41+Okz6j%&J9;=5IEUnQkCcJofWPhI_5zg%$S3X8An;=t zVxMK4_MXnXn(C%Rm|PoGszjdEm+h`dmGPtMRvuKxsplgRK(C?hv{0k6Q>?W(>8W9< zfEdBMW3u+r@v4{XUJa?NYLfAX;GS*j2CWDQstLVSss=_Ba}uwMVc@Gxs)$_RN)n8I zT6<9*o&W#Bf<(#Aht$;!M*`2&n`K5(3ppJ`jDSv%!;c96epD|xri?mwIus}> zU`}Q&MfFUhix*x<@`eiR{i8w{M;t*!f+dNB%{c5N;7?8}jG@9Rr}Tpb6^2N14|Eaa z0SAL{95K@gMaWP@4LP-N11er%!NdVJ*lw>C(;_12uth=8(b32Si$vi~ z9}5Ix$RjP(;>Zo~%>)1ni!j5CK(LJPPXrP0@Z~>|@KFjd3!DLhB#0m~3xxm7x6vgQ zTyUg7v+Pg^n9MA)$Uk)e;Km$Z;L(T=bl54792|56KrqrYG7us==pn^F%uo{p5UP}N z2>`B?y1)hE8PviLbY4^k6I3++a>zh0yrRb=hS(BI1p+_-fg3O+@`oRT9u&b9tzI+( z79cS42z)I_0YwLfY-0f%#JKQ>D}QK#M`!l=Or6jQK=YcdmPl7R~@Xd&nY1vPj?8e`;k z(IOQDQ3WeGMB<7c&8VS<9EFsiqCky&+C#4kxIp9~97NDy8bdrW1;8IWV8H}~#8V6> zO*o$}yg+yB21)~UpLgV(pzzZ>ad{C?$ zH-zzn;uE=o0Sn^Hq0Jwq6BNM`BXID7#}~BIMHiY>(@QT040Fssi!{Q+4Mb#F5da%t zP>r^LM2|Qdz6z&8Lxr^1f@_v zNvNS28dw7x`iBQM%peLda77~!;V6pC00|3-#xu}?g8(kV1#bF)Bp@Y_E8Kt&;>WR01tQ|L?iSSHGm!A31(0M7&4)+CE069 zAi2aZAmEKXfFlapNJR8erTTrD8N5;}2*2K~rob-D)`h~SJANDw5BjKc$P zAUcdq=Lk3WM;mhENkW!D33-6e5=>wM^?l?LGmxJ^IFK_XD8Y)byuuJtz@96l!30N$ z03#kl7)V7x0rP=n31&%<#KGYQ)U2i=?bIM5OrdO#GT>nS&xNRf cIwh>9KKIEF&wl#zp8yT0KnF_Di39`yJF0#)CIA2c literal 0 HcmV?d00001 diff --git a/images/monsters/phantasm.gif b/images/monsters/phantasm.gif new file mode 100644 index 0000000000000000000000000000000000000000..47ef6822d07fb23e7d0cfa3b3339afd63424f2ee GIT binary patch literal 6071 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 literal 0 HcmV?d00001 diff --git a/images/monsters/pig.gif b/images/monsters/pig.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9ef5c680c9349a549c20ae43619934b50bc9e35 GIT binary patch literal 1918 zcmV-^2Z8uUNk%w1VITk?0QUd@000030|WpB0R#a71OWvE1Of#F1PKNN4G9Gf4GIzs z2NDhm6A%j;6b&944;vR085|QK77QdB4?o zIxZkWFdI%bA4E1ONH{1-J~UH2B2qsnT|OyaNG)DXGhj?FU`jG(P%&v!JZxAxbxkgL zQ!jH>Gk8!jdtNbrUp{+aK6YnIdSXI-VoG>vOnGEfe{N8JX<36Uu7FUs zh)=nSPOyPcwu)N3j#a;qM7@$$xsq9-fncPJWvhr{t%`50l5e+xZ?TJHvW;l7k!H1; zX}gtWyOe3am}$s~F#o1L`l~#`fK1ASLc@(!$cIqOl}y8wT*a7N&XZltnODo3T;GXR z(UV%xoL$D0WWknd!jtUd*9w$D?%2 zqH)Tnc+RVP)S_b2rES`yZQQ72-KuHRrE}Dzd)26P)U0~hrgPe(eA%jW+NyfnwRPUK zed3s1;GAmunqcIoU+uG8|E^s0xLg0QR{XqG<)CKds$}7!oS$uWsX@cI2#a z;H-P^s(0hCYU;6T>bh>_vv%aNd*!)v$-gLre*!1Wc#gb@U~#{ zwQ2CXXYsji`Lb*Jx^DBbaPzZ#^SX2NyLtPza`?4-`nq%cx_jlpeeJ<|^ucZN!E^M( zeEPzB`N@6Hv4Y*Uf%cx7$Z&Sx`OSvi14n7_^Ffhwt(`ygY&zL z{kM+&y@L9^ivF~a?8}Mt!GrX|i}T8Z@X3k!!-M<8iu}uj`OA#@!IA&PnEcC;00000 z0000000000A^!_bMO0HmK~P09E-(WD0000X{&qw~O-~?JMN(5qPfj2@AVPI%Y;+)Z zX>@2HVQwH*PEtijNmEosQbj}{V{dSIAa7cH-WgtgoVR9fdE-(!WW^!+B zAZKB1VQy(4aB^>Cbz^jCZ*FrSC}?zaa5^t9cXxL#XJKt&ZfP!KZ*3_q03rDV2_pbp z04x9i001BWAOHXe{s6fM97wPrK>!E=7+lEEAb@K2H0e;-u%bZ-6)NE9GKHc=ivZqG zB4x_kr8oyZT4X>oGW^VO+dJ$tugX&W{RfmDG2(hwuotJ*zk!u7)z^xFJH_L6mfBNJJ`fzE=IU|708Y#*1sV;TAQ2jx6#4h!q zvcw%E9yCfl``jasI`OR203?v0(m+B)72pdJx7bqy6u@=T01XW+2LLg?m>@$t=X}tB zJ(Uc(9CMw_0YEqLh(ZAg1$g--bBJ*8Kql+3(T55(TC_j`UzB4{KDpFD;F?@4umu%O zxUm4B1pzPwI^PUYr%eexifBOr0RSQS1PLPmTmUQp0000W03ZMW2>t-M2pmYTpg{l# z0T^7!@L)B2nsg{^NUJigs@0KiWn5-yx!fU|PDU;G}yGKo!A3r~UM39;ifRu6ZwAH&;FPbJWIur~g zxWQLEZuRU{+t%2R4g`}00#H=1UORj3wnfuM>`IRVp$WXHr_P=_b&a*fYt)0R#{^k@ z`2seMnsK;U1WXN*Q|ixDWui(6ItB?VR(03gr|40{{ouafg!!AyNbY-NYjb1pxShz(fhv zbO0$90PsL2>#)%WVWDvZz!&A%lTR)+z$jut3v59}6K*Up=s`oE^UV-orq|}8p#=m0 EJB)x_;{X5v literal 0 HcmV?d00001 diff --git a/images/monsters/pirate buccaneer.gif b/images/monsters/pirate buccaneer.gif new file mode 100644 index 0000000000000000000000000000000000000000..80496542134cea9a5d1d6da8577e555d1bb622dd GIT binary patch literal 2220 zcmbW$X;6~~0><$-c_9~pyg7iNAqfy8gai@-A%q|~xshUOOh0m@|wsH0Y00U1wFw75c-CTpkDncc7Z?V0EE@9*pHBlJk519ae% z0l3-%&!|d__LFOv^i+jKAd@NZVSjk{mdRv-aM$OzC-2P8rtV6zv%pdaSQre>4HP^d z=?~3N`uqAG-)tW2$;tDz^`N0bd6e|jRNd{V#F6kZ3bA-R3WPNL&2^T%I%t1 zcRu?}`7yD8`?PW2r&>y30kZ8#*jcG~LtF6X%^S5^-O=BTe+KV|hF!ZqXbWM0D-^G+c#-&Dt!*KZV`aLCl=V&G^#sRA0b4E@^X@U^}*{UZ$ zJ&HXToR|>5H`{;Dp-4LpwX*0C0)go3=0xYk&_X=BAD&JL2ym2fJ#FcD?53|`qYgJD zUu-=8`tD3lU0mZn?~`T6l?ucWzH^kTYy3W%rKRPI*@+}gWJ-zp%2a0UNYR1pteKW` zWg*+ogohlYZ9-8ja%z+J)u$%Ke*pl1!CTp9>a?B(=}>K_0g1ou})is^e?tuYvHf%ULcYjot9u1Wo39r zA7Q2hu51djQCd(g?^S|$VQzblW?{Io-UT@ty^2)Y`1!IS`Mfk3gm6@&3^JUE*>;{S zHkoghxs-;sZvXYg^k6H}HYgE=53ctn=~?20h>OSXHsM4Rf1jk?CpYW;;<^;@y3J^p zqfgA&H5dBrII@k82UAM%a9rH6@vy!3`$n+8j+}jwphI)?vNM@UixWkx6yf*H#J4b2 zN#sOEQDH+>zj~@-_`@dUMrCPy|w94cKy+ z{Hh1p54w?Hr@2I@=|~Q6xp}k>{1v_a`r?ND$0h$TAFIg+eMZ;>w-!_$yjP>e=%*kQ zIxe%I9LCQ9D!jEq1x$fk8Jf#7J0Ot}$2u3L8H4BcAN8IPwwZABnz?C?7xyKODBIYn zwG1vEEb-1_6BSVAS~r?#hF0ywJ?d!QDHFJMngTpwlCP7sFnn^W*{eAnTvf2US}u72 zD3D%FQh)yF$dUMwl`er~Z?iNV@SGxN~@1_uT( zQr7$E^#a~X25$ek_+er;<$4ed_8V2>|C4I^|57zmIxRK-7gbumgKUCyBV&d}Dxq6< zNw6hIH`4%dz39M8?|d6>^W2^Bp>BxEVq~vrs*S7&RP4tWb2A|R61TXFIYq!@ak^STA+TJ%<*YvT4(N8?LzN@)F&A~HjIU6oAyaKHRab+kTDlJN7Rr-b~V z4X@<3u{BBQJ?fevdv>CjhHX0*7(XV(PwF|50u%=PE)Ww%y%?0C5Xz{75~ z$kLow2O7Kuhv!4c@ve9TAkf+T;36Gp4xnuc(uF{*n|GvsKI(&CfRENd`#*%Y0n+JLSs?w(AhARf&Sb+7sL4kF9XNkF!h5$4DVX+$n zuVpTV^w!4m27Y5MZ|Z&^)52b;xG>ylSl_kYr_~q`&sxiP z#ek+z#7LO0H2;b8dlMz2bxIM0v;Vn@LH0}jb_<--1a;-^aBG8u0jkAHTsTZO@;A5m dlJ0)9Udrl02{@TG>+85UtqY#ql_dc@{{ukvVD10_ literal 0 HcmV?d00001 diff --git a/images/monsters/pirate corsair.gif b/images/monsters/pirate corsair.gif new file mode 100644 index 0000000000000000000000000000000000000000..e1a8ee696ee48307b53a7b7cfaea5b20611ceaf8 GIT binary patch literal 2756 zcmc)Kd0SIw8prYH$vH_*HnK}tlq3cW5HLXy1i^EXumk}kD4-$@i%StL3R-KSh6E86 zG$JY}YCv15C`QFj%2b;GQg9i;rPXRJTA22-T2rmHATt>{bIm{V2IimpcfWzpH&K@m zH773=gn~CHaJ$_A01}DBQAI zHipsU@=!%^nA7QGFj#iGJt88OCZKrA1zlZTnVuOwUQ@Sh*&-78hK5AO&5C0PX}Ulp zI$D#j4#Jp}bagr}khO8u)RjIfGBR@S-2iLWtP$}=+vuXErltsASYKcNVItDk*H;uv zo|u@pd-v|>=&1epOl^d=wj(IbwO_1aF) zU0$|J5YgTWG7|91oxn=atqo*6XO5g65UPxl#!M@ti!$C%J1)&vt5fmVgz8OF4L{PD z<}p7d>;As{oO!a90ig7q(vFUf7cXAa<;BdOKfkQ3?AGDz^XJc>Jb5zCpHf)3jbkKmfcp=PtWqM#xwV|IWiB}+wlnN}jebPL-;NkL882lo&GD(uS^xNp^;s7S9YqbM^1M~CKZ zl~hEqgBIz8CClIY=N~X4MO9jae)*~L=uY`jNz6dw%BJlByUpbB+vp6nwEMt{lly~q z@813J78rgqI)3wj*()?DX{n6Nx2e|Mb4I!EA1n<;hnsaO3D=n5lc~#WT<#q>eOgt9 z@atyoXUWNhdBtDsCJX4Gp`qdD7Tv?e=*ChWN=T_O*s|JTB%4v20o5vfu3-iJOrYzbHdP=;Ome zl?a@~AQ?kx(^1OUtpAm%Hw8jO_~KPbmO$XC2`RXbJDZ)=SQP(1|q!v(;1 zu}7}&92XEpzb6jCA!=6bmCdB|yQ;IR$<%Ibwh>u*y^4Y;8e1OkXhP)4@{gtUPi~rK zq@jil1xZc8Q#~x*;$ghOw4@B(?=_rFz!dto@+d6nfQf2q!73%pot8rGaLWb*BnNND z{xQ5^*yyo{a=d2hvLUgFUol#^8JSNo~|uJFO>CtK1~CZmw# z)9Fce|CCwC`n?1sSdYFHf`KEZe*7=G+n?&d%4alzLkW8&z)ObO`ebWR zWopWy?&o1TDl zxgJNh3K{|s8a7x%)LpFKNvJWa>0=M3(g@Ul%mQddhdU7StKFZ_6ZBh-sUMsbxN4MJ zWsroCM+QkKf^u{+Xnf`2zk>qI)3!LoCUBMx)gE)&q5*qpiPZ?giVJqcez$s`Jb`>A zQ_tqgB-Nt!Ev~f;4-D5xwpEqxko`<=(=w^7l0-6bzkM4mL>7z$gx7$c=AArOul7S+ zf1M6TT5uFG+Iqn>!N~6FP)y8+-YFyIsYGpkH+`MfaP}1Igq*c2RG(t;oGK{Zj+EFJ z>ZcJ&Vux`?Wn{r`*ZkZW zufAEZ^|_FY{;%55|AX4spDP{bOr%CZ=fV<>ML}kx8ZJpA5=g#`3fTqN`w@mbdye)e z>Oq8BW(^a?7ZZqOk7!Xg$4PT+2>ZhLHG~$PWOH0krt;t^RYB1JUH>;Q>lhSxVMgmO zEV?0VLEg|^Cds_aX84@)!6tnbJmd(r1I>lp_}c5D^tZTk6W1HXGr!Uu4nJ}z#how> zoaeV?)QSz;9DOh1VJ{(X{3Po5SLyu$CqL=9@c}FlmR$>lcQSN;YV7m+3U1V{Ct)~+ z22ZO7ykW||6!6T~PDR$sh6!S<&b8yCM0vgiEVukuvfybCG?HS1$k;502D<&+R4;)G2D9L2UjwU;E`Y~IYZQ`Sw7+>XXF2giQwu(jZ1 z&lE9nGZI|~CF3_#1nJK{5Ha^Q#5{_f$FU2|cYf~njX{6CMuBZy*6*PY6Y&=fp3W<$ zC~G(D^oCQk_&Jnot(?C2!qQ@J&i4If@(*rp?u3YIsGK`-+i%6g_xAw0ts*z73bI#6 oyxVK2WIkKMiUv;P_gYYtC)Uw% z4slY0tmua^;1b$83_8|%n}eK;(WJXptVJEF&fs(&W12gG=1qxYq=cf3ZSIn3WYWgy zUhVayz1#QA^YW1%eZI#}v{;UGQh)+~17Lf58$&TthLI`)lVOHx(%oPzBm-8H&Y;0a z6qrp0-%-PKpBu-CR08-KNDL*c2g=c%(0sp9&V|$Gg1@W3|M)S+CPFJsL>%xx^RW4w zk?g`;cYFO-K4GA=cNdbS-%M{6h3RC1=cnh#{j7^I0^DUH`5|trkjTB`4=@xzlipY_ z3UMw!&IY>!a|!?4o8HoFfWkp>HXaWH7+`ZVv51e^+RO!Abl63C{lLpQS3VwxeoKK5 zCt_g$Xy&LHC-BYrNRV?GbvRQ;O&jrm+Ys=vL2rG~&z0`Z`RuyVaw<-M)Q~^L;IvWe zH4?dbK9>%&EX&6|fYc@emaxwySP9muo1B~k|G)p)0{U(FsbW=fPqG&Pd>bIR&P52I5s{gEIT|{YM^tsm4Z5=#krGrOXq(Euj!C;|n#qz% zi44c7V#}Rfdu`S8kb=XC-P!<9roandxoTP>wW;Hyz#go4qGGzD0K+53(&F`HAS%Z< zQV+^8MABY?^C^3r>X}PxX*dPxF2q*Gkk^z;w12Fr&7_b@SBIoHt; zgKDd1>*c9e?r>8&bdsWkauIRp8y<7Y=6<`jIhZo<;hukBL z@~H8`IpvR9t27A={usi63H9mG-nF$JsHr!t=Ll+;8@~O!54Jy19S5<8`(Yb;(Z$+Rt^Q^`Nw7LSlf94*<gAkmxJ!{*2&dX&K)i|vYAN7CFe{w>#sC>`w@xm$*cRnRVERW82*Jm`xd1eA=eH|28Vyv zfgEzNAbuanhh$stFAU1-Ue!GI{w2H)XvB>Z+|AFIzN(goy#4j)Ald3ENlTx1fuD=Y zLv;S}4m|ZS-kHigTtyVsIy}G7I9!8-G)Da*s@5ZnDv=15w=DmVE7r1FgO zyBO{U{TNoKo_#MbC@4yi=?uItP9zQ*zGnUS-iyeby5ktT=i2YbAfLVZCk88Ut8YnO%%*#PKQwy_$ZtD^vCVsO aLx$>HU;IdRygaS=Ypd?UloG?hbN>RO-e7A0 literal 0 HcmV?d00001 diff --git a/images/monsters/pirate ghost.gif b/images/monsters/pirate ghost.gif new file mode 100644 index 0000000000000000000000000000000000000000..4910d89d3d4f4b6ce9e404b0ca52d9adae188cc4 GIT binary patch literal 1697 zcmWO5hg*{e9suCq_kGy}62eFf0mCeTFaiMy2D1kdLlBDW3t>ZLY6Ta;uw+~jq0&mL zqEfW?97w&h_jq@OV?Q{sc5oD1+G^z}3JBWT0=fPV@2iPcM~E_|AcbG7kR1kc>h5+< zRaGRS^ML}VtXwqI!par9!tD>?eNj;ZsQA zxeIpV{0lXw#(JSV3wW68!3>Be#D&`mGY~Hy%<~&a3qf~yAr4ntAc3;y!+J=?Lf<_O zF?MPdL7eP|)FPTg4)W7(N%dt=MoD*Z@Sq?#HC38IO-v`~eNa{^Md9fv%vBvH6Kn+7 z8+-6VN0bq7rvd;aIiQf7kcHo`ri4Tj!+4mxE4rgc3z4X&Jxaa*4@h%Pwxckd>8_4; z?0@%y-_Gz`-LMUHOVCtRh~y}b1?&`=5~0SeI*JP?ia>zp>B(XnvRxE@_Z;j?5as32 zvhaWl!v*?naluy*aS}OVVH&=kfWP{upRa|xkpDRnKL>_>M#}$AX!h*#LV^2S6t6KoKc<1rArIc2?LW94DqUc{X-=H=MV?C@4*e%FFa) zeJ2z*Y(5Nj0pEt#90N`46A6qsf)i<}7?$n< z7vsLlfl@+DrJdrtgYd&K__YH@uE9}emOUBP(Y+iR^i)D#BGy!fG#mzbkf9=;EDhAh zi8D3$P(HS^?=^{P6a+S&*?y?VD6A00!7cwqfwM4O3}ahgHq=o%KGddpC6>%l$KO8T+qY@KNC zC&zJ{lxNuwXh*0s`ruJ7cLj&m_21%8+;F8b+<@cn7TmRt3M$$-xvpR(EkFKq26HQT zDDwKy8I_0Wu~$92X0xp(@Iq;+ikzcdRiNL~fry4onulmf;tDChOS|yp&~l}Mh-l~w zACsdmW?HDGu1gP{YFpM7zM8c5I%@8uVUpHtaH#d3FWyi%CqpoaDDjrPB!r8n?>mQX zo&+r-;t2rB?H>FO?G(p2>2Tqc4tQR^J#Pvs8skR)S@m>l#HD2R*Ko1uUuSKEOEq2t zQj<_|i+QfZObEz$yiwmj_}L9}(f4jIu}6^sUzf*844L;iAAKzR;&XY}$%ilQ>{{7e epV0(uZG3T{Wb5T@UjNps`6DY^zfkZv*!_PzHDJ5| literal 0 HcmV?d00001 diff --git a/images/monsters/pirate marauder.gif b/images/monsters/pirate marauder.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a68007f58d2ea759c371821dbeff07418e831e6 GIT binary patch literal 2982 zcmbu>e{d6J8o=>))1-YvL)k(KOR1QJpjk;Vi&e7P;gW6BHfz&qmxiOu6&lkXU|LNH zy%R$-o4G6dT_i?Wg~NwJ6Y(L0F{>f{OYy5izd~iVBr}Rjy8$jMz6<=$TBg6F{wgGjzS%wKn)lFBEnmEEJui-b#)t6J1s&RL_U&dA{C5Yv_rQAfL;*);WW%eqZ6X zl9)2{l$u0V0aGN(zQbaB&bPBj+|LkpfwOOFf2(* z8cNEdg1du5xg0X`yp9SV3cH&8lwFMEu)R(Eke&BxX{2YbRPs(E3g$3lUEY9$#bzGC zt7cJ1$B+%eBIN3_cucdq2z3~cR$igN5 z*_*f+89m|&8`$_qe#$DuZNil^q2ArD(Gvl&-V<&VU3N~ONWmubw!0!-kzgguX{qo! zE@EU+h2+=K6vm8Q^fY*)JyDO2j@Verz%q3%=kB1?=tXKusB=ZF98!@3?M|nbig!rS zR;NT!p*qfQWLN`xrN=vZ$TND#HMHLqsN@hyhL8ANS~~t|IN3L89cRfNX_|YJQClGv2q#g08tm4b+J?yKT`#>h zoYzdvZz>%$#I(ZR2QnPH2R}I-NKQX>eeZhfp6nGJ>SOZ?c%;*p&6Tq^tR+oEkHJ+C zxpZv)^fuc1%wngH&ez?|qN{hJG%J&frxeY@(!|P z9*KA~|D>DP*Rgm7B9fjCSSJtt>VF!hJ&+KcV-sdovJ#XmwM#= z;$nB-PPDVKbLrNTZpW7`pQgNQYQ}qOe74L2_mpc#U+O|fm#43db*Y(Uub0@0y0f$G z^WItKX}xrC<<4~ZM;lYGpUNa^r{<4OXbx)jrF)ddP2cq`LCxQt&sZ8J37U{ykEN4^ zX{TGWasz+!rKK55V@aPJe>brB#D#%!q>vjvYdl4c#L@=79ruyvwYN<=&4NQBeS<^pf znkHxFi*@Q4QJcnnw^?DCS6+asKXY%J?eMV$s8(C8Nl{k4Qd6aT#$ASmWGE-`KwQ9v(aN^x#8 zlD&|73MDBYo)VnD{dkvkG=bpUu|U?BnkIaCNd1|$GfPuXNxfNJkL5u^cbe@%@5p#XHjA-YlmhXg$(nd!tA z;n9ymVh-hRkRW$J@@SVIdJ<}KLJg3PML8V65Bdr^?5q&MX6OTu3=x7p0MA&3!u6uR zf)}ilfr4s5#9TI((U4#{$PHzn)mUouLo~b<9PMyI+#niE7AE0uCo%Mg*Hdg3hUTCg z7V8*jVDE`21QX;24&(Mom?5APMS+pvpHoMHzK{#BIesxZ+7k#ih@p-k@DI`h+rRl8 zZt;NM(A$Xy0eS*?giu^@@IfO30fZt!pddSmN&$KT?Sc#f;Q(`_j7_W)prQad)DI%* z*D)?V?bXqcP*#PVW@b|N771+r4e3au2ra@So*0Sv9ei|~1YrMGhM^-~%E&>wArVN9 zG4vVobvZiJ6BNzt;1wSK9 zT!_)v_q>gm=jW5W1k(Yxu+PnKpB|E9KOZtc}Y zR8>)18iC*2_nLWYuIv`&oABOz^OfUkXLT;vcTZJP&lmeMl8x=JqIYWKLE9E$^W{hC zuKKRomW=Klj^!)bOtMXNb)D_}1=55b{>tF9DKAo{tuu&fcQUm)%eaeQw(%EHNt0R= zk_>IKSt~ma7G(Z8kZvNL2-cfr;sW(*S@GfbmZQgW4(3nSnG9P9dA4CIQMxqIwq}af zG@MKnrN=V2y;+Lo`c5)N6PwUYmAEvYls%w8MQ97&jkODNr~9eig z?mM*X=&|NG79y+r3~|q$%|E2dYsUNVv(Nl}zT?0SGEb3m?ci|Alvho8NvEFs{wvcw z^0sL%p(lO!;I-E-W95faT*V{jGm-4C)Vb}OHigKa(&_?_FM5ht>x(5VDejKRZk~0> z=f5!c*xUJ2bxm*A9#EW5qMLE9!E)c-@%|Yr6zFtD`!B|Sw5aVwQ!3F$tfN+KxNdk{ jsp!s|x#GQy$UvH+N-=eIf31fvyY2q@^PB5I;m7_942>wn literal 0 HcmV?d00001 diff --git a/images/monsters/pirate skeleton.gif b/images/monsters/pirate skeleton.gif new file mode 100644 index 0000000000000000000000000000000000000000..34ffa2ddbe1fe0e2f5080989dfd4e2c82d133161 GIT binary patch literal 2401 zcmb```8(SQ0>|-h5;+keK@gEhgc5O6$M_NwL8~dDj@C-GMtUf!UA>67>xi~Asbd;- zj4hpYwbjca>S#Nw)b^OsZqRn7#>~*_G)()=boY7onSWq^`#kTTKd-QG{$^is5D)}> z&;iX=NB?<4C64fD!WeSB?O0shTETC% zSD6^%rf;{@AC8LfqGZQ<+L*xX%wVe#!# zY;oR)!ba+$0Z&g161G2*tt{MMofgQUAbAq&tH{i3G720t_{yk z*2M2g+%|CMp{cP!QtF9nMen@2>HL1KwWB!!t0${yThr+(<;_LaT{bS3`9N&Dyv(v4PGoYhMe$wXq*P84o#?DkC zY~|Mj5e}{lvX?Dsv?|Wp1V<<0LM5@~xnkIb3!Qn?fy*NT6%YFZd=V?5pYjeDhYI@;?Tyv?v4Zl?6c9%V+nqFy8;q65$Z68Gj(wp zDZ&@`drvq6Ck~0dZ3#Yh=ED`SC0X&sH~c9?14Z*q=?=f{+8jqqf)mArLp7~BE{^oD z+T!Otct)K31P5T$Yj188qn1AP<=Tz$UZ*AF`3H*YHBcNt1+drPN{I<@yL74xLmqF z(ue9S3Obb(ke}>pVFcs5ksUgkCi?2RBi9+`M)}2x12H~R>dw-myZuM5HyjEr+Z)*X zboAJs$OqTIGBZR!9_|QDiMif(CJ|(IDe|mXBme+De~GTskK&19LV|@ncaAFp_PNs6 z^|0=M4q$)YpOFLs07eJsuoOYJYPb+Xblf@7-K;JpFd`ZSJ(uoQkUjRzP4u*k%V{B} zDdD}Xljj^_F7KS|ZM&~z5ju)o>GR`v-Mx|&(L5f z%a5d`x3#Dg<1~7DPQ_Mz>x0?ISHmsi({;uxw6amBI>)esPnGGe_iW_N&POzF?7p6% z(F8>oR^ApokMHAr;;9&4bDfx-zZ|2JQrWSJNcZBWrUL$VH11@*mw2QNOIywimE|D& zclB|%k}%)R*wmQ0BqmWEXUp3A92KqUDGa?Lx-ZwD>CV_i8C~Hs6G!G2Hto}NKU+=v zlIM`$`>9;lvmlp)ryhB2?EfZ{UyZMLY%RTrR}ZNArj}`NYGl_MxjZbHYkoT#?xRoW z3ksmjDXKuEYEf?CUoInyYvGR5v!yXfG`Ik8V8ABrQi|myD|I#202tsT1T`i5m+Q#vKJ$UAG&RA zLNeI8hmM2+r~&)@U<+fBEuefD24kt-;%HD1fB}zfFk~P@+jp0|OQoBaJ4sQvzqQtG zgxq6-7l83gm8jTJv^$E&Gufw<@~#vNS~?{MoQ-S6ptOr>`#|ktImql^G9s$do9DtH zN<){v6o;%ZdbaVd2*l1Q_(*5%BG6YLbINEdt`3q3p^Swo05Q8brT;Md<ALi^4YCLN+Ahpg`jD2xo=YpJV?D=!Q4X;BWb$_kYNU0#= zTLI1sW6EW)F~V#2#y$=|5S`qO^bY1WPz zCB%BLP#00x;(cI?C%L#59j)-AzCRlyArP1&TXNTjIGg0u#Mtb%Kb5p_7Dk;EdvHBY zHI*2-j2v}3;eSea{opO=IL%wU`{nZ@NZOw}eKTYEJ~T*DS63Ax_(!4HB`i13xd6e)hkB)AOQnx-oR3fI#z{l2Gh6oTT z`+Gj5>;iYUUZoie{GFpr5N8Yuv}mK%%au|?&UZ~fZKB@nhJV2 z7IyI@q)90NBPcz)c>iUgEKa$X56xwb6MUdTkqwsf;}p_EGr*8%Ee{pPg%@ay5Z9C| zLpcy;dr27+UtDVv6a8|^%JZ92k?k8dVKMeMZ6U^XNub$gnz^P;jrL1^5=Bf91Ow5n zLxsr}TqTee4a6O@lRP=-#y3wF?&I31k+gzpoF=C1D~Qtj8b821^5Tey*<6C|}8PI5rH8cYiK%XKvJ7;s7jE-%O64Z}|q&HAvrX+Rki z?;dOzn{+44@v*jryBnJ5-s&b!`n2LAAim^m5j54npZc%IjM^MzAWvon!(f2_AL`8T A>Hq)$ literal 0 HcmV?d00001 diff --git a/images/monsters/piratebuccaneer.gif b/images/monsters/piratebuccaneer.gif new file mode 100644 index 0000000000000000000000000000000000000000..4569628e60685623c03f47bacf182d02bc1fca3f GIT binary patch literal 1570 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 A(*OVf literal 0 HcmV?d00001 diff --git a/images/monsters/piratecutthroat.gif b/images/monsters/piratecutthroat.gif new file mode 100644 index 0000000000000000000000000000000000000000..e217f76ca4953ea64bd4f51590f2d67d41127378 GIT binary patch literal 1574 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 literal 0 HcmV?d00001 diff --git a/images/monsters/pirateghost_002.gif b/images/monsters/pirateghost_002.gif new file mode 100644 index 0000000000000000000000000000000000000000..78541b4fc110ea102b0b961414ed8ea3e111d278 GIT binary patch literal 1716 zcmWO5`BRez9)R)h`@Xq3k^l*T1PF!%f*c_M1PNyX2{B-35ahCiaC-n!R;VE1KC~k$ zSVt%oR0PM7ORFudB?tnmB3h?QDIM9?c3Ge*YOT6J*595#;PWV=qXGhT8qmPsCdl-I z2=kzmoU*d*h)Mu?41G2#sbOVH9blvr&Z3I4Z1^2ga)B#HIBG(q#8JUU84DAz-9^=A zfSZskboL3tZOvCyPxQb+JqR&}{d+)5i1WAb-GjIYFy7CQDn{*G5bKM_Af6J^Sq~|g z-2h^@x3ENQ~9W{UOHKa0=EGbq@ znuCp{{jDBwck;i{0h>^_49#WvNS6Gtr&C}?0#rFx26LfeFZkevv1F+k*)kX(G!HTH zfjL=JJsxm=IPa~PU<=B^1G)`!^TPOi%+VL~_QJUnaAdl_NIXc&b5eHa55ZH83`ogAElmp~25?@ZhcnrvVG`eU~ z9MM0XBvuEcun=k@N%i|f7y+3tPILj0?j{E;-i3cn!qu&5?X_?pavveudC>G*6+G}7O zV0i|(823#U6cW^>ma-@N;n&0PwiRyo!Kb!*IvHM}J2+J6E`^)~thoqjD1iuXO|h07 z<`o+!)hX~256r2z2~^_b4}P5A;Sc~5czoy&M`!>@CNPmX%7Jsn8j`hp>eN8j?FJf8 z)u9~ho;b>qS|J@?xKikBCrhc7+& zGOUK;pt{yO;q~+gYr}Z$zsC~~whA)0&-TS%7Jjk(Dsy?)sa>U43@4gfR;dXG{_xbi z*H^XoxRy)}p5xW03DV}~bYo3d!mpsZG}@zoSDmqp$X_o#JhY=ts_u9?VvF^Ep^jOn zeEa_N@_C7$W8-^-_tWu^vx@n?N8>Zsvsm2SgFm?KWRJGDHRllH8gl5@_N40w0xfGO1tnM!%IEU z-mkk;)8dZ(TnAq*aBDy+?Y7)jax5a6lKObKQ+XtPmcUkv5K0Bx01@=O*03>ZM&sH~ z7@|foNl1rol$Nr3`?2|JX)lMcZwZrCX-Ci5IF@)@*3-cUapEXi{eSD5+d-a;= zj@`bCg^kBn-(iG`Usxvyc9C-$0$$umJ8olM{?Nu^{_P@44H{sKT2*SuU7Xh&Lw5q{ z7aq#&TGmIY{_P}5B$%O;|{#mjT_A$ zk?RH8nc3NCtF!SnY?Zpgv^Yu~x|SiQMi~Ysslrb#gBhcoTPMEb`=Tb;{)H}+h~#pG z%FxA#Nh0r_{X}5!>w!o@XlXhY>dH#LPxPoAVTpiyZk&3t*DyBhv;mV8fmA$3E!ubL zPkhlj#M0TVx*C!)lUM!i5;r~eo5owCr?rBO!b$iOCsSLA$Jd~9{U0mgU@M0m*F%*p zs=!IEp-~!ITUDohCStC^N-wHlHZ>YsS^2n^GQv0IV@3wQm2RYxYh}P8O>r?aG=1$J zGMK&vNu>|}X5oP2gd2thE>-mw;xoD^Z6ZxPL+#=eMKiPRYNn`1HP*HKm8-91%p^D= zA`w-5`Wu3O`P~Oh$vP+zwa^EU?2e%^YBeW)%DR6{1wt3Mu>_yu#<<$iI@`_L>;lf$ z+obC6PMP`s&xjig%kaf++MX{k5IpyY{;D6o_5I*z!Hdh|Hj6PumtKXc<8%)=!z-DL uA9rOPc>LE~PXET6g+tFb{$6bG-hBJ?^McKHOPBgL->=?yeoKuY5cGeY0%IQl literal 0 HcmV?d00001 diff --git a/images/monsters/piratemarauder.gif b/images/monsters/piratemarauder.gif new file mode 100644 index 0000000000000000000000000000000000000000..d4722129b1d3837a2de6511755bd8a96c42a4a96 GIT binary patch literal 1612 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 literal 0 HcmV?d00001 diff --git a/images/monsters/plague smith.gif b/images/monsters/plague smith.gif new file mode 100644 index 0000000000000000000000000000000000000000..c32d8920df01259ea85f7b6db014f9a3e8bbbfec GIT binary patch literal 2400 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

    OH#vE{* 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 Ji9`Sz{|g*&APxWk literal 0 HcmV?d00001 diff --git a/images/monsters/poacher.gif b/images/monsters/poacher.gif new file mode 100644 index 0000000000000000000000000000000000000000..82789b68b561b6a65546f1293f3052e1df34c3ff GIT binary patch literal 5080 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 ) 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 RwIBi$F%!y^69a(L{|&*JF5v(G literal 0 HcmV?d00001 diff --git a/images/monsters/polarbear.gif b/images/monsters/polarbear.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbeb9786b901a40c8f945dff03d3b6e19544bcfa GIT binary patch literal 2366 zcmV-E3BmS9Nk%w1VL$*t0Qdg@)5Wv;`1Sw({iL0i#k#8T=-#HAi`LN0)ylQ~`}xbk zsO#q93MN%J2x__osInPg8irNA>XPy0opzyQ{;tqUPY)=;77W%fq;=lKJ)So0E!@gKDg#oWHZ1?&;y+ z*v|R!>1lHcx2cx!=Gx}p*2cWBqn3Nl!LaD!*`Sny@$l`Pl6B_Y(TROz z*~zui$-#_=fz!^&>E6-R%)!RLw!^lmmWy-6x}D$K+1b*{tf7qd@9D9mlkw`|^6cWn zzPaJq(3_T%)XKiaxud+RjN{Y7{rK|s^z!fI*vh}Nu%?dg>EHD7@#5g#yQYnmj)vIQ z)!Nj}^X1mKte)J_#Qgd8?&8wExwM6Ra>}@!SWrXS&ce>dwvvW>)4`|R(ZccX?DX*G z=HSu8y0NLCl==7c)y=)IrJBgWy6EHH(8jyh(8loW=ke>~if!WZ;p_h#N`uNPjxaQr>`uFqR*URhU*vY`R{`&Xp<=gV^ z=g`c>_wwxZ^6c>KhkU8 z*2%lw)WF=*$j-;VJY>`}Xko_44=g?)CET^zrWU?B(v{)#>5U*VNMY z_Vo-43Y&~_#>2sviEzWcwSaVEL_9M1_VWGu_4e`Y5f2Ri`}f($t=H4djeTb0*TwMd z=fAqB=hw%-x2KwqeC6BF=G@Bt^y&Nb>+9+0&b_3Ng>ijwTe` z65!jSA4iVpw`HnLZ9$#nJRXNpGF3Vs%)Zx>sucJAzHgG2v$QX0RaR^V6kX~ z7+o5?JeV;fgoq@~<0a6976GsL}~BRy=}6t~eAxMGv&t0PBK} z*fLB4cLeZ;FuPzN&J8yd;X(oAuoA(%g<*0F0}Eurga8}_kijcAoWTtpc+dgJ9t|LD z;w_Y*QcEWZ5aPxprl^rb2s+3ji#33h;c<|8bU_LZ)dbN=2K_M8&n|^j0L8|vm|?=q zO&xGTH3gtCNG55_69Y1NaAE@&%`}n1GDm;gQ$4TDatSbEoU*_Oq$HpP2q+MN#S;*? z0t3=4VM5FhVdwlt7>hLjT}?ETG#~;JP4JPz++GueNis4#-N7LOAj85BF3d8-DY+o9 zLJH};unOH@@vzGyqq-5^EJhS?$pY7iLV`QqG~i9fW@0bz_Fh&I7+kN_|rv@pUg z0hp4CDu~Ptx<{ByQA!ANY~V}>Z)AYMD@uehO(z|=;Ybc53|2d`8q}dk2Ar@U!zo{= zZ-p%hbfAqeP5=Pn@*QDf$2uS!aD)*o009PmU3W>xMK#n0EZ3$pb7kagaCD@!UZDHg;C&O1W90k3|bJ6GAO_v4$y%y zl7P6{VFCeVxPmAD;6a5EFaj4&U;+lZu?+>VVFmWc1|%R+2OyYmBA6gY1PYM|U3_5_ z@(2bfFwls0a0m%m$c5`fF@`G|h8$iv1t%Ke0!AF+9vW~)DB__BEMNf%D+mM$Ft7q$NsK3KNnr zKq#CM1u^jB8cq;HJk0Qf6g&eH%81jP>U1Y(b_pVJ_=7H@u!Rg903Q^ffF3G=gl}%g zQIL|9IkkiT2?6}#2Pi0l7|w%_T3~<)6flG&?D-H?vC37qJP0OoP>wqqK@^Kfz#p!_ zhi5c`0^R5eCW`f{h$2K8?4ZB}O0a-M1i%f7m{ScXKp1Z&P8o^#Mhj#hfN>;)AO4_2 zAVgpfljhF?7I47=1dsp@96%hpI088wVAPKkp$PQQf*YKwg$-1}4=X@GRVjiAD%@iS zz7T{QVgL&(=)fH!pz8Q6QUf0_g9pBV1uPoSgHKFntRJC37$$KDVl-d^6d*wZWH#4N zQeX!$u)z)}a0E*r01u59T2{U*AX7eWoDeNE)QfLDPs4&`&umc4u7y~}W kFo@P0=5HPon7|GO(8k7M5fe03hHbxMQ{NibAOQgYJ1H)zrvLx| literal 0 HcmV?d00001 diff --git a/images/monsters/priestess.gif b/images/monsters/priestess.gif new file mode 100644 index 0000000000000000000000000000000000000000..79da9b469030c560023ce54b6a1e850b5e84418b GIT binary patch literal 2122 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 Bd%XYv literal 0 HcmV?d00001 diff --git a/images/monsters/quara constrictor scout.gif b/images/monsters/quara constrictor scout.gif new file mode 100644 index 0000000000000000000000000000000000000000..2781553817bbc991b95b955c3588d6f84e01dae4 GIT binary patch literal 4374 zcmbW&Sy+>Yng{SNU-pnd2q7e43yT;QAta#4ViFQU1VlhYP{aVr5>dlav`R4{3ju;8 zf*24nENVowK~SkuO$aC|TCDUO>#;p-ww$S*B4v88hr;2^%rnni&Bffk&;RDVdEfsp zcDo>KYc>bq0DoTtcJtz|1|2409lY_BI$q`ms)w;c{e1M%-5dQwr3&Nui}$;(mmE6$ zY0SZ32YSoy;}l1y_I>&^=lHD~Lu$5*2ah)!i{XV3HuXiUhi%{Z(HQj~fZ z)b9Ia_;}69y`LWRNmGOsmh$#K8n_=D9NranwtP#fQhZYFThP_htwe*bLfLb&*r=7KF2 zx6gmq{l@Fo#`Xj+er{-NzH|ERTeqxT1IJmyv1^95gXQPqOGR!1Cf4)9wv1zp%{{qg zTZ2Qb?L9mve<%nY)VB}FTlL2q2pGG|M;gETqVvlO-NUWj>0S}#euAz&<;Gowk6pw) z%H|a2&fb$}_d0Dh?J2vbxzM+xz$&X#(KE_?Gj1photn0$lV?sx#1Axfw`Jt0!_(yD zpW+ZUb^aw!?hN%*boJMqd)RJl-dcX?VC}W&Pqbonqmxs`_Tm=byp|lr!Q|baWr=T} z)?O^ByO*fF;ZWXq@=C6*h7= z`neHYdK%g;o>G)1X5W?>?^QQ<%A4<=xhe}vF(@?s)i-zG!cb7;!=}FDsfYC*$CIfH zld$sKp-R~y3CBJVg+wMHVHh;}^Ny=$DrBE-Ef#a)5pZ}*^ZCs|yuBH@{kt@0j;U@Z z-)JvYeV%)zv-lDLfq!sssMwWLxhKE%@Ue%97hmZ+te5WesdP7X9x2H&Icz;o?pLlSAXTGli)^W+a-?lF89X zW#4T80M^#lJl1RyV^VkVxJfb0Kn4`Do_c(Qq1}KrAYgr7e-aJ=pw@sjw2RPWu*gvk zewkyY4r?{uE3Qr0*Ew28W{Ka9^>sZ~uC9ExH2;fyOy~SZ2CJr|ivoX>cxPljL56K% zZ3>^Yf0B@>fdipt-()FJu<2sKB%s7IAj*y@xVP1qkst7Y(d7wc=71Zvok zpl;$niY*C3Ro)9}u($Rc_Lh4`@yVsm+8Rfvz?JmrkPb>0v}?=|PoOr3?5QM3n zSw?A?*GoTlv3V%q%jNr?{4=7F2jhN2Nx=2w6A{0c`ph;c+y{?p{=%eJBhuK$!0}Kq z-}RBpA5opN919lde^i~L^Wf2t>^r3Kck%4Vz=e;YDEW-W8Qhi;k7}2bMdaZvqXioQ zzX+|6z>GI{0f220rv}b3nL(H1W?46Tf)cSK zoP{cM{XWm#yl1wDULV)7Bk@xW-j3;D1LNMrOJTs>Nc^y?6R}GGnczR}WP!$)*9@eO zP^EKT*^JEjy^Hxp6kk1!^2!QX`*n0nJ1I%(7&`aVf@5>cdrL?G*=ldTX?CQqND6=i z$cYbdf7J;;DWW93MCDrEy@-H;WyF}fd6S|Vj}MXd)~F3lrdWi;yEv8wC2!yaItVRF z&mYN#XHa?p4KUir$doJ*v$2+v^_~O8?Kv?WL;1yap`LOF!?4(GLRsNXn2hxuY} zfb{2O45XrWobWoJ-~10;m5SIO9hj^)aW|ZEX#|l63Jfyz#?OxHD6feC2a=@^HU|(V zzeeFaO$i!QFjThZ)dmYz*Yus% z1D4)70^m&-w{Jc;5y-Xk%e0q8{=tWuf65CH2|{g`9Y)DMMLR&u3)Wl%*$oet3BOuO z;*!2?3Kk*)$q4K=2@ETeLZDIsWM!Ik;NwlZz7qhpGRFS20)l0;pc6D{oeL3y>e8!R zhk|j)g({>?*swjB2B4O6p*bu$c83X@H6Wt@9bN5>m})-FmpNTg!{}?8WJUH|F2QYv zgDG36iwQ8G@l)R+GM5`Ni6SUa0I{Ld*LPIeeL&*L zywG+1iy8uwNNt`2gEPdXiK@f_Ic z5H*{KC-e|=A-nWkNG-S4Hi7F##GALkB-;=I2w419%I-<7|NalT%o)$IMd4K<(p=GI z#$}3rx*D$ssNbN5{S_hzQOMe!mt+X^0M@)&{A~E8Uy(4Oy)v0DrT*ZpW_S1PkQuqq zG{sdm#!we8;bOEQaw}yC(Q0~(OCsy1Pc+0fdY}zedK+`C|yOV{h;z&F=JiLAgq7{e^0)Q zzexu|;W>y~l-)GY1lclZsC8(QqGjmqSOPa|X}9(jI=(HVC7dfB-O&8eCZH zUDNw`Y7H7d4{5dy^L2lNmv3wn-L%tI5yuTsPJuKST)s}ldIUY*-%T}}EQEV~H5n_p zJ#Ss|kcl+e(*+^zoGw#li%7y3gaOn|Z5lMGKqr1J$NsA4oW(4jP0RFfVm9@#YhPkd zCv=h$!J`l#X&tUt${+>Hqv9l}pO>vbEQ%ZOI0eUweCFOeKMZAhU246-sR5TkhW}!H z+PHPws$tm1Ot;Q6AK};AF=1sI<1ms6g&GALUWnDZMO6<_ACM^Z6dZ{)aLJ!GSK5W|d?~6@P@LveR{~rjd{tpE0k$ih;X*bJF zH=YnuiqM$&6L}0w>9feb=aQ`RS_~yjZvUL2zK(tM1ggMUcoaxmmbG~~kTJFchR#mc}#LuF?dy7auXUcuj73sDe*lhj6thWTXn zGcz61986bU{Lrx4_GH=1VyQ(xj_aFPywZZWj=GrKtQqo_NDgSDDC>Oc^jG4nT}b{7RjpGN`2>x*>%R~**R3PS zkrJQd3lSk(-fC@O$>;^R#I5~*5Nx^ybCfR?Lv$cfq@>$S=!VzfdgT$fnwopw+qis7 z%{V<_Z^K@h>>71FK=hIV#pyXvVsu#tq(yPm6c1S~yY-k9D*^4OCF%}rR7KL-?>hn= zBpqX05%Y@xhPon{*iZgwm3#h#7YPCWpf1M$x&cH$Lf%h}Ivp@_58Dh&EHO5r6~#(~ zPurXw_#tY}j!2fiJhRSWalG4I!&!iQY~kfQ0GvBphjva)c@hljlaOBYInkd6-?je3 z?AD>sY5to-Mh4>Ya%*3-86TOaW`nG%M8sZ2S)*W8GLcAm5@vSu@5h%~0{Y87?vSb` zbvCf%r6M&YH>3|iJz?&!;Jv(8k^<8d#U1;h5 zA+Ec(!7vaVfriy1oO(J0LR^4^gN&{K&EJkJuX<xkO1}ux;3`$7FxK*2b$Z5`b#{ zQ|>j?6vusMm^NP6=~8?*_=<2E#1TxMW&~DaDW#|sKkxhsuQy?XHiaD00qL3juP%#S zB4Je5G7;ZTYm}gH)nukD+?fdMpfs)RH6wrlGdO48B72@2bTDg&aCxv%xo~XBFzjd# z1Y<(-QggwOKgq){#*$I2T?G(R9aOyW_7-%m2UjK7={h7I7ab=!Y~?$O&f8iNRk7k z4$9mB4$;661g)ub4ci&n2)lHi8)+Khr@?H>do2Y}c!YD@2p(oq5D_M>WWDDy-N%J!i0z zCJP%Gb_zDv06odrM(wl4Y3&H`W{*)kHcMjBr4+gaD$4YPspwy4Xj1EKMj$9VsS1Y7 zL6kradxFa4G)hksB})MNl)g2P{8^*tG!a;r z1RFcXb5_lZAZ^oF7Dog+n3dEA*#NUiirKKhLFaH4g&`c=;wxdOG+Vx*Y}T1zlKZAD zuvkVeprQ+ik2pA1#VqOwnG2-?&@8ivz%y1+P5JAl?ORMr3?uy3x4qb- z({a!1%M@mW4R53j9)5x^Y8a3a|H1%(s#jjZ9Ima)z)srg;A4Al2_v0kO>r+ZdyD&8 z=#%Bpo;t8KBt_#{WQEU!OP#Y8sI1gzU{KV+E_ta$P93}ABQ>y&0&nUUyupO98cG}u zjg-LszW<|L_@FpLrnlhnC;rB>nYFL2wSn>Htz~O62j0MR=$mne|7g9suX?JRdQt)l zaF}^hHDU{_wsP3{!&BS5XOa9UA<=C_Ml@O=p2h|Kiigapdyw{xM2V*M$RMd*1m=r& g=gsf6^i)sZ)#X6B9BZHc{fUN|-#6B<33wplpXvk6Q2+n{ literal 0 HcmV?d00001 diff --git a/images/monsters/quara constrictor.gif b/images/monsters/quara constrictor.gif new file mode 100644 index 0000000000000000000000000000000000000000..2781553817bbc991b95b955c3588d6f84e01dae4 GIT binary patch literal 4374 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 literal 0 HcmV?d00001 diff --git a/images/monsters/quara hydromancer scout.gif b/images/monsters/quara hydromancer scout.gif new file mode 100644 index 0000000000000000000000000000000000000000..638be5a70cfc474d049ba35137b4ad8bc194bd15 GIT binary patch literal 8502 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 literal 0 HcmV?d00001 diff --git a/images/monsters/quara mantassin.gif b/images/monsters/quara mantassin.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9cf7f1198df8dcc77514ca6e5830614d1cdd271 GIT binary patch literal 3965 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 literal 0 HcmV?d00001 diff --git a/images/monsters/quara pincher scout.gif b/images/monsters/quara pincher scout.gif new file mode 100644 index 0000000000000000000000000000000000000000..d16bb681ef08f5e1b90d632e0cae886fc25be509 GIT binary patch literal 3803 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 J4}gKT{s;eSC=mbv literal 0 HcmV?d00001 diff --git a/images/monsters/quara pincher.gif b/images/monsters/quara pincher.gif new file mode 100644 index 0000000000000000000000000000000000000000..d16bb681ef08f5e1b90d632e0cae886fc25be509 GIT binary patch literal 3803 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 J4}gKT{s;eSC=mbv literal 0 HcmV?d00001 diff --git a/images/monsters/quara predator scout.gif b/images/monsters/quara predator scout.gif new file mode 100644 index 0000000000000000000000000000000000000000..06ebd9647aa4d98baef485dbe7b3154bd20cd372 GIT binary patch literal 3730 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 S8S4S3cn1~nY>0>jmi-R`f%(w@ literal 0 HcmV?d00001 diff --git a/images/monsters/quara predator.gif b/images/monsters/quara predator.gif new file mode 100644 index 0000000000000000000000000000000000000000..06ebd9647aa4d98baef485dbe7b3154bd20cd372 GIT binary patch literal 3730 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 S8S4S3cn1~nY>0>jmi-R`f%(w@ literal 0 HcmV?d00001 diff --git a/images/monsters/quaraconstrictor.gif b/images/monsters/quaraconstrictor.gif new file mode 100644 index 0000000000000000000000000000000000000000..0dbea560c647f1f1a121dc369cd4ab008e8c78f6 GIT binary patch literal 2649 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%0A!^E z>0(eVTtgGOh|=IhmlHL#6cU3XOQ9O!l5(_lU|E3!JyI!+LgI-812tNR(V|G)94%sM z(Ck<%k&ZwI3g{SgaA}k+a}>-GBf**?EptwIqSABj##@72c&L-lP7hlK{c7t1W6qdA zStP_PM9tQ%R9#MbbO8nktY=~Rl0Y%$Necj<;wYeUM2Ra9oj@2$T0|XHC<4Z6xTHSlGeR;mOya^A2mDb&IN}K5LNywCgHHeAx3Pl%Lf6(puv_0 z*>X)Or2ugQ16opBZ5b|zvIGGi+#-VtaB#DRF)SG3LJ%q*5yL2N1T(`l;~Zjw1|T47 z(@99UqFQDfl+(u#nWT{bI0T&2O|6qm0D?&}vtWuT6UPuk0(yYJ$q~m*>4GK@Qc_g3_ zHAI&SR^SJduwns5SfWxiAwW@(;S#QJ1*=>!hZ0Z&4QH^x1Z0Mb2|$AwJXnARVlfL` zpur@kFv$@lVFE;`5l}P`;F03!f-q>{NoXiT1)N|3GAIETN1y{6$l-)~prMelFoO#^ zVUkVMV-W;6(M8a916x=DUD4r0D*7OT6j-4QDZqpCSP=>~5Mu$N7~(8w@dZ-JpdK6u zz$hM>BSm}y1e8z@Cvc$wb4+0yDVP8*Tp>apM4}V1XwnzHa0xNmq78X4gC53#0ct{S z0k{~%5k!Fh3iU)H6`M%GCXNsWGf3_h3S#CgzQD{&lr1{?V27AqfDC&QBn%4xS}K$< zfTVm7pz`A03-A=8-(1Q)8H!x1u}%AtsY0~`oN5kO>u2s}Uq zi&z04im-wm=wgsJOa)8-F^FM|j3T%Ir3Lgbg`uUy1xnxpA0n`W3s68EkI29y0J(!u zG=U5(FoPw4ipzi4VjV7!hE=bMiwd+s38`Q}WB|(tRYYJB0Z2m{5=#y&n1BzVkQptC zQ4Bo)xB^wt8Nib^I}lss6)A(L-52oi0CG@(2kKBqCLRC|RTN}b0U|I#1xrZ41itV>OKgJx;K(TpxH~0VM8*sqh=3ecAcs3J z;Q{KEoIpfDg&cH13A4aNJ?P627YO$Yjp&3fba4v&H6pLu%WEodaf@5vU`Z-T$t=u( z3)65IDXFrBASCeyC^$h644#r8eo%o$>|hfQI*10mAP5YsBM&J6u}W-#4I9)L6xN$7 zL2S{Bj^1JlI2JNVddiG`HUb;5I7lM^frjX$pby)viG>=$QnQ75yD=8Cn%B(cHoN%? Q&2Wyhoaanuiv$D!JE{CE$p8QV literal 0 HcmV?d00001 diff --git a/images/monsters/quaramantassin.gif b/images/monsters/quaramantassin.gif new file mode 100644 index 0000000000000000000000000000000000000000..eda1a4885204179fe30fd95f88719f4ce0512c76 GIT binary patch literal 2389 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

    1$#&t43=s3V zCcymE-(m;wXNQT}4IXUHgfjwQ-vuUBfBv;J#1pY|PQ+3W^v9CEU0!8|7cFgg%7-08 zz5$#TEPMzLpmkV^WEQ8E5|oY0I5LH-EuZu&-0DO)dLEEFS)7l;iEz3`b3Uzav|Dmz z#TKg^*K#;l^PukLHM&B8H|X}?a?=dK8K;^O6~I8<7N^6B2cz4;N!7FG%RHhw=7Lfl zccXTCMgc`S8!S;mP`qp|Ly;K{n#+T(f)rsc!=gyKyaFYw#ZOhBWchjpQEXSs37e%= z%93=A0s^7BPRj6FWRkME4r154FXYIP>8>ap-k%sT6{?<2O?f1>&xJHz))~kT>>-=W z0;6*8PM=dA9$Vt~TPSEs8pPyAngwxUr9=jo$)iZK#KGl4u8BN~-lVe>fliboP)%~3 zsKUvR9B}3=s^x0FlucJG!~gG0Opzpv<2Mv<2Q1<|ndA`5RmVtHdSf}Rf< zG%c63fOXNnYSgZ{nmk=rXU*{P@;_5oOrQ3>C@#pQj@!24coye}<0oL&O(WJS#52h> zZv`mmy)6bz5$Dcu8Z|m>y+8JFxI;DhbV}io)b)Q7ombuVKiiIZ83L;kydBK}%CMf7 zNTdgHV0qJt=5d*06qzM)v7ijni9!`tqEI#8(9o);8bq~)Y^VztX-9FJ5Z9$$kr7aT zBdudAUaxPdb`Pl+>k|MJGH<()Y}#Ri!(!v3$E9dW)4M#XuFOTHeDm&yb!N5lloo(JEZ|^P;j03(V#!IBMp(j$hegadoyz;Ihp*EneUl-p6Byf zykt?}yjT*DfDeG=-|Us)QL950%J7+fas&d_uRfy8ncyApwSKn#hy>}@_o;uT{EEAt zXZHH$U4MD%=Es|39Y9IO&{%_{A^fA~rfy;sxuLmX6p7%h3z_2hl~!xB+f z12{cdI7}9eHbB=Vj`kJNt{ex3OmO;jp}EBN+HtJ*G;+46>&J7n2c`Vszh3 z5$JFsP zs)4GjLEG2d+M`f&DrnyW_hpMZ6G6LKburzoXgqGXIH>Qka3EVSQ0dTG@7H$s^X3xI z%ikCFcG#^jxl>Tz%{$$PFZ2l#! z@X~`_?FHPkkGJAJl=vJNo z0{iyn_Dh3X&L5$F)wA*3b5D~I-1-tEkL_yjU)OZ|RCfyRO1g91x1jL-m4_LObS)VE zq2hMBBqiUerbv4F`{VbkKxrk&$#pRw6jsF0yT6fECgO%2o~Qn}ZmA+hwe+LQDn_!U zqkDNH?YZsaNgYr3_T0@F&f(Ro`R7gwO0t9nd9Jx-peEI~NzXcUMs}jesiEAqdaJlR z5fttfQ_-MkDX2)EmYXIl(m3Sn*+-J0vqv58wnTpS-Ij(M>*|^UjZG^%T32=rFS|Il zvi*M0rCxBn2b5oTyV(}-ZQCc8)WZG-pu5D*Z*;88biH*((vwDX|L27Nf4s0M@DtN1 z!k{;4F`-XPzmlky#5yi5k65Lj#at-sCSJs??K$kTDLF{Ib=88kv+2B7>gVDr^#)m7 zH3p@sMQ+U73Ni)LAdAq=(#SYO6Ljsv(A~`{BwWl1Qufc&WkTUNB_R{))VAns{Dapi zue^el3vVcc6#5x!)E=@x!H3xC@J0qtyvrFr>;&HQbV6s) zvR~8S^2mVT&nN(U+Hw5?6(Qc9GIr}-LTI+th~q<==v{0xVQxu3B_I1cTI5fcy`!5MWtjBO;;bT(#k zfLz3r3O~^SVHosXy%2JNWI7|P*qYDuxzInM1&~;0WYd#Kup`8G(nynWWKR1|$ihN4 z1-UE&H1APmw(#=%Rlr4_YkY*UoxlptMmYs$ybCn0gMIWyGIl0wl7fOcs5Z$-8W6_j z%(svm(ByppUg#tz;pqu>Mr@^wz~NN^a1Xw7Wi$nFV}fS?=U9pp)K5YR?d25{R1Le> zym;F5<)$URQ%AjgQj%!}BbZ>7(hb*p;_r>T=$GHu#_C>w_()hKdg0cUuHq&HyKD3m)JzTO;iQs5uF z6@>31Of+QUst+kp$~w~ZT@t}Sk@~z8I;R`-1^Hz_koOk3rk^ZTqG@Fb9>h<)!?jj^7!b@IW(utVki*2v#1S>r zZ=~(CP_*Cc5k-oME7rraf^}M(0Q8%E946!xaAM^OnF~T8jQ92RQZJQ@Gu{g*kYYRf zl3pC`64Kb`q9ZSYeSfYwBgluQC#!%|NiuycHGm?aBH0;+qcY=gi;717K>wSwnZb4@ zr0-NQ1snoAFzuD>kZ+mJGD0yUk*ns^lgw&Lp$Q9BpHX%za;pQ?L%FkHanwA%AYHzx z84_AZnn;P_6aiRMUPhZCF)9&E@TVKPF?Y>Eu`)~2+0aeK=qXkd#bJF=!*L0aJ!Q(- z>xBu$s($rDwPd0^!EcByChJ-!PnIy0(r-f1 zYh6IISvR+zD1zUZTms~{d!(9`pENH1)d<&MTRG37KJ(^|r#esQS@62lOu6*IQ|0I35kHk*pqqx+MXDaA&m zs-L6>7|?0UDUNOZ^H~jP>Uo?nbiNs)(Uodu0onG@mt?Lq-_km*lFT-DLIG#m zjccUnODDCz-A3&Fl(1s2fpL3HH@YH^hR6+RI2OV<+CoAj7TDnhXm}?^xsEz5JD>&r zWJLyl^iO_hm`eB#q&h{b7ID0ez_h@wpjsT(PN)U*`a?puc*EhY)vT#EJHib<_+mLl zKm6iy08r34@2?UPBj9E!(c6Dp7z1-Mm=lvF?$Oe-@E9ans-&lSnc%|s7t`V|=}z#% zcHEoY&p%^CJUh!~g;QSFy*snu7m7=W1B3B5iIE4uQ#Y}K|9oCTmX}l%kf9d-^d?LB zq5^T(cY>quTNlqt(6`!ti^+pyDO-}DH}nJLAf=vL9eYNqPa5zRXcwjYPA}Qx^XBZ% z#L)jLm(Gng^)B#4He^^Bn}d%0ZE$|zs*ibfWmV@V!K!R^pySV3O`Ubq-wgP~OndF> z5Bbi0nd&lO`8n?25dp`{=iE5~zq;)V4~OCZ=J3D%ZyX*_)@SALU#bUdggqZ`j{j8D zSHtKz0vC+sv_I2be|>T|8?LsZcqM3i-}58~YMMCG+W^{9k76VbDY9#wEW3SGaMMcT6PlYpYJ2tw&;Oh~l!0ITd*J1t z-4kybMt{FKcKgWrCdPvn^okXyHQ?M)aLG#MZ;s!6alGeQR%fc9yA0et!!~Du^A8SR zeSENUIR0WjR8`DvEaWwuvO9MUxwIc{zNI#Nzr*yV=1x2~wFfkeX*(WgwH*aj$GEjx z&|Zh$y9(8oNxJH3b!A9xB`DXhYVzT;uj=lO@93!j&1IcG)_Zi09qvektF%y!7BugN z8cRJ}Qo%?jax2g6+k9xaP+U^UZu;e$yU#Y<+ygG}1nH-kRoR>lljF4<*K?_&tCgM4 zPlK~rP-iSC__WB};A(Cq>dK+=mbIP9@VQL;(u3gmv#ocnq?$5qsHp3S6{LHi{-BE6 zZENa|fq|j;^YL!i6lJ%1HW~InHGe<+`FYl0j-WEfran_v^T&%Vo5t;5QbT~8bXIr~6bvY>t>V>q63 zZD8Bw-Jr}24JOaH@F=GD`;D`mDPj7T0vQ5;80OeFNGbOS7H82IA}%gPLP#OT+sv+ zZUN2Lx$0Z)hG)|2+qjoHY)3oA=UX?QmQVk87HHiMc5MRNcSF0WX^ro%KDxN3V+*G= z7pt>!_)<`%;Wd2&e!92uyKSj)K-#GkWf7Oi%0kAD7)75)NuXUm+;Cx$@#MhuZ(a=2i~>!^+_aszwdQ zSTFh9y`n1}cUu}rx>Xu&JpCq$O@ozvCy?1rVt4t5GwCWnz)wfgPc0?3gfuo&E6>uF z4W+I-Imuoyi`@Q%#CK#3RiV#pBRW;|bei&W$%K3?i=4RtCj!$%4F$9nfv*Se(y)eE zyb%6@nGoNUxuVVGV7KbF(ZR~L)Y7W^H>R_H7sYpBu!(?a7@@D!z&bB4uYJ+6kh^+T zzx=~U^ojj>ln^EMx z-0nc;>dEDXW8@L17YPt7v4>zBPt>O^rg3Cbad`382lXC>X`^wg)T%&N_@XalYJ75o z10#DJNO!wJ_qgtgLhvY@G%`L(o-hIgGo1L+o-mOp9`GYw;XtU2!FvgPpMchQ2?WAU zx+ehJ+Gzowd09x_>>vxC!{omRfnd%)qwraAqR}PWcO=C5i>S`yaM%)y7TGf|LG7J@ zi;WOMPOb-hwD|;_?xeE>+XN95l6&x@yTWGc=SJ{X_dcTytDuXr!{aJ#wWmb7(-N%v zN1ClYMFKd2@CRI^MRz*KRy^FxaK&-OAy}@b_#w%Z896y{ z4>4NK7Lt`Mglz~X_mM9g&6?>Y2;4=0YkW*&X6zBKg6g3DQ*0q8&=ma(cGjHQ1Cg)g2@$s_!Yd?k{Nz7iQx4EtxF zk;WDcCqNJ9Me6|V{hxcelox4%0(<+yKKYC6R9!c4qRy>bQQ>a`ygCr`{&|B*N^C|Ggo?r~dO zZx02H0j7?$u_$oHkd(6!EaFM?0zcVGxbBWfwbyB8otA_h>e_q{%s0YoI-W6-$OwME zKf2aH?fJ{NND{UR^EIfo>zDPjrL!Br`&e{}CI{Y@C|s2+W$B|$oEyOTfJ}niFv9oc zh~TQ}7m3Y>MXt3?beFI(#%iYsm}kV+aA02Sd-%)7RT+nqK4DF#Qo{t{dr5^ zg?^NcGR(rpaE_wi2(!Yf?edgtJ}*I%k)o!(8p)22+cM1xgaTG8ecFUP)5A+Mmv)n6 z%Sc>cwD4#RjA`3d@cif$_>^c#YNL@pCxU_w z5O`bcIQk9IFAGl6PJ1s{#+ZLM+$#ZM7I-bl{LsxZD{*NxKAQk0c2iIc@nA(Y&S+&Cj5PP#Wi6GzA(hX~WWP*MZ>74$?xfy5i2 z?fF*QRhbs9Owc-8K&*d7k!}8L>e5Xq-9IV9dg4=)Hl0IV%vb|{8|E*yvuvl2AS za*LhxVLCKnI17@Dbn&FO4`dHZiU<7@U0kUMN?G_Tf!9E1E zl9(gOTlaG%A%%H=kE28!<>s5vCN^|}uA~eHO&n)S2OV0hgPj7JGFL`#<=RF(C54e$ z{128U=?BDKu8IiwKwPkSd7iV>a2Cq2V2fWs@ReA;$d`g5XW|;XlM!01x=P0s2nR{0 zw~&|(q;{<@bzboL87D5TYhF<23ML0E_?{25J67v976Ti4MiV43AV?Byi(5=M-mJ#O z1pc5o^wTYsDcW)0Ip_<;)E*p8eY98Im&A?t7d64Y<)0HuBZ)P;X=hZ&!tKX1ZB^C9 z3r4t-NJH1z3C&}`YEk@0JE1WgkDl|3^-v)3ZfQ1g68iGp2QJYZ(x6-- zNIe;gc(4z8eXk&Y+nlwDDZDi&;gtQ*FRK66ji+Y97tfLQc(B zrTIKQG}ODiT;v!FHX10JoAn~~D85|9oBRGlFnt;BRjlU={<%VORPZbv#pdc8dA&Ml z{yKtP7iWZ|66R^oFf@`PLs2;G*kcpA+DML^^GWAs8l9VK6!50l-_mnTs4NNL`;sYQ z{j33(`g5GhoE`ONDu1z2lWvDpnvzQ@no~qA^!DrX{1l3M|H9`sTK;g&18k0y;-3_9Gi}uej27ba{#W5vy8lfu zbLh_0@1HFo{@W8i{tr+1`=6J^z1BwmOT~aS(-+#d{g~ckE%-a2x>~e8OLVmesrz$a z+-ecCD+m7m`L~Hfy;*%@$soTJF3hy+d2p!pw2dhXYJ8G^<73a$9H?0f&Q%G!kHBT` z+8-Xbxl#_=%0Y7mQeBFe;-HcTJKIixQELrPhAurxYkP92=P;$ zPDM*<;qpH_CnhWI6+qqZx}K!l*X2NM3rmL!cpzD%U|IJ4I3 zFsY!$8iI8W7pxusZOOe?h35TG*_gIHh3K6cd7i^-Xh2$$rR`%o+6zHb0o1l1uAHpB zm5Cp#0@q)s4IlL=j)T&Va?7%0rPf(OiOiH?f9jHLe?WPEHFVEpdoPt+SqNoTdzfC< z4r^s?=hn6sdA8Pdb+6aym}(FCGO$Nl3;O z+ST*i%T;jGeyF2SRuqGk?E^P&?rGd@S7L4PPs(~;HQ${)b357fOd@F9W7~L)SD#2f zkVVVb1G@8rdrG-OXVBrn!Y*t6URm|SVcV`}l{c@(pJ|CQ86B_vc;QxxBy}I?JPb@1 zdR`3eY;J+h)!AOV=G1h_vGFTVkR+`5N?e`{+EZDVA7^&nI&3(D-v0TUktRlYqWz6R zxB55N?hhajO``wIJpQ;oHnyR|YA>CjE`e45t$$0&tc%t$MlJKI74+*tY8>cD<}?Ll z_C%CFIP8|b!@Vqzd!^i^`V2_cKvg#mRIe3O#WQzq16Mxfew)bu%G>+jF(Ah}OV}>G za!^t~oM}F6quU_4cyQXuSa4%6xcrB4BFgF86`*nhuVFuCI4Hl`;&!WhT|?i@z6w^) zMd!2a(z=uA&1-9GtQK?&G-rl~rR*v~OZt_lrFbjxalS+7BFI z-~9?3>0Z-U%WZF9-5B3+^M4q^|Gu?)!n^~ zIY zVf;BH83e&kr)O^y$E)}|U#+}(XwZS{x!CrR#JRM~^rVDeOegqff`nqHa0 z@(6nq9vqK$rPDI8357lP03@(Q3e{>ybuzA=5!aHUak$076oA|Mh7`l^-cd9NjT1#ToWwnCcvzZdcE(cpv4(r zmVGy2K9-{B#Uk7+)Rgng(Fh#d5dn4s8}YD~R?o>#<2;X+l7h%axiOIO!e0m1>t`x4 zHs?Bwp}s~nCiXQ)!c1M+0Ta*Kw-eEOO&av4;K{Z85JQm`a1wN%*+{|?4g`OeWX^=U zY*Ip;PqRTgxpZR0$i5Iy8AqT%A`DTm&{RM-|GG=ONL0`}w-*ZtM=#5WRL@so<|TYD z4*9u4iN*qjdy5W83l!A3y%x%$Ka)@p#pk~Fpb&#ZS{I#7CQfSS_HW_yKS0R1H7s|K zvZZ>+?X4-DnFF9uF)ZCgnABnwmkkuQb}A~kTq;H~yS&EQdIcudx}76_&Kopg1vgnkm5KG7+n zty>frQ{0D$@a9I37Sm385}t3C-!JXaPMquUKX4k12xht8?s(gy^Ff zab9WAICE0ivmG?&)|Q;$2Pl|KWhbx;N#krCmk6z=CoW;>mvNzXkwELyD}-2$?mX8d zm#{Rm4;)CiuGOpQ1Cc;bLDJl&l6phu=-@3KD>>dI76 zgiR#u)1lyeS#J{e0``)a!D`Q2i+x_pQ#U^Bh8ODuvTW$3q0BNX<{zEy(?@Grv0;XlY8o&IO?hE%G!+B9>E*#e?|?DC7jOIe|5s z1!f98&`5(5D4MVSwg!jTMS+yf+c$K1ipVA97ZTfK9W&J~; z$po-+dl-=b5a#VaNp-abVdz34vdrLjCv+uMKRrT|0Hj_sU02GtO^eJMO@0i~XA}Gg zkvZiL`PK-3+7jouNi;c%#)}D5*vw25sN*RlptXziQ)%Cc!H%v=d9|0fGPUUf>sdq7e$?lpimnTQkI;?G{6%`wZ zFUH4=>{PGrYlJ+VEe1iNxFy>diJkJ~R>C+B(2SRmPx?Q`M3Cp4gT@x9he+1;XlgTe zMsUb93!H0t;<~AFP2j+=&y9HvTptq1Vkkzd%j;)Gt@`3ay*fsK2I8wY=?OIWwTb}~YS*<*8qVWBuDjd_Zoh;5Ewx{tos9|m z6&AI!g8p#M0m0N>b((F!W})vx(%r+Xb*WeV>!5!sTlFh$S55)@;w~hA2IZ1u!cstr z^t}p30>UdY;kqvZ(*#&1Y5(sDoRr=>H!*s2mI^>mSSM_$6!je$tgv-i_U$ zKHaXj475xf?orbUOGMU?-&O~g7usHX+x6t>uFf|_cdavozhC{g7Z08LPXuOPG{>S`kukhmQnvra4$hU8+L+Va~OLd~28uZ>}#G2dxv*42f z&J6B3Z>8!Ks3R6`_)okCBUZ96a~e4Y@-o556}aahXr9>7W7Pwz4_N0CMQGmd6>2k5>)%!cIon*I^yPdTnvX$EBRt%Mcli?MklQp-k+?+;a zTg@R4i)Wrr74IZ#+_?r;|ig;}yLHjEo&n+F0s!t4NS)Z!|lcAJ(><|GX{Pv*__bQ<|Vw%ReX2?X+(0+{b#em|ve^ zHkH6NXLxnV;GESQzTwryaxWCXCwrk}9 zq`Vw1*(1GfHI`#g%P!Dyh^Y@cb2kH=Ix4dITc=f8&f3@KE$qvHd#z}`2Mky#e7o)7 z3Q*SSZ~D?c|Cq2qe)5J@SH1vE8*Q$CgWanp?tR6&aN*NiajcdtjOut$V>JP*NL=?G zu+o2`;|;4bSgq!$O|u#3pM7z|O8G5P{q;2_6TSBG%Ki|;>$zlnW;KNU%!E6driYrA`$zDY_$q;;ia_1>00c=t~-d-bl^l7SNOo&`X&WS+Aqc*$=!zYsSx~H5{$SRW>VhTj9{1A^&WLmBlk#HDwoA#LA zT)$d+A8^DnWg03VR0NzhF>8=MO}Rx0Em=;4LLyc{U#N|k3W4IhDo{+WBRf}r?6#zH zH8F=A99a=+KK*lav{+2X zO!oX;0nRn*L(nZR5?BaXe|Jgn0s~+`UQCfW1x>F8|byO$VmV z<)1t83mB)kN=gy_xZi8zzih*3)7=e|YWuok!fJAyl$oLK@|IbZG|8Q!kt%8$u0O_r zAf$}|bkP{vy$|E8)DbDs;Hy%{ei3G5{0m?}b9q9Cu1%(STBA_m`Sk<(jP-v%LMG7OzPN3A7-46Cgo=9%96=Bx-PK z1_y@Z0VH3w{+?!qu73fFYG`-jLoVi;M~O zi_*=KP>eu-g;;M~Y`af|`hB3Rt1}QCqu`KrQJW$K$60~nGVLTlDh#kZuc={N6+#nUYah zF#*xbx7buCbYb+f(3aO@wC|iEe0$CFmttY)S}(-;;?~gM z_*nJVYnu`M0ZmRDwOsR9!j6i|XZ>9WUw8;f=09@?RjFXK*vNLq$#2p89+!+*n~!2t zKoROlB8;1ahXj`rl+;49J^TOl(9xJaF*}TnG?A#D8nLN1+9NMv!F<3?(Mu6_Kg7Z1 zewBV<`*NN|@aUFsIx(Ar+|>MYb_b5@Ogz}E2*%aa+}Y@Eycm8k2UbH$K>y@J6}gsR z`d3?6gKqt@NHg$_AGi7Vp%a9(<3-%1+wJ0}$k1TbBVL@J>!ybz%of0si%E3cA;Rej z0k&=;5v1ND#Ny`qCrZYm)RPb=Im$XfBID5-bRy4&pA0zC{>5&=`!u4_rNk~A%=fc^ z0Hp;EBVH?9NNR7*4qy>H2>Jb$CZ>Fh<1IF>|2!d;9uV?rc0HyzWHx$*nO3`P>6f9+ zUSTT;CTAbX(ikD{)3LM&!X$~b4&7t)93NIEjjoS2aJr!gOp~=p7sW2NusJVju1=~PMO2>$ThrU!6^$5fYh=0w6!UDWG#-_aIkHOaWX)7WKcz+HBkrpa= zDK&U_T82G3sdeXAY#Yw-5kU>Yl*if<`f5P8pe&TYc(q251|at~)kwV9SpL#U!NLH2 z9uAn*{zDQW5X0tcu!P0BW4W9SMav}TLWW(7vse$=P1Qpn-tKov9M zImx|2?Lb?M0_uDZSS!aOd`WauPo{HgJ{&ijiNgJz$mK|i<|F%^`%w?_5v3NC#e!wx z2#y_4(|m~y?WtK@uswB>?)3Q#g0veoTPI=Tw125c?k-|xVw7c_JrQwhADNyUU!`gI znnVxr;k?RDUNm(I1xMB0i5F^6ezbv~pQ)CGz#U3$Y%xgT1c39q`QVa<4BGyvt zAVC2mDgq}OUPS~6AbMJz3z4g#aJ{IUg5Ejd)YfWi@s5tRGdC2ky-xpxK7YY?=9y2@ z231UKHVtU-S^^{ziMO|RL_~y0BwD_Fd17MXx^?RSfXd3sG#X7>T3Q13rqk(ia&qKy`N+tK%jNng9F&)rx3skE+_`hB4D8*z*KW5@Oic9m_jh!31P2ET zg~Ek}g-uKGx)>131JCXp%wGm}hk$^9fTX0P(pBi`wV0=;XINO+%*@Q{54cfLQ7Hjn z+qP|!=hGAlMV3}=%8=(o2plN_i^a0q8^rm5*dV{+_}~WvdAoP-&d<+}j*bR^Ls3*g z2zvPN;TJDnG&MC@t=87oR;5yDGMVP*=fVH$B>zC!;UF1E7Ti)2Q-7AA)Fy_9DiCO~ zH{^Zu`}n`(|8tF5a)Za&d)^3>_ZGfmAcAD?YKciz(0-qG3BeWB-K z@1?%}%LCTIq2VjNC~L$7f55(O43oiP&s+82j-wL}41@{qPig_;LvT23Hoza_cq_Ix zFv3m7<<#P+=Mol%!6<|v9?37yvI3)nWxhe!J)z!^%rM*MG4XaU%WM$*W?!l^JM8Wt zLIw$92ZwA4DAIgUG zhS_r9f$Krp+uLwCdS_D( z2Jy^1ZBd&NA|b6j&U;o@*?_}>CV!i61tDrFHn?p1>|eN3C3KS7Zek7NkQU_l!H^|D z^Y{S(@MyTJwK8Z0=_)sH$|@vvzN+iD(|k&dosXQfy%sZ^OrgMTh+w5Fq~ zWr{E2UPhv$JE+)G_ZA9xp;8;_qj#p%KOCV!5mKw7%jP3d8lkR`j9Hc!n~|`q>vw8M zOgW!PK#Yn(M09ipAJ(6?f$yW7HkKSUWbt>bk<~!EZcqV|x}RPxZ{E)}2cul|BXEEl znafY#<9}lm@sA@(DbmLRtPalR%rhYc)-j-9@?S(&s1LR+HD$Q${XTx$1W%T64wAHw zfA=^J5t!{eDl&@8Bh2hDEJfAJ{#-VmcB2wVe5{y$6g^~w9T<9?kh#H zr_?NStIN2}Ok zKMk?vKyR;e<7cxg9G^DnZrZQzFRBi@7Pu?b>S!BFADzHIozFzZzuDkD)(R*)AxtY) z?|H+G-?W@Z8sb?RL~AIDJgy0sqb3UWlJ?A9p6X2bo*f=$GQXi@zxMc0TUmU{^k}H0 z%QSOA^LfOItS|bHem(Zj_P0+Cz5VOk<>dhUh&6-&LJ$Mw|0DAVRQ+CNZB6~6%w!xt z)zn;x`<-by-+;5uS-Prmua53ZRqdU9EnsNar`KvkS@k~>WGUjWRW3TM`!7Cf5ntn_ zAJk6Nw!7P=h8`kA5ENo={x{znRl`F#$-j$&DLIA$iG^`zdBKw{xwfPlUpIA(*09^o z0*PWVGpj5whhTR=S$|0zac-o50WLcV8aSt{dn(pre9V3PC1p9u5ceW=6s52Mm?Q;q znx^q|I4CO6+EG!DRf9QkAV@&nAua{1^(?3mC3IFGR89rGUJ&>;QIyi1=l0~uca#eN z?h=@^DP8!{1`e`bophBAUE3pEL{G~AzpONa(ChsNN>Hhz$TDXG-N}EH7&O=J<`Q>* zWuCOg|IKok!s*7pGfNoE0~9bVEdV<#XjiFJ*8$=dDbCk{VP_!(XEdCCKKmkyHIu~A zB{50}|NZlZ1mDXw=p;%iwPr2^R}q+uvCKYNbEgh+0cdf4{ydqAr1@2ZEU|tQ^88hUekG^lLi7Vr3QSh-WVeB&H;!Q zmA&adpbxpA1q?7|^*%^u5Ttu#3T(RMX`%v$z$n;Xru)L1i75^yM;kkvdokj!6@%ha5k9O(c^5^Sh(b>}FjSAE;d3Y8B!(xc|JH1TEPZ&TVA*ci>33JHFQEz#HQ$Xz|uqwQ*Y@}UWMPTx>(yT$Dx2Te2Fd$z)h zrF}2Wl|I(gr98EEl&w}tha}V7jcg!{6y4t{3pkmJ35)w2n`2+O7rL)__w=~)d}rRG i%;Ux@L5nEuY-x{m?*56%Z!3tE+gr!Up(Y*ye)2EeNaf4` literal 0 HcmV?d00001 diff --git a/images/monsters/rift worm.gif b/images/monsters/rift worm.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee82a76a3dfee25a69b5bc59c3f000c450d53ea4 GIT binary patch literal 6110 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

    m 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

    ^r?Y57#q6UF-B@RVy(oRwTli;b z?90}ik4`Dtas-WA4VQbY9TgczyIO{J6z{Dq$W{r;^qO1y!e6fw-RKZ|DuIsTr1tvF zGrd4SP|#`#j;yh4!>~{a_=)Ymu=p;ZDYI~K35&z zBL{7f(3l-~dAoVni)D!dbhoX-xh*qz8o0V&di#><%M%HSGHm)tVWwK#Qw~s92GSCg zn>Er`k9+**kh{b9+?nX$YvRY(sd-Tv5nuS&k16&`bSUD+m|%#)vQjJ;aKdSfr} z&Tee7mVafpsC%cru83PgsN_;-)-mJfS?x1CApa)HCTnOLt(jm6f^el3(C*4F&WiadiQUz@6d!Cy+t z2t&J;Q-10H@+JTl0zgb=p7a@9A^s}tvn==r@Yt9J_@?Rj;mc2n+VrGb#vw)Q>b@!B zW-py*nSGk}C-jOUI`59^v1Xj)(8Qz#S3+-(rRS~o86c1MlJSS1>nF)MRHkDhr?RiN zxZIjmUiQ4tFbES@O)ATcv6(bkpTBFFmy5NU98&P@h-kuV|K8}ki>2ofuS;l`Lxn2p5pxo%=QuRf3G6|>`wo90kfuIoP;m(h>K=q zerh}K+SlZLAQE^5f;c)02r-0-6gv7DHNc1)RL()PXC87tBg#O@^pxEr2uT(V$f2j2 zS&-&%0oza^LBN{{AfFpKf!DLbRUK46`m^A+zR58+6TZJxNy2CIU!fs%r_%!s@d$#( z%T@To25iWI*_go6Hv?oNwAG$M2Moo7q%i%__1kpgJg;t76;tsvmE zGAfL7Mb7J`H_v(VXxPfQL7L>eL7?l~?@<8Kvw?uLI`RuR$~NiOw>OADi|~Ol5BwL) z9#(vzRYUL@vp5Wg>nLjIaHZD-vomT*;KCuw#p4P|P@1cfiqV33pXp?iEUhq1LRd)V zdW}sDN6rSJfWWF!&Xw3cC2`iJTYg6l|Fv;wpSl{k##Q>BQ+z{dRyR;O8`s8Pp~(qSubZqe}){YX$L!Z$>J< zJHad05$HJW2F==roOO`W5GlYi|7~ zT3Nu(&WLnRFPP`;K z^Av=~VqOwt=tzS8ceBDpk2Kx1)CnE)WDk_)nAHy;@08-1GXFLR)=;jnGBb4sQmpg? z%-AmH3}0?mkY;G`A?N{w&cdwSZ~biz5^GZ-_uk4$1Hv=|CMK2(Efg1QO~parPlO3{*Z(%jb@@=lOxCtHFV=JeiFUV~Mz{1=Hc4NOi-Wekklq$qR1Xgqy&i~_ zd(VTtRO*Dm&;Q{n2_ex9nid1fuILjKe`x~Iy61~-`i{}x8_+8AUW${|lhr5L)(ZGh z7TeoqKFWq@(gMj}354NzVobPkeH=nQs9u~ATWY-kPfqwIq4xhY2Yv%Z7>Yj(DV%=+ z8SP#&GEL)j!EDQNAzG9%570KxS^OwHm-_v&b|E0JBUnoUn)m@lG_zarJ{Cu#0r^z^ zqU!*S?HuQyCfeuq4G$CqEuuZRCfj2FFS7Zj)?}--esMMhe>X0mJ9ag9cz*usNMfmL zHmoZ*p&Wft=Jf(tWN6aGX?Iu5jq~2^E#d8U1Yk~v#Ve|2l+6SGC1}M4c$uVOPH|o3 z9=5zBHRh$iIqvTVP@f;!ZkX0Q(r1*$49Fgo-k;TH*~i~A4elZ+8YAuh0BZ~9KVa&P z%uQjbAzbk&?B8}w_n~(p8c))Q(KW?b=Fk6FRh0186W^z2jn9Q|wYvQJIGJ|_d_P9h zVw6lisxr1zUR-FSX&+$n%3eY4chRcJnJusX$fdcV_;D{7R)>S9zx{JO?h5G7Q?Rlt zAVj^c8X0(!<0OQlVCmxm4Fnf_9qrWQZweAj_!$T)m*|Yn%_xLb*Cu$q*govGAURWo;y5;=7Dm)4R|g!Bv+mdhisHXFx?w1H-GX$#uudN WSzJ|%1&W#|A4BfBwJbgk=% z8wzklnJ6Y(XjTVWZtcsC(ovjK7$m{NQS52yq#)rWBe1k7Ion2aN^X#*07px#Q?{#N zwxec{ilU{6K$L;voZO(LwaHE@62-2DEul_c8j4;D5{f(=K^hWUCsnU)O4bzN$o90f zlmT*!ofHI?Rz^8V2vmn!PDu?)Hc^~X7*y%H_ey$}| zWSRA3Rw}Xb^J+BdunHNn@)|V@GbwU%s&F(har1FrX5nLEU}9T%hed(s)*a>rESiqD z_A>8fQI~I0mgbbXzphD`$685F(1}&8sX}9d0|R3R@9Zt1FD@QrXAp5g+on^X(#i}r_xe=KsU1}sB1W!0K2-^hD&8iw#ovhem*-X!Cea(+MO66ZnXvg D-6Mwd literal 0 HcmV?d00001 diff --git a/images/monsters/the handmaiden.gif b/images/monsters/the handmaiden.gif new file mode 100644 index 0000000000000000000000000000000000000000..722b24d9cfca902d8791f9859d36d5ca29a0d26d GIT binary patch literal 2465 zcma*mYd9N*9tQASB{Ybj1kpr=L{dv+NGc^4BJQ_Ll~l#8v{c+eThky}LbXEGw52Dm zy;1kB9c_aYQ;x8lY84t~`DW=>#_{wC$=w&__c@*%9*#@3 zqRhzJH`dpOPu`^L{*>oRT{!oZKc1^S-g@WeZ7>i#JvsTLykEo=i&Ii*WLjn9nZ~0R zaVWdCr0Th{K4-iQ&epE(h`dBvQgbY7G~@EQtmuSKqg`EGtqm|vO3Jy!UEA6#4?5>3s@)Y?d*9R-rE%|cW;2gBd;Vj zBFH|lAUen3po;h|C`C`uRYyfEiV1| za`~LR)b?uAU{U5@Ycs%eFT^xT&WY^w#ANNmhl|hW06RMyKfi&!ecRR9nJ39F$d!B* z$-Sm-e5$$g+vaA|mHHo4{Zr!3lgu;UD!P*y83hzceWEHaAm?;&L1+4<_0|5q_!|#0 zyWJ=b9hp}R;INYiLvAP4*GS^$SQoW(!r zu71<-Ioi;yFz{HfT4z{l@)a67w#eFPC)cBqew zGX)I%c*SjFIJv25IoQ0^oD{6D9}gRpAxTZb`X-68ury~10QVkZhy&~Z$RERiKO6zz z+khQ?8-AyHumqk>5RM@mxJ3p>RQVD_xHIwMWkNwpXaj(F$PP`R>tDe4cx(Lg$NVyLIaxyhq zthFfi{f94K@_J1jp4t0_C!8y_eImWb=t>|TIG85<>ryopug}Eb3dv8ggWn)?-7} zbJZ|!=Y1!VU%ay@Khz#QuDq97@*1S%c*$O1o-FyfV6uiRmo`Lwbr%z|w}mOKT!o># z1w^)6w^wnCU9$E{CuVbN-LcO*8=f^iy>27c;CKb(l}--1t8IP6;YzP=nB=jk9x*pt zD}of+OkOL}<1wj^v5Ymq6ta~rmLtr_MGaiWz)&cuy%{(Trq-f{Q5b?wQwC>LDPqG~h{1k-9+>-c4JC)8LFS1fge*HLA*sm*MKZKU@hm1ztjRJ(gs zUHlC?YC;5q@R5}~!e(=r^b)wQ3WWB-O3NH8;+EJ*Yk^u}+TK>hb1cy?GvK%su}JmeLhl;CE~^G6#lvr2HAF{7~WLNng}DJojV_h8R_C739t9-JkKrGS-8(NG1UF)>8KZcK71Ghc5R* zfWZIhrnc#$8?dR9aI0fs7i#J}dmP^qexVpabDO}i{A>7nhzX@&7;=Db>FO|nYn(aH zCzt8><9`N}iS%OsmD1v}cs-@$Stp?R_(6C~FC_O;WfN-ZD(JtsVVl?fUv6$|{?pCI zlQ(~IGcW$Ln|iPezSmtPC-xAHmBQ%x3AeRREPJB+s!g(A>diut@*jKj*nPo6SlAGK9I&praq2+gLfLz<<$$Si60)+&PTpGP_4D zp{m&kBa*gz$Xc}dY{)2577j2>MxsWM46|q7hFDp?)slk{pvQ2ob^!pjC9K13nh>C; z?Dk%e0oYiJ1Y5@Cs6)UKF-JjiVo>=&=vL7vDqk8lj)Im~@(>i&2Fo$EZn1(FjATR6 zt79y-2{SEW6nUz-QV(+~DvagSvDxF#3r48U?-z)5nms-?(}sUA8ZnZ6-1Q!lF%E>= z9!M#I36y?HlnY;Fh-ydp{-_V6Y&>e*HCPOAGsP~jVHFEaGDsMc2)QEVNMNxnT1fdq0IS93Z4fFbj!j`WC z$f4$O{__~4HJqONQ@&b3YN`bT?UbKpwed#o080qBIvWk~@k(47{){kU@c!0KP>Cf2 z*%f52-_~7*Uz?{vhPIZbOD#RYyUa{CdtDu83K?&Tm|nUl4_ z=|Id3*K}ASmG;3~Jz5WOqDnKVe?N$#GqAj2zW|>B`?(lTBCfICK2tQeaE4%x($Q@6fW$(Sc!W2E`=*X`jf HfXBZ9UsVGj literal 0 HcmV?d00001 diff --git a/images/monsters/the imperor.gif b/images/monsters/the imperor.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cd8b63ee0ceef68a661f34c8710b548c47941b9 GIT binary patch literal 3273 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 VIm^bz6Dj2%CcW1c8H7Vi{|~AgfOP-> literal 0 HcmV?d00001 diff --git a/images/monsters/the old widow.gif b/images/monsters/the old widow.gif new file mode 100644 index 0000000000000000000000000000000000000000..ddd32287ea997791ea9a716b5b29b38946dd289d GIT binary patch literal 4420 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 GSNso`5g~N| literal 0 HcmV?d00001 diff --git a/images/monsters/the plasmother.gif b/images/monsters/the plasmother.gif new file mode 100644 index 0000000000000000000000000000000000000000..61909f2871de591f66e16806d12ccfd94a2bdaa1 GIT binary patch literal 5018 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 literal 0 HcmV?d00001 diff --git a/images/monsters/thornback tortoise.gif b/images/monsters/thornback tortoise.gif new file mode 100644 index 0000000000000000000000000000000000000000..3850dd9d85dabae0ece82a605de7e72df8371cd1 GIT binary patch literal 4259 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 O&xi+~I}#uWi1{Zz2u>~l literal 0 HcmV?d00001 diff --git a/images/monsters/thornbacktortoise.gif b/images/monsters/thornbacktortoise.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcef3d54fb70915534c198e5b869fab41dd01e1f GIT binary patch literal 2507 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 literal 0 HcmV?d00001 diff --git a/images/monsters/tiger.gif b/images/monsters/tiger.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bcf42b9c09899d353633e03f073e24985862887 GIT binary patch literal 6012 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 RChjf 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 literal 0 HcmV?d00001 diff --git a/images/monsters/toad.gif b/images/monsters/toad.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b49ff7976d5c1e86880c32655b94747c0068226 GIT binary patch literal 3013 zcma*n`&Scp8V2z1Bs0lOG6|C#gd{)`k`OM!5W-CmCn4cx)PSf6v<4K5iWVqq5#8=2 zAcCSsMMbMMSiDqii!R;T*3%{t5UX}UYwKEVgLaix-6Fcywz{nD*|X>D* zP_dw`B*YNOT$;*mDwdRI@jhI|eR4yk31#aP@*Qj0u^LYL6m3dOc;hntv->e&QbDAc zE98rl)ZCAE@iJq>mK4k1SRykjOPjN;#o4}(*xv!JV{0}izQ^1rH6gI zNj~-_IrJW3P2?=f4tjh*Rh%8&y-ogXv*_A6Tcm*b_&e=1HGhATZQ~m3_Lu5qHo>tb z#VTtsO9ij0!Yq1x-|~>E;-r&ZStZt#qwA%rO35u>jyXek_Vt+MMeLC+3FXQ7Y-`w_ zHPN;>QMn$C49B&K$iiv*f(ZD*d%~_(DU!~#XK>@>T$3*7<$01XH)u!qCjInoP|tdP zb!qgB6ud2s|7iifAP>toDvB~hJ^853#CPRlopVG}B13|O1edM5bS$IQ64F*P1m`WvRr^bulS*CQ&in69Ad{iI))9Cy+^4XL7VxHVacD>4B^TcntM6qGW zHGkBd&#~W*B(5rtzd59tJrzH?N!eAYe`kxaYi;`=VxkR zshmGPlGZ+dT7PH6o(fCZRN>Pr{7(;}$4<@-R{*myqIrclGf8&0OS{_=(o~f)CqF1R zjWw||Ve+El-eshrm{*|Tud(ZoZRGd0MBl!sn>k(76a;N})zIC^eAqTs!)NZPOk9z# zuPe}hyO{5KiSzjG?18!;yKwS zyVVd+GNI>VQ2he)^v^Ty`GFTR0q7)vP(@y?g9eBwrhJH`b`~ILxMisKfIn`}QHNfs zG=Z=(zD&HdumT8e<_gkY;X4$|=P2x1>bNR1m~Al38!VZl>nQ*jC_-yi$*#6)OvkI4`fHJ!#3A>&?n}sy+6KlV(Pu zMcnpqY58v8x<0z#0}c{5<@TusyJa4WoaDfPFqGl%Y!U3QTzeY?Q7^Q5A$Iwb}=36WzK5TTbL;af4i!tHref>d;JyFA^tYV2Tv#O@s z6_-}i>(md#F>rG9`h(_$klX1uH4t{_Wd`1B74ymZ&!;jPRL~k29KqGo(+kyT<62%;l4tkhSm2Cg-=lz2u)o8e&5M*? zY7SjaCn8)zdean^ww9n$7;w{H1zFYZ&Fm!>!8(@rF?pO2b(q(2;vXs76+x)OzyH!d zO8k+c9{PUNSDrc_I_=4&L1I<|Jpf`Fl;_wyMPMUK(N{)5UpowF?6jV7mwI8j+oemP z0&4O zkA22PBxGuGoZ>N=~PIueuRNR z<0}tRNUs4Betp$2$R8wJ9777cBFzK%V~ib(4{{o;enjOJg`&<~ObcL$=oWl24Xer> zf5@f+h`3RSXjF2R)D7v9wzen&V4;WR=_yEUr&ys_iVWOhE(NU=cYyq5rBI7#r78ftdbgwjw2v=W6E9axIXy zpd>xuL*{`xhZi^@@s?8k((z(PTU?IzQC)Um3yfW)q?M9Ex&norA)r z-Rnk8&AiejH;z38-PmOHgmyg|CBr7j* zIQj3Ms<;wvw@jEI*f{J}tkc1V;c|EsirhX-ZRSNjnjH1NItU+fk8}Co%$)caGx+#YY;NNs%1kP6omJ{e z+qRo~g zxx`y~2hGs-1$g`^8rAOqwx%_F^^?RG)+Ev(0q$PkKI4=-d9FOJP6X{WPS$z(@!|j= zs5p;Tp3wl#aAF$^EiE~xl@!Vd1aiZDmrg36}Z_<4)l*Z{~b9&ytEWc(B7X!^YX literal 0 HcmV?d00001 diff --git a/images/monsters/tortoise.gif b/images/monsters/tortoise.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d70acfb6584aa2cea345428ec9cebe7e639e1b2 GIT binary patch literal 2173 zcmeIxZEO?w9S89Lo$s9ULy~js_|C>FmvEsbIH_$y;sis_Pl<6IdJchv>_Qzd$W*3s zQjexAs~lseDWs7pAq|kKCZUK{Z5Jjs(v~4VCAbW2c87RqJI(1L#3nJt9b1Ehl+o?Y zr0wP2OxpL|@8$QW&$nf3v!Stv0u=ZT00ai@Ax35E->z7FwD?QA!P{NMv3)!CTh3#)lL4)!|8#sjrND^-g<1Li`G^m zQJ-NVz-Z(^B?O*PyT+_)-(Sa7gYZiL{1z4X!MIxO6 zLvWP6G+@MqfTVF&4T6)MxDp|oWNss7=QMN^$sJ}q!;Ial?H^{r|MS29fr=H;He364 zi;1=AYqdP+Nu!EKh~O!}2b%BOeLoX`t$<=oWzRmjYiJdR#bT+~VJOhZ^jgPsJ+j(x z#$}!$o=Jwcert{o$^{L58g=3gRJ2JGZS-40$mxy5o?YwMkbIjuA0`@;*vA4y6f8mOAC})a_p6ZJ_Sr}-xL?erS}zajc)?>Q%c|Bs z=iXyZoSgP%xlY$_FNAB|zO}>I#c(;l>U@C2_TPv=-j|kVm*z4k6-q@VOH+2Kwx(?o zKvM{O>GE&XE3<5Kastxwxf%cTFf5VpHmp0kFTLxTAC?G_y{~>AA!=$BrSs99XjLQe#nK4?o%(#3FXY&uw409 z^&sw~bEvZ8fC=8-osYVK!MI?>Ms@MHhkq%XCcOa@|7EZDEF`V}96-s&)tzwQHWk9j%3@-*bCpjYF?V4kn1p$mZq;lMTVWaXK3UJCnEv+AXLx6USPMKcrv9$`iM-Cn6OBEfL zS6uNm+VL9`B3}04)qj9(IQp1cC8sB;ZTNQzl(=qRAvb{eph*5H%Th@=Q|s>X zG!}62y((h&C6YJ20xG-11>29Mi+~{SZVsH{uUGqTW4tBmEcUE+AuR1-8B>oVnoC<| zy9eiqt@-+I2+@c(gb#1b!2@pb!fgiF^GEovMCK92Cz5-qCro>-gq|`?GlJg1Rb05{ zZl^*xa5023GE=j#r5Tx!cFRm>;I1eGy<`xRpyc^X6qfH&X3f$qu^g%(yn{pUIPW}6 zmTX#P_;Q6mVZ(l)I}12Eb~XWvxZK<^*<@m$kjt_#Z&zQ%@#z*_*L*pBf9;p}$+iSk z+)`^Day=2r7dQjs#}O(0m?7T-7u-jR-v0G0Yv%4Ew~KqQ#5B^H!I+}@Kt4ij=)0&i z3)bmUV#nCuEYd&p66Vq!{S^_}Rb?Pr=BuR<$KIRvHAOgxC;aPA-7;a~-WD9Bp!l3a z0#SV4^2ayNTfqGw!0fnR8%L|I_<04hPX{!HJc`(jKHZzEsoc!9)kPz>u0ask^mpM? BNmKv; literal 0 HcmV?d00001 diff --git a/images/monsters/troll champion.gif b/images/monsters/troll champion.gif new file mode 100644 index 0000000000000000000000000000000000000000..56d84a0bb16f91ffecee85d54648de2ba5fe8aaf GIT binary patch literal 6700 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 literal 0 HcmV?d00001 diff --git a/images/monsters/trollchampion.gif b/images/monsters/trollchampion.gif new file mode 100644 index 0000000000000000000000000000000000000000..a66c62f066c3714cf2f2c96e31c1e860a1fb50aa GIT binary patch literal 1733 zcmV;$20HmiNk%w1VL$*t0Qdg@Tq7l$0|B=I0H^@~WGyi>93EULF5Qf-f;~l193XQ$ zBw{KuYco5^gL*R(8G;A_lTlA(FC40EMU6;JQzR={8!L4!Gb0NSTP!j-A}8(v0l0Td zLmMJ?BriS-8Y2`HlUq4rCNZL1Ux7$0jY~y26BZi<3poSM?sD-RMJ2@7=r022cN=>Y*0>i`Y|1`h@UKp+!_P%=aoA$>bV zOdTUH2^4lWJ@o(pEe#bM5fLsA5_&&HF%A|U3Jv-I02&GmP8}rx002xK9U%t}84V5z z1qK}r4lbUP#`9}b#-_{R_nho)BylwDJY^?P$mr#TqG-| zLrF6U6?8)?eKj+9GdhtyHyaNS?#yRcCKp#TA9gV=l}uHJNKBkX0gX^oRy;7TYJ+J$ zC(w=oVK6s886s#gHgGvQuxy3Hb&$h)m(72h-MCPAKT{?K5U*%IZbBzx9w?1GKz%+u zlu%Vv001Zp15X|)dv9p`>56DkML7o;P!1tE3K(TsRYoo?>)g^xD=GESP;^04t!HJf zXK1ZxW!{|uQ70*5CMP`^7hotZhCn%kPcfulTBu`N7zPL!2n&u=YF#fm?!HmLa%jeR zZE`X_Li!etSBe7gk zn_fDtZ$|#~igPV3zjcs&Pcrn+P@`T}Oe-3aQ&m|PC6-oEFT??QFEP!DfG`ddJ0vl! zY+!dwFaQ7lA^8LW00930EC2ui06+jh000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*rX@``b=U;D z+2vo+e`f-*spG~C&n{3;y2zvFMH@5#1a(2uWeC)B0MN8~;Y?4SBJju^9a*DKi4?PF z$&mx;h5%gyjF{+^22G4pbV>l|bH){hwIFN62?Djtw;VdOJUF3d(ik6u(!}WIPTsO0 zan7s=#|5#+8i3MtQA0$<4H-9vs9!e| z1PaWk(HACY5StDqtmB0SS$rWt8O`*d0v1%Dvz8Jlu%JK+OvHeLFf5pcQI#cV5CAv{ zyaNC;8q_dG866a&0u^G20isb1(7-|jBPgIi1WT;Jf=4D$BLx&~5F$wlwKGpg7! z$rfM~z=d^H_`pXppe(_{tCNQR5ynSK+%pde(-46V1OO1If)75>0LC}!uz&*yT~xq_ z2o=al>k&!(KtvMKtb&LVCb%#O4aI=LLIDyq(L$U?mZZc4NAyF27eaiKg&Eb<00$h# zw$sE0EPUXCN=o38j}p}|vkC#!2qA<6-`Xp|w^Hz6!b(a!fj|XHRIEe@`AX0N2uplG z05AvaKt@qf8C7yfiX6}i4A3a?YCJ7OvqS;^@KeemX#hdS7-m>QfeB_f!2uU$h!pVz zAvh352L4>~Y5^d2Q4I!nz~D_3!N@WW6$_NWfC@#2q{KENAhXFZN3gJo2f=({01u5V zuz&|-L=i{3q^aV~I&IAb`#N){xKaz_Y2Sdu{(Z#a-jBEk5b z5erHvW2s~3wOI`SZ%5n*HL5U6JBtH^Vm1v&*$u1=?zD(@5 b@BaJn$1nf<^w)3y{rKmv|Ni`=6c7MAGL&== literal 0 HcmV?d00001 diff --git a/images/monsters/undead dragon.gif b/images/monsters/undead dragon.gif new file mode 100644 index 0000000000000000000000000000000000000000..be2aabba7b52ca2230cd1df7f6e37a98863fae23 GIT binary patch literal 5316 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 UO(S0l@;BTpYiOOv;eeq30dH!PB>(^b literal 0 HcmV?d00001 diff --git a/images/monsters/undead minion.gif b/images/monsters/undead minion.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e4187e53cfc31acca2f1b9e27ef646e80016cde GIT binary patch literal 1480 zcmbu7eN0nV7{*U;TiV{Xa6zyiKs_yOX*YuvMICcVOYfyEL%>4SB@=DwEfm{c)?TUT zK02yWaGO=ZxW#PMxyfQ=7>Fi9mM+ui5Y2|!bS`Gfa2>{FPJ`2#ja_hV$+GMpPjZs? zob#OXKJWWG7F+qUXPgi~Fr^190Av8@04N2(3V;WIEdX@#cs*R+5f1-AX4X3r$vHN9 z74Romg5%QMi^8m4t@eyeG4RyW7c~0mocw7CJh^n~r^}arZn1n>U47Z%xV~=Pq{nkR z5V-ML=7DSapYP-vb&_m z3P+(xyLa#~7F(3re-w-fh_N>o%hrV}5vbO{#(Z^NyS_XOkc_N(DghtWy~*VQR(|1I z4umhx!7>hubUa+9(P%w!2M7I-FA=0?_sMadR3^;@@(ruw@}K@5<6H-;~u~EJM_<*8wH2P!yB{zO)QR%E!C%VkaglmT$Z} z%pb0Cn}*bF=~mVk%0%}fD5{vmB3F8-olB7Dnq$#Jq3q`qB6yJxL~F-#j_jOlj&(PS z^N*>Ek!azo!U|tJ%gbST6l3B%Y{AwDUpF^l{0KL8Zj0A<5vGVfmnB887QJ>P(p%YgJ1*QvLE&x4%pD^rG_&m~vfOI>!fKM9|_PnxThSfk1+|Hk~75A%id3)|O& zzbVxMDFcD%d<05>>h^HCnnx7U!W9gxxmd>FEUaAVBMkL13rEFIpG7t##CZr8=Wr05 zeJ1)C+E5SR5bZ!Bm!AQOTl+LuqhJmgYK58h_~_8y>tB_$3WpN|i^h!t{FZhTScoKJ zS&B8ReRzhdGioljyDY_K-VT7IqsJ1bwnrKaQWho<0}PhZ-TlR?WE?|Oi8Yb-*ttDs zt7`w?PiL0^9X~0`L{w?nO4Z=_?f84cedY?OfwfYF4AP`?zxBc-k~jGuDOJI|I3 zAJr@tbVh{ilR1+xVTK0QNkuMpLv2GGQ`)sq1X>+v$Nt4)m7cu6`)iBT)%C&lPLI#(Ms z`5Kx?e;Zuk4Y?WF>+mZV`#kn)hB5VLgp#Ap*ux0Ehe z5Dtfn{Eu%oQ7uIcl%Mf+(@|w7EVkM@!cO3@)@rg7tC=~I+7t?rewU9i7WUFj@V`=( z&g%Z{3)%t=MPjs!+5}4s1|}d$nhMN^)m37&(qMrLP0Xg*RAs_VjO>3M&K%b@c|(wK z>n8&=W5wr#0g8ssmKM?(gx&!3czq-z_^Y9_UY#&VHhM!e8D!kIlEIl?6oF^|1e!g~ A!2kdN literal 0 HcmV?d00001 diff --git a/images/monsters/undeaddragon.gif b/images/monsters/undeaddragon.gif new file mode 100644 index 0000000000000000000000000000000000000000..d50e344206d4c7c8efcdda9abb35bf50ffc399d0 GIT binary patch literal 3031 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 Z0HEM^iib$A(SCWBnEv#rXGlN*06V$E8bSa7 literal 0 HcmV?d00001 diff --git a/images/monsters/ushuriel.gif b/images/monsters/ushuriel.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f7e0cf9f3ce23e996fcdfdc2e5ab6e7a6d62e84 GIT binary patch literal 6260 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 literal 0 HcmV?d00001 diff --git a/images/monsters/valkyrie.gif b/images/monsters/valkyrie.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b23b325e94c1479112d7a89f01cd930bab576c3 GIT binary patch literal 2250 zcmb`GVNetK8OGmiHemxXE)aBqaJP$56AYLDLZaA97Ld47n?$%u25lhX$V6|#MJir& zE`*3m*G$CJvzTK53DxVtpuH&A!yy5Kjvm8Zd+3}FgTfT5*OTep6gzV>H1$lW#$%#&v?^ca1n>Z;lqyV!VE`0KSpggXfIl0XVw&HG-?eYAt(Ub5u23+xk4_N$;|*5hB;;6j|~G@>#RY5egL|ZwgH%{ z%nm6qvC!jk=I4w&mKC#A041eNMw9=dpOO$GMPLG8b}}?Tpfg~tu?9K<{R92Md@vC} z#Nz60jz&kYCupiP;V3wdI|Fsh%ngsn?ZHq8U391vatg<1Zu@B|W|M;ECNp`_VIzSM zVr(00mOykON{O*h5qK0Z{b)L%1d1T!B!ywPhJgO#jK7LreiV$IAlOLbIK~h#+2@?O z$!hXdp&Oye9*18EPAM!u2!>9Y7jCjRiiO&3D^Ef*Jx)e}_q)x(zMxG<$Z_zrdX~Rm z#!yTXI|7L<%q>_Ypb`SyS=LBm4grF|2_YWxT3MrfVIcOM2%a=k7&san(|t}_4E`f@ z&~5hY>+e?sj$tDJ{&qht!{r3N{OZ+6r-N2dukNsH0~2aBFDxv0jxZw~Ho1hDc`_3` z$#~pOm6Vw5v_{9G&N{}XAVO+jr1+RMF;Axz(t0 zHag@4;W27hC1KsEdKJ^lSI&B7 zQ1C0jQ%{>D;H;uCAz>22%aEHQPFnW zR+fJ7v@3nCh1L0 z09%3k0*M}Xgx$Kk;b}|x)%s3Wwdv z8xI^-E`{lA1&8G9h5SP;4JA9(Lx)`B$N-OA-}F*BdiIm-bev$$>wXcp+xFcVAHw)Z zZd(a_emxAx+@*HS*g?IXn_KZMajZF#fNhReg7$b#3%4cpo+TeOw5x=N_Aa4UBBzA7 zc8T;oqiv^F<=|b)_rkr}9e*KGkJXlD@UolOZKEGUB0iClxq=TgNBP^|n~}=Vg9#sD z9O+}bYV7XnbR@Da&iH(SRkr5mo{@Zre-(kk@n5>pwR+OEY0qLAj)(*XI)NGQMun$^ zhL+Vyb{8OthJQTVya%22Rn9e?;U=aDXDRgR&aP1oX36su?y=*pws!?e5FLDNpjYS5 zOtoaB+R1Y0DBr`J%3{<8o_yBTkx;15Esjt7w3$xKwzQwyGDlLGK3(Z-A7YOP%980W zr5E-eUH66hQPK6D%6W{`!mqlfcpo3_f|fc&MzgZM#ibJDLu9KrpFxmT)DEDkNiOGNINt*RX)t! zmn+Ocu4bP46PKN$krU&-;uQ1jrYZFX;?JkSxk!(4xaG43QN^Gyt88w3NgtP}uer-f zg^REz{g&99Y^*TqAf=bxoFu$#xSNu@NmwFGU0^rArC5C77@jLi8cS)CDgLhZV-chF z4cff_4eg4?cD6>#&1B=(=4v6_qHRsM znp!ZVbw!4F7m!q=^}y4!DUIUKW>w$08j%vMdj5>-7C$ZhhoP0@7kcqa+0~h-&oXvb zxb~gH81yM#NBAW3qYRH4uIS$XQKwJfJ{{aINUA2A;g2l+Mb1Cvo>1tD`(z-9?qKWyKK*=(D<)|2HNWF-r`-0 zpoZ{T*->g^hHO;n<-b!6)xhb!)|YvwsNla;yFn~{9{?ezWM%6u9uU)j4$NheAN|&Dehri)jb9>Xd!(V!yn(nKrYuszH fZuRogGLFLThmvy_iiHY{%`09r*n?;|9N6}60aEF| literal 0 HcmV?d00001 diff --git a/images/monsters/vampire bride.gif b/images/monsters/vampire bride.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f66c3f27d86d577aca97ca8095e0645dd7dafb4 GIT binary patch literal 2858 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 Z)|8(j3gc}roM8RyBD+aax6gpUKLD~?z?1+0 literal 0 HcmV?d00001 diff --git a/images/monsters/vampire.gif b/images/monsters/vampire.gif new file mode 100644 index 0000000000000000000000000000000000000000..8a1579fd8665eb0ff2e81bfc71028e1429d39680 GIT binary patch literal 13788 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 literal 0 HcmV?d00001 diff --git a/images/monsters/war golem.gif b/images/monsters/war golem.gif new file mode 100644 index 0000000000000000000000000000000000000000..ded325fe93267539dc9ec106d2242466b99ce4c4 GIT binary patch literal 6675 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 literal 0 HcmV?d00001 diff --git a/images/monsters/warwolf.gif b/images/monsters/warwolf.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf9bb5b62988724e7e47000e0285930a9e9fe1f1 GIT binary patch literal 864 zcmV-m1E2gyNk%w1VL$*t0K^sm0001MYina;W38>Nl$4Z=jEv6C&N(?brKP1>T3Wrm zy?c9mN=izcoSafpQt$8YF)=ZOgoJx*O8@@=DJdyyT1x)!*Z=?k000000000000000 z000000000000000A^8LW000&MEC2ui06+jh000I5pe2rEX`X1Ru59bRa4gSsZQn4U zFeI(HKOfF91a75LgKTff|q?c)>YHA`mD? ztcgNe0XTf&Eo=k?3=0Vk2m^Fz0bW3VfF^y73=9r>0R{v^SBVM)1q6PPC;$S4Wd?Lx ziU@NH4T%E^0|E!6l3EOT1B`SF0cckNp0omxq^4S32E73b!wsvQv&{s^fPD@N3IeK{ zbI-8|0kH}O4-dxJaHb7qdIE}94d)8?=Q`*LM7TZ&4jd$~@@v=tbm|O50kH3yKM~4? zv?=#2z&QgL|Cln+?;!vR5wsN0Lyk^^M8S_^Bp9dsr5hpH<+TX=lf{yVKHllOoC(X<>X|KtUSf zICLx^*C`J%I-wlIzz^uClAcEq2&7fr8st2&#{dKRu+M!SskR#(0FaXzCZO#U9~Q|3 zafK}mc!5Q8*MR7QJPY7ALm%WYa0MDmK(WgKv@oP1L>P4xNgqK4(?Akj`9&H40YsP* zPA<~Woj7UG6-)p)c9>F=HT1#U6+*<+z$REG^Hxt>02k(uQBBE~7H4LIR8qezwqs)u z$+(3u#HiBdj|qfh%O#ub>E><#Oi)3fbP_dz4gyFZfdV-tx|amZ!4;{bDFs8oIR|2z q5_8RT>ZuRq3_y;c{+L3H9;o8N#t?Ik3Xu+%%IZT=w&sdy2mm`jYERMt literal 0 HcmV?d00001 diff --git a/images/monsters/wasp.gif b/images/monsters/wasp.gif new file mode 100644 index 0000000000000000000000000000000000000000..b518975f897550c26233f547ecee450c4ab51764 GIT binary patch literal 3463 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 literal 0 HcmV?d00001 diff --git a/images/monsters/water elemental.gif b/images/monsters/water elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..afffcef437b547c609ed0ea1daac0b6d2c4c6c6a GIT binary patch literal 2755 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 Uk7-p%6OXkn+8!3FCBe#n13lvY6#xJL literal 0 HcmV?d00001 diff --git a/images/monsters/waterelemental.gif b/images/monsters/waterelemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd6d9c404785dfd76ced4a87acf65cd6165e7dc0 GIT binary patch literal 1614 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 POWWE8+V-}y4F~``ALZ|k literal 0 HcmV?d00001 diff --git a/images/monsters/webster.gif b/images/monsters/webster.gif new file mode 100644 index 0000000000000000000000000000000000000000..c57899d78e2ed81849e6c2b179bcbec041708d6a GIT binary patch literal 3745 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 Gi1;6$0oxt` literal 0 HcmV?d00001 diff --git a/images/monsters/werewolf.gif b/images/monsters/werewolf.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc8ef554af9b0403e8b14a0a20c6ef0dbdcf7695 GIT binary patch literal 3558 zcmbu>>048G76VQyr1(2d|#aBoX

    Hm_K*LZ6XQTwEL%5dr`d8W<1} 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 jwM`^maz}O_V>-CYDaBdAB3VC!>J}AO&wK3ea zDk>^0EG#oKGlPSJod^v~OiZVzr)g-`Sy@?@ zmX;$UBXe_ehlhtWG&F^Ug>i9lnwpwYQc{8SpR=>GgoK28dU~Rw zqF`WPU0q#PR#r+%N_~BOZEbBIA0H7B5qo=ko}Qj{b#>jikYQnAK_ddLuC7f@O|pz+ zRaI3M78V2m03aYBI5;@Rl5VoHvV44eNl8hPl9HL3nXIg=s;a7?p`oyqb}uh4kB^Ul zfPfwy9AsorKn&( zZE0nrcseO5DSt^0i;IgyL`3q)nx=I_6B847czBtam_|iIjc!j=R8%J?C%%wTEE51d zJv|s07@M1$*1epsn}61)bJ47MKRY`(H#XYZ+CCxzm6es1l#@|OIui{Axwy9-3#0u&^d2Bi7c|TU%SdnrE7tnE2MG>$QcrrHfZrSLNm9n3$Nv zo^~G@5|nL4@XDaAt*s~{A=t2lyq|oaprGNec@PHx#GYyw2L<1^iV6k>qhSY*j*eqv zV}XHzv9Yl_Iyy)CP*Y4M;7pRwNdpWsM+HbQ z!NeyLM7Y2LEkMCX9UC+-6Cku~GD|xku2V<_O<3Ur3rVb~MIt;9Q9(5pARwbCn8-7T z1ttxEN-%Rc(FBWa(2xZdDG-rD1t3Il0|YX9Q%^1eoMeDG#B6{?8B2t)f&@G?qQM1W zG5~}SN?K6GFdLk-0W?(vsumsb48aC2U`DV)8BRD*L!TBXfYJtm3WPueAXK2jrx8d( z#vNJAFu|lTc#wgmD`8+y1QDqJa1S=lJhFrfAxxmb1PD+;M+2*}gaI;Qq@xZe>~P`9 z8$}2)!3-VDq-3xvVPFgjb^M?K1&-ixOfQzWFb@YSWH15()K)tI4lB%Xfi9_#5(*)V z3=u{O9XJpJ0<5;0!2=xR5QGqMlwd*w4?F+{IS%ANlS>c4z>NpO{BnXFBtUV-4i7l+ z0Ur`P+|mOjM1u|<_>6D?9C2_U0uC}H;XxZBvvkb|BEWMCFARtgg$JN;k+26Q)Vz`b zQ`qqX4n@4io!x}{FozwvV1VHyd1VnChQkZA1 Y`R1H=?)m4Shc5c)q?c}b<^cf!JIpa~ZvX%Q literal 0 HcmV?d00001 diff --git a/images/monsters/winter wolf.gif b/images/monsters/winter wolf.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c066fa2355233019c6e413e90915e6b20ea0d3a GIT binary patch literal 6243 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 G4AuZr0F7Ay literal 0 HcmV?d00001 diff --git a/images/monsters/wisp.gif b/images/monsters/wisp.gif new file mode 100644 index 0000000000000000000000000000000000000000..e82f0d2c6471efa93ebe7c66df993ee621253d5e GIT binary patch literal 1335 zcmc)JdpDE`9Ki8s+}6Z~h8?+%u?`VUC}p;GS{ai|Y&%_-Tox&8Xl1+4BApaX)|Sd< zY@8-`9AsP95KRq3rrJ_l;)qIhhPglUJkRgh)2rC;EBO5Ljo8Fpvo@K7a1i|yWOSY+ z4N{aONpwni!c|}41-g5r?h(v)fwBXX?Ro*7RCS=D)p&OdE;|Ss8CDaDE3&aBH)3!D zF&H*o><_aw^96MDlr!EDuNQIg*Nyn>4f1Kud_MhkCPQDh85A4faSkeU2kCm4xeA&A zw3<$;`$6W1);JN}ept=wnWNs&@A`hf18I1UUUnkdec<^KV*`g6&Bi*{V^{nzaR}BB ziV9uOQV&f77qm~|-EFKpfshL@aU?N$9h5yVQHqv3zD;x1+~C4Y4XAs`kDZ{sM{0** zw%ORhgLjwEDkjW#=xRf-Ru<6~g2_@1l6X*cYdRB%emFS4JGba-PfuDy1p(}FN)9~v&ZT z!v?jSkZ!>{wt;excv-Pfq!x7p-Df`WSCQMv}ejn^!0N%V*C-f)e>4bC_j09rh z0PRUnLY{+Gy5K|6gghU{^Kn@?TI^($@;Ey@_({AL4 zHe(G9bPtSI*We>1SQ`gqJ7Lfdlz)Ca?2L89gER|!lmu`8P}g#ZSJz;sid1%^jU45% zKp0|^^WB6z18WW@o}D8`67ku3{ZSfxxCwHWv5SpK{9hG#lFD{syb7lB@pcc@*$_e_ zg=YeoIF9_Ud7x$#1bKoi|D^cz1Y$`d5~>TYS=3)-N%M`r-(1^=EcT47&iI^p_lzUe zV!WzlI{b`VSgFebADU3uBq-)5Oee@^9K_oG|xvN z1GK)$Ju#F7)qJA}u(y}y zmtrT6uO8NZ7FoT7x5zqpVIZhFP7q;Z*L>b$J7Wro^tZGuGB=H~wu`boozW6ywS6r2 zpV*u@)04E@UkU{#sqx=fTWyU_mRbDxHr$@~#g3JQftxfbcg(~2ebx^38!1*cHo1da zgM!CWc&vPJ4$n78lwwBR&p7bi&VbbO5y2~dUP+}Fh#02st(BC4-3_8-`EnYcS>osS q)0QHibQZVI#L1^{*e$fmzBO#0iGPw6rOcLtNV;`%nfoXdg#90|ES*;X literal 0 HcmV?d00001 diff --git a/images/monsters/witch.gif b/images/monsters/witch.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d2958cfaaa664e767c39efef953100e46de09c7 GIT binary patch literal 2218 zcmchX|8EoL9mk*hV&}1Qah}9SxP*h8$%Pznm>b-f0e5}uoWVsdIu{oV^EQVW3AU_t zSt?~yemExq0t9Mk*q{r-X&Lp}bTiDG*o3rm5@?`i3c^Ed;|G^T6_cVVv`9<$!?NSI z^&i;hk)G$#^LeDt=ktDE&u9Bf+kBh51h5MH3xLJNMF0Rz(-1<05XW(lrWuBz0T4w| zk|YK~zuzzL&rMMjQ4mkOn>j)e@gGSI@B&!_SXR8>WKo{h-T zv}&Coq{tFtQA`9Ji~QKnSS3Ih*8IqtBawJKE&{*{yojKcF3T{AYK7sG$)pwzTU(#1 zPLK4Omxrth6-k&r-#b@HJ}c)Hfs=SXr_qK=vk)#+#^YEOIrd4uN92&eapfLdOyR|u z{8Tp0v*_V)Vrrx(H zFo#fIB0QRmjO)M>rCX-`eqTBf;Te#Y5w_H3faX`zGTj%JM|`v%i;ehTJQ4R}%ra00 z0Bg7#E0(Mysc<5Z7*e^ck3Ns-NI0yAH7gY2SxMvsOC|w91Vx^UTY7V>DhjHi#CarJ za>_EtbAFyvXjV|2Eh?AHDHBu*t_iMYH_9+ize?$2nc|LLasCb-A!x(k4+vU>wN;e`fh-9LA@A%YV?y7lOC6<1nr56xPMLI~%~XW2x7F9fQn+ z=0WKyYm#dn=x7VCeDL>=-|F13dpEBOnG9)zvhw}R&ZX@y!5+o@bC*FoSHh1Df%}&t zJM4YgvpHF#$$vKuDSPlr@5yHh5zHOALe^~Rdk}nQk_#Phe%(16!jPnVePCyGj9Ip; zdcEPjTjgK8@Ol%-kKpF$PF=_%B;>=vUp zn=Wf8u-8fx)63F`QYw)v`q~Ez*QQ9jUH~MN^&n-F3z%t*?HWFEs+q+t6eEzpK9?=o zm_!cL{AYDxV$J&xXJ$LqC>x~e9?hR1AcxJGw%M6&YFoErbi0=9sgSv3=B8wy)jNsi z5LkW;|*&L|dIsYWC4SP9r|bRg(%1BWL7`_OR)IFm-E;niQEPRL-7gR-R!%FVA+YU`w=X;Mu5 zrr~sS&rq&k@6*Pe9S6}AWWd=$>Tvi6L+;7pqS?kBtPY9wGfB-=1SVDghevG2sm32e z=r(doqomCw*Ka%c1x>9CjEj!353-YQw=5H}-K`2IY@XK3lTCSFDR8IeX<_OUhmHO! zy3afOSJ7=@@pE)-HP6v~T%uflrZC-L5;mK?dk#iT3O3q%6+M#*65cTOp`dXWc-ODU z-=l&QLD95%!EMd}c88cVUoo;{Au5J+&`&v51osti<$#fO?@silOH}_y8)5YDYJtd* zA~wR&PxGf+Uv&M2-yhviQZ^^bZ>^9Qy=A9#5bYm2e&UDU?%{soCa%1A;d3ULAqRem zHVP|q@8s|?ilD{E*TVH~irNyv4W52@Z=av{DchnKf~UwpW1-7X_o98dk*D!4>3}DDrwsgO}F=c!#ylrG)!)qQPK+)BoT_VmU2DCl)zH)&z&teA~d((Q! z^TLOn%D54%>lijlv_s7X?ezs=fSFuFccSgx5~RGTu!z+_cx9T}t6Cw)c za`%V166F=EtD2i@i{N^PvLQp*i}>*E)aPSZuPYYla?M>G*RDH%>^FfePfVxPQ^3~$ E0!!>_YXATM literal 0 HcmV?d00001 diff --git a/images/monsters/wolf.gif b/images/monsters/wolf.gif new file mode 100644 index 0000000000000000000000000000000000000000..60c2c3135380a176167c3c8eb62af2efb1c11a97 GIT binary patch literal 4978 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 literal 0 HcmV?d00001 diff --git a/images/monsters/wyvern.gif b/images/monsters/wyvern.gif new file mode 100644 index 0000000000000000000000000000000000000000..9869fddf90625c807cfa2512783cdbd8e7cd3119 GIT binary patch literal 2501 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 literal 0 HcmV?d00001 diff --git a/images/monsters/young sea serpent.gif b/images/monsters/young sea serpent.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea179b9a69dba3dc52a95c0805e9be229ac874de GIT binary patch literal 3501 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 RYw2ppxnjq=5H~m=`Cm-O3g`d; literal 0 HcmV?d00001 diff --git a/images/monsters/zugurosh.gif b/images/monsters/zugurosh.gif new file mode 100644 index 0000000000000000000000000000000000000000..08874c9758b39e44ca0a79df7bd8fa8a83c42053 GIT binary patch literal 5619 zcma*qSyWSpw+8StW)2xhNSMQ<5y1ouY8CXH5C#P`jHV(qhyw!EsDNN;JQ*N>s1Z;Q zZJQugpx9!ob*SPAAZlxEtk%+2ZLrv4Yi(3i9RB6%y?5Q``?lA9{noekZznBGoby&b z24KMN+kjOmDeF??s`yzy{nXyJdGobvA4UcTCnTs!OP5vU=0=5u&6+jqx8J(onmxUy zrlwe}{t*~Xo%@z@)>Jlw!DF+9TyA6Kk~??q3=TGK+O)}-pO4Aq4eQoz%*yI`?>&iF zoE8_is$k`*`ub_XKAD-Bd5MXS9vxq^I(7bx8OxWeHoTjD>Qwy)yUP8&yke&KATS&f z5~2VUZEc$)BO|By`Nhlpvy~l} z1225_sjZ2aJ#AXk`t^x1G1(X<=JPKMp7-Xl7S5g(B4TNj%J+*hLVfu@0>O(HUp1TF z&72ofoHd_@qA?L6fB${-h|$=rnNp?G`gjY(;XP$hRUT3>wuJ@C^$Thxqu6jUAc6=S2q#y6x7AEoF!I+oJqE0!6%?)mxS> zotK)L5)k0~2bz!&1NmmgmFL0!$V*W|e}@jub~YFWd#3XI(`EakVPx)sR6DMrC^9^C=L>rA#`X znvLanZA@ORU!|1*KsGNp*45~u?H18%kBz<9)K3WsQ&fxv0ZUM$D4{+`^0BJr1EI}1 z%pEjs8@`1t5QJ8pZVVIYA)Kv?Ipi}Hh~4D@oPS>p!LdWm{Da_{>Ni;3f3f(`f- zAHxR3D{DzyL~%-*h!O8c{jvn@Ly{L)MIM0juqek|-$8SK)k5C59}Oq-G3rVkX{ZE3 z$posO&Q2sy6g)(^J@uqxJE!7HkT=unyhdd-q(PHFp4cc`L*Q zh^H!jNWyuUT5|32Cp0CJ)bNnpjsRL8rI2s~fWK~|DlIMobM8=~IK&DZcVF2N*t5HE zMciAcJjMCu%*1ihTouKKXEvG`+!HV{RxW%lkpdQ-3d+h0A0DnFN1ikl#S%Y)FH z-ns`8Pj1+aNq!`a`xy^URfCN3RW_4H`DKCv%+JCdY1i`BM4a?BBE%e57~;(kQ?=LN`KUH`AKRtPSN1Ie5ov>nTx%gz;V$cX!Ql3l!>APL7o!O z^cvP;ZtWVtQM_6z#0#=vR=j6csJ$gGSATuPfw+= z{{^XWT9TkoSz$;LOp!>)F_rYse8qzICqOJP0_$hJPc=a6B%^;l4t#q&EC|5m=f$I7vm_I3rI^5mYz|Myv;v-54zEu~YXuJQyo) zR429(?6*2$!2`E3r7S{%OK~Xl^W-i9_FtN62pl49S=nIWv>X~w+uOA)+y(M<&REt6 zl`@8-*|sDhMxw!jFz7ipz?Rquk2!2VPd7+e;-Vfy12WmBS=`%@yZ84 z7ld}?EbfIx3M(vllDwByKfr-|QSH&TaN!ct$D?y?I(#>v6C z1!`1a`z*4460|4}m};Q0@u~Q{AHMk#Fd}D$L=^GB1}WE!+VZ<@MgSDrTo_>OITU3h zsclvuf2RRjSPS!tOiLB7w9QEi7yUXzWt>@d2lSVdy!D+&BG1Gq^==18wFO`|e-YRs zUQD0MHJ>|+B~8DH3FWrSUag(byot+Hjd1srQeZzIHnnFyg~FQCxOyouwsPp0-h8lH zPooNMK5r6@hp@hmrLl{Sn@;q_$Z~5j&R{cf@Jqn&=NJ7OOkbU0)c>|_Zw2n1?CcMh zev(7ctrs$|rNP(hp_|6+u(@gky=j)w?i--&lPH{Q>!@}Q0DG5J!?gwJdubOYeKgHL z?%5-dOAN%#*0O4Q?EIPT>*8pEdG?Wo;mH-C_<;nZ-w$yxpThjYnSSfDNWNYJCy>16 zVZjl`R@)yl{~EE(IObX~WHj>?<6SaKJf2((wQk&Xa>uBnd=(LW z*dYuq(eANFK_blM7aRdHWG4q$?Nv3hR5Dq~=ab9$47{Yvw3tCj|K zIzBwr4{V)p6wG68Hw?E2U3?BQq*%OfIBxi1ER42AB4I`AEW$nmXHBb;{X14@iob*I z30A%xZ3X>EE!28L#8|(g&i}q-jbh9_IeraNAQ&SZFffa36lLIhJWU?qVFjiudJHXG z9Og{{V8$zu{@6<;R9rU+9~c-@dkw-wx$)qd@$ty;YMmE)(LkTKo)Y>1+~v_M37=W;!mm$4{Wd4}33VGNXp`5lM~e_P@YHkE zN&WV>e_hxIwf;U5Abc2O&YDmL_UT^!HuDZDv_TwaFFN-Oh|Zz`LS?TdZrgV+j!ZyI z1mMmY4Fa-Tjou}_;Ox#I<=9d=XUv9%>3*eqNx;fKpi)m{qGg-e4b3E}YXNqMM8DPr z@of~Z{BoMcgN>n^0d}e!-MSXd?iGt_*MHDb*2bm1kstd1kl)TX^3yl9?cSq*Z9nP0 z{TsSY0Mt$xG5gxCI)9j(jClJ%Wy`ONaa3`}W1Q=KJ9#)a~kp8sRKR?E4= zZ%{aRMwVQR2g>JqDx^FhB`z;6m$#?pzkS&H_tvL>Bvdns1wEIXD~%$~@y4=ycCCpg zdr5g-XSH2G7O1+dkIL$dhZvqVF)bRV@MWr=zheQ?udE?iVA3g_>x@?7bh?-B^@sw7spcCs_j$E69o7lhx}4 z3AEa2yMH22&se;C4)%RMyd$Q#dnYf%7{BH#fsxP*9K41kc&f)Ge7o7mjbx4IKE^@z z2aooOv2-Cy3)O|IxdR5+fB<~mJ<{;a+l(!BPD#FP<(`wqDXG00rOATGU1Tm(P-Vqw zK~~Ix;A&VnUvOEQB;@>$(RO?Ca%0_u$bI%Y>`^S1*N75b7Berb)MlUshxQ^KYQ%tu zW7W&fQ>mAM^VG;pES~$ik{~@NGas9r#dsgft^3{qht?JLq(Su?(+CLo1621@C{Av_ zzd9Ae>0yBDd}ic?IFx_lxco;bHkCWocG@ z|JG3w5ysjaFra%#icdUoUo)yPL$_Yw?j@o5>GGD`b4b^(J}EYl!5+tctxKL?)DZkT z&rNu!GM(|zCEMFdq-qoVkwPdj6m>EGJlwr+%?o3V^~Xb7kW&gmJDv9U%7B6D=LQm) zS8pErXOfy_vp-yQ4wxQ5I{UX+hgy($6_-+iUE^K(;k2CQWzeZSr4d^5KIST|#Xt1s zLkM_rO86~OSaDNUrTS#+rSJQ$Yh0Qgc2W{GEavUy#f|rp+DO6<@Rxk=N)Ym_*Xx>Y zEHWMIcCa!Q3cu~gAbQ}~GYpAO&kfyNG@_#m{OrjH7TFnP9Led#6T`0G-H!C$`20W2 z)g?*ON2znixW+zVX$CD8kC4p%DXZedivQE#>A&7+kRRtNe?%?IKod||>-D-~`_i%sdG-K73&LD3bKXnQ_hX z#H&@GPVz?$|4I{^?QNlrFa6UZXK1!}|n<+|Q5>t|JG z3k0`xXuXHnMFS>?+{R2+v}=SRu5eVBG)Ma!b9o8o;EW}%xsr=o6s5t>q}=)35(_1; zlk|vw3ariMj-+CPgKilv#VuZ01c|Z zOWS~UMK_PFCqq*o8FuY!7@3S9ZNP#}T8PynLAP`oDQ6@f&Q5pHR!A>Q24jYBr;RaR zN^sJx9>J9$JDD)zsTp-10vx=$Zz1*1{7|iX04ceM``cV!WFn5#NScz)*L}mt>|ok^ zAaRELD~V=fd5b1K?DfH!(U334G0~}hBNF@jZg8vGAe@_qa&`Gt6jw6Gse@@!8@w7G zLaGRZ=Yb7TDW+Y4g?EX}TjyyT5#on4y1JEuUQpesvO1lJn80BA7=#CLO&kIPQ{M9v zPZrjtj7_Kct}}w+tw$vtLrmT88FLUG)@=W+hVk!60^9#HNu6KzpqQ>f^)j3tk!Fpy+6uFOeNgup!S zz#ZGf!vWxCcMd!ZvI2Q#*$pQc6-pFpM{LAVhgZL{zbga`uRM{o;5yB=#9MWx6+f zv9j;78l%5s9oQq(nfE0~!qbEJ47Ce|ZKM0<>xwypP0fto4ohxpVea19AR6If@hgme zFXZpMOOSGb&5@gY@Bl~fty8Zxi4BvM(}%v?O8xBLf%I|LcE+$BTw^n`OSLB1_z1Ib z%+b>(G_qC!)N<)He(LAQs{O>r>8HN+`qWWyaKcC}9ESXFI{{yWU<3`Dd=up@i4QSq zta|01HS*@n>J1n5S|WaAQy)4!vT?>s|BiDc1YQnDCvs8>pTdq#1Z2br1EOYzvIFnY=zdgHF|8(8+Sch*56k+9kdxapg1T#ly=N z?iYVC@NDhlA~T{RIjbw4FxQZlnXB$IC+C}(p|+Z`24ln3im!_n96anuZVuGzE?EPF zhLqI^FQlX2FM7y4Ic@Z3Ms^{1V_LF9^|`=Lb^8SFWo-5wRR8JeA*ogB;*|7|E`A99u<_t zU&7wkS+4yOAKa91ONC4^=@RToLZ7yIhw?M#f6k^RAxh#yD45= z03L&u_M-IR+~-LQJwU0HqkS$)IG4!a0uP>5vO4KmTG&gMw6qtQ>O%M~N`@NV?2I=| zmnxTVfh8jl1w%8n=z29=WHZfcP1>RZmb#%LHB4~=iCQ#74kfpmeMYFPKd5VMz-DsE PHcNFQv2B}(2F&{}wd-Ns literal 0 HcmV?d00001 diff --git a/images/news/blank.gif b/images/news/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..06926d0a073ea380e11815b92823874dac9f44aa GIT binary patch literal 807 zcmc(eF^*MH3`6~;U$6~&IyZypK`evDd&-`&A4FwN9*f`>Bi*0GIre??9_tJOOZxesaz~uvBp}f)FMZTCfca9jy%d}Mms8#E3dMe)vj8!pJUM@47&vRi~bMduxG43u-XoqR3{X(MF8v zUhy_@CfTIeV=I@*Om@Y~`}EJ0)oRgGF~|dqEO3{=uS~q_Inu!~rG4^`cIx-B{Gapr&--kG)zoPf=VW*Y%^jp6V$$>E;B`%bHdt+ zRtp@2I4*crQJiULX8-^IA^8LW000jFEC2ui03ZM$000F4@X1N5y*TSFga2F@7(_`J zL8y&NLAVCmf$9?wZ2=pC=L`cxN_A_!U;@G7kT^Jm#G~sJTP&MDC?_x|8BGg@!=V^F zhnoPSK-NvIK*STlK(8E!{Gr9LBK`;h3=IQz7;0n+3Iu%%0)USV000h#7HSO)3@qgpw4x3fo3hnlOf;cydC)f-Pgp JoLMmf06PvJf>Hng literal 0 HcmV?d00001 diff --git a/images/news/icon_0_small.gif b/images/news/icon_0_small.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ffc2b4277fb8f21e7ab4df555d2275059973ab4 GIT binary patch literal 200 zcmZ?wbhEHb6krfw*v!D-=jXS$z@@@d^U$u-b`}-qdXr~Qn`UP2+8=Ak$150bBrUF) z(bshR|Mhi$cJ>t}Em8c*!TM)Rsb+k zrI{8@Is$C#I86}Lg&6{hE!e=oBH&o;fP$ax&{!-KEfC<>nhKbyY4qcI5C|od?nGcP z#-~d8oW2kS19aOvNEq02$=iUy=l6YbX@GunZwP^TdIN}sZHI}90F04&lZ}EW01TLl SdS;nzVVVF7=O-zlq#&;mYrwiOMx?Q^k(Wns(xgeNSFcuA)7O*c z&B-e$HRBTzlDX7tsrZwH0R(hF1jq~qma+-0p4qaAJBqgnHyQJEF{SVsDS8|-IG(|F z=z&q^!p9$FUbQnYFSO9$**Ll3GNTSd-;0IIdfXU!S4{QVY{kHuJ4JezncU5{3$pYC ztR9=L?I}H+y_xaF?G5!G)Rh%V^A%Joo7h>(DpVVlm3@p<)v_6;&zLz=kii-N_N+lL literal 0 HcmV?d00001 diff --git a/images/news/icon_2.gif b/images/news/icon_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5347643b1365b268cdcfdd1d0796983b5333b4e3 GIT binary patch literal 283 zcmV+$0p$KiNk%w1VITk?0J9GO$0r~Er;uq34F7amObQBn8ynLuB3KFvM)ju>H@ zhfu7ApgOSQ350U2ZY~^r?wP7xjlr-T2t1@GMXMDS0KlT4Kq)&y0t0~PA`FHF1Ib$= z6^3rYYmipU9p1r#NDKmlE*Lgym806V&SUnT$m literal 0 HcmV?d00001 diff --git a/images/news/icon_2_small.gif b/images/news/icon_2_small.gif new file mode 100644 index 0000000000000000000000000000000000000000..62deeb8ceb249a6b36774084162e44c8076f51f9 GIT binary patch literal 199 zcmZ?wbhEHb6krfw*v!Dd#>VF7=Xcdo=b)b2muS~F9_G^G%1VklMiNTlvdZ_Z_10*s z{@=D}ik9jQO_h_znuZEJq&%Br|R)FPb?gy)rVq8qkfdYJD9Let|#+b1(yF1NVAhz$2ds(*=4@*}`g^sC- w+_psRQ_eaCJKiK^pOFyYWsc;lmaDC^z7w&m^y9xbU_Ad0PtBo_y7O^ literal 0 HcmV?d00001 diff --git a/images/news/icon_3.gif b/images/news/icon_3.gif new file mode 100644 index 0000000000000000000000000000000000000000..47512fac860ec1323fd87b317409f176426ef6eb GIT binary patch literal 321 zcmV-H0lxl6Nk%w1VITk?0J9GO8wUqCFE(op4NwXSl9tiS(EtDdA^8LW000jFEC2ui03ZM$000E;@X1N5y*TU5yZ>Ow4PJy~sR!FE(x42N*L>nRKgIXKaf-y8}~89fMLc?3&01_}!d3;}`|JO_*hazcQQj*pQS zC}RtiLJ5rlrU9HrGb9V4OA7#|kEQ^f7HB1Eq_L-vwYC*qB@B$SrUSpVTxbUk4YJ3` z$wn=32@0qSzRAiOltGt^45i$^80n5OI!ob?xat8zg#qjxF1%;wuAR3Q31a5&yGzwp^u&TgR z7Flg_=@2#;Q$~Wk7z6^P8=~=6;06~9FJU244g&%Mhyx!x3VjM(Ne)v%A$W&~0s=)B zkqmDOQwcnj2`~wFn2MWaEs-iyF+x)crvRx6n3)3%oe2y|woW4p0a6Mt0+CxZEx>^? zxFV#Ab+~?T0+=TYzNRvK2@V0bwm7;31e`@5JhlsbZww2!xB~~e0qX03Cv5;y@KHeT ziIYf)_^oSaL58GW}UStKPl^&v-ScP2R|223|CcFj$=pyw_Ky4tOQFaJAZE`PYN%mIy;*phn(Sz V6ebR421Nq~r3&wL>$wCOtO1+(NVWg~ literal 0 HcmV?d00001 diff --git a/images/notify.png b/images/notify.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0015df4f737ded7e7e14b546616e704f023226 GIT binary patch literal 789 zcmV+w1M2*VP)w3Y+732PG_{dW-vWnGW?ek+eegcN?|t9z2?7xGKN@MGRD*J^ z&rlky@ZUE!D5>oxB^64H+e}Jso>dhAcXJ|I^4Pu&0hSi(IWgLX71SJg^}9{IANt4a z6@3vO@*Gyvx&UJ2j;g6eXHOcITv{wUTQS>}4p&n=2Fk;r%w^@S*8a(S*4l9Z?xB2q zbEz@ceIA}S32-WSa5Toip*ae*h-LZ>K#V(y+NX@kSg_V%$^H^^#w5(VjmNa^Al#Zr zxKskTv?tM3%<%;PqbiC^j8kOR6?gv~_-2jxYPk=$UI?e|FeaO0Fjl)4b{QYeM$$#= z33NONUJd|;c@3 zEdc1N;!Mt4u3_FH!uuLNdh0_mSQm{kBBv%A#u5&?pX`FYmIHU&F-*wfPx9%`;Lgug8DbunAt zBaI+kWJ7UF0I#(WUwSj4$>*c9h=G}AiU3$-A0$Ax*`Bq(7C5v$WSb3D;V`_ofN@<0 zyyGH_s4k);Wh-=dcVI!ug{|Qbq&Jv@e+2kN0@9!>-iNlrSST`i(3d5k^wJhQO4^KW zF%1@J6soS$C)Ne{CC_FFV2Y&a z4Co4YFjq&xTp5X`tPqr@&_w?P@T)qFu}N};o>QJmcZySJ(R-Md ToJi+(00000NkvXXu0mjf*@atu literal 0 HcmV?d00001 diff --git a/images/palladin.png b/images/palladin.png new file mode 100644 index 0000000000000000000000000000000000000000..698b4e7d1d46ce9e30274d0d583064e2acfc3ff4 GIT binary patch literal 34172 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 literal 0 HcmV?d00001 diff --git a/images/payments/daopay.gif b/images/payments/daopay.gif new file mode 100644 index 0000000000000000000000000000000000000000..c986cc2392978e337d8755113d17879a9851570d GIT binary patch literal 4036 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 F_8%AS1ta2{n*LdNQe#>3429 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 literal 0 HcmV?d00001 diff --git a/images/payments/sms.gif b/images/payments/sms.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1f5977453d41988c6b4283c8651d4516ac8e2fe GIT binary patch literal 3278 zcmeH``9IT-1IOQcZ)1!aS`!T+R1=}O%4g1)YtG1IlKZUONpH3!ROr*UeWa4Y=1PuY zN^@VyHCKp=PjW@gm9+2o^GAGt`@DXCK7V*V9?qW|S)_i~VbN*e}1cQ}+=EUvM*q&Y6{f!TEm_@xS+bt0Z zHM88Ndj6fP?`PcCUyJ^pDBIZDDA-XL>8uKoJ+Qqzs;a8GzP{es*-0c40RZUj?OjVw znqAo(<_)&5HT@cY_p9&LMrp~wz`*##=ti6RFxB&M*sV;&JnJj1oDwgOX>SCaoPb(eYfVHC@g$ZNF8e zvN%S?shHYXS?HGYE^~u0dL`YZq zBWFM~CZMHOfkYb4lEb9ptzVS7SEBudP%Fuw262d|b~j~TmbFWJA_-9D2H04P*Y02* ztJVD2oFb)UwBp$0C<@yja96LU(zljr_Q?+HJqF{k?LAj?)eS|lzM5ZR^Z z6dRzQveZrSY3T`QY)VGP8D4skxv|jJ&%SfSYf19(dGHqgt=}f`y|S zmDY_v>GqxGUYB==7RsMa^tNn{eT*dLLC9h=>h-Hz7M{LWjaftJ3I_!k9icW#iFqu6 zdw4oF4mS`duYx;A-YPI}266nC(;ngYJ@Am{4$veOVL2l&e&3jjMNEo(^}gM$j=Bp{ zu#EF&_p$7$8&3Ts0EyJYz#^aPPeTZu0O5lVBt!igW8>D=aEMul7NvVdI{_HDkaDpa zoN};>^ziaoOn^zW>zXqnxbx7L5PJ(G{@U)Ye0&7Yal7u*D}&yMnh{~xB%%L>grNF42-nstk7QJ} zDwl^F@4sMn0e8w2DY1w2a!Bk($oEn+ZIW^RPU0e~AMLsB+_d0$O*8Uh|1|?MtTVtOU6Y`7k_AnLPOIXr2aztDet)(#oiT#y7Q1J zN&*&^zFp1^_69{sT(CAG<%Lt8*si_?p|tR1soX|{V0T3`oG_gvYa;@ys4=@o#O@R z(F`h1+zlp^>5w!NEdLWjY2b@UB!5*pFF9*jf_PPi26CPUc|tbhWbTp+R%WEycBvQNgKXx9eG&R_@FcRqP~>9a~o2lm4O#|J=AG zyR3w?3XuEL&hYc4dsr5_UH!M>`A-z0Qb7yyKz0uQsVK=9d)oQkg%qBWW-8mppFEh; zM1#w^145cW8*GzbL=q1Iy*P?q>>lchO{#6+PpII7PLbhKAf@Q1Q+N=McB|1PgxWl0 zbF76e*5L^k?c?Qqa#k{!J>)WC07W?Zrv_z|P`{8zI9*X-k)x$p;vh*lWgx~=yp;AP zXfSpD7|i#)WwcWZGG_;9?4dIN z7|H~yOkB!D0w83YjPrtEjh7|vPV$TC_UJjx$b2jw7GP!leilp2&#DSN=fiQ!&>@1D z>BpO;y2GH(bPOhd1gd0?e~2Hczi-=tU|64BeV$SMWwzK<{M_L0lL{A0Z6R2|durNT zHB7>dBtRXa@31An?fSe#sk{Ql+qqYii%`7?`V=kJwM#=f+%LLc{i=zih&PkQm5A5>;Rl zNjJr zTy?6=$Nj?-{t51F?2us9N10@@uhSH zF3CD)Kp4YUyAYCzs?-?2@b~&}N6(=0fw(5Bx~|E)o>f)tXrUMBNAX`gKOND?11tp9 zM};y@s)rr(7=X#wKJ_$O$>QYRL5~~>s8U}I-A=gDf>+n*EerdLcz05=|4T5{~(n$`=Qc`oy*iDRF9(Z&bCYK3Q z<-#;NU|M?g{e7U88+fn+G;5WR>7yHM(n-<`Lp_F>8^a=&Vaa5WYZ*493_G<`YO4%c Uq@-i4!`@>U7dMB!5*Wbnzo2&6zyJUM literal 0 HcmV?d00001 diff --git a/images/plus.gif b/images/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..9306686d8f681714ea4e4b43966150241335122b GIT binary patch literal 860 zcmZ?wbhEHbkH%%MMM1ZzC)vLc*BGDcszLSmE}1{NQ8)Qs8|Emfh`~c>;QYJ zMkyc-WPlUk6gUIUflJ^DxCRv99%urOKnr*UI>0;d34Ha zOit%hG)f*1`F!N}Qy@UW;72S*kqGrU9;Za&HkYG(o(csj7O7PFEtjcMp=yI7Wj_^q#srTaF|iU)K7rlhH(t88!HZ&-L5jrJn$^1dA@j?U(%bcQ;Sxm zk%BlmF&ggeZwfrK(e)nTZYXIBcMd}?MliAC8Koz=vcqPBp7n;@;)o$_FdZ-GINfSC O*|bU1jU;bmS;&9BVQv@z literal 0 HcmV?d00001 diff --git a/images/refresh.gif b/images/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..d04bd3949828b14e29a8b773f5c85da68d92a97c GIT binary patch literal 875 zcmZ?wbhEHb6krfw_`<;O|Nnmm28JI$eppyow6wIav9YPCsa?BvZN-WeVq#)tWo2n; zX-}R!nK5I=v17+PJUqg}!hq_D2a5l>{aizWogD*Qjr0td8G$+#|H(R)X6BSAlxLP? zD7bsNDfs4>Wu_{)rzRFDnCKY*6^QyKrlcw)RVp}UC06+4C#L9S=B4E`DE?&ORogs2;qLgXF2ez9X4bi*a(Y!s+2wYzTXL(B^e3|UGA59GPItmp1`dIJ7tgTX$l}&( z40mz3!xzc0$iRbBtX0RL&*=(RU$%hPv$s5<_NL{`EHx_GyfK>mJl$9=4T1z~gTfRh zLy@BnE1I3<*w%<2%kFNP!>H)=B*C7caXZt#3CgZb7FAAx5e><^a~G9y3n?vBczI}X zLSsT3Z>ZZc$)Y=wd`k;nYkp4q-+w19yLVo literal 0 HcmV?d00001 diff --git a/images/screenshots/demon.jpg b/images/screenshots/demon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2a787f5ae6cf16ebf40897ac905daa1acfed4e1 GIT binary patch literal 124515 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

    3Ba}o{au7%p>)fmJ54a{o5cS^D*Ht^X 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 literal 0 HcmV?d00001 diff --git a/images/yellow_skull.gif b/images/yellow_skull.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ea9ce7a245c187bb6bb6d1595a065385fb49ac4 GIT binary patch literal 905 zcmZ?wbhEHbII@G`#2$uI`xwq0Vz_pa;l^o(M^_oXJY)Fwg5m!M*8d;a|9|BC z|4I7)C&mAtjsJhP{Qued{}HlBL|NmO~|JUmOzt;Z$z5D;4i(qGt5~CqN{SZ+6$->CMz|Nop zG8&X87&y`x_+=OzHYhMOGACY`@o|w02Masnk&cazS~^AKRBRMFnwlB7R1`!K9yBcA zU}uiF;L&iPiD|N7$`*qL$0M9fg7zUV1QMLtxY${lW+XTt?O=0kZCdfr>2T8$C)=0~ O2GK;v7Ir2k25SIYG>QTM literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 00000000..306a1e0e --- /dev/null +++ b/index.php @@ -0,0 +1 @@ + * @copyright 2017 MyAAC * @version 0.0.1 * @link http://my-aac.org */ require_once('common.php'); require_once(BASE . 'config.local.php'); if(file_exists(BASE . 'install') && (!isset($config['installed']) || !$config['installed'])) { header('Location: ' . BASE_DIR . '/install/'); die('Setup detected that install/ directory exists. Please visit this url to start MyAAC Installation.
    Delete install/ directory if you already installed MyAAC.
    Remember to REFRESH this page when you\'re done!'); } // define page visited, so it can be used within events system $page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_GET['p']) ? $_GET['p'] : ''); if(empty($page) || preg_match('/[^A-z0-9_\-]/', $page)) $page = 'news'; $page = strtolower($page); define('PAGE', $page); $template_place_holders = array(); // event system require_once(SYSTEM . 'events.php'); $events = new Events(); $events->trigger('STARTUP'); require_once(SYSTEM . 'functions.php'); require_once(SYSTEM . 'init.php'); require_once(SYSTEM . 'login.php'); require_once(SYSTEM . 'status.php'); require_once(SYSTEM . 'template.php'); if($config['views_counter']) require_once(SYSTEM . 'counter.php'); if($config['visitors_counter']) { require_once(SYSTEM . 'libs/visitors.php'); $visitors = new Visitors($config['visitors_counter_ttl']); } // page content loading if(!isset($content[0])) $content = ''; $load_it = true; // check if site has been closed if($config['site_closed']) { if(!admin()) { $title = $config['site_closed_title']; $content .= $config['site_closed_message']; $load_it = false; } if(!$logged) { ob_start(); require(SYSTEM . 'pages/accountmanagement.php'); $content .= ob_get_contents(); ob_end_clean(); $load_it = false; } } if($load_it) { if($config['site_closed'] && admin()) $content .= '

    Site is under maintenance (closed mode). Only privileged users can see it.

    '; if($config['backward_support']) require(SYSTEM . 'compat_pages.php'); $ignore = false; $file = SYSTEM . 'pages/' . $page . '.php'; if(!@file_exists($file)) { $logged_access = 0; if($logged && $account_logged && $account_logged->isLoaded()) { $logged_access = $account_logged->getAccess(); } $query = $db->query( 'SELECT `title`, `body`, `php`' . ' FROM `' . TABLE_PREFIX . 'pages`' . ' WHERE `name` LIKE ' . $db->quote($page) . ' AND `hidden` != 1 AND `access` <= ' . $db->quote($logged_access)); if($query->rowCount() > 0) // found page { $ignore = true; $query = $query->fetch(); $title = $query['title']; if($query['php'] == '1') // execute it as php code { $tmp = substr($query['body'], 0, 10); if(($pos = strpos($tmp, ' $errno, 'errstr' => $errstr); } set_error_handler('error_handler'); ob_start(); eval($tmp); $content .= ob_get_contents(); ob_end_clean(); restore_error_handler(); if(isset($php_errors[0]) && superAdmin()) { var_dump($php_errors); } } else $content .= $query['body']; // plain html } else { $page = '404'; $file = SYSTEM . 'pages/404.php'; } } ob_start(); if($events->trigger('BEFORE_PAGE')) { if(!$ignore) require($file); } $content .= ob_get_contents(); ob_end_clean(); $events->trigger('AFTER_PAGE'); } $title_full = (isset($title) ? $title . $config['title_separator'] : '') . $config['lua']['serverName']; if(file_exists($template_path . '/index.php')) require($template_path . '/index.php'); else if(file_exists($template_path . '/template.php')) // deprecated require($template_path . '/template.php'); else if($config['backward_support'] && file_exists($template_path . '/layout.php')) { // backward support for gesior $SQL = $db; $layout_header = template_header(); $layout_name = $template_path; $main_content = $content; $config['access_admin_panel'] = 2; $group_id_of_acc_logged = 0; if($logged && $account_logged) $group_id_of_acc_logged = $account_logged->getCustomField('group_id'); $config['gifts_system'] = ($config['site']['shop_system'] == 1); //$config['site']['shop_system'] = $config['gifts_system'] ? '1' : '0'; $config['serverinfo_page'] = 1; $config['download_page'] = 1; if($config['forum'] != '') $config['forum_link'] = (strtolower($config['forum']) == 'site' ? internalLayoutLink('forum') : $config['forum']); $config['site'] = &$config; require($template_path . '/layout.php'); } else { // TODO: save more info to log file die('ERROR: Cannot load template.'); } echo '' . "\n"; if(($config['debug_level'] & 1) == 1) echo ''; if(($config['debug_level'] & 2) == 2) echo "\n" . ''; if(($config['debug_level'] & 4) == 4 && function_exists('memory_get_peak_usage')) echo "\n" . ''; $events->trigger('FINISH'); ?> \ No newline at end of file diff --git a/install/includes/.htaccess b/install/includes/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/install/includes/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/install/includes/database.php b/install/includes/database.php new file mode 100644 index 00000000..22563323 --- /dev/null +++ b/install/includes/database.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/install/includes/functions.php b/install/includes/functions.php new file mode 100644 index 00000000..edc40ff0 --- /dev/null +++ b/install/includes/functions.php @@ -0,0 +1,80 @@ +query($query); + } + catch(PDOException $error_) { + error($error_); + $error = true; + } + + return !$error; +} + +// define php version id if its not already +if(!defined('PHP_VERSION_ID')) { + $version = explode('.', PHP_VERSION); + + define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2])); +} + +function ini_get_bool($a) +{ + $b = ini_get($a); + + switch (strtolower($b)) + { + case 'on': + case 'yes': + case 'true': + return 'assert.active' !== $a; + + case 'stdout': + case 'stderr': + return 'display_errors' === $a; + + default: + return (bool) (int) $b; + } +} + +function next_buttons($previous = true, $next = true) +{ + global $locale, $step, $steps; + + $i = 1; + foreach($steps as $id => $value) + { + if($step == $value) + break; + + $i++; + } + + $ret = '
    '; +/* if($previous) + $ret .= ''; + if($next) + $ret .= ''; +*/ + if($previous) + $ret .= ''; + if($next) + $ret .= ''; + + $ret .= '
    '; + return $ret; +} + +function next_form($previous = true, $next = true) +{ + global $step; + + return '
    + ' . next_buttons($previous, $next) . ' +
    '; +} +?> \ No newline at end of file diff --git a/install/includes/locale.php b/install/includes/locale.php new file mode 100644 index 00000000..8accaf41 --- /dev/null +++ b/install/includes/locale.php @@ -0,0 +1,51 @@ + 4 || !preg_match("/[a-z]/", $locale_)) // validate locale + $_COOKIE['locale'] = "en"; +} +else +{ + // detect locale + $locale_s = get_browser_languages(); + if(!sizeof($locale_s)) + $locale__ = 'en'; + else + { + foreach($locale_s as $id => $tmp) + { + $tmp_file = LOCALE . $tmp; + if(@file_exists($tmp_file)) + { + $locale_ = $tmp; + break; + } + } + } + + if(!isset($locale_)) + $locale_ = 'en'; +} + +require(LOCALE . 'en/main.php'); +require(LOCALE . 'en/install.php'); + +$file_main = LOCALE . $locale_ . '/main.php'; +if(!file_exists($file_main)) + $file_main = LOCALE . 'en/main.php'; + +$file_install = LOCALE . $locale_ . '/install.php'; +if(!file_exists($file_install)) + $file_install = LOCALE . 'en/install.php'; + +require($file_main); +require($file_install); +?> \ No newline at end of file diff --git a/install/includes/schema.sql b/install/includes/schema.sql new file mode 100644 index 00000000..68d03cbe --- /dev/null +++ b/install/includes/schema.sql @@ -0,0 +1,236 @@ +CREATE TABLE `myaac_account_actions` +( + `account_id` INT(11) NOT NULL, + `ip` INT(11) NOT NULL, + `date` INT(11) NOT NULL, + `action` VARCHAR(255) NOT NULL, + KEY (`account_id`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_bugtracker` +( + `account` VARCHAR(255) NOT NULL, + `type` INT(11) NOT NULL, + `status` INT(11) NOT NULL, + `text` text NOT NULL, + `id` INT(11) NOT NULL, + `subject` VARCHAR(255) NOT NULL, + `reply` INT(11) NOT NULL, + `who` INT(11) NOT NULL, + `uid` INT(11) NOT NULL AUTO_INCREMENT, + `tag` INT(11) NOT NULL, + PRIMARY KEY (`uid`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_changelog` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `body` VARCHAR(500) NOT NULL DEFAULT '', + `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - added, 2 - removed, 3 - changed, 4 - fixed', + `where` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - server, 2 - site', + `date` INT(11) NOT NULL DEFAULT 0, + `player_id` INT(11) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +INSERT INTO `myaac_changelog` (`id`, `type`, `where`, `date`, `body`, `hidden`) VALUES (1, 3, 2, UNIX_TIMESTAMP(), 'MyAAC installed. (:', 0); + +CREATE TABLE `myaac_commands` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `words` VARCHAR(30) NOT NULL DEFAULT 0, + `description` VARCHAR(300) NOT NULL, + `ordering` INT(11) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE (`words`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_config` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `name` VARCHAR(30) NOT NULL, + `value` VARCHAR(1000) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE (`name`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_faq` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `question` VARCHAR(255) NOT NULL DEFAULT '', + `answer` VARCHAR(1020) NOT NULL, + `ordering` INT(11) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_forum_sections` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `name` VARCHAR(32) NOT NULL, + `description` VARCHAR(255) NOT NULL DEFAULT '', + `ordering` INT(11) NOT NULL DEFAULT 0, + `closed` TINYINT(1) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; +INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`, `closed`) VALUES (NULL, 'News', 'News commenting', 1); +INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Trade', 'Trade offers.'); +INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Quests', 'Quest making.'); +INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Pictures', 'Your pictures.'); +INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Bug Report', 'Report bugs there.'); + +CREATE TABLE `myaac_forum` +( + `id` int(11) NOT NULL AUTO_INCREMENT, + `first_post` int(11) NOT NULL default '0', + `last_post` int(11) NOT NULL default '0', + `section` int(3) NOT NULL default '0', + `replies` int(20) NOT NULL default '0', + `views` int(20) NOT NULL default '0', + `author_aid` int(20) NOT NULL default '0', + `author_guid` int(20) NOT NULL default '0', + `post_text` text NOT NULL, + `post_topic` varchar(255) NOT NULL, + `post_smile` tinyint(1) NOT NULL default '0', + `post_date` int(20) NOT NULL default '0', + `last_edit_aid` int(20) NOT NULL default '0', + `edit_date` int(20) NOT NULL default '0', + `post_ip` varchar(32) NOT NULL default '0.0.0.0', + `sticked` INT(11) NOT NULL DEFAULT '0', + `closed` INT(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `section` (`section`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_monsters` ( + `hide_creature` tinyint(1) NOT NULL default '0', + `name` varchar(255) NOT NULL, + `mana` int(11) NOT NULL, + `exp` int(11) NOT NULL, + `health` int(11) NOT NULL, + `speed_lvl` int(11) NOT NULL default '1', + `use_haste` tinyint(1) NOT NULL, + `voices` text NOT NULL, + `immunities` varchar(255) NOT NULL, + `summonable` tinyint(1) NOT NULL, + `convinceable` tinyint(1) NOT NULL, + `race` varchar(255) NOT NULL, + `gfx_name` varchar(255) NOT NULL, + `file_path` varchar(255) NOT NULL +) ENGINE = MyISAM; + +CREATE TABLE `myaac_movies` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `title` VARCHAR(50) NOT NULL DEFAULT '', + `youtube_id` VARCHAR(20) NOT NULL, + `author` VARCHAR(50) NOT NULL DEFAULT '', + `ordering` INT(11) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_news` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `title` VARCHAR(50) NOT NULL, + `body` VARCHAR(10000) NOT NULL, + `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - news, 2 - ticket, 3 - article', + `date` INT(11) NOT NULL DEFAULT 0, + `category` TINYINT(1) NOT NULL DEFAULT 0, + `player_id` INT(11) NOT NULL DEFAULT 0, + `last_modified_by` INT(11) NOT NULL DEFAULT 0, + `last_modified_date` INT(11) NOT NULL DEFAULT 0, + `comments` VARCHAR(50) NOT NULL, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_news_categories` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `name` VARCHAR(50) NOT NULL DEFAULT "", + `description` VARCHAR(50) NOT NULL DEFAULT "", + `icon_id` INT(2) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 0); +INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 1); +INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 2); +INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 3); +INSERT INTO `myaac_news_categories` (`id`, `icon_id`) VALUES (NULL, 4); +INSERT INTO `myaac_news` (`id`, `type`, `date`, `category`, `title`, `body`, `player_id`, `comments`, `hidden`) VALUES (NULL, '1', UNIX_TIMESTAMP(), '2', 'Hello!', 'MyAAC is just READY to use!', 'slawkens', 'http://my-aac.org', '0'); +INSERT INTO `myaac_news` (`id`, `type`, `date`, `category`, `title`, `body`, `player_id`, `comments`, `hidden`) VALUES (NULL, '2', UNIX_TIMESTAMP(), '4', 'Hello tickets!', 'http://my-aac.org', 'slawkens', '', '0'); + +CREATE TABLE `myaac_notepad` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `account_id` INT(11) NOT NULL, + /*`name` VARCHAR(30) NOT NULL,*/ + `content` TEXT NOT NULL DEFAULT '', + /*`public` TINYINT(1) NOT NULL DEFAULT 0*/ + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_pages` +( + `id` INT NOT NULL AUTO_INCREMENT, + `name` VARCHAR(30) NOT NULL, + `title` VARCHAR(30) NOT NULL, + `body` TEXT NOT NULL, + `date` INT(11) NOT NULL DEFAULT 0, + `player_id` INT(11) NOT NULL DEFAULT 0, + `php` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0 - plain html, 1 - php', + `access` TINYINT(2) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_screenshots` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `name` VARCHAR(30) NOT NULL, + `comment` VARCHAR(255) NOT NULL DEFAULT '', + `image` VARCHAR(255) NOT NULL, + `thumb` VARCHAR(255) NOT NULL, + `author` VARCHAR(50) NOT NULL DEFAULT '', + `ordering` INT(11) NOT NULL DEFAULT 0, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE = MyISAM; + +INSERT INTO `myaac_screenshots` (`id`, `ordering`, `name`, `comment`, `image`, `thumb`, `author`) VALUES (NULL, 1, 'Demon', 'Demon', 'images/screenshots/demon.jpg', 'images/screenshots/demon_thumb.gif', 'MyAAC'); + +CREATE TABLE `myaac_spells` +( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `spell` VARCHAR(255) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `words` VARCHAR(255) NOT NULL, + `category` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - attack, 2 - healing, 3 - summon, 4 - supply, 5 - support', + `type` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1 - instant, 2 - rune', + `level` INT(11) NOT NULL DEFAULT 0, + `maglevel` INT(11) NOT NULL DEFAULT 0, + `mana` INT(11) NOT NULL DEFAULT 0, + `soul` TINYINT(3) NOT NULL DEFAULT 0, + `conjure_count` TINYINT(3) NOT NULL DEFAULT 0, + `premium` TINYINT(1) NOT NULL DEFAULT 0, + `vocations` VARCHAR(32) NOT NULL, + `cities` VARCHAR(32) NOT NULL, + `hidden` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE (`spell`) +) ENGINE = MyISAM; + +CREATE TABLE `myaac_visitors` +( + `ip` VARCHAR(16) NOT NULL, + `lastvisit` INT(11) NOT NULL DEFAULT 0, + `page` VARCHAR(100) NOT NULL, + UNIQUE (`ip`) +) ENGINE = MyISAM; \ No newline at end of file diff --git a/install/index.php b/install/index.php new file mode 100644 index 00000000..9a0cc734 --- /dev/null +++ b/install/index.php @@ -0,0 +1,46 @@ + $value) + $_SESSION['var_' . $key] = $value; +} + +$steps = array(1 => 'welcome', 2 => 'license', 3 => 'requirements', 4 => 'config', 5 => 'database', 6 => 'finish'); +if(!in_array($step, $steps)) // check if step is valid + die('ERROR: Unknown step.'); + +if($step == 'database') +{ + foreach($_POST['vars'] as $key => $value) + { + if(empty($value)) + { + $step = 'config'; + $errors = '

    ' . $locale['please_fill_all'] . '

    '; + break; + } + } +} + +// step include +ob_start(); +require('steps/' . $step . '.php'); +$content = ob_get_contents(); +ob_end_clean(); + +// render +require('template/template.php'); +//$_SESSION['laststep'] = $step; + +?> diff --git a/install/steps/.htaccess b/install/steps/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/install/steps/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/install/steps/config.php b/install/steps/config.php new file mode 100644 index 00000000..989f90f3 --- /dev/null +++ b/install/steps/config.php @@ -0,0 +1,113 @@ + +
    + + + + + + '; + +echo ' + + + + '; + ?> +
    + +
    + +
    + ' . $locale['step_config_' . $value . '_desc'] . ' +
    + +
    +
    + ' . $locale['step_config_client_desc'] . ' +
    + +
    \ No newline at end of file diff --git a/install/steps/database.php b/install/steps/database.php new file mode 100644 index 00000000..1bb411f3 --- /dev/null +++ b/install/steps/database.php @@ -0,0 +1,342 @@ + $value) + { + if(strpos($key, 'var_') !== false) + { + if($key == 'var_server_path') + { + $value = str_replace("\\", "/", $value); + if($value[strlen($value) - 1] != '/') + $value .= "/"; + } + + if($key != 'var_account' && $key != 'var_password') { + $content .= '$config[\'' . str_replace('var_', '', $key) . '\'] = \'' . $value . '\';'; + $content .= PHP_EOL; + } + } + } + + $config['server_path'] = $_SESSION['var_server_path']; + // take care of trailing slash at the end + if($config['server_path'][strlen($config['server_path']) - 1] != '/') + $config['server_path'] .= '/'; + + if(!file_exists($config['server_path'] . 'config.lua')) { + error($locale['step_database_error_config']); + $error = true; + } + + if(!$error) { + $config['lua'] = load_config_lua($config['server_path'] . 'config.lua'); + if(isset($config['lua']['sqlType'])) // tfs 0.3 + $config['database_type'] = $config['lua']['sqlType']; + else if(isset($config['lua']['mysqlHost'])) // tfs 0.2/1.0 + $config['database_type'] = 'mysql'; + else if(isset($config['lua']['database_type'])) // otserv + $config['database_type'] = $config['lua']['database_type']; + else if(isset($config['lua']['sql_type'])) // otserv + $config['database_type'] = $config['lua']['sql_type']; + + $config['database_type'] = strtolower($config['database_type']); + if($config['database_type'] != 'mysql') { + $locale['step_database_error_only_mysql'] = str_replace('$DATABASE_TYPE$', '' . $config['database_type'] . '', $locale['step_database_error_only_mysql']); + error($locale['step_database_error_only_mysql']); + $error = true; + } + else { + success($locale['step_database_importing']); + require(BASE . 'install/includes/database.php'); + + if(!tableExist('accounts')) { + $locale['step_database_error_table'] = str_replace('$TABLE$', 'accounts', $locale['step_database_error_table']); + error($locale['step_database_error_table']); + $error = true; + } + + if(tableExist(TABLE_PREFIX . 'account_actions')) { + $locale['step_database_error_table_exist'] = str_replace('$TABLE$', TABLE_PREFIX . 'account_actions', $locale['step_database_error_table_exist']); + warning($locale['step_database_error_table_exist']); + } + else if(!$error) { + // import schema + try { + $db->query(file_get_contents(BASE . 'install/includes/schema.sql')); + } + catch(PDOException $error_) { + error($locale['step_database_error_schema'] . ' ' . $error_); + $error = true; + } + + if(!$error) { + $locale['step_database_success_schema'] = str_replace('$PREFIX$', TABLE_PREFIX, $locale['step_database_success_schema']); + success($locale['step_database_success_schema']); + } + } + + if(fieldExist('key', 'accounts')) { + if(query("ALTER TABLE `accounts` MODIFY `key` VARCHAR(64) NOT NULL DEFAULT '';")) + success($locale['step_database_modifying_field'] . ' accounts.key...'); + } + else { + if(query("ALTER TABLE `accounts` ADD `key` VARCHAR(64) NOT NULL DEFAULT '' AFTER `email`;")) + success($locale['step_database_adding_field'] . ' accounts.key...'); + } + + if(!fieldExist('blocked', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `blocked` TINYINT(1) NOT NULL DEFAULT FALSE COMMENT 'internal usage' AFTER `key`;")) + success($locale['step_database_adding_field'] . ' accounts.created...'); + } + + if(!fieldExist('created', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `created` INT(11) NOT NULL DEFAULT 0 AFTER `" . (fieldExist('group_id', 'accounts') ? 'group_id' : 'blocked') . "`;")) + success($locale['step_database_adding_field'] . ' accounts.created...'); + } + + if(!fieldExist('rlname', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `rlname` VARCHAR(255) NOT NULL DEFAULT '' AFTER `created`;")) + success($locale['step_database_adding_field'] . ' accounts.rlname...'); + } + + if(!fieldExist('location', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `location` VARCHAR(255) NOT NULL DEFAULT '' AFTER `rlname`;")) + success($locale['step_database_adding_field'] . ' accounts.location...'); + } + + if(!fieldExist('country', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `country` VARCHAR(3) NOT NULL DEFAULT '' AFTER `location`;")) + success($locale['step_database_adding_field'] . ' accounts.country...'); + } + + if(fieldExist('page_lastday', 'accounts')) { + if(query("ALTER TABLE `accounts` CHANGE `page_lastday` `web_lastlogin` INT(11) NOT NULL DEFAULT 0;")) { + $tmp = str_replace('$FIELD$', 'accounts.page_lastday', $locale['step_database_changing_field']); + $tmp = str_replace('$FIELD_NEW$', 'accounts.web_lastlogin', $tmp); + success($tmp); + } + } + else if(!fieldExist('web_lastlogin', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `web_lastlogin` INT(11) NOT NULL DEFAULT 0 AFTER `country`;")) + success($locale['step_database_adding_field'] . ' accounts.created...'); + } + + if(!fieldExist('web_flags', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `web_flags` INT(11) NOT NULL DEFAULT 0 AFTER `web_lastlogin`;")) + success($locale['step_database_adding_field'] . ' accounts.country...'); + } + + if(!fieldExist('email_hash', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `email_hash` VARCHAR(32) NOT NULL DEFAULT '' AFTER `web_flags`;")) + success($locale['step_database_adding_field'] . ' accounts.email_hash...'); + } + + if(!fieldExist('email_verified', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `email_verified` TINYINT(1) NOT NULL DEFAULT 0 AFTER `email_hash`;")) + success($locale['step_database_adding_field'] . ' accounts.email_verified...'); + } + + if(!fieldExist('email_new', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `email_new` VARCHAR(255) NOT NULL DEFAULT '' AFTER `email_hash`;")) + success($locale['step_database_adding_field'] . ' accounts.email_new...'); + } + + if(!fieldExist('email_new_time', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `email_new_time` INT(11) NOT NULL DEFAULT 0 AFTER `email_new`;")) + success($locale['step_database_adding_field'] . ' accounts.email_new_time...'); + } + + if(!fieldExist('email_code', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `email_code` VARCHAR(255) NOT NULL DEFAULT '' AFTER `email_new_time`;")) + success($locale['step_database_adding_field'] . ' accounts.email_code...'); + } + + if(fieldExist('next_email', 'accounts')) { + if(query("ALTER TABLE `accounts` CHANGE `next_email` `email_next` INT(11) NOT NULL DEFAULT 0;")) { + $tmp = str_replace('$FIELD$', 'accounts.next_email', $locale['step_database_changing_field']); + $tmp = str_replace('$FIELD_NEW$', 'accounts.email_next', $tmp); + success($tmp); + } + } + else if(!fieldExist('email_next', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `email_next` INT(11) NOT NULL DEFAULT 0 AFTER `email_code`;")) + success($locale['step_database_adding_field'] . ' accounts.email_next...'); + } + + if(!fieldExist('premium_points', 'accounts')) { + if(query("ALTER TABLE `accounts` ADD `premium_points` INT(11) NOT NULL DEFAULT 0 AFTER `email_next`;")) + success($locale['step_database_adding_field'] . ' accounts.premium_points...'); + } + + if(!fieldExist('description', 'guilds')) { + if(query("ALTER TABLE `guilds` ADD `description` TEXT NOT NULL DEFAULT '';")) + success($locale['step_database_adding_field'] . ' guilds.description...'); + } + + if(fieldExist('logo_gfx_name', 'guilds')) { + if(query("ALTER TABLE `guilds` CHANGE `logo_gfx_name` `logo_name` VARCHAR( 255 ) NOT NULL DEFAULT 'default.gif';")) { + $tmp = str_replace('$FIELD$', 'guilds.logo_gfx_name', $locale['step_database_changing_field']); + $tmp = str_replace('$FIELD_NEW$', 'guilds.logo_name', $tmp); + success($tmp); + } + } + else if(!fieldExist('logo_name', 'guilds')) { + if(query("ALTER TABLE `guilds` ADD `logo_name` VARCHAR( 255 ) NOT NULL DEFAULT 'default.gif';")) + success($locale['step_database_adding_field'] . ' guilds.logo_name...'); + } + + if(!fieldExist('created', 'players')) { + if(query("ALTER TABLE `players` ADD `created` INT(11) NOT NULL DEFAULT 0;")) + success($locale['step_database_adding_field'] . ' players.created...'); + } + + if(fieldExist('hide_char', 'players')) { + if(query("ALTER TABLE `players` CHANGE `hide_char` `hidden` TINYINT(1) NOT NULL DEFAULT 0;")) { + $tmp = str_replace('$FIELD$', 'players.hide_char', $locale['step_database_changing_field']); + $tmp = str_replace('$FIELD_NEW$', 'players.hidden', $tmp); + success($tmp); + } + } + else if(!fieldExist('hidden', 'players')) { + if(query("ALTER TABLE `players` ADD `hidden` VARCHAR( 255 ) TINYINT(1) NOT NULL DEFAULT 0;")) + success($locale['step_database_adding_field'] . ' players.hidden...'); + } + + if(!fieldExist('comment', 'players')) { + if(query("ALTER TABLE `players` ADD `comment` TEXT NOT NULL DEFAULT '';")) + success($locale['step_database_adding_field'] . ' players.comment...'); + } + + $account = $_SESSION['var_account']; + $password = $_SESSION['var_password']; + + $config_salt_enabled = fieldExist('salt', 'accounts'); + if($config_salt_enabled) + { + $salt = generateRandomString(10, false, true, true); + $password = $salt . $password; + } + + $account_db = new OTS_Account(); + $account_db->load(1); + if($account_db->isLoaded()) { + $account_db->setName('dummy_account'); + $account_db->setPassword('for sample characters. ' . generateRandomString(10)); + $account_db->save(); + } + else { + $new_account = $ots->createObject('Account'); + $new_account->create('dummy_account', 1); + $account_db->setPassword('for sample characters. ' . generateRandomString(10)); + } + + + $account_db = new OTS_Account(); + $account_db->find($account); + if($account_db->isLoaded()) { + if($config_salt_enabled) + $account_db->setSalt($salt); + + $account_db->setPassword(encrypt($password)); + $account_db->setEMail($_SESSION['var_mail_admin']); + $account_db->save(); + $account_db->setCustomField('web_flags', 3); + $account_db->setCustomField('country', 'us'); + + $_SESSION['account'] = $account_db->getId(); + } + else { + $new_account = $ots->createObject('Account'); + $new_account->create($account); + + if($config_salt_enabled) + $new_account->setSalt($salt); + + $new_account->setPassword(encrypt($password)); + $new_account->setEMail($_SESSION['var_mail_admin']); + $new_account->unblock(); + $new_account->save(); + $new_account->setCustomField('created', time()); + $new_account->setCustomField('web_flags', 3); + $new_account->setCustomField('country', 'us'); + $new_account->logAction('Account created.'); + + $_SESSION['account'] = $new_account->getId(); + } + + success($locale['step_database_created_account']); + $_SESSION['password'] = encrypt($password); + $_SESSION['remember_me'] = true; + + $deleted = 'deleted'; + if(fieldExist('deletion', 'players')) + $deleted = 'deletion'; + + $query = $db->query('SELECT `id` FROM `players` WHERE `name` = ' . $db->quote('Rook Sample') . ' OR `name` = ' . $db->quote('Sorcerer Sample') . ' OR `name` = ' . $db->quote('Druid Sample') . ' OR `name` = ' . $db->quote('Paladin Sample') . ' OR `name` = ' . $db->quote('Knight Sample')); + if($query->rowCount() == 0) { + if(query("INSERT INTO `players` (`id`, `name`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `save`, `skull`, `skulltime`, `lastlogout`, `blessings`, `balance`, `stamina`, `$deleted`, `created`, `hidden`, `comment`) VALUES + (null, 'Rook Sample', 1, 1, 8, 0, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179613, 2453925456, 1, 0, 0, 1255179614, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Sorcerer Sample', 1, 1, 8, 1, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179571, 2453925456, 1, 0, 0, 1255179612, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Druid Sample', 1, 1, 8, 2, 185, 185, 4200, 118, 114, 38, 57, 130, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179655, 2453925456, 1, 0, 0, 1255179658, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Paladin Sample', 1, 1, 8, 3, 185, 185, 4200, 118, 114, 38, 57, 129, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179854, 2453925456, 1, 0, 0, 1255179858, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, ''), + (null, 'Knight Sample', 1, 1, 8, 4, 185, 185, 4200, 118, 114, 38, 57, 131, 0, 0, 35, 35, 0, 100, 11, 2200, 1298, 7, '', 470, 1, 1255179620, 2453925456, 1, 0, 0, 1255179654, 0, 0, 151200000, 1, UNIX_TIMESTAMP(), 1, '');")) + success($locale['step_database_imported_players']); + } + + if(!$error && !isset($_SESSION['saved'])) { + $content .= '$config[\'installed\'] = true;'; + $content .= PHP_EOL; + if(strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false) { + $content .= '$config[\'friendly_urls\'] = true;'; + $content .= PHP_EOL; + } + + $content .= '$config[\'mail_enabled\'] = true;'; + $content .= PHP_EOL; + if(!check_mail($_SESSION['var_mail_admin'])) { + error($locale['step_config_mail_admin_error']); + $error = true; + } + if(!check_mail($_SESSION['var_mail_address'])) { + error($locale['step_config_mail_address_error']); + $error = true; + } + + $content .= '$config[\'client_download\'] = \'http://clients.halfaway.net/windows.php?tibia=\'. $config[\'client\'];'; + $content .= PHP_EOL; + $content .= '$config[\'client_download_linux\'] = \'http://clients.halfaway.net/linux.php?tibia=\'. $config[\'client\'];'; + $content .= PHP_EOL; + + $content .= "?>"; + $file = fopen(BASE . 'config.local.php', 'a+'); + if($file) { + if(!$error) { + fwrite($file, $content); + $_SESSION['saved'] = true; + } + } + else { + $locale['step_database_error_file'] = str_replace('$FILE$', '' . BASE . 'config.local.php', $locale['step_database_error_file']); + warning($locale['step_database_error_file'] . '
    + '); + } + } + } + } +} +?> + +
    + + +
    \ No newline at end of file diff --git a/install/steps/finish.php b/install/steps/finish.php new file mode 100644 index 00000000..01b82686 --- /dev/null +++ b/install/steps/finish.php @@ -0,0 +1,20 @@ + +

    + + $value) { + if(strpos($key, 'var_') !== false) + unset($_SESSION[$key]); +} +unset($_SESSION['saved']); +?> \ No newline at end of file diff --git a/install/steps/license.php b/install/steps/license.php new file mode 100644 index 00000000..6a970fec --- /dev/null +++ b/install/steps/license.php @@ -0,0 +1,7 @@ +
    + + + + +
    diff --git a/install/steps/requirements.php b/install/steps/requirements.php new file mode 100644 index 00000000..34b2862f --- /dev/null +++ b/install/steps/requirements.php @@ -0,0 +1,46 @@ +' . $name; + if(!empty($version)) + echo ': ' . $version . ''; + + echo '

    '; + if(!$ok && !$warning) + $failed = true; +} + +$failed = false; + +// start validating +version_check($locale['step_requirements_php_version'], (PHP_VERSION_ID >= 50000), PHP_VERSION); +foreach(array('config.local.php', 'images/guilds', 'images/houses', 'images/screenshots') as $value) +{ + $perms = (int) substr(decoct(fileperms(BASE . $value)), 2); + version_check($locale['step_requirements_write_perms'] . ': ' . $value, $perms >= 660); +} + +$ini_register_globals = ini_get_bool('register_globals'); +version_check('register_long_arrays', !$ini_register_globals, $ini_register_globals ? $locale['on'] : $locale['off']); + +$ini_safe_mode = ini_get_bool('safe_mode'); +version_check('safe_mode', !$ini_safe_mode, $ini_safe_mode ? $locale['on'] : $locale['off'], true); + +version_check('PDO extension loaded', extension_loaded('pdo'), '', false); +version_check('zip extension loaded', extension_loaded('zip'), '', false); + +if($failed) +{ + echo '
    ' . $locale['step_requirements_failed']; + echo next_form(true, false); +} +else + echo next_form(true, true); +?> \ No newline at end of file diff --git a/install/steps/welcome.php b/install/steps/welcome.php new file mode 100644 index 00000000..42b7e15b --- /dev/null +++ b/install/steps/welcome.php @@ -0,0 +1,31 @@ +' . $locale['already_installed'] . '

    '; +else +{ +?> +
    + +

    + +
    + + +
    + \ No newline at end of file diff --git a/install/template/images/active.gif b/install/template/images/active.gif new file mode 100644 index 0000000000000000000000000000000000000000..5678ff1a9df0e52983e9416cc055a04578f7571d GIT binary patch literal 155 zcmZ?wbhEHbWMq(KIKsfdKm9J>q6b{-p9ptd6YjVu)_jzI+8xe~PkB~7;-7a_(r4RUL-{V>SkZa=;iH1XB%_oI>Z-}&AkZ3$AIOPuCg8Q7C vpE4i;#h)x-o(_lv*~!2vq0lONwMek}sD@t}L*OFT2`x6g2C}!sm>8@9xy?4l literal 0 HcmV?d00001 diff --git a/install/template/images/approve.gif b/install/template/images/approve.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bd09804e0b11330b01a1c48a7fc3371fd774e40 GIT binary patch literal 535 zcmZ?wbhEHb6kyi)+AwBc;~sgX$L31c>SXNY)##X65D2TyC#d=&B##3dz=NnVjM8_-+PG1`nvp8hN;mI2=u3m6xPVw%n z{)y-g6Dz z=j(GeCAFQYacH$n-VhnPB*ePGwCPlN+1_m1M)TIwl{;^2nQ*D4^K9+&SI1*WPB&#URz)EUzo0$mBYa zg;!WdS>Lb8+PsB@!H$_pYk|Ltw7O)IET1Kt0Ox8o7f)>k2S+hIGegtW{yqjK7Pj18 ug8ZUJN1IrE-I#5JoOqlsHM4q%7_+-G-fdCU5LeQC)@sGU=-u7OU=0APE~<_I literal 0 HcmV?d00001 diff --git a/install/template/images/background.jpg b/install/template/images/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c18e51c5cdf647960b55d39728c11efe23dd6139 GIT binary patch literal 12264 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 literal 0 HcmV?d00001 diff --git a/install/template/images/button.gif b/install/template/images/button.gif new file mode 100644 index 0000000000000000000000000000000000000000..9067482487f6ad1a8bc6f356475d24a2c5890530 GIT binary patch literal 152 zcmZ?wbhEHbWMq(JIKsei_|TyX7cLw)aA42w-N%j|J#_Hk<;$0^UAuPW%9Xu)_8d8K zcqtEl8^eGi^geF#c5LP-QDht zf#})R+;?&Jk$%{rmhp~y@Qio)xv%G4S@45<=2=bYe|Y+%k?DJI?URnuZ)5IiUchBZ z^Lb(y8Y1?XO4^rD{nlYjTC zq1d9A?uvEvj)CZ{uDMY&=GfHqw5s^FsQJsp;csxzPd?3GP}X2n+g3~PWLD-@Q0iPz z!%sBKQatKrT<5H<^{=Jky|?(ozWm3!=2lGlnuqFxedgEG%4Ac`VN?Cv)cA~c{oL5y zYHH$pb?AC^^q`*n)XltFKKO=kzFR)zzq{e6q||I;<8Ni-zPkFWo#1_Y@~x`xhJNmZ zefY1W)18g!+SmHJuJDC$_mh6wc5%K|IrfBX>|a#rSxxTl?*IS)A^8LV00000EC2ui z01f~S000N8fPR7rLT_O&3^W6Rj06D~Rxw9KY-?$aNN`|w76vL;7hN@e2>~-+St$=I zJzqv_Ep<~`Wd?Xad%1fYb4fpMRBjM_#Kk&66$dU6J$HZ4(0v*JCm=p&AJEZK0D5@} z4J>`*W_{01PN*9y0Q?zySgoJ2vFl!YB{`JKNqj3IG5A literal 0 HcmV?d00001 diff --git a/install/template/images/divider.gif b/install/template/images/divider.gif new file mode 100644 index 0000000000000000000000000000000000000000..8004bdf43502d43015b5ba19b62791fb6b6392cb GIT binary patch literal 155 zcmZ?wbhEHbWMq(KIKsfd7EsUSn8FrN%jQ?Z>6XLgki-_$$m5*G?oq_yUcl*`&KlIh z8q&&bpUCc6!W!Da=2On;lF8;<#o?C6657e>l*$^?&f${9?p@9j*2Qff&wvUPf3koD nbU-A?P6k$q2MaTO1w*__1cRF_Bvg2r5_EdL21JT6F<1itc#I&s literal 0 HcmV?d00001 diff --git a/install/template/images/edit.gif b/install/template/images/edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..0675fc7b90878a0ff0f20c0f3dcdec14ffd55054 GIT binary patch literal 600 zcmZ?wbhEHbPTd2-^1$GhHLYrMLx>i_4bU%q_#_U+rrR>!aR zqn{t>K0P)3hFH@5EHz5DvEvZq%!-Ix`!s?+(= zqQI|Due`fb`}xWGqcc1&&P#oKcG>9_`FCe|f4Wxnd|&zd_wRompYrW)&f5zWAAsO; z<^N9){(d_W08`T6tb_wV0-{P^+q?b~DRHrJah{fux+XDVt};tv zx5P% z@`_GYVZ14i&-#lxhDccm^2NVv?5v(`CMQfhFnJzJ$CDYUqG jMt2{N)$Jb{J~J3&Ev$YsDfBclwgvSuCMftQFjxZs8@(u? literal 0 HcmV?d00001 diff --git a/install/template/images/error.gif b/install/template/images/error.gif new file mode 100644 index 0000000000000000000000000000000000000000..352875dccc0d862bc66d792c0d6866c962d1e479 GIT binary patch literal 599 zcmV-d0;v5*Nk%w1VGaNe0OkMy-F*d|>W# zTUCV= zlZW}NpY5NO?2>==u%p;&RL)&YpucGm&o9?cq_o|)vg=_b-q|skU z_p_k*wWaZwgzB7+&{#n0iGAvgd-JcR@son^mxJbrccj||I=8uHvd}ZK}gzbH1=%=6bwXDNXIq0aL_@asUwxQv0Sj29*$cM%Z}9%mSgB27{UI1LSK8ZbI(etj8P2Ll6t ze-#N9R&GBoJE?gStPlhRQ7KbG4C5UDGKfoZ!!Qjro$jm6nz$D1XEXer(2tz8^ zVL(^H0XrKj7tk^|AHrZ10D75;jT=drQFLO^LZ&2U5%!CVgoBeOUuByn9xjNXRZ#K& zEe0NDMxdR{f(-Ty&zY~@^#5$L=fk<%FB_w7e4VSr<764NMB(YREeGA!?eR?rT)fI> bfh7O1Ohib@bi4@AY;>{l5tSCPY8e literal 0 HcmV?d00001 diff --git a/install/template/images/negative.gif b/install/template/images/negative.gif new file mode 100644 index 0000000000000000000000000000000000000000..2aeaf195f9b7a46eac893644e9ed71048046cb4a GIT binary patch literal 597 zcmV-b0;>H-Nk%w1VGaNe0OkMy>~LG^Y+3VsVD58V?{;11XIJoeU;DkO^@3yTZd&^4 z=lHas_K9oeWmfTeU-N!p{nyUrVpZ~~pW=+mxT1DlHpxa?wE%7wWarlZ1k+5{p{)Uucq*yj_se7^qGX~ zucGUTeeue{{lm5Cf@=Tn>*;-H@u-{j&c^4Fh39Nt&RtC7VN~O0Tk?Qq_|eGk$G_^0 zd+wl>hkfy#koAst_`b2xVNlLwPWOy;;dETkSwY==Z~EEO z^?_pZjdtB|UG95f<#Ji^rJ3xDf7ozY-l3K4fobD}b@%7v_U7X0!MNaaVET@C-FXglE-Y zNBY0A^{}J$glhS@rrvN_@sonoWK#H|iNjPq;iQ-Fw5aWpiU0rqA^8LV00000EC2ui z01f~S000NFfPaEAFhM4DM@T4wj1XU9A`1%@Gg&;1Y#|313=DciAXGJfX-k?22!am+ zc0NoBb7cnzP!xg=1_UKiEm0L_6sv*+0|0m=S5p{q0=R+z2?1d=O&uRQxdTss0Tu-} zRc$dUEX4^%DFqD?E;dSiUT)DAf)P0r5=ndtcOG==el|=PApy)AE`MIg(Q?Ad8XZN{ jI1w_0Q4ctIGW=LU2FIQ*j09}~g652dF<3Y-3IqTx~s(Fz}WT9-}Bt(^(&F};yW!O1^w#9{YLda6wbOy9(PfXpeyG)ns?mn5*VpFx z#oF^ud$IEN`pn++fT6{)$>w{c&$i6sslwo|$K*#M}30j=03t=kD|PzR=_0 z>ht64^`gM!%HH;No5{e@A%?ayUyZ%rqQOo+0fqZk+jxpl)&rp_i>xWxy@e<>yx1}*^& z4QmN~5CKF`MmkJF3nC&5N>&jORWS|%Y87GyBnuf6cnVEL4s{h06IWkoDi(VX7zYmt z6B-&)VH6x36mLrh3PTbaEq;DK8yg5|NHcr{81j009y~ChW5-90G9^yrk@4Y!hb?W) wbXf7Hzzr`M5OiTcr3V-|SQurAlS5935ImA-VZ%t!iZdN{?1<9D0HZ(vJDXZvn*aa+ literal 0 HcmV?d00001 diff --git a/install/template/images/positive.gif b/install/template/images/positive.gif new file mode 100644 index 0000000000000000000000000000000000000000..42426c42cf8527d480f3859239645fd783c0217f GIT binary patch literal 608 zcmV-m0-yayNk%w1VGaNe0OkMy=k?;@?crR)JdwMPYs5-&$7XKCVw%c_uH2=4y=Rxq zhBbaMZ?#yo+NQ79p>4NUL!mQ2j61a6tG3a#tJ9mI*Oi~rk#)#uZ^L19w_Kgrl5)ss z{Qdio&VPf>cemlMddzLL;jVJITXDW$x7oFY#dVm>hv4hrdBJ3Hxm&*Dwy@)$f4FIy z$A`D!u$ISzU9~?yg*$P?W9j(i%k992$$5jmZL!^_>G$RR{{585kGk8nCWIrI(Twr= z@OH^**6z}y*OqX&S;6DBz~s5h?7wioS9iQ%eYa+<-S zzvH-x#CBD)HCnzmHIFf}+o-kMs9~*2aKU3tmpx9KL3G1pbGlsP@!{n1;eg6>fXs4I zphA(rk7mV5Z^mS4$V#)>rJL80zTdT~+?OYEBqo0&DR(6)dL?qpRhG?&e#dV=nLH|w zC5y;-n$(Rup(lL0Wc2#-?f2_;%4*r{)OpEkhr)81&5E7Qi~s-sA^8LV00000EC2ui z01f~S000NQfPaEBD{cZ)1Ze<*j5K9SK?n#HPEtdRMFJfk8Xg`RA#-(Te>h_uAs~4h z7Z-aHQ4n28Mjs#>WCjK@DsU24Is_GGKe-qfM1KH1esM}SU6k5CA)+?<0i( literal 0 HcmV?d00001 diff --git a/install/template/images/sidebody.gif b/install/template/images/sidebody.gif new file mode 100644 index 0000000000000000000000000000000000000000..51681088b06efdd8c859ce42dc5084b0992f55d4 GIT binary patch literal 197 zcmZ?wbhEHblwf3KIKsf-92gs%Qj}FvThiEb@$!|eyY}tgckud+8@*Fz-@A8j@4=&& zuUxx%>vmal@4fr?H*DQ8b>6ZE4<0ZO4HSQ}fYs`NNRXWjtWFOEds8y!Wvp74^Lk%_ z&iRtu`#(-dRKEXzU_pV$7fqJVMMWobtma!DXJ}}MT7P5BH8xHLh9>qzZ@t;)54kQB KMjxq39)L+Ry+H`ML=U$@4ZcDO z#6SdZTUVk>C5cl$!$1UXTv+c{0@gbM(l!G2Ujo%R0?{-A^<4toK?3Vj0_RQw>QMsm zSpwKS0^>>o-a`V#Kmz~(000000000000000000000000000000000000000000000 z00000A^8LV00000EC2ui02l!r000L6z{NsR(Zr6(q;kn@I-k&}bV{vSuh^`1Yt48% z494OzX*d+41ejE#(BTJr4xw7TUm@{kM%=z$<6`(_l9!C>oFt6t5zwd>cgW6PdRyEf<} z0CMZz&AYen-@tFm&ku;fElGDB_4DmT2OMD5j|5iY&J1;)^iGC}W35q+sKXIOeG1 zjy(40NG7S|k~SVez>`o$Ddm(@R%zvxSZ1l^mRxq}<(FWFDdw1D zK6!)-Xr`&=nryb|=9_TFDd(JY)@kRRc;>0+o_zL+<`E+VD(Iku7Ha6Bh$gD&qKr1` z=%bKED(R$@R%&UWN0^}Lrkr-_>8GHED(a}DmTKy$sHUpws;su^>Z_U_QNXOU)@tjm zxaO+suDtf@>#x8DE9|hu7HjOW$j*8M3CuR@?6c5DEA6z@R%`9G*k-Hkw%m5>?YH2D z%j^*+lxyy}=%%YB?z-%@>+ZYo#w+i<^ww+dz4+#+in+2Q2Ww1Q)zS5CA)k C@*0Ey literal 0 HcmV?d00001 diff --git a/install/template/images/success.gif b/install/template/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5206b569d19a80154417a6bdf22025cf6f53b1b GIT binary patch literal 606 zcmV-k0-^m!Nk%w1VGaNe0OkMyTf#bK!$l^1BXY-PZp31m%7-U)Bd*+~eZ6PR@4%PL zhPmseZ?#yo+NLsoEw9(1ZMRp_^~AN`tgF+Tq1Tn9&zp6~Xm7(|bhlhVpf5X&HjvJL zo!F9k%x!YWXtm+4x8bk+{riK?cb3hFqt}+%?9`pki>TR~a=BZX(Tj7sTz|@Ne#dY9 z{{6n=wzb=+I-w=z^yBUK>+$*Uui>1U$A_QNk)_w0g~fH2$Ag>KktmNNn$(S)+JuqO zeRj%f$>_gvxmrw@J#@lZaKBfg;f#a6ZFjt2ez<5(n?bZ~iJeW6GzBO>cV{yb|dBJ3K!(@iWd~v>CfXZ`#%yLqoLdxmDv)QGz z-KwkIoQueKZ^mRYk1lA$MSj6)gSvZe%20#8d}qi;C4(YawK%Zju+5i9lA^8LV00000EC2ui z01f~S000NOfPR7zMQH$40X=hqj0o0OkMyc0LU~Jw29oQaM<5Oh-dQfwhFM({wx$ccsl&h`4-Y zNo=0UH8eEKd@E%;7cMR?MMOkflEaBe4}Pl9LVmJKg}6iy9x5s-OiN2CC@3Bt9w{j)Dk&)@B_$^(CnzT;CnhFKN=i00 zH8(dmL_ddS1)wMJ;Get#3N=ZpsIUH4Qh+jDs?#iX^&8NtkZqi^- zae|hla#cr#xtLxe_{^NjcqJ(*D<~)_ytc$Zdahr2qFy!-h_KVOUPJcJrEHhM(0wT? zEH2%!fiNs6IZ$Zovv|;3O7_sG=*6Gpw~E7ZDam&#wUc;!Vt1xaO~_|nEGsJ`BO@as zA|M|hBqJjrARsL)EFmEwAs`?oCMGB-C@U)~BqSs)EiE4(A0i?mA^8LV00000EC2ui z0Hgpc000O7fEXAM89g+Ih>41ejE#eLWNVrbpUH3oqW62by_+O@3NvuM+*UCXwu z+qZE4j~tmnx31k8V4EH|um!~3zkmY^9!$8f;lqd%E0&9+vE#=$4zNk%WXqByAW%Tw z%(=7Y&!9t#9!`m}aW!rj-V9 z!lVjRAwmHLj44H_C1}uq0-Uz$>Z`EED(eYD?YH2DEAF`DayzXH=%%agy6m>=?z`~D zEAPDY)@$#*?+y_FAN=;~@4o;CEbzbt7i{ps2q&!Y!UG4eFT)T=Eb+t?SB$X#!*pb< z@x~l??D5AShb;2QB$sUR$tZ&yfDm!C?DESn$1L;AG}mnN%{b?*^UgfeEQAnp1TFN? zL>F!J(MTt)^wLZ>?ex=7BmMIqR99{F)mUe(_10W>?e*7Shb{KlTMIz~*=VP&_S$T> z9X1JPyDj(Jbk{962_M{{_uhQ>?f2h+2QK*Fgcol3;fN<5_y-^0;rQc_M=tr~lvi%~ z<(Ox#`R1H=UOD4+gf9B%q?c~`>8Pi!`s%E=?)vMnqyE7UbJTA8?YQTz`|iB=?)&e+ z2QU2a#Pj~c4}K)C{PN5<@BH)7M=$;K)K_o)_1HuILkf6g@BR1ShcEtn_|)T(0s}gb zum1Y%w@$if!7@P#mpp$un8!y4M~ QhB#z^5jJ24tpox9J9wk^i z$6c0G==IIY>d=6|d1<;`x9HTk+o7Y!ij2$GR+%Q5*4lxzWFvb9ve}lL0 zq*-I0G1Kd`G&(b8v&}PhFf=tZmcf8c*k(0qGS1|(Y`j(pE}d+&W-Aw zO`1lm*QT)6y@j@DsqV?H&6R<(T9LbjB1haP(an8JhI@V=td)TZ0jW}-MVGBP|nJ2NvgA^8LV00000EC2ui z01yBW000O7fPR90BMUh=I1dXWgMKS3ehWA{bpdNqQ4c4MkA5vB3?NQjU3yttcAJk2 zC2tBK4SPpS69Q6KDJvs5Z(%+G5ET_dXgg;eP=y#AU{nng6EPlUN=gY5068y9PY?}i zF=Zw-HEc;~C^&g-CK*}3IWW83jQ+EXMG$LZQVC8ACYC*&v{R1|)o3 za3SzTLF8zbPnP@%$uiz*~YOtD}A50MKqQh34O;0FZ) z5+oRzf+qyd88A}x=zxWS2oWEe&@c*P#-Beh0HBC-psRroaxTEQ+NW$E1U6)-m2u&Y K**<{*002Au*E*8` literal 0 HcmV?d00001 diff --git a/install/template/images/warning.gif b/install/template/images/warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a9a3fbc81a92247af96533dd91875fc1407899e GIT binary patch literal 588 zcmV-S0<--`Nk%w1VGsZg0OkMy{`>C!`|bYx^wpw1_1akU+Fbto@c#Si`|q;;{O{JI zKL7ps(~KMW?5zFz=KlKU!)ylUwm#*xOZC`N_~(@R>z?w~Sn$)2_Trk|p(*m$SN{6! z)t5oaeID@AjLCNm>%mR?^27GrT>kv>^x9kW)=>4^T=m_K_S;(Mw>k9LSM=P7?Z;r+ zn!%@z}zW@ID?!{30@3p~b1M0m%`t7aq)>QP|UjF;@_1RSX^T*wyGwQug z_1ID0q$}~%h2617_S$0Y$yf2$o%!jM`Rl6Bg%pl)$`bZ=CnWa z*jMYxfd2gR@X~?!=b_Pw8}!;;{`>6o*<9jMFa$4ITk8VKBydEBL<8R0RR#vNRTi<05l`w abWr0WN`^Kq@bqAi1;&Ru5R7mL1OPku;!|e; literal 0 HcmV?d00001 diff --git a/install/template/images/wrapper.gif b/install/template/images/wrapper.gif new file mode 100644 index 0000000000000000000000000000000000000000..d51dc8b00efbccf8f026af66ce2d7505de869297 GIT binary patch literal 348 zcmZ?wbhEHbyu!@LaFu}}D7nxzB*8m6!zU)wB{<$UHp?j>#yK!HFfrdRF2^}2&NCv_ zEi} + + + MyAAC - <?php echo $locale['installation']; ?> + + + +
    + + + +
    + + + +
    + ' . $locale['step_' . $step . '_title'] . '

    h%UKgFB7^KQO9&96M^ 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 LwK1fr#{>TZG(;*{ literal 0 HcmV?d00001 diff --git a/images/screenshots/demon_thumb.gif b/images/screenshots/demon_thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..52fefa0c35f7bf58822fcd8096e75408116671aa GIT binary patch literal 14628 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 Pu}&Z@V%kj=CI)K&O7cC% literal 0 HcmV?d00001 diff --git a/images/smileys/icon_biggrin.gif b/images/smileys/icon_biggrin.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3527723c6d8a0ddfa7ca0bfe1ab8fce0055918c GIT binary patch literal 172 zcmZ?wbhEHbgxLc6$23b2ZD19|4%af-@@>3F2nzSlmGt}{{R2@|NpQ5 zKLsg(0L7myj0_CC3_2h#$P5OS$PJ#HS#x(>T`Hg?&Q{P6{IT@*|fe Qt&nb$oR(_V$-rO@0AZ~_>i_@% literal 0 HcmV?d00001 diff --git a/images/smileys/icon_confused.gif b/images/smileys/icon_confused.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c49e06983f1fff4bc0834b4d86ce39b8a36a914 GIT binary patch literal 171 zcmZ?wbhEHbZXiyV-#U P9L#x)b-Z(h7#XYqI2k)k literal 0 HcmV?d00001 diff --git a/images/smileys/icon_cool.gif b/images/smileys/icon_cool.gif new file mode 100644 index 0000000000000000000000000000000000000000..cead0306c0e38e57bdb0cc85a407b995dcbdc656 GIT binary patch literal 172 zcmZ?wbhEHb+|z`)C(1LA_rU|@;d;3=6kcSq>7bCTj>1sqIsoCSRx)8`fJ$~w+{ zJX`yX^?~=R4m2(o_)+HS{ItMiUIk0)fwE>-?dDgxjscmQ{AM&TEaGA7z8`VSO88#> SHjRW8(oK@nQq4LU7_0%kd_$xF literal 0 HcmV?d00001 diff --git a/images/smileys/icon_cry.gif b/images/smileys/icon_cry.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d54b1f994bb20c2a17c6e9e53edb39e0444b380 GIT binary patch literal 498 zcmZ?wbhEHbivPL&TtkAL9RpmA^bD98ftnS6varfA2r%e?3<5cWfi*@! zrOPq0Pa{O{R3VSL)CLZwJI;bVj@ow|9P^f2{b_KV;g#sD#JTIhK{X4eRSZoFOA4&E zE?xGWjgRM;Ia^8kzR>%TOS23r6eRl<`~6;g|7yg@*31^DX`|+%tO&MH1Y{u#11keN z5Hhd|DyTR-@tBu#X^wBxK7*WjP8?uWTo6?pKs7*@va%&Sa#%9C1z8HDof#;_rJ&H~ zFsWx*ry9h3B%L5>ZUqL1B|!6=oIFuX25Dyj%JU{%Vn~@hA!8Mj(`_aU6Ueh0) literal 0 HcmV?d00001 diff --git a/images/smileys/icon_doubt.gif b/images/smileys/icon_doubt.gif new file mode 100644 index 0000000000000000000000000000000000000000..fd7903b1916153b048ab996bef81125c97179b9a GIT binary patch literal 990 zcmcgrT}YEr7=FIZ>YJ@LPgZ7DQ;H1w5xUV5SwAzS5HXX=E;O`2ghmLZYm(J;MNocV ztVN(@*hP?r=3mAX?FUOs?B8lxxiw2m6Se$!JDb{7*S#0-dCqyy^FGgc;cSbKjf_gy zK!YNHo`K$g-hp~SA3-kA7f>Il8FU}?Bau2lPSCG98ZW1xIW!naZ{f0o?x4Q{^fiR~ zHRORjRwa*C$nB6v3h7%I4Q`+ZpiWRLXduE}26_bQSNFAPJ&lmtK*Jg2291``h=~T) z(!eUu<5+qM>H&?}=`QF6XlNIW9HHR@^kaMf$66Y@=>AYcza4TXJnfP6O-GGzKMbc& z+y?8bhWq_pdJbygitAjLx%mVdN}&Xc{q7H}^1`hIUgIT(yCo-pYv~6McZp zSua7aVK5lLXF|mD{|RQ+DzKd8O#u5?Znx}2v33T_E$8YiFQ<4QNKzSXpBz%mAt`1* z6e2TMGxJ%%sNB(%Um6DldDFw1pv6=v3P16&c%GINBaUmI-O%}nYkOZq`c-{>O($A#k0 zp9|*3K^e{RzO%eBfOnqDPISMjcLFM}fH$}S#Uz@_f_LTDln-h-ce*498#AZ39Cz>w zzLK!#&;^dC+IqRFfX*kuRb}Z1(b1fYotE*k=^jwS*ZlAPpCEMHPsvA*)!wT2Pe5!$ zy%>1?T3T~~SRdG0oE~4YbXGuCXqT>VUSPbv(sm`YbitB2x1$rg3Qk(q%q+}FuG^Af z)oxaw5^rVdx2;JIxlvkW*(xYf{T!mBTvxav+@2j3p?6$>;mr4Nw{sI)w$Q%0B+PQZ z=)_`aZ(2i1(JakM{|0MU3kt;b8BMbis(H~L6GkG)!6D3dZopxnjhTyXoU_N{{S0DVN3u3 literal 0 HcmV?d00001 diff --git a/images/smileys/icon_doubt2.gif b/images/smileys/icon_doubt2.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb4b70b662f3102fc515a4e1a0598d892088de77 GIT binary patch literal 992 zcmcgrT}YEr7=E^yezWD~X_T0iiIzb>Qa73sOIvA02wB+AMTS;H&pBnfjU9oGN}vX2K{WLNeBJNr;$W@i$Oc+HioJ}U!rJ8 zNnVH(b>eun_zIU5d4JUZ2K#xE}ih&N5w*_Jc=zA`CK;t&@>1lWs z4KMdT-b7D9y`Tv@-37e>jqN1g3HpAJzHJ@qZ=i{bo)0(ams9M9_hBM^jiwfO9>mi} zZi5Zf!}I}= zXqa9IocNR2tFy|rR{3^pJkAQ-T!k5;xdE;SsF)$as#z6Tkg`=!+0^ps)Sh4F>lN*rx1^mGcNT<+rmiSkGO?JP5b7x8tNpjxImg6pd zAyAU+K32~0bXz}H9^U;VvaTxU5W3p3u){Q2HPZtM1e*Wd{}U{k43hEDV}-x!{}T}I zph-|)ySl&4C^V_>S#mOLi$cPWEa{0ZnXAsQ*H&D~tDLuR&aITp9^)C)%HWdxtj4rl zvno|_R=AO;*}O6B?$1dX#C+H<4v9`^>ec)mT=7Gvrx zEnZ;Vv%lF^8lqel+HCG=hf!GTC`(7X*?cMVlp{g~XL;+Ir8O?8Bh}ctcV4V!G_8G$ iDK0cyKALL`2})ly*L9#T6m!%uOS2AVuDx&?$$tQ?cwh+t literal 0 HcmV?d00001 diff --git a/images/smileys/icon_eek.gif b/images/smileys/icon_eek.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3978106a2da37441ed17c9d05383b367570d46 GIT binary patch literal 170 zcmZ?wbhEHbd`4m;$l6XN^_D8SRJJ2FugV_ z;@-1W`~Ak%x7W!T7_8VEVD?C1V$(vmHm-x7t|ENQXTMbHG-$9e9m-TqP;V|s+-sI@ SDB66dp*Gz_Y_|#%gEasOPe3vN literal 0 HcmV?d00001 diff --git a/images/smileys/icon_evil.gif b/images/smileys/icon_evil.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab1aa8e123fe263608d06126ce08c560ad419f97 GIT binary patch literal 236 zcmZ?wbhEHbgxLc6$23bKgaO@B*VYC4FCTM|KGy!A1Lx~^8f$G|7kJ& z%VnN6ZQB2*4FCVX1}P;4DE?$&WMB|r&;e-z*~!3~slec{BxBNqoiq9;sWfXDwJwx! zTfpypu*1~B&zIRcFi`x-!pOiN%b)||f$U^p%}h}5a*XWD2sb-X$e}K^frar-lVFcywmLVPpS#r! z1_#Bw>()y8Q=}6Xa7!$m)>9ItA-k>bRM`by3r4aoDCD!-THXQ zaD}Q`!Ef~@t%4VS^H`jpHe@qRnmW&T1rN_M_11z^Th4v=m-`t@{9)jl*%hj`?X=?-ZjNo`;ps^KL(j#_kB9f=ec)+o_WSBO9dIBL z0HfeX@EiCOoCkmT7y;+NQSdAHJIvfePJ)YVvAGac7vmmg`}khptdC9k)cHX!lyC@4 zor_F3mG8rxhL*m@=imo0UQX4{88A`H)LAA)Z30@RpTl7Ka&*wm^hN#|(XvmKSCt$C z-+-UMWCzC)?bD%Mc>=}|4T5R`Gk28PXKFvVbU}NoM{3b#5E+0r1-=G#Cwq^HDlWD% zbCa|BiGzun*btNldfEp502hjwxyyHmP5YTT!+0sbU^#h-pCJeWNdW(*4*y4GIkN!> zz`OEpr4v{mUkP+|iL%_?8<5v*uIq63^or|juF8%6BZsQQZn56h*061LY4a}AzTk~5 zjZ$IxQB$5|wFbpic4>#?gIO|4`8#EA(+P`X#F$@OX4oU!tM{HXnT@9m8;)%~AeXGQ zc=B4?4Mpqs7gWf{Hwn^GTH0Q7I9%wIPLl)om5{B)ZpX5v@qFitYM~gOM=vpYtLJLS Tn{#<4Zy&twE*=Y4II;ULF^Tel literal 0 HcmV?d00001 diff --git a/images/smileys/icon_idea.gif b/images/smileys/icon_idea.gif new file mode 100644 index 0000000000000000000000000000000000000000..a40ae0d7e8c870d3675c8975e3a6bb0a059f11ff GIT binary patch literal 176 zcmZ?wbhEHbgxLc6$23b2ZD19|4%af-@@?!ukgRQ4FCU4{{R2@|EEBy z*B}*Op!k!8k%57iK?lSGnZdvkyTOw)YwnKFWkE{fYz4;!=ddvOIHYqKtO`15eTQk+ zwr{=ctfC9V1Rm6}I;$2M@y*$pa`Z}#oqrI+!z(?kVh8VTo6X#$!E$I32lMi<45x(( UGxi&cHs4b?vq7goSdhUQ00}uk)&Kwi literal 0 HcmV?d00001 diff --git a/images/smileys/icon_kaddi.gif b/images/smileys/icon_kaddi.gif new file mode 100644 index 0000000000000000000000000000000000000000..1410f7f1e1d73a5a776f5f3ff93501d0f7964128 GIT binary patch literal 991 zcmeH`-Ahve7{(v>s?n zQ3T2$m=t&uR8SZ=#EGIIeGq6tUpQeqo!QK#IIF|c)^&e^FE77~=ec@+@E!}b_z!i6 z5Ydau1cSj*AeTVyKGXr^2cbSj_8GKcopTN)H7pN~i+O(f@Uz~z9R3Ub CNYFX} literal 0 HcmV?d00001 diff --git a/images/smileys/icon_lol.gif b/images/smileys/icon_lol.gif new file mode 100644 index 0000000000000000000000000000000000000000..374ba150fb238d6a33605bb26e86d4449625a46c GIT binary patch literal 336 zcmZ?wbhEHbgxLc6$23b2ZD19|4%af-@@>3F2n!7!vFtG{{R2@|NpQ5 zKLsg(0LA~@ey$E)D;vwK1$ZJE z)->GK{b0hvv^Z;7;HB1zIS=v}c`BF7qB`mkh55UYFL448CX~YJS?+%vC0^DXyTAT=mC2Y$ux)_YXI57TebiI literal 0 HcmV?d00001 diff --git a/images/smileys/icon_mrgreen.gif b/images/smileys/icon_mrgreen.gif new file mode 100644 index 0000000000000000000000000000000000000000..b54cd0f9469ae025d7b709f03432eebc30a615b8 GIT binary patch literal 349 zcmZ?wbhEHbF%wyNW~cLKD&UCI$nR5;ND%aoaG8jR+sH5 z;LGade6U~GQPko`gGJNAq7#;kr@G#2#;~znnVhs^*T0km#>C~4JR&=FdsEeR+|3R= Q;9xFbtmB<4#K>R`0GZ1@LjV8( literal 0 HcmV?d00001 diff --git a/images/smileys/icon_question.gif b/images/smileys/icon_question.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d072265bb9d7d5d4eeaaa9aadb44a49a60e5fe3 GIT binary patch literal 248 zcmZ?wbhEHbgxLc6~q5?4F69u{F}@0e+$F^zrz3jO@4oyp}v#>2=1R{ z`2YX-`F#xhd<^^7GyH$bps&p^e-cpewY&^Nd^p4X4Gi!1Fzlbske>!pj|LQfvM@3* zNHOSu#6fm4u$C@R>vD+fTM_1WrjSFOYeSph9VW&ehisimT`Ynp-iELv_k~jmS4OEzz h1Q^5k8{BNVn8hT-nI{@Cu+CwP)wEG_S5{=O1_1NkQKJ9= literal 0 HcmV?d00001 diff --git a/images/smileys/icon_razz.gif b/images/smileys/icon_razz.gif new file mode 100644 index 0000000000000000000000000000000000000000..29da2a2fccc79981bc54db7513ca6d2374592f9d GIT binary patch literal 176 zcmZ?wbhEHb^3h|5y0`zsdjqAOHXV zwXw1B|EEADAfWh@g^_`Qk3k2-0hz(T5_`c@GHdRQt4o8V#Kj6YnC2W7^l?<@Q2(%O z^|TpzE=L6K%vq%4Qv0AgI88 ZPHWn(3w4)`M4Rs!oY|mbDlEug4FCb$KH>lX literal 0 HcmV?d00001 diff --git a/images/smileys/icon_redface.gif b/images/smileys/icon_redface.gif new file mode 100644 index 0000000000000000000000000000000000000000..ad7628320c3d15756c84794c8c0523f1072da640 GIT binary patch literal 650 zcmZ?wbhEHb&Qw$Gs7{2#K|NnmWcSgp)ZKdDmF#NyN{%1+%|LxoV z&6x4L*vr+`_5YJ6|9^e`f9A~pR}4QI8vg%z`Rh8vzsC$emo5AMNBH0A=KudDKaP*T z>0!pe!0`X+%wGqqfegj}+zPv3R$%UgcxPlMx(u7qxxxfZd?$&YQ;PGndxWo3ZY ziH`8-T?`B&DNk$k=JGRs=w-6FQO@h2ko&aap$ji#VOF!1O><{wyHRCMkfx2Ai?Slv zYA%q~j0}tnyg^Qv|J?fJ`y}Jo`B}5IcZU0i%+^)m>vp{!Bqu6#)+xQyYu&8=mRY(7 z)}5aCNL5gG*%{+AHF>K87ridk_T^KXg3qiu^$yZP~SpxtUz5smy literal 0 HcmV?d00001 diff --git a/images/smileys/icon_rolleyes.gif b/images/smileys/icon_rolleyes.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7f5f2f4b18f8a141c7a5dd1e09ff106a2f9fa1e GIT binary patch literal 485 zcmZ?wbhEHbgxLc6$23bKgaO@B*Xvz|NqTp_`ikW|G&xq{~!PVSNQ)^ zpx|qe3NTRo&+X?L671|4;A*62z|05~RQ$=p%EiFTpaW6>GM0fQZi6Rh*4!PT(*&f% z*$TRZ<}@?I^CYG*?eW$Pd$isBan+(fO1gn0b6dW=x%w~q}~tKE&`I~ zWZ+_80zw8BmJOU2m9Ux1yJ3o3D&v+$ZG#t4ZLVMy3?Qu_ZQMY+8CYaDcq&S-H42Fh z{c)CE%Sn@EnS+n-#i)qLlhWcv5Vs)dU<2w9+u*4hy}}}Vq4ah~j;>ScENX^v3nduQ d4TmZP8gAjeGaoDCD!-THXQ zaD}Q`!Ef~@t%4VS^H`jpHe@qRnmW&T1rN_M_11z^Th4v=m-`t@{9)jl*%hj`TPpfq~*r7Dfi3RXQLZ$W8{LbFtQ6X_ bzp&cMhN-Bq*@!WoHQrEDOU*@Dk--`OET>q6 literal 0 HcmV?d00001 diff --git a/images/smileys/icon_smile.gif b/images/smileys/icon_smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b1f6d30449c976f49a4ff4f55558156a7084732 GIT binary patch literal 174 zcmZ?wbhEHb3F2nzSlmGt}{tp7jjg5`} z|9}1eDNqRrDE?$&WMJT9&;fBkW-zcsU+|R7ntLO3**QsZu>uaJIn9DTj_MrhAC|2y zn^DM@#l<(@zDcWq`B+oyDaGR~0+SdoFXD`_(PqAxy<2o0Q>0^(jhH~$tb+>(~Mkip?iSJVU!i155M;PsyygH$s=4lN1*#;9#25Ea>CN&heak$?CEh zA7(bsN;gxLc6$23bKgaNIF2n!7!vD80{0DM@;NRr`CxMLP|FjsU zO`B$HZ2T{m`TzgdAk{j*8D$QDUE*nK$ z7w|KG>@aokb7%R&!0WI`LE+V`jZbtHGVEq^HDzd8gshBhJhWk{9N&@6Gj#R{?N7d_ u@Ss3Q_U6Qmr`{j;vSH$AZf0`Va5JoNi_%bKV4KJmrQFw{HdRBB!5RP#AxjVd literal 0 HcmV?d00001 diff --git a/images/smileys/icon_wink.gif b/images/smileys/icon_wink.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1482880421dde677d3302940aa875ff22a11b06 GIT binary patch literal 170 zcmZ?wbhEHba9D@n#Zhbsv zutHU>;J1F0R>6zE2`tV}8xE^#?@bGklrZsUYAp!;dbG*vY{CM88Jk-qvwbqQUtQFY Pm?x1IA$CiJiNP8Goi0B( literal 0 HcmV?d00001 diff --git a/images/sorcerer.png b/images/sorcerer.png new file mode 100644 index 0000000000000000000000000000000000000000..1d83dafaa35b030a34dc0903831d8d1a0d56fca3 GIT binary patch literal 34685 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 literal 0 HcmV?d00001 diff --git a/images/under_construction.jpg b/images/under_construction.jpg new file mode 100644 index 0000000000000000000000000000000000000000..060e1c4f9e50004c62ba6c504570db6162c6173b GIT binary patch literal 75503 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

    '; + else + echo '

    ' . $locale['step_' . $step] . '

    '; + echo $content; + ?> + + +
    + + + + + + + \ No newline at end of file diff --git a/plugins/.htaccess b/plugins/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/plugins/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/system/.htaccess b/system/.htaccess new file mode 100644 index 00000000..dcd95120 --- /dev/null +++ b/system/.htaccess @@ -0,0 +1,2 @@ +Options -Indexes +Deny from all \ No newline at end of file diff --git a/system/cache/.htaccess b/system/cache/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/system/cache/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/system/compat_pages.php b/system/compat_pages.php new file mode 100644 index 00000000..4b3b3ad1 --- /dev/null +++ b/system/compat_pages.php @@ -0,0 +1,41 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +switch($page) +{ + case 'whoisonline': + $page = 'online'; + break; + + case 'latestnews': + $page = 'news'; + break; + + case 'tibiarules': + $page = 'rules'; + break; + + case 'killstatistics': + $page = 'lastkills'; + break; + + case 'buypoints': + $page = 'points'; + break; + + case 'shopsystem': + $page = 'gifts'; + break; + + default: + break; +} +?> diff --git a/system/counter.php b/system/counter.php new file mode 100644 index 00000000..00402cf4 --- /dev/null +++ b/system/counter.php @@ -0,0 +1,52 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +define('COUNTER_SYNC', 10); // how often counter is synchronized with database (each x site refreshes) + +$views_counter = 1; // default value, must be here! +if($cache->enabled()) +{ + $value = 0; + if(!$cache->fetch('views_counter', $value)) + { + $value = 0; + if(fetchDatabaseConfig('views_counter', $value)) + $views_counter = $value; + else + registerDatabaseConfig('views_counter', 1); // save in the database + } + else + $views_counter = $value; + + $cache->set('views_counter', ++$views_counter, 60 * 60); + if(($views_counter % COUNTER_SYNC) == 0) // sync with database + updateDatabaseConfig('views_counter', $views_counter); +/* + { + $cache->set('views_counter', 1); + + $value = 0; + if(fetchDatabaseConfig('views_counter', $value)) + $views_counter += $value; + }*/ +} +else +{ + $value = 0; + if(!fetchDatabaseConfig('views_counter', $value)) + registerDatabaseConfig('views_counter', 1); // save in the database + else + { + $views_counter = $value + 1; + updateDatabaseConfig('views_counter', $views_counter); // update counter + } +} +?> diff --git a/system/countries.conf.php b/system/countries.conf.php new file mode 100644 index 00000000..bac215c5 --- /dev/null +++ b/system/countries.conf.php @@ -0,0 +1 @@ + * @copyright 2017 MyAAC * @version 0.0.1 * @link http://my-aac.org */ defined('MYAAC') or die('Direct access not allowed!'); $config['countries'] = array ( 'af' => 'Afghanistan', 'al' => 'Albania', 'dz' => 'Algeria', 'as' => 'American Samoa', 'ad' => 'Andorra', 'ao' => 'Angola', 'ai' => 'Anguilla', 'aq' => 'Antarctica', 'ag' => 'Antigua and Barbuda', 'ar' => 'Argentina', 'am' => 'Armenia', 'aw' => 'Aruba', 'au' => 'Australia', 'at' => 'Austria', 'az' => 'Azerbaijan', 'bs' => 'Bahamas', 'bh' => 'Bahrain', 'bd' => 'Bangladesh', 'bb' => 'Barbados', 'by' => 'Belarus', 'be' => 'Belgium', 'bz' => 'Belize', 'bj' => 'Benin', 'bm' => 'Bermuda', 'bt' => 'Bhutan', 'bo' => 'Bolivia', 'ba' => 'Bosnia and Herzegovina', 'bw' => 'Botswana', 'bv' => 'Bouvet Island', 'br' => 'Brazil', 'io' => 'British Indian Ocean Territory', 'bn' => 'Brunei Darussalam', 'bg' => 'Bulgaria', 'bf' => 'Burkina Faso', 'bi' => 'Burundi', 'kh' => 'Cambodia', 'cm' => 'Cameroon', 'ca' => 'Canada', 'cv' => 'Cape Verde', 'ky' => 'Cayman Islands', 'cf' => 'Central African Republic', 'td' => 'Chad', 'cl' => 'Chile', 'cn' => 'China', 'cx' => 'Christmas Island', 'cc' => 'Cocos (Keeling) Islands', 'co' => 'Colombia', 'km' => 'Comoros', 'cg' => 'Congo', 'cd' => 'Congo, the Democratic Republic of the', 'ck' => 'Cook Islands', 'cr' => 'Costa Rica', 'ci' => 'Cote D\'Ivoire', 'hr' => 'Croatia', 'cu' => 'Cuba', 'cy' => 'Cyprus', 'cz' => 'Czech Republic', 'dk' => 'Denmark', 'dj' => 'Djibouti', 'dm' => 'Dominica', 'do' => 'Dominican Republic', 'ec' => 'Ecuador', 'eg' => 'Egypt', 'sv' => 'El Salvador', 'gq' => 'Equatorial Guinea', 'er' => 'Eritrea', 'ee' => 'Estonia', 'et' => 'Ethiopia', 'fk' => 'Falkland Islands (Malvinas)', 'fo' => 'Faroe Islands', 'fj' => 'Fiji', 'fi' => 'Finland', 'fr' => 'France', 'gf' => 'French Guiana', 'pf' => 'French Polynesia', 'tf' => 'French Southern Territories', 'ga' => 'Gabon', 'gm' => 'Gambia', 'ge' => 'Georgia', 'de' => 'Germany', 'gh' => 'Ghana', 'gi' => 'Gibraltar', 'gr' => 'Greece', 'gl' => 'Greenland', 'gd' => 'Grenada', 'gp' => 'Guadeloupe', 'gu' => 'Guam', 'gt' => 'Guatemala', 'gn' => 'Guinea', 'gw' => 'Guinea-Bissau', 'gy' => 'Guyana', 'ht' => 'Haiti', 'hm' => 'Heard Island and Mcdonald Islands', 'va' => 'Holy See (Vatican City State)', 'hn' => 'Honduras', 'hk' => 'Hong Kong', 'hu' => 'Hungary', 'is' => 'Iceland', 'in' => 'India', 'id' => 'Indonesia', 'ir' => 'Iran, Islamic Republic of', 'iq' => 'Iraq', 'ie' => 'Ireland', 'il' => 'Israel', 'it' => 'Italy', 'jm' => 'Jamaica', 'jp' => 'Japan', 'jo' => 'Jordan', 'kz' => 'Kazakhstan', 'ke' => 'Kenya', 'ki' => 'Kiribati', 'kp' => 'Korea, Democratic People\'s Republic of', 'kr' => 'Korea, Republic of', 'kw' => 'Kuwait', 'kg' => 'Kyrgyzstan', 'la' => 'Lao People\'s Democratic Republic', 'lv' => 'Latvia', 'lb' => 'Lebanon', 'ls' => 'Lesotho', 'lr' => 'Liberia', 'ly' => 'Libyan Arab Jamahiriya', 'li' => 'Liechtenstein', 'lt' => 'Lithuania', 'lu' => 'Luxembourg', 'mo' => 'Macao', 'mk' => 'Macedonia, the Former Yugoslav Republic of', 'mg' => 'Madagascar', 'mw' => 'Malawi', 'my' => 'Malaysia', 'mv' => 'Maldives', 'ml' => 'Mali', 'mt' => 'Malta', 'mh' => 'Marshall Islands', 'mq' => 'Martinique', 'mr' => 'Mauritania', 'mu' => 'Mauritius', 'yt' => 'Mayotte', 'mx' => 'Mexico', 'fm' => 'Micronesia, Federated States of', 'md' => 'Moldova, Republic of', 'mc' => 'Monaco', 'mn' => 'Mongolia', 'ms' => 'Montserrat', 'ma' => 'Morocco', 'mz' => 'Mozambique', 'mm' => 'Myanmar', 'na' => 'Namibia', 'nr' => 'Nauru', 'np' => 'Nepal', 'nl' => 'Netherlands', 'an' => 'Netherlands Antilles', 'nc' => 'New Caledonia', 'nz' => 'New Zealand', 'ni' => 'Nicaragua', 'ne' => 'Niger', 'ng' => 'Nigeria', 'nu' => 'Niue', 'nf' => 'Norfolk Island', 'mp' => 'Northern Mariana Islands', 'no' => 'Norway', 'om' => 'Oman', 'pk' => 'Pakistan', 'pw' => 'Palau', 'ps' => 'Palestinian Territory, Occupied', 'pa' => 'Panama', 'pg' => 'Papua New Guinea', 'py' => 'Paraguay', 'pe' => 'Peru', 'ph' => 'Philippines', 'pn' => 'Pitcairn', 'pl' => 'Poland', 'pt' => 'Portugal', 'pr' => 'Puerto Rico', 'qa' => 'Qatar', 're' => 'Reunion', 'ro' => 'Romania', 'ru' => 'Russian Federation', 'rw' => 'Rwanda', 'sh' => 'Saint Helena', 'kn' => 'Saint Kitts and Nevis', 'lc' => 'Saint Lucia', 'pm' => 'Saint Pierre and Miquelon', 'vc' => 'Saint Vincent and the Grenadines', 'ws' => 'Samoa', 'sm' => 'San Marino', 'st' => 'Sao Tome and Principe', 'sa' => 'Saudi Arabia', 'sn' => 'Senegal', 'cs' => 'Serbia and Montenegro', 'sc' => 'Seychelles', 'sl' => 'Sierra Leone', 'sg' => 'Singapore', 'sk' => 'Slovakia', 'si' => 'Slovenia', 'sb' => 'Solomon Islands', 'so' => 'Somalia', 'za' => 'South Africa', 'gs' => 'South Georgia and the South Sandwich Islands', 'es' => 'Spain', 'lk' => 'Sri Lanka', 'sd' => 'Sudan', 'sr' => 'Suriname', 'sj' => 'Svalbard and Jan Mayen', 'sz' => 'Swaziland', 'se' => 'Sweden', 'ch' => 'Switzerland', 'sy' => 'Syrian Arab Republic', 'tw' => 'Taiwan, Province of China', 'tj' => 'Tajikistan', 'tz' => 'Tanzania, United Republic of', 'th' => 'Thailand', 'tl' => 'Timor-Leste', 'tg' => 'Togo', 'tk' => 'Tokelau', 'to' => 'Tonga', 'tt' => 'Trinidad and Tobago', 'tn' => 'Tunisia', 'tr' => 'Turkey', 'tm' => 'Turkmenistan', 'tc' => 'Turks and Caicos Islands', 'tv' => 'Tuvalu', 'ug' => 'Uganda', 'ua' => 'Ukraine', 'ae' => 'United Arab Emirates', 'gb' => 'United Kingdom', 'us' => 'United States', 'um' => 'United States Minor Outlying Islands', 'uy' => 'Uruguay', 'uz' => 'Uzbekistan', 'vu' => 'Vanuatu', 've' => 'Venezuela', 'vn' => 'Viet Nam', 'vg' => 'Virgin Islands, British', 'vi' => 'Virgin Islands, U.s.', 'wf' => 'Wallis and Futuna', 'eh' => 'Western Sahara', 'ye' => 'Yemen', 'zm' => 'Zambia', 'zw' => 'Zimbabwe' ); ?> \ No newline at end of file diff --git a/system/data/.htaccess b/system/data/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/system/data/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/system/database.php b/system/database.php new file mode 100644 index 00000000..a2939e06 --- /dev/null +++ b/system/database.php @@ -0,0 +1,76 @@ +connect(POT::DB_MYSQL, + array( + 'host' => $config['database_host'], + 'user' => $config['database_user'], + 'password' => $config['database_password'], + 'database' => $config['database_name'] + ) + ); + } + catch(PDOException $error) { + die('ERROR: Cannot connect to MySQL database.
    ' . + 'Possible reasons:' . + '
      ' . + '
    • MySQL is not configured propertly in config.lua.
    • ' . + '
    • MySQL server is not running.
    • ' . + '
    '); + } + $db = POT::getInstance()->getDBHandle(); +?> \ No newline at end of file diff --git a/system/events.php b/system/events.php new file mode 100644 index 00000000..ad53dee9 --- /dev/null +++ b/system/events.php @@ -0,0 +1,61 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +class Event +{ + private $_name, $_type, $_callback; + + public function __construct($name, $type, $callback) { + $this->_name = $name; + $this->_type = $type; + $this->_callback = $callback; + } + + public function execute($params) + { + $ret = false; + if(is_callable($this->_callback)) + { + $tmp = $this->_callback; + $ret = $tmp($params); + } + + return $ret; + } + + public function name() {return $this->_name;} + public function type() {return $this->_type;} +} + +class Events +{ + private static $_events = array(); + + public function register($event, $type = '', $callback = null) { + if(!($event instanceof Event)) + $event = new Event($event, $type, $callback); + + self::$_events[$event->type()][] = $event; + } + + public function trigger($type, $params = array()) + { + $ret = true; + if(isset(self::$_events[$type])) + { + foreach(self::$_events[$type] as $name => $event) + $ret = $event->execute($params); + } + + return $ret; + } +} +?> diff --git a/system/functions.php b/system/functions.php new file mode 100644 index 00000000..11753cce --- /dev/null +++ b/system/functions.php @@ -0,0 +1,1116 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +function success($message) { + echo '

    ' . $message . '

    '; +} +function warning($message) { + echo '

    ' . $message . '

    '; +} +function error($message) { + echo '

    ' . $message . '

    '; +} + +function longToIp($ip) +{ + $exp = explode(".", long2ip($ip)); + return $exp[3].".".$exp[2].".".$exp[1].".".$exp[0]; +} + +function generateLink($url, $name, $blank = false) { + return '' . $name . ''; +} + +function getLink($page, $name, $blank = false) { + return generateLink(getPageLink($page), $name, $blank); +} + +function getPageLink($page, $action = null) +{ + global $config; + + // TODO: tibiacom template is not working correctly with this + if($config['friendly_urls']) + return BASE_URL . $page . ($action ? '/' . $action : ''); + + return BASE_URL . '?subtopic=' . $page . ($action ? '&action=' . $action : ''); +} +function internalLayoutLink($page, $action = null) {return getPageLink($page, $action);} + +function getPlayerLink($name, $generate = true) +{ + global $ots, $config; + + if(is_numeric($name)) + { + $player = $ots->createObject('Player'); + $player->load(intval($name)); + if($player->isLoaded()) + $name = $player->getName(); + } + + $url = ''; + if($config['friendly_urls']) + $url = BASE_URL . 'characters/' . urlencode($name); + else + $url = BASE_URL . '?subtopic=characters&name=' . urlencode($name); + + if(!$generate) return $url; + return generateLink($url, $name); +} + +function getHouseLink($name, $generate = true) +{ + global $db, $config; + + if(is_numeric($name)) + { + $house = $db->query( + 'SELECT ' . $db->fieldName('name') . + ' FROM ' . $db->tableName('houses') . + ' WHERE ' . $db->fieldName('id') . ' = ' . (int)$name); + if($house->rowCount() > 0) + $name = $house->fetchColumn(); + } + + $url = ''; + if($config['friendly_urls']) + $url = BASE_URL . 'houses/' . urlencode($name); + else + $url = BASE_URL . '?subtopic=houses&page=view&house=' . urlencode($name); + + if(!$generate) return $url; + return generateLink($url, $name); +} + +function getGuildLink($name, $generate = true) +{ + global $db, $config; + + if(is_numeric($name)) + { + $guild = $db->query( + 'SELECT ' . $db->fieldName('name') . + ' FROM ' . $db->tableName('guilds') . + ' WHERE ' . $db->fieldName('id') . ' = ' . (int)$name); + if($guild->rowCount() > 0) + $name = $guild->fetchColumn(); + } + + $url = ''; + if($config['friendly_urls']) + $url = BASE_URL . 'guilds/' . urlencode($name); + else + $url = BASE_URL . '?subtopic=guilds&action=show&guild=' . urlencode($name); + + if(!$generate) return $url; + return generateLink($url, $name); +} + +function getItemImage($id, $count = 1) +{ + $file_name = $id; + if($count > 1) + $file_name .= '-' . $count; + + global $config; + return ' ' .$id . ''; +} + +function getFlagImage($country) +{ + if(!isset($country[0])) + return ''; + + global $config; + if(!isset($config['countries'])) + require(SYSTEM . 'countries.conf.php'); + + return ''; +} + +/** + * Performs a boolean check on the value. + * + * @param mixed $v Variable to check. + * @return bool Value boolean status. + */ +function getBoolean($v) +{ + if(!$v || !isset($v[0])) return false; + + if(is_numeric($v)) + return intval($v) > 0; + + $v = strtolower($v); + return $v == 'yes' || $v == 'true'; +} + +/** + * Generates random string. + * + * @param int $length Length of the generated string. + * @param bool $numeric Should numbers by used too? + * @param bool $special Should special characters by used? + * @return string Generated string. + */ +function generateRandomString($length, $lowCase = true, $upCase = false, $numeric = false, $special = false) +{ + $characters = ''; + if($lowCase) + $characters .= 'abcdefghijklmnopqrstuxyvwz'; + + if($upCase) + $characters .= 'ABCDEFGHIJKLMNPQRSTUXYVWZ'; + + if($numeric) + $characters .= '123456789'; + + if($special) + $characters .= '+-*#&@!?'; + + $characters_length = strlen($characters) - 1; + if($characters_length <= 0) return ''; + + $ret = ''; + for($i = 0; $i < $length; $i++) + $ret .= $characters[mt_rand(0, $characters_length)]; + + return $ret; +} + +/** + * Get forum sections + * + * @return array Forum sections. + */ +function getForumSections() +{ + global $db; + $sections = $db->query('SELECT `id`, `name`, `description`, `closed` FROM ' . TABLE_PREFIX . 'forum_sections WHERE hidden != 1 ORDER BY `ordering`;'); + if($sections) + return $sections->fetchAll(); + + return array(); +} + +/** + * Retrieves data from myaac database config. + * + * @param string $name Key. + * @param string &$value Reference where requested data will be set to. + * @return bool False if value was not found in table, otherwise true. + */ +function fetchDatabaseConfig($name, &$value) +{ + global $db; + + $query = $db->query('SELECT ' . $db->fieldName('value') . ' FROM ' . $db->tableName(TABLE_PREFIX . 'config') . ' WHERE ' . $db->fieldName('name') . ' = ' . $db->quote($name)); + if($query->rowCount() <= 0) + return false; + + $value = $query->fetchColumn(); + return true; +} + +/** + * Retrieves data from database config. + * + * $param string $name Key. + * @return string Requested data. + */ +function getDatabaseConfig($name) +{ + $value = ''; + fetchDatabaseConfig($name, $value); + return $value; +} + +/** + * Register a new key pair in myaac database config. + * + * @param string $name Key name. + * @param string $value Data to be associated with key. + */ +function registerDatabaseConfig($name, $value) +{ + global $db; + $db->insert(TABLE_PREFIX . 'config', array('name' => $name, 'value' => $value)); +} + +/** + * Updates a value in myaac database config. + * + * @param string $name Key name. + * @param string $value New data. + */ +function updateDatabaseConfig($name, $value) +{ + global $db; + $db->update(TABLE_PREFIX . 'config', array('value' => $value), array('name' => $name)); +} + +/** + * Encrypt text using method specified in config.lua (encryptionType or passwordType) + */ +function encrypt($str) +{ + global $config; + if(isset($config['database_salt'])) // otserv + $str .= $config['database_salt']; + + $encryptionType = $config['database_encryption']; + if(isset($encryptionType) && strtolower($encryptionType) != 'plain') + { + if($encryptionType == 'vahash') + return base64_encode(hash('sha256', $str)); + + return hash($encryptionType, $str); + } + + return $str; +} + +function tableExist($table) +{ + global $db, $config; + $query = $db->query("SELECT `TABLE_NAME` FROM `information_schema`.`tables` WHERE `TABLE_SCHEMA` = " . $db->quote($config['database_name']) . " AND `TABLE_NAME` = " . $db->quote($table) . ";"); + return $query->rowCount() > 0; +} + +function fieldExist($field, $table) +{ + global $db; + if(count($db->query("SHOW COLUMNS FROM `" . $table . "` LIKE '" . $field . "'")->fetchAll())) + return true; + + return false; +} + +//delete player with name +function delete_player($name) +{ + global $db; + $player = new OTS_Player(); + $player->find($name); + if($player->isLoaded()) { + try { $db->query("DELETE FROM player_skills WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM guild_invites WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_items WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_depotitems WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_spells WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_storage WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_viplist WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_deaths WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {} + try { $db->query("DELETE FROM player_deaths WHERE killed_by = '".$player->getId()."';"); } catch(PDOException $error) {} + $rank = $player->getRank(); + if($rank->isLoaded()) { + $guild = $rank->getGuild(); + if($guild->getOwner()->getId() == $player->getId()) { + $rank_list = $guild->getGuildRanksList(); + if(count($rank_list) > 0) { + $rank_list->orderBy('level'); + foreach($rank_list as $rank_in_guild) { + $players_with_rank = $rank_in_guild->getPlayersList(); + $players_with_rank->orderBy('name'); + $players_with_rank_number = count($players_with_rank); + if($players_with_rank_number > 0) { + foreach($players_with_rank as $player_in_guild) { + $player_in_guild->setRank(); + $player_in_guild->save(); + } + } + $rank_in_guild->delete(); + } + $guild->delete(); + } + } + } + $player->delete(); + return true; + } +} + +//delete guild with id +function delete_guild($id) +{ + $guild = new OTS_Guild(); + $guild->load($id); + if(!$guild->isLoaded()) + return false; + + $rank_list = $guild->getGuildRanksList(); + if(count($rank_list) > 0) { + $rank_list->orderBy('level'); + + global $db, $ots; + foreach($rank_list as $rank_in_guild) { + if(fieldExist('rank_id', 'players')) + $players_with_rank = $db->query('SELECT `id`, `rank_id` FROM `players` WHERE `rank_id` = ' . $rank->getId() . ' AND `deleted` = 0;'); + else + $players_with_rank = $db->query('SELECT `players`.`id` as `id`, `guild_membership`.`rank_id` as `rank_id` FROM `players`, `guild_membership` WHERE `guild_membership`.`rank_id` = ' . $rank_in_guild->getId() . ' AND `players`.`id` = `guild_membership`.`player_id` ORDER BY `name`;'); + + $players_with_rank_number = $players_with_rank->rowCount(); + if($players_with_rank_number > 0) { + foreach($players_with_rank as $result) { + $player = $ots->createObject('Player'); + $player->load($result['id']); + if(!$player->isLoaded()) + continue; + + $player->setRank(); + $player->save(); + } + } + $rank_in_guild->delete(); + } + } + + $guild->delete(); + return true; +} + +/** + * Validate character name. + * Name lenght must be 3-25 chars + * + * @param string $name Name to check + * @param string $error Error description will be placed here + * @return bool Is name valid? + */ +function check_name($name, &$error = '') +{ + if(!isset($name[0])) + { + $error = 'Please enter character name.'; + return false; + } + + $length = strlen($name); + if($length < 3) + { + $error = 'Character name is too short. Min. lenght 3 characters.'; + return false; + } + + if($length > 25) + { + $error = 'Character name is too long. Max. lenght 25 characters.'; + return false; + } + + if(strspn($name, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- [ ] '") != $length) + { + $error = 'Invalid name format. Use only A-Z.'; + return false; + } + + return preg_match("/[A-z ']{1,25}/", $name); +} + +/** + * Validate account name + * Name lenght must be 3-32 chars + * + * @param string $name Account name to check + * @param string $error Error description will be placed here + * @return bool Is account name valid? + */ +function check_account_name($name, &$error = '') +{ + if(!isset($name[0])) + { + $error = 'Please enter an account name.'; + return false; + } + + $length = strlen($name); + if($length < 3) + { + $error = 'Account name is too short (min. 3 chars).'; + return false; + } + + if($length > 32) + { + $error = 'Account name is too long (max. 32 chars).'; + return false; + } + + if(strspn($name, "QWERTYUIOPASDFGHJKLZXCVBNM0123456789") != $length) + { + $error = 'Invalid account name format. Use only A-Z and numbers 0-9.'; + return false; + } + + return preg_match("/[A-Z0-9]/", $name); +} + +//is it valid nick for new char? +function check_name_new_char($name) +{ + global $db, $config; + + $name_lower = strtolower($name); + + $first_words_blocked = array('admin ', 'administrator ', 'gm ', 'cm ', 'god ','tutor ', "'", '-'); + foreach($first_words_blocked as $word) + { + if($word == substr($name_lower, 0, strlen($word))) + return false; + } + + if(substr($name_lower, -1) == "'" || substr($name_lower, -1) == "-") + return false; + + if(substr($name_lower, 1, 1) == ' ') + return false; + + if(substr($name_lower, -2, 1) == " ") + return false; + + if(strtolower($config['lua']['serverName']) == $name_lower) + return false; + + $names_blocked = array('admin', 'administrator', 'gm', 'cm', 'god', 'tutor'); + foreach($names_blocked as $word) + { + if($word == $name_lower) + return false; + } + + $name_length = strlen($name_lower); + for($i = 0; $i < $name_length; $i++) + { + if(isset($name_lower[$i - 1]) && $name_lower[$i - 1] == ' ' && isset($name_lower[$i + 1]) && $name_lower[$i + 1] == ' ') + return false; + } + + $words_blocked = array('admin', 'administrator', 'gamemaster', 'game master', 'game-master', "game'master", '--', "''","' ", " '", '- ', ' -', "-'", "'-", 'fuck', 'sux', 'suck', 'noob', 'tutor'); + foreach($words_blocked as $word) + { + if(!(strpos($name_lower, $word) === false)) + return false; + } + + for($i = 0; $i < $name_length; $i++) + { + if(isset($name_lower[$i]) && isset($name_lower[$i + 1]) && $name_lower[$i] == $name_lower[$i + 1] && isset($name_lower[$i + 2]) && $name_lower[$i] == $name_lower[$i + 2]) + return false; + } + + for($i = 0; $i < $name_length; $i++) + { + if(isset($name_lower[$i - 1]) && $name_lower[$i - 1] == ' ' && isset($name_lower[$i + 1]) && $name_lower[$i + 1] == ' ') + return false; + } + + if(isset($config['monsters'])) + { + if(in_array($name_lower, $config['monsters'])) + return false; + } + + $monsters = $db->query( + 'SELECT ' . $db->fieldName('name') . + ' FROM ' . $db->tableName(TABLE_PREFIX . 'monsters') . + ' WHERE ' . $db->fieldName('name') . ' LIKE ' . $db->quote($name_lower)); + if($monsters->rowCount() > 0) + return false; + + $spells_name = $db->query( + 'SELECT ' . $db->fieldName('name') . + ' FROM ' . $db->tableName(TABLE_PREFIX . 'spells') . + ' WHERE ' . $db->fieldName('name') . ' LIKE ' . $db->quote($name_lower)); + if($spells_name->rowCount() > 0) + return false; + + $spells_words = $db->query( + 'SELECT ' . $db->fieldName('words') . + ' FROM ' . $db->tableName(TABLE_PREFIX . 'spells') . + ' WHERE ' . $db->fieldName('words') . ' = ' . $db->quote($name_lower)); + if($spells_words->rowCount() > 0) + return false; + + if(isset($config['npc'])) + { + if(in_array($name_lower, $config['npc'])) + return false; + } + + if(strspn($name, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- '") != $name_length) + return false; + + return preg_match("/[A-z ']{3,28}/", $name); +} + +function check_rank_name($name) +{ + if(strspn($name, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789-[ ] ") != strlen($name)) + return false; + + return preg_match("/[A-z ]{1,32}/", $name); +} + +function check_guild_name($name) +{ + if(strspn($name, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789- ") != strlen($name)) + return false; + + return preg_match("/[A-z ]{3,32}/", $name); +} + +function check_password($pass) +{ + if(strspn($pass, "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890") != strlen($pass)) + return false; + + return preg_match("/[A-z0-9]{7,32}/", $pass); +} + +function check_mail($email) +{ + return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[A-z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email); + //return preg_match("/[A-z0-9._-]+@[A-z0-9-]+\.[A-z]{2,4}/", $email); +} + +function check_number($number) +{ + return preg_match ("/^([0-9]+)$/", $number); +} + +//################### DISPLAY FUNCTIONS ##################### +//return shorter text (news ticker) +function short_text($text, $limit) +{ + if(strlen($text) > $limit) + return substr($text, 0, strrpos(substr($text, 0, $limit), " ")).'...'; + + return $text; +} + +function news_place() +{ + global $template_path, $news_content; + + $news = ''; + if(PAGE == 'news') + { + //add tickers to site - without it tickers will not be showed + if(isset($news_content)) + $news .= $news_content; + + //featured article +/* $news .= '
    +
    +
    +
    +
    + Contentbox headline +
    +
    +
    +
    + Tutaj wpisz tytul
    + tutaj wpisz tresc newsa
    + zdjecie laduje sie w tibiacom/images/news/features.jpg
    + skad sie laduje mozesz zmienic linijke ponad komentarzem +
    +
    +
    +
    +
    +
    +
    ';*/ + } + + return $news; +} + +function output_errors($errors) +{ + global $template_path; +?> +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    The Following Errors Have Occurred:
    + $message) + echo $message . '
    '; + + echo '

    '; +} + +/** + * Template place holder + * + * Types: head_start, head_end, body_start, body_end, center_top + * + */ +function template_place_holder($type) +{ + global $template_place_holders; + $ret = ''; + + if(array_key_exists($type, $template_place_holders) && is_array($template_place_holders[$type])) + $ret = implode($template_place_holders[$type]); + + if($type == 'head_start') + $ret .= template_header(); + elseif($type == 'body_end') + $ret .= template_ga_code(); + + return $ret; +} + +/** + * Returns content to be used by templates. + */ +function template_header($is_admin = false) +{ + global $title_full, $config; + $charset = isset($config['charset']) ? $config['charset'] : 'utf-8'; + + $ret = ' + + + '; + if(!$is_admin) + $ret .= ' + ' . $title_full . ' + '; + + $ret .= ' + + + + + + +'; + if(admin()) + $ret .= ' + +'; + if($config['recaptcha_enabled']) + $ret .= ""; + return $ret; +} + +/** + * Returns footer content to be used by templates. + */ +function template_footer() +{ + global $visitors, $config, $views_counter; + $ret = ''; + if(admin()) + $ret .= generateLink(ADMIN_URL, 'Admin Panel', true); + + if($config['visitors_counter']) + { + $amount = $visitors->getAmountVisitors(); + $ret .= '
    Currently there ' . ($amount > 1 ? 'are' : 'is') . ' ' . $amount . ' visitor' . ($amount > 1 ? 's' : '') . '.'; + } + + if($config['views_counter']) + $ret .= '
    Page has been viewed ' . $views_counter . ' times.'; + + if(admin()) + $ret .= '
    Load time: ' . round(microtime(true) - START_TIME, 4) . ' seconds.'; + + if(isset($config['footer'][0])) + $ret .= '
    ' . $config['footer']; + + // please respect my work and help spreading the word, thanks! + return $ret . '
    ' . base64_decode('UG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vbXktYWFjLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPk15QUFDLjwvYT4='); +} + +function template_ga_code() +{ + global $config; + if(!isset($config['google_analytics_id'][0])) + return ''; + + return ' +'; +} + +function template_form() +{ + global $cache, $template_name; + if($cache->enabled()) + { + $tmp = ''; + if($cache->fetch('templates', $tmp)) { + $templates = unserialize($tmp); + } + else + { + $templates = get_templates(); + $cache->set('templates', serialize($templates), 120); + } + } + else + $templates = get_templates(); + + $options = ''; + foreach($templates as $key => $value) + $options .= ''; + + return '
    + + + '; +} + +function getStyle($i) +{ + global $config; + return is_int($i / 2) ? $config['darkborder'] : $config['lightborder']; +} + +$vowels = array("e", "y", "u", "i", "o", "a"); +function getCreatureName($killer, $showStatus = false, $extendedInfo = false) +{ + global $vowels, $ots, $config; + $str = ""; + if(is_numeric($killer)) + { + $player = $ots->createObject('Player'); + $player->load($killer); + if($player->isLoaded()) + { + $str .= ''; + if(!$showStatus) + return $str.''.$player->getName().''; + + $str .= ''.$player->getName().'
    '; + if($extendedInfo) { + $str .= '
    '.$player->getLevel().' '.$config['vocations'][$player->getVocation()].''; + } + return $str; + } + } + else + { + if($killer == "-1") + $players_rows .= "item or field"; + else + { + if(in_array(substr(strtolower($killer), 0, 1), $vowels)) + $players_rows .= "an "; + else + $players_rows .= "a "; + $players_rows .= $killer; + } + } + + return $players_rows; +} + +/** + * Find skill name using skill id. + * + * @param int $skillId Skill id. + * @param bool $suffix Should suffix also be added? + * @return string Skill name or 'unknown' if not found. + */ +function getSkillName($skillId, $suffix = true) +{ + switch($skillId) + { + case POT::SKILL_FIST: + { + $tmp = 'fist'; + if($suffix) + $tmp .= ' fighting'; + + return $tmp; + } + case POT::SKILL_CLUB: + { + $tmp = 'club'; + if($suffix) + $tmp .= ' fighting'; + + return $tmp; + } + case POT::SKILL_SWORD: + { + $tmp = 'sword'; + if($suffix) + $tmp .= ' fighting'; + + return $tmp; + } + case POT::SKILL_AXE: + { + $tmp = 'axe'; + if($suffix) + $tmp .= ' fighting'; + + return $tmp; + } + case POT::SKILL_DIST: + { + $tmp = 'distance'; + if($suffix) + $tmp .= ' fighting'; + + return $tmp; + } + case POT::SKILL_SHIELD: + return 'shielding'; + case POT::SKILL_FISH: + return 'fishing'; + case POT::SKILL__MAGLEVEL: + return 'magic level'; + case POT::SKILL__LEVEL: + return 'level'; + default: + break; + } + + return 'unknown'; +} + +/** + * Performs flag check on the current logged in user. + * Table in database: accounts, field: website_flags + * + * @param int @flag Flag to be verified. + * @return bool If user got flag. + */ +function hasFlag($flag) { + global $logged, $logged_flags; + return $logged && ($logged_flags & $flag) == $flag; +} +/** + * Check if current logged user have got admin flag set. + */ +function admin() { + return hasFlag(FLAG_ADMIN) || superAdmin(); +} +/** + * Check if current logged user have got super admin flag set. + */ +function superAdmin() { + return hasFlag(FLAG_SUPER_ADMIN); +} + +/** + * Format experience according to its amount (natural/negative number). + * + * @param int $exp Experience amount. + * @param bool $color Should result be colorized? + * @return string Resulted message attached in tag. + */ +function formatExperience($exp, $color = true) +{ + $ret = ''; + if($color) + { + $ret .= ' 0) + $ret .= ' color="green">'; + elseif($exp < 0) + $ret .= ' color="red">'; + else + $ret .= '>'; + } + + $ret .= '' . ($exp > 0 ? '+' : '') . number_format($exp) . ''; + if($color) + $ret .= ''; + + return $ret; +} + +function get_locales() +{ + $ret = array(); + + $path = LOCALE; + foreach(scandir($path) as $file) + { + if($file[0] != '.' && $file != '..' && is_dir($path . $file)) + $ret[] = $file; + } + + return $ret; +} + +function get_browser_languages() +{ + $ret = array(); + + $acceptLang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; + if(!isset($acceptLang[0])) + return $ret; + + $languages = strtolower($acceptLang); + // $languages = 'pl,en-us;q=0.7,en;q=0.3 '; + // need to remove spaces from strings to avoid error + $languages = str_replace(' ', '', $languages); + + foreach(explode(',', $languages) as $language_list) + $ret[] .= substr($language_list, 0, 2); + + return $ret; +} + +/** + * Generates list of templates, according to templates/ dir. + */ +function get_templates() +{ + $ret = array(); + + $path = TEMPLATES; + foreach(scandir($path) as $file) + { + if($file[0] != '.' && $file != '..' && is_dir($path . $file)) + $ret[] = $file; + } + + return $ret; +} + +function getWorldName($id) +{ + global $config; + foreach($config['worlds'] as $_id => $details) + { + if($id == $_id) + return $details['name']; + } + + return $config['lua']['serverName']; +} + +/** + * Mailing users. + * $config['mail_enabled'] have to be enabled. + * + * @param string $to Recipient email address. + * @param string $subject Subject of the message. + * @param string $body Message body in html format. + * @param string $altBody Alternative message body, plain text. + * @return bool PHPMailer status returned (success/failure). + */ +function _mail($to, $subject, $body, $altBody = '', $add_html_tags = true) +{ + global $mailer, $config; + if(!$mailer) + { + require(SYSTEM . 'libs/phpmailer/class.phpmailer.php'); + $mailer = new PHPMailer(); + } + + $signature_html = ''; + if(isset($config['mail_signature']['html'])) + $signature_html = $config['mail_signature']['html']; + + if($add_html_tags && isset($body[0])) + $body = '' . $body . '

    ' . $signature_html . ''; + else + $body .= '

    ' . $signature_html; + + if($config['smtp_enabled']) + { + $mailer->IsSMTP(); + $mailer->Host = $config['smtp_host']; + $mailer->Port = (int)$config['smtp_port']; + $mailer->SMTPAuth = $config['smtp_auth']; + $mailer->Username = $config['smtp_user']; + $mailer->Password = $config['smtp_pass']; + } + else + $mailer->IsMail(); + + $mailer->IsHTML(isset($body[0]) > 0); + $mailer->From = $config['mail_address']; + $mailer->Sender = $config['mail_address']; + $mailer->CharSet = 'utf-8'; + $mailer->FromName = $config['lua']['serverName']; + $mailer->Subject = $subject; + $mailer->AddAddress($to); + $mailer->Body = $body; + + $signature_plain = ''; + if(isset($config['mail_signature']['plain'])) + $signature_plain = $config['mail_signature']['plain']; + + if(isset($altBody[0])) + $mailer->AltBody = $altBody . $signature_plain; + + return $mailer->Send(); +} + +function convert_bytes($size) +{ + $unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb'); + return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i]; +} + +function log_append($file, $str) +{ + $f = fopen(LOGS . $file, 'a'); + fwrite($f, $str . PHP_EOL); + fclose($f); +} + +function load_config_lua($filename) +{ + global $config; + + $config_file = $filename; + if(!@file_exists($config_file)) + die('ERROR: Cannot find ' . $filename . ' file.'); + + $tempFile = tempnam('/tmp', 'lua'); + $file = fopen($tempFile, 'w'); + if(!$file) die('Cannot load server config!'); + + // TODO: new parser that will also load dofile() includes + + // strip lua comments to prevent parsing errors + fwrite($file, preg_replace('/(-)(-) (.*)/', '', file_get_contents($config_file))); + fclose($file); + + $result = array_merge(parse_ini_file($tempFile, true), isset($config['lua']) ? $config['lua'] : array()); + @unlink($tempFile); + return $result; +} +?> diff --git a/system/init.php b/system/init.php new file mode 100644 index 00000000..f2fa6ff5 --- /dev/null +++ b/system/init.php @@ -0,0 +1,154 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +// load configuration +require_once(BASE . 'config.php'); +if(file_exists(BASE . 'config.local.php')) // user customizations + require(BASE . 'config.local.php'); + +// take care of trailing slash at the end +if($config['server_path'][strlen($config['server_path']) - 1] != '/') + $config['server_path'] .= '/'; + +// enable gzip compression if supported by the browser +if($config['gzip_output'] && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) && function_exists('ob_gzhandler')) + ob_start('ob_gzhandler'); + +// cache +require_once(SYSTEM . 'libs/cache.php'); +$cache = Cache::getInstance($config['cache_engine'], $config['cache_prefix']); + +// trim values we receive +if(isset($_POST)) +{ + foreach($_POST as $var => $value) { + if(is_string($value)) { + $_POST[$var] = trim($value); + } + } +} +if(isset($_GET)) +{ + foreach($_GET as $var => $value) { + if(is_string($value)) + $_GET[$var] = trim($value); + } +} +if(isset($_REQUEST)) +{ + foreach($_REQUEST as $var => $value) { + if(is_string($value)) + $_REQUEST[$var] = trim($value); + } +} + +// load otserv config file +$tmp = ''; +if($cache->enabled() && $cache->fetch('config_lua', $tmp)) { + $config['lua'] = unserialize($tmp); + /*if(isset($config['lua']['myaac'][0])) { + foreach($config['lua']['myaac'] as $key => $value) + $config[$key] = $value; + }*/ +} +else +{ + $config['lua'] = load_config_lua($config['server_path'] . 'config.lua'); + + // cache config + if($cache->enabled()) + $cache->set('config_lua', serialize($config['lua']), 120); +} +unset($tmp); + +if(isset($config['lua']['servername'])) + $config['lua']['serverName'] = $config['lua']['servername']; + +// localize data/ directory +if(isset($config['lua']['dataDirectory'][0])) +{ + $tmp = $config['lua']['dataDirectory']; + if($tmp[0] != '/') + $tmp = $config['server_path'] . $tmp; + + if($tmp[strlen($tmp) - 1] != '/') // do not forget about trailing slash + $tmp .= '/'; +} +else if(isset($config['lua']['data_directory'][0])) +{ + $tmp = $config['lua']['data_directory']; + if($tmp[0] != '/') + $tmp = $config['server_path'] . $tmp; + + if($tmp[strlen($tmp) - 1] != '/') // do not forget about trailing slash + $tmp .= '/'; +} +else + $tmp = $config['server_path'] . 'data/'; + +$config['data_path'] = $tmp; +unset($tmp); + +// POT +require_once(SYSTEM . 'libs/pot/OTS.php'); +$ots = POT::getInstance(); +require_once(SYSTEM . 'database.php'); + +// load vocation names +$tmp = ''; +if($cache->enabled() && $cache->fetch('vocations', $tmp)) { + $config['vocations'] = unserialize($tmp); +} +else { + $vocations = new DOMDocument(); + $path_extra = 'XML/'; + if($config['otserv_version'] >= OTSERV_FIRST && $config['otserv_version'] <= OTSERV_LAST) + $path_extra = ''; + + $vocations->load($config['data_path'] . $path_extra . 'vocations.xml'); + + if(!$vocations) + die('ERROR: Cannot load vocations.xml file.'); + + $config['vocations'] = array(); + foreach($vocations->getElementsByTagName('vocation') as $vocation) { + $id = $vocation->getAttribute('id'); + if($id == $vocation->getAttribute('fromvoc')) + $config['vocations'][$id] = $vocation->getAttribute('name'); + else + $config['vocations'][$id + 4] = $vocation->getAttribute('name'); + } + + if($cache->enabled()) { + $cache->set('vocations', serialize($config['vocations']), 120); + } +} +unset($tmp, $id, $vocation); + +// load towns +/* TODO: doesnt work +ini_set('memory_limit', '-1'); +$tmp = ''; + +if($cache->enabled() && $cache->fetch('towns', $tmp)) { + $config['towns'] = unserialize($tmp); +} +else { + $towns = new OTS_OTBMFile(); + $towns->loadFile('D:/Projekty/opentibia/wodzislawski/data/world/wodzislawski.otbm'); + + $config['towns'] = $towns->getTownsList(); + if($cache->enabled()) { + $cache->set('towns', serialize($config['towns']), 120); + } +} +*/ +?> diff --git a/system/item.php b/system/item.php new file mode 100644 index 00000000..c756bded --- /dev/null +++ b/system/item.php @@ -0,0 +1,62 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +require_once(SYSTEM . 'libs/items.php'); + +Items::$files = array( + 'otb' => SYSTEM . 'data/items.otb', + 'spr' => SYSTEM . 'data/Tibia.spr', + 'dat' => SYSTEM . 'data/Tibia.dat' +); +Items::$outputDir = BASE . 'images/items/'; + +function generateItem($id = 100, $count = 1) { + Items::generate($id, $count); +} + +function itemImageExists($id, $count = 1) +{ + if(!isset($id)) + die('ERROR - itemImageExists: id has been not set!'); + + $file_name = $id; + if($count > 1) + $file_name .= '-' . $count; + + $file_name = Items::$outputDir . $file_name . '.gif'; + return file_exists($file_name); +} + +function outputItem($id = 100, $count = 1) +{ + if(!(int)$count) + $count = 1; + + if(!itemImageExists($id, $count)) + { + //echo 'plik istnieje'; + Items::generate($id, $count); + } + + $expires = 60 * 60 * 24 * 30; // 30 days + header('Content-type: image/gif'); + header('Cache-Control: public'); + header('Cache-Control: maxage=' . $expires); + header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT'); + + $file_name = $id; + if($count > 1) + $file_name .= '-' . $count; + + $file_name = Items::$outputDir . $file_name . '.gif'; + readfile($file_name); +} +?> diff --git a/system/libs/.htaccess b/system/libs/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/system/libs/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/system/libs/cache.php b/system/libs/cache.php new file mode 100644 index 00000000..01192bd9 --- /dev/null +++ b/system/libs/cache.php @@ -0,0 +1,69 @@ + + * @author Mark Samman (Talaturen) + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Cache +{ + static private $instance; + + static public function getInstance($engine = '', $prefix = '') + { + if(!self::$instance) { + switch(strtolower($engine)) { + case 'apc': + require('cache_apc.php'); + self::$instance = new Cache_APC($prefix); + break; + + case 'eaccelerator': + require('cache_eaccelerator.php'); + self::$instance = new Cache_eAccelerator($prefix); + break; + + case 'xcache': + require('cache_xcache.php'); + self::$instance = new Cache_XCache($prefix); + break; + + case 'file': + require('cache_file.php'); + self::$instance = new Cache_File($prefix, CACHE); + break; + + case 'auto': + self::$instance = self::getInstance(self::detect(), $prefix); + break; + + default: + self::$instance = new Cache(); + break; + } + } + + return self::$instance; + } + + static public function detect() + { + if(function_exists('apc_fetch')) + return 'apc'; + else if(function_exists('eaccelerator_get')) + return 'eaccelerator'; + else if(function_exists('xcache_get') && ini_get('xcache.var_size')) + return 'xcache'; + + return 'file'; + } + + public function enabled() {return false;} +} +?> diff --git a/system/libs/cache_apc.php b/system/libs/cache_apc.php new file mode 100644 index 00000000..09c27d40 --- /dev/null +++ b/system/libs/cache_apc.php @@ -0,0 +1,49 @@ + + * @author Mark Samman (Talaturen) + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Cache_APC +{ + private $prefix = ''; + private $enabled; + + public function __construct($prefix = '') + { + $this->prefix = $prefix; + $this->enabled = function_exists('apc_fetch'); + } + + public function set($key, $var, $ttl = 0) + { + $key = $this->prefix . $key; + apc_delete($key); + apc_store($key, $var, $ttl); + } + + public function get($key) + { + $tmp = ''; + if($this->fetch($key, $tmp)) + return $tmp; + + return ''; + } + + public function fetch($key, &$var) { + return ($var = apc_fetch($this->prefix . $key)) !== false; + } + + public function enabled() { + return $this->enabled; + } +} +?> diff --git a/system/libs/cache_eaccelerator.php b/system/libs/cache_eaccelerator.php new file mode 100644 index 00000000..e786d0cc --- /dev/null +++ b/system/libs/cache_eaccelerator.php @@ -0,0 +1,48 @@ + + * @author Mark Samman (Talaturen) + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Cache_eAccelerator +{ + private $prefix; + private $enabled; + + public function __construct($prefix = '') { + $this->prefix = $prefix; + $this->enabled = function_exists('eaccelerator_get'); + } + + public function set($key, $var, $ttl = 0) + { + $key = $this->prefix . $key; + eaccelerator_rm($key); + eaccelerator_put($key, $var, $ttl); + } + + public function get($key) + { + $tmp = ''; + if($this->fetch($key, $tmp)) + return $tmp; + + return ''; + } + + public function fetch($key, &$var) { + return ($var = eaccelerator_get($this->prefix . $key)) !== null; + } + + public function enabled() { + return $this->enabled; + } +} +?> diff --git a/system/libs/cache_file.php b/system/libs/cache_file.php new file mode 100644 index 00000000..5c6d35de --- /dev/null +++ b/system/libs/cache_file.php @@ -0,0 +1,62 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Cache_File +{ + private $prefix = ''; + private $dir = ''; + private $enabled; + + public function __construct($prefix = '', $dir = '') { + $this->prefix = $prefix; + $this->dir = $dir; + $this->enabled = (file_exists($this->dir) && is_dir($this->dir) && is_writable($this->dir)); + } + + public function set($key, $var, $ttl = 0) + { + $file = $this->_name($key); + file_put_contents($file, $var); + if($ttl != 0) + touch($file, time() + $ttl); + else + touch($file, time() + 24 * 60 * 60); + } + + public function get($key) + { + $tmp = ''; + if($this->fetch($key, $tmp)) + return $tmp; + + return ''; + } + + public function fetch($key, &$var) + { + $file = $this->_name($key); + if(!file_exists($file) || filemtime($file) < time()) + return false; + + $var = file_get_contents($file); + return true; + } + + public function enabled() { + return $this->enabled; + } + + private function _name($key) { + return sprintf("%s/%s%s", $this->dir, $this->prefix, sha1($key)); + } +} +?> diff --git a/system/libs/cache_xcache.php b/system/libs/cache_xcache.php new file mode 100644 index 00000000..b6cce50a --- /dev/null +++ b/system/libs/cache_xcache.php @@ -0,0 +1,54 @@ + + * @author Mark Samman (Talaturen) + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Cache_XCache +{ + private $prefix = ''; + private $enabled; + + public function __construct($prefix = '') { + $this->prefix = $prefix; + $this->enabled = function_exists('xcache_get') && ini_get('xcache.var_size'); + } + + public function set($key, $var, $ttl = 0) + { + $key = $this->prefix . $key; + xcache_unset($key); + xcache_set($key, $var, $ttl); + } + + public function get($key) + { + $tmp = ''; + if($this->fetch($key, $tmp)) + return $tmp; + + return ''; + } + + public function fetch($key, &$var) + { + $key = $this->prefix . $key; + if(!xcache_isset($key)) + return false; + + $var = xcache_get($key); + return true; + } + + public function enabled() { + return $this->enabled; + } +} +?> diff --git a/system/libs/data.php b/system/libs/data.php new file mode 100644 index 00000000..88cbb4d3 --- /dev/null +++ b/system/libs/data.php @@ -0,0 +1,45 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); + +class Data +{ + private $table = ''; + + public function __construct($table) { + $this->table = $table; + } + + public function get($where) + { + global $db; + return $db->select($this->table, $where); + } + + public function add($data) + { + global $db; + return $db->insert($this->table, $data); + } + + public function delete($data, $where) + { + global $db; + return $db->delete($this->table, $data, $where); + } + + public function update($data, $where) + { + global $db; + return $db->update($this->table, $data, $where); + } +} +?> diff --git a/system/libs/dwoo/.htaccess b/system/libs/dwoo/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/system/libs/dwoo/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/system/libs/dwoo/CHANGELOG b/system/libs/dwoo/CHANGELOG new file mode 100644 index 00000000..b7f2ff88 --- /dev/null +++ b/system/libs/dwoo/CHANGELOG @@ -0,0 +1,508 @@ +[2010-02-07] 1.1.1 ++ Added {optional} plugin that just prints an optional var without any + notice if it doesn't exist ++ Added Dwoo::setTemplate() for testing purposes mostly +* Fixed an {extends} parsing bug that prevented the use of single-quotes + around the parent template's filename +* Fixed a security issue, if you didn't use a custom compiler factory but + passed the compiler directly to the get method with autoEscape enabled, + the autoEscape was disabled in included templates - Thanks to Fabien + Potencier for notifying me. +* Fixed a bug in {safe} when using variable-variables it would sometimes + corrupt the var name resulting in blank output +* Fixed a bug when accessing array indices that contain a minus sign, it + is now possible to access those using {$var[index-foo]}, + {$var['index-foo']} or {$index="index-foo"} {$var[$index]} +* Fixed a bug in {tif} that didn't work when 0 was given as the true or + false value +* Fixed a bug when using the autoEscape feature with sub-templates (the + compiled sub-template couldn't access the dwoo charset property, + resulting in a fatal error) +* Fixed a property reading bug on objects that implemented __get but not + __isset, implementing __isset is however very much recommended +* Fixed a Dwoo_Data bug in the append method when the index didn't exist + yet it threw a notice +* Fixed a bug when accessing global vars from a sub-template +* Fixed a couple bugs in the {dynamic} plugin with regard to using plugins + within a dynamic block +* Fixed a compilation bug when using a PluginProxy with highly nested calls +* Fixed a {load_templates} bug, plugins used in external templates were not + loaded correctly, same for custom user plugins +* Cached templates now check the source template for modification before + outputting the cached version +* Removed a couple of @-operator calls to file_get_contents + +[2009-07-18] 1.1.0 +! BC Break: Dwoo::initGlobals() is only called once during the Dwoo object + construction. If you had overriden it and need to update global data + before each template is executed you should instead override + Dwoo::initRuntimeVars() and push stuff in the globals array there. Also + be aware that this means captured data, foreach values and so-on will + persist from a parent template to an included one (but the include's + changes will not be reflected on the parent), and from a template + to the next if you render several in series. ++ Added {template} plugin that allows you to define sub-templates and then + call them (works recursively too, good for menus and lists) ++ Added {load_templates} to load external sub-templates into your file ++ Allowed string concatenation assignments with {$foo.="bar"} ++ Allowed access of static properties as {Foo::$bar} ++ Plugins/Helpers that use a dynamic number of arguments through + func_get_args are now working since the compiler lets any arguments in + excess pass through ++ Adapters: CodeIgniter: the adapter by Stefan Verstege has been added to + core and he will be its maintainer from now on ++ Adapters: CakePHP: this adapter is now added to core and is designed to + work with CakePHP 1.2 +* Adapters: Zend: Denis Arh is now appointed maintainer of that part and + fixed a few things since 1.0.1 +* The include_path isn't altered anymore, hopefully saving some stat calls +* User classes extending Dwoo_Template_File are now supported better with + regard to includes - Thanks to the Kayako.com team for the patch +* Objects now act like arrays when you access non-existing properties on + them (i.e. it outputs a notice only if it's output straight, and none + when passed to a function) +* For can now iterate backwards if you input numbers, it won't work with + variables though +* Slight performance improvement with big inheritance trees +* No more double-slashes in template paths since this seemed to cause + slight performance issues +* Fixed a bug with parsing AND/OR keywords in conditionals when they were + followed by round brackets +* Fixed assignments not handling multi-line values correctly +* Fixed parameter parsing issue when a plugin name was all uppercased +* Fixed assignments failing with autoEscape enabled +* Fixed parsing of vars with string keys that was too greedy +* Fixed an optimization causing foreach/for/loop variables not being + accessible when the foreach/.. name was set dynamically +* Fixed parsing of comments that were on top of the file when there are + spaces at the end of it +* Dwoo_Template::$chmod is now enforced for directories as well (#18) +* Many new unit tests to improve code coverage and a bunch of bug fixes + that resulted, but I didn't really keep track of them + +[2008-12-24] 1.0.1 +* Direct assignments like {$foo = 5} now allow spaces around the operator +* Fixed a {foreach} bug with the implode argument +* Fixed modulo operator in if statements +* Fixed date_format handling of negative and small unix timestamps +* Fixed a weird reference bug with ZF and includes.. whatever but thanks + to Denis Arh for the patch + +[2008-10-23] 1.0.0 +! BC Break: Small one that probably won't affect anyone, but it makes the + PluginProxy feature much stronger. Basically if you used a custom one you + will get a fatal error and need to update it to conform to the new + IPluginProxy interface, that's it ++ Compiler: the modifier syntax (|foo) can now be applied on functions and on + complex variables i.e. {$obj->getStuff()|upper} or {lower('foo')|upper} ++ SmartyCompat: Added a {section} plugin but I strongly discourage using it, + it was really made to support legacy templates, since {for} doesn't have to + handle {section}-BC anymore, it has been cleaned up a lot and the last + $skip parameter has been dropped +* The core Dwoo class doesn't need writable compile/cache dirs in the + constructor anymore so you can provide custom ones later through + ->setCompile(/Cache)Dir - thanks to Denis Arh for the patch +* Adapters: Zend: major overhaul thanks to Denis Arh, templates files should + probably be moved in the scripts subfolder after this update though, and + the settings array has changed a bit, you will get warnings if you don't + update the code anyway +* Plugins: improved the dump plugin, it now displays object's properties + and optionally public methods (if the new show_methods arg is set to true) + - thanks to Stephan Wentz for the patch +* Adapters: Zend: Added parameters to provide a custom engine (extends Dwoo) + or a custom data class (extends Dwoo_Data) - thanks to Maxime Merian for + the patch +* Compiler: added Dwoo_Compiler->setNestedCommentsHandling(true) to enable + parsing of nested comments (i.e. {* {* *} *} becomes a valid comment, useful + to comment out big chunks of code containing comments) +* Lines containing only comments and whitespace are now entirely removed +* Removed comments do not mess up the line count anymore (for error messages) +* Fixed parsing bug in {func()->propertyOfReturnedObject} +* Fixed file template class reading from the string compiler factory - thanks + to MrOxiMoron for the patch +* Fixed handling of variable variables that contained non standard characters +* Fixed a 1.0.0beta regression that messed with custom plugin directories + on Windows +* SmartyCompat: Fixed a few bugs in the adapter and processor - thanks to + Stefan Moonen for the patches + +[2008-09-08] 1.0.0beta +! Important note : Dwoo.php should not be included directly anymore, please + read the UPGRADE_NOTES file for more infos on the matter, if you don't + your Dwoo install will most likely break after the update anyway +! BC Break: {include} and {extends} now support the include path properly, + which means that if you include "foo/bar.html" from _any_ template and you + have an include path set on your template object, it will look in all those + paths for foo/bar.html. If you use relative paths, for example + if you include "../foo/bar.html" AND have an include path set, you will now + have a problem, because you can't mix both approaches, otherwise you should + be fine, so to fix this you should convert your relative includes/extends ++ Adapters: Added the Agavi interface for Dwoo + (see /Dwoo/Adapters/Agavi/README) ++ API: Added Dwoo_Compilation_Exception methods getCompiler() and + getTemplate() so you can catch the exception and use those to build a nicer + error view with all the details you want ++ Plugins: Added a mode parameter to {strip} to allow stripping of javascript + code blocks that use "// comments", because without this special mode the + comments result in syntax errors +* The Compiler now ensures that a template starting with get() is now stricter as to what it accepts as a "template", only + Dwoo_ITemplate objects or valid filenames are accepted +* Foreach and other similar plugins that support "else" now only count() + their input before processing when an else block follows +* Various optimizations +* Fixed compiler bug that created a parse error when you had comments in an + extended template +* Fixed extends bug when extending files in other directories using relative + paths +* Fixed parsing bug with "|modifier:param|modifier2} with:colon after it" +* Bug fixed with smarty functions called with no parameters (in compat mode) +* Fixed Dwoo::isArray() check, objects implementing ArrayAccess are now + valid (thanks to Daniel Cousineau for the patch) +* Fixed compiler warning when doing {func()->method()} or {func()->property} +* Fixed compiled/cached files being written in the wrong place when the path + to the template contains "../"s +* Fixed {if} failing with conditions using upper case operators (i.e. AND) + +[2008-08-03] 0.9.3 ++ Adapters: Added the ZendFramework interface for Dwoo + (see /Dwoo/Adapters/ZendFramework/README) ++ Plugins: Added the {a} block plugin to generate tags ++ Syntax: Added the ";" token that allows to group multiple instructions in one + single template tag, example: {if $foo; "> $foo";$bar;/} is equal to: + {if $foo}> {$foo}{$bar}{/} - This also allow block operations such as: + {a http://url.com; "Text" /} which equals to {a http://url.com}Text{/} ++ Syntax: Block plugins that you want to call without content can be + self-closed just like XML tags (e.g. {a "http://url.com" /} ). Be careful not + to close a non-block plugin like that however, since it will close it's + parent block ++ Syntax: Static methods can be called using {Class::method()} ++ Syntax: It is now possible to use a plugin's result as an object and call + a method or read a property from it, i.e. {fetchObject()->doStuff()} ++ API: Added Dwoo_Plugin::paramsToAttributes() utility function to help + with the creation of compilable xml/html-related plugins ++ API: Added Dwoo->setPluginProxy() and Dwoo_IPluginProxy that allow you to + hook into the compiler's plugin subsystem to provide your own plugin calls. + Thanks to Denis Arh for the patch + => http://forum.dwoo.org/viewtopic.php?id=70 ++ API: Dwoo->addPlugin() has a third parameter to mark a plugin as compilable ++ Compiler supports method calls into a method call's parameters +* Dwoo_Compiler::implode_r is now public/static so it can be used in other + places such as plugin proxies +* Syntax: Math expressions in strings are now only allowed when the entire + expression is delimited, e.g. {"/$foo/$bar"} evaluates as just that while + {"/`$foo/$bar`"} will result in "/".($foo/$bar), therefore processing the / + as a division, this is better since URLs using / are far more common than + math in strings + => http://forum.dwoo.org/viewtopic.php?id=50 +* Compiler now allows the use of the right delimiter inside strings (e.g. {"}"}) +* Fixed a bug preventing if blocks containing a {elseif} followed by {else} +* Fixed the Dwoo_ILoader interface and implemented it in Dwoo_Loader now + => http://forum.dwoo.org/viewtopic.php?id=70 +* Fixed a compileId auto-generation creating conflicts +* Include allows paths going in upper levels now such as : "../foo.html" +* Some compiler fixes regarding custom plugins + +[2008-06-28] 0.9.2 +! BC Break: Renamed the {strip} modifier/function to {whitespace}, this does + not affect the strip block, that has been moved off the compiler into a + plugin. Which is why the name conflict had to be resolved. Please report + any issue you might encounter when using the strip block +! BC Break: Changed the function signature of Dwoo_Block_Plugin::postProcessing + it only affects you if you had any custom block plugins, see UPGRADE_NOTES + for more details +! BC Break: Dwoo_ITemplate::cache() must now return the cached file name or + false if caching failed, only affects you if you had a custom template class + and implemented cache() yourself +! BC Break: Dwoo_Loader is not static anymore so anything you did on it directly + will break. Use $dwoo->getLoader()->addDirectory() instead of + Dwoo_Loader::addDirectory() for example +! BC Break: DWOO_COMPILE_DIRECTORY and DWOO_CACHE_DIRECTORY are gone, set those + paths in Dwoo's constructor (i.e. new Dwoo('compiledir', 'cachedir')) if you + need to override the default ones ++ Plugins: Added {dynamic} that allows cached templates to have dynamic + (non-cached) parts, when rendering a cached page, the dynamic parts can still + use the variables you provides ++ Plugins: Added {tif} that acts as a ternary if / allows you to use a ternary + operator inside it ++ API: Added a Dwoo_ILoader interface if you want to provide a custom plugin + loading solution (use $dwoo->setLoader($myLoader)) ++ Added line numbers in compilation errors and improved several error messages ++ Added magic object-access methods to Dwoo_Data, so you can assign values by + doing $data->var = $val; instead of $data->assign('var', $val); ++ Added get()/unassign()/isAssigned() methods to read, remove and check for the + presence of a var inside a Dwoo_Data object +* Plugins: added a fifth 'string $implode' parameter to {foreach}, it prints + whatever you provide it between each item of the foreach, just like implode() +* Plugins: added a fourth 'bool $case_sensitive' parameter to {replace} +* Plugins: added a fourth 'bool $trim' parameter to {capture} that trims + the captured text +* Made the dependency on the hash extension optional +* Fixed compiler bug that prevented method calls combined with named parameters +* Fixed compiler bug that prevented the % shortcut for constants to work within + function calls (basically it only worked as {%CONST}) +* Fixed compiler bug that prevented empty() to be called +* Fixed several modifier parsing bugs + => http://forum.dwoo.org/viewtopic.php?id=27 +* Fixed empty string parsing in modifier applied to variables +* Fixed compiler handling of {template_tag} where there was + no ';' at the end of the php tag +* Allowed method calls to work with named parameters +* Removed checks for methods/properties being present on objects before calling + them since these can be handled by __get() and __call() + => http://forum.dwoo.org/viewtopic.php?id=22 +* Calling {func (params)} (with the space between function and params) is now + allowed + => http://forum.dwoo.org/viewtopic.php?id=21 +* The compiler now allows \r, \n and \t to be parameter splitters as well as + "," and " ". You can therefore split complex function calls on multiple lines +* Converted most of the code to follow PEAR Coding Standards, hopefully this + didn't break anything that the tests missed +* A few other minor or internal changes + +[2008-05-30] 0.9.1 ++ API: Added Dwoo_Compiler->setAutoEscape() and getAutoEscape() to modify the + automatic html entity escaping setting. This is disabled by default, and when + enabled can be overriden with the {safe $var} plugin or the + {auto_escape disable} block plugin. The block plugin can also be used to + enable this mode from within a template ++ Syntax: Mixing named and unnamed parameters is now allowed, as long as the + unnamed ones appear first ++ Syntax: Added {/} shortcut that closes the last opened block +* Optimized scope-handling functions, {loop} and {with} are now slightly faster +* Fixed a bug in {date_format} that prevented anything but unix timestamps to + work +* {literal} and {strip} now follow the LooseOpeningsHandling setting +* Fixed complex variables (i.e. {$_root[$c[$x.0]].0}) parsing bugs +* Fixed $dwoo->addResource() breaking if the resource class was not loaded yet, + autoload should now be called (thanks mike) +* Fixed a block stack bug that messed up {textformat} and possibly usermade + block plugins + +[2008-05-10] 0.9.0 +! BC Break: changed all class names to be PEAR compliant (aka use underscores + to separate words/paths), sorry about that but I better do it now than in + six months +! BC Break: $dwoo->output() and get() have been swapped internally, but it + doesn't change anything for you unless you called output(*, *, *, true) + directly to emulate get(). This was done to reduce some overhead +! BC Break: $dwoo->getTemplate() changed to $dwoo->templateFactory() and + $dwoo->getCurrentTemplate() changed to $dwoo->getTemplate() for consistency + among all classes and factory functions ++ Added a compiled version of Dwoo that loads faster (especially with opcode + caches such as APC), include Dwoo.compiled.php instead of Dwoo.php on + production but if you want to file a bug use Dwoo.php please as it allows + you to get the proper file/line number where an error occurs. Do not remove + all other files however since they are not all included in the compiled + package ++ Plugins: Added {extends} and {block} to handle template inheritance, read + more about it at http://wiki.dwoo.org/index.php/TemplateInheritance ++ Plugins: Added {loop} that combines {foreach} and {with}, see + http://wiki.dwoo.org/index.php/Block:loop for details ++ Plugins: Added {do} that executes whatever you feed it whitout echoing the + result, used internally for extends but you can use it if required ++ Plugins: Added {eol} that prints an end of line character (OS-specific) ++ Syntax: Added shortcut for {$dwoo.const.*} using '%', for example you can use + {%FOO} instead of {$dwoo.const.FOO} ++ Syntax: When using named parameters, typing a parameter name without any + value is the same as typing param=true, for example {foo name="test" bar} and + {foo name="test" bar=true} are equals, can be useful for very complex plugins + with huge amounts of parameters. ++ Syntax: Added support for {$foo+=5}, {$foo="a"}, {$foo++} and {$foo--} ++ Syntax: Added shortcut for $dwoo.*, you can now use {$.foreach.foo} instead + of {$dwoo.foreach.foo} for example, applies to all $dwoo.* vars ++ Syntax: Added $ as a shortcut for current scope, $_ for $_parent and $__ for + $_root ++ API: Added getSource(), getUid() and getResourceIdentifier() to Dwoo_ITemplate ++ API: Added setSecurityPolicy() too Dwoo_ICompiler and modified the arguments + of its compile() method ++ API: Added a bunch of utility functions to Dwoo_Compiler, allowing compiled + plugins to access more of the compiler internals ++ Both cache and compile IDs can now have slashes in them to create subfolders + in the cache/compile dirs ++ Added a DWOO_CHMOD constant that, if set before you include Dwoo, allows you + to define the file mode of all the file/directories Dwoo will write, defaults + to 0777 ++ Added a 'data' argument to {include} to be able to feed data directly into it +* The compiler now throws Dwoo_Compilation_Exception exceptions upon failure + and security problems lead to a Dwoo_Security_Exception being thrown. Runtime + plugin errors and such trigger simple php errors to allow the template + execution to complete +* Fixed a potential concurrency issue (thanks to Rasmus Schultz for the patch) +* Moved all files to Dwoo/Class.php excepted for the core Dwoo.php file +* Various performance improvements, including the removal of a lot of isset() + calls. Doing {$foo} if foo is undefined will now display a PHP warning, but + doing {foreach $foo}..{/foreach} will not however, that way you don't have + to do {if isset($foo)} before the foreach, but automated isset() calls don't + impact performance as much as they did before. +* API: Dwoo_ITemplate->clearCache now requires a Dwoo instance as its first arg, + should not affect you unless you built a custom template class from scratch +* Reworked Dwoo template rendering to avoid variable conflicts with plugins +* {include} now uses the current resource if none is provided instead of using + file as it did before +* Dwoo uses include path instead of absolute includes +* Changed all line endings to Unix (line feed only) and all spaces left have + been converted to tabs (tabspace 4) +* TestFest happened early for Dwoo, lots of new tests and more code covered +* Fixed a regression in the handling of custom class plugins +* Fixed various bugs in the Adapter class and related smarty compatibility + features +* Fixed a classpath rebuilding bug that occured on some UNIX platforms due to + glob() returning false sometimes for empty folders +* Fixed a bug in Dwoo_Security_Policy->getAllowedDirectories(), no security + issue though +* Fixed a bug in Dwoo::setScope affecting {loop} and {with} +* Fixed a parsing bug when doing {"string"|modifier:$var} + +[2008-04-09] 0.3.4 +! BC Break: DWOO_PATH constant changed to DWOO_DIRECTORY +! BC Break: Smarty's @ operator for modifiers is now reversed, for example + $array|reverse will reverse the items of that array while $array|@reverse + will reverse each item of the given array (as if you used array_map) ++ Syntax: Added support for method calls on objects i.e. {$foo->bar()} ++ Added support for smarty security features, see the DwooSecurityPolicy class + and $dwoo->setSecurityPolicy() ++ API: Added a DwooCompiler->setLooseOpeningHandling() method that, if set to + true, allows tags to contain spaces between the opening bracket and the + content. Turned off by default as it allows to compile files containing + css and javascript without the need to escape it through {literal} or \{ ++ Added DWOO_CACHE_DIRECTORY and DWOO_COMPILE_DIRECTORY constants that you can + set before including Dwoo.php to override the defaults (although + Dwoo->setCacheDir/setCompileDir() still work to change that if required) ++ Added the DwooException class ++ Smarty: Added partial support for register_object(), unregister_object() and + get_registered_object(). All features can not be supported by the adapter + though so you might get compatibility warnings +* Fixed {elseif} bug that appeared when multiple elseif tags were used in a row +* Syntax: Improved simple math support to work within variable variables + (i.e. you can do {$array[$index+1]}) and within strings as well. To prevent + this enclose the variables in backticks (i.e. {"$foo/$bar"} will do the math + while {"`$foo`/$bar"} won't as $foo is properly delimited) +* Changed DwooLoader::addDirectory() so that it writes the class paths cache + into DWOO_COMPILE_DIRECTORY, that way you don't have to make your plugin + directory writable +* Made all the error triggering more consistent +* Changed automatic cacheId generation in DwooTemplateFile/String to be faster + +[2008-03-19] 0.3.3 ++ Syntax: Added support for $dwoo.const.CONSTANT and + $dwoo.const.Class::CONSTANT to read PHP constants from the template ++ Syntax: Added support for on/off/yes/no, that work as aliases for true/false ++ Syntax: Added the $dwoo.charset global variable ++ Plugins: Added {withelse} and made {with} compatible with {else} also ++ API: Added left/right delimiters customization, see DwooCompiler->setDelimiters() ++ API: Added DwooCompiler->triggerError() ++ API: Added Dwoo->clearCache() and DwooITemplate->clearCache() methods ++ Smarty: The smartyCompat prefilter converts {section} tags into {for} tags on the + fly, however it's not guaranteed to work with *all* section tags, let me know if + it breaks for you +* {with} now skips the entire block if it's variable doesn't exist, so by + itself it acts as if you would do {if $var}{with $var}{/with}{/if} +* Each resource has a compiler factory function assigned to it, allowing you to + easily provide a custom compiler without loading it on every page +* OutputFilters are now simply called Filters (they still use DwooFilter) +* Pre/PostFilters have become Pre/PostProcessors (they now use DwooProcessor) +* Compiler: Fixed parsing bug that prevented function names of 1character +* Compiler: Changed internal handling of variables to fix some errors being + thrown with specific cases +* Reorganized Dwoo/DwooCompiler and fully commented all the core classes + and interfaces + +[2008-03-09] 0.3.2 ++ Added access to superglobals through $dwoo.get.value, $dwoo.post.value, + etc. ++ Added outputFilters to Dwoo (use Dwoo->addOutputFilter and + Dwoo->removeOutputFilter) ++ Added preFilters and postFilters to DwooCompiler (use + DwooCompiler->addPreFilter, etc) ++ Added a html_format output filter that intends properly the html code, + use it only on full page templates ++ Plugins: Added {for} and {forelse} which allow to loop over an array or to + loop over a range of numbers ++ Plugins: Added {mailto}, {counter}, {eval}, {fetch} and {include} ++ Syntax : Enhanced support for implicit math operations, + {$var+$var2*var3+5} now works. Operations are executed from left to right + though, there is no operator priority. (i.e. 1+1*2 = (1+1)*2 = 4, not 3) ++ API: Added resources support through DwooITemplate implementations and + Dwoo->addResource() ++ API: Added Dwoo->getTemplate() to get the currently running template object ++ API: Added DwooCompiler::getInstance() to use only one compiler object when + rendering from the default compiler and to provide you with a singleton if + it's easier, however the class is not a singleton in the sense that it can + be instantiated separately ++ API: Added a factory method on DwooITemplate to support resources creation ++ Added a release tag so that all compiled templates are forced to recompile + after an update, however it is recommended to cleanup your "compiled" + directory now and then as each release uses new filenames ++ Added an abstract DwooFilter class that you can extend to build filters +* PHP function calls are now case insensitive +* Syntax: The compiler now parses expressions before modifiers, allowing for + {$var/2|number_format} for example +* DwooTemplateFile now extends DwooTemplateString instead of the other way + around as it was before +* {else} is now a general purpose plugin that can act as 'else' for foreach, + for and if/elseif, foreachelse is still available though + +[2008-03-05] 0.3.1 ++ Added {cycle} function ++ Syntax : Enabled support for associative arrays using + array(key="value", key2=5) for example, which you can assign or use in a + foreach directly ++ Syntax : Added support for {$var +-/*% X} (i.e. {$var + 4}), useful for + simple math operations without the math plugin ++ API : Added append/appendByRef to DwooData ++ Completely rebuilt DwooSmartyAdapter, it should "work" and fail silently if + you use a non supported function now, however you can set + $smarty->show_compat_errors=true; on it to receive notices about unsupported + features that you use +* Bug fixed in {literal} parsing +* Bug fixed in smarty functions handling +* API : Moved Plugin types constants to Dwoo so the compiler doesn't have to + be loaded unles really required +* API : Moved globals and var reinitialization in Dwoo into their own methods + so that child classes can easily add globals +* Some improvements in the compiler output +* Some changes in the cache handling of DwooTemplateFile +- Special thanks to Andrew Collins that found many of the bugs fixed in this + release + +[2008-03-02] 0.3.0 ++ Full template cache support ++ DwooTemplateString class to load templates from a string ++ Dwoo::VERSION constant ++ {dump} plugin to print out variables ++ Unit tests (with PHPUnit) covering 73% of the codebase right now, which + should help reducing regression bugs in the next versions. ++ Started commenting (with phpdocs) properly all the classes, should be + complete for 0.4.0 +* {capture} is now compilable and has a new boolean flag to append output into + the target variable instead of overwriting +* {foreach} supports direct input (instead of only variables), allowing + constructs like {foreach array(a,b,c) val}{$val}{/foreach} for example that + would output abc. +* pre/postProcessing functions in block plugins now receive an array of named + parameters instead of numbered +* Major refactoring of DwooTemplateFile and DwooCompiler +* Cleaned up members visibility in Dwoo/DwooCompiler +* Fixes in the compiler parsing and general variables handling +* Multiple bugfixes here and there thanks to the unit tests +* Optimized {foreach} a lot + +[2008-02-19] 0.2.1 +* Compiler fixes for argument parsing and handling of Smarty plugins + +[2008-02-14] 0.2.0 ++ Added support for plugins made for Smarty (that includes modifiers, + functions and blocks). Not thoroughly tested. ++ Major API changes in the way Dwoo must be run, it's now much more + flexible and should not change too much in the future. ++ Added support for custom plugins, filters should come in the next version + although the API to register them is already in. + +[2008-02-08] 0.1.0 +Initial release \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo.compiled.php b/system/libs/dwoo/Dwoo.compiled.php new file mode 100644 index 00000000..ed8b4696 --- /dev/null +++ b/system/libs/dwoo/Dwoo.compiled.php @@ -0,0 +1 @@ + array ( 'class' => 'Dwoo_Template_File', 'compiler' => null ), 'string' => array ( 'class' => 'Dwoo_Template_String', 'compiler' => null ) ); protected $loader = null; protected $template = null; protected $runtimePlugins; public $data; public $scope; protected $scopeTree; protected $stack; protected $curBlock; protected $buffer; protected $pluginProxy; public function __construct($compileDir = null, $cacheDir = null) { if ($compileDir !== null) { $this->setCompileDir($compileDir); } if ($cacheDir !== null) { $this->setCacheDir($cacheDir); } $this->initGlobals(); } public function __clone() { $this->template = null; unset($this->data); } public function output($tpl, $data = array(), Dwoo_ICompiler $compiler = null) { return $this->get($tpl, $data, $compiler, true); } public function get($_tpl, $data = array(), $_compiler = null, $_output = false) { if ($this->template instanceof Dwoo_ITemplate) { $proxy = clone $this; return $proxy->get($_tpl, $data, $_compiler, $_output); } if ($_tpl instanceof Dwoo_ITemplate) { } elseif (is_string($_tpl) && file_exists($_tpl)) { $_tpl = new Dwoo_Template_File($_tpl); } else { throw new Dwoo_Exception('Dwoo->get/Dwoo->output\'s first argument must be a Dwoo_ITemplate (i.e. Dwoo_Template_File) or a valid path to a template file', E_USER_NOTICE); } $this->template = $_tpl; if ($data instanceof Dwoo_IDataProvider) { $this->data = $data->getData(); } elseif (is_array($data)) { $this->data = $data; } else { throw new Dwoo_Exception('Dwoo->get/Dwoo->output\'s data argument must be a Dwoo_IDataProvider object (i.e. Dwoo_Data) or an associative array', E_USER_NOTICE); } $this->globals['template'] = $_tpl->getName(); $this->initRuntimeVars($_tpl); $file = $_tpl->getCachedTemplate($this); $doCache = $file === true; $cacheLoaded = is_string($file); if ($cacheLoaded === true) { if ($_output === true) { include $file; $this->template = null; } else { ob_start(); include $file; $this->template = null; return ob_get_clean(); } } else { if ($doCache === true) { $dynamicId = uniqid(); } $compiledTemplate = $_tpl->getCompiledTemplate($this, $_compiler); $out = include $compiledTemplate; if ($out === false) { $_tpl->forceCompilation(); $compiledTemplate = $_tpl->getCompiledTemplate($this, $_compiler); $out = include $compiledTemplate; } if ($doCache === true) { $out = preg_replace('/(<%|%>|<\?php|<\?|\?>)/', '', $out); if (!class_exists('Dwoo_plugin_dynamic', false)) { $this->getLoader()->loadPlugin('dynamic'); } $out = Dwoo_Plugin_dynamic::unescape($out, $dynamicId, $compiledTemplate); } foreach ($this->filters as $filter) { if (is_array($filter) && $filter[0] instanceof Dwoo_Filter) { $out = call_user_func($filter, $out); } else { $out = call_user_func($filter, $this, $out); } } if ($doCache === true) { $file = $_tpl->cache($this, $out); if ($_output === true) { include $file; $this->template = null; } else { ob_start(); include $file; $this->template = null; return ob_get_clean(); } } else { $this->template = null; if ($_output === true) { echo $out; } return $out; } } } protected function initGlobals() { $this->globals = array ( 'version' => self::VERSION, 'ad' => 'Powered by Dwoo', 'now' => $_SERVER['REQUEST_TIME'], 'charset' => $this->charset, ); } protected function initRuntimeVars(Dwoo_ITemplate $tpl) { $this->runtimePlugins = array(); $this->scope =& $this->data; $this->scopeTree = array(); $this->stack = array(); $this->curBlock = null; $this->buffer = ''; } public function addPlugin($name, $callback, $compilable = false) { $compilable = $compilable ? self::COMPILABLE_PLUGIN : 0; if (is_array($callback)) { if (is_subclass_of(is_object($callback[0]) ? get_class($callback[0]) : $callback[0], 'Dwoo_Block_Plugin')) { $this->plugins[$name] = array('type'=>self::BLOCK_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>(is_object($callback[0]) ? get_class($callback[0]) : $callback[0])); } else { $this->plugins[$name] = array('type'=>self::CLASS_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>(is_object($callback[0]) ? get_class($callback[0]) : $callback[0]), 'function'=>$callback[1]); } } elseif (class_exists($callback, false)) { if (is_subclass_of($callback, 'Dwoo_Block_Plugin')) { $this->plugins[$name] = array('type'=>self::BLOCK_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>$callback); } else { $this->plugins[$name] = array('type'=>self::CLASS_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>$callback, 'function'=>'process'); } } elseif (function_exists($callback)) { $this->plugins[$name] = array('type'=>self::FUNC_PLUGIN | $compilable, 'callback'=>$callback); } else { throw new Dwoo_Exception('Callback could not be processed correctly, please check that the function/class you used exists'); } } public function removePlugin($name) { if (isset($this->plugins[$name])) { unset($this->plugins[$name]); } } public function addFilter($callback, $autoload = false) { if ($autoload) { $class = 'Dwoo_Filter_'.$callback; if (!class_exists($class, false) && !function_exists($class)) { try { $this->getLoader()->loadPlugin($callback); } catch (Dwoo_Exception $e) { if (strstr($callback, 'Dwoo_Filter_')) { throw new Dwoo_Exception('Wrong filter name : '.$callback.', the "Dwoo_Filter_" prefix should not be used, please only use "'.str_replace('Dwoo_Filter_', '', $callback).'"'); } else { throw new Dwoo_Exception('Wrong filter name : '.$callback.', when using autoload the filter must be in one of your plugin dir as "name.php" containg a class or function named "Dwoo_Filter_name"'); } } } if (class_exists($class, false)) { $callback = array(new $class($this), 'process'); } elseif (function_exists($class)) { $callback = $class; } else { throw new Dwoo_Exception('Wrong filter name : '.$callback.', when using autoload the filter must be in one of your plugin dir as "name.php" containg a class or function named "Dwoo_Filter_name"'); } $this->filters[] = $callback; } else { $this->filters[] = $callback; } } public function removeFilter($callback) { if (($index = array_search('Dwoo_Filter_'.$callback, $this->filters, true)) !== false) { unset($this->filters[$index]); } elseif (($index = array_search($callback, $this->filters, true)) !== false) { unset($this->filters[$index]); } else { $class = 'Dwoo_Filter_' . $callback; foreach ($this->filters as $index=>$filter) { if (is_array($filter) && $filter[0] instanceof $class) { unset($this->filters[$index]); break; } } } } public function addResource($name, $class, $compilerFactory = null) { if (strlen($name) < 2) { throw new Dwoo_Exception('Resource names must be at least two-character long to avoid conflicts with Windows paths'); } if (!class_exists($class)) { throw new Dwoo_Exception('Resource class does not exist'); } $interfaces = class_implements($class); if (in_array('Dwoo_ITemplate', $interfaces) === false) { throw new Dwoo_Exception('Resource class must implement Dwoo_ITemplate'); } $this->resources[$name] = array('class'=>$class, 'compiler'=>$compilerFactory); } public function removeResource($name) { unset($this->resources[$name]); if ($name==='file') { $this->resources['file'] = array('class'=>'Dwoo_Template_File', 'compiler'=>null); } } public function setLoader(Dwoo_ILoader $loader) { $this->loader = $loader; } public function getLoader() { if ($this->loader === null) { $this->loader = new Dwoo_Loader($this->getCompileDir()); } return $this->loader; } public function getCustomPlugins() { return $this->plugins; } public function getCacheDir() { if ($this->cacheDir === null) { $this->setCacheDir(dirname(__FILE__).DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR); } return $this->cacheDir; } public function setCacheDir($dir) { $this->cacheDir = rtrim($dir, '/\\').DIRECTORY_SEPARATOR; if (is_writable($this->cacheDir) === false) { throw new Dwoo_Exception('The cache directory must be writable, chmod "'.$this->cacheDir.'" to make it writable'); } } public function getCompileDir() { if ($this->compileDir === null) { $this->setCompileDir(dirname(__FILE__).DIRECTORY_SEPARATOR.'compiled'.DIRECTORY_SEPARATOR); } return $this->compileDir; } public function setCompileDir($dir) { $this->compileDir = rtrim($dir, '/\\').DIRECTORY_SEPARATOR; if (is_writable($this->compileDir) === false) { throw new Dwoo_Exception('The compile directory must be writable, chmod "'.$this->compileDir.'" to make it writable'); } } public function getCacheTime() { return $this->cacheTime; } public function setCacheTime($seconds) { $this->cacheTime = (int) $seconds; } public function getCharset() { return $this->charset; } public function setCharset($charset) { $this->charset = strtolower((string) $charset); } public function getTemplate() { return $this->template; } public function setTemplate(Dwoo_ITemplate $tpl) { $this->template = $tpl; } public function setDefaultCompilerFactory($resourceName, $compilerFactory) { $this->resources[$resourceName]['compiler'] = $compilerFactory; } public function getDefaultCompilerFactory($resourceName) { return $this->resources[$resourceName]['compiler']; } public function setSecurityPolicy(Dwoo_Security_Policy $policy = null) { $this->securityPolicy = $policy; } public function getSecurityPolicy() { return $this->securityPolicy; } public function setPluginProxy(Dwoo_IPluginProxy $pluginProxy) { $this->pluginProxy = $pluginProxy; } public function getPluginProxy() { return $this->pluginProxy; } public function isCached(Dwoo_ITemplate $tpl) { return is_string($tpl->getCachedTemplate($this)); } public function clearCache($olderThan=-1) { $cacheDirs = new RecursiveDirectoryIterator($this->getCacheDir()); $cache = new RecursiveIteratorIterator($cacheDirs); $expired = time() - $olderThan; $count = 0; foreach ($cache as $file) { if ($cache->isDot() || $cache->isDir() || substr($file, -5) !== '.html') { continue; } if ($cache->getCTime() < $expired) { $count += unlink((string) $file) ? 1 : 0; } } return $count; } public function templateFactory($resourceName, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null) { if (isset($this->resources[$resourceName])) { return call_user_func(array($this->resources[$resourceName]['class'], 'templateFactory'), $this, $resourceId, $cacheTime, $cacheId, $compileId, $parentTemplate); } else { throw new Dwoo_Exception('Unknown resource type : '.$resourceName); } } public function isArray($value, $checkIsEmpty=false) { if (is_array($value) === true) { if ($checkIsEmpty === false) { return true; } else { return count($value) > 0; } } elseif ($value instanceof Iterator) { if ($checkIsEmpty === false) { return true; } elseif ($value instanceof Countable) { return count($value) > 0; } else { $value->rewind(); return $value->valid(); } } elseif ($value instanceof ArrayAccess) { if ($checkIsEmpty === false) { return true; } elseif ($value instanceof Countable) { return count($value) > 0; } else { return $value->offsetExists(0); } } return false; } public function triggerError($message, $level=E_USER_NOTICE) { if (!($tplIdentifier = $this->template->getResourceIdentifier())) { $tplIdentifier = $this->template->getResourceName(); } trigger_error('Dwoo error (in '.$tplIdentifier.') : '.$message, $level); } public function addStack($blockName, array $args=array()) { if (isset($this->plugins[$blockName])) { $class = $this->plugins[$blockName]['class']; } else { $class = 'Dwoo_Plugin_'.$blockName; } if ($this->curBlock !== null) { $this->curBlock->buffer(ob_get_contents()); ob_clean(); } else { $this->buffer .= ob_get_contents(); ob_clean(); } $block = new $class($this); $cnt = count($args); if ($cnt===0) { $block->init(); } elseif ($cnt===1) { $block->init($args[0]); } elseif ($cnt===2) { $block->init($args[0], $args[1]); } elseif ($cnt===3) { $block->init($args[0], $args[1], $args[2]); } elseif ($cnt===4) { $block->init($args[0], $args[1], $args[2], $args[3]); } else { call_user_func_array(array($block,'init'), $args); } $this->stack[] = $this->curBlock = $block; return $block; } public function delStack() { $args = func_get_args(); $this->curBlock->buffer(ob_get_contents()); ob_clean(); $cnt = count($args); if ($cnt===0) { $this->curBlock->end(); } elseif ($cnt===1) { $this->curBlock->end($args[0]); } elseif ($cnt===2) { $this->curBlock->end($args[0], $args[1]); } elseif ($cnt===3) { $this->curBlock->end($args[0], $args[1], $args[2]); } elseif ($cnt===4) { $this->curBlock->end($args[0], $args[1], $args[2], $args[3]); } else { call_user_func_array(array($this->curBlock, 'end'), $args); } $tmp = array_pop($this->stack); if (count($this->stack) > 0) { $this->curBlock = end($this->stack); $this->curBlock->buffer($tmp->process()); } else { $this->curBlock = null; echo $tmp->process(); } unset($tmp); } public function getParentBlock(Dwoo_Block_Plugin $block) { $index = array_search($block, $this->stack, true); if ($index !== false && $index > 0) { return $this->stack[$index-1]; } return false; } public function findBlock($type) { if (isset($this->plugins[$type])) { $type = $this->plugins[$type]['class']; } else { $type = 'Dwoo_Plugin_'.str_replace('Dwoo_Plugin_', '', $type); } $keys = array_keys($this->stack); while (($key = array_pop($keys)) !== false) { if ($this->stack[$key] instanceof $type) { return $this->stack[$key]; } } return false; } public function getObjectPlugin($class) { if (isset($this->runtimePlugins[$class])) { return $this->runtimePlugins[$class]; } return $this->runtimePlugins[$class] = new $class($this); } public function classCall($plugName, array $params = array()) { $class = 'Dwoo_Plugin_'.$plugName; $plugin = $this->getObjectPlugin($class); $cnt = count($params); if ($cnt===0) { return $plugin->process(); } elseif ($cnt===1) { return $plugin->process($params[0]); } elseif ($cnt===2) { return $plugin->process($params[0], $params[1]); } elseif ($cnt===3) { return $plugin->process($params[0], $params[1], $params[2]); } elseif ($cnt===4) { return $plugin->process($params[0], $params[1], $params[2], $params[3]); } else { return call_user_func_array(array($plugin, 'process'), $params); } } public function arrayMap($callback, array $params) { if ($params[0] === $this) { $addThis = true; array_shift($params); } if ((is_array($params[0]) || ($params[0] instanceof Iterator && $params[0] instanceof ArrayAccess))) { if (empty($params[0])) { return $params[0]; } $out = array(); $cnt = count($params); if (isset($addThis)) { array_unshift($params, $this); $items = $params[1]; $keys = array_keys($items); if (is_string($callback) === false) { while (($i = array_shift($keys)) !== null) { $out[] = call_user_func_array($callback, array(1=>$items[$i]) + $params); } } elseif ($cnt===1) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($this, $items[$i]); } } elseif ($cnt===2) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($this, $items[$i], $params[2]); } } elseif ($cnt===3) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($this, $items[$i], $params[2], $params[3]); } } else { while (($i = array_shift($keys)) !== null) { $out[] = call_user_func_array($callback, array(1=>$items[$i]) + $params); } } } else { $items = $params[0]; $keys = array_keys($items); if (is_string($callback) === false) { while (($i = array_shift($keys)) !== null) { $out[] = call_user_func_array($callback, array($items[$i]) + $params); } } elseif ($cnt===1) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($items[$i]); } } elseif ($cnt===2) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($items[$i], $params[1]); } } elseif ($cnt===3) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($items[$i], $params[1], $params[2]); } } elseif ($cnt===4) { while (($i = array_shift($keys)) !== null) { $out[] = $callback($items[$i], $params[1], $params[2], $params[3]); } } else { while (($i = array_shift($keys)) !== null) { $out[] = call_user_func_array($callback, array($items[$i]) + $params); } } } return $out; } else { return $params[0]; } } public function readVarInto($varstr, $data, $safeRead = false) { if ($data === null) { return null; } if (is_array($varstr) === false) { preg_match_all('#(\[|->|\.)?((?:[^.[\]-]|-(?!>))+)\]?#i', $varstr, $m); } else { $m = $varstr; } unset($varstr); while (list($k, $sep) = each($m[1])) { if ($sep === '.' || $sep === '[' || $sep === '') { if ((is_array($data) || $data instanceof ArrayAccess) && ($safeRead === false || isset($data[$m[2][$k]]))) { $data = $data[$m[2][$k]]; } else { return null; } } else { if (is_object($data) && ($safeRead === false || isset($data->$m[2][$k]) || is_callable(array($data, '__get')))) { $data = $data->$m[2][$k]; } else { return null; } } } return $data; } public function readParentVar($parentLevels, $varstr = null) { $tree = $this->scopeTree; $cur = $this->data; while ($parentLevels--!==0) { array_pop($tree); } while (($i = array_shift($tree)) !== null) { if (is_object($cur)) { $cur = $cur->$i; } else { $cur = $cur[$i]; } } if ($varstr!==null) { return $this->readVarInto($varstr, $cur); } else { return $cur; } } public function readVar($varstr) { if (is_array($varstr)===true) { $m = $varstr; unset($varstr); } else { if (strstr($varstr, '.') === false && strstr($varstr, '[') === false && strstr($varstr, '->') === false) { if ($varstr === 'dwoo') { return $this->globals; } elseif ($varstr === '__' || $varstr === '_root' ) { return $this->data; $varstr = substr($varstr, 6); } elseif ($varstr === '_' || $varstr === '_parent') { $varstr = '.'.$varstr; $tree = $this->scopeTree; $cur = $this->data; array_pop($tree); while (($i = array_shift($tree)) !== null) { if (is_object($cur)) { $cur = $cur->$i; } else { $cur = $cur[$i]; } } return $cur; } $cur = $this->scope; if (isset($cur[$varstr])) { return $cur[$varstr]; } else { return null; } } if (substr($varstr, 0, 1) === '.') { $varstr = 'dwoo'.$varstr; } preg_match_all('#(\[|->|\.)?((?:[^.[\]-]|-(?!>))+)\]?#i', $varstr, $m); } $i = $m[2][0]; if ($i === 'dwoo') { $cur = $this->globals; array_shift($m[2]); array_shift($m[1]); switch ($m[2][0]) { case 'get': $cur = $_GET; break; case 'post': $cur = $_POST; break; case 'session': $cur = $_SESSION; break; case 'cookies': case 'cookie': $cur = $_COOKIE; break; case 'server': $cur = $_SERVER; break; case 'env': $cur = $_ENV; break; case 'request': $cur = $_REQUEST; break; case 'const': array_shift($m[2]); if (defined($m[2][0])) { return constant($m[2][0]); } else { return null; } } if ($cur !== $this->globals) { array_shift($m[2]); array_shift($m[1]); } } elseif ($i === '__' || $i === '_root') { $cur = $this->data; array_shift($m[2]); array_shift($m[1]); } elseif ($i === '_' || $i === '_parent') { $tree = $this->scopeTree; $cur = $this->data; while (true) { array_pop($tree); array_shift($m[2]); array_shift($m[1]); if (current($m[2]) === '_' || current($m[2]) === '_parent') { continue; } while (($i = array_shift($tree)) !== null) { if (is_object($cur)) { $cur = $cur->$i; } else { $cur = $cur[$i]; } } break; } } else { $cur = $this->scope; } while (list($k, $sep) = each($m[1])) { if ($sep === '.' || $sep === '[' || $sep === '') { if ((is_array($cur) || $cur instanceof ArrayAccess) && isset($cur[$m[2][$k]])) { $cur = $cur[$m[2][$k]]; } else { return null; } } elseif ($sep === '->') { if (is_object($cur)) { $cur = $cur->$m[2][$k]; } else { return null; } } else { return null; } } return $cur; } public function assignInScope($value, $scope) { $tree =& $this->scopeTree; $data =& $this->data; if (!is_string($scope)) { return $this->triggerError('Assignments must be done into strings, ('.gettype($scope).') '.var_export($scope, true).' given', E_USER_ERROR); } if (strstr($scope, '.') === false && strstr($scope, '->') === false) { $this->scope[$scope] = $value; } else { preg_match_all('#(\[|->|\.)?([^.[\]-]+)\]?#i', $scope, $m); $cur =& $this->scope; $last = array(array_pop($m[1]), array_pop($m[2])); while (list($k, $sep) = each($m[1])) { if ($sep === '.' || $sep === '[' || $sep === '') { if (is_array($cur) === false) { $cur = array(); } $cur =& $cur[$m[2][$k]]; } elseif ($sep === '->') { if (is_object($cur) === false) { $cur = new stdClass; } $cur =& $cur->$m[2][$k]; } else { return false; } } if ($last[0] === '.' || $last[0] === '[' || $last[0] === '') { if (is_array($cur) === false) { $cur = array(); } $cur[$last[1]] = $value; } elseif ($last[0] === '->') { if (is_object($cur) === false) { $cur = new stdClass; } $cur->$last[1] = $value; } else { return false; } } } public function setScope($scope, $absolute = false) { $old = $this->scopeTree; if (is_string($scope)===true) { $scope = explode('.', $scope); } if ($absolute===true) { $this->scope =& $this->data; $this->scopeTree = array(); } while (($bit = array_shift($scope)) !== null) { if ($bit === '_' || $bit === '_parent') { array_pop($this->scopeTree); $this->scope =& $this->data; $cnt = count($this->scopeTree); for ($i=0;$i<$cnt;$i++) $this->scope =& $this->scope[$this->scopeTree[$i]]; } elseif ($bit === '__' || $bit === '_root') { $this->scope =& $this->data; $this->scopeTree = array(); } elseif (isset($this->scope[$bit])) { $this->scope =& $this->scope[$bit]; $this->scopeTree[] = $bit; } else { unset($this->scope); $this->scope = null; } } return $old; } public function getData() { return $this->data; } public function &getScope() { return $this->scope; } public function __call($method, $args) { $proxy = $this->getPluginProxy(); if (!$proxy) { throw new Dwoo_Exception('Call to undefined method '.__CLASS__.'::'.$method.'()'); } return call_user_func_array($proxy->getCallback($method), $args); } } interface Dwoo_IPluginProxy { public function handles($name); public function getCode($name, $params); public function getCallback($name); public function getLoader($name); } interface Dwoo_IElseable { } interface Dwoo_ILoader { public function loadPlugin($class, $forceRehash = true); } class Dwoo_Loader implements Dwoo_ILoader { protected $paths = array(); protected $classPath = array(); protected $cacheDir; protected $corePluginDir; public function __construct($cacheDir) { $this->corePluginDir = DWOO_DIRECTORY . 'plugins'; $this->cacheDir = rtrim($cacheDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; $cacheFile = $this->cacheDir.'classpath.cache.d'.Dwoo::RELEASE_TAG.'.php'; if (file_exists($cacheFile)) { $classpath = file_get_contents($cacheFile); $this->classPath = unserialize($classpath) + $this->classPath; } else { $this->rebuildClassPathCache($this->corePluginDir, $cacheFile); } } protected function rebuildClassPathCache($path, $cacheFile) { if ($cacheFile!==false) { $tmp = $this->classPath; $this->classPath = array(); } $list = glob(rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '*'); if (is_array($list)) { foreach ($list as $f) { if (is_dir($f)) { $this->rebuildClassPathCache($f, false); } else { $this->classPath[str_replace(array('function.','block.','modifier.','outputfilter.','filter.','prefilter.','postfilter.','pre.','post.','output.','shared.','helper.'), '', basename($f, '.php'))] = $f; } } } if ($cacheFile!==false) { if (!file_put_contents($cacheFile, serialize($this->classPath))) { throw new Dwoo_Exception('Could not write into '.$cacheFile.', either because the folder is not there (create it) or because of the chmod configuration (please ensure this directory is writable by php), alternatively you can change the directory used with $dwoo->setCompileDir() or provide a custom loader object with $dwoo->setLoader()'); } $this->classPath += $tmp; } } public function loadPlugin($class, $forceRehash = true) { if (!isset($this->classPath[$class]) || !(include $this->classPath[$class])) { if ($forceRehash) { $this->rebuildClassPathCache($this->corePluginDir, $this->cacheDir . 'classpath.cache.d'.Dwoo::RELEASE_TAG.'.php'); foreach ($this->paths as $path=>$file) { $this->rebuildClassPathCache($path, $file); } if (isset($this->classPath[$class])) { include $this->classPath[$class]; } else { throw new Dwoo_Exception('Plugin '.$class.' can not be found, maybe you forgot to bind it if it\'s a custom plugin ?', E_USER_NOTICE); } } else { throw new Dwoo_Exception('Plugin '.$class.' can not be found, maybe you forgot to bind it if it\'s a custom plugin ?', E_USER_NOTICE); } } } public function addDirectory($pluginDirectory) { $pluginDir = realpath($pluginDirectory); if (!$pluginDir) { throw new Dwoo_Exception('Plugin directory does not exist or can not be read : '.$pluginDirectory); } $cacheFile = $this->cacheDir . 'classpath-'.substr(strtr($pluginDir, '/\\:'.PATH_SEPARATOR, '----'), strlen($pluginDir) > 80 ? -80 : 0).'.d'.Dwoo::RELEASE_TAG.'.php'; $this->paths[$pluginDir] = $cacheFile; if (file_exists($cacheFile)) { $classpath = file_get_contents($cacheFile); $this->classPath = unserialize($classpath) + $this->classPath; } else { $this->rebuildClassPathCache($pluginDir, $cacheFile); } } } class Dwoo_Exception extends Exception { } class Dwoo_Security_Policy { const PHP_ENCODE = 1; const PHP_REMOVE = 2; const PHP_ALLOW = 3; const CONST_DISALLOW = false; const CONST_ALLOW = true; protected $allowedPhpFunctions = array ( 'str_repeat', 'number_format', 'htmlentities', 'htmlspecialchars', 'long2ip', 'strlen', 'list', 'empty', 'count', 'sizeof', 'in_array', 'is_array', ); protected $allowedDirectories = array(); protected $phpHandling = self::PHP_REMOVE; protected $constHandling = self::CONST_DISALLOW; public function allowPhpFunction($func) { if (is_array($func)) foreach ($func as $fname) $this->allowedPhpFunctions[strtolower($fname)] = true; else $this->allowedPhpFunctions[strtolower($func)] = true; } public function disallowPhpFunction($func) { if (is_array($func)) foreach ($func as $fname) unset($this->allowedPhpFunctions[strtolower($fname)]); else unset($this->allowedPhpFunctions[strtolower($func)]); } public function getAllowedPhpFunctions() { return $this->allowedPhpFunctions; } public function allowDirectory($path) { if (is_array($path)) foreach ($path as $dir) $this->allowedDirectories[realpath($dir)] = true; else $this->allowedDirectories[realpath($path)] = true; } public function disallowDirectory($path) { if (is_array($path)) foreach ($path as $dir) unset($this->allowedDirectories[realpath($dir)]); else unset($this->allowedDirectories[realpath($path)]); } public function getAllowedDirectories() { return $this->allowedDirectories; } public function setPhpHandling($level = self::PHP_REMOVE) { $this->phpHandling = $level; } public function getPhpHandling() { return $this->phpHandling; } public function setConstantHandling($level = self::CONST_DISALLOW) { $this->constHandling = $level; } public function getConstantHandling() { return $this->constHandling; } } class Dwoo_Security_Exception extends Dwoo_Exception { } interface Dwoo_ICompilable { } interface Dwoo_ICompiler { public function compile(Dwoo $dwoo, Dwoo_ITemplate $template); public function setCustomPlugins(array $customPlugins); public function setSecurityPolicy(Dwoo_Security_Policy $policy = null); } interface Dwoo_IDataProvider { public function getData(); } interface Dwoo_ITemplate { public function getCacheTime(); public function setCacheTime($seconds = null); public function getCachedTemplate(Dwoo $dwoo); public function cache(Dwoo $dwoo, $output); public function clearCache(Dwoo $dwoo, $olderThan = -1); public function getCompiledTemplate(Dwoo $dwoo, Dwoo_ICompiler $compiler = null); public function getName(); public function getResourceName(); public function getResourceIdentifier(); public function getSource(); public function getUid(); public function getCompiler(); public function getIsModifiedCode(); public static function templateFactory(Dwoo $dwoo, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null); } interface Dwoo_ICompilable_Block { } abstract class Dwoo_Plugin { protected $dwoo; public function __construct(Dwoo $dwoo) { $this->dwoo = $dwoo; } public static function paramsToAttributes(array $params, $delim = '\'') { if (isset($params['*'])) { $params = array_merge($params, $params['*']); unset($params['*']); } $out = ''; foreach ($params as $attr=>$val) { $out .= ' '.$attr.'='; if (trim($val, '"\'')=='' || $val=='null') { $out .= str_replace($delim, '\\'.$delim, '""'); } elseif (substr($val, 0, 1) === $delim && substr($val, -1) === $delim) { $out .= str_replace($delim, '\\'.$delim, '"'.substr($val, 1, -1).'"'); } else { $out .= str_replace($delim, '\\'.$delim, '"') . $delim . '.'.$val.'.' . $delim . str_replace($delim, '\\'.$delim, '"'); } } return ltrim($out); } } abstract class Dwoo_Block_Plugin extends Dwoo_Plugin { protected $buffer = ''; public function buffer($input) { $this->buffer .= $input; } public function end() { } public function process() { return $this->buffer; } public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) { return Dwoo_Compiler::PHP_OPEN.$prepend.'$this->addStack("'.$type.'", array('.Dwoo_Compiler::implode_r($compiler->getCompiledParams($params)).'));'.$append.Dwoo_Compiler::PHP_CLOSE; } public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) { return $content . Dwoo_Compiler::PHP_OPEN.$prepend.'$this->delStack();'.$append.Dwoo_Compiler::PHP_CLOSE; } } abstract class Dwoo_Filter { protected $dwoo; public function __construct(Dwoo $dwoo) { $this->dwoo = $dwoo; } abstract public function process($input); } abstract class Dwoo_Processor { protected $compiler; public function __construct(Dwoo_Compiler $compiler) { $this->compiler = $compiler; } abstract public function process($input); } class Dwoo_Template_String implements Dwoo_ITemplate { protected $name; protected $compileId; protected $cacheId; protected $cacheTime; protected $compilationEnforced; protected static $cache = array('cached'=>array(), 'compiled'=>array()); protected $compiler; protected $chmod = 0777; public function __construct($templateString, $cacheTime = null, $cacheId = null, $compileId = null) { $this->template = $templateString; if (function_exists('hash')) { $this->name = hash('md4', $templateString); } else { $this->name = md5($templateString); } $this->cacheTime = $cacheTime; if ($compileId !== null) { $this->compileId = str_replace('../', '__', strtr($compileId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); } if ($cacheId !== null) { $this->cacheId = str_replace('../', '__', strtr($cacheId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); } } public function getCacheTime() { return $this->cacheTime; } public function setCacheTime($seconds = null) { $this->cacheTime = $seconds; } public function getChmod() { return $this->chmod; } public function setChmod($mask = null) { $this->chmod = $mask; } public function getName() { return $this->name; } public function getResourceName() { return 'string'; } public function getResourceIdentifier() { return false; } public function getSource() { return $this->template; } public function getUid() { return $this->name; } public function getCompiler() { return $this->compiler; } public function forceCompilation() { $this->compilationEnforced = true; } public function getCachedTemplate(Dwoo $dwoo) { if ($this->cacheTime !== null) { $cacheLength = $this->cacheTime; } else { $cacheLength = $dwoo->getCacheTime(); } if ($cacheLength === 0) { return false; } $cachedFile = $this->getCacheFilename($dwoo); if (isset(self::$cache['cached'][$this->cacheId]) === true && file_exists($cachedFile)) { return $cachedFile; } elseif ($this->compilationEnforced !== true && file_exists($cachedFile) && ($cacheLength === -1 || filemtime($cachedFile) > ($_SERVER['REQUEST_TIME'] - $cacheLength)) && $this->isValidCompiledFile($this->getCompiledFilename($dwoo))) { self::$cache['cached'][$this->cacheId] = true; return $cachedFile; } else { return true; } } public function cache(Dwoo $dwoo, $output) { $cacheDir = $dwoo->getCacheDir(); $cachedFile = $this->getCacheFilename($dwoo); $temp = tempnam($cacheDir, 'temp'); if (!($file = @fopen($temp, 'wb'))) { $temp = $cacheDir . uniqid('temp'); if (!($file = @fopen($temp, 'wb'))) { trigger_error('Error writing temporary file \''.$temp.'\'', E_USER_WARNING); return false; } } fwrite($file, $output); fclose($file); $this->makeDirectory(dirname($cachedFile), $cacheDir); if (!@rename($temp, $cachedFile)) { @unlink($cachedFile); @rename($temp, $cachedFile); } if ($this->chmod !== null) { chmod($cachedFile, $this->chmod); } self::$cache['cached'][$this->cacheId] = true; return $cachedFile; } public function clearCache(Dwoo $dwoo, $olderThan = -1) { $cachedFile = $this->getCacheFilename($dwoo); return !file_exists($cachedFile) || (filectime($cachedFile) < (time() - $olderThan) && unlink($cachedFile)); } public function getCompiledTemplate(Dwoo $dwoo, Dwoo_ICompiler $compiler = null) { $compiledFile = $this->getCompiledFilename($dwoo); if ($this->compilationEnforced !== true && isset(self::$cache['compiled'][$this->compileId]) === true) { } elseif ($this->compilationEnforced !== true && $this->isValidCompiledFile($compiledFile)) { self::$cache['compiled'][$this->compileId] = true; } else { $this->compilationEnforced = false; if ($compiler === null) { $compiler = $dwoo->getDefaultCompilerFactory($this->getResourceName()); if ($compiler === null || $compiler === array('Dwoo_Compiler', 'compilerFactory')) { if (class_exists('Dwoo_Compiler', false) === false) { include DWOO_DIRECTORY . 'Dwoo/Compiler.php'; } $compiler = Dwoo_Compiler::compilerFactory(); } else { $compiler = call_user_func($compiler); } } $this->compiler = $compiler; $compiler->setCustomPlugins($dwoo->getCustomPlugins()); $compiler->setSecurityPolicy($dwoo->getSecurityPolicy()); $this->makeDirectory(dirname($compiledFile), $dwoo->getCompileDir()); file_put_contents($compiledFile, $compiler->compile($dwoo, $this)); if ($this->chmod !== null) { chmod($compiledFile, $this->chmod); } self::$cache['compiled'][$this->compileId] = true; } return $compiledFile; } protected function isValidCompiledFile($file) { return file_exists($file); } public static function templateFactory(Dwoo $dwoo, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null) { return new self($resourceId, $cacheTime, $cacheId, $compileId); } protected function getCompiledFilename(Dwoo $dwoo) { if ($this->compileId===null) { $this->compileId = $this->name; } return $dwoo->getCompileDir() . $this->compileId.'.d'.Dwoo::RELEASE_TAG.'.php'; } protected function getCacheFilename(Dwoo $dwoo) { if ($this->cacheId === null) { if (isset($_SERVER['REQUEST_URI']) === true) { $cacheId = $_SERVER['REQUEST_URI']; } elseif (isset($_SERVER['SCRIPT_FILENAME']) && isset($_SERVER['argv'])) { $cacheId = $_SERVER['SCRIPT_FILENAME'].'-'.implode('-', $_SERVER['argv']); } else { $cacheId = ''; } $this->getCompiledFilename($dwoo); $this->cacheId = str_replace('../', '__', $this->compileId . strtr($cacheId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); } return $dwoo->getCacheDir() . $this->cacheId.'.html'; } public function getIsModifiedCode() { return null; } protected function makeDirectory($path, $baseDir = null) { if (is_dir($path) === true) { return; } if ($this->chmod === null) { $chmod = 0777; } else { $chmod = $this->chmod; } mkdir($path, $chmod, true); if (strpos(PHP_OS, 'WIN') !== 0 && $baseDir !== null) { $path = strtr(str_replace($baseDir, '', $path), '\\', '/'); $folders = explode('/', trim($path, '/')); foreach ($folders as $folder) { $baseDir .= $folder . DIRECTORY_SEPARATOR; chmod($baseDir, $chmod); } } } } class Dwoo_Template_File extends Dwoo_Template_String { protected $file; protected $includePath = null; protected $resolvedPath = null; public function __construct($file, $cacheTime = null, $cacheId = null, $compileId = null, $includePath = null) { $this->file = $file; $this->name = basename($file); $this->cacheTime = $cacheTime; if ($compileId !== null) { $this->compileId = str_replace('../', '__', strtr($compileId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); } if ($cacheId !== null) { $this->cacheId = str_replace('../', '__', strtr($cacheId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); } if (is_string($includePath)) { $this->includePath = array($includePath); } elseif (is_array($includePath)) { $this->includePath = $includePath; } } public function setIncludePath($paths) { if (is_array($paths) === false) { $paths = array($paths); } $this->includePath = $paths; $this->resolvedPath = null; } public function getIncludePath() { return $this->includePath; } protected function isValidCompiledFile($file) { return parent::isValidCompiledFile($file) && (int)$this->getUid() <= filemtime($file); } public function getSource() { return file_get_contents($this->getResourceIdentifier()); } public function getResourceName() { return 'file'; } public function getResourceIdentifier() { if ($this->resolvedPath !== null) { return $this->resolvedPath; } elseif ($this->includePath === null) { return $this->file; } else { foreach ($this->includePath as $path) { $path = rtrim($path, DIRECTORY_SEPARATOR); if (file_exists($path.DIRECTORY_SEPARATOR.$this->file) === true) { $this->resolvedPath = $path . DIRECTORY_SEPARATOR . $this->file; return $this->resolvedPath; } } throw new Dwoo_Exception('Template "'.$this->file.'" could not be found in any of your include path(s)'); } } public function getUid() { return (string) filemtime($this->getResourceIdentifier()); } public static function templateFactory(Dwoo $dwoo, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null) { if (DIRECTORY_SEPARATOR === '\\') { $resourceId = str_replace(array("\t", "\n", "\r", "\f", "\v"), array('\\t', '\\n', '\\r', '\\f', '\\v'), $resourceId); } $resourceId = strtr($resourceId, '\\', '/'); $includePath = null; if (file_exists($resourceId) === false) { if ($parentTemplate === null) { $parentTemplate = $dwoo->getTemplate(); } if ($parentTemplate instanceof Dwoo_Template_File) { if ($includePath = $parentTemplate->getIncludePath()) { if (strstr($resourceId, '../')) { throw new Dwoo_Exception('When using an include path you can not reference a template into a parent directory (using ../)'); } } else { $resourceId = dirname($parentTemplate->getResourceIdentifier()).DIRECTORY_SEPARATOR.$resourceId; if (file_exists($resourceId) === false) { return null; } } } else { return null; } } if ($policy = $dwoo->getSecurityPolicy()) { while (true) { if (preg_match('{^([a-z]+?)://}i', $resourceId)) { throw new Dwoo_Security_Exception('The security policy prevents you to read files from external sources : '.$resourceId.'.'); } if ($includePath) { break; } $resourceId = realpath($resourceId); $dirs = $policy->getAllowedDirectories(); foreach ($dirs as $dir=>$dummy) { if (strpos($resourceId, $dir) === 0) { break 2; } } throw new Dwoo_Security_Exception('The security policy prevents you to read '.$resourceId.''); } } $class = 'Dwoo_Template_File'; if ($parentTemplate) { $class = get_class($parentTemplate); } return new $class($resourceId, $cacheTime, $cacheId, $compileId, $includePath); } protected function getCompiledFilename(Dwoo $dwoo) { if ($this->compileId===null) { $this->compileId = str_replace('../', '__', strtr($this->getResourceIdentifier(), '\\:', '/-')); } return $dwoo->getCompileDir() . $this->compileId.'.d'.Dwoo::RELEASE_TAG.'.php'; } public function getIsModifiedCode() { return '"'.$this->getUid().'" == filemtime('.var_export($this->getResourceIdentifier(), true).')'; } } class Dwoo_Data implements Dwoo_IDataProvider { protected $data = array(); public function getData() { return $this->data; } public function clear($name = null) { if ($name === null) { $this->data = array(); } elseif (is_array($name)) { foreach ($name as $index) unset($this->data[$index]); } else { unset($this->data[$name]); } } public function setData(array $data) { $this->data = $data; } public function mergeData(array $data) { $args = func_get_args(); while (list(,$v) = each($args)) { if (is_array($v)) { $this->data = array_merge($this->data, $v); } } } public function assign($name, $val = null) { if (is_array($name)) { reset($name); while (list($k,$v) = each($name)) $this->data[$k] = $v; } else { $this->data[$name] = $val; } } public function __set($name, $value) { $this->assign($name, $value); } public function assignByRef($name, &$val) { $this->data[$name] =& $val; } public function append($name, $val = null, $merge = false) { if (is_array($name)) { foreach ($name as $key=>$val) { if (isset($this->data[$key]) && !is_array($this->data[$key])) { settype($this->data[$key], 'array'); } if ($merge === true && is_array($val)) { $this->data[$key] = $val + $this->data[$key]; } else { $this->data[$key][] = $val; } } } elseif ($val !== null) { if (isset($this->data[$name]) && !is_array($this->data[$name])) { settype($this->data[$name], 'array'); } elseif (!isset($this->data[$name])) { $this->data[$name] = array(); } if ($merge === true && is_array($val)) { $this->data[$name] = $val + $this->data[$name]; } else { $this->data[$name][] = $val; } } } public function appendByRef($name, &$val, $merge = false) { if (isset($this->data[$name]) && !is_array($this->data[$name])) { settype($this->data[$name], 'array'); } if ($merge === true && is_array($val)) { foreach ($val as $key => &$val) { $this->data[$name][$key] =& $val; } } else { $this->data[$name][] =& $val; } } public function isAssigned($name) { return isset($this->data[$name]); } public function __isset($name) { return isset($this->data[$name]); } public function unassign($name) { unset($this->data[$name]); } public function __unset($name) { unset($this->data[$name]); } public function get($name) { return $this->__get($name); } public function __get($name) { if (isset($this->data[$name])) { return $this->data[$name]; } else { throw new Dwoo_Exception('Tried to read a value that was not assigned yet : "'.$name.'"'); } } } \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo.php b/system/libs/dwoo/Dwoo.php new file mode 100644 index 00000000..52573651 --- /dev/null +++ b/system/libs/dwoo/Dwoo.php @@ -0,0 +1,1533 @@ + + * requirements : + * php 5.2.0 or above (might work below, it's a rough estimate) + * SPL and PCRE extensions (for php versions prior to 5.3.0) + * mbstring extension for some string manipulation plugins (especially if you intend to use UTF-8) + * recommended : + * hash extension (for Dwoo_Template_String - minor performance boost) + * + * project created : + * 2008-01-05 + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo +{ + /** + * current version number + * + * @var string + */ + const VERSION = '1.1.1'; + + /** + * unique number of this dwoo release + * + * this can be used by templates classes to check whether the compiled template + * has been compiled before this release or not, so that old templates are + * recompiled automatically when Dwoo is updated + */ + const RELEASE_TAG = 17; + + /**#@+ + * constants that represents all plugin types + * + * these are bitwise-operation-safe values to allow multiple types + * on a single plugin + * + * @var int + */ + const CLASS_PLUGIN = 1; + const FUNC_PLUGIN = 2; + const NATIVE_PLUGIN = 4; + const BLOCK_PLUGIN = 8; + const COMPILABLE_PLUGIN = 16; + const CUSTOM_PLUGIN = 32; + const SMARTY_MODIFIER = 64; + const SMARTY_BLOCK = 128; + const SMARTY_FUNCTION = 256; + const PROXY_PLUGIN = 512; + const TEMPLATE_PLUGIN = 1024; + /**#@-*/ + + /** + * character set of the template, used by string manipulation plugins + * + * it must be lowercase, but setCharset() will take care of that + * + * @see setCharset + * @see getCharset + * @var string + */ + protected $charset = 'utf-8'; + + /** + * global variables that are accessible through $dwoo.* in the templates + * + * default values include: + * + * $dwoo.version - current version number + * $dwoo.ad - a Powered by Dwoo link pointing to dwoo.org + * $dwoo.now - the current time + * $dwoo.template - the current template filename + * $dwoo.charset - the character set used by the template + * + * on top of that, foreach and other plugins can store special values in there, + * see their documentation for more details. + * + * @private + * @var array + */ + public $globals; + + /** + * directory where the compiled templates are stored + * + * defaults to DWOO_COMPILEDIR (= dwoo_dir/compiled by default) + * + * @var string + */ + protected $compileDir; + + /** + * directory where the cached templates are stored + * + * defaults to DWOO_CACHEDIR (= dwoo_dir/cache by default) + * + * @var string + */ + protected $cacheDir; + + /** + * defines how long (in seconds) the cached files must remain valid + * + * can be overriden on a per-template basis + * + * -1 = never delete + * 0 = disabled + * >0 = duration in seconds + * + * @var int + */ + protected $cacheTime = 0; + + /** + * security policy object + * + * @var Dwoo_Security_Policy + */ + protected $securityPolicy = null; + + /** + * stores the custom plugins callbacks + * + * @see addPlugin + * @see removePlugin + * @var array + */ + protected $plugins = array(); + + /** + * stores the filter callbacks + * + * @see addFilter + * @see removeFilter + * @var array + */ + protected $filters = array(); + + /** + * stores the resource types and associated + * classes / compiler classes + * + * @var array + */ + protected $resources = array + ( + 'file' => array + ( + 'class' => 'Dwoo_Template_File', + 'compiler' => null + ), + 'string' => array + ( + 'class' => 'Dwoo_Template_String', + 'compiler' => null + ) + ); + + /** + * the dwoo loader object used to load plugins by this dwoo instance + * + * @var Dwoo_ILoader + */ + protected $loader = null; + + /** + * currently rendered template, set to null when not-rendering + * + * @var Dwoo_ITemplate + */ + protected $template = null; + + /** + * stores the instances of the class plugins during template runtime + * + * @var array + */ + protected $runtimePlugins; + + /** + * stores the data during template runtime + * + * @var array + * @private + */ + public $data; + + /** + * stores the current scope during template runtime + * + * this should ideally not be accessed directly from outside template code + * + * @var mixed + * @private + */ + public $scope; + + /** + * stores the scope tree during template runtime + * + * @var array + */ + protected $scopeTree; + + /** + * stores the block plugins stack during template runtime + * + * @var array + */ + protected $stack; + + /** + * stores the current block plugin at the top of the stack during template runtime + * + * @var Dwoo_Block_Plugin + */ + protected $curBlock; + + /** + * stores the output buffer during template runtime + * + * @var string + */ + protected $buffer; + + /** + * stores plugin proxy + * + * @var Dwoo_IPluginProxy + */ + protected $pluginProxy; + + /** + * constructor, sets the cache and compile dir to the default values if not provided + * + * @param string $compileDir path to the compiled directory, defaults to lib/compiled + * @param string $cacheDir path to the cache directory, defaults to lib/cache + */ + public function __construct($compileDir = null, $cacheDir = null) + { + if ($compileDir !== null) { + $this->setCompileDir($compileDir); + } + if ($cacheDir !== null) { + $this->setCacheDir($cacheDir); + } + $this->initGlobals(); + } + + /** + * resets some runtime variables to allow a cloned object to be used to render sub-templates + */ + public function __clone() + { + $this->template = null; + unset($this->data); + } + + /** + * outputs the template instead of returning it, this is basically a shortcut for get(*, *, *, true) + * + * @see get + * @param mixed $tpl template, can either be a Dwoo_ITemplate object (i.e. Dwoo_Template_File), a valid path to a template, or + * a template as a string it is recommended to provide a Dwoo_ITemplate as it will probably make things faster, + * especially if you render a template multiple times + * @param mixed $data the data to use, can either be a Dwoo_IDataProvider object (i.e. Dwoo_Data) or an associative array. if you're + * rendering the template from cache, it can be left null + * @param Dwoo_ICompiler $compiler the compiler that must be used to compile the template, if left empty a default + * Dwoo_Compiler will be used. + * @return string nothing or the template output if $output is true + */ + public function output($tpl, $data = array(), Dwoo_ICompiler $compiler = null) + { + return $this->get($tpl, $data, $compiler, true); + } + + /** + * returns the given template rendered using the provided data and optional compiler + * + * @param mixed $tpl template, can either be a Dwoo_ITemplate object (i.e. Dwoo_Template_File), a valid path to a template, or + * a template as a string it is recommended to provide a Dwoo_ITemplate as it will probably make things faster, + * especially if you render a template multiple times + * @param mixed $data the data to use, can either be a Dwoo_IDataProvider object (i.e. Dwoo_Data) or an associative array. if you're + * rendering the template from cache, it can be left null + * @param Dwoo_ICompiler $compiler the compiler that must be used to compile the template, if left empty a default + * Dwoo_Compiler will be used. + * @param bool $output flag that defines whether the function returns the output of the template (false, default) or echoes it directly (true) + * @return string nothing or the template output if $output is true + */ + public function get($_tpl, $data = array(), $_compiler = null, $_output = false) + { + // a render call came from within a template, so we need a new dwoo instance in order to avoid breaking this one + if ($this->template instanceof Dwoo_ITemplate) { + $proxy = clone $this; + return $proxy->get($_tpl, $data, $_compiler, $_output); + } + + // auto-create template if required + if ($_tpl instanceof Dwoo_ITemplate) { + // valid, skip + } elseif (is_string($_tpl) && file_exists($_tpl)) { + $_tpl = new Dwoo_Template_File($_tpl); + } else { + throw new Dwoo_Exception('Dwoo->get/Dwoo->output\'s first argument must be a Dwoo_ITemplate (i.e. Dwoo_Template_File) or a valid path to a template file', E_USER_NOTICE); + } + + // save the current template, enters render mode at the same time + // if another rendering is requested it will be proxied to a new Dwoo instance + $this->template = $_tpl; + + // load data + if ($data instanceof Dwoo_IDataProvider) { + $this->data = $data->getData(); + } elseif (is_array($data)) { + $this->data = $data; + } else { + throw new Dwoo_Exception('Dwoo->get/Dwoo->output\'s data argument must be a Dwoo_IDataProvider object (i.e. Dwoo_Data) or an associative array', E_USER_NOTICE); + } + + $this->globals['template'] = $_tpl->getName(); + $this->initRuntimeVars($_tpl); + + // try to get cached template + $file = $_tpl->getCachedTemplate($this); + $doCache = $file === true; + $cacheLoaded = is_string($file); + + if ($cacheLoaded === true) { + // cache is present, run it + if ($_output === true) { + include $file; + $this->template = null; + } else { + ob_start(); + include $file; + $this->template = null; + return ob_get_clean(); + } + } else { + // no cache present + if ($doCache === true) { + $dynamicId = uniqid(); + } + + // render template + $compiledTemplate = $_tpl->getCompiledTemplate($this, $_compiler); + $out = include $compiledTemplate; + + // template returned false so it needs to be recompiled + if ($out === false) { + $_tpl->forceCompilation(); + $compiledTemplate = $_tpl->getCompiledTemplate($this, $_compiler); + $out = include $compiledTemplate; + } + + if ($doCache === true) { + $out = preg_replace('/(<%|%>|<\?php|<\?|\?>)/', '', $out); + if (!class_exists('Dwoo_plugin_dynamic', false)) { + $this->getLoader()->loadPlugin('dynamic'); + } + $out = Dwoo_Plugin_dynamic::unescape($out, $dynamicId, $compiledTemplate); + } + + // process filters + foreach ($this->filters as $filter) { + if (is_array($filter) && $filter[0] instanceof Dwoo_Filter) { + $out = call_user_func($filter, $out); + } else { + $out = call_user_func($filter, $this, $out); + } + } + + if ($doCache === true) { + // building cache + $file = $_tpl->cache($this, $out); + + // run it from the cache to be sure dynamics are rendered + if ($_output === true) { + include $file; + // exit render mode + $this->template = null; + } else { + ob_start(); + include $file; + // exit render mode + $this->template = null; + return ob_get_clean(); + } + } else { + // no need to build cache + // exit render mode + $this->template = null; + // output + if ($_output === true) { + echo $out; + } + return $out; + } + } + } + + /** + * re-initializes the globals array before each template run + * + * this method is only callede once when the Dwoo object is created + */ + protected function initGlobals() + { + $this->globals = array + ( + 'version' => self::VERSION, + 'ad' => 'Powered by Dwoo', + 'now' => $_SERVER['REQUEST_TIME'], + 'charset' => $this->charset, + ); + } + + /** + * re-initializes the runtime variables before each template run + * + * override this method to inject data in the globals array if needed, this + * method is called before each template execution + * + * @param Dwoo_ITemplate $tpl the template that is going to be rendered + */ + protected function initRuntimeVars(Dwoo_ITemplate $tpl) + { + $this->runtimePlugins = array(); + $this->scope =& $this->data; + $this->scopeTree = array(); + $this->stack = array(); + $this->curBlock = null; + $this->buffer = ''; + } + + /* + * --------- settings functions --------- + */ + + /** + * adds a custom plugin that is not in one of the plugin directories + * + * @param string $name the plugin name to be used in the templates + * @param callback $callback the plugin callback, either a function name, + * a class name or an array containing an object + * or class name and a method name + * @param bool $compilable if set to true, the plugin is assumed to be compilable + */ + public function addPlugin($name, $callback, $compilable = false) + { + $compilable = $compilable ? self::COMPILABLE_PLUGIN : 0; + if (is_array($callback)) { + if (is_subclass_of(is_object($callback[0]) ? get_class($callback[0]) : $callback[0], 'Dwoo_Block_Plugin')) { + $this->plugins[$name] = array('type'=>self::BLOCK_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>(is_object($callback[0]) ? get_class($callback[0]) : $callback[0])); + } else { + $this->plugins[$name] = array('type'=>self::CLASS_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>(is_object($callback[0]) ? get_class($callback[0]) : $callback[0]), 'function'=>$callback[1]); + } + } elseif (class_exists($callback, false)) { + if (is_subclass_of($callback, 'Dwoo_Block_Plugin')) { + $this->plugins[$name] = array('type'=>self::BLOCK_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>$callback); + } else { + $this->plugins[$name] = array('type'=>self::CLASS_PLUGIN | $compilable, 'callback'=>$callback, 'class'=>$callback, 'function'=>'process'); + } + } elseif (function_exists($callback)) { + $this->plugins[$name] = array('type'=>self::FUNC_PLUGIN | $compilable, 'callback'=>$callback); + } else { + throw new Dwoo_Exception('Callback could not be processed correctly, please check that the function/class you used exists'); + } + } + + /** + * removes a custom plugin + * + * @param string $name the plugin name + */ + public function removePlugin($name) + { + if (isset($this->plugins[$name])) { + unset($this->plugins[$name]); + } + } + + /** + * adds a filter to this Dwoo instance, it will be used to filter the output of all the templates rendered by this instance + * + * @param mixed $callback a callback or a filter name if it is autoloaded from a plugin directory + * @param bool $autoload if true, the first parameter must be a filter name from one of the plugin directories + */ + public function addFilter($callback, $autoload = false) + { + if ($autoload) { + $class = 'Dwoo_Filter_'.$callback; + + if (!class_exists($class, false) && !function_exists($class)) { + try { + $this->getLoader()->loadPlugin($callback); + } catch (Dwoo_Exception $e) { + if (strstr($callback, 'Dwoo_Filter_')) { + throw new Dwoo_Exception('Wrong filter name : '.$callback.', the "Dwoo_Filter_" prefix should not be used, please only use "'.str_replace('Dwoo_Filter_', '', $callback).'"'); + } else { + throw new Dwoo_Exception('Wrong filter name : '.$callback.', when using autoload the filter must be in one of your plugin dir as "name.php" containg a class or function named "Dwoo_Filter_name"'); + } + } + } + + if (class_exists($class, false)) { + $callback = array(new $class($this), 'process'); + } elseif (function_exists($class)) { + $callback = $class; + } else { + throw new Dwoo_Exception('Wrong filter name : '.$callback.', when using autoload the filter must be in one of your plugin dir as "name.php" containg a class or function named "Dwoo_Filter_name"'); + } + + $this->filters[] = $callback; + } else { + $this->filters[] = $callback; + } + } + + /** + * removes a filter + * + * @param mixed $callback callback or filter name if it was autoloaded + */ + public function removeFilter($callback) + { + if (($index = array_search('Dwoo_Filter_'.$callback, $this->filters, true)) !== false) { + unset($this->filters[$index]); + } elseif (($index = array_search($callback, $this->filters, true)) !== false) { + unset($this->filters[$index]); + } else { + $class = 'Dwoo_Filter_' . $callback; + foreach ($this->filters as $index=>$filter) { + if (is_array($filter) && $filter[0] instanceof $class) { + unset($this->filters[$index]); + break; + } + } + } + } + + /** + * adds a resource or overrides a default one + * + * @param string $name the resource name + * @param string $class the resource class (which must implement Dwoo_ITemplate) + * @param callback $compilerFactory the compiler factory callback, a function that must return a compiler instance used to compile this resource, if none is provided. by default it will produce a Dwoo_Compiler object + */ + public function addResource($name, $class, $compilerFactory = null) + { + if (strlen($name) < 2) { + throw new Dwoo_Exception('Resource names must be at least two-character long to avoid conflicts with Windows paths'); + } + + if (!class_exists($class)) { + throw new Dwoo_Exception('Resource class does not exist'); + } + + $interfaces = class_implements($class); + if (in_array('Dwoo_ITemplate', $interfaces) === false) { + throw new Dwoo_Exception('Resource class must implement Dwoo_ITemplate'); + } + + $this->resources[$name] = array('class'=>$class, 'compiler'=>$compilerFactory); + } + + /** + * removes a custom resource + * + * @param string $name the resource name + */ + public function removeResource($name) + { + unset($this->resources[$name]); + if ($name==='file') { + $this->resources['file'] = array('class'=>'Dwoo_Template_File', 'compiler'=>null); + } + } + + /* + * --------- getters and setters --------- + */ + + /** + * sets the loader object to use to load plugins + * + * @param Dwoo_ILoader $loader loader object + */ + public function setLoader(Dwoo_ILoader $loader) + { + $this->loader = $loader; + } + + /** + * returns the current loader object or a default one if none is currently found + * + * @param Dwoo_ILoader + */ + public function getLoader() + { + if ($this->loader === null) { + $this->loader = new Dwoo_Loader($this->getCompileDir()); + } + + return $this->loader; + } + + /** + * returns the custom plugins loaded + * + * used by the Dwoo_ITemplate classes to pass the custom plugins to their Dwoo_ICompiler instance + * + * @return array + */ + public function getCustomPlugins() + { + return $this->plugins; + } + + /** + * returns the cache directory with a trailing DIRECTORY_SEPARATOR + * + * @return string + */ + public function getCacheDir() + { + if ($this->cacheDir === null) { + $this->setCacheDir(dirname(__FILE__).DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR); + } + + return $this->cacheDir; + } + + /** + * sets the cache directory and automatically appends a DIRECTORY_SEPARATOR + * + * @param string $dir the cache directory + */ + public function setCacheDir($dir) + { + $this->cacheDir = rtrim($dir, '/\\').DIRECTORY_SEPARATOR; + if (is_writable($this->cacheDir) === false) { + throw new Dwoo_Exception('The cache directory must be writable, chmod "'.$this->cacheDir.'" to make it writable'); + } + } + + /** + * returns the compile directory with a trailing DIRECTORY_SEPARATOR + * + * @return string + */ + public function getCompileDir() + { + if ($this->compileDir === null) { + $this->setCompileDir(dirname(__FILE__).DIRECTORY_SEPARATOR.'compiled'.DIRECTORY_SEPARATOR); + } + + return $this->compileDir; + } + + /** + * sets the compile directory and automatically appends a DIRECTORY_SEPARATOR + * + * @param string $dir the compile directory + */ + public function setCompileDir($dir) + { + $this->compileDir = rtrim($dir, '/\\').DIRECTORY_SEPARATOR; + if (is_writable($this->compileDir) === false) { + throw new Dwoo_Exception('The compile directory must be writable, chmod "'.$this->compileDir.'" to make it writable'); + } + } + + /** + * returns the default cache time that is used with templates that do not have a cache time set + * + * @return int the duration in seconds + */ + public function getCacheTime() + { + return $this->cacheTime; + } + + /** + * sets the default cache time to use with templates that do not have a cache time set + * + * @param int $seconds the duration in seconds + */ + public function setCacheTime($seconds) + { + $this->cacheTime = (int) $seconds; + } + + /** + * returns the character set used by the string manipulation plugins + * + * the charset is automatically lowercased + * + * @return string + */ + public function getCharset() + { + return $this->charset; + } + + /** + * sets the character set used by the string manipulation plugins + * + * the charset will be automatically lowercased + * + * @param string $charset the character set + */ + public function setCharset($charset) + { + $this->charset = strtolower((string) $charset); + } + + /** + * returns the current template being rendered, when applicable, or null + * + * @return Dwoo_ITemplate|null + */ + public function getTemplate() + { + return $this->template; + } + + /** + * sets the current template being rendered + * + * @param Dwoo_ITemplate $tpl template object + */ + public function setTemplate(Dwoo_ITemplate $tpl) + { + $this->template = $tpl; + } + + /** + * sets the default compiler factory function for the given resource name + * + * a compiler factory must return a Dwoo_ICompiler object pre-configured to fit your needs + * + * @param string $resourceName the resource name (i.e. file, string) + * @param callback $compilerFactory the compiler factory callback + */ + public function setDefaultCompilerFactory($resourceName, $compilerFactory) + { + $this->resources[$resourceName]['compiler'] = $compilerFactory; + } + + /** + * returns the default compiler factory function for the given resource name + * + * @param string $resourceName the resource name + * @return callback the compiler factory callback + */ + public function getDefaultCompilerFactory($resourceName) + { + return $this->resources[$resourceName]['compiler']; + } + + /** + * sets the security policy object to enforce some php security settings + * + * use this if untrusted persons can modify templates + * + * @param Dwoo_Security_Policy $policy the security policy object + */ + public function setSecurityPolicy(Dwoo_Security_Policy $policy = null) + { + $this->securityPolicy = $policy; + } + + /** + * returns the current security policy object or null by default + * + * @return Dwoo_Security_Policy|null the security policy object if any + */ + public function getSecurityPolicy() + { + return $this->securityPolicy; + } + + /** + * sets the object that must be used as a plugin proxy when plugin can't be found + * by dwoo's loader + * + * @param Dwoo_IPluginProxy $pluginProxy the proxy object + */ + public function setPluginProxy(Dwoo_IPluginProxy $pluginProxy) { + $this->pluginProxy = $pluginProxy; + } + + /** + * returns the current plugin proxy object or null by default + * + * @param Dwoo_IPluginProxy|null the proxy object if any + */ + public function getPluginProxy() { + return $this->pluginProxy; + } + + /* + * --------- util functions --------- + */ + + /** + * [util function] checks whether the given template is cached or not + * + * @param Dwoo_ITemplate $tpl the template object + * @return bool + */ + public function isCached(Dwoo_ITemplate $tpl) + { + return is_string($tpl->getCachedTemplate($this)); + } + + /** + * [util function] clears the cached templates if they are older than the given time + * + * @param int $olderThan minimum time (in seconds) required for a cached template to be cleared + * @return int the amount of templates cleared + */ + public function clearCache($olderThan=-1) + { + $cacheDirs = new RecursiveDirectoryIterator($this->getCacheDir()); + $cache = new RecursiveIteratorIterator($cacheDirs); + $expired = time() - $olderThan; + $count = 0; + foreach ($cache as $file) { + if ($cache->isDot() || $cache->isDir() || substr($file, -5) !== '.html') { + continue; + } + if ($cache->getCTime() < $expired) { + $count += unlink((string) $file) ? 1 : 0; + } + } + return $count; + } + + /** + * [util function] fetches a template object of the given resource + * + * @param string $resourceName the resource name (i.e. file, string) + * @param string $resourceId the resource identifier (i.e. file path) + * @param int $cacheTime the cache time setting for this resource + * @param string $cacheId the unique cache identifier + * @param string $compileId the unique compiler identifier + * @return Dwoo_ITemplate + */ + public function templateFactory($resourceName, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null) + { + if (isset($this->resources[$resourceName])) { + // TODO could be changed to $this->resources[$resourceName]['class']::templateFactory(..) in 5.3 maybe + return call_user_func(array($this->resources[$resourceName]['class'], 'templateFactory'), $this, $resourceId, $cacheTime, $cacheId, $compileId, $parentTemplate); + } else { + throw new Dwoo_Exception('Unknown resource type : '.$resourceName); + } + } + + /** + * [util function] checks if the input is an array or an iterator object, optionally it can also check if it's empty + * + * @param mixed $value the variable to check + * @param bool $checkIsEmpty if true, the function will also check if the array is empty, + * and return true only if it's not empty + * @return bool true if it's an array (and not empty) or false if it's not an array (or if it's empty) + */ + public function isArray($value, $checkIsEmpty=false) + { + if (is_array($value) === true) { + if ($checkIsEmpty === false) { + return true; + } else { + return count($value) > 0; + } + } elseif ($value instanceof Iterator) { + if ($checkIsEmpty === false) { + return true; + } elseif ($value instanceof Countable) { + return count($value) > 0; + } else { + $value->rewind(); + return $value->valid(); + } + } elseif ($value instanceof ArrayAccess) { + if ($checkIsEmpty === false) { + return true; + } elseif ($value instanceof Countable) { + return count($value) > 0; + } else { + return $value->offsetExists(0); + } + } + return false; + } + + /** + * [util function] triggers a dwoo error + * + * @param string $message the error message + * @param int $level the error level, one of the PHP's E_* constants + */ + public function triggerError($message, $level=E_USER_NOTICE) + { + if (!($tplIdentifier = $this->template->getResourceIdentifier())) { + $tplIdentifier = $this->template->getResourceName(); + } + trigger_error('Dwoo error (in '.$tplIdentifier.') : '.$message, $level); + } + + /* + * --------- runtime functions --------- + */ + + /** + * [runtime function] adds a block to the block stack + * + * @param string $blockName the block name (without Dwoo_Plugin_ prefix) + * @param array $args the arguments to be passed to the block's init() function + * @return Dwoo_Block_Plugin the newly created block + */ + public function addStack($blockName, array $args=array()) + { + if (isset($this->plugins[$blockName])) { + $class = $this->plugins[$blockName]['class']; + } else { + $class = 'Dwoo_Plugin_'.$blockName; + } + + if ($this->curBlock !== null) { + $this->curBlock->buffer(ob_get_contents()); + ob_clean(); + } else { + $this->buffer .= ob_get_contents(); + ob_clean(); + } + + $block = new $class($this); + + $cnt = count($args); + if ($cnt===0) { + $block->init(); + } elseif ($cnt===1) { + $block->init($args[0]); + } elseif ($cnt===2) { + $block->init($args[0], $args[1]); + } elseif ($cnt===3) { + $block->init($args[0], $args[1], $args[2]); + } elseif ($cnt===4) { + $block->init($args[0], $args[1], $args[2], $args[3]); + } else { + call_user_func_array(array($block,'init'), $args); + } + + $this->stack[] = $this->curBlock = $block; + return $block; + } + + /** + * [runtime function] removes the plugin at the top of the block stack + * + * calls the block buffer() function, followed by a call to end() + * and finally a call to process() + */ + public function delStack() + { + $args = func_get_args(); + + $this->curBlock->buffer(ob_get_contents()); + ob_clean(); + + $cnt = count($args); + if ($cnt===0) { + $this->curBlock->end(); + } elseif ($cnt===1) { + $this->curBlock->end($args[0]); + } elseif ($cnt===2) { + $this->curBlock->end($args[0], $args[1]); + } elseif ($cnt===3) { + $this->curBlock->end($args[0], $args[1], $args[2]); + } elseif ($cnt===4) { + $this->curBlock->end($args[0], $args[1], $args[2], $args[3]); + } else { + call_user_func_array(array($this->curBlock, 'end'), $args); + } + + $tmp = array_pop($this->stack); + + if (count($this->stack) > 0) { + $this->curBlock = end($this->stack); + $this->curBlock->buffer($tmp->process()); + } else { + $this->curBlock = null; + echo $tmp->process(); + } + + unset($tmp); + } + + /** + * [runtime function] returns the parent block of the given block + * + * @param Dwoo_Block_Plugin $block + * @return Dwoo_Block_Plugin or false if the given block isn't in the stack + */ + public function getParentBlock(Dwoo_Block_Plugin $block) + { + $index = array_search($block, $this->stack, true); + if ($index !== false && $index > 0) { + return $this->stack[$index-1]; + } + return false; + } + + /** + * [runtime function] finds the closest block of the given type, starting at the top of the stack + * + * @param string $type the type of plugin you want to find + * @return Dwoo_Block_Plugin or false if no plugin of such type is in the stack + */ + public function findBlock($type) + { + if (isset($this->plugins[$type])) { + $type = $this->plugins[$type]['class']; + } else { + $type = 'Dwoo_Plugin_'.str_replace('Dwoo_Plugin_', '', $type); + } + + $keys = array_keys($this->stack); + while (($key = array_pop($keys)) !== false) { + if ($this->stack[$key] instanceof $type) { + return $this->stack[$key]; + } + } + return false; + } + + /** + * [runtime function] returns a Dwoo_Plugin of the given class + * + * this is so a single instance of every class plugin is created at each template run, + * allowing class plugins to have "per-template-run" static variables + * + * @private + * @param string $class the class name + * @return mixed an object of the given class + */ + public function getObjectPlugin($class) + { + if (isset($this->runtimePlugins[$class])) { + return $this->runtimePlugins[$class]; + } + return $this->runtimePlugins[$class] = new $class($this); + } + + /** + * [runtime function] calls the process() method of the given class-plugin name + * + * @param string $plugName the class plugin name (without Dwoo_Plugin_ prefix) + * @param array $params an array of parameters to send to the process() method + * @return string the process() return value + */ + public function classCall($plugName, array $params = array()) + { + $class = 'Dwoo_Plugin_'.$plugName; + + $plugin = $this->getObjectPlugin($class); + + $cnt = count($params); + if ($cnt===0) { + return $plugin->process(); + } elseif ($cnt===1) { + return $plugin->process($params[0]); + } elseif ($cnt===2) { + return $plugin->process($params[0], $params[1]); + } elseif ($cnt===3) { + return $plugin->process($params[0], $params[1], $params[2]); + } elseif ($cnt===4) { + return $plugin->process($params[0], $params[1], $params[2], $params[3]); + } else { + return call_user_func_array(array($plugin, 'process'), $params); + } + } + + /** + * [runtime function] calls a php function + * + * @param string $callback the function to call + * @param array $params an array of parameters to send to the function + * @return mixed the return value of the called function + */ + public function arrayMap($callback, array $params) + { + if ($params[0] === $this) { + $addThis = true; + array_shift($params); + } + if ((is_array($params[0]) || ($params[0] instanceof Iterator && $params[0] instanceof ArrayAccess))) { + if (empty($params[0])) { + return $params[0]; + } + + // array map + $out = array(); + $cnt = count($params); + + if (isset($addThis)) { + array_unshift($params, $this); + $items = $params[1]; + $keys = array_keys($items); + + if (is_string($callback) === false) { + while (($i = array_shift($keys)) !== null) { + $out[] = call_user_func_array($callback, array(1=>$items[$i]) + $params); + } + } elseif ($cnt===1) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($this, $items[$i]); + } + } elseif ($cnt===2) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($this, $items[$i], $params[2]); + } + } elseif ($cnt===3) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($this, $items[$i], $params[2], $params[3]); + } + } else { + while (($i = array_shift($keys)) !== null) { + $out[] = call_user_func_array($callback, array(1=>$items[$i]) + $params); + } + } + } else { + $items = $params[0]; + $keys = array_keys($items); + + if (is_string($callback) === false) { + while (($i = array_shift($keys)) !== null) { + $out[] = call_user_func_array($callback, array($items[$i]) + $params); + } + } elseif ($cnt===1) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($items[$i]); + } + } elseif ($cnt===2) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($items[$i], $params[1]); + } + } elseif ($cnt===3) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($items[$i], $params[1], $params[2]); + } + } elseif ($cnt===4) { + while (($i = array_shift($keys)) !== null) { + $out[] = $callback($items[$i], $params[1], $params[2], $params[3]); + } + } else { + while (($i = array_shift($keys)) !== null) { + $out[] = call_user_func_array($callback, array($items[$i]) + $params); + } + } + } + return $out; + } else { + return $params[0]; + } + } + + /** + * [runtime function] reads a variable into the given data array + * + * @param string $varstr the variable string, using dwoo variable syntax (i.e. "var.subvar[subsubvar]->property") + * @param mixed $data the data array or object to read from + * @param bool $safeRead if true, the function will check whether the index exists to prevent any notices from being output + * @return mixed + */ + public function readVarInto($varstr, $data, $safeRead = false) + { + if ($data === null) { + return null; + } + + if (is_array($varstr) === false) { + preg_match_all('#(\[|->|\.)?((?:[^.[\]-]|-(?!>))+)\]?#i', $varstr, $m); + } else { + $m = $varstr; + } + unset($varstr); + + while (list($k, $sep) = each($m[1])) { + if ($sep === '.' || $sep === '[' || $sep === '') { + if ((is_array($data) || $data instanceof ArrayAccess) && ($safeRead === false || isset($data[$m[2][$k]]))) { + $data = $data[$m[2][$k]]; + } else { + return null; + } + } else { + if (is_object($data) && ($safeRead === false || isset($data->$m[2][$k]) || is_callable(array($data, '__get')))) { + $data = $data->$m[2][$k]; + } else { + return null; + } + } + } + + return $data; + } + + /** + * [runtime function] reads a variable into the parent scope + * + * @param int $parentLevels the amount of parent levels to go from the current scope + * @param string $varstr the variable string, using dwoo variable syntax (i.e. "var.subvar[subsubvar]->property") + * @return mixed + */ + public function readParentVar($parentLevels, $varstr = null) + { + $tree = $this->scopeTree; + $cur = $this->data; + + while ($parentLevels--!==0) { + array_pop($tree); + } + + while (($i = array_shift($tree)) !== null) { + if (is_object($cur)) { + $cur = $cur->$i; + } else { + $cur = $cur[$i]; + } + } + + if ($varstr!==null) { + return $this->readVarInto($varstr, $cur); + } else { + return $cur; + } + } + + /** + * [runtime function] reads a variable into the current scope + * + * @param string $varstr the variable string, using dwoo variable syntax (i.e. "var.subvar[subsubvar]->property") + * @return mixed + */ + public function readVar($varstr) + { + if (is_array($varstr)===true) { + $m = $varstr; + unset($varstr); + } else { + if (strstr($varstr, '.') === false && strstr($varstr, '[') === false && strstr($varstr, '->') === false) { + if ($varstr === 'dwoo') { + return $this->globals; + } elseif ($varstr === '__' || $varstr === '_root' ) { + return $this->data; + $varstr = substr($varstr, 6); + } elseif ($varstr === '_' || $varstr === '_parent') { + $varstr = '.'.$varstr; + $tree = $this->scopeTree; + $cur = $this->data; + array_pop($tree); + + while (($i = array_shift($tree)) !== null) { + if (is_object($cur)) { + $cur = $cur->$i; + } else { + $cur = $cur[$i]; + } + } + + return $cur; + } + + $cur = $this->scope; + + if (isset($cur[$varstr])) { + return $cur[$varstr]; + } else { + return null; + } + } + + if (substr($varstr, 0, 1) === '.') { + $varstr = 'dwoo'.$varstr; + } + + preg_match_all('#(\[|->|\.)?((?:[^.[\]-]|-(?!>))+)\]?#i', $varstr, $m); + } + + $i = $m[2][0]; + if ($i === 'dwoo') { + $cur = $this->globals; + array_shift($m[2]); + array_shift($m[1]); + switch ($m[2][0]) { + + case 'get': + $cur = $_GET; + break; + case 'post': + $cur = $_POST; + break; + case 'session': + $cur = $_SESSION; + break; + case 'cookies': + case 'cookie': + $cur = $_COOKIE; + break; + case 'server': + $cur = $_SERVER; + break; + case 'env': + $cur = $_ENV; + break; + case 'request': + $cur = $_REQUEST; + break; + case 'const': + array_shift($m[2]); + if (defined($m[2][0])) { + return constant($m[2][0]); + } else { + return null; + } + + } + if ($cur !== $this->globals) { + array_shift($m[2]); + array_shift($m[1]); + } + } elseif ($i === '__' || $i === '_root') { + $cur = $this->data; + array_shift($m[2]); + array_shift($m[1]); + } elseif ($i === '_' || $i === '_parent') { + $tree = $this->scopeTree; + $cur = $this->data; + + while (true) { + array_pop($tree); + array_shift($m[2]); + array_shift($m[1]); + if (current($m[2]) === '_' || current($m[2]) === '_parent') { + continue; + } + + while (($i = array_shift($tree)) !== null) { + if (is_object($cur)) { + $cur = $cur->$i; + } else { + $cur = $cur[$i]; + } + } + break; + } + } else { + $cur = $this->scope; + } + + while (list($k, $sep) = each($m[1])) { + if ($sep === '.' || $sep === '[' || $sep === '') { + if ((is_array($cur) || $cur instanceof ArrayAccess) && isset($cur[$m[2][$k]])) { + $cur = $cur[$m[2][$k]]; + } else { + return null; + } + } elseif ($sep === '->') { + if (is_object($cur)) { + $cur = $cur->$m[2][$k]; + } else { + return null; + } + } else { + return null; + } + } + + return $cur; + } + + /** + * [runtime function] assign the value to the given variable + * + * @param mixed $value the value to assign + * @param string $scope the variable string, using dwoo variable syntax (i.e. "var.subvar[subsubvar]->property") + * @return bool true if assigned correctly or false if a problem occured while parsing the var string + */ + public function assignInScope($value, $scope) + { + $tree =& $this->scopeTree; + $data =& $this->data; + + if (!is_string($scope)) { + return $this->triggerError('Assignments must be done into strings, ('.gettype($scope).') '.var_export($scope, true).' given', E_USER_ERROR); + } + if (strstr($scope, '.') === false && strstr($scope, '->') === false) { + $this->scope[$scope] = $value; + } else { + // TODO handle _root/_parent scopes ? + preg_match_all('#(\[|->|\.)?([^.[\]-]+)\]?#i', $scope, $m); + + $cur =& $this->scope; + $last = array(array_pop($m[1]), array_pop($m[2])); + + while (list($k, $sep) = each($m[1])) { + if ($sep === '.' || $sep === '[' || $sep === '') { + if (is_array($cur) === false) { + $cur = array(); + } + $cur =& $cur[$m[2][$k]]; + } elseif ($sep === '->') { + if (is_object($cur) === false) { + $cur = new stdClass; + } + $cur =& $cur->$m[2][$k]; + } else { + return false; + } + } + + if ($last[0] === '.' || $last[0] === '[' || $last[0] === '') { + if (is_array($cur) === false) { + $cur = array(); + } + $cur[$last[1]] = $value; + } elseif ($last[0] === '->') { + if (is_object($cur) === false) { + $cur = new stdClass; + } + $cur->$last[1] = $value; + } else { + return false; + } + } + } + + /** + * [runtime function] sets the scope to the given scope string or array + * + * @param mixed $scope a string i.e. "level1.level2" or an array i.e. array("level1", "level2") + * @param bool $absolute if true, the scope is set from the top level scope and not from the current scope + * @return array the current scope tree + */ + public function setScope($scope, $absolute = false) + { + $old = $this->scopeTree; + + if (is_string($scope)===true) { + $scope = explode('.', $scope); + } + + if ($absolute===true) { + $this->scope =& $this->data; + $this->scopeTree = array(); + } + + while (($bit = array_shift($scope)) !== null) { + if ($bit === '_' || $bit === '_parent') { + array_pop($this->scopeTree); + $this->scope =& $this->data; + $cnt = count($this->scopeTree); + for ($i=0;$i<$cnt;$i++) + $this->scope =& $this->scope[$this->scopeTree[$i]]; + } elseif ($bit === '__' || $bit === '_root') { + $this->scope =& $this->data; + $this->scopeTree = array(); + } elseif (isset($this->scope[$bit])) { + $this->scope =& $this->scope[$bit]; + $this->scopeTree[] = $bit; + } else { + unset($this->scope); + $this->scope = null; + } + } + + return $old; + } + + /** + * [runtime function] returns the entire data array + * + * @return array + */ + public function getData() + { + return $this->data; + } + + /** + * [runtime function] returns a reference to the current scope + * + * @return &mixed + */ + public function &getScope() + { + return $this->scope; + } + + /** + * Redirects all calls to unexisting to plugin proxy. + * + * @param string Method name + * @param array List of arguments + * @return mixed + */ + public function __call($method, $args) { + $proxy = $this->getPluginProxy(); + if (!$proxy) { + throw new Dwoo_Exception('Call to undefined method '.__CLASS__.'::'.$method.'()'); + } + return call_user_func_array($proxy->getCallback($method), $args); + } +} diff --git a/system/libs/dwoo/Dwoo/Adapters/Agavi/DwooRenderer.php b/system/libs/dwoo/Dwoo/Adapters/Agavi/DwooRenderer.php new file mode 100644 index 00000000..d532ad7f --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/Agavi/DwooRenderer.php @@ -0,0 +1,196 @@ + + * + * ro + * rq + * ct + * us + * tm + * rd + * + * true + * %core.lib_dir%/dwoo_plugins + * + * + * - add dwoo's directory to your include path or include dwooAutoload.php yourself + * either through agavi's autoload.xml (with name="Dwoo") or through your index.php + * + * Notes: + * - you can copy the /Dwoo/Adapters/Agavi/dwoo_plugins directory to your agavi app's + * lib directory, or change the plugin_dir parameter in the output_types.xml file. + * these plugins are agavi-specific helpers that shortens the syntax to call common + * agavi helpers (i18n, routing, ..) + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class DwooRenderer extends AgaviRenderer implements AgaviIReusableRenderer +{ + /** + * @constant string The directory inside the cache dir where templates will + * be stored in compiled form. + */ + const COMPILE_DIR = 'templates'; + + /** + * @constant string The subdirectory inside the compile dir where templates + * will be stored in compiled form. + */ + const COMPILE_SUBDIR = 'dwoo'; + + /** + * @constant string The directory inside the cache dir where cached content + * will be stored. + */ + const CACHE_DIR = 'dwoo'; + + /** + * @var Dwoo Dwoo template engine. + */ + protected $dwoo = null; + + /** + * @var string A string with the default template file extension, + * including the dot. + */ + protected $defaultExtension = '.html'; + + /** + * stores the (optional) plugin directory to add to the Dwoo_Loader + */ + protected $plugin_dir = null; + + /** + * Pre-serialization callback. + * + * Excludes the Dwoo instance to prevent excessive serialization load. + */ + public function __sleep() + { + $keys = parent::__sleep(); + unset($keys[array_search('dwoo', $keys)]); + return $keys; + } + + /** + * Initialize this Renderer. + * + * @param AgaviContext The current application context. + * @param array An associative array of initialization parameters. + */ + public function initialize(AgaviContext $context, array $parameters = array()) + { + parent::initialize($context, $parameters); + + $this->plugin_dir = $this->getParameter('plugin_dir', $this->plugin_dir); + } + + /** + * provides a custom compiler to the dwoo renderer with optional settings + * you can set in the agavi output_types.xml config file + * + * @return Dwoo_Compiler + */ + public function compilerFactory() + { + if (class_exists('Dwoo_Compiler', false) === false) { + include DWOO_DIRECTORY . 'Dwoo/Compiler.php'; + } + $compiler = Dwoo_Compiler::compilerFactory(); + $compiler->setAutoEscape((bool) $this->getParameter('auto_escape', false)); + return $compiler; + } + + /** + * Grab a cleaned up dwoo instance. + * + * @return Dwoo A Dwoo instance. + */ + protected function getEngine() + { + if($this->dwoo) { + return $this->dwoo; + } + + if(!class_exists('Dwoo')) { + if (file_exists(dirname(__FILE__).'/../../../dwooAutoload.php')) { + // file was dropped with the entire dwoo package + require dirname(__FILE__).'/../../../dwooAutoload.php'; + } else { + // assume the dwoo package is in the include path + require 'dwooAutoload.php'; + } + } + + $parentMode = fileperms(AgaviConfig::get('core.cache_dir')); + + $compileDir = AgaviConfig::get('core.cache_dir') . DIRECTORY_SEPARATOR . self::COMPILE_DIR . DIRECTORY_SEPARATOR . self::COMPILE_SUBDIR; + AgaviToolkit::mkdir($compileDir, $parentMode, true); + + $cacheDir = AgaviConfig::get('core.cache_dir') . DIRECTORY_SEPARATOR . self::CACHE_DIR; + AgaviToolkit::mkdir($cacheDir, $parentMode, true); + + $this->dwoo = new Dwoo($compileDir, $cacheDir); + + if (!empty($this->plugin_dir)) { + $this->dwoo->getLoader()->addDirectory($this->plugin_dir); + } + + $this->dwoo->setDefaultCompilerFactory('file', array($this, 'compilerFactory')); + + return $this->dwoo; + } + + /** + * Render the presentation and return the result. + * + * @param AgaviTemplateLayer The template layer to render. + * @param array The template variables. + * @param array The slots. + * @param array Associative array of additional assigns. + * + * @return string A rendered result. + */ + public function render(AgaviTemplateLayer $layer, array &$attributes = array(), array &$slots = array(), array &$moreAssigns = array()) + { + $engine = $this->getEngine(); + + $data = array(); + if($this->extractVars) { + $data = $attributes; + } else { + $data[$this->varName] = &$attributes; + } + + $data[$this->slotsVarName] =& $slots; + + foreach($this->assigns as $key => $getter) { + $data[$key] = $this->context->$getter(); + } + + foreach($moreAssigns as $key => &$value) { + if(isset($this->moreAssignNames[$key])) { + $key = $this->moreAssignNames[$key]; + } + $data[$key] =& $value; + } + + return $engine->get($layer->getResourceStreamIdentifier(), $data); + } +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/Agavi/README b/system/libs/dwoo/Dwoo/Adapters/Agavi/README new file mode 100644 index 00000000..825ce603 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/Agavi/README @@ -0,0 +1,27 @@ +// ------------------------ +// Install notes : +// ------------------------ + + - drop dwoo's directory in app/lib/renderer (create if needed) + + - add a renderer to app/config/output_types.xml as such : + + + ro + rq + ct + us + tm + rd + + true + %core.lib_dir%/dwoo_plugins + + + - add the renderer to app/config/autoload.xml as such : + %core.lib_dir%/renderer/dwoo/Dwoo/Adapter/Agavi/DwooRenderer.php + + - you can copy the /Dwoo/Adapters/Agavi/dwoo_plugins directory to your agavi app's + lib directory, or change the plugin_dir parameter in the output_types.xml file. + these plugins are agavi-specific helpers that shortens the syntax to call common + agavi helpers (i18n, routing, ..) diff --git a/system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/t.php b/system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/t.php new file mode 100644 index 00000000..d501fb0a --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/t.php @@ -0,0 +1,32 @@ +Agavi specific plugin + * + * uses AgaviTranslationManager to localize a string + * + *
    + *  * string : the string to localize
    + * 
    + * + * Examples: + * + * {t "Hello"} + * {t $header} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +function Dwoo_Plugin_t_compile(Dwoo_Compiler $compiler, $string) +{ + return '$this->data[\'tm\']->_('.$string.')'; +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/url.php b/system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/url.php new file mode 100644 index 00000000..bb8b222d --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/Agavi/dwoo_plugins/url.php @@ -0,0 +1,54 @@ +Agavi specific plugin + * + * uses AgaviRouting to create an url + * + *
    + *  * route : the route name, optional (by default the current url is returned)
    + *  * params : an array with variables to build the route, optional
    + *  * options : an array of options to pass to the routing object, optional
    + *  * rest : for convenience, you can just pass named parameters that will be used as
    + *           the params array, but you must not provide the params array in this case
    + * 
    + * + * Examples: + * + * {a url("route.name" array(param="Value", param2=$otherVal))}Here is a link{/a} + *

    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 gXLgKYc1E8k literal 0 HcmV?d00001 diff --git a/images/monsters/rocky.gif b/images/monsters/rocky.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc5c9ab12cdff41c4e3c87fc2d9d9a3566ece614 GIT binary patch literal 4165 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%0Dbpp3yzrndIK`^Ew9p?oUeUH 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 literal 0 HcmV?d00001 diff --git a/images/monsters/scarab.gif b/images/monsters/scarab.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1d9c742721b490b5b9d91f87c8edadc8b51771c GIT binary patch literal 1286 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∋ z+DFOHQH4QfJ*Co%IJR(Od2VE6evGv`8i^1MbF&$=po*Put{=r#^`B2509f{ao+T;I literal 0 HcmV?d00001 diff --git a/images/monsters/seagull.gif b/images/monsters/seagull.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c9a110d5c513857e4b5aea63908eda4ce0a7b20 GIT binary patch literal 1675 zcmZ?wbhEHbRA5kG_{_k-$jHde%`GD%V`yj?78W))j$?5m`}g^#^XAPvd-m*y4<8s% zf#OdVPA&#+2F3r}ey$F8=<2*@Z);$lhK=A*;O{Cex` zt9%P?PCvgp=F^SnjqcaO1elx`1*!<_;52oPc2&`-VD@HAWGPb8G38|GF^D(P@~_sa z%hdAY;AHDnV_;vjctd(olstGc{Tnu+!GqRtnbs2!(#_wmA9!&4B9$;Z$l+w^& zpt7+?rM&6Mat8m#hOJGlvl|jDs^X?GI4#uR$+^I{Afj2ct>e(PA1*V5ZH%XS+*X}4 z`|U5Yw;vfYD)zYhUdk`2l4f#pWeVY74mVW}&=2Nhbx=18HPJH5pRU#J(xe*A>8mBg zz&>AX*@~5`m#kZ_NEHuF!0=EN!b2Y=6;94o(24YKWRQs3b;#Gjp($(1T&F+@i&$xf zML)PifF8;YY);!^rgGce^bhv`SV`s?d(OP+3$zw5QKpJ7sxW-9im{Pp!&*s=gR4~v z!M-pJS+Lw;Pf#N;Y8ZBSoCEn{Pv7G3#tsbz0j_j0#(A^qlP+$zdAo37tg%I-Dkn?u zkpr{z_C8~^RA&hGs#R+#Nz~%5aBc6fVVlswK4t3kj+s4k=E_sW`E3}^pT*k1vIm+~ z&>|sp)mxFSLkmKas~9?S5<4{Z2qZ*3pZ(XdGaznT#@U+m7oR75tM1(xwPGjxwt8Su z#mSV(91M&H4q%efFbho51g5B5^%j@uY791Pv*)lcSh#r3Qmqv$m8jyC$rxV2l}Q#| zR|(j`$>HJU%j|F=%DQ!tfy1>`CaX*vwRr?v!xcU}7CmaVDAf9SX7$wf!}@OO~%%4U8mf E0OUh0)Bpeg literal 0 HcmV?d00001 diff --git a/images/monsters/seaserpent.gif b/images/monsters/seaserpent.gif new file mode 100644 index 0000000000000000000000000000000000000000..7dd49ef7fcd5f94fde5438cb5ef48698769ff2ee GIT binary patch literal 3451 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 literal 0 HcmV?d00001 diff --git a/images/monsters/serpent spawn.gif b/images/monsters/serpent spawn.gif new file mode 100644 index 0000000000000000000000000000000000000000..f26c0a7d943275692790625973ef29bb4ed459e8 GIT binary patch literal 4320 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 literal 0 HcmV?d00001 diff --git a/images/monsters/serpentspawn.gif b/images/monsters/serpentspawn.gif new file mode 100644 index 0000000000000000000000000000000000000000..82addbde6953dc59875f6504df2b422676f3565d GIT binary patch literal 2490 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 literal 0 HcmV?d00001 diff --git a/images/monsters/sheep.gif b/images/monsters/sheep.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c26eb3a6389dc67249daaa95493c00c6b755dba GIT binary patch literal 4571 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 Ji9`Sz{|g*&APxWk literal 0 HcmV?d00001 diff --git a/images/monsters/sibang.gif b/images/monsters/sibang.gif new file mode 100644 index 0000000000000000000000000000000000000000..d41f1d8bc687f070220d2dafc1b80c8543fa0f45 GIT binary patch literal 2449 zcmbW1e{37&8OPr{zqVf|m*f&(Qa5puOKKN4m~stXdtDFhoVbb8xSdN)XNnn@%%xUm z2{)M5l$4zvHyCP)Qv&ryq`AbU1_E;+Z0;10^RsU0z-8GKjSM+efRt6p?Fw`P$@8XZ z`+v_L&m%p5Jo-L*zMrSFtApLzqXk;AhqGAUU2yirDHDpq> zAUjC*bJwq57dW*+4QLX?`yG=}U&Lh&+B7Z}_$-XutTF3A!ovy%Fy>_uggOdP1me_i zGU5sfOw7ZF9GqSSY0Z(^02^B49G?vFkzH&0Jqy zoe=qc6AC)bnW)pHC&G3nx44jBSs(yNh=P-aF@Y8>YLkw#`%E?iNfIa}nnkPHW8-)o znGRWkCO8{$jCna1uW~S8#A8#FU_wLFPC6B|kO+;q7+X;q0kR{4Frt|p_QYKJ5vOi4 zXf|npRR`QGVEUPqXtIttVj%$`l)XHgU(IDAHkX64FqDcyvx(tM#G#=;)X9i;oztXW zh`G{X+k}@1SxM2s+E_}b0h3{e!(vK>EMB)RGU9TZ^+_M=W}%H!M+HsH$Lk^*NTG$x zvy;ihVk(r1`a(7e0J>k`7Z$Q(KGvcqJe;aczOHxa9vAO@-23+iiQ= zjn?h08yN{!oYM3UsAw%#Jq{392kHSp1%Ls>Ck5a~(i(L-nVt%g(vF`eFQgky_rFfU zT*tg$@|-!jYW@5JX}O|#J&`=;$2QX&hnkc^C|pxF>ARK_pGPIl(c5c>b3G<}V}akZ zf8J89Fok&Q_=Y`^O#?e(d=ox5`d}|i5Y}1HxLJ0x-X1w?I=N;y70vPk?W1N->Xn>9 zH!X&+^7EYX>AiHreYd&Sh7`j=No^qdC3xh6m&)4LKfu80MB7FOv2?rlj5H!VXdioR z$~fh(J`@mN8^5z8eE%ElJPU|`T~pV$DjA7L-4 z-#L>RtZlsaW3G@K>KGctq+eCp1M28Xo{-RV!U(I|=j!Js^8*cruz!ZaO|{3RkB5`z z>JJN^;|BmG&PeZ2Ir+K{J2OqzqFB4O*Unh9l|L<1nx!w}p996(U~W)s@EMU`ub$oHCSnT~c}YdRL%+3*5a%^0?=RR#X+u4jSZI@k2C5Thrju`-`RO{YwG) zF>(Ky0QI6JPi~?;SD_J)rv@d*Gm}+PY4Inaj%psk8vD&PZJ5tLSHJH!hU_OL`^Qc2 zr8qdT`~9)3@t4@QEe}0hvMrtLe)-Pj@j#R6yRt?2f+hRxAK$Blk9~4Xp8NW#0=$BP% zTd@{$_>d@IHTCIZ=f&>P&d%mSsQZz5%Zs3^H?o-9ep21={O==QPCLuq`f>eQS+38t zrcNTe4{N<*!H3-Byi2^&Rzu%44txl2zR`~j;& z`4Y=>9VMq&4}Hh$)A;FA7qeGqK05Kh-h+Q#%+YJ!p>SIqNp@hbww@iny;qf^jCIet z6NMXB)?Ja*J@cu#N_uu@Kv`*lU4eu1-}v7}4T?P2X{>NDS7)j)o}9rY{S1#)ImnY+ zzpX#BOZuJkKltd1_;es?v#uRT5i_T#HB@E}ce4KDGMGQI3p*C?+m2~DTHK5@Ngn)2 zQ^UixsY63NHvDhv;i9}k6nTK0%O&_VJ}EJ7`(A7}!rgsNaF^X5d=wl0Vn;>7X)4=% zgatDdM@RBl=ZC&6uiitrJ&$zSc6CKMgxajE>}R>W(Ri1h2d4(nW9_8DlY0`O=yrOIxhcn*LY#hopq&Qk^m!5kVWn z3{);3P6y6oAx2JQC??&BZZ)N+cBicu(DK!yPdl5p4p5tjo*>} zhEZ51+a}!f*K}>Mf%;Js8Q9Vc_RY590(qjweBfU4?)Jsr(u((+-X1USMlT%xGp4)p kEH!CSC+l%s={@o>X0-w-=Iz}GaQ$1~@R4nAS$VMSpH&(*oB#j- literal 0 HcmV?d00001 diff --git a/images/monsters/silver rabbit.gif b/images/monsters/silver rabbit.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ffa53b025dc3c7639a95e1880de8a687cb9abd2 GIT binary patch literal 2545 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ΝJ@@brPC>p~cgD8Or3kHv3H3avBa6E6&%Qkp$`qnYQE-0_-e z7m-laCcIe?Y}f6deSPSgw0+%0=IsHu(<4=ds7sd=j$gp{r8Q6@6ysO-!50^uN+MQ# zthGJfSKF*N&B*3bDW7&^H2%`|ow~feQoySHJM89n4sM&{Y z@YUvh?$K~O_as7;N3^zQb93^^bt>$2#$OFt9EDAuse8Pdz3-jR5Q40o<$S4dizdX4uodplaMa&-8H1g<;t`wB@z|r=WzaE~G^kh>6$@lcNuVem>P?5zV9&4*5t76Lf{e!WHJYQS0YJAcNu) zE5eJk#rBLR4Z8SfVKDQ1AyXulggV^8C~nyy)yAr#^O|h&TfD z@w}AY*Ri~hJU~n!ETF)?vnnyttgJE%yhq7LT1Lgk=5Me}67S3KO%%P-jV!Hgy%?(nj_icR&U6&aUnX8<>Bf&IY+W9Gx%vAR1SciI0b$| z(6%Q$@gk{rG&;MP{DKaZY_j=uiz`t7)`oFgTH$s&AyV~n^yE5ik&=Nb&y1de4&x}> z+&tRq&}Fc@Go+{6446V3!5TpZrn)s%4D;b)XmOViA7+k=DV1y#)Gl%3&F$C{1T+X^ zT0)Q#H;bom)GmQNVBoF6fS0iV3XQcUF1@FvKpQ90IY4%6+v&+)b3}t`1`VCr z7qOlAp#L^&*Xcf5X4>Fp&6@248?HSL!PCi%AMo}7#cr3s!!ETTpY-C3U#Le7-~F_ z6jH{nv-4;TFC?O^6JI1?S7wuIor1GUPcdG9edJ)sycaZv*FX6EbCZ65DzE=s65pu% z-;(&N(0`J|2bRnrFcu5oS?S&$+F&9bElCG-o#BLq0mtph8utgM;SrG0kttdU)vsX8 zdy63yi6se~kte61vPRg=?Jk;5Zax~1LI`Fu)e2x1mXa=+0X88`{ml)grf0M`^BpxP zc8NnzPzp?>3K2;2lrZ^-kC0MXCb46$#!w2H6?e*EtF4~W)qij$CdaxccC{MUkxayJ0w;K;1P*E_-_A|1+J#S1SwMj4xO z45r34lobJC#G00+=v1}_0sC{Q{(rbszt2*P`)5)d%Kt4=Oq8%n_tqiE&T5L}{;kfR zNMv_|rah%Ge4gDmKa0K6`{X~w_>{MKCf8M)DSVng`F3yP*JG$-c5Bw}IX_m-wlr(r zWEH7K&ki?l#Xh(uU6HJulj0%&l{VHzp4sAGj>i1F(GAQHbjUdA{hSCG(mWyT{HB_K z?NoYtSXF=tzDE_LstUW$244H>0sJi+oZw16L1Gp?N9P1-t#Yl%{jcJP>74`!$7&Zz zS1ECLUW2;>}_2w?0zT7J>5KGU5&ia^G=b6=2|W!(|E(gdwj>(axF3n@`EO%n{(K-ey-)x zEe{DW+A$COei&S^NXeTgnMw>wA2s2(P6U~hGeYCP1>(NZT2TUWaQf$iU4WIa*dA!3 zA}pN3cLO^+N`|F$>ffbUC#dF#>R?7G&MM$VZ;b`#+qf*1;Q2cI*&sdw&tBJ=cOFk! zJ(_byt28IEW^f`}*rBttI)t`x$;D13Ojuh%5IwwM3U(+L&r_#AH6=5-qj)w@^HKEM zb_-x7i+?f6v7$&KR_r+(Zmg^4-MKiV3PS_75NNEcS*A5>suo`Oy5ntK4JrD1qx{V) zaaeInugK{vf7c~!%Lk_L$czIT_7@q_&o18dxwEO|O5V~87XQJtqvK1V4arz)4Gs{T zMfzNJ@a{o07Wm;(l1yX%-FJ1q0+Kb3)2GHI;@xNCx$kxe=~Kl PpS^N+?diGJ%m2Rsf)pmh literal 0 HcmV?d00001 diff --git a/images/monsters/skeleton.gif b/images/monsters/skeleton.gif new file mode 100644 index 0000000000000000000000000000000000000000..b5aa1cc97831beb87eae5836dedb7b97b1da1f6e GIT binary patch literal 3062 zcmcJRX;9PG8i&uxe<6vKA|NVi1(7O?N|ZuSVFHMPs3nU+V!(igO^`)ET%rk(8bG#? zKmajVB3ky{pj8o&vIxrJM!^E3xM5vdwbrVaSnZ5+zx2*<&*yi}hv$9f_x{$oucg}i z(Ettn1^|RmPa89yqfcF^&2(J2+s8#J@UK&T_j6nMpA&=Nzn;l!ltcz(VDf(2CRY~I z#mUok`BG~HP7YdWhBe;;^qpsid+9mqqwcfsd5hC_1Ro13sR(^^KEmosbl5L(6;BR4 zdEZnR;bvu&-mZ%32wgct7{nsEdFvB_o>0yCa?pPug*KNADX;bg6!6Dij`uxcf7qa?c}Kndg>{F z@1-i!w-7}fdN$hNQ(&8zm{v_MPLJdrY?+8O$DSvM_3LbP-I#k7njW81}gW=3y%ry0o1JBgC5aTW0@rL%g&(F_mXRgT5+ zp#l9TrkR|T1&#uDY*fmLR6S%Tn-IV!*i%QAv;9S~hHT`k{nV2wT+3!_yA4Sq7k0R< zhuI+qh#k;yl+iD=q+>#~;kQ(1skb<97elLua@Bz_T4Ih~^F^ zbF0<4?9s<}enN9kb1pr%i+F3krHSFh`k}eKYrs?~v#;0HRcue!nhCRd6j?TvG{Txq z1B3;C#GX`kpahGxQSx;rhJMd~wK>qC+v%Y&i6Q1ES`04P<6>mS3QCcz4t+=F#Oq^o zWmXmmT+?eZi$~Z&Im}^5QHDGN zLGyi6YzQiV;MKSaV?yRuc=*tApe3I~uehj^%jxQ>bJiCcy@+Zuqv0YQr0uo2Ag{U1 z#P@=|e*Ql9he!=~5|RQ&?>Fq{a8~%>|?lhNTW?o&UZ(|z0NV_(+};6 z!_8ZL&0Zez8^!yHcs$Pc#c&D0kIb z*6*zeXhssVva35;p`af)*%dk=|C# z=)06QmSh(^)9j^bPDjzSWr&_+pDB;FFi~sQ16t#WFT^0!ZJ)icUsac9vIxD}95M*~ z>>Xc66^Xf~(mMg;2?h^4)vPp$)q)!aBbknO8jP=dVyK1Nc$nL%C9^z?+^GRZ zLuS!M_ha;?#(hun=kUGOe}u09I=B9Y|7+!OTKU+04o<{z0TG#mpX7fiJXk9u1Rwyz zwQP zm%8EUD7|=o8KJ|Vq4(L^d9x2?M|Hb51rE=FA!j}7`xGrHFxY@&Mzy=!^o?kAqDkAj zqe}#|$ZzdsV7!b~#yc-;;4i>8G3yG?jPAVlovTfy%-O!ht4zDWU7Xzt)&I?rdrIjLq&co04o-{!8`C2R~Qe-|mz82=kNrQ7bb3 zF&`>2H0o0-GLmvhs6e2nF`s}cH0qxPSeZiO{!)$mJIHe*JmmN6#J!{N;RP*{8^lvHbeEePE`}5=xgIQSt|&pwM*-s;%4FGrD?T3U8uQ zeXmC-64gEEFrU6dShTDNH5+V6uJanGSwl8mNQ=+CuX5XHv?JHBMAZHmZQQ=TX7QXw znb(|ljeJGl31@r1I()QQEiArts|}s+YrLgz$*pFCWGQhf7Gd^zZ~WM9ME-Se9FF$4 z*3a-OoYU+=8`1Q}I5N{=-`~BFhahw5JpOQBb4O~EHMhQ{ zrGIBT1LfJ?RmO0K2f4Lp^VxPUuiR@vi;k4{2X4 zN==+qwTMkw$JUx`kcC0qRQ}jpBO3(`tepq_&*Xca@ILRfI;2gdi+Nm5a3pwB+IG(@ z3vo&%>~FYyC)GjQta|sKI@+|O@t#ho|1uwJhaxdT+L>BnRpy!I!0w6-L&2*50G`0y A;Q#;t literal 0 HcmV?d00001 diff --git a/images/monsters/skeletonwarrior.gif b/images/monsters/skeletonwarrior.gif new file mode 100644 index 0000000000000000000000000000000000000000..496b9f2b0c2cc21859dd66c972ff607af7722944 GIT binary patch literal 1601 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 XDbhCX%R@E?3?c(@U3)5m09f`9C{Ivw literal 0 HcmV?d00001 diff --git a/images/monsters/slick water elemental.gif b/images/monsters/slick water elemental.gif new file mode 100644 index 0000000000000000000000000000000000000000..afffcef437b547c609ed0ea1daac0b6d2c4c6c6a GIT binary patch literal 2755 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 Uk7-p%6OXkn+8!3FCBe#n13lvY6#xJL literal 0 HcmV?d00001 diff --git a/images/monsters/slim.gif b/images/monsters/slim.gif new file mode 100644 index 0000000000000000000000000000000000000000..38334148ff0411c2f6656e9752f2e7d0acf945e2 GIT binary patch literal 2758 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 literal 0 HcmV?d00001 diff --git a/images/monsters/slime.gif b/images/monsters/slime.gif new file mode 100644 index 0000000000000000000000000000000000000000..e58c3d2e7e33f6be625043b57a8e018173b6ff1c GIT binary patch literal 5232 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 KmHSu#4*d_fPi`6j literal 0 HcmV?d00001 diff --git a/images/monsters/slime2.gif b/images/monsters/slime2.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa9f25059193290931af4b7140f39681ce282574 GIT binary patch literal 1401 zcmV-<1%~=ZNk%w1VL$*t0Qdg@6XFK}%>V(a0RY+nCB_aC$`c041`OQ>0nz{)#u)(h z00W`|0VV(dc>omB6AZfw0i^)~I|2fe00OrG0qFr6%?e-LTneoP4f+iR!2&kfGYg^% z5~U6boCgG+1Qg5*00961-T(k{0A}N38NnA$*-akG8IJRd0I>i8n*b=uB>?9D0lonN zyZ{HW0|0LT0M`H%jSm2h00YGV2bu-~p8)`j004mi07(D<2><{v001)p1la@_c@_eV z0Dtj(9MT+o>w8$|R2rih62ufS^D!^*EmG%BE}<+<%}*S!9ZB6p3+)O6ivt&@6Pomv z2Ac&Pv>LeoxKZLzD(fc}+X(`U0t5R442%gY)GAriR|}sB0=)qQY6Jqx0Sw&?AjTOS z#Thc^GL`d@PU1`&xD`(AO+ec?Cd()z%p(@D6c4};CZ{MU)gKnNEd-SUZ{uzV#tI(n z9RcD2659wH%^PUpW^vhU36=yT?js542{qL;0*e3$xd#@a7ZS7*nDdk#)eHc}00f!@ zEX^(-#2yaO4H3Q&FyAi|#0L_<4i}ykh1!4=)d&u-3^DI77}*XK-V`kAEI`UKKk+~# z-y;XZ2`$thFWfFx(NrhNCIrL-X6ju9+5#WsAttdRTjN{;zXS%j0~7ZX2EGLZzXAf! z1SjDTHq|;Az!@K=84i~U9l{+t!8tn3G(XHcB;X_&#R@{$LO0|l3+D?S-X3${a3#ke zb?0?W**}r-j*|P0Aju#sz$+%qB?)H-Tjf?M%rZpNLI7R>Ugb~+tOh2fCXoM-CD#)G zH2^y2IU2ekbLVg*y&MnA1_qD@Bgh^c;tvOH25jYMR_sVn%1j&Q7sUC!0Ehqxj0FOa z0vpg39M%vf#~w)1L>1f&38)AKh6N3&3=yaeP3KE-+;9kx1%&^E43q{Z>?c&^QU#&~ zFxE6LX77SC{i84mRUWjgB_XzTR{}vs!|6kP-}XE0C7#MR4HD_ zhTO5EC?PYHe5~Ej>xWwqIuN9g`!T{XE_H3{V3VX$ElfUqK!MT;!&(ckeo2etc4V@2 z5_agofNaGI1d;CTNyASZjV)p1jG{u0gNh3m){>;V;|i`iuz&zjCnigwKH%2LaG}VW zkxwT$%*oI}ROgTpY$ZtL;7ce2LJ-OSVx^=Q1U`7iO{q3!2?u8I>_K5Laz~F67Boe< zWXeD}S0s?2PX{%avkDUP0CK_y9E_j~FX+^8T}L|bz{7nZwfXuyO510(`QH_(`1!WsTdGlDaZcmhX0s%#O1lv7eLNg2&BLd!P_ zP!K{00nCs=De;7H%Lmlt!ihKZ3=%^ZaBhSH3!Z0`7U~E$3MrH1~=%%agy6m>=?z`~DEAPB4 H1q1*)uj30o literal 0 HcmV?d00001 diff --git a/images/monsters/smoczek.gif b/images/monsters/smoczek.gif new file mode 100644 index 0000000000000000000000000000000000000000..612307f17b3ecec16f17fbeddf383fe5659e2a77 GIT binary patch literal 2913 zcmW-jdr(t%7RP@#&r1k!LjqhOKrRpEB494!q-||SXo=z1O<_G5U1AC)@7pYwzhR0YMoYhUEHK+K68HG`JQur zfBa_7%&&TtdMVi;12XVCNCXT30s#7lf?vU*#Q-M&PR4<85+P8S%wP~WAQm%Lpn$A^)i}#Y0E7afT7Xdit7c<*fKzc` zTnh*a5L$q1VS?i0S_F@mi~!g32|XZ;fK&rg50tflGy=*92oqRX3lm0|)WfRvoW-h~ zg)gAbuS3-9a|kmaO>tn-3@8(8`3?qUhSfXc4nmnz)MmbZ2dv&IQoWx4a%29=gDkBT z)mufY5AfGH80%Zojc&ftpQ>-kHM-Gy7i#jM8*N3e`mk3I5GD^{MS)ox2R6IKW*=(y zVP+q0@)71ZG;E>~6OEc_)I?)u8Z*(j4F*;cSSeuJ!M4(2z|-#{FS?pxs-BIzMA&_f0if(lO%J-5h# z33BKbF*Lm>kZ`D;32Jnjvih{vfYut;`i8XhfR-N828Og@tF~uCdyCe(!+Lr^PY>w> zqxvDYerQ_n8!!e2j6I{qA)j&7XB@a?8l_DW3Czq17(R#NbCfF zXTh^1v8Fc|b-}{Yx-ox)!-EuRi(nv&vOuXavb4{1xjmCRx6x60^mJuDwZCp3BIBHV zmL8c?(5*OJw()3D{Z*^P!56~gO*cY{ks{xFLGR>=dG;lc^1bcHV+_av#&_#113zj( zGo@}h5oSRr1=qy#zR&+s4GvK+1xl4s#rXzZ##fStf@|-B?}OT3)z@0nrNZF0j=Kw# zSIP>#+Zu{THnca62RlJm!-y+$x>PrlCCfCduD$(lO>n;Ig5j9|P=Qjp)sy6w=E9Qx zjbKr~_{aL#-?lFN_?bX6T@~#p)E&KVh@7y$EnyPUy~d(Lhtuaa&3^QqZaBH)gPb9T z{WyzvJbSKhVNvguk*?FgIQBbVqB>q!(>ckkp5JA0EGxOaD+3tszmGt<^&PEqUKe9Z z9!}eV@`L|-ig*yY!9=XT4)mRJi-V(); zifDiu%g*7ig?7GW2zpAd`km^mAG&`%lG1}C8FJpeK5nkBv*1c@`&frsxS?LINKpqJ zhUB%9!Xp*l+YXiVhs|edrLGvENSW|Q{v^$slyNH#G~MvzjOfm2l53$>@|(yq53s4c8gu*DA-K>Z?+Oo!@>VOZOE*8K=CAwyc_`4}B%ojW-~k zNa7pGZ4y=T@+_J%&aA*7c@eO4>MT%&>i#Zm-kTPzH9uNa;muxG8{>*|^qXO}s;Q5c zyW#xgNX1{zHn6yv{h{N`n#(ut=CwzlD;XOk(MPP;diz{C<|0B{xUYZL$N4q`btO|% zXStH=hbCWu41;}b+0|&oQ)=lB4kxdgn)&Mas+JoCx%;{?b*2J^1~YACAyx5(U!&Zt zn!y{~$7YRux|A+dMg*TpWODJg#!2?$-nP`U5jeb&kyTa+m3K#N>4zx+?RUm{?ng>%0i)h5$6<%mEfxDj#BR zy64P?gP^cc&JdP3GS3A)RhzFHhEa*-bM|rzS*qArO-}K3FTGQaA(s!UETll85 zx9S;LPh9pbs|z7hiz4Zw-C40N%HUZXt?rn!{JcDM`1Rdy}LtgT}JwY~Z|PrW0vGsG;mM3u)R96}c2 zRoug0u517fd!+o>V+AVhO?u&JupmjomD(N7`67s2(KxI;?ROVV2H}s(&M7y?4&g0P z;pv!s9RSA^15w5%%d9*(fUpa^7_a&4aB8Y9duqnRdnf3cTSVCX;!w`5Mh9zH$HJ=a z@K#G*;=2g9QWskKscH-qy~tgqWPpkEpL6Y#ZEL9L-`{zOng7t=wydRrJ8!(={Rv&$ zatZW_A=})&Q{&W%EyIp-ktI zw67Nxr0tS@;rv&PU}Y@C&M1+!Bmv(Z_zZKAOtJd|9cN|yxtvq3lB;$WuitZd(+(;h z1R?Gq5B!X@Eh^G6D%XXQ*2rAq$3b3AEXp@%80psjd&*?ZNgWB^( zDKoux$5uzcE@4YJ&y`@D88ieN&Wco3lD5K<=s%8+@-BWY^Hy}%CuLe{89zxp^Q2Q3 zfJ}k)Mpz3B;bOtl#e-1LnNk#CymrP*4+kIIXGnN^?23mJ;h86veEn`0B$(DY4$>zj z5?IM90QLi8AjV6Qt(A(54q*|e@?7RPXid)=zDx@N?{E}i)7@Pn>aZ{Tvx){8fb)8jws GW&a0mUIqdH literal 0 HcmV?d00001 diff --git a/images/monsters/smok.gif b/images/monsters/smok.gif new file mode 100644 index 0000000000000000000000000000000000000000..612307f17b3ecec16f17fbeddf383fe5659e2a77 GIT binary patch literal 2913 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 GW&a0mUIqdH literal 0 HcmV?d00001 diff --git a/images/monsters/smuggler.gif b/images/monsters/smuggler.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fad3bd28aced92a5fdf62794f81491ad68df659 GIT binary patch literal 1654 zcmWNQc~H{_9>u@8AR#1%5FlU(A;A)mBOGD~*N-GX5?IPPC`9Cl7%WoKvR)MkkZ@=% zDTha)2of#ZmKqXdpqCMd1gzCn8QHG7U}0rk%4S_11YB5V-kVH;05AZM zz7qm>Kp_ByLizYTI0=yK4oWu2nLq;w1Bju4tE=lz00{tp1`xZ#mjL-*kj(%N0GUkA z1=t55*fu)>kx2Xyz`?-*0Q>+VsDMME&?poJgW25N{2AaX0D}ZRK0dp5?~aX)4G#~e z(P(6Vp~f6Gn=KRy_w3mt5D27n_!3Xz@pzGuk#TWx?(Xh^fq|C+xLhusPQM1w0?@r( zBR_v&VBn|^L`6llZm%mUiin8VyLWG1US3R0j94sAPEJ-R6t7>uu95(PASK?=2@o6{ ztk>(~Ip~Fjg{LFBva+)B^75*xs$qarT$q}gs;{rVapT72%a=tWk)h*Qb91vyCabBb zA=ud+IB*~%BO^LGn#18pBodvH_W=itpDKa?>gwu@Mq@)mgI230;4p^|ANKe69|iaU zpdTP8D98wq=mt`N+1c6UgvqQOniL&%a<<;ykKr_jzS^(k)X1&^7!%N zy}i9}e%1H&^(`(gUI8$fOcwpI|2+Ek5`e{Gd1?J3F)?v;bksK8la-Y$e$rY4O>Gcqz##(_L0+`D%#B_$;{ zH&&hn@R`>2#BLW4g-b&Hvc{Ay@o{rY(c;_a@&vCPT{v;i@=Z=dT!O@o&Duj zL+^Mag(K^d3|_IErH37PVjb+8Y+;GcFr-HPR2w(*Yx$J%>YWSzN1<>`T!+Td3z%8= zC-JCQS@m)CX_Ns>O4z1D}}$p&FjI5Y%Me z(dUmk-=x;P_wo5P)3~csyR*di$OIcp6Tb$;OOVnlA`2w8Gu)cf6ftGj-)v**D221c zU#Pf3b|UCejaX^{s2yq;&JKPVbaSD!k!2buxA)ZE-X-r36RT#^K2LDnOJk3duF83} z=X^blj)7Sk?>~7Q?Mi1v$>$0k1@%u@7>xY_Yb=_yFPlmew1vuB2!Q$_@<*htZ|glgdD3ar=EX#GX9PasuvC0~?PaFX-xNi_MRS{u#9U zZgkD8snPo%);bMlf7aHZOi-ZL32BjhRk5_K-AQ{eRH>fuSa0&S!~P4KNeIrKK%I3Y z@mNjv+>^*3aqrW5Ywe2q$EMu=evwTGDeOwuItmu41a>06;I_-Xx2j2|770t*5oT4F zCx^^EC$Nt@rXd)w(-bw+w$zKl1~LYNlk=BeS+Jj8EC8&I&%@zpG!D)&2zV~Z4sSz* z7&o(d%)tx!=oO9to*oI{Rsk5{|B{JWCH*I literal 0 HcmV?d00001 diff --git a/images/monsters/snake.gif b/images/monsters/snake.gif new file mode 100644 index 0000000000000000000000000000000000000000..056e42e5295693a3ee2e7fd89e0b63c6b4955fa7 GIT binary patch literal 2752 zcmd_riBr>O8VB(AcjP33K#1HVKsb^RLJ}Yx5(0!HAclk^&=f-;fdqwch+NuWfpUZj z2xu)TpcWj!4G4%8G`d<)x)!fpt({p$t!q0vYpc_7JL9sTyF1ev{(#--Gw(m}neY2N z--M)iL0BFYP{H4Bg7tv_1VI1>0EQqK0tkQ*2u5H8fgu!vP#8vG1VvC3fiWI#t=w*RS1J|jFy=6}Ty&}-7l0)6ip;rbnDuTTCaQ&DA_ga?~q1Rb%lZSe`MVu>j}z9TWVQ!F(l3A;toj+F3Tk+@ru+Lf5vEs=Lg zN;{sG zek?Jvc{##vF-YiY}uqlKbl=WnwvYR zs2o$}pOqDymFG@pXr|3+dHU`9&A9iY_R% zbIQUwWz9@}?M%VG>7v?m+MG(uAc9rETHl}bRRZ|$z$(Et(Yzu=D8Ny< zXvk{{`GOqMKig?>Nk{$ktd_yMtsT_W05jP)Zn49yy4Al-=7sY={ko+n$@cQ0%tG06 zzrff&>}9uy9k-dZgbb1($5)fk4>8cGKS@DH)8i15PCX54n|9Ttj9N*SHTED ztU>M6fxXs1}{X`zX8m}q>THB^TLGvV2iW7=rTpU2M<6Qtvy<-YCHH@lGNldcYD z+7mNQE~G<|zh1*vJ`*mGKZ_@VKe6uBX`a_k{DWF{7J^`$ESh&TlH(F*T?hQBpw)}HdAlmR?SP@ z$kFzh^+kV)D!B5(Vsb&?jl8%2;{_OdhEiaTacLxZalKzQ8?Uw#f_lOmCQeu|eUBPn zwoD*_LG;AjC!LZ5_+C5PdR;H9y$UHKMN_9Yi#RNsYBs9+dI>v7#84mp4C$^|O;jfu za+VQqX$UNJJKSIzrIBZd=ztHo*H*m>4fKp+b0z@0^-Gaw0EjVH;>|82*HuuK_0yZ66UN-A#J-*Q zm9{`{Mi$$&{Bh=?!(1y^S}w7_*>C+v&cWCA&xGK5h?75&eEDczMI)z|pt?O0wf&1T zs8lTVNo7p+p+J;8PEjx1NDJ|LkpPO1yfuv4Mh|I%o@vuL&G(7(_85hKK|5xpnYuzw zE%LnN`hJEk2R=Jg|OS zH2YmA`1@bi`fQ_EpT3LLu;#V4BP$opgV8{TeIZ&g55)p|#`i!q@i>NjSWxRq0FG{5 zUI9eIoh96jo=uSQr=}2I7`yxw)h^3*id-i zl_o2N6v2o!H!nt1q#zy> zn?+Wg>I`sZkt0xOSkY}(h!* zxAt8h_M2Py^;YM3TEnBogApYBM)coX)W4Gr{&y4oUmfPLcZd1Bzj3XJdZXSok#W6= R!vEVujcZL5y4FMy{{ou$CG!9P literal 0 HcmV?d00001 diff --git a/images/monsters/son of verminor.gif b/images/monsters/son of verminor.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcd92bb615996021f6faccc8085a86f5356ab610 GIT binary patch literal 9323 zcmeI%YgAKrzQ*yrlbs6?U~`iI0h16QK!5}Sgp0ZpA~#WkU_}QpARyi&qT;1>CxC!p z8x-rcZKT>-tDR`ARckvtKoM^hDXq3+r#N*wwySf7T4x@w%t4LClR0nDFmJ$M zdMRnv+i7`6lJokK3s32$_a@9dmSTD(so+gr{&DU6%Q2pQUY7)Zdu9V0ilC zt7f$|!gx4oT2Dd-8|oAYxK`X>ozDe+hXf(%vn3KaK%UE`e#+? ztSYl5X8A|+Qk#{v*Go2xTC=;<9d|Znw8SK>o|@PYnbjWm!spK=t(iLOY+8yaNT+w8v&Yug>m_>$}%GZFjt8MO2li zXt5`Me*d)0)|k{S%A;TIYyP;_I#}F(W0QVcboo%u>KhAmo0JEC*OlF^)<373)|=3F zyD{f^^_pvony=NTG%Bp`%uZP^Hy=%|zEm>vwG>^mvgX>XjO{TA%OdB!mt*cr&fOhf zeSUUkd+gkEhHYaF84gwa(#WJ$Q(yk_g*a=3ZiC|0dwZ={iz+V9Sa#jA`Qy6ATZ^lP z3U>e2UUFXV_;hXR*63MprB8n`q2_9FvTbVV`Rrr&_NAkww~dinJ}t zqSL9*^iNOQ7Cr0Tw5+bUw5`fHZyPKZ3~N7HST$I%b!=JF=#se?GLzO$opUK8X=PO5 zNgeU?_@j8@GiPRbS)S1{Gc{SuC-GA${)6&WO#b~>&Ft#hI(f}zdEtgNO?8d(we@my zWA(DNb?fC#Yvtw3YnE3hFIc`3|6aOwHKCdOKbrik2=Nnw6w3@Fft?vckM4gn`e3*( zbm?&I>HYzMr;Go_-P2{S`?btHkZe>>s7DXaOX~;;)7Re!@8%siTpC@%c4(E}v7pMKHsn@V2Yp z&YmcZwGkt2iajjL_y(!SnL=+dLx=(&u^#`F5hvpn%&`P1L5eC|t;#EYLaCdtil#?c zLZ-E_f`niuj}ED@n0$m{W}jr~OQl63t&AnarDINpC)134$_p@$lU{Snt!0~Nin+q9 zwT_ZLNhP+Hz^TMKyO-bCkY`S;)om68u&;4EGFRtRZ@=prAgdC3?7`%t@%e{hb7^~b zNUoeaV$T}wWE=#qpGvY!#Q4Nh;|v*EX<^6!y(N;bDR$LLo)fED;^rzCQk-{ZgiqUy zPh3V`;BoOE1%VHGSy8By2qV(EAC8e>e!4-gcrKjbNzQJ5EtsZVdxYd;Ip3>?w28!< zqO>N_(K`%VGe2z0gO>ITqKeSl`ij`KtNKlyL9NVSaHPcAUr6g&mK5b~YM^X2OuyuW zd81Eqj*R|-lDp0n2R3zcyrUxV1=Ad!-clz>qpAmm?_75b`UZ`;d8f0!Q_c#HlzUbW ziM7qgsT2QYrTp%f-jf7pH5fQ=v5aXC%DO|C#KBUcvc*rh!{cKZr$3W5GT-|I#`{l1 zaJRCy^%F`aiKRB)atr*p+K9YFv-xzM&(i-q=eQlVO@3+_Wxl|%i$f^SwJEt0RZI9= zB}VFFa^Dv&N}?KRSuSu{mJ3qK?Rl~`|0Z+lRjWth43bXBNdI8#?Oz3j2T&0yF8i&Z zi%rb6#N~H59xt(1&UV#3!}JHP(vUAkzQ$2Z^0`6Ytl%5>Y2KgtVw$|~6>QnJw8s4E zC1$?Uem(W1>itN;`G3R0D4?30}fNR2#B_Rd5Bs z;2hutw7?beK~qQxCV?WXg|EOh{W%rTg&eDHJ_9cS6-WkwFc|JaK2Qgt!5BbAtic;9 z42dBbD1~0AGrR=AkQjWzNDvOBwHp;M6-a|v01vbvB2)vt;2H41GmrqA!Q@kn0UmIj z1hpj=;KeVMX*Vd~7En*!to+rmNxMM~O}jqZtZPO*|1*+9GGFT3fKySfGouMNRyuoR>^~P6+OV8w-e{gF0zJ%6~*H6;htjyjO zXFROYZBoDzC-GE!Lr;xo>AZ^Wn6F zIvHR~To$QW9)*1X`)9wa2l-e(kS}q0B$zCFFE_q6vhDWz=RR3cHk38*gB%PIs0`7q zR|-L6LW3-4m-@voc0j>7=QDD4#bcUew8fNqGM^dB#h}63NP9NA^kSB_Nr~a2UJ`*Z zF{#PV_0Ln_3TgJhGr3Vo#gwqr(@vA>z#td@l^I)eAB3g074PYwSN|#eQNE~EA~OUV zK0BB!=HKLe#?uH4Ubrr1^#NK_`cJ}b<<}?pxV&PR(skgu~52Z#Mt8POE;Q_ z@AZ%P+7Bor-ylD=w+QBWImc<1aSB5dj=P;6{x11SVN_$2>MtTukaz8q^X?<|FNvs1 zo0>Oxc?TIF4Y)h1rn;1G`e-YvUlltDkxa`4d8;g>AT*dLGVTvH3H_$#5~N7ce2eGf zrFMsIF+Oma1aV?5Wwe$*bohpACOFcoqDB;1tFbVIK>oE^Sj4fFq4g5|%*eQ8Co2&B z#9WCze7uM9(nm2|ka(Qy_ae>CA*P~X)DbRia_4zx6gq~&3g{#JT|CLSNyxahc4){+ zi9MC0{h?Crh>@3Gd#^2EzLcw-%cooe{^m!)_Mm{{JYvdQcjU9YBr>bR-*k4uLGJxl z)Jq7*tPI~`=FF1R@14b7ie4kd6EII~{r-U^1j(bFt|h!TIooT2bJYQP)NgjlJ>DsY z6(lcOZgmKPR8CGHaaxUnK9r`CgTjmt07s2TX#ZVTKfl-rKQz?vYc+4t>BEq?LG8i%WSC2^N=Ulbzb0tfP}{r zq%f$dnkyq#D9irB%x>isOBGEIJEyEZJCaU^SK1P9=3V!?MHgRcoatrS7T}YRUpU?( zh!Cd}p*k*g4>PZOo_EsG4ql7I-?`7YVcMYk$Gll``(XIXM*{}p%lDu8&+mu%H2uFb zRKp`k?1!+wtAm%;Bs0ggh&${7D&S|b@_othW)h)&iGT!6hZb-M^@jw|2oZ-p0O{#N z3XuXfkN|8zFAxGGU=pAL25<$5L~Vf?o@EdPKH*6O%zze}1;bE7C<1;!6uJ+kAmUTB zkUy{iNWcl+Jto)Ws}XMzXaToC0vN!X%=l6g-bTO-WdstS3(P=JAO{qoAgBXZfCnH= zz6jf5@l;A$9aZ?2ZnitKY#ME-#G=bdYoZSQuG@SprSxo0X@4d#fUJ0n z6#hCDk2$n>{}-Lt{%v6A$QE@?1Z)E;33ZVLZ)(Bq4^xqSUd)x2{#RTqn6tHSX*T>k!iXkj0V#+M(GH-Eul> z(Z!iRS3CaspX=}HaDHi7{nq$l%lKX;f1P-^uT2u3)7(feS5FK_mt+#%JI6Z$l)ilxUnjzh@^(jVo>uml^W=4jHheAJT;^^+l(DM*fhGDVL3%F}|72r4q+L9n zqklRh7;1@#P*%uoN`@f$DvGl+#x5_xDRqU#!%}pb@VH?mClFF3T{zBLU=2-)I4m*f zSQ8Q98%}9mrV{dP@xg98Azu|1B@_o2a@;zW^pmV=md|9`h~QB!De%}Eb~4&;B+`1$ z&Qdww?q(vY`yJ_)72Al@a|5_BQP9 z6uMSDw2LS;UK9$AmLt4>;yS4{JX>enEBk94lERJ#4_`ym{qsXB<;6#Mr$&n7wIfoattKg5OD9==1EQ zK9E_XcHzddVyBr&V%@31|mu53!;o_;}nJ^h)z8{k)h@Y5F&*%qwlCv z?BZ~|EwD7PwUK^w88;|gnNR`DrW%vxZ|4<5D!OCw}O=4;pUF!~F_}GGMU%=4xzn zbSLNecns$pr+W5#={P8D7_EN&_Xp=(NCyDOz4_IYh3CvT9A!FUCaZeIXgsK?xn7Ju zCM=D_s0T$jb}hM9u;8o_^*0|)iKz_3HEG4Q^2LKQVMc~s1%bAFT(4O*70hhBwzPaG zyS~2^LfA*wmJVh<|M@mp^{aFF&JG#XlfAFu&? zaM!{y%JQ2`JR^!u=}>3z14>OVC&7|sznO=(Mcb$AQQ?0+T0hJGa@8YEeME|w0rOwPI27D;h?bUwrMv_n#%yg{C?};fs+3~oCy6ln4 zcw7U)QeJT)b8dBGKaULaJ~%SbIN`J3PoQ@_)(VP41UyPAWnv_JNz{3{#`1gOO-ba& zUe+~U$Wo-E>7KJja-hXqBfrvjte+nelB|`wt4%z~!kcd0oj(o;LlPIA>~SjiZBsPD z5(CXKV#7Mg)dK_fc(3GcQQzInScyASvy2jle>hIWPnpwuBxu+_z>A`6BNk7~^L$04 zOy+)_@5>h?opXdG3gabk0_L;88J^ww|brB#+jsZ^4h^9X3S;c$4Z?n8IPY2 z%aJ9M^Hk;L}lHnS*KaRe~6vy{< zy9fBbvIE0B%H7&RAwh4T6SG5{*K&Feni>WDsK!8wFbgCBdr0 zLm%_y>6*lo7d1d0QC&0*;YGNR%BR0aKwxnjKypzw)EH~*>FENC7P-jjR^v-YEm3C7 zMC>grr@~XI2q~5#))FoUh#{(ioFcpk3y#uw?qj*)*^PU6?BXz-E>H%<1i?Y%u{bfC zF#eEq3|X8yFkumVeETR2x{?2ew&%BO+>&q{43Kx+(vd0T5vLBc5%El{i(J6XKowV< zU5LD3yq@{`^&OwC&wC}=cu4bf0VmYUaL-70#9%uz`x2W*mgu*sichEFz>Zaywpoe$ z2M!P52FXJ0nM0b%gF$ViV{Gm6kIGKoe+B0jc5F4XKM^&?FDVZFt_wr(=)D&)9MiTb zk;)}k3z8eBcHQ2B%%Wqk0A+jso41j*8`=nIFXX|P{%YQ;O!k5KyS&%0^orx;(h4`x zJvG5+2mMVW|Ah`k^w;LzAFdw=75K``k<1|BqZSI!cPN!cQfw@l(nOxR8sWdC(NFHsEXflIgkgP(SGh+%J%q$HXe}Uua}yphc`J55=D!i?WFmH}IU`AlwRtgo z<7w7cOHZ&uvC7sNbD+aQsPy#6Q0&3uHWxu(Dy65aV^as?eDy3v_1!;hBDQ^JcSR|j z06V05UeFAIUsomON z>vhJ!5G|4C_wGxyhX^LpEnXRqwZ={2a+g43DA&yt7ahm11N35=^OkhG*^ow_duO7* zMNW7#vU?sX@uWSE3dyxO@sW1;kEFn1iYxu=a@9Towlwv4s`SsGJz!m4C-35MOGRwu<)UYe{dD z>K6Z<$Zb0$qCm?Z2mG#R^DJpstrL{Ly6J?+%lE#P5C?YKj69KyAia`@cMHrVC&y1t zi52Ur`4P3N$S~iM9L`@e^3Y~ZHP~i_mmMzE(HX~`Mqz@MVX08Jy(>I`wCu{L@3s31 zS6Z!!-u3PuIWn5Fav6p{$|(A_xtdM?Y|Jqbl;3pABo32}cr@epOGf-k#pMq2a!1hf znIAstvkNZ$)Yx{XX`fsWV(a0RY+nCB_aC$`c041`OQ>0nz{)#u)(h z00W`|0VV(dc>omB6AZfw0i^)~I|2fe00OrG0qFr6%?e-LTneoP4f+iR!2&kfGYg^% z5~U6boCgG+1Qg5*00961-T(k{0A}N38NnA$*-akG8IJRd0I>i8n*b=uB>?9D0lonN zyZ{HW0|0LT0M`H%jSm2h00YGV2bu-~p8)`j004mi07(D<2><{v001)p1la@_c@_eV z0Dtj(9MT+o>w8$|R2rih62ufS^D!^*EmG%BE}<+<%}*S!9ZB6p3+)O6ivt&@6Pomv z2Ac&Pv>LeoxKZLzD(fc}+X(`U0t5R442%gY)GAriR|}sB0=)qQY6Jqx0Sw&?AjTOS z#Thc^GL`d@PU1`&xD`(AO+ec?Cd()z%p(@D6c4};CZ{MU)gKnNEd-SUZ{uzV#tI(n z9RcD2659wH%^PUpW^vhU36=yT?js542{qL;0*e3$xd#@a7ZS7*nDdk#)eHc}00f!@ zEX^(-#2yaO4H3Q&FyAi|#0L_<4i}ykh1!4=)d&u-3^DI77}*XK-V`kAEI`UKKk+~# z-y;XZ2`$thFWfFx(NrhNCIrL-X6ju9+5#WsAttdRTjN{;zXS%j0~7ZX2EGLZzXAf! z1SjDTHq|;Az!@K=84i~U9l{+t!8tn3G(XHcB;X_&#R@{$LO0|l3+D?S-X3${a3#ke zb?0?W**}r-j*|P0Aju#sz$+%qB?)H-Tjf?M%rZpNLI7R>Ugb~+tOh2fCXoM-CD#)G zH2^y2IU2ekbLVg*y&MnA1_qD@Bgh^c;tvOH25jYMR_sVn%1j&Q7sUC!0Ehqxj0FOa z0vpg39M%vf#~w)1L>1f&38)AKh6N3&3=yaeP3KE-+;9kx1%&^E43q{Z>?c&^QU#&~ zFxE6LX77SC{i84mRUWjgB_XzTR{}vs!|6kP-}XE0C7#MR4HD_ zhTO5EC?PYHe5~Ej>xWwqIuN9g`!T{XE_H3{V3VX$ElfUqK!MT;!&(ckeo2etc4V@2 z5_agofNaGI1d;CTNyASZjV)p1jG{u0gNh3m){>;V;|i`iuz&zjCnigwKH%2LaG}VW zkxwT$%*oI}ROgTpY$ZtL;7ce2LJ-OSVx^=Q1U`7iO{q3!2?u8I>_K5Laz~F67Boe< zWXeD}S0s?2PX{%avkDUP0CK_y9E_j~FX+^8T}L|bz{7nZwfXuyO510(`QH_(`1!WsTdGlDaZcmhX0s%#O1lv7eLNg2&BLd!P_ zP!K{00nCs=De;7H%Lmlt!ihKZ3=%^ZaBhSH3!Z0`7U~E$3MrH1~=%%agy6m>=?z`~DEAPB4 H1q1*)uj30o literal 0 HcmV?d00001 diff --git a/images/monsters/spectre.gif b/images/monsters/spectre.gif new file mode 100644 index 0000000000000000000000000000000000000000..fceb48918fffa652b98a23ecc85814884ad99750 GIT binary patch literal 3003 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 QKvsAJ$72hXB)Ii|0B?)6?*IS* literal 0 HcmV?d00001 diff --git a/images/monsters/spirit of fire.gif b/images/monsters/spirit of fire.gif new file mode 100644 index 0000000000000000000000000000000000000000..da2580247a75b1645dba7b8a270b9a6a6ea09de4 GIT binary patch literal 5225 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 gXLgKYc1E8k literal 0 HcmV?d00001 diff --git a/images/monsters/spit nettle.gif b/images/monsters/spit nettle.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ab8281360dd6d77d3f9ef1fb29b8c755234b0fa GIT binary patch literal 3458 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 literal 0 HcmV?d00001 diff --git a/images/monsters/squirrel.gif b/images/monsters/squirrel.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8f227077503336d3ffb567cd463df761abfdcea GIT binary patch literal 3794 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 QKvsAJ$72hXB)Ii|0B?)6?*IS* literal 0 HcmV?d00001 diff --git a/images/monsters/stonegolem.gif b/images/monsters/stonegolem.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ac6236858637e3c09a81d9ede578bad10f0ce3 GIT binary patch literal 3431 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 literal 0 HcmV?d00001 diff --git a/images/monsters/swamp troll.gif b/images/monsters/swamp troll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ff0dac5339b8b90bc02c21ad84b8f875ea2ecca GIT binary patch literal 4885 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 literal 0 HcmV?d00001 diff --git a/images/monsters/terror bird.gif b/images/monsters/terror bird.gif new file mode 100644 index 0000000000000000000000000000000000000000..99c3edb80ecfaf468d6898b55c025f32a0217449 GIT binary patch literal 3686 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 ZXickH*UHwmy7jGajjLSe8rOgT06Sqro)G{5 literal 0 HcmV?d00001 diff --git a/images/monsters/thalas.gif b/images/monsters/thalas.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce35bb0b2d12b68fb294d52eba1281cd8cbb3cbb GIT binary patch literal 1659 zcmbW0do-H~8pgj*zC>;|5tP_+64hc(#<-75X_9rnv~j81)QBWfB+-Z<8oEJHmtr!Z zT84;NrW!LwnT%UQF_fxywN*75y6w=}Gc~hwMr*sZI{)r}`<(Nh^PcxS=Q+s7)~igo?0Ml{Fo0~iT6kmUqb z733kih9J~r;+G^IlZN0UrpSb+m+}j>Z~(-(U(M!@pfJfezKIzI2Fa37a4G;)R&fbv zQqL*DiEtQDCeHTfEzSXy@jm)Dz&MT!L9jDRYZj|2t- zprpHFWeIvE4Dn6+wVI~m01m6L$MsoVOsfpKAGL@>;k9D5WU`vlR}Jo9^7()aOlS|Ho(2hpKr;+>mrJ5#KX zLrMSk)YWG3+t(K+R)(JJAzV7{%S2@v9u39y8>Wv@UC0-N8K6!HLq@wxZp{^5riL2X zTHbT3E=49G%SuuPPuHQLJg-!%O2g*myq7iu6_txbJyv|$z`7KslUbC>3C|12lz%;N zWZR}K#Tc6eD0K6Q-oKPTJUZWcR_>?+yj@zO>}jGdc`i~{UzWFEUv3jN82LQS-G8piuaf@& zAO3%U9|r<6-M_h|_`|BEW09oe)-_Y^WCX-`7WAywe;;@mX4N3@Ab?u&{_Ix{{7(V^ z9#dR^N|l_4a&a|03!hWT!ib-aSaJ2sYPqYRpMnhbj-73z761&bq&m8`= z7GV9gB4OJvKL^hm@cOcJ1%l!6pFj8b(Pwyf1=Xp2)95?5eB6-Ig*F-IB<_LiGt~p* z<&~AvYUeMpmDRl5p#ayflz!!cM}q&*o3)>zwJoyF>AD#Ioy_1znc}ec1xy2kk>qY_;VZ9_EdKI4Oh6$ zQYNAT?9JGYaJdLSvKAW`dJhrE5Pde^@Wor5M!am=|3vh7+kBx$2UWMWNvRyWNI`}B zdVAPTfpurpxY;b>iaqs^LO5Dx-6f>&slB*+aaTUXcvWqgju725%rYoIZE%MdZPxQz f>+LMf-?is|LP6QXyr%JYSJSUg-p3mOfZu-s%1pKO literal 0 HcmV?d00001 diff --git a/images/monsters/the abomination.gif b/images/monsters/the abomination.gif new file mode 100644 index 0000000000000000000000000000000000000000..74356b6dd6a549a7fb265c5939b5cc8c33982376 GIT binary patch literal 4952 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 Bd%XYv literal 0 HcmV?d00001 diff --git a/images/monsters/the evil eye.gif b/images/monsters/the evil eye.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ca3a866c8bbbcd6b8ed9b414d85d364994500b2 GIT binary patch literal 5257 zcmb8y=~t8Ywg>RvlROzo;2{u5!jwRO1S5ty$Y2JBfCynwqoPd!HQ)rONRdh=LO|3o zIU)u`MMVXwRw?#8%xF=dwUoBDjpC{HEZc*vr;5kM>s|LRxNrB`ul8Es_5JMRlq6BK zS`5VC^?Oj0g}J>4T#!Q|U+BgR^a65ESRb<9nf#5ty56CJ)oWzAV#;gUwTy zl5d;Su6OrLPfcx=Le*;g=VdOJMbMpUUNkj%qW3;Rf?A6B6*>5V^uk-4T|e97R~QIZ zE&;ox;GU6*$6_y*g6`DF(fzJhD&qGifP&?qITd6CgC$7lO>K&Po3<%yX=eboKOf{p zfW2F?CH~OCRbY1!Hg>`#wz}B)UVAh?sL*SuJW;KLRw-3?hR>>%+j;m&-=a zo5ENi9T$G32wdF=vJx_z%b2MF8TI8mPvwBl4d7%$>%^_A-{^6j*`VAXst*O4HKYO} zd^iT=gn-+Xp)Kn#cdDV&X<$vII9 zi=6s`X?s(tgM}`;2+OW)cZ|jQ7$Y5yY8>zMZZf4)E27*#NecWVn&RmMxD1Xvjh?d( zT;577$aMTD(f?ou@vGA0HEug(Ax<3vWO5Y!tk_?*!g02llL;gGQdVbf|4pU$;dNxd zqGbe=&uw2)vB7(P6serF&J;&#Dd{*~%X@MdYHvR?s{8bYoDM>{cDo(JBxeSCe7@81 z$ZFc1tt117nHk}Dx$(r&WGVpQ{rmTv_YUcaIoUFaA~7^rh=o2(Id(7U-oovB*!v3i zXxPaqN$gd-$_h8LlQ*kN*l=oN%4Mdlq+=-s{ z;Tps*wN>8RF?x{U@z$?5@e@iGtO951#0gR{=0NWt9gL=W>uYduU` z7_}|Q8^_!+4Wj{IJeEwbW$qiz5T4)o}*ODRkoRPl!Ac7KN zbiUHxFAd5U_14gR!NM5xQnO-+Eh>T2#>^L3}9ws z7@k)BUBM-r))3(KNMB9=aJ5A5+_?n;a4i-?fUuy|B-tPJ47u+{q$DqIxYr>-Ld-Sc zQjk0)cgm3}I8ZF2X)m`S4|; zBaw}$g{`rO@tUUV5Xv?PX(R^UCP5Ltf-{b68Y#Fp>bB@|pAxAk`BD%v;QS^I@23M1 zx@_4XlblmBy43A@iOiEw5Hfg-(7CT+*Sfjs-Jq-6K3+*~24%u%vlh4XqBu)Tfv-bD zKI=xpwdB28_Be$4ukKudHCl$KN5W{7pf*Y$F{mCEe#ssb{V~SNpR*X4TM9TsJ}$>m z@TSKUSm}#*yOkVI1horsTz*Q|5CaeTJ#*LujrlnJL9t1wgLe3vjnuIoLRcM^;#PZZvEbq-*|5O+i0Ez6o`_zFYm-Z$ zIh4p1u5xOS53+b}1TT`16^odJkLI1E3@dFpe7Ct=)!PYlxNXW|fbTK+xaz9{g<2>{ z1u3+7*$n_il!%^X1~6MG69k}`cnTo4{z>piQc-*tWt1gzr=A5R` z-lU4y+Xa1Egr(sc9rYs8-qJu1l%aak-vXDL|UUrr+e94`bwr)380>=Q8QGC%<(Uw zf%)zl{dE^g;`LJF8IMoNCLo8rLBa+{l=ygH5Esn8M)!w~1@{_HmD&tWIX28|#xqi| zLRa*z9j{%yzpF#yko;mNVD)SkY?)^Y+1T?Gjs&B$a(A)M;%A=cg}++|`OHBeiTHD* zy^p$WPacpJkA(I!*ZA=;apx^q?u4aof7%TW_e0QTu%x94Qe1Ar-6Xk!tmY;X9h4~2 zk%?_;d+6}bHxPmHmUaB5j$EIL@eL~RKtoY}R4vxIRcQFwq$09H0(_LogpUmiIW3mFu-mxL`|~w9$l&y!L&B+Bm(gg2I++n zQfl8qpyN|5t^WrDdEjnMXBX;bH%nb}Y;cfZUo=-V?1={(qZJaT47twb+k+2(hLf

    {* without any parameter it just returns the current url *} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +function Dwoo_Plugin_url_compile(Dwoo_Compiler $compiler, $route = null, $params = null, $options = null, array $rest = array()) +{ + if ($params == 'null') { + if (count($rest)) { + $params = array(); + foreach ($rest as $k=>$v) { + if (is_numeric($k)) { + $params[] = $k.'=>'.$v; + } else { + $params[] = '"'.$k.'"=>'.$v; + } + } + $params = 'array('.implode(', ', $params).')'; + } else { + $params = 'array()'; + } + } + if ($options == 'null') { + $options = 'array()'; + } + return '$this->data[\'ro\']->gen('.$route.', '.$params.', '.$options.')'; +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/CakePHP/README b/system/libs/dwoo/Dwoo/Adapters/CakePHP/README new file mode 100644 index 00000000..46a73fc2 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CakePHP/README @@ -0,0 +1,33 @@ +// CakePHP Dwoo bridge - v0.2 +// ------------------------ +// Installation : +// ------------------------ +// 1. Download and install the dwoo library, preferably on the +// 'vendors' directory of CakePHP. However you can place it +// anywhere you want; if you do, make sure to change the App::import +// line in dwoo.php to include the dwoo library properly. +// +// 2. Place this file in the app/views directory, or on cake/libs/view. +// +// 3. Create the app/tmp/dwoo/cache and app/tmp/dwoo/compile directories +// and make sure they are writable. +// ------------------------ +// Usage example : +// ------------------------ + +// In your controller class you need to change the view property to +// use Dwoo at some point in the execution using : + +$this->view = 'Dwoo'; + +// Or you can also override the view property in your AppController class as such : + +class AppController extends Controller { + public $view = 'Dwoo'; +} + +// If you want another template extension (default is .tpl) you must +// edit the dwoo.php file at line 44 and change it to : +$this->ext = ".html"; + +//{include $templatedir."index.tpl"} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/CakePHP/dwoo.php b/system/libs/dwoo/Dwoo/Adapters/CakePHP/dwoo.php new file mode 100644 index 00000000..4a247e3f --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CakePHP/dwoo.php @@ -0,0 +1,143 @@ + 'dwoo/dwooAutoload.php')); + +/** + * Dwoo adapter for CakePHP + * + * Based on SmartyView by Mark John S. Buenconsejo + * + * 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. + * + * This file is released under the LGPL + * "GNU Lesser General Public License" + * More information can be found here: + * {@link http://www.gnu.org/copyleft/lesser.html} + * + * @author Mark John S. Buenconsejo + * @author Giangi + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class DwooView extends View +{ + protected $_sv_template_dir; + protected $_sv_layout_dir; + protected $_sv_compile_dir; + protected $_sv_cache_dir; + protected $_sv_compile_id; + + protected $_dwoo; + + public $sv_processedTpl; + + public function __construct(&$controller) + { + parent::__construct($controller); + + $this->ext = '.tpl'; + + $this->_sv_template_dir = array + ( + VIEWS . $this->viewPath . DS . $this->subDir, + VIEWS . $this->viewPath, + VIEWS + ); + + $this->_sv_layout_dir = array + ( + LAYOUTS . $this->subDir, + VIEWS + ); + + $this->_sv_compile_dir = TMP . 'dwoo' . DS . 'compile'; + $this->_sv_cache_dir = TMP . 'dwoo' . DS . 'cache'; + + $this->_dwoo = new Dwoo($this->_sv_compile_dir, $this->_sv_cache_dir); + + $this->_sv_compile_id = $controller->name; + + $this->_dwoo->sv_this = $this; + $this->_dwoo->setSecurityPolicy(); + + return; + } + + /** + * changes the template directory + */ + public function setTemplateDir($path = VIEW) { + $old = $this->_sv_template_dir; + $this->_sv_template_dir = $path; + + return $old; + } + + public function getTemplateDir() { + return $this->_sv_template_dir ; + } + + public function _render($___viewFn, $___data_for_view, $___play_safe = true, $loadHelpers = true) + { + // let's determine if this is a layout call or a template call + // and change the template dir accordingly + $layout = false; + if(isset($___data_for_view['content_for_layout'])) { + $this->_sv_template_dir = $this->_sv_layout_dir; + $layout = true; + } + + $tpl = new Dwoo_Template_File($___viewFn); + $data = $___data_for_view; + + $data['view'] = $this; + + if ($this->helpers != false && $loadHelpers === true) { + $loadedHelpers = array(); + $loadedHelpers = $this->_loadHelpers($loadedHelpers, $this->helpers); + + foreach (array_keys($loadedHelpers) as $helper) { + $camelBackedHelper = strtolower(substr($helper, 0, 1)) . substr($helper, 1); + + ${$camelBackedHelper} = $loadedHelpers[$helper]; + + if (is_array(${$camelBackedHelper}->helpers) && !empty(${$camelBackedHelper}->helpers)) { + $subHelpers = ${$camelBackedHelper}->helpers; + foreach ($subHelpers as $subHelper) { + ${$camelBackedHelper}->{$subHelper} = $loadedHelpers[$subHelper]; + } + } + + if(isset($this->passedArgs)) { + ${$camelBackedHelper}->passedArgs = $this->passedArgs; + } + + $this->loaded[$camelBackedHelper] = ${$camelBackedHelper}; + + $data[$camelBackedHelper] = ${$camelBackedHelper}; + } + } + + if ($this->helpers != false && $loadHelpers === true) { + foreach ($loadedHelpers as $helper) { + if (is_object($helper)) { + if (is_subclass_of($helper, 'Helper') || is_subclass_of($helper, 'helper')) { + $helper->beforeRender(); + } + } + } + } + + return $this->_dwoo->get($tpl, $data); + } + + public function get(){ + return $this->_dwoo; + } +} diff --git a/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/README b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/README new file mode 100644 index 00000000..1cf086f4 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/README @@ -0,0 +1,36 @@ +CodeIgniter/Dwoo adapater +------------------------- +Integration of Dwoo into Codeigniter (1.7.0 >) + +Links: +Dwoo - http://dwoo.org +CodeIgniter - http://codeigniter.com + +Installation: +1) Extract package into your application directory (i.e. $webroot/application or + $webroot/system/application) +2) Change the parameters in config/dwootemplate.php +3) Create the compile and cache directory you set in your config file in step 2 + and give it the correct rights (chmod 777 when on *nix) +4) Extract/copy the Dwoo package into application/libraries/dwoo +5) Browse to : http://[yoururl]/dwoowelcome + + +Version info +1.0.2 [11-03-2009] Fixed a problem with $data attribute (which Dwoo also used) +1.0.1 [12-11-2008] Removed some & in the dwootemplate + Changed licencse + Changed 'output' in 'get' in the dwootemplate (line 122) +1.0.0 [11-11-2008] Initial release + + +Questions/Remarks? +mail to: stefan.verstege@newmedia.nl +IM me on GTALK: verstege@gmail.com +Contact me on the Dwoo forums: stefanv + +---------[ copyright notice ]----------------------------------------------------------------------- +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. + +License http://dwoo.org/LICENSE Modified BSD License \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/config/dwootemplate.php b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/config/dwootemplate.php new file mode 100644 index 00000000..0fb0f415 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/config/dwootemplate.php @@ -0,0 +1,12 @@ +load->library('Dwootemplate'); + $this->dwootemplate->assign('itshowlate', date('H:i:s')); + $this->dwootemplate->display('dwoowelcome.tpl'); + } +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/libraries/Dwootemplate.php b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/libraries/Dwootemplate.php new file mode 100644 index 00000000..68d58efd --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/libraries/Dwootemplate.php @@ -0,0 +1,172 @@ + + * @copyright Copyright (c) 2008, Stefan Verstege + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://www.newmedia.nl/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + * + * @uses the dwoo package from http://dwoo.org + */ +class Dwootemplate extends Dwoo { + protected $dwoo_data = array(); + + /** + * Constructor for the DwooTemplate engine + * + */ + public function __construct() { + // Call parents constructor + parent::__construct(); + + // Set the config settings + $this->initialize(); + + // Assign some defaults to dwoo + $CI = get_instance(); + $this->dwoo_data = new Dwoo_Data(); + $this->dwoo_data->js_files = array(); + $this->dwoo_data->css_files = array(); + $this->dwoo_data->CI = $CI; + $this->dwoo_data->site_url = $CI->config->site_url(); // so we can get the full path to CI easily + $this->dwoo_data->uniqid = uniqid(); + $this->dwoo_data->timestamp = mktime(); + + log_message('debug', "Dwoo Template Class Initialized"); + } + + + /** + * Assign data to dwoo data object + * + * @param string $key + * @param mixed $value + */ + public function assign($key, $value) { + $this->dwoo_data->$key = $value; + } + + + /** + * Add Javascript files to template + * + * @param string $js + */ + public function add_js($js) { + $current = $this->dwoo_data->js_files; + $current[] = $js; + $this->dwoo_data->js_files = $current; + } + + + /** + * Add Css stylesheets to template + * + * @param string $css + */ + public function add_css($css) { + $current = $this->dwoo_data->css_files; + $current[] = $css; + $this->dwoo_data->css_files = $current; + } + + + /** + * Display or return the compiled template + * Since we assign the results to the standard CI output module + * you can also use the helper from CI in your templates!! + * + * @param string $sTemplate + * @param boolean $return + * @return mixed + */ + public function display($sTemplate, $return = FALSE) { + // Start benchmark + $CI = get_instance(); + $CI->benchmark->mark('dwoo_parse_start'); + + // Check if file exists + if ( !file_exists($this->template_dir . $sTemplate ) ) { + $message = sprintf('Template file \'%s\' not found.', $sTemplate); + show_error($message); + log_message('error', $message); + } + + // Create new template + $tpl = new Dwoo_Template_File($this->template_dir . $sTemplate); + + // render the template + $template = $this->get($tpl, $this->dwoo_data); + + // Finish benchmark + $CI->benchmark->mark('dwoo_parse_end'); + + // Return results or not ? + if ($return == FALSE) { + $CI->output->final_output = $template; + } else { + return $template; + } + } + + + /** + * Toggle Codeigniter profiler on/off + * + */ + public function enable_profiler($toggle = TRUE) { + $CI = get_instance(); + $CI->output->enable_profiler($toggle); + } + + + /** + * Set http header + * + * @example $this->output->set_header("HTTP/1.1 200 OK"); + * @example $this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT'); + * @param string $header + */ + public function set_header($header) { + $CI = get_instance(); + $CI->output->set_header($header); + } + + + /** + * Set status header + * + * @example $this->output->set_status_header('401'); + * @example // Sets the header as: Unauthorized + * @param string $header + */ + public function set_status_header($header) { + $CI = get_instance(); + $CI->output->set_status_header($header); + } + + + /** + * Assign the dwootemplate config items to the instance + * + */ + private function initialize() { + $CI = get_instance(); + $CI->config->load('dwootemplate', TRUE); + $config = $CI->config->item('dwootemplate'); + foreach ($config as $key => $val) { + $this->$key = $val; + } + } +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/dwoowelcome.tpl b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/dwoowelcome.tpl new file mode 100644 index 00000000..95cf53ad --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/dwoowelcome.tpl @@ -0,0 +1,31 @@ +{extends "page.tpl"} + +{block "title"} +Welcome to Dwoo-ed CodeIgniter +{/block} + +{block "content"} +

    Welcome to Dwoo-ed CodeIgniter!

    + +

    The page you are looking at is being generated dynamically by CodeIgniter in combination with the 'Smarty-killer' Dwoo template engine. +The page is rendered at {$itshowlate} by the Dwoo_compiler.

    + +

    If you would like to edit this page you'll find it located at:

    +application/views/dwoowelcome.tpl + +

    The corresponding controller for this page is found at:

    +application/controllers/dwoowelcome.php + +

    The library for Dwoo integration can be found at:

    +application/libraries/Dwootemplate.php + +

    If you are exploring Dwoo for the very first time, you should start by reading the {anchor uri='http://dwoo.org/' title='Dwoo website'}.

    +

    If you are exploring CodeIgniter for the very first time, you should start by reading the {anchor uri='http://codeigniter.com/user_guide/' title='User Guide'}.

    + +
    +Usage:
    +$this->load->library('Dwootemplate');
    +$this->dwootemplate->assign('test', 'test');
    +$this->dwootemplate->display('dwoowelcome.tpl');
    +
    +{/block} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/page.tpl b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/page.tpl new file mode 100644 index 00000000..42a6bfcd --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/CodeIgniter/views/page.tpl @@ -0,0 +1,57 @@ + + +{block "title"}Here come the title{/block} + + + + +{block "content"}Here comes the content{/block} + + \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/ZendFramework/PluginProxy.php b/system/libs/dwoo/Dwoo/Adapters/ZendFramework/PluginProxy.php new file mode 100644 index 00000000..d6beeb4c --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/ZendFramework/PluginProxy.php @@ -0,0 +1,96 @@ + + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Denis Arh, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Adapters_ZendFramework_PluginProxy implements Dwoo_IPluginProxy +{ + /** + * reference to the zend view owning this proxy + * + * @var Zend_View_Interface + */ + public $view; + + /** + * Dwoo_Adapters_ZendFramework_PluginProxy's constructor. + * + * @param Zend_View_Interface $view + */ + public function __construct(Zend_View_Interface $view) { + $this->view = $view; + } + + /** + * Called from Dwoo_Compiler to check if the requested plugin is available + * + * @param string $name + * @return bool + */ + public function handles($name) { + try { + $this->view->getHelper($name); + } catch (Zend_Loader_PluginLoader_Exception $e) { + return false; + } + + return true; + } + + /** + * returns the code (as a string) to call the plugin + * (this will be executed at runtime inside the Dwoo class) + * + * @param string $name the plugin name + * @param array $params a parameter array, array key "*" is the rest array + * @return string + */ + public function getCode($name, $params) { + return '$this->getPluginProxy()->view->'. $name .'('.Dwoo_Compiler::implode_r($params).')'; + } + + /** + * returns a callback to the plugin, this is used with the reflection API to + * find out about the plugin's parameter names etc. + * + * should you need a rest array (i.e. for ZendFramework helpers) without the + * possibility to edit the plugin's code, you can provide a callback to some + * other function with the correct parameter signature, i.e. : + * + * return array($this, "callbackHelper"); + * // and callbackHelper would be as such: + * public function callbackHelper(array $rest=array()){} + * + * + * @param string $name the plugin name + * @return callback + */ + public function getCallback($name) { + return array($this->view->getHelper($name), $name); + } + + /** + * returns some code that will check if the plugin is loaded and if not load it + * this is optional, if your plugins are autoloaded or whatever, just return an + * empty string + * + * @param string $name the plugin name + * @return string + */ + public function getLoader($name) { + return ''; + } +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/ZendFramework/README b/system/libs/dwoo/Dwoo/Adapters/ZendFramework/README new file mode 100644 index 00000000..51d70943 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/ZendFramework/README @@ -0,0 +1,32 @@ +// ------------------------ +// Usage example : +// ------------------------ +// Note that you might need to manually include 'lib/Dwoo.php', +// 'lib/Dwoo/Adapters/ZendFramework/View.php' and +// 'lib/Dwoo/Adapters/ZendFramework/PluginProxy.php' for this to +// work as expected, depending on your ZF setup +// +// If anyone writes a more advanced how-to please let me know +// ------------------------ + +$view = new Dwoo_Adapters_ZendFramework_View(array( + 'compileDir' => 'path/to/compile_dir' // set to null or remove this line to use defaults + 'cacheDir' => 'path/to/cache_dir' // set to null or remove this line to use defaults +)); + +// This allows you to use ZF's helpers as if they were Dwoo plugins (i.e. {doctype} will call the doctype helper) + +$view->setPluginProxy(new Dwoo_Adapters_ZendFramework_PluginProxy(new Zend_View())); + + +// 1. example - used with the Zend Controller + +$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); + +Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); + + +// 2. example - used manually + +$view->assign('foo', 'bar'); +$view->display('foobar.phtml'); \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Adapters/ZendFramework/View.php b/system/libs/dwoo/Dwoo/Adapters/ZendFramework/View.php new file mode 100644 index 00000000..faa840cf --- /dev/null +++ b/system/libs/dwoo/Dwoo/Adapters/ZendFramework/View.php @@ -0,0 +1,512 @@ + + * @author Stephan Wentz + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Adapters_ZendFramework_View extends Zend_View_Abstract +{ + /** + * @var Dwoo + */ + protected $_engine = null; + + /** + * @var Dwoo_Data + */ + protected $_dataProvider = null; + + /** + * @var Dwoo_Compiler + */ + protected $_compiler = null; + + /** + * Changing Filter's scope to play nicely + * + * @var array + */ + protected $_filter = array(); + + + /** + * @var string + */ + protected $_templateFileClass = 'Dwoo_Template_File'; + + /** + * @var array + */ + protected $_templateFileSettings = array(); + + /** + * @var Dwoo_IPluginProxy + */ + protected $_pluginProxy = null; + + /** + * Constructor method. + * See setOptions for $opt details + * + * @see setOptions + * @param array|Zend_Config List of options or Zend_Config instance + */ + public function __construct($opt = array()) + { + + if (is_array($opt)) { + $this->setOptions($opt); + } elseif ($opt instanceof Zend_Config) { + $this->setConfig($opt); + } + + $this->init(); + } + + /** + * Set object state from options array + * - engine = engine class name|engine object|array of options for engine + * - dataProvider = data provider class name|data provider object|array of options for data provider + * - compiler = compiler class name|compiler object|array of options for compiler + * - templateFile = + * + * Array of options: + * - type class name or object for engine, dataProvider or compiler + * - any set* method (compileDir for setCompileDir ...) + * + * @param array $options + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setOptions(array $opt = array()) + { + // BC checks + // TODO remove in 1.1 + if (isset($opt['compileDir']) || isset($opt['compile_dir'])) { + trigger_error('Dwoo ZF Adapter: the compile dir should be set in the $options[\'engine\'][\'compileDir\'] value the adapter settings', E_USER_WARNING); + } + + if (isset($opt['cacheDir']) || isset($opt['cache_dir'])) { + trigger_error('Dwoo ZF Adapter: the cache dir should be set in the $options[\'engine\'][\'cacheDir\'] value the adapter settings', E_USER_WARNING); + } + // end BC + + // Making sure that everything is loaded. + $classes = array('engine', 'dataProvider', 'compiler'); + + // Setting options to Dwoo objects... + foreach ($opt as $type => $settings) { + if (!method_exists($this, 'set' . $type)) { + throw new Dwoo_Exception("Unknown type $type"); + } + + if (is_string($settings) || is_object($settings)) { + call_user_func(array($this, 'set' . $type), $settings); + } elseif (is_array($settings)) { + // Set requested class + if (array_key_exists('type', $settings)) { + call_user_func(array($this, 'set' . $type), $settings['type']); + } + + if (in_array($type, $classes)) { + // Call get so that the class is initialized + $rel = call_user_func(array($this, 'get' . $type)); + + // Call set*() methods so that all the settings are set. + foreach ($settings as $method => $value) { + if (method_exists($rel, 'set' . $method)) { + call_user_func(array($rel, 'set' . $method), $value); + } + } + } elseif ('templateFile' == $type) { + // Remember the settings for the templateFile + $this->_templateFileSettings = $settings; + } + } + } + } + + /** + * Set object state from Zend_Config object + * + * @param Zend_Config $config + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setConfig(Zend_Config $config) + { + return $this->setOptions($config->toArray()); + } + + /** + * Called before template rendering + * + * Binds plugin proxy to the Dwoo. + * + * @see Dwoo_Adapters_ZendFramework_View::getPluginProxy(); + * @see Dwoo::setPluginProxy(); + */ + protected function preRender() + { + $this->getEngine()->setPluginProxy($this->getPluginProxy()); + } + + /** + * Wraper for Dwoo_Data::__set() + * allows to assign variables using the object syntax + * + * @see Dwoo_Data::__set() + * @param string $name the variable name + * @param string $value the value to assign to it + */ + public function __set($name, $value) + { + $this->getDataProvider()->__set($name, $value); + } + + /** + * Sraper for Dwoo_Data::__get() allows to read variables using the object + * syntax + * + * @see Dwoo_Data::__get() + * @param string $name the variable name + * @return mixed + */ + public function __get($name) + { + return $this->getDataProvider()->__get($name); + } + + /** + * Wraper for Dwoo_Data::__isset() + * supports calls to isset($dwooData->var) + * + * @see Dwoo_Data::__isset() + * @param string $name the variable name + */ + public function __isset($name) + { + return $this->getDataProvider()->__isset($name); + } + + /** + * Wraper for Dwoo_Data::_unset() + * supports unsetting variables using the object syntax + * + * @see Dwoo_Data::__unset() + * @param string $name the variable name + */ + public function __unset($name) + { + $this->getDataProvider()->__unset($name); + } + + /** + * Catches clone request and clones data provider + */ + public function __clone() { + $this->setDataProvider(clone $this->getDataProvider()); + } + + /** + * Returns plugin proxy interface + * + * @return Dwoo_IPluginProxy + */ + public function getPluginProxy() + { + if (!$this->_pluginProxy) { + $this->_pluginProxy = new Dwoo_Adapters_ZendFramework_PluginProxy($this); + } + + return $this->_pluginProxy; + } + + /** + * Sets plugin proxy + * + * @param Dwoo_IPluginProxy + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setPluginProxy(Dwoo_IPluginProxy $pluginProxy) + { + $this->_pluginProxy = $pluginProxy; + return $this; + } + + /** + * Sets template engine + * + * @param string|Dwoo Object or name of the class + */ + public function setEngine($engine) + { + // if param given as an object + if ($engine instanceof Dwoo) { + $this->_engine = $engine; + } + // + elseif (is_subclass_of($engine, 'Dwoo') || 'Dwoo' === $engine) { + $this->_engine = new $engine(); + } + else { + throw new Dwoo_Exception("Custom engine must be a subclass of Dwoo"); + } + } + + /** + * Return the Dwoo template engine object + * + * @return Dwoo + */ + public function getEngine() + { + if (null === $this->_engine) { + $this->_engine = new Dwoo(); + } + + return $this->_engine; + } + + /** + * Sets Dwoo data object + * + * @param string|Dwoo_Data Object or name of the class + */ + public function setDataProvider($data) + { + if ($data instanceof Dwoo_IDataProvider) { + $this->_dataProvider = $data; + } + elseif (is_subclass_of($data, 'Dwoo_Data') || 'Dwoo_Data' == $data) { + $this->_dataProvider = new $data(); + } + else { + throw new Dwoo_Exception("Custom data provider must be a subclass of Dwoo_Data or instance of Dwoo_IDataProvider"); + } + } + + /** + * Return the Dwoo data object + * + * @return Dwoo_Data + */ + public function getDataProvider() + { + if (null === $this->_dataProvider) { + $this->_dataProvider = new Dwoo_Data; + } + + return $this->_dataProvider; + } + + + /** + * Sets Dwoo compiler + * + * @param string|Dwoo_Compiler Object or name of the class + */ + public function setCompiler($compiler) + { + + // if param given as an object + if ($compiler instanceof Dwoo_ICompiler) { + $this->_compiler = $compiler; + } + // if param given as a string + elseif (is_subclass_of($compiler, 'Dwoo_Compiler') || 'Dwoo_Compiler' == $compiler) { + $this->_compiler = new $compiler; + } + else { + throw new Dwoo_Exception("Custom compiler must be a subclass of Dwoo_Compiler or instance of Dwoo_ICompiler"); + } + } + + /** + * Return the Dwoo compiler object + * + * @return Dwoo_Data + */ + public function getCompiler() + { + if (null === $this->_compiler) { + $this->_compiler = Dwoo_Compiler::compilerFactory(); + } + + return $this->_compiler; + } + + /** + * Initializes Dwoo_ITemplate type of class and sets properties from _templateFileSettings + * + * @param string Template location + * @return Dwoo_ITemplate + */ + public function getTemplateFile($template) { + $templateFileClass = $this->_templateFileClass; + + $dwooTemplateFile = new $templateFileClass($template); + + if (!($dwooTemplateFile instanceof Dwoo_ITemplate)) { + throw new Dwoo_Exception("Custom templateFile class must be a subclass of Dwoo_ITemplate"); + } + + foreach ($this->_templateFileSettings as $method => $value) { + if (method_exists($dwooTemplateFile, 'set' . $method)) { + call_user_func(array($dwooTemplateFile, 'set' . $method), $value); + } + } + + return $dwooTemplateFile; + } + + /** + * Dwoo_ITemplate type of class + * + * @param string Name of the class + * @return void + */ + public function setTemplateFile($tempateFileClass) { + $this->_templateFileClass = $tempateFileClass; + } + + /** + * Passes data to Dwoo_Data object + * + * @see Dwoo_Data::assign() + * @param array|string $name + * @param mixed $val + * @return Dwoo_Adapters_ZendFramework_View + */ + public function assign($name, $val = null) + { + $this->getDataProvider()->assign($name, $val); + return $this; + } + + /** + * Return list of all assigned variables + * + * @return array + */ + public function getVars() + { + return $this->_dataProvider->getData(); + } + + /** + * Clear all assigned variables + * + * Clears all variables assigned to Zend_View either via {@link assign()} or + * property overloading ({@link __get()}/{@link __set()}). + * + * @return void + * @return Dwoo_Adapters_ZendFramework_View + */ + public function clearVars() + { + $this->getDataProvider()->clear(); + return $this; + } + + /** + * Wraper for parent's render method so preRender method + * can be called (that will bind the plugin proxy to the + * engine. + * + * @see Zend_View_Abstract::render + * @return string The script output. + */ + public function render($name) + { + $this->preRender(); + return parent::render($name); + } + + /** + * Processes a view script and outputs it. Output is then + * passed through filters. + * + * @param string $name The script script name to process. + * @return string The script output. + */ + public function _run() + { + echo $this->_engine->get( + $this->getTemplateFile(func_get_arg(0)), + $this->getDataProvider(), + $this->getCompiler() + ); + } + + /** + * Add plugin path + * + * @param string $dir Directory + * @return Dwoo_Adapters_ZendFramework_View + */ + public function addPluginDir($dir) + { + $this->getEngine()->getLoader()->addDirectory($dir); + return $this; + } + + /** + * Set compile path + * + * @param string $dir Directory + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setCompileDir($dir) + { + $this->getEngine()->setCompileDir($dir); + return $this; + } + + /** + * Set cache path + * + * @param string $dir Directory + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setCacheDir($dir) + { + $this->getEngine()->setCacheDir($dir); + return $this; + } + + /** + * Set cache lifetime + * + * @param string $seconds Lifetime in seconds + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setCacheLifetime($seconds) + { + $this->getEngine()->setCacheTime($seconds); + return $this; + } + + /** + * Set charset + * + * @param string $charset + * @return Dwoo_Adapters_ZendFramework_View + */ + public function setCharset($charset) + { + $this->_engine->setCharset($charset); + return $this; + } +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/Block/Plugin.php b/system/libs/dwoo/Dwoo/Block/Plugin.php new file mode 100644 index 00000000..5f937360 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Block/Plugin.php @@ -0,0 +1,103 @@ +init()
    method, it will receive the parameters that + * are in the template code and is called when the block starts + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +abstract class Dwoo_Block_Plugin extends Dwoo_Plugin +{ + /** + * stores the contents of the block while it runs + * + * @var string + */ + protected $buffer = ''; + + /** + * buffers input, override only if necessary + * + * @var string $input the content that must be buffered + */ + public function buffer($input) + { + $this->buffer .= $input; + } + + // initialization code, receives the parameters from {block param1 param2} + // public function init($arg, $arg, ...); + + /** + * called when the block ends, this is most of the time followed right away by a call + * of process() but not always, so this should be used to do any shutdown operations on the + * block object, if required. + */ + public function end() + { + } + + /** + * called when the block output is required by a parent block + * + * this must read $this->buffer and return it processed + * + * @return string + */ + public function process() + { + return $this->buffer; + } + + /** + * called at compile time to define what the block should output in the compiled template code, happens when the block is declared + * + * basically this will replace the {block arg arg arg} tag in the template + * + * @param Dwoo_Compiler $compiler the compiler instance that calls this function + * @param array $params an array containing original and compiled parameters + * @param string $prepend that is just meant to allow a child class to call + * parent::postProcessing($compiler, $params, "foo();") to add a command before the + * default commands are executed + * @param string $append that is just meant to allow a child class to call + * parent::postProcessing($compiler, $params, null, "foo();") to add a command after the + * default commands are executed + * @param string $type the type is the plugin class name used + */ + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return Dwoo_Compiler::PHP_OPEN.$prepend.'$this->addStack("'.$type.'", array('.Dwoo_Compiler::implode_r($compiler->getCompiledParams($params)).'));'.$append.Dwoo_Compiler::PHP_CLOSE; + } + + /** + * called at compile time to define what the block should output in the compiled template code, happens when the block is ended + * + * basically this will replace the {/block} tag in the template + * + * @see preProcessing + * @param Dwoo_Compiler $compiler the compiler instance that calls this function + * @param array $params an array containing original and compiled parameters, see preProcessing() for more details + * @param string $prepend that is just meant to allow a child class to call + * parent::postProcessing($compiler, $params, "foo();") to add a command before the + * default commands are executed + * @param string $append that is just meant to allow a child class to call + * parent::postProcessing($compiler, $params, null, "foo();") to add a command after the + * default commands are executed + * @param string $content the entire content of the block being closed + */ + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + return $content . Dwoo_Compiler::PHP_OPEN.$prepend.'$this->delStack();'.$append.Dwoo_Compiler::PHP_CLOSE; + } +} diff --git a/system/libs/dwoo/Dwoo/Compilation/Exception.php b/system/libs/dwoo/Dwoo/Compilation/Exception.php new file mode 100644 index 00000000..863c7979 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Compilation/Exception.php @@ -0,0 +1,38 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Compilation_Exception extends Dwoo_Exception +{ + protected $compiler; + protected $template; + + public function __construct(Dwoo_Compiler $compiler, $message) + { + $this->compiler = $compiler; + $this->template = $compiler->getDwoo()->getTemplate(); + parent::__construct('Compilation error at line '.$compiler->getLine().' in "'.$this->template->getResourceName().':'.$this->template->getResourceIdentifier().'" : '.$message); + } + + public function getCompiler() + { + return $this->compiler; + } + + public function getTemplate() + { + return $this->template; + } +} diff --git a/system/libs/dwoo/Dwoo/Compiler.php b/system/libs/dwoo/Dwoo/Compiler.php new file mode 100644 index 00000000..caf0f798 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Compiler.php @@ -0,0 +1,3086 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Compiler implements Dwoo_ICompiler +{ + /** + * constant that represents a php opening tag + * + * use it in case it needs to be adjusted + * + * @var string + */ + const PHP_OPEN = ""; + + /** + * boolean flag to enable or disable debugging output + * + * @var bool + */ + public $debug = false; + + /** + * left script delimiter + * + * @var string + */ + protected $ld = '{'; + + /** + * left script delimiter with escaped regex meta characters + * + * @var string + */ + protected $ldr = '\\{'; + + /** + * right script delimiter + * + * @var string + */ + protected $rd = '}'; + + /** + * right script delimiter with escaped regex meta characters + * + * @var string + */ + protected $rdr = '\\}'; + + /** + * defines whether the nested comments should be parsed as nested or not + * + * defaults to false (classic block comment parsing as in all languages) + * + * @var bool + */ + protected $allowNestedComments = false; + + /** + * defines whether opening and closing tags can contain spaces before valid data or not + * + * turn to true if you want to be sloppy with the syntax, but when set to false it allows + * to skip javascript and css tags as long as they are in the form "{ something", which is + * nice. default is false. + * + * @var bool + */ + protected $allowLooseOpenings = false; + + /** + * defines whether the compiler will automatically html-escape variables or not + * + * default is false + * + * @var bool + */ + protected $autoEscape = false; + + /** + * security policy object + * + * @var Dwoo_Security_Policy + */ + protected $securityPolicy; + + /** + * stores the custom plugins registered with this compiler + * + * @var array + */ + protected $customPlugins = array(); + + /** + * stores the template plugins registered with this compiler + * + * @var array + */ + protected $templatePlugins = array(); + + /** + * stores the pre- and post-processors callbacks + * + * @var array + */ + protected $processors = array('pre'=>array(), 'post'=>array()); + + /** + * stores a list of plugins that are used in the currently compiled + * template, and that are not compilable. these plugins will be loaded + * during the template's runtime if required. + * + * it is a 1D array formatted as key:pluginName value:pluginType + * + * @var array + */ + protected $usedPlugins; + + /** + * stores the template undergoing compilation + * + * @var string + */ + protected $template; + + /** + * stores the current pointer position inside the template + * + * @var int + */ + protected $pointer; + + /** + * stores the current line count inside the template for debugging purposes + * + * @var int + */ + protected $line; + + /** + * stores the current template source while compiling it + * + * @var string + */ + protected $templateSource; + + /** + * stores the data within which the scope moves + * + * @var array + */ + protected $data; + + /** + * variable scope of the compiler, set to null if + * it can not be resolved to a static string (i.e. if some + * plugin defines a new scope based on a variable array key) + * + * @var mixed + */ + protected $scope; + + /** + * variable scope tree, that allows to rebuild the current + * scope if required, i.e. when going to a parent level + * + * @var array + */ + protected $scopeTree; + + /** + * block plugins stack, accessible through some methods + * + * @see findBlock + * @see getCurrentBlock + * @see addBlock + * @see addCustomBlock + * @see injectBlock + * @see removeBlock + * @see removeTopBlock + * + * @var array + */ + protected $stack = array(); + + /** + * current block at the top of the block plugins stack, + * accessible through getCurrentBlock + * + * @see getCurrentBlock + * + * @var Dwoo_Block_Plugin + */ + protected $curBlock; + + /** + * current dwoo object that uses this compiler, or null + * + * @var Dwoo + */ + protected $dwoo; + + /** + * holds an instance of this class, used by getInstance when you don't + * provide a custom compiler in order to save resources + * + * @var Dwoo_Compiler + */ + protected static $instance; + + /** + * constructor + * + * saves the created instance so that child templates get the same one + */ + public function __construct() + { + self::$instance = $this; + } + + /** + * sets the delimiters to use in the templates + * + * delimiters can be multi-character strings but should not be one of those as they will + * make it very hard to work with templates or might even break the compiler entirely : "\", "$", "|", ":" and finally "#" only if you intend to use config-vars with the #var# syntax. + * + * @param string $left left delimiter + * @param string $right right delimiter + */ + public function setDelimiters($left, $right) + { + $this->ld = $left; + $this->rd = $right; + $this->ldr = preg_quote($left, '/'); + $this->rdr = preg_quote($right, '/'); + } + + /** + * returns the left and right template delimiters + * + * @return array containing the left and the right delimiters + */ + public function getDelimiters() + { + return array($this->ld, $this->rd); + } + + /** + * sets the way to handle nested comments, if set to true + * {* foo {* some other *} comment *} will be stripped correctly. + * + * if false it will remove {* foo {* some other *} and leave "comment *}" alone, + * this is the default behavior + * + * @param bool $allow allow nested comments or not, defaults to true (but the default internal value is false) + */ + public function setNestedCommentsHandling($allow = true) { + $this->allowNestedComments = (bool) $allow; + } + + /** + * returns the nested comments handling setting + * + * @see setNestedCommentsHandling + * @return bool true if nested comments are allowed + */ + public function getNestedCommentsHandling() { + return $this->allowNestedComments; + } + + /** + * sets the tag openings handling strictness, if set to true, template tags can + * contain spaces before the first function/string/variable such as { $foo} is valid. + * + * if set to false (default setting), { $foo} is invalid but that is however a good thing + * as it allows css (i.e. #foo { color:red; }) to be parsed silently without triggering + * an error, same goes for javascript. + * + * @param bool $allow true to allow loose handling, false to restore default setting + */ + public function setLooseOpeningHandling($allow = false) + { + $this->allowLooseOpenings = (bool) $allow; + } + + /** + * returns the tag openings handling strictness setting + * + * @see setLooseOpeningHandling + * @return bool true if loose tags are allowed + */ + public function getLooseOpeningHandling() + { + return $this->allowLooseOpenings; + } + + /** + * changes the auto escape setting + * + * if enabled, the compiler will automatically html-escape variables, + * unless they are passed through the safe function such as {$var|safe} + * or {safe $var} + * + * default setting is disabled/false + * + * @param bool $enabled set to true to enable, false to disable + */ + public function setAutoEscape($enabled) + { + $this->autoEscape = (bool) $enabled; + } + + /** + * returns the auto escape setting + * + * default setting is disabled/false + * + * @return bool + */ + public function getAutoEscape() + { + return $this->autoEscape; + } + + /** + * adds a preprocessor to the compiler, it will be called + * before the template is compiled + * + * @param mixed $callback either a valid callback to the preprocessor or a simple name if the autoload is set to true + * @param bool $autoload if set to true, the preprocessor is auto-loaded from one of the plugin directories, else you must provide a valid callback + */ + public function addPreProcessor($callback, $autoload = false) + { + if ($autoload) { + $name = str_replace('Dwoo_Processor_', '', $callback); + $class = 'Dwoo_Processor_'.$name; + + if (class_exists($class, false)) { + $callback = array(new $class($this), 'process'); + } elseif (function_exists($class)) { + $callback = $class; + } else { + $callback = array('autoload'=>true, 'class'=>$class, 'name'=>$name); + } + + $this->processors['pre'][] = $callback; + } else { + $this->processors['pre'][] = $callback; + } + } + + /** + * removes a preprocessor from the compiler + * + * @param mixed $callback either a valid callback to the preprocessor or a simple name if it was autoloaded + */ + public function removePreProcessor($callback) + { + if (($index = array_search($callback, $this->processors['pre'], true)) !== false) { + unset($this->processors['pre'][$index]); + } elseif (($index = array_search('Dwoo_Processor_'.str_replace('Dwoo_Processor_', '', $callback), $this->processors['pre'], true)) !== false) { + unset($this->processors['pre'][$index]); + } else { + $class = 'Dwoo_Processor_' . str_replace('Dwoo_Processor_', '', $callback); + foreach ($this->processors['pre'] as $index=>$proc) { + if (is_array($proc) && ($proc[0] instanceof $class) || (isset($proc['class']) && $proc['class'] == $class)) { + unset($this->processors['pre'][$index]); + break; + } + } + } + } + + /** + * adds a postprocessor to the compiler, it will be called + * before the template is compiled + * + * @param mixed $callback either a valid callback to the postprocessor or a simple name if the autoload is set to true + * @param bool $autoload if set to true, the postprocessor is auto-loaded from one of the plugin directories, else you must provide a valid callback + */ + public function addPostProcessor($callback, $autoload = false) + { + if ($autoload) { + $name = str_replace('Dwoo_Processor_', '', $callback); + $class = 'Dwoo_Processor_'.$name; + + if (class_exists($class, false)) { + $callback = array(new $class($this), 'process'); + } elseif (function_exists($class)) { + $callback = $class; + } else { + $callback = array('autoload'=>true, 'class'=>$class, 'name'=>$name); + } + + $this->processors['post'][] = $callback; + } else { + $this->processors['post'][] = $callback; + } + } + + /** + * removes a postprocessor from the compiler + * + * @param mixed $callback either a valid callback to the postprocessor or a simple name if it was autoloaded + */ + public function removePostProcessor($callback) + { + if (($index = array_search($callback, $this->processors['post'], true)) !== false) { + unset($this->processors['post'][$index]); + } elseif (($index = array_search('Dwoo_Processor_'.str_replace('Dwoo_Processor_', '', $callback), $this->processors['post'], true)) !== false) { + unset($this->processors['post'][$index]); + } else { + $class = 'Dwoo_Processor_' . str_replace('Dwoo_Processor_', '', $callback); + foreach ($this->processors['post'] as $index=>$proc) { + if (is_array($proc) && ($proc[0] instanceof $class) || (isset($proc['class']) && $proc['class'] == $class)) { + unset($this->processors['post'][$index]); + break; + } + } + } + } + + /** + * internal function to autoload processors at runtime if required + * + * @param string $class the class/function name + * @param string $name the plugin name (without Dwoo_Plugin_ prefix) + */ + protected function loadProcessor($class, $name) + { + if (!class_exists($class, false) && !function_exists($class)) { + try { + $this->dwoo->getLoader()->loadPlugin($name); + } catch (Dwoo_Exception $e) { + throw new Dwoo_Exception('Processor '.$name.' could not be found in your plugin directories, please ensure it is in a file named '.$name.'.php in the plugin directory'); + } + } + + if (class_exists($class, false)) { + return array(new $class($this), 'process'); + } + + if (function_exists($class)) { + return $class; + } + + throw new Dwoo_Exception('Wrong processor name, when using autoload the processor must be in one of your plugin dir as "name.php" containg a class or function named "Dwoo_Processor_name"'); + } + + /** + * adds an used plugin, this is reserved for use by the {template} plugin + * + * this is required so that plugin loading bubbles up from loaded + * template files to the current one + * + * @private + * @param string $name function name + * @param int $type plugin type (Dwoo::*_PLUGIN) + */ + public function addUsedPlugin($name, $type) + { + $this->usedPlugins[$name] = $type; + } + + /** + * returns all the plugins this template uses + * + * @private + * @return array the list of used plugins in the parsed template + */ + public function getUsedPlugins() + { + return $this->usedPlugins; + } + + /** + * adds a template plugin, this is reserved for use by the {template} plugin + * + * this is required because the template functions are not declared yet + * during compilation, so we must have a way of validating their argument + * signature without using the reflection api + * + * @private + * @param string $name function name + * @param array $params parameter array to help validate the function call + * @param string $uuid unique id of the function + * @param string $body function php code + */ + public function addTemplatePlugin($name, array $params, $uuid, $body = null) + { + $this->templatePlugins[$name] = array('params'=> $params, 'body' => $body, 'uuid' => $uuid); + } + + /** + * returns all the parsed sub-templates + * + * @private + * @return array the parsed sub-templates + */ + public function getTemplatePlugins() + { + return $this->templatePlugins; + } + + /** + * marks a template plugin as being called, which means its source must be included in the compiled template + * + * @param string $name function name + */ + public function useTemplatePlugin($name) + { + $this->templatePlugins[$name]['called'] = true; + } + + /** + * adds the custom plugins loaded into Dwoo to the compiler so it can load them + * + * @see Dwoo::addPlugin + * @param array $customPlugins an array of custom plugins + */ + public function setCustomPlugins(array $customPlugins) + { + $this->customPlugins = $customPlugins; + } + + /** + * sets the security policy object to enforce some php security settings + * + * use this if untrusted persons can modify templates, + * set it on the Dwoo object as it will be passed onto the compiler automatically + * + * @param Dwoo_Security_Policy $policy the security policy object + */ + public function setSecurityPolicy(Dwoo_Security_Policy $policy = null) + { + $this->securityPolicy = $policy; + } + + /** + * returns the current security policy object or null by default + * + * @return Dwoo_Security_Policy|null the security policy object if any + */ + public function getSecurityPolicy() + { + return $this->securityPolicy; + } + + /** + * sets the pointer position + * + * @param int $position the new pointer position + * @param bool $isOffset if set to true, the position acts as an offset and not an absolute position + */ + public function setPointer($position, $isOffset = false) + { + if ($isOffset) { + $this->pointer += $position; + } else { + $this->pointer = $position; + } + } + + /** + * returns the current pointer position, only available during compilation of a template + * + * @return int + */ + public function getPointer() + { + return $this->pointer; + } + + /** + * sets the line number + * + * @param int $number the new line number + * @param bool $isOffset if set to true, the position acts as an offset and not an absolute position + */ + public function setLine($number, $isOffset = false) + { + if ($isOffset) { + $this->line += $number; + } else { + $this->line = $number; + } + } + + /** + * returns the current line number, only available during compilation of a template + * + * @return int + */ + public function getLine() + { + return $this->line; + } + + /** + * returns the dwoo object that initiated this template compilation, only available during compilation of a template + * + * @return Dwoo + */ + public function getDwoo() + { + return $this->dwoo; + } + + /** + * overwrites the template that is being compiled + * + * @param string $newSource the template source that must replace the current one + * @param bool $fromPointer if set to true, only the source from the current pointer position is replaced + * @return string the template or partial template + */ + public function setTemplateSource($newSource, $fromPointer = false) + { + if ($fromPointer === true) { + $this->templateSource = substr($this->templateSource, 0, $this->pointer) . $newSource; + } else { + $this->templateSource = $newSource; + } + } + + /** + * returns the template that is being compiled + * + * @param mixed $fromPointer if set to true, only the source from the current pointer + * position is returned, if a number is given it overrides the current pointer + * @return string the template or partial template + */ + public function getTemplateSource($fromPointer = false) + { + if ($fromPointer === true) { + return substr($this->templateSource, $this->pointer); + } elseif (is_numeric($fromPointer)) { + return substr($this->templateSource, $fromPointer); + } else { + return $this->templateSource; + } + } + + /** + * resets the compilation pointer, effectively restarting the compilation process + * + * this is useful if a plugin modifies the template source since it might need to be recompiled + */ + public function recompile() + { + $this->setPointer(0); + } + + /** + * compiles the provided string down to php code + * + * @param string $tpl the template to compile + * @return string a compiled php string + */ + public function compile(Dwoo $dwoo, Dwoo_ITemplate $template) + { + // init vars + $tpl = $template->getSource(); + $ptr = 0; + $this->dwoo = $dwoo; + $this->template = $template; + $this->templateSource =& $tpl; + $this->pointer =& $ptr; + + while (true) { + // if pointer is at the beginning, reset everything, that allows a plugin to externally reset the compiler if everything must be reparsed + if ($ptr===0) { + // resets variables + $this->usedPlugins = array(); + $this->data = array(); + $this->scope =& $this->data; + $this->scopeTree = array(); + $this->stack = array(); + $this->line = 1; + $this->templatePlugins = array(); + // add top level block + $compiled = $this->addBlock('topLevelBlock', array(), 0); + $this->stack[0]['buffer'] = ''; + + if ($this->debug) echo 'COMPILER INIT
    '; + + if ($this->debug) echo 'PROCESSING PREPROCESSORS ('.count($this->processors['pre']).')
    '; + + // runs preprocessors + foreach ($this->processors['pre'] as $preProc) { + if (is_array($preProc) && isset($preProc['autoload'])) { + $preProc = $this->loadProcessor($preProc['class'], $preProc['name']); + } + if (is_array($preProc) && $preProc[0] instanceof Dwoo_Processor) { + $tpl = call_user_func($preProc, $tpl); + } else { + $tpl = call_user_func($preProc, $this, $tpl); + } + } + unset($preProc); + + // show template source if debug + if ($this->debug) echo '
    '.print_r(htmlentities($tpl), true).'

    '; + + // strips php tags if required by the security policy + if ($this->securityPolicy !== null) { + $search = array('{<\?php.*?\?>}'); + if (ini_get('short_open_tags')) { + $search = array('{<\?.*?\?>}', '{<%.*?%>}'); + } + switch($this->securityPolicy->getPhpHandling()) { + + case Dwoo_Security_Policy::PHP_ALLOW: + break; + case Dwoo_Security_Policy::PHP_ENCODE: + $tpl = preg_replace_callback($search, array($this, 'phpTagEncodingHelper'), $tpl); + break; + case Dwoo_Security_Policy::PHP_REMOVE: + $tpl = preg_replace($search, '', $tpl); + + } + } + } + + $pos = strpos($tpl, $this->ld, $ptr); + + if ($pos === false) { + $this->push(substr($tpl, $ptr), 0); + break; + } elseif (substr($tpl, $pos-1, 1) === '\\' && substr($tpl, $pos-2, 1) !== '\\') { + $this->push(substr($tpl, $ptr, $pos-$ptr-1) . $this->ld); + $ptr = $pos+strlen($this->ld); + } elseif (preg_match('/^'.$this->ldr . ($this->allowLooseOpenings ? '\s*' : '') . 'literal' . ($this->allowLooseOpenings ? '\s*' : '') . $this->rdr.'/s', substr($tpl, $pos), $litOpen)) { + if (!preg_match('/'.$this->ldr . ($this->allowLooseOpenings ? '\s*' : '') . '\/literal' . ($this->allowLooseOpenings ? '\s*' : '') . $this->rdr.'/s', $tpl, $litClose, PREG_OFFSET_CAPTURE, $pos)) { + throw new Dwoo_Compilation_Exception($this, 'The {literal} blocks must be closed explicitly with {/literal}'); + } + $endpos = $litClose[0][1]; + $this->push(substr($tpl, $ptr, $pos-$ptr) . substr($tpl, $pos + strlen($litOpen[0]), $endpos-$pos-strlen($litOpen[0]))); + $ptr = $endpos+strlen($litClose[0][0]); + } else { + if (substr($tpl, $pos-2, 1) === '\\' && substr($tpl, $pos-1, 1) === '\\') { + $this->push(substr($tpl, $ptr, $pos-$ptr-1)); + $ptr = $pos; + } + + $this->push(substr($tpl, $ptr, $pos-$ptr)); + $ptr = $pos; + + $pos += strlen($this->ld); + if ($this->allowLooseOpenings) { + while (substr($tpl, $pos, 1) === ' ') { + $pos+=1; + } + } else { + if (substr($tpl, $pos, 1) === ' ' || substr($tpl, $pos, 1) === "\r" || substr($tpl, $pos, 1) === "\n" || substr($tpl, $pos, 1) === "\t") { + $ptr = $pos; + $this->push($this->ld); + continue; + } + } + + // check that there is an end tag present + if (strpos($tpl, $this->rd, $pos) === false) { + throw new Dwoo_Compilation_Exception($this, 'A template tag was not closed, started with "'.substr($tpl, $ptr, 30).'"'); + } + + + $ptr += strlen($this->ld); + $subptr = $ptr; + + while (true) { + $parsed = $this->parse($tpl, $subptr, null, false, 'root', $subptr); + + // reload loop if the compiler was reset + if ($ptr === 0) { + continue 2; + } + + $len = $subptr - $ptr; + $this->push($parsed, substr_count(substr($tpl, $ptr, $len), "\n")); + $ptr += $len; + + if ($parsed === false) { + break; + } + } + + // adds additional line breaks between php closing and opening tags because the php parser removes those if there is just a single line break + if (substr($this->curBlock['buffer'], -2) === '?>' && preg_match('{^(([\r\n])([\r\n]?))}', substr($tpl, $ptr, 3), $m)) { + if ($m[3] === '') { + $ptr+=1; + $this->push($m[1].$m[1], 1); + } else { + $ptr+=2; + $this->push($m[1]."\n", 2); + } + } + } + } + + $compiled .= $this->removeBlock('topLevelBlock'); + + if ($this->debug) echo 'PROCESSING POSTPROCESSORS
    '; + + foreach ($this->processors['post'] as $postProc) { + if (is_array($postProc) && isset($postProc['autoload'])) { + $postProc = $this->loadProcessor($postProc['class'], $postProc['name']); + } + if (is_array($postProc) && $postProc[0] instanceof Dwoo_Processor) { + $compiled = call_user_func($postProc, $compiled); + } else { + $compiled = call_user_func($postProc, $this, $compiled); + } + } + unset($postProc); + + if ($this->debug) echo 'COMPILATION COMPLETE : MEM USAGE : '.memory_get_usage().'
    '; + + $output = "usedPlugins as $plugin=>$type) { + if ($type & Dwoo::CUSTOM_PLUGIN) { + continue; + } + + switch($type) { + + case Dwoo::BLOCK_PLUGIN: + case Dwoo::CLASS_PLUGIN: + $output .= "if (class_exists('Dwoo_Plugin_$plugin', false)===false)\n\t\$this->getLoader()->loadPlugin('$plugin');\n"; + break; + case Dwoo::FUNC_PLUGIN: + $output .= "if (function_exists('Dwoo_Plugin_$plugin')===false)\n\t\$this->getLoader()->loadPlugin('$plugin');\n"; + break; + case Dwoo::SMARTY_MODIFIER: + $output .= "if (function_exists('smarty_modifier_$plugin')===false)\n\t\$this->getLoader()->loadPlugin('$plugin');\n"; + break; + case Dwoo::SMARTY_FUNCTION: + $output .= "if (function_exists('smarty_function_$plugin')===false)\n\t\$this->getLoader()->loadPlugin('$plugin');\n"; + break; + case Dwoo::SMARTY_BLOCK: + $output .= "if (function_exists('smarty_block_$plugin')===false)\n\t\$this->getLoader()->loadPlugin('$plugin');\n"; + break; + case Dwoo::PROXY_PLUGIN: + $output .= $this->getDwoo()->getPluginProxy()->getPreloader($plugin); + break; + default: + throw new Dwoo_Compilation_Exception($this, 'Type error for '.$plugin.' with type'.$type); + + } + } + + foreach ($this->templatePlugins as $function => $attr) { + if (isset($attr['called']) && $attr['called'] === true && !isset($attr['checked'])) { + $this->resolveSubTemplateDependencies($function); + } + } + foreach ($this->templatePlugins as $function) { + if (isset($function['called']) && $function['called'] === true) { + $output .= $function['body'].PHP_EOL; + } + } + + $output .= $compiled."\n?>"; + + $output = preg_replace('/(?\s*)<\?xml#is', '$1', $output); + + if ($this->debug) { + echo '
    ';
    +			$lines = preg_split('{\r\n|\n|
    }', highlight_string(($output), true)); + array_shift($lines); + foreach ($lines as $i=>$line) { + echo ($i+1).'. '.$line."\r\n"; + } + } + if ($this->debug) echo '
    '; + + $this->template = $this->dwoo = null; + $tpl = null; + + return $output; + } + + /** + * checks what sub-templates are used in every sub-template so that we're sure they are all compiled + * + * @param string $function the sub-template name + */ + protected function resolveSubTemplateDependencies($function) + { + $body = $this->templatePlugins[$function]['body']; + foreach ($this->templatePlugins as $func => $attr) { + if ($func !== $function && !isset($attr['called']) && strpos($body, 'Dwoo_Plugin_'.$func) !== false) { + $this->templatePlugins[$func]['called'] = true; + $this->resolveSubTemplateDependencies($func); + } + } + $this->templatePlugins[$function]['checked'] = true; + } + + /** + * adds compiled content to the current block + * + * @param string $content the content to push + * @param int $lineCount newlines count in content, optional + */ + public function push($content, $lineCount = null) + { + if ($lineCount === null) { + $lineCount = substr_count($content, "\n"); + } + + if ($this->curBlock['buffer'] === null && count($this->stack) > 1) { + // buffer is not initialized yet (the block has just been created) + $this->stack[count($this->stack)-2]['buffer'] .= (string) $content; + $this->curBlock['buffer'] = ''; + } else { + if (!isset($this->curBlock['buffer'])) { + throw new Dwoo_Compilation_Exception($this, 'The template has been closed too early, you probably have an extra block-closing tag somewhere'); + } + // append current content to current block's buffer + $this->curBlock['buffer'] .= (string) $content; + } + $this->line += $lineCount; + } + + /** + * sets the scope + * + * set to null if the scope becomes "unstable" (i.e. too variable or unknown) so that + * variables are compiled in a more evaluative way than just $this->scope['key'] + * + * @param mixed $scope a string i.e. "level1.level2" or an array i.e. array("level1", "level2") + * @param bool $absolute if true, the scope is set from the top level scope and not from the current scope + * @return array the current scope tree + */ + public function setScope($scope, $absolute = false) + { + $old = $this->scopeTree; + + if ($scope===null) { + unset($this->scope); + $this->scope = null; + } + + if (is_array($scope)===false) { + $scope = explode('.', $scope); + } + + if ($absolute===true) { + $this->scope =& $this->data; + $this->scopeTree = array(); + } + + while (($bit = array_shift($scope)) !== null) { + if ($bit === '_parent' || $bit === '_') { + array_pop($this->scopeTree); + reset($this->scopeTree); + $this->scope =& $this->data; + $cnt = count($this->scopeTree); + for ($i=0;$i<$cnt;$i++) + $this->scope =& $this->scope[$this->scopeTree[$i]]; + } elseif ($bit === '_root' || $bit === '__') { + $this->scope =& $this->data; + $this->scopeTree = array(); + } elseif (isset($this->scope[$bit])) { + $this->scope =& $this->scope[$bit]; + $this->scopeTree[] = $bit; + } else { + $this->scope[$bit] = array(); + $this->scope =& $this->scope[$bit]; + $this->scopeTree[] = $bit; + } + } + + return $old; + } + + /** + * adds a block to the top of the block stack + * + * @param string $type block type (name) + * @param array $params the parameters array + * @param int $paramtype the parameters type (see mapParams), 0, 1 or 2 + * @return string the preProcessing() method's output + */ + public function addBlock($type, array $params, $paramtype) + { + $class = 'Dwoo_Plugin_'.$type; + if (class_exists($class, false) === false) { + $this->dwoo->getLoader()->loadPlugin($type); + } + + $params = $this->mapParams($params, array($class, 'init'), $paramtype); + + $this->stack[] = array('type' => $type, 'params' => $params, 'custom' => false, 'class' => $class, 'buffer' => null); + $this->curBlock =& $this->stack[count($this->stack)-1]; + return call_user_func(array($class,'preProcessing'), $this, $params, '', '', $type); + } + + /** + * adds a custom block to the top of the block stack + * + * @param string $type block type (name) + * @param array $params the parameters array + * @param int $paramtype the parameters type (see mapParams), 0, 1 or 2 + * @return string the preProcessing() method's output + */ + public function addCustomBlock($type, array $params, $paramtype) + { + $callback = $this->customPlugins[$type]['callback']; + if (is_array($callback)) { + $class = is_object($callback[0]) ? get_class($callback[0]) : $callback[0]; + } else { + $class = $callback; + } + + $params = $this->mapParams($params, array($class, 'init'), $paramtype); + + $this->stack[] = array('type' => $type, 'params' => $params, 'custom' => true, 'class' => $class, 'buffer' => null); + $this->curBlock =& $this->stack[count($this->stack)-1]; + return call_user_func(array($class,'preProcessing'), $this, $params, '', '', $type); + } + + /** + * injects a block at the top of the plugin stack without calling its preProcessing method + * + * used by {else} blocks to re-add themselves after having closed everything up to their parent + * + * @param string $type block type (name) + * @param array $params parameters array + */ + public function injectBlock($type, array $params) + { + $class = 'Dwoo_Plugin_'.$type; + if (class_exists($class, false) === false) { + $this->dwoo->getLoader()->loadPlugin($type); + } + $this->stack[] = array('type' => $type, 'params' => $params, 'custom' => false, 'class' => $class, 'buffer' => null); + $this->curBlock =& $this->stack[count($this->stack)-1]; + } + + /** + * removes the closest-to-top block of the given type and all other + * blocks encountered while going down the block stack + * + * @param string $type block type (name) + * @return string the output of all postProcessing() method's return values of the closed blocks + */ + public function removeBlock($type) + { + $output = ''; + + $pluginType = $this->getPluginType($type); + if ($pluginType & Dwoo::SMARTY_BLOCK) { + $type = 'smartyinterface'; + } + while (true) { + while ($top = array_pop($this->stack)) { + if ($top['custom']) { + $class = $top['class']; + } else { + $class = 'Dwoo_Plugin_'.$top['type']; + } + if (count($this->stack)) { + $this->curBlock =& $this->stack[count($this->stack)-1]; + $this->push(call_user_func(array($class, 'postProcessing'), $this, $top['params'], '', '', $top['buffer']), 0); + } else { + $null = null; + $this->curBlock =& $null; + $output = call_user_func(array($class, 'postProcessing'), $this, $top['params'], '', '', $top['buffer']); + } + + if ($top['type'] === $type) { + break 2; + } + } + + throw new Dwoo_Compilation_Exception($this, 'Syntax malformation, a block of type "'.$type.'" was closed but was not opened'); + break; + } + + return $output; + } + + /** + * returns a reference to the first block of the given type encountered and + * optionally closes all blocks until it finds it + * + * this is mainly used by {else} plugins to close everything that was opened + * between their parent and themselves + * + * @param string $type the block type (name) + * @param bool $closeAlong whether to close all blocks encountered while going down the block stack or not + * @return &array the array is as such: array('type'=>pluginName, 'params'=>parameter array, + * 'custom'=>bool defining whether it's a custom plugin or not, for internal use) + */ + public function &findBlock($type, $closeAlong = false) + { + if ($closeAlong===true) { + while ($b = end($this->stack)) { + if ($b['type']===$type) { + return $this->stack[key($this->stack)]; + } + $this->push($this->removeTopBlock(), 0); + } + } else { + end($this->stack); + while ($b = current($this->stack)) { + if ($b['type']===$type) { + return $this->stack[key($this->stack)]; + } + prev($this->stack); + } + } + + throw new Dwoo_Compilation_Exception($this, 'A parent block of type "'.$type.'" is required and can not be found'); + } + + /** + * returns a reference to the current block array + * + * @return &array the array is as such: array('type'=>pluginName, 'params'=>parameter array, + * 'custom'=>bool defining whether it's a custom plugin or not, for internal use) + */ + public function &getCurrentBlock() + { + return $this->curBlock; + } + + /** + * removes the block at the top of the stack and calls its postProcessing() method + * + * @return string the postProcessing() method's output + */ + public function removeTopBlock() + { + $o = array_pop($this->stack); + if ($o === null) { + throw new Dwoo_Compilation_Exception($this, 'Syntax malformation, a block of unknown type was closed but was not opened.'); + } + if ($o['custom']) { + $class = $o['class']; + } else { + $class = 'Dwoo_Plugin_'.$o['type']; + } + + $this->curBlock =& $this->stack[count($this->stack)-1]; + + return call_user_func(array($class, 'postProcessing'), $this, $o['params'], '', '', $o['buffer']); + } + + /** + * returns the compiled parameters (for example a variable's compiled parameter will be "$this->scope['key']") out of the given parameter array + * + * @param array $params parameter array + * @return array filtered parameters + */ + public function getCompiledParams(array $params) + { + foreach ($params as $k=>$p) { + if (is_array($p)) { + $params[$k] = $p[0]; + } + } + return $params; + } + + /** + * returns the real parameters (for example a variable's real parameter will be its key, etc) out of the given parameter array + * + * @param array $params parameter array + * @return array filtered parameters + */ + public function getRealParams(array $params) + { + foreach ($params as $k=>$p) { + if (is_array($p)) { + $params[$k] = $p[1]; + } + } + return $params; + } + + /** + * entry point of the parser, it redirects calls to other parse* functions + * + * @param string $in the string within which we must parse something + * @param int $from the starting offset of the parsed area + * @param int $to the ending offset of the parsed area + * @param mixed $parsingParams must be an array if we are parsing a function or modifier's parameters, or false by default + * @param string $curBlock the current parser-block being processed + * @param mixed $pointer a reference to a pointer that will be increased by the amount of characters parsed, or null by default + * @return string parsed values + */ + protected function parse($in, $from, $to, $parsingParams = false, $curBlock='', &$pointer = null) + { + if ($to === null) { + $to = strlen($in); + } + $first = substr($in, $from, 1); + + if ($first === false) { + throw new Dwoo_Compilation_Exception($this, 'Unexpected EOF, a template tag was not closed'); + } + + while ($first===" " || $first==="\n" || $first==="\t" || $first==="\r") { + if ($curBlock === 'root' && substr($in, $from, strlen($this->rd)) === $this->rd) { + // end template tag + $pointer += strlen($this->rd); + if ($this->debug) echo 'TEMPLATE PARSING ENDED
    '; + return false; + } + $from++; + if ($pointer !== null) { + $pointer++; + } + if ($from >= $to) { + if (is_array($parsingParams)) { + return $parsingParams; + } else { + return ''; + } + } + $first = $in[$from]; + } + + $substr = substr($in, $from, $to-$from); + + if ($this->debug) echo '
    PARSE CALL : PARSING "'.htmlentities(substr($in, $from, min($to-$from, 50))).(($to-$from) > 50 ? '...':'').'" @ '.$from.':'.$to.' in '.$curBlock.' : pointer='.$pointer.'
    '; + $parsed = ""; + + if ($curBlock === 'root' && $first === '*') { + $src = $this->getTemplateSource(); + $startpos = $this->getPointer() - strlen($this->ld); + if (substr($src, $startpos, strlen($this->ld)) === $this->ld) { + if ($startpos > 0) { + do { + $char = substr($src, --$startpos, 1); + if ($char == "\n") { + $startpos++; + $whitespaceStart = true; + break; + } + } while ($startpos > 0 && ($char == ' ' || $char == "\t")); + } + + if (!isset($whitespaceStart)) { + $startpos = $this->getPointer(); + } else { + $pointer -= $this->getPointer() - $startpos; + } + + if ($this->allowNestedComments && strpos($src, $this->ld.'*', $this->getPointer()) !== false) { + $comOpen = $this->ld.'*'; + $comClose = '*'.$this->rd; + $level = 1; + $start = $startpos; + $ptr = $this->getPointer() + '*'; + + while ($level > 0 && $ptr < strlen($src)) { + $open = strpos($src, $comOpen, $ptr); + $close = strpos($src, $comClose, $ptr); + + if ($open !== false && $close !== false) { + if ($open < $close) { + $ptr = $open + strlen($comOpen); + $level++; + } else { + $ptr = $close + strlen($comClose); + $level--; + } + } elseif ($open !== false) { + $ptr = $open + strlen($comOpen); + $level++; + } elseif ($close !== false) { + $ptr = $close + strlen($comClose); + $level--; + } else { + $ptr = strlen($src); + } + } + $endpos = $ptr - strlen('*'.$this->rd); + } else { + $endpos = strpos($src, '*'.$this->rd, $startpos); + if ($endpos == false) { + throw new Dwoo_Compilation_Exception($this, 'Un-ended comment'); + } + } + $pointer += $endpos - $startpos + strlen('*'.$this->rd); + if (isset($whitespaceStart) && preg_match('#^[\t ]*\r?\n#', substr($src, $endpos+strlen('*'.$this->rd)), $m)) { + $pointer += strlen($m[0]); + $this->curBlock['buffer'] = substr($this->curBlock['buffer'], 0, strlen($this->curBlock['buffer']) - ($this->getPointer() - $startpos - strlen($this->ld))); + } + return false; + } + } + + if ($first==='$') { + // var + $out = $this->parseVar($in, $from, $to, $parsingParams, $curBlock, $pointer); + $parsed = 'var'; + } elseif ($first==='%' && preg_match('#^%[a-z]#i', $substr)) { + // const + $out = $this->parseConst($in, $from, $to, $parsingParams, $curBlock, $pointer); + } elseif ($first==='"' || $first==="'") { + // string + $out = $this->parseString($in, $from, $to, $parsingParams, $curBlock, $pointer); + } elseif (preg_match('/^[a-z][a-z0-9_]*(?:::[a-z][a-z0-9_]*)?('.(is_array($parsingParams)||$curBlock!='root'?'':'\s+[^(]|').'\s*\(|\s*'.$this->rdr.'|\s*;)/i', $substr)) { + // func + $out = $this->parseFunction($in, $from, $to, $parsingParams, $curBlock, $pointer); + $parsed = 'func'; + } elseif ($first === ';') { + // instruction end + if ($this->debug) echo 'END OF INSTRUCTION
    '; + if ($pointer !== null) { + $pointer++; + } + return $this->parse($in, $from+1, $to, false, 'root', $pointer); + } elseif ($curBlock === 'root' && preg_match('#^/([a-z][a-z0-9_]*)?#i', $substr, $match)) { + // close block + if (!empty($match[1]) && $match[1] == 'else') { + throw new Dwoo_Compilation_Exception($this, 'Else blocks must not be closed explicitly, they are automatically closed when their parent block is closed'); + } + if (!empty($match[1]) && $match[1] == 'elseif') { + throw new Dwoo_Compilation_Exception($this, 'Elseif blocks must not be closed explicitly, they are automatically closed when their parent block is closed or a new else/elseif block is declared after them'); + } + if ($pointer !== null) { + $pointer += strlen($match[0]); + } + if (empty($match[1])) { + if ($this->curBlock['type'] == 'else' || $this->curBlock['type'] == 'elseif') { + $pointer -= strlen($match[0]); + } + if ($this->debug) echo 'TOP BLOCK CLOSED
    '; + return $this->removeTopBlock(); + } else { + if ($this->debug) echo 'BLOCK OF TYPE '.$match[1].' CLOSED
    '; + return $this->removeBlock($match[1]); + } + } elseif ($curBlock === 'root' && substr($substr, 0, strlen($this->rd)) === $this->rd) { + // end template tag + if ($this->debug) echo 'TAG PARSING ENDED
    '; + $pointer += strlen($this->rd); + return false; + } elseif (is_array($parsingParams) && preg_match('#^([a-z0-9_]+\s*=)(?:\s+|[^=]).*#i', $substr, $match)) { + // named parameter + if ($this->debug) echo 'NAMED PARAM FOUND
    '; + $len = strlen($match[1]); + while (substr($in, $from+$len, 1)===' ') { + $len++; + } + if ($pointer !== null) { + $pointer += $len; + } + + $output = array(trim(substr(trim($match[1]), 0, -1)), $this->parse($in, $from+$len, $to, false, 'namedparam', $pointer)); + + $parsingParams[] = $output; + return $parsingParams; + } elseif (preg_match('#^([a-z0-9_]+::\$[a-z0-9_]+)#i', $substr, $match)) { + // static member access + $parsed = 'var'; + if (is_array($parsingParams)) { + $parsingParams[] = array($match[1], $match[1]); + $out = $parsingParams; + } else { + $out = $match[1]; + } + $pointer += strlen($match[1]); + } elseif ($substr!=='' && (is_array($parsingParams) || $curBlock === 'namedparam' || $curBlock === 'condition' || $curBlock === 'expression')) { + // unquoted string, bool or number + $out = $this->parseOthers($in, $from, $to, $parsingParams, $curBlock, $pointer); + } else { + // parse error + throw new Dwoo_Compilation_Exception($this, 'Parse error in "'.substr($in, $from, $to-$from).'"'); + } + + if (empty($out)) { + return ''; + } + + $substr = substr($in, $pointer, $to-$pointer); + + // var parsed, check if any var-extension applies + if ($parsed==='var') { + if (preg_match('#^\s*([/%+*-])\s*([a-z0-9]|\$)#i', $substr, $match)) { + if($this->debug) echo 'PARSING POST-VAR EXPRESSION '.$substr.'
    '; + // parse expressions + $pointer += strlen($match[0]) - 1; + if (is_array($parsingParams)) { + if ($match[2] == '$') { + $expr = $this->parseVar($in, $pointer, $to, array(), $curBlock, $pointer); + } else { + $expr = $this->parse($in, $pointer, $to, array(), 'expression', $pointer); + } + $out[count($out)-1][0] .= $match[1] . $expr[0][0]; + $out[count($out)-1][1] .= $match[1] . $expr[0][1]; + } else { + if ($match[2] == '$') { + $expr = $this->parseVar($in, $pointer, $to, false, $curBlock, $pointer); + } else { + $expr = $this->parse($in, $pointer, $to, false, 'expression', $pointer); + } + if (is_array($out) && is_array($expr)) { + $out[0] .= $match[1] . $expr[0]; + $out[1] .= $match[1] . $expr[1]; + } elseif (is_array($out)) { + $out[0] .= $match[1] . $expr; + $out[1] .= $match[1] . $expr; + } elseif (is_array($expr)) { + $out .= $match[1] . $expr[0]; + } else { + $out .= $match[1] . $expr; + } + } + } else if ($curBlock === 'root' && preg_match('#^(\s*(?:[+/*%-.]=|=|\+\+|--)\s*)(.*)#s', $substr, $match)) { + if($this->debug) echo 'PARSING POST-VAR ASSIGNMENT '.$substr.'
    '; + // parse assignment + $value = $match[2]; + $operator = trim($match[1]); + if (substr($value, 0, 1) == '=') { + throw new Dwoo_Compilation_Exception($this, 'Unexpected "=" in '.$substr.''); + } + + if ($pointer !== null) { + $pointer += strlen($match[1]); + } + + if ($operator !== '++' && $operator !== '--') { + $parts = array(); + $ptr = 0; + $parts = $this->parse($value, 0, strlen($value), $parts, 'condition', $ptr); + $pointer += $ptr; + + // load if plugin + try { + $this->getPluginType('if'); + } catch (Dwoo_Exception $e) { + throw new Dwoo_Compilation_Exception($this, 'Assignments require the "if" plugin to be accessible'); + } + + $parts = $this->mapParams($parts, array('Dwoo_Plugin_if', 'init'), 1); + $parts = $this->getCompiledParams($parts); + + $value = Dwoo_Plugin_if::replaceKeywords($parts['*'], $this); + $echo = ''; + } else { + $value = array(); + $echo = 'echo '; + } + + if ($this->autoEscape) { + $out = preg_replace('#\(is_string\(\$tmp=(.+?)\) \? htmlspecialchars\(\$tmp, ENT_QUOTES, \$this->charset\) : \$tmp\)#', '$1', $out); + } + $out = Dwoo_Compiler::PHP_OPEN. $echo . $out . $operator . implode(' ', $value) . Dwoo_Compiler::PHP_CLOSE; + } + } + + if ($curBlock !== 'modifier' && ($parsed === 'func' || $parsed === 'var') && preg_match('#^\|@?[a-z0-9_]+(:.*)?#i', $substr, $match)) { + // parse modifier on funcs or vars + $srcPointer = $pointer; + if (is_array($parsingParams)) { + $tmp = $this->replaceModifiers(array(null, null, $out[count($out)-1][0], $match[0]), 'var', $pointer); + $out[count($out)-1][0] = $tmp; + $out[count($out)-1][1] .= substr($substr, $srcPointer, $srcPointer - $pointer); + } else { + $out = $this->replaceModifiers(array(null, null, $out, $match[0]), 'var', $pointer); + } + } + + // func parsed, check if any func-extension applies + if ($parsed==='func' && preg_match('#^->[a-z0-9_]+(\s*\(.+|->[a-z].*)?#is', $substr, $match)) { + // parse method call or property read + $ptr = 0; + + if (is_array($parsingParams)) { + $output = $this->parseMethodCall($out[count($out)-1][1], $match[0], $curBlock, $ptr); + + $out[count($out)-1][0] = $output; + $out[count($out)-1][1] .= substr($match[0], 0, $ptr); + } else { + $out = $this->parseMethodCall($out, $match[0], $curBlock, $ptr); + } + + $pointer += $ptr; + } + + if ($curBlock === 'root' && substr($out, 0, strlen(self::PHP_OPEN)) !== self::PHP_OPEN) { + return self::PHP_OPEN .'echo '.$out.';'. self::PHP_CLOSE; + } else { + return $out; + } + } + + /** + * parses a function call + * + * @param string $in the string within which we must parse something + * @param int $from the starting offset of the parsed area + * @param int $to the ending offset of the parsed area + * @param mixed $parsingParams must be an array if we are parsing a function or modifier's parameters, or false by default + * @param string $curBlock the current parser-block being processed + * @param mixed $pointer a reference to a pointer that will be increased by the amount of characters parsed, or null by default + * @return string parsed values + */ + protected function parseFunction($in, $from, $to, $parsingParams = false, $curBlock='', &$pointer = null) + { + $cmdstr = substr($in, $from, $to-$from); + preg_match('/^([a-z][a-z0-9_]*(?:::[a-z][a-z0-9_]*)?)(\s*'.$this->rdr.'|\s*;)?/i', $cmdstr, $match); + + if (empty($match[1])) { + throw new Dwoo_Compilation_Exception($this, 'Parse error, invalid function name : '.substr($cmdstr, 0, 15)); + } + + $func = $match[1]; + + if (!empty($match[2])) { + $cmdstr = $match[1]; + } + + if ($this->debug) echo 'FUNC FOUND ('.$func.')
    '; + + $paramsep = ''; + + if (is_array($parsingParams) || $curBlock != 'root') { + $paramspos = strpos($cmdstr, '('); + $paramsep = ')'; + } elseif(preg_match_all('#[a-z0-9_]+(\s*\(|\s+[^(])#i', $cmdstr, $match, PREG_OFFSET_CAPTURE)) { + $paramspos = $match[1][0][1]; + $paramsep = substr($match[1][0][0], -1) === '(' ? ')':''; + if($paramsep === ')') { + $paramspos += strlen($match[1][0][0]) - 1; + if(substr($cmdstr, 0, 2) === 'if' || substr($cmdstr, 0, 6) === 'elseif') { + $paramsep = ''; + if(strlen($match[1][0][0]) > 1) { + $paramspos--; + } + } + } + } else { + $paramspos = false; + } + + $state = 0; + + if ($paramspos === false) { + $params = array(); + + if ($curBlock !== 'root') { + return $this->parseOthers($in, $from, $to, $parsingParams, $curBlock, $pointer); + } + } else { + if ($curBlock === 'condition') { + // load if plugin + $this->getPluginType('if'); + if (Dwoo_Plugin_if::replaceKeywords(array($func), $this) !== array($func)) { + return $this->parseOthers($in, $from, $to, $parsingParams, $curBlock, $pointer); + } + } + $whitespace = strlen(substr($cmdstr, strlen($func), $paramspos-strlen($func))); + $paramstr = substr($cmdstr, $paramspos+1); + if (substr($paramstr, -1, 1) === $paramsep) { + $paramstr = substr($paramstr, 0, -1); + } + + if (strlen($paramstr)===0) { + $params = array(); + $paramstr = ''; + } else { + $ptr = 0; + $params = array(); + if ($func === 'empty') { + $params = $this->parseVar($paramstr, $ptr, strlen($paramstr), $params, 'root', $ptr); + } else { + while ($ptr < strlen($paramstr)) { + while (true) { + if ($ptr >= strlen($paramstr)) { + break 2; + } + + if ($func !== 'if' && $func !== 'elseif' && $paramstr[$ptr] === ')') { + if ($this->debug) echo 'PARAM PARSING ENDED, ")" FOUND, POINTER AT '.$ptr.'
    '; + break 2; + } elseif ($paramstr[$ptr] === ';') { + $ptr++; + if ($this->debug) echo 'PARAM PARSING ENDED, ";" FOUND, POINTER AT '.$ptr.'
    '; + break 2; + } elseif ($func !== 'if' && $func !== 'elseif' && $paramstr[$ptr] === '/') { + if ($this->debug) echo 'PARAM PARSING ENDED, "/" FOUND, POINTER AT '.$ptr.'
    '; + break 2; + } elseif (substr($paramstr, $ptr, strlen($this->rd)) === $this->rd) { + if ($this->debug) echo 'PARAM PARSING ENDED, RIGHT DELIMITER FOUND, POINTER AT '.$ptr.'
    '; + break 2; + } + + if ($paramstr[$ptr] === ' ' || $paramstr[$ptr] === ',' || $paramstr[$ptr] === "\r" || $paramstr[$ptr] === "\n" || $paramstr[$ptr] === "\t") { + $ptr++; + } else { + break; + } + } + + if ($this->debug) echo 'FUNC START PARAM PARSING WITH POINTER AT '.$ptr.'
    '; + + if ($func === 'if' || $func === 'elseif' || $func === 'tif') { + $params = $this->parse($paramstr, $ptr, strlen($paramstr), $params, 'condition', $ptr); + } else { + $params = $this->parse($paramstr, $ptr, strlen($paramstr), $params, 'function', $ptr); + } + + if ($this->debug) echo 'PARAM PARSED, POINTER AT '.$ptr.' ('.substr($paramstr, $ptr-1, 3).')
    '; + } + } + $paramstr = substr($paramstr, 0, $ptr); + $state = 0; + foreach ($params as $k=>$p) { + if (is_array($p) && is_array($p[1])) { + $state |= 2; + } else { + if (($state & 2) && preg_match('#^(["\'])(.+?)\1$#', $p[0], $m)) { + $params[$k] = array($m[2], array('true', 'true')); + } else { + if ($state & 2) { + throw new Dwoo_Compilation_Exception($this, 'You can not use an unnamed parameter after a named one'); + } + $state |= 1; + } + } + } + } + } + + if ($pointer !== null) { + $pointer += (isset($paramstr) ? strlen($paramstr) : 0) + (')' === $paramsep ? 2 : ($paramspos === false ? 0 : 1)) + strlen($func) + (isset($whitespace) ? $whitespace : 0); + if ($this->debug) echo 'FUNC ADDS '.((isset($paramstr) ? strlen($paramstr) : 0) + (')' === $paramsep ? 2 : ($paramspos === false ? 0 : 1)) + strlen($func)).' TO POINTER
    '; + } + + if ($curBlock === 'method' || $func === 'do' || strstr($func, '::') !== false) { + $pluginType = Dwoo::NATIVE_PLUGIN; + } else { + $pluginType = $this->getPluginType($func); + } + + // blocks + if ($pluginType & Dwoo::BLOCK_PLUGIN) { + if ($curBlock !== 'root' || is_array($parsingParams)) { + throw new Dwoo_Compilation_Exception($this, 'Block plugins can not be used as other plugin\'s arguments'); + } + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + return $this->addCustomBlock($func, $params, $state); + } else { + return $this->addBlock($func, $params, $state); + } + } elseif ($pluginType & Dwoo::SMARTY_BLOCK) { + if ($curBlock !== 'root' || is_array($parsingParams)) { + throw new Dwoo_Compilation_Exception($this, 'Block plugins can not be used as other plugin\'s arguments'); + } + + if ($state & 2) { + array_unshift($params, array('__functype', array($pluginType, $pluginType))); + array_unshift($params, array('__funcname', array($func, $func))); + } else { + array_unshift($params, array($pluginType, $pluginType)); + array_unshift($params, array($func, $func)); + } + + return $this->addBlock('smartyinterface', $params, $state); + } + + // funcs + if ($pluginType & Dwoo::NATIVE_PLUGIN || $pluginType & Dwoo::SMARTY_FUNCTION || $pluginType & Dwoo::SMARTY_BLOCK) { + $params = $this->mapParams($params, null, $state); + } elseif ($pluginType & Dwoo::CLASS_PLUGIN) { + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $params = $this->mapParams($params, array($this->customPlugins[$func]['class'], $this->customPlugins[$func]['function']), $state); + } else { + $params = $this->mapParams($params, array('Dwoo_Plugin_'.$func, ($pluginType & Dwoo::COMPILABLE_PLUGIN) ? 'compile' : 'process'), $state); + } + } elseif ($pluginType & Dwoo::FUNC_PLUGIN) { + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $params = $this->mapParams($params, $this->customPlugins[$func]['callback'], $state); + } else { + $params = $this->mapParams($params, 'Dwoo_Plugin_'.$func.(($pluginType & Dwoo::COMPILABLE_PLUGIN) ? '_compile' : ''), $state); + } + } elseif ($pluginType & Dwoo::SMARTY_MODIFIER) { + $output = 'smarty_modifier_'.$func.'('.implode(', ', $params).')'; + } elseif ($pluginType & Dwoo::PROXY_PLUGIN) { + $params = $this->mapParams($params, $this->getDwoo()->getPluginProxy()->getCallback($func), $state); + } elseif ($pluginType & Dwoo::TEMPLATE_PLUGIN) { + // transforms the parameter array from (x=>array('paramname'=>array(values))) to (paramname=>array(values)) + $map = array(); + foreach ($this->templatePlugins[$func]['params'] as $param=>$defValue) { + if ($param == 'rest') { + $param = '*'; + } + $hasDefault = $defValue !== null; + if ($defValue === 'null') { + $defValue = null; + } elseif ($defValue === 'false') { + $defValue = false; + } elseif ($defValue === 'true') { + $defValue = true; + } elseif (preg_match('#^([\'"]).*?\1$#', $defValue)) { + $defValue = substr($defValue, 1, -1); + } + $map[] = array($param, $hasDefault, $defValue); + } + + $params = $this->mapParams($params, null, $state, $map); + } + + // only keep php-syntax-safe values for non-block plugins + foreach ($params as &$p) { + $p = $p[0]; + } + if ($pluginType & Dwoo::NATIVE_PLUGIN) { + if ($func === 'do') { + if (isset($params['*'])) { + $output = implode(';', $params['*']).';'; + } else { + $output = ''; + } + + if (is_array($parsingParams) || $curBlock !== 'root') { + throw new Dwoo_Compilation_Exception($this, 'Do can not be used inside another function or block'); + } else { + return self::PHP_OPEN.$output.self::PHP_CLOSE; + } + } else { + if (isset($params['*'])) { + $output = $func.'('.implode(', ', $params['*']).')'; + } else { + $output = $func.'()'; + } + } + } elseif ($pluginType & Dwoo::FUNC_PLUGIN) { + if ($pluginType & Dwoo::COMPILABLE_PLUGIN) { + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $funcCompiler = $this->customPlugins[$func]['callback']; + } else { + $funcCompiler = 'Dwoo_Plugin_'.$func.'_compile'; + } + array_unshift($params, $this); + $output = call_user_func_array($funcCompiler, $params); + } else { + array_unshift($params, '$this'); + $params = self::implode_r($params); + + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + $output = 'call_user_func(\''.$callback.'\', '.$params.')'; + } else { + $output = 'Dwoo_Plugin_'.$func.'('.$params.')'; + } + } + } elseif ($pluginType & Dwoo::CLASS_PLUGIN) { + if ($pluginType & Dwoo::COMPILABLE_PLUGIN) { + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + if (!is_array($callback)) { + if (!method_exists($callback, 'compile')) { + throw new Dwoo_Exception('Custom plugin '.$func.' must implement the "compile" method to be compilable, or you should provide a full callback to the method to use'); + } + if (($ref = new ReflectionMethod($callback, 'compile')) && $ref->isStatic()) { + $funcCompiler = array($callback, 'compile'); + } else { + $funcCompiler = array(new $callback, 'compile'); + } + } else { + $funcCompiler = $callback; + } + } else { + $funcCompiler = array('Dwoo_Plugin_'.$func, 'compile'); + array_unshift($params, $this); + } + $output = call_user_func_array($funcCompiler, $params); + } else { + $params = self::implode_r($params); + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + if (!is_array($callback)) { + if (!method_exists($callback, 'process')) { + throw new Dwoo_Exception('Custom plugin '.$func.' must implement the "process" method to be usable, or you should provide a full callback to the method to use'); + } + if (($ref = new ReflectionMethod($callback, 'process')) && $ref->isStatic()) { + $output = 'call_user_func(array(\''.$callback.'\', \'process\'), '.$params.')'; + } else { + $output = 'call_user_func(array($this->getObjectPlugin(\''.$callback.'\'), \'process\'), '.$params.')'; + } + } elseif (is_object($callback[0])) { + $output = 'call_user_func(array($this->plugins[\''.$func.'\'][\'callback\'][0], \''.$callback[1].'\'), '.$params.')'; + } elseif (($ref = new ReflectionMethod($callback[0], $callback[1])) && $ref->isStatic()) { + $output = 'call_user_func(array(\''.$callback[0].'\', \''.$callback[1].'\'), '.$params.')'; + } else { + $output = 'call_user_func(array($this->getObjectPlugin(\''.$callback[0].'\'), \''.$callback[1].'\'), '.$params.')'; + } + if (empty($params)) { + $output = substr($output, 0, -3).')'; + } + } else { + $output = '$this->classCall(\''.$func.'\', array('.$params.'))'; + } + } + } elseif ($pluginType & Dwoo::PROXY_PLUGIN) { + $output = call_user_func(array($this->dwoo->getPluginProxy(), 'getCode'), $func, $params); + } elseif ($pluginType & Dwoo::SMARTY_FUNCTION) { + if (isset($params['*'])) { + $params = self::implode_r($params['*'], true); + } else { + $params = ''; + } + + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + if (is_array($callback)) { + if (is_object($callback[0])) { + $output = 'call_user_func_array(array($this->plugins[\''.$func.'\'][\'callback\'][0], \''.$callback[1].'\'), array(array('.$params.'), $this))'; + } else { + $output = 'call_user_func_array(array(\''.$callback[0].'\', \''.$callback[1].'\'), array(array('.$params.'), $this))'; + } + } else { + $output = $callback.'(array('.$params.'), $this)'; + } + } else { + $output = 'smarty_function_'.$func.'(array('.$params.'), $this)'; + } + } elseif ($pluginType & Dwoo::TEMPLATE_PLUGIN) { + array_unshift($params, '$this'); + $params = self::implode_r($params); + $output = 'Dwoo_Plugin_'.$func.'_'.$this->templatePlugins[$func]['uuid'].'('.$params.')'; + $this->templatePlugins[$func]['called'] = true; + } + + if (is_array($parsingParams)) { + $parsingParams[] = array($output, $output); + return $parsingParams; + } elseif ($curBlock === 'namedparam') { + return array($output, $output); + } else { + return $output; + } + } + + /** + * parses a string + * + * @param string $in the string within which we must parse something + * @param int $from the starting offset of the parsed area + * @param int $to the ending offset of the parsed area + * @param mixed $parsingParams must be an array if we are parsing a function or modifier's parameters, or false by default + * @param string $curBlock the current parser-block being processed + * @param mixed $pointer a reference to a pointer that will be increased by the amount of characters parsed, or null by default + * @return string parsed values + */ + protected function parseString($in, $from, $to, $parsingParams = false, $curBlock='', &$pointer = null) + { + $substr = substr($in, $from, $to-$from); + $first = $substr[0]; + + if ($this->debug) echo 'STRING FOUND (in '.htmlentities(substr($in, $from, min($to-$from, 50))).(($to-$from) > 50 ? '...':'').')
    '; + $strend = false; + $o = $from+1; + while ($strend === false) { + $strend = strpos($in, $first, $o); + if ($strend === false) { + throw new Dwoo_Compilation_Exception($this, 'Unfinished string, started with '.substr($in, $from, $to-$from)); + } + if (substr($in, $strend-1, 1) === '\\') { + $o = $strend+1; + $strend = false; + } + } + if ($this->debug) echo 'STRING DELIMITED: '.substr($in, $from, $strend+1-$from).'
    '; + + $srcOutput = substr($in, $from, $strend+1-$from); + + if ($pointer !== null) { + $pointer += strlen($srcOutput); + } + + $output = $this->replaceStringVars($srcOutput, $first); + + // handle modifiers + if ($curBlock !== 'modifier' && preg_match('#^((?:\|(?:@?[a-z0-9_]+(?::.*)*))+)#i', substr($substr, $strend+1-$from), $match)) { + $modstr = $match[1]; + + if ($curBlock === 'root' && substr($modstr, -1) === '}') { + $modstr = substr($modstr, 0, -1); + } + $modstr = str_replace('\\'.$first, $first, $modstr); + $ptr = 0; + $output = $this->replaceModifiers(array(null, null, $output, $modstr), 'string', $ptr); + + $strend += $ptr; + if ($pointer !== null) { + $pointer += $ptr; + } + $srcOutput .= substr($substr, $strend+1-$from, $ptr); + } + + if (is_array($parsingParams)) { + $parsingParams[] = array($output, substr($srcOutput, 1, -1)); + return $parsingParams; + } elseif ($curBlock === 'namedparam') { + return array($output, substr($srcOutput, 1, -1)); + } else { + return $output; + } + } + + /** + * parses a constant + * + * @param string $in the string within which we must parse something + * @param int $from the starting offset of the parsed area + * @param int $to the ending offset of the parsed area + * @param mixed $parsingParams must be an array if we are parsing a function or modifier's parameters, or false by default + * @param string $curBlock the current parser-block being processed + * @param mixed $pointer a reference to a pointer that will be increased by the amount of characters parsed, or null by default + * @return string parsed values + */ + protected function parseConst($in, $from, $to, $parsingParams = false, $curBlock='', &$pointer = null) + { + $substr = substr($in, $from, $to-$from); + + if ($this->debug) { + echo 'CONST FOUND : '.$substr.'
    '; + } + + if (!preg_match('#^%([a-z0-9_:]+)#i', $substr, $m)) { + throw new Dwoo_Compilation_Exception($this, 'Invalid constant'); + } + + if ($pointer !== null) { + $pointer += strlen($m[0]); + } + + $output = $this->parseConstKey($m[1], $curBlock); + + if (is_array($parsingParams)) { + $parsingParams[] = array($output, $m[1]); + return $parsingParams; + } elseif ($curBlock === 'namedparam') { + return array($output, $m[1]); + } else { + return $output; + } + } + + /** + * parses a constant + * + * @param string $key the constant to parse + * @param string $curBlock the current parser-block being processed + * @return string parsed constant + */ + protected function parseConstKey($key, $curBlock) + { + if ($this->securityPolicy !== null && $this->securityPolicy->getConstantHandling() === Dwoo_Security_Policy::CONST_DISALLOW) { + return 'null'; + } + + if ($curBlock !== 'root') { + $output = '(defined("'.$key.'") ? '.$key.' : null)'; + } else { + $output = $key; + } + + return $output; + } + + /** + * parses a variable + * + * @param string $in the string within which we must parse something + * @param int $from the starting offset of the parsed area + * @param int $to the ending offset of the parsed area + * @param mixed $parsingParams must be an array if we are parsing a function or modifier's parameters, or false by default + * @param string $curBlock the current parser-block being processed + * @param mixed $pointer a reference to a pointer that will be increased by the amount of characters parsed, or null by default + * @return string parsed values + */ + protected function parseVar($in, $from, $to, $parsingParams = false, $curBlock='', &$pointer = null) + { + $substr = substr($in, $from, $to-$from); + + if (preg_match('#(\$?\.?[a-z0-9_:]*(?:(?:(?:\.|->)(?:[a-z0-9_:]+|(?R))|\[(?:[a-z0-9_:]+|(?R)|(["\'])[^\2]*?\2)\]))*)' . // var key + ($curBlock==='root' || $curBlock==='function' || $curBlock==='namedparam' || $curBlock==='condition' || $curBlock==='variable' || $curBlock==='expression' ? '(\(.*)?' : '()') . // method call + ($curBlock==='root' || $curBlock==='function' || $curBlock==='namedparam' || $curBlock==='condition' || $curBlock==='variable' || $curBlock==='delimited_string' ? '((?:(?:[+/*%=-])(?:(?_:-]+(?:\([^)]*\))?|(?'))); + $key = substr($match[1], 1, strrpos($match[1], '->')-1); + $methodCall = substr($match[1], strrpos($match[1], '->')) . $match[3]; + } + + if ($hasModifiers) { + $matchedLength -= strlen($match[5]); + } + + if ($pointer !== null) { + $pointer += $matchedLength; + } + + // replace useless brackets by dot accessed vars + $key = preg_replace('#\[([^$%\[.>-]+)\]#', '.$1', $key); + + // prevent $foo->$bar calls because it doesn't seem worth the trouble + if (strpos($key, '->$') !== false) { + throw new Dwoo_Compilation_Exception($this, 'You can not access an object\'s property using a variable name.'); + } + + if ($this->debug) { + if ($hasMethodCall) { + echo 'METHOD CALL FOUND : $'.$key.substr($methodCall, 0, 30).'
    '; + } else { + echo 'VAR FOUND : $'.$key.'
    '; + } + } + + $key = str_replace('"', '\\"', $key); + + $cnt=substr_count($key, '$'); + if ($cnt > 0) { + $uid = 0; + $parsed = array($uid => ''); + $current =& $parsed; + $curTxt =& $parsed[$uid++]; + $tree = array(); + $chars = str_split($key, 1); + $inSplittedVar = false; + $bracketCount = 0; + + while (($char = array_shift($chars)) !== null) { + if ($char === '[') { + if (count($tree) > 0) { + $bracketCount++; + } else { + $tree[] =& $current; + $current[$uid] = array($uid+1 => ''); + $current =& $current[$uid++]; + $curTxt =& $current[$uid++]; + continue; + } + } elseif ($char === ']') { + if ($bracketCount > 0) { + $bracketCount--; + } else { + $current =& $tree[count($tree)-1]; + array_pop($tree); + if (current($chars) !== '[' && current($chars) !== false && current($chars) !== ']') { + $current[$uid] = ''; + $curTxt =& $current[$uid++]; + } + continue; + } + } elseif ($char === '$') { + if (count($tree) == 0) { + $curTxt =& $current[$uid++]; + $inSplittedVar = true; + } + } elseif (($char === '.' || $char === '-') && count($tree) == 0 && $inSplittedVar) { + $curTxt =& $current[$uid++]; + $inSplittedVar = false; + } + + $curTxt .= $char; + } + unset($uid, $current, $curTxt, $tree, $chars); + + if ($this->debug) echo 'RECURSIVE VAR REPLACEMENT : '.$key.'
    '; + + $key = $this->flattenVarTree($parsed); + + if ($this->debug) echo 'RECURSIVE VAR REPLACEMENT DONE : '.$key.'
    '; + + $output = preg_replace('#(^""\.|""\.|\.""$|(\()""\.|\.""(\)))#', '$2$3', '$this->readVar("'.$key.'")'); + } else { + $output = $this->parseVarKey($key, $hasModifiers ? 'modifier' : $curBlock); + } + + // methods + if ($hasMethodCall) { + $ptr = 0; + + $output = $this->parseMethodCall($output, $methodCall, $curBlock, $ptr); + + if ($pointer !== null) { + $pointer += $ptr; + } + $matchedLength += $ptr; + } + + if ($hasExpression) { + // expressions + preg_match_all('#(?:([+/*%=-])(=?-?[%$][a-z0-9.[\]>_:-]+(?:\([^)]*\))?|=?-?[0-9.,]+|\1))#i', $match[4], $expMatch); + + foreach ($expMatch[1] as $k=>$operator) { + if (substr($expMatch[2][$k], 0, 1)==='=') { + $assign = true; + if ($operator === '=') { + throw new Dwoo_Compilation_Exception($this, 'Invalid expression '.$substr.', can not use "==" in expressions'); + } + if ($curBlock !== 'root') { + throw new Dwoo_Compilation_Exception($this, 'Invalid expression '.$substr.', assignments can only be used in top level expressions like {$foo+=3} or {$foo="bar"}'); + } + $operator .= '='; + $expMatch[2][$k] = substr($expMatch[2][$k], 1); + } + + if (substr($expMatch[2][$k], 0, 1)==='-' && strlen($expMatch[2][$k]) > 1) { + $operator .= '-'; + $expMatch[2][$k] = substr($expMatch[2][$k], 1); + } + if (($operator==='+'||$operator==='-') && $expMatch[2][$k]===$operator) { + $output = '('.$output.$operator.$operator.')'; + break; + } elseif (substr($expMatch[2][$k], 0, 1) === '$') { + $output = '('.$output.' '.$operator.' '.$this->parseVar($expMatch[2][$k], 0, strlen($expMatch[2][$k]), false, 'expression').')'; + } elseif (substr($expMatch[2][$k], 0, 1) === '%') { + $output = '('.$output.' '.$operator.' '.$this->parseConst($expMatch[2][$k], 0, strlen($expMatch[2][$k]), false, 'expression').')'; + } elseif (!empty($expMatch[2][$k])) { + $output = '('.$output.' '.$operator.' '.str_replace(',', '.', $expMatch[2][$k]).')'; + } else { + throw new Dwoo_Compilation_Exception($this, 'Unfinished expression '.$substr.', missing var or number after math operator'); + } + } + } + + if ($this->autoEscape === true) { + $output = '(is_string($tmp='.$output.') ? htmlspecialchars($tmp, ENT_QUOTES, $this->charset) : $tmp)'; + } + + // handle modifiers + if ($curBlock !== 'modifier' && $hasModifiers) { + $ptr = 0; + $output = $this->replaceModifiers(array(null, null, $output, $match[5]), 'var', $ptr); + if ($pointer !== null) { + $pointer += $ptr; + } + $matchedLength += $ptr; + } + + if (is_array($parsingParams)) { + $parsingParams[] = array($output, $key); + return $parsingParams; + } elseif ($curBlock === 'namedparam') { + return array($output, $key); + } elseif ($curBlock === 'string' || $curBlock === 'delimited_string') { + return array($matchedLength, $output); + } elseif ($curBlock === 'expression' || $curBlock === 'variable') { + return $output; + } elseif (isset($assign)) { + return self::PHP_OPEN.$output.';'.self::PHP_CLOSE; + } else { + return $output; + } + } else { + if ($curBlock === 'string' || $curBlock === 'delimited_string') { + return array(0, ''); + } else { + throw new Dwoo_Compilation_Exception($this, 'Invalid variable name '.$substr.''); + } + } + } + + /** + * parses any number of chained method calls/property reads + * + * @param string $output the variable or whatever upon which the method are called + * @param string $methodCall method call source, starting at "->" + * @param string $curBlock the current parser-block being processed + * @param int $pointer a reference to a pointer that will be increased by the amount of characters parsed + * @return string parsed call(s)/read(s) + */ + protected function parseMethodCall($output, $methodCall, $curBlock, &$pointer) + { + $ptr = 0; + $len = strlen($methodCall); + + while ($ptr < $len) { + if (strpos($methodCall, '->', $ptr) === $ptr) { + $ptr += 2; + } + + if (in_array($methodCall[$ptr], array(';', '/', ' ', "\t", "\r", "\n", ')', '+', '*', '%', '=', '-', '|')) || substr($methodCall, $ptr, strlen($this->rd)) === $this->rd) { + // break char found + break; + } + + if(!preg_match('/^([a-z0-9_]+)(\(.*?\))?/i', substr($methodCall, $ptr), $methMatch)) { + throw new Dwoo_Compilation_Exception($this, 'Invalid method name : '.substr($methodCall, $ptr, 20)); + } + + if (empty($methMatch[2])) { + // property + if ($curBlock === 'root') { + $output .= '->'.$methMatch[1]; + } else { + $output = '(($tmp = '.$output.') ? $tmp->'.$methMatch[1].' : null)'; + } + $ptr += strlen($methMatch[1]); + } else { + // method + if (substr($methMatch[2], 0, 2) === '()') { + $parsedCall = '->'.$methMatch[1].'()'; + $ptr += strlen($methMatch[1]) + 2; + } else { + $parsedCall = '->'.$this->parseFunction($methodCall, $ptr, strlen($methodCall), false, 'method', $ptr); + } + if ($curBlock === 'root') { + $output .= $parsedCall; + } else { + $output = '(($tmp = '.$output.') ? $tmp'.$parsedCall.' : null)'; + } + } + } + + $pointer += $ptr; + return $output; + } + + /** + * parses a constant variable (a variable that doesn't contain another variable) and preprocesses it to save runtime processing time + * + * @param string $key the variable to parse + * @param string $curBlock the current parser-block being processed + * @return string parsed variable + */ + protected function parseVarKey($key, $curBlock) + { + if ($key === '') { + return '$this->scope'; + } + if (substr($key, 0, 1) === '.') { + $key = 'dwoo'.$key; + } + if (preg_match('#dwoo\.(get|post|server|cookies|session|env|request)((?:\.[a-z0-9_-]+)+)#i', $key, $m)) { + $global = strtoupper($m[1]); + if ($global === 'COOKIES') { + $global = 'COOKIE'; + } + $key = '$_'.$global; + foreach (explode('.', ltrim($m[2], '.')) as $part) + $key .= '['.var_export($part, true).']'; + if ($curBlock === 'root') { + $output = $key; + } else { + $output = '(isset('.$key.')?'.$key.':null)'; + } + } elseif (preg_match('#dwoo\.const\.([a-z0-9_:]+)#i', $key, $m)) { + return $this->parseConstKey($m[1], $curBlock); + } elseif ($this->scope !== null) { + if (strstr($key, '.') === false && strstr($key, '[') === false && strstr($key, '->') === false) { + if ($key === 'dwoo') { + $output = '$this->globals'; + } elseif ($key === '_root' || $key === '__') { + $output = '$this->data'; + } elseif ($key === '_parent' || $key === '_') { + $output = '$this->readParentVar(1)'; + } elseif ($key === '_key') { + $output = '$tmp_key'; + } else { + if ($curBlock === 'root') { + $output = '$this->scope["'.$key.'"]'; + } else { + $output = '(isset($this->scope["'.$key.'"]) ? $this->scope["'.$key.'"] : null)'; + } + } + } else { + preg_match_all('#(\[|->|\.)?((?:[a-z0-9_]|-(?!>))+|(\\\?[\'"])[^\3]*?\3)\]?#i', $key, $m); + + $i = $m[2][0]; + if ($i === '_parent' || $i === '_') { + $parentCnt = 0; + + while (true) { + $parentCnt++; + array_shift($m[2]); + array_shift($m[1]); + if (current($m[2]) === '_parent') { + continue; + } + break; + } + + $output = '$this->readParentVar('.$parentCnt.')'; + } else { + if ($i === 'dwoo') { + $output = '$this->globals'; + array_shift($m[2]); + array_shift($m[1]); + } elseif ($i === '_root' || $i === '__') { + $output = '$this->data'; + array_shift($m[2]); + array_shift($m[1]); + } elseif ($i === '_key') { + $output = '$tmp_key'; + } else { + $output = '$this->scope'; + } + + while (count($m[1]) && $m[1][0] !== '->') { + $m[2][0] = preg_replace('/(^\\\([\'"])|\\\([\'"])$)/x', '$2$3', $m[2][0]); + if(substr($m[2][0], 0, 1) == '"' || substr($m[2][0], 0, 1) == "'") { + $output .= '['.$m[2][0].']'; + } else { + $output .= '["'.$m[2][0].'"]'; + } + array_shift($m[2]); + array_shift($m[1]); + } + + if ($curBlock !== 'root') { + $output = '(isset('.$output.') ? '.$output.':null)'; + } + } + + if (count($m[2])) { + unset($m[0]); + $output = '$this->readVarInto('.str_replace("\n", '', var_export($m, true)).', '.$output.', '.($curBlock == 'root' ? 'false': 'true').')'; + } + } + } else { + preg_match_all('#(\[|->|\.)?((?:[a-z0-9_]|-(?!>))+)\]?#i', $key, $m); + unset($m[0]); + $output = '$this->readVar('.str_replace("\n", '', var_export($m, true)).')'; + } + + return $output; + } + + /** + * flattens a variable tree, this helps in parsing very complex variables such as $var.foo[$foo.bar->baz].baz, + * it computes the contents of the brackets first and works out from there + * + * @param array $tree the variable tree parsed by he parseVar() method that must be flattened + * @param bool $recursed leave that to false by default, it is only for internal use + * @return string flattened tree + */ + protected function flattenVarTree(array $tree, $recursed=false) + { + $out = $recursed ? '".$this->readVarInto(' : ''; + foreach ($tree as $bit) { + if (is_array($bit)) { + $out.='.'.$this->flattenVarTree($bit, false); + } else { + $key = str_replace('"', '\\"', $bit); + + if (substr($key, 0, 1)==='$') { + $out .= '".'.$this->parseVar($key, 0, strlen($key), false, 'variable').'."'; + } else { + $cnt = substr_count($key, '$'); + + if ($this->debug) echo 'PARSING SUBVARS IN : '.$key.'
    '; + if ($cnt > 0) { + while (--$cnt >= 0) { + if (isset($last)) { + $last = strrpos($key, '$', - (strlen($key) - $last + 1)); + } else { + $last = strrpos($key, '$'); + } + preg_match('#\$[a-z0-9_]+((?:(?:\.|->)(?:[a-z0-9_]+|(?R))|\[(?:[a-z0-9_]+|(?R))\]))*'. + '((?:(?:[+/*%-])(?:\$[a-z0-9.[\]>_:-]+(?:\([^)]*\))?|[0-9.,]*))*)#i', substr($key, $last), $submatch); + + $len = strlen($submatch[0]); + $key = substr_replace( + $key, + preg_replace_callback( + '#(\$[a-z0-9_]+((?:(?:\.|->)(?:[a-z0-9_]+|(?R))|\[(?:[a-z0-9_]+|(?R))\]))*)'. + '((?:(?:[+/*%-])(?:\$[a-z0-9.[\]>_:-]+(?:\([^)]*\))?|[0-9.,]*))*)#i', + array($this, 'replaceVarKeyHelper'), substr($key, $last, $len) + ), + $last, + $len + ); + if ($this->debug) echo 'RECURSIVE VAR REPLACEMENT DONE : '.$key.'
    '; + } + unset($last); + + $out .= $key; + } else { + $out .= $key; + } + } + } + } + $out .= $recursed ? ', true)."' : ''; + return $out; + } + + /** + * helper function that parses a variable + * + * @param array $match the matched variable, array(1=>"string match") + * @return string parsed variable + */ + protected function replaceVarKeyHelper($match) + { + return '".'.$this->parseVar($match[0], 0, strlen($match[0]), false, 'variable').'."'; + } + + /** + * parses various constants, operators or non-quoted strings + * + * @param string $in the string within which we must parse something + * @param int $from the starting offset of the parsed area + * @param int $to the ending offset of the parsed area + * @param mixed $parsingParams must be an array if we are parsing a function or modifier's parameters, or false by default + * @param string $curBlock the current parser-block being processed + * @param mixed $pointer a reference to a pointer that will be increased by the amount of characters parsed, or null by default + * @return string parsed values + */ + protected function parseOthers($in, $from, $to, $parsingParams = false, $curBlock='', &$pointer = null) + { + $first = $in[$from]; + $substr = substr($in, $from, $to-$from); + + $end = strlen($substr); + + if ($curBlock === 'condition') { + $breakChars = array('(', ')', ' ', '||', '&&', '|', '&', '>=', '<=', '===', '==', '=', '!==', '!=', '<<', '<', '>>', '>', '^', '~', ',', '+', '-', '*', '/', '%', '!', '?', ':', $this->rd, ';'); + } elseif ($curBlock === 'modifier') { + $breakChars = array(' ', ',', ')', ':', '|', "\r", "\n", "\t", ";", $this->rd); + } elseif ($curBlock === 'expression') { + $breakChars = array('/', '%', '+', '-', '*', ' ', ',', ')', "\r", "\n", "\t", ";", $this->rd); + } else { + $breakChars = array(' ', ',', ')', "\r", "\n", "\t", ";", $this->rd); + } + + $breaker = false; + while (list($k,$char) = each($breakChars)) { + $test = strpos($substr, $char); + if ($test !== false && $test < $end) { + $end = $test; + $breaker = $k; + } + } + + if ($curBlock === 'condition') { + if ($end === 0 && $breaker !== false) { + $end = strlen($breakChars[$breaker]); + } + } + + if ($end !== false) { + $substr = substr($substr, 0, $end); + } + + if ($pointer !== null) { + $pointer += strlen($substr); + } + + $src = $substr; + $substr = trim($substr); + + if (strtolower($substr) === 'false' || strtolower($substr) === 'no' || strtolower($substr) === 'off') { + if ($this->debug) echo 'BOOLEAN(FALSE) PARSED
    '; + $substr = 'false'; + } elseif (strtolower($substr) === 'true' || strtolower($substr) === 'yes' || strtolower($substr) === 'on') { + if ($this->debug) echo 'BOOLEAN(TRUE) PARSED
    '; + $substr = 'true'; + } elseif ($substr === 'null' || $substr === 'NULL') { + if ($this->debug) echo 'NULL PARSED
    '; + $substr = 'null'; + } elseif (is_numeric($substr)) { + $substr = (float) $substr; + if ((int) $substr == $substr) { + $substr = (int) $substr; + } + if ($this->debug) echo 'NUMBER ('.$substr.') PARSED
    '; + } elseif (preg_match('{^-?(\d+|\d*(\.\d+))\s*([/*%+-]\s*-?(\d+|\d*(\.\d+)))+$}', $substr)) { + if ($this->debug) echo 'SIMPLE MATH PARSED
    '; + $substr = '('.$substr.')'; + } elseif ($curBlock === 'condition' && array_search($substr, $breakChars, true) !== false) { + if ($this->debug) echo 'BREAKCHAR ('.$substr.') PARSED
    '; + //$substr = '"'.$substr.'"'; + } else { + $substr = $this->replaceStringVars('\''.str_replace('\'', '\\\'', $substr).'\'', '\'', $curBlock); + + if ($this->debug) echo 'BLABBER ('.$substr.') CASTED AS STRING
    '; + } + + if (is_array($parsingParams)) { + $parsingParams[] = array($substr, $src); + return $parsingParams; + } elseif ($curBlock === 'namedparam') { + return array($substr, $src); + } elseif ($curBlock === 'expression') { + return $substr; + } else { + throw new Exception('Something went wrong'); + } + } + + /** + * replaces variables within a parsed string + * + * @param string $string the parsed string + * @param string $first the first character parsed in the string, which is the string delimiter (' or ") + * @param string $curBlock the current parser-block being processed + * @return string the original string with variables replaced + */ + protected function replaceStringVars($string, $first, $curBlock='') + { + $pos = 0; + if ($this->debug) echo 'STRING VAR REPLACEMENT : '.$string.'
    '; + // replace vars + while (($pos = strpos($string, '$', $pos)) !== false) { + $prev = substr($string, $pos-1, 1); + if ($prev === '\\') { + $pos++; + continue; + } + + $var = $this->parse($string, $pos, null, false, ($curBlock === 'modifier' ? 'modifier' : ($prev === '`' ? 'delimited_string':'string'))); + $len = $var[0]; + $var = $this->parse(str_replace('\\'.$first, $first, $string), $pos, null, false, ($curBlock === 'modifier' ? 'modifier' : ($prev === '`' ? 'delimited_string':'string'))); + + if ($prev === '`' && substr($string, $pos+$len, 1) === '`') { + $string = substr_replace($string, $first.'.'.$var[1].'.'.$first, $pos-1, $len+2); + } else { + $string = substr_replace($string, $first.'.'.$var[1].'.'.$first, $pos, $len); + } + $pos += strlen($var[1]) + 2; + if ($this->debug) echo 'STRING VAR REPLACEMENT DONE : '.$string.'
    '; + } + + // handle modifiers + // TODO Obsolete? + $string = preg_replace_callback('#("|\')\.(.+?)\.\1((?:\|(?:@?[a-z0-9_]+(?:(?::("|\').+?\4|:[^`]*))*))+)#i', array($this, 'replaceModifiers'), $string); + + // replace escaped dollar operators by unescaped ones if required + if ($first==="'") { + $string = str_replace('\\$', '$', $string); + } + + return $string; + } + + /** + * replaces the modifiers applied to a string or a variable + * + * @param array $m the regex matches that must be array(1=>"double or single quotes enclosing a string, when applicable", 2=>"the string or var", 3=>"the modifiers matched") + * @param string $curBlock the current parser-block being processed + * @return string the input enclosed with various function calls according to the modifiers found + */ + protected function replaceModifiers(array $m, $curBlock = null, &$pointer = null) + { + if ($this->debug) echo 'PARSING MODIFIERS : '.$m[3].'
    '; + + if ($pointer !== null) { + $pointer += strlen($m[3]); + } + // remove first pipe + $cmdstrsrc = substr($m[3], 1); + // remove last quote if present + if (substr($cmdstrsrc, -1, 1) === $m[1]) { + $cmdstrsrc = substr($cmdstrsrc, 0, -1); + $add = $m[1]; + } + + $output = $m[2]; + + $continue = true; + while (strlen($cmdstrsrc) > 0 && $continue) { + if ($cmdstrsrc[0] === '|') { + $cmdstrsrc = substr($cmdstrsrc, 1); + continue; + } + if ($cmdstrsrc[0] === ' ' || $cmdstrsrc[0] === ';' || substr($cmdstrsrc, 0, strlen($this->rd)) === $this->rd) { + if ($this->debug) echo 'MODIFIER PARSING ENDED, RIGHT DELIMITER or ";" FOUND
    '; + $continue = false; + if ($pointer !== null) { + $pointer -= strlen($cmdstrsrc); + } + break; + } + $cmdstr = $cmdstrsrc; + $paramsep = ':'; + if (!preg_match('/^(@{0,2}[a-z][a-z0-9_]*)(:)?/i', $cmdstr, $match)) { + throw new Dwoo_Compilation_Exception($this, 'Invalid modifier name, started with : '.substr($cmdstr, 0, 10)); + } + $paramspos = !empty($match[2]) ? strlen($match[1]) : false; + $func = $match[1]; + + $state = 0; + if ($paramspos === false) { + $cmdstrsrc = substr($cmdstrsrc, strlen($func)); + $params = array(); + if ($this->debug) echo 'MODIFIER ('.$func.') CALLED WITH NO PARAMS
    '; + } else { + $paramstr = substr($cmdstr, $paramspos+1); + if (substr($paramstr, -1, 1) === $paramsep) { + $paramstr = substr($paramstr, 0, -1); + } + + $ptr = 0; + $params = array(); + while ($ptr < strlen($paramstr)) { + if ($this->debug) echo 'MODIFIER ('.$func.') START PARAM PARSING WITH POINTER AT '.$ptr.'
    '; + if ($this->debug) echo $paramstr.'--'.$ptr.'--'.strlen($paramstr).'--modifier
    '; + $params = $this->parse($paramstr, $ptr, strlen($paramstr), $params, 'modifier', $ptr); + if ($this->debug) echo 'PARAM PARSED, POINTER AT '.$ptr.'
    '; + + if ($ptr >= strlen($paramstr)) { + if ($this->debug) echo 'PARAM PARSING ENDED, PARAM STRING CONSUMED
    '; + break; + } + + if ($paramstr[$ptr] === ' ' || $paramstr[$ptr] === '|' || $paramstr[$ptr] === ';' || substr($paramstr, $ptr, strlen($this->rd)) === $this->rd) { + if ($this->debug) echo 'PARAM PARSING ENDED, " ", "|", RIGHT DELIMITER or ";" FOUND, POINTER AT '.$ptr.'
    '; + if ($paramstr[$ptr] !== '|') { + $continue = false; + if ($pointer !== null) { + $pointer -= strlen($paramstr) - $ptr; + } + } + $ptr++; + break; + } + if ($ptr < strlen($paramstr) && $paramstr[$ptr] === ':') { + $ptr++; + } + } + $cmdstrsrc = substr($cmdstrsrc, strlen($func)+1+$ptr); + $paramstr = substr($paramstr, 0, $ptr); + foreach ($params as $k=>$p) { + if (is_array($p) && is_array($p[1])) { + $state |= 2; + } else { + if (($state & 2) && preg_match('#^(["\'])(.+?)\1$#', $p[0], $m)) { + $params[$k] = array($m[2], array('true', 'true')); + } else { + if ($state & 2) { + throw new Dwoo_Compilation_Exception($this, 'You can not use an unnamed parameter after a named one'); + } + $state |= 1; + } + } + } + } + + // check if we must use array_map with this plugin or not + $mapped = false; + if (substr($func, 0, 1) === '@') { + $func = substr($func, 1); + $mapped = true; + } + + $pluginType = $this->getPluginType($func); + + if ($state & 2) { + array_unshift($params, array('value', array($output, $output))); + } else { + array_unshift($params, array($output, $output)); + } + + if ($pluginType & Dwoo::NATIVE_PLUGIN) { + $params = $this->mapParams($params, null, $state); + + $params = $params['*'][0]; + + $params = self::implode_r($params); + + if ($mapped) { + $output = '$this->arrayMap(\''.$func.'\', array('.$params.'))'; + } else { + $output = $func.'('.$params.')'; + } + } elseif ($pluginType & Dwoo::PROXY_PLUGIN) { + $params = $this->mapParams($params, $this->getDwoo()->getPluginProxy()->getCallback($func), $state); + foreach ($params as &$p) + $p = $p[0]; + $output = call_user_func(array($this->dwoo->getPluginProxy(), 'getCode'), $func, $params); + } elseif ($pluginType & Dwoo::SMARTY_MODIFIER) { + $params = $this->mapParams($params, null, $state); + $params = $params['*'][0]; + + $params = self::implode_r($params); + + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + if (is_array($callback)) { + if (is_object($callback[0])) { + $output = ($mapped ? '$this->arrayMap' : 'call_user_func_array').'(array($this->plugins[\''.$func.'\'][\'callback\'][0], \''.$callback[1].'\'), array('.$params.'))'; + } else { + $output = ($mapped ? '$this->arrayMap' : 'call_user_func_array').'(array(\''.$callback[0].'\', \''.$callback[1].'\'), array('.$params.'))'; + } + } elseif ($mapped) { + $output = '$this->arrayMap(\''.$callback.'\', array('.$params.'))'; + } else { + $output = $callback.'('.$params.')'; + } + } elseif ($mapped) { + $output = '$this->arrayMap(\'smarty_modifier_'.$func.'\', array('.$params.'))'; + } else { + $output = 'smarty_modifier_'.$func.'('.$params.')'; + } + } else { + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + $pluginName = $callback; + } else { + $pluginName = 'Dwoo_Plugin_'.$func; + + if ($pluginType & Dwoo::CLASS_PLUGIN) { + $callback = array($pluginName, ($pluginType & Dwoo::COMPILABLE_PLUGIN) ? 'compile' : 'process'); + } else { + $callback = $pluginName . (($pluginType & Dwoo::COMPILABLE_PLUGIN) ? '_compile' : ''); + } + } + + $params = $this->mapParams($params, $callback, $state); + + foreach ($params as &$p) + $p = $p[0]; + + if ($pluginType & Dwoo::FUNC_PLUGIN) { + if ($pluginType & Dwoo::COMPILABLE_PLUGIN) { + if ($mapped) { + throw new Dwoo_Compilation_Exception($this, 'The @ operator can not be used on compiled plugins.'); + } + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $funcCompiler = $this->customPlugins[$func]['callback']; + } else { + $funcCompiler = 'Dwoo_Plugin_'.$func.'_compile'; + } + array_unshift($params, $this); + $output = call_user_func_array($funcCompiler, $params); + } else { + array_unshift($params, '$this'); + + $params = self::implode_r($params); + if ($mapped) { + $output = '$this->arrayMap(\''.$pluginName.'\', array('.$params.'))'; + } else { + $output = $pluginName.'('.$params.')'; + } + } + } else { + if ($pluginType & Dwoo::COMPILABLE_PLUGIN) { + if ($mapped) { + throw new Dwoo_Compilation_Exception($this, 'The @ operator can not be used on compiled plugins.'); + } + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $callback = $this->customPlugins[$func]['callback']; + if (!is_array($callback)) { + if (!method_exists($callback, 'compile')) { + throw new Dwoo_Exception('Custom plugin '.$func.' must implement the "compile" method to be compilable, or you should provide a full callback to the method to use'); + } + if (($ref = new ReflectionMethod($callback, 'compile')) && $ref->isStatic()) { + $funcCompiler = array($callback, 'compile'); + } else { + $funcCompiler = array(new $callback, 'compile'); + } + } else { + $funcCompiler = $callback; + } + } else { + $funcCompiler = array('Dwoo_Plugin_'.$func, 'compile'); + array_unshift($params, $this); + } + $output = call_user_func_array($funcCompiler, $params); + } else { + $params = self::implode_r($params); + + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + if (is_object($callback[0])) { + $output = ($mapped ? '$this->arrayMap' : 'call_user_func_array').'(array($this->plugins[\''.$func.'\'][\'callback\'][0], \''.$callback[1].'\'), array('.$params.'))'; + } else { + $output = ($mapped ? '$this->arrayMap' : 'call_user_func_array').'(array(\''.$callback[0].'\', \''.$callback[1].'\'), array('.$params.'))'; + } + } elseif ($mapped) { + $output = '$this->arrayMap(array($this->getObjectPlugin(\'Dwoo_Plugin_'.$func.'\'), \'process\'), array('.$params.'))'; + } else { + $output = '$this->classCall(\''.$func.'\', array('.$params.'))'; + } + } + } + } + } + + if ($curBlock === 'var' || $m[1] === null) { + return $output; + } elseif ($curBlock === 'string' || $curBlock === 'root') { + return $m[1].'.'.$output.'.'.$m[1].(isset($add)?$add:null); + } + } + + /** + * recursively implodes an array in a similar manner as var_export() does but with some tweaks + * to handle pre-compiled values and the fact that we do not need to enclose everything with + * "array" and do not require top-level keys to be displayed + * + * @param array $params the array to implode + * @param bool $recursiveCall if set to true, the function outputs key names for the top level + * @return string the imploded array + */ + public static function implode_r(array $params, $recursiveCall = false) + { + $out = ''; + foreach ($params as $k=>$p) { + if (is_array($p)) { + $out2 = 'array('; + foreach ($p as $k2=>$v) + $out2 .= var_export($k2, true).' => '.(is_array($v) ? 'array('.self::implode_r($v, true).')' : $v).', '; + $p = rtrim($out2, ', ').')'; + } + if ($recursiveCall) { + $out .= var_export($k, true).' => '.$p.', '; + } else { + $out .= $p.', '; + } + } + return rtrim($out, ', '); + } + + /** + * returns the plugin type of a plugin and adds it to the used plugins array if required + * + * @param string $name plugin name, as found in the template + * @return int type as a multi bit flag composed of the Dwoo plugin types constants + */ + protected function getPluginType($name) + { + $pluginType = -1; + + if (($this->securityPolicy === null && (function_exists($name) || strtolower($name) === 'isset' || strtolower($name) === 'empty')) || + ($this->securityPolicy !== null && in_array(strtolower($name), $this->securityPolicy->getAllowedPhpFunctions()) !== false)) { + $phpFunc = true; + } + + while ($pluginType <= 0) { + if (isset($this->templatePlugins[$name])) { + $pluginType = Dwoo::TEMPLATE_PLUGIN | Dwoo::COMPILABLE_PLUGIN; + } elseif (isset($this->customPlugins[$name])) { + $pluginType = $this->customPlugins[$name]['type'] | Dwoo::CUSTOM_PLUGIN; + } elseif (class_exists('Dwoo_Plugin_'.$name, false) !== false) { + if (is_subclass_of('Dwoo_Plugin_'.$name, 'Dwoo_Block_Plugin')) { + $pluginType = Dwoo::BLOCK_PLUGIN; + } else { + $pluginType = Dwoo::CLASS_PLUGIN; + } + $interfaces = class_implements('Dwoo_Plugin_'.$name, false); + if (in_array('Dwoo_ICompilable', $interfaces) !== false || in_array('Dwoo_ICompilable_Block', $interfaces) !== false) { + $pluginType |= Dwoo::COMPILABLE_PLUGIN; + } + } elseif (function_exists('Dwoo_Plugin_'.$name) !== false) { + $pluginType = Dwoo::FUNC_PLUGIN; + } elseif (function_exists('Dwoo_Plugin_'.$name.'_compile')) { + $pluginType = Dwoo::FUNC_PLUGIN | Dwoo::COMPILABLE_PLUGIN; + } elseif (function_exists('smarty_modifier_'.$name) !== false) { + $pluginType = Dwoo::SMARTY_MODIFIER; + } elseif (function_exists('smarty_function_'.$name) !== false) { + $pluginType = Dwoo::SMARTY_FUNCTION; + } elseif (function_exists('smarty_block_'.$name) !== false) { + $pluginType = Dwoo::SMARTY_BLOCK; + } else { + if ($pluginType===-1) { + try { + $this->dwoo->getLoader()->loadPlugin($name, isset($phpFunc)===false); + } catch (Exception $e) { + if (isset($phpFunc)) { + $pluginType = Dwoo::NATIVE_PLUGIN; + } elseif (is_object($this->dwoo->getPluginProxy()) && $this->dwoo->getPluginProxy()->handles($name)) { + $pluginType = Dwoo::PROXY_PLUGIN; + break; + } else { + throw $e; + } + } + } else { + throw new Dwoo_Exception('Plugin "'.$name.'" could not be found'); + } + $pluginType++; + } + } + + if (($pluginType & Dwoo::COMPILABLE_PLUGIN) === 0 && ($pluginType & Dwoo::NATIVE_PLUGIN) === 0 && ($pluginType & Dwoo::PROXY_PLUGIN) === 0) { + $this->addUsedPlugin($name, $pluginType); + } + + return $pluginType; + } + + /** + * allows a plugin to load another one at compile time, this will also mark + * it as used by this template so it will be loaded at runtime (which can be + * useful for compiled plugins that rely on another plugin when their compiled + * code runs) + * + * @param string $name the plugin name + */ + public function loadPlugin($name) { + $this->getPluginType($name); + } + + /** + * runs htmlentities over the matched blocks when the security policy enforces that + * + * @param array $match matched php block + * @return string the htmlentities-converted string + */ + protected function phpTagEncodingHelper($match) + { + return htmlspecialchars($match[0]); + } + + /** + * maps the parameters received from the template onto the parameters required by the given callback + * + * @param array $params the array of parameters + * @param callback $callback the function or method to reflect on to find out the required parameters + * @param int $callType the type of call in the template, 0 = no params, 1 = php-style call, 2 = named parameters call + * @param array $map the parameter map to use, if not provided it will be built from the callback + * @return array parameters sorted in the correct order with missing optional parameters filled + */ + protected function mapParams(array $params, $callback, $callType=2, $map = null) + { + if (!$map) { + $map = $this->getParamMap($callback); + } + + $paramlist = array(); + + // transforms the parameter array from (x=>array('paramname'=>array(values))) to (paramname=>array(values)) + $ps = array(); + foreach ($params as $p) { + if (is_array($p[1])) { + $ps[$p[0]] = $p[1]; + } else { + $ps[] = $p; + } + } + + // loops over the param map and assigns values from the template or default value for unset optional params + while (list($k,$v) = each($map)) { + if ($v[0] === '*') { + // "rest" array parameter, fill every remaining params in it and then break + if (count($ps) === 0) { + if ($v[1]===false) { + throw new Dwoo_Compilation_Exception($this, 'Rest argument missing for '.str_replace(array('Dwoo_Plugin_', '_compile'), '', (is_array($callback) ? $callback[0] : $callback))); + } else { + break; + } + } + $tmp = array(); + $tmp2 = array(); + foreach ($ps as $i=>$p) { + $tmp[$i] = $p[0]; + $tmp2[$i] = $p[1]; + unset($ps[$i]); + } + $paramlist[$v[0]] = array($tmp, $tmp2); + unset($tmp, $tmp2, $i, $p); + break; + } elseif (isset($ps[$v[0]])) { + // parameter is defined as named param + $paramlist[$v[0]] = $ps[$v[0]]; + unset($ps[$v[0]]); + } elseif (isset($ps[$k])) { + // parameter is defined as ordered param + $paramlist[$v[0]] = $ps[$k]; + unset($ps[$k]); + } elseif ($v[1]===false) { + // parameter is not defined and not optional, throw error + if (is_array($callback)) { + if (is_object($callback[0])) { + $name = get_class($callback[0]) . '::' . $callback[1]; + } else { + $name = $callback[0]; + } + } else { + $name = $callback; + } + + throw new Dwoo_Compilation_Exception($this, 'Argument '.$k.'/'.$v[0].' missing for '.str_replace(array('Dwoo_Plugin_', '_compile'), '', $name)); + } elseif ($v[2]===null) { + // enforce lowercased null if default value is null (php outputs NULL with var export) + $paramlist[$v[0]] = array('null', null); + } else { + // outputs default value with var_export + $paramlist[$v[0]] = array(var_export($v[2], true), $v[2]); + } + } + + if (count($ps)) { + foreach ($ps as $i=>$p) { + array_push($paramlist, $p); + } + } + + return $paramlist; + } + + /** + * returns the parameter map of the given callback, it filters out entries typed as Dwoo and Dwoo_Compiler and turns the rest parameter into a "*" + * + * @param callback $callback the function/method to reflect on + * @return array processed parameter map + */ + protected function getParamMap($callback) + { + if (is_null($callback)) { + return array(array('*', true)); + } + if (is_array($callback)) { + $ref = new ReflectionMethod($callback[0], $callback[1]); + } else { + $ref = new ReflectionFunction($callback); + } + + $out = array(); + foreach ($ref->getParameters() as $param) { + if (($class = $param->getClass()) !== null && $class->name === 'Dwoo') { + continue; + } + if (($class = $param->getClass()) !== null && $class->name === 'Dwoo_Compiler') { + continue; + } + if ($param->getName() === 'rest' && $param->isArray() === true) { + $out[] = array('*', $param->isOptional(), null); + } + $out[] = array($param->getName(), $param->isOptional(), $param->isOptional() ? $param->getDefaultValue() : null); + } + + return $out; + } + + /** + * returns a default instance of this compiler, used by default by all Dwoo templates that do not have a + * specific compiler assigned and when you do not override the default compiler factory function + * + * @see Dwoo::setDefaultCompilerFactory() + * @return Dwoo_Compiler + */ + public static function compilerFactory() + { + if (self::$instance === null) { + new self; + } + return self::$instance; + } +} diff --git a/system/libs/dwoo/Dwoo/Data.php b/system/libs/dwoo/Dwoo/Data.php new file mode 100644 index 00000000..c5f292ec --- /dev/null +++ b/system/libs/dwoo/Dwoo/Data.php @@ -0,0 +1,250 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Data implements Dwoo_IDataProvider +{ + /** + * data array + * + * @var array + */ + protected $data = array(); + + /** + * returns the data array + * + * @return array + */ + public function getData() + { + return $this->data; + } + + /** + * clears a the entire data or only the given key + * + * @param array|string $name clears only one value if you give a name, multiple values if + * you give an array of names, or the entire data if left null + */ + public function clear($name = null) + { + if ($name === null) { + $this->data = array(); + } elseif (is_array($name)) { + foreach ($name as $index) + unset($this->data[$index]); + } else { + unset($this->data[$name]); + } + } + + /** + * overwrites the entire data with the given array + * + * @param array $data the new data array to use + */ + public function setData(array $data) + { + $this->data = $data; + } + + /** + * merges the given array(s) with the current data with array_merge + * + * @param array $data the array to merge + * @param array $data2 $data3 ... other arrays to merge, optional, etc. + */ + public function mergeData(array $data) + { + $args = func_get_args(); + while (list(,$v) = each($args)) { + if (is_array($v)) { + $this->data = array_merge($this->data, $v); + } + } + } + + /** + * assigns a value or an array of values to the data object + * + * @param array|string $name an associative array of multiple (index=>value) or a string + * that is the index to use, i.e. a value assigned to "foo" will be + * accessible in the template through {$foo} + * @param mixed $val the value to assign, or null if $name was an array + */ + public function assign($name, $val = null) + { + if (is_array($name)) { + reset($name); + while (list($k,$v) = each($name)) + $this->data[$k] = $v; + } else { + $this->data[$name] = $val; + } + } + + /** + * allows to assign variables using the object syntax + * + * @param string $name the variable name + * @param string $value the value to assign to it + */ + public function __set($name, $value) + { + $this->assign($name, $value); + } + + /** + * assigns a value by reference to the data object + * + * @param string $name the index to use, i.e. a value assigned to "foo" will be + * accessible in the template through {$foo} + * @param mixed $val the value to assign by reference + */ + public function assignByRef($name, &$val) + { + $this->data[$name] =& $val; + } + + /** + * appends values or an array of values to the data object + * + * @param array|string $name an associative array of multiple (index=>value) or a string + * that is the index to use, i.e. a value assigned to "foo" will be + * accessible in the template through {$foo} + * @param mixed $val the value to assign, or null if $name was an array + * @param bool $merge true to merge data or false to append, defaults to false + */ + public function append($name, $val = null, $merge = false) + { + if (is_array($name)) { + foreach ($name as $key=>$val) { + if (isset($this->data[$key]) && !is_array($this->data[$key])) { + settype($this->data[$key], 'array'); + } + + if ($merge === true && is_array($val)) { + $this->data[$key] = $val + $this->data[$key]; + } else { + $this->data[$key][] = $val; + } + } + } elseif ($val !== null) { + if (isset($this->data[$name]) && !is_array($this->data[$name])) { + settype($this->data[$name], 'array'); + } elseif (!isset($this->data[$name])) { + $this->data[$name] = array(); + } + + if ($merge === true && is_array($val)) { + $this->data[$name] = $val + $this->data[$name]; + } else { + $this->data[$name][] = $val; + } + } + } + + /** + * appends a value by reference to the data object + * + * @param string $name the index to use, i.e. a value assigned to "foo" will be + * accessible in the template through {$foo} + * @param mixed $val the value to append by reference + * @param bool $merge true to merge data or false to append, defaults to false + */ + public function appendByRef($name, &$val, $merge = false) + { + if (isset($this->data[$name]) && !is_array($this->data[$name])) { + settype($this->data[$name], 'array'); + } + + if ($merge === true && is_array($val)) { + foreach ($val as $key => &$val) { + $this->data[$name][$key] =& $val; + } + } else { + $this->data[$name][] =& $val; + } + } + + /** + * returns true if the variable has been assigned already, false otherwise + * + * @param string $name the variable name + * @return bool + */ + public function isAssigned($name) + { + return isset($this->data[$name]); + } + + /** + * supports calls to isset($dwooData->var) + * + * @param string $name the variable name + */ + public function __isset($name) + { + return isset($this->data[$name]); + } + + /** + * unassigns/removes a variable + * + * @param string $name the variable name + */ + public function unassign($name) + { + unset($this->data[$name]); + } + + /** + * supports unsetting variables using the object syntax + * + * @param string $name the variable name + */ + public function __unset($name) + { + unset($this->data[$name]); + } + + /** + * returns a variable if it was assigned + * + * @param string $name the variable name + * @return mixed + */ + public function get($name) + { + return $this->__get($name); + } + + /** + * allows to read variables using the object syntax + * + * @param string $name the variable name + * @return mixed + */ + public function __get($name) + { + if (isset($this->data[$name])) { + return $this->data[$name]; + } else { + throw new Dwoo_Exception('Tried to read a value that was not assigned yet : "'.$name.'"'); + } + } +} diff --git a/system/libs/dwoo/Dwoo/Exception.php b/system/libs/dwoo/Dwoo/Exception.php new file mode 100644 index 00000000..83549bde --- /dev/null +++ b/system/libs/dwoo/Dwoo/Exception.php @@ -0,0 +1,19 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Exception extends Exception +{ +} diff --git a/system/libs/dwoo/Dwoo/Filter.php b/system/libs/dwoo/Dwoo/Filter.php new file mode 100644 index 00000000..60845723 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Filter.php @@ -0,0 +1,44 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +abstract class Dwoo_Filter +{ + /** + * the dwoo instance that runs this filter + * + * @var Dwoo + */ + protected $dwoo; + + /** + * constructor, if you override it, call parent::__construct($dwoo); or assign + * the dwoo instance yourself if you need it + * + * @param Dwoo $dwoo the dwoo instance that runs this plugin + */ + public function __construct(Dwoo $dwoo) + { + $this->dwoo = $dwoo; + } + + /** + * processes the input and returns it filtered + * + * @param string $input the template to process + * @return string + */ + abstract public function process($input); +} diff --git a/system/libs/dwoo/Dwoo/ICompilable.php b/system/libs/dwoo/Dwoo/ICompilable.php new file mode 100644 index 00000000..02ad54bf --- /dev/null +++ b/system/libs/dwoo/Dwoo/ICompilable.php @@ -0,0 +1,26 @@ +public static function compile(Dwoo_Compiler $compiler, $arg, $arg, ...)
    , + * which replaces the process() method (that means compile() should have all arguments it requires). + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_ICompilable +{ + // this replaces the process function + //public static function compile(Dwoo_Compiler $compiler, $arg, $arg, ...); +} diff --git a/system/libs/dwoo/Dwoo/ICompilable/Block.php b/system/libs/dwoo/Dwoo/ICompilable/Block.php new file mode 100644 index 00000000..b7f3b542 --- /dev/null +++ b/system/libs/dwoo/Dwoo/ICompilable/Block.php @@ -0,0 +1,21 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_ICompilable_Block +{ +} diff --git a/system/libs/dwoo/Dwoo/ICompiler.php b/system/libs/dwoo/Dwoo/ICompiler.php new file mode 100644 index 00000000..68f7d782 --- /dev/null +++ b/system/libs/dwoo/Dwoo/ICompiler.php @@ -0,0 +1,49 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_ICompiler +{ + /** + * compiles the provided string down to php code + * + * @param string $templateStr the template to compile + * @return string a compiled php code string + */ + public function compile(Dwoo $dwoo, Dwoo_ITemplate $template); + + /** + * adds the custom plugins loaded into Dwoo to the compiler so it can load them + * + * @see Dwoo::addPlugin + * @param array $customPlugins an array of custom plugins + */ + public function setCustomPlugins(array $customPlugins); + + /** + * sets the security policy object to enforce some php security settings + * + * use this if untrusted persons can modify templates, + * set it on the Dwoo object as it will be passed onto the compiler automatically + * + * @param Dwoo_Security_Policy $policy the security policy object + */ + public function setSecurityPolicy(Dwoo_Security_Policy $policy = null); +} diff --git a/system/libs/dwoo/Dwoo/IDataProvider.php b/system/libs/dwoo/Dwoo/IDataProvider.php new file mode 100644 index 00000000..35d66317 --- /dev/null +++ b/system/libs/dwoo/Dwoo/IDataProvider.php @@ -0,0 +1,25 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_IDataProvider +{ + /** + * returns the data as an associative array that will be used in the template + * + * @return array + */ + public function getData(); +} diff --git a/system/libs/dwoo/Dwoo/IElseable.php b/system/libs/dwoo/Dwoo/IElseable.php new file mode 100644 index 00000000..03002585 --- /dev/null +++ b/system/libs/dwoo/Dwoo/IElseable.php @@ -0,0 +1,24 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_IElseable +{ +} diff --git a/system/libs/dwoo/Dwoo/ILoader.php b/system/libs/dwoo/Dwoo/ILoader.php new file mode 100644 index 00000000..dc0fe44a --- /dev/null +++ b/system/libs/dwoo/Dwoo/ILoader.php @@ -0,0 +1,30 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_ILoader +{ + /** + * loads a plugin file + * + * the second parameter is used to avoid permanent rehashing when using php functions, + * however this means that if you have add a plugin that overrides a php function you have + * to delete the classpath.cache file(s) by hand to force a rehash of the plugins + * + * @param string $class the plugin name, without the Dwoo_Plugin_ prefix + * @param bool $forceRehash if true, the class path caches will be rebuilt if the plugin is not found, in case it has just been added, defaults to true + */ + public function loadPlugin($class, $forceRehash = true); +} diff --git a/system/libs/dwoo/Dwoo/IPluginProxy.php b/system/libs/dwoo/Dwoo/IPluginProxy.php new file mode 100644 index 00000000..3d02fb40 --- /dev/null +++ b/system/libs/dwoo/Dwoo/IPluginProxy.php @@ -0,0 +1,65 @@ + + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Denis Arh, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +interface Dwoo_IPluginProxy +{ + /** + * returns true or false to say whether the given plugin is handled by this proxy or not + * + * @param string $name the plugin name + * @return bool true if the plugin is known and usable, otherwise false + */ + public function handles($name); + + /** + * returns the code (as a string) to call the plugin + * (this will be executed at runtime inside the Dwoo class) + * + * @param string $name the plugin name + * @param array $params a parameter array, array key "*" is the rest array + * @return string + */ + public function getCode($name, $params); + + /** + * returns a callback to the plugin, this is used with the reflection API to + * find out about the plugin's parameter names etc. + * + * should you need a rest array without the possibility to edit the + * plugin's code, you can provide a callback to some + * other function with the correct parameter signature, i.e. : + * + * return array($this, "callbackHelper"); + * // and callbackHelper would be as such: + * public function callbackHelper(array $rest=array()){} + * + * + * @param string $name the plugin name + * @return callback + */ + public function getCallback($name); + + /** + * returns some code that will check if the plugin is loaded and if not load it + * this is optional, if your plugins are autoloaded or whatever, just return an + * empty string + * + * @param string $name the plugin name + * @return string + */ + public function getLoader($name); +} \ No newline at end of file diff --git a/system/libs/dwoo/Dwoo/ITemplate.php b/system/libs/dwoo/Dwoo/ITemplate.php new file mode 100644 index 00000000..5c83dcb0 --- /dev/null +++ b/system/libs/dwoo/Dwoo/ITemplate.php @@ -0,0 +1,150 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +interface Dwoo_ITemplate +{ + /** + * returns the cache duration for this template + * + * defaults to null if it was not provided + * + * @return int|null + */ + public function getCacheTime(); + + /** + * sets the cache duration for this template + * + * can be used to set it after the object is created if you did not provide + * it in the constructor + * + * @param int $seconds duration of the cache validity for this template, if + * null it defaults to the Dwoo instance's cache time. 0 = disable and + * -1 = infinite cache + */ + public function setCacheTime($seconds = null); + + /** + * returns the cached template output file name, true if it's cache-able but not cached + * or false if it's not cached + * + * @param Dwoo $dwoo the dwoo instance that requests it + * @return string|bool + */ + public function getCachedTemplate(Dwoo $dwoo); + + /** + * caches the provided output into the cache file + * + * @param Dwoo $dwoo the dwoo instance that requests it + * @param string $output the template output + * @return mixed full path of the cached file or false upon failure + */ + public function cache(Dwoo $dwoo, $output); + + /** + * clears the cached template if it's older than the given time + * + * @param Dwoo $dwoo the dwoo instance that was used to cache that template + * @param int $olderThan minimum time (in seconds) required for the cache to be cleared + * @return bool true if the cache was not present or if it was deleted, false if it remains there + */ + public function clearCache(Dwoo $dwoo, $olderThan = -1); + + /** + * returns the compiled template file name + * + * @param Dwoo $dwoo the dwoo instance that requests it + * @param Dwoo_ICompiler $compiler the compiler that must be used + * @return string + */ + public function getCompiledTemplate(Dwoo $dwoo, Dwoo_ICompiler $compiler = null); + + /** + * returns the template name + * + * @return string + */ + public function getName(); + + /** + * returns the resource name for this template class + * + * @return string + */ + public function getResourceName(); + + /** + * returns the resource identifier for this template or false if it has no identifier + * + * @return string|false + */ + public function getResourceIdentifier(); + + /** + * returns the template source of this template + * + * @return string + */ + public function getSource(); + + /** + * returns an unique string identifying the current version of this template, + * for example a timestamp of the last modified date or a hash of the template source + * + * @return string + */ + public function getUid(); + + /** + * returns the compiler used by this template, if it was just compiled, or null + * + * @return Dwoo_ICompiler + */ + public function getCompiler(); + + /** + * returns some php code that will check if this template has been modified or not + * + * if the function returns null, the template will be instanciated and then the Uid checked + * + * @return string + */ + public function getIsModifiedCode(); + + /** + * returns a new template object from the given resource identifier, null if no include is + * possible (resource not found), or false if include is not permitted by this resource type + * + * this method should also check if $dwoo->getSecurityPolicy() is null or not and do the + * necessary permission checks if required, if the security policy prevents the template + * generation it should throw a new Dwoo_Security_Exception with a relevant message + * + * @param mixed $resourceId the resource identifier + * @param int $cacheTime duration of the cache validity for this template, + * if null it defaults to the Dwoo instance that will + * render this template + * @param string $cacheId the unique cache identifier of this page or anything else that + * makes this template's content unique, if null it defaults + * to the current url + * @param string $compileId the unique compiled identifier, which is used to distinguish this + * template from others, if null it defaults to the filename+bits of the path + * @param Dwoo_ITemplate $parentTemplate the template that is requesting a new template object (through + * an include, extends or any other plugin) + * @return Dwoo_ITemplate|null|false + */ + public static function templateFactory(Dwoo $dwoo, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null); +} diff --git a/system/libs/dwoo/Dwoo/Loader.php b/system/libs/dwoo/Dwoo/Loader.php new file mode 100644 index 00000000..437a1285 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Loader.php @@ -0,0 +1,147 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Loader implements Dwoo_ILoader +{ + /** + * stores the plugin directories + * + * @see addDirectory + * @var array + */ + protected $paths = array(); + + /** + * stores the plugins names/paths relationships + * don't edit this on your own, use addDirectory + * + * @see addDirectory + * @var array + */ + protected $classPath = array(); + + /** + * path where class paths cache files are written + * + * @var string + */ + protected $cacheDir; + + protected $corePluginDir; + + public function __construct($cacheDir) + { + $this->corePluginDir = DWOO_DIRECTORY . 'plugins'; + $this->cacheDir = rtrim($cacheDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + + // include class paths or rebuild paths if the cache file isn't there + $cacheFile = $this->cacheDir.'classpath.cache.d'.Dwoo::RELEASE_TAG.'.php'; + if (file_exists($cacheFile)) { + $classpath = file_get_contents($cacheFile); + $this->classPath = unserialize($classpath) + $this->classPath; + } else { + $this->rebuildClassPathCache($this->corePluginDir, $cacheFile); + } + } + + /** + * rebuilds class paths, scans the given directory recursively and saves all paths in the given file + * + * @param string $path the plugin path to scan + * @param string $cacheFile the file where to store the plugin paths cache, it will be overwritten + */ + protected function rebuildClassPathCache($path, $cacheFile) + { + if ($cacheFile!==false) { + $tmp = $this->classPath; + $this->classPath = array(); + } + + // iterates over all files/folders + $list = glob(rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '*'); + if (is_array($list)) { + foreach ($list as $f) { + if (is_dir($f)) { + $this->rebuildClassPathCache($f, false); + } else { + $this->classPath[str_replace(array('function.','block.','modifier.','outputfilter.','filter.','prefilter.','postfilter.','pre.','post.','output.','shared.','helper.'), '', basename($f, '.php'))] = $f; + } + } + } + + // save in file if it's the first call (not recursed) + if ($cacheFile!==false) { + if (!file_put_contents($cacheFile, serialize($this->classPath))) { + throw new Dwoo_Exception('Could not write into '.$cacheFile.', either because the folder is not there (create it) or because of the chmod configuration (please ensure this directory is writable by php), alternatively you can change the directory used with $dwoo->setCompileDir() or provide a custom loader object with $dwoo->setLoader()'); + } + $this->classPath += $tmp; + } + } + + /** + * loads a plugin file + * + * @param string $class the plugin name, without the Dwoo_Plugin_ prefix + * @param bool $forceRehash if true, the class path caches will be rebuilt if the plugin is not found, in case it has just been added, defaults to true + */ + public function loadPlugin($class, $forceRehash = true) + { + // a new class was added or the include failed so we rebuild the cache + if (!isset($this->classPath[$class]) || !(include $this->classPath[$class])) { + if ($forceRehash) { + $this->rebuildClassPathCache($this->corePluginDir, $this->cacheDir . 'classpath.cache.d'.Dwoo::RELEASE_TAG.'.php'); + foreach ($this->paths as $path=>$file) { + $this->rebuildClassPathCache($path, $file); + } + if (isset($this->classPath[$class])) { + include $this->classPath[$class]; + } else { + throw new Dwoo_Exception('Plugin '.$class.' can not be found, maybe you forgot to bind it if it\'s a custom plugin ?', E_USER_NOTICE); + } + } else { + throw new Dwoo_Exception('Plugin '.$class.' can not be found, maybe you forgot to bind it if it\'s a custom plugin ?', E_USER_NOTICE); + } + } + } + + /** + * adds a plugin directory, the plugins found in the new plugin directory + * will take precedence over the other directories (including the default + * dwoo plugin directory), you can use this for example to override plugins + * in a specific directory for a specific application while keeping all your + * usual plugins in the same place for all applications. + * + * TOCOM don't forget that php functions overrides are not rehashed so you + * need to clear the classpath caches by hand when adding those + * + * @param string $pluginDirectory the plugin path to scan + */ + public function addDirectory($pluginDirectory) + { + $pluginDir = realpath($pluginDirectory); + if (!$pluginDir) { + throw new Dwoo_Exception('Plugin directory does not exist or can not be read : '.$pluginDirectory); + } + $cacheFile = $this->cacheDir . 'classpath-'.substr(strtr($pluginDir, '/\\:'.PATH_SEPARATOR, '----'), strlen($pluginDir) > 80 ? -80 : 0).'.d'.Dwoo::RELEASE_TAG.'.php'; + $this->paths[$pluginDir] = $cacheFile; + if (file_exists($cacheFile)) { + $classpath = file_get_contents($cacheFile); + $this->classPath = unserialize($classpath) + $this->classPath; + } else { + $this->rebuildClassPathCache($pluginDir, $cacheFile); + } + } +} diff --git a/system/libs/dwoo/Dwoo/Plugin.php b/system/libs/dwoo/Dwoo/Plugin.php new file mode 100644 index 00000000..053448c9 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Plugin.php @@ -0,0 +1,85 @@ +process() method, it will receive the parameters that + * are in the template code + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +abstract class Dwoo_Plugin +{ + /** + * the dwoo instance that runs this plugin + * + * @var Dwoo + */ + protected $dwoo; + + /** + * constructor, if you override it, call parent::__construct($dwoo); or assign + * the dwoo instance yourself if you need it + * + * @param Dwoo $dwoo the dwoo instance that runs this plugin + */ + public function __construct(Dwoo $dwoo) + { + $this->dwoo = $dwoo; + } + + // plugins should always implement : + // public function process($arg, $arg, ...) + // or for block plugins : + // public function init($arg, $arg, ...) + + // this could be enforced with : + // abstract public function process(...); + // if my feature request gets enough interest one day + // see => http://bugs.php.net/bug.php?id=44043 + + /** + * utility function that converts an array of compiled parameters (or rest array) to a string of xml/html tag attributes + * + * this is to be used in preProcessing or postProcessing functions, example : + * $p = $compiler->getCompiledParams($params); + * // get only the rest array as attributes + * $attributes = Dwoo_Plugin::paramsToAttributes($p['*']); + * // get all the parameters as attributes (if there is a rest array, it will be included) + * $attributes = Dwoo_Plugin::paramsToAttributes($p); + * + * @param array $params an array of attributeName=>value items that will be compiled to be ready for inclusion in a php string + * @param string $delim the string delimiter you want to use (defaults to ') + * @return string + */ + public static function paramsToAttributes(array $params, $delim = '\'') + { + if (isset($params['*'])) { + $params = array_merge($params, $params['*']); + unset($params['*']); + } + + $out = ''; + foreach ($params as $attr=>$val) { + $out .= ' '.$attr.'='; + if (trim($val, '"\'')=='' || $val=='null') { + $out .= str_replace($delim, '\\'.$delim, '""'); + } elseif (substr($val, 0, 1) === $delim && substr($val, -1) === $delim) { + $out .= str_replace($delim, '\\'.$delim, '"'.substr($val, 1, -1).'"'); + } else { + $out .= str_replace($delim, '\\'.$delim, '"') . $delim . '.'.$val.'.' . $delim . str_replace($delim, '\\'.$delim, '"'); + } + } + + return ltrim($out); + } +} diff --git a/system/libs/dwoo/Dwoo/Processor.php b/system/libs/dwoo/Dwoo/Processor.php new file mode 100644 index 00000000..e3287f17 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Processor.php @@ -0,0 +1,44 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +abstract class Dwoo_Processor +{ + /** + * the compiler instance that runs this processor + * + * @var Dwoo + */ + protected $compiler; + + /** + * constructor, if you override it, call parent::__construct($dwoo); or assign + * the dwoo instance yourself if you need it + * + * @param Dwoo $dwoo the dwoo instance that runs this plugin + */ + public function __construct(Dwoo_Compiler $compiler) + { + $this->compiler = $compiler; + } + + /** + * processes the input and returns it filtered + * + * @param string $input the template to process + * @return string + */ + abstract public function process($input); +} diff --git a/system/libs/dwoo/Dwoo/Security/Exception.php b/system/libs/dwoo/Dwoo/Security/Exception.php new file mode 100644 index 00000000..fbae9447 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Security/Exception.php @@ -0,0 +1,19 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Security_Exception extends Dwoo_Exception +{ +} diff --git a/system/libs/dwoo/Dwoo/Security/Policy.php b/system/libs/dwoo/Dwoo/Security/Policy.php new file mode 100644 index 00000000..8875f6d0 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Security/Policy.php @@ -0,0 +1,199 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Security_Policy +{ + /**#@+ + * php handling constants, defaults to PHP_REMOVE + * + * PHP_REMOVE : remove all (+ short tags if your short tags option is on) from the input template + * PHP_ALLOW : leave them as they are + * PHP_ENCODE : run htmlentities over them + * + * @var int + */ + const PHP_ENCODE = 1; + const PHP_REMOVE = 2; + const PHP_ALLOW = 3; + /**#@-*/ + + /**#@+ + * constant handling constants, defaults to CONST_DISALLOW + * + * CONST_DISALLOW : throw an error if {$dwoo.const.*} is used in the template + * CONST_ALLOW : allow {$dwoo.const.*} calls + */ + const CONST_DISALLOW = false; + const CONST_ALLOW = true; + /**#@-*/ + + /** + * php functions that are allowed to be used within the template + * + * @var array + */ + protected $allowedPhpFunctions = array + ( + 'str_repeat', 'number_format', 'htmlentities', 'htmlspecialchars', + 'long2ip', 'strlen', 'list', 'empty', 'count', 'sizeof', 'in_array', 'is_array', + ); + + /** + * paths that are safe to use with include or other file-access plugins + * + * @var array + */ + protected $allowedDirectories = array(); + + /** + * stores the php handling level + * + * defaults to Dwoo_Security_Policy::PHP_REMOVE + * + * @var int + */ + protected $phpHandling = self::PHP_REMOVE; + + /** + * stores the constant handling level + * + * defaults to Dwoo_Security_Policy::CONST_DISALLOW + * + * @var bool + */ + protected $constHandling = self::CONST_DISALLOW; + + /** + * adds a php function to the allowed list + * + * @param mixed $func function name or array of function names + */ + public function allowPhpFunction($func) + { + if (is_array($func)) + foreach ($func as $fname) + $this->allowedPhpFunctions[strtolower($fname)] = true; + else + $this->allowedPhpFunctions[strtolower($func)] = true; + } + + /** + * removes a php function from the allowed list + * + * @param mixed $func function name or array of function names + */ + public function disallowPhpFunction($func) + { + if (is_array($func)) + foreach ($func as $fname) + unset($this->allowedPhpFunctions[strtolower($fname)]); + else + unset($this->allowedPhpFunctions[strtolower($func)]); + } + + /** + * returns the list of php functions allowed to run, note that the function names + * are stored in the array keys and not values + * + * @return array + */ + public function getAllowedPhpFunctions() + { + return $this->allowedPhpFunctions; + } + + /** + * adds a directory to the safelist for includes and other file-access plugins + * + * note that all the includePath directories you provide to the Dwoo_Template_File class + * are automatically marked as safe + * + * @param mixed $path a path name or an array of paths + */ + public function allowDirectory($path) + { + if (is_array($path)) + foreach ($path as $dir) + $this->allowedDirectories[realpath($dir)] = true; + else + $this->allowedDirectories[realpath($path)] = true; + } + + /** + * removes a directory from the safelist + * + * @param mixed $path a path name or an array of paths + */ + public function disallowDirectory($path) + { + if (is_array($path)) + foreach ($path as $dir) + unset($this->allowedDirectories[realpath($dir)]); + else + unset($this->allowedDirectories[realpath($path)]); + } + + /** + * returns the list of safe paths, note that the paths are stored in the array + * keys and not values + * + * @return array + */ + public function getAllowedDirectories() + { + return $this->allowedDirectories; + } + + /** + * sets the php handling level, defaults to REMOVE + * + * @param int $level one of the Dwoo_Security_Policy::PHP_* constants + */ + public function setPhpHandling($level = self::PHP_REMOVE) + { + $this->phpHandling = $level; + } + + /** + * returns the php handling level + * + * @return int the current level, one of the Dwoo_Security_Policy::PHP_* constants + */ + public function getPhpHandling() + { + return $this->phpHandling; + } + + /** + * sets the constant handling level, defaults to CONST_DISALLOW + * + * @param bool $level one of the Dwoo_Security_Policy::CONST_* constants + */ + public function setConstantHandling($level = self::CONST_DISALLOW) + { + $this->constHandling = $level; + } + + /** + * returns the constant handling level + * + * @return bool the current level, one of the Dwoo_Security_Policy::CONST_* constants + */ + public function getConstantHandling() + { + return $this->constHandling; + } +} diff --git a/system/libs/dwoo/Dwoo/Smarty/Adapter.php b/system/libs/dwoo/Dwoo/Smarty/Adapter.php new file mode 100644 index 00000000..b4a620cd --- /dev/null +++ b/system/libs/dwoo/Dwoo/Smarty/Adapter.php @@ -0,0 +1,518 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Smarty__Adapter extends Dwoo +{ + // magic get/set/call functions that handle unsupported features + public function __set($p, $v) + { + if ($p==='scope') { + $this->scope = $v; + return; + } + if ($p==='data') { + $this->data = $v; + return; + } + if (array_key_exists($p, $this->compat['properties']) !== false) { + if ($this->show_compat_errors) { + $this->triggerError('Property '.$p.' is not available in the Dwoo_Smarty_Adapter, however it might be implemented in the future, check out http://wiki.dwoo.org/index.php/SmartySupport for more details.', E_USER_NOTICE); + } + $this->compat['properties'][$p] = $v; + } else { + if ($this->show_compat_errors) { + $this->triggerError('Property '.$p.' is not available in the Dwoo_Smarty_Adapter, but it is not listed as such, so you might want to tell me about it at j.boggiano@seld.be', E_USER_NOTICE); + } + } + } + + public function __get($p) + { + if (array_key_exists($p, $this->compat['properties']) !== false) { + if ($this->show_compat_errors) { + $this->triggerError('Property '.$p.' is not available in the Dwoo_Smarty_Adapter, however it might be implemented in the future, check out http://wiki.dwoo.org/index.php/SmartySupport for more details.', E_USER_NOTICE); + } + return $this->compat['properties'][$p]; + } else { + if ($this->show_compat_errors) { + $this->triggerError('Property '.$p.' is not available in the Dwoo_Smarty_Adapter, but it is not listed as such, so you might want to tell me about it at j.boggiano@seld.be', E_USER_NOTICE); + } + } + } + + public function __call($m, $a) + { + if (method_exists($this->dataProvider, $m)) { + call_user_func_array(array($this->dataProvider, $m), $a); + } elseif ($this->show_compat_errors) { + if (array_search($m, $this->compat['methods']) !== false) { + $this->triggerError('Method '.$m.' is not available in the Dwoo_Smarty_Adapter, however it might be implemented in the future, check out http://wiki.dwoo.org/index.php/SmartySupport for more details.', E_USER_NOTICE); + } else { + $this->triggerError('Method '.$m.' is not available in the Dwoo_Smarty_Adapter, but it is not listed as such, so you might want to tell me about it at j.boggiano@seld.be', E_USER_NOTICE); + } + } + } + + // list of unsupported properties and methods + protected $compat = array + ( + 'methods' => array + ( + 'register_resource', 'unregister_resource', 'load_filter', 'clear_compiled_tpl', + 'clear_config', 'get_config_vars', 'config_load' + ), + 'properties' => array + ( + 'cache_handler_func' => null, + 'debugging' => false, + 'error_reporting' => null, + 'debugging_ctrl' => 'NONE', + 'request_vars_order' => 'EGPCS', + 'request_use_auto_globals' => true, + 'use_sub_dirs' => false, + 'autoload_filters' => array(), + 'default_template_handler_func' => '', + 'debug_tpl' => '', + 'cache_modified_check' => false, + 'default_modifiers' => array(), + 'default_resource_type' => 'file', + 'config_overwrite' => true, + 'config_booleanize' => true, + 'config_read_hidden' => false, + 'config_fix_newlines' => true, + 'config_class' => 'Config_File', + ), + ); + + // security vars + public $security = false; + public $trusted_dir = array(); + public $secure_dir = array(); + public $php_handling = SMARTY_PHP_PASSTHRU; + public $security_settings = array + ( + 'PHP_HANDLING' => false, + 'IF_FUNCS' => array + ( + 'list', 'empty', 'count', 'sizeof', + 'in_array', 'is_array', + ), + 'INCLUDE_ANY' => false, + 'PHP_TAGS' => false, + 'MODIFIER_FUNCS' => array(), + 'ALLOW_CONSTANTS' => false + ); + + // paths + public $template_dir = 'templates'; + public $compile_dir = 'templates_c'; + public $config_dir = 'configs'; + public $cache_dir = 'cache'; + public $plugins_dir = array(); + + // misc options + public $left_delimiter = '{'; + public $right_delimiter = '}'; + public $compile_check = true; + public $force_compile = false; + public $caching = 0; + public $cache_lifetime = 3600; + public $compile_id = null; + public $compiler_file = null; + public $compiler_class = null; + + // dwoo/smarty compat layer + public $show_compat_errors = false; + protected $dataProvider; + protected $_filters = array('pre'=>array(), 'post'=>array(), 'output'=>array()); + protected static $tplCache = array(); + protected $compiler = null; + + public function __construct() + { + parent::__construct(); + $this->charset = 'iso-8859-1'; + $this->dataProvider = new Dwoo_Data(); + $this->compiler = new Dwoo_Compiler(); + } + + public function display($filename, $cacheId=null, $compileId=null) + { + $this->fetch($filename, $cacheId, $compileId, true); + } + + public function fetch($filename, $cacheId=null, $compileId=null, $display=false) + { + $this->setCacheDir($this->cache_dir); + $this->setCompileDir($this->compile_dir); + + if ($this->security) { + $policy = new Dwoo_Security_Policy(); + $policy->addPhpFunction(array_merge($this->security_settings['IF_FUNCS'], $this->security_settings['MODIFIER_FUNCS'])); + + $phpTags = $this->security_settings['PHP_HANDLING'] ? SMARTY_PHP_ALLOW : $this->php_handling; + if ($this->security_settings['PHP_TAGS']) { + $phpTags = SMARTY_PHP_ALLOW; + } + switch($phpTags) { + case SMARTY_PHP_ALLOW: + case SMARTY_PHP_PASSTHRU: + $phpTags = Dwoo_Security_Policy::PHP_ALLOW; + break; + case SMARTY_PHP_QUOTE: + $phpTags = Dwoo_Security_Policy::PHP_ENCODE; + break; + case SMARTY_PHP_REMOVE: + default: + $phpTags = Dwoo_Security_Policy::PHP_REMOVE; + break; + } + $policy->setPhpHandling($phpTags); + + $policy->setConstantHandling($this->security_settings['ALLOW_CONSTANTS']); + + if ($this->security_settings['INCLUDE_ANY']) { + $policy->allowDirectory(preg_replace('{^((?:[a-z]:)?[\\\\/]).*}i', '$1', __FILE__)); + } else { + $policy->allowDirectory($this->secure_dir); + } + + $this->setSecurityPolicy($policy); + } + + if (!empty($this->plugins_dir)) { + foreach ($this->plugins_dir as $dir) { + $this->getLoader()->addDirectory(rtrim($dir, '\\/')); + } + } + + $tpl = $this->makeTemplate($filename, $cacheId, $compileId); + if ($this->force_compile) { + $tpl->forceCompilation(); + } + + if ($this->caching > 0) { + $this->cacheTime = $this->cache_lifetime; + } else { + $this->cacheTime = 0; + } + + if ($this->compiler_class !== null) { + if ($this->compiler_file !== null && !class_exists($this->compiler_class, false)) { + include $this->compiler_file; + } + $this->compiler = new $this->compiler_class; + } else { + $this->compiler->addPreProcessor('smarty_compat', true); + $this->compiler->setLooseOpeningHandling(true); + } + + $this->compiler->setDelimiters($this->left_delimiter, $this->right_delimiter); + + return $this->get($tpl, $this->dataProvider, $this->compiler, $display===true); + } + + public function get($_tpl, $data = array(), $_compiler = null, $_output = false) + { + if ($_compiler === null) { + $_compiler = $this->compiler; + } + return parent::get($_tpl, $data, $_compiler, $_output); + } + + public function register_function($name, $callback, $cacheable=true, $cache_attrs=null) + { + if (isset($this->plugins[$name]) && $this->plugins[$name][0] !== self::SMARTY_FUNCTION) { + throw new Dwoo_Exception('Multiple plugins of different types can not share the same name'); + } + $this->plugins[$name] = array('type'=>self::SMARTY_FUNCTION, 'callback'=>$callback); + } + + public function unregister_function($name) + { + unset($this->plugins[$name]); + } + + public function register_block($name, $callback, $cacheable=true, $cache_attrs=null) + { + if (isset($this->plugins[$name]) && $this->plugins[$name][0] !== self::SMARTY_BLOCK) { + throw new Dwoo_Exception('Multiple plugins of different types can not share the same name'); + } + $this->plugins[$name] = array('type'=>self::SMARTY_BLOCK, 'callback'=>$callback); + } + + public function unregister_block($name) + { + unset($this->plugins[$name]); + } + + public function register_modifier($name, $callback) + { + if (isset($this->plugins[$name]) && $this->plugins[$name][0] !== self::SMARTY_MODIFIER) { + throw new Dwoo_Exception('Multiple plugins of different types can not share the same name'); + } + $this->plugins[$name] = array('type'=>self::SMARTY_MODIFIER, 'callback'=>$callback); + } + + public function unregister_modifier($name) + { + unset($this->plugins[$name]); + } + + public function register_prefilter($callback) + { + $processor = new Dwoo_SmartyProcessorAdapter($this->compiler); + $processor->registerCallback($callback); + $this->_filters['pre'][] = $processor; + $this->compiler->addPreProcessor($processor); + } + + public function unregister_prefilter($callback) + { + foreach ($this->_filters['pre'] as $index => $processor) + if ($processor->callback === $callback) { + $this->compiler->removePostProcessor($processor); + unset($this->_filters['pre'][$index]); + } + } + + public function register_postfilter($callback) + { + $processor = new Dwoo_SmartyProcessorAdapter($this->compiler); + $processor->registerCallback($callback); + $this->_filters['post'][] = $processor; + $this->compiler->addPostProcessor($processor); + } + + public function unregister_postfilter($callback) + { + foreach ($this->_filters['post'] as $index => $processor) + if ($processor->callback === $callback) { + $this->compiler->removePostProcessor($processor); + unset($this->_filters['post'][$index]); + } + } + + public function register_outputfilter($callback) + { + $filter = new Dwoo_SmartyFilterAdapter($this); + $filter->registerCallback($callback); + $this->_filters['output'][] = $filter; + $this->addFilter($filter); + } + + public function unregister_outputfilter($callback) + { + foreach ($this->_filters['output'] as $index => $filter) + if ($filter->callback === $callback) { + $this->removeOutputFilter($filter); + unset($this->_filters['output'][$index]); + } + } + + function register_object($object, $object_impl, $allowed = array(), $smarty_args = false, $block_methods = array()) + { + settype($allowed, 'array'); + settype($block_methods, 'array'); + settype($smarty_args, 'boolean'); + + if (!empty($allowed) && $this->show_compat_errors) { + $this->triggerError('You can register objects but can not restrict the method/properties used, this is PHP5, you have proper OOP access restrictions so use them.', E_USER_NOTICE); + } + + if ($smarty_args) { + $this->triggerError('You can register objects but methods will be called using method($arg1, $arg2, $arg3), not as an argument array like smarty did.', E_USER_NOTICE); + } + + if (!empty($block_methods)) { + $this->triggerError('You can register objects but can not use methods as being block methods, you have to build a plugin for that.', E_USER_NOTICE); + } + + $this->dataProvider->assign($object, $object_impl); + } + + function unregister_object($object) + { + $this->dataProvider->clear($object); + } + + function get_registered_object($name) { + $data = $this->dataProvider->getData(); + if (isset($data[$name]) && is_object($data[$name])) { + return $data[$name]; + } else { + trigger_error('Dwoo_Compiler: object "'.$name.'" was not registered or is not an object', E_USER_ERROR); + } + } + + public function template_exists($filename) + { + if (!is_array($this->template_dir)) { + return file_exists($this->template_dir.DIRECTORY_SEPARATOR.$filename); + } else { + foreach ($this->template_dir as $tpl_dir) { + if (file_exists($tpl_dir.DIRECTORY_SEPARATOR.$filename)) { + return true; + } + } + return false; + } + } + + public function is_cached($tpl, $cacheId = null, $compileId = null) + { + return $this->isCached($this->makeTemplate($tpl, $cacheId, $compileId)); + } + + public function append_by_ref($var, &$value, $merge=false) + { + $this->dataProvider->appendByRef($var, $value, $merge); + } + + public function assign_by_ref($name, &$val) + { + $this->dataProvider->assignByRef($name, $val); + } + + public function clear_assign($var) + { + $this->dataProvider->clear($var); + } + + public function clear_all_assign() + { + $this->dataProvider->clear(); + } + + public function get_template_vars($name=null) + { + if ($this->show_compat_errors) { + trigger_error('get_template_vars does not return values by reference, if you try to modify the data that way you should modify your code.', E_USER_NOTICE); + } + + $data = $this->dataProvider->getData(); + if ($name === null) + return $data; + elseif (isset($data[$name])) + return $data[$name]; + return null; + } + + public function clear_all_cache($olderThan = 0) + { + $this->clearCache($olderThan); + } + + public function clear_cache($template, $cacheId = null, $compileId = null, $olderThan = 0) + { + $this->makeTemplate($template, $cacheId, $compileId)->clearCache($olderThan); + } + + public function trigger_error($error_msg, $error_type = E_USER_WARNING) + { + $this->triggerError($error_msg, $error_type); + } + + protected function initGlobals() + { + parent::initGlobals(); + $this->globals['ldelim'] = '{'; + $this->globals['rdelim'] = '}'; + } + + protected function makeTemplate($file, $cacheId, $compileId) + { + if ($compileId === null) + $compileId = $this->compile_id; + + $hash = bin2hex(md5($file.$cacheId.$compileId, true)); + if (!isset(self::$tplCache[$hash])) { + // abs path + if (substr($file, 0, 1) === '/' || substr($file, 1, 1) === ':') { + self::$tplCache[$hash] = new Dwoo_Template_File($file, null, $cacheId, $compileId); + } elseif (is_string($this->template_dir) || is_array($this->template_dir)) { + self::$tplCache[$hash] = new Dwoo_Template_File($file, null, $cacheId, $compileId, $this->template_dir); + } else { + throw new Exception('Unable to load "'.$file.'", check the template_dir'); + } + } + return self::$tplCache[$hash]; + } + + public function triggerError($message, $level=E_USER_NOTICE) + { + if (is_object($this->template)) { + return parent::triggerError($message, $level); + } + trigger_error('Dwoo error : '.$message, $level); + } +} + +class Dwoo_Smarty_Filter_Adapter extends Dwoo_Filter +{ + public $callback; + + public function process($input) + { + return call_user_func($this->callback, $input); + } + + public function registerCallback($callback) + { + $this->callback = $callback; + } +} + +class Dwoo_Smarty_Processor_Adapter extends Dwoo_Processor +{ + public $callback; + + public function process($input) + { + return call_user_func($this->callback, $input); + } + + public function registerCallback($callback) + { + $this->callback = $callback; + } +} + +// cloaks the adapter if possible with the smarty name to fool type-hinted plugins +if (class_exists('Smarty', false) === false) +{ + interface Smarty {} + class Dwoo_Smarty_Adapter extends Dwoo_Smarty__Adapter implements Smarty {} +} +else +{ + class Dwoo_Smarty_Adapter extends Dwoo_Smarty__Adapter {} +} diff --git a/system/libs/dwoo/Dwoo/Template/File.php b/system/libs/dwoo/Dwoo/Template/File.php new file mode 100644 index 00000000..4dda0f33 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Template/File.php @@ -0,0 +1,270 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Template_File extends Dwoo_Template_String +{ + /** + * template filename + * + * @var string + */ + protected $file; + + /** + * include path(s) to look into to find this template + * + * @var array + */ + protected $includePath = null; + + /** + * resolved path cache when looking for a file in multiple include paths + * + * this is reset when the include path is changed + * + * @var string + */ + protected $resolvedPath = null; + + /** + * creates a template from a file + * + * @param string $file the path to the template file, make sure it exists + * @param int $cacheTime duration of the cache validity for this template, + * if null it defaults to the Dwoo instance that will + * render this template + * @param string $cacheId the unique cache identifier of this page or anything else that + * makes this template's content unique, if null it defaults + * to the current url + * @param string $compileId the unique compiled identifier, which is used to distinguish this + * template from others, if null it defaults to the filename+bits of the path + * @param mixed $includePath a string for a single path to look into for the given file, or an array of paths + */ + public function __construct($file, $cacheTime = null, $cacheId = null, $compileId = null, $includePath = null) + { + $this->file = $file; + $this->name = basename($file); + $this->cacheTime = $cacheTime; + + if ($compileId !== null) { + $this->compileId = str_replace('../', '__', strtr($compileId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); + } + + if ($cacheId !== null) { + $this->cacheId = str_replace('../', '__', strtr($cacheId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); + } + + if (is_string($includePath)) { + $this->includePath = array($includePath); + } elseif (is_array($includePath)) { + $this->includePath = $includePath; + } + } + + /** + * sets the include path(s) to where the given template filename must be looked up + * + * @param mixed $paths the path to look into, can be string for a single path or an array of paths + */ + public function setIncludePath($paths) + { + if (is_array($paths) === false) { + $paths = array($paths); + } + + $this->includePath = $paths; + $this->resolvedPath = null; + } + + /** + * return the current include path(s) + * + * @return array + */ + public function getIncludePath() + { + return $this->includePath; + } + + /** + * Checks if compiled file is valid (exists and it's the modification is greater or + * equal to the modification time of the template file) + * + * @param string file + * @return boolean True cache file existance and it's modification time + */ + protected function isValidCompiledFile($file) { + return parent::isValidCompiledFile($file) && (int)$this->getUid() <= filemtime($file); + } + + /** + * returns the template source of this template + * + * @return string + */ + public function getSource() + { + return file_get_contents($this->getResourceIdentifier()); + } + + /** + * returns the resource name for this template class + * + * @return string + */ + public function getResourceName() + { + return 'file'; + } + + /** + * returns this template's source filename + * + * @return string + */ + public function getResourceIdentifier() + { + if ($this->resolvedPath !== null) { + return $this->resolvedPath; + } elseif ($this->includePath === null) { + return $this->file; + } else { + foreach ($this->includePath as $path) { + $path = rtrim($path, DIRECTORY_SEPARATOR); + if (file_exists($path.DIRECTORY_SEPARATOR.$this->file) === true) { + $this->resolvedPath = $path . DIRECTORY_SEPARATOR . $this->file; + return $this->resolvedPath; + } + } + + throw new Dwoo_Exception('Template "'.$this->file.'" could not be found in any of your include path(s)'); + } + } + + /** + * returns an unique value identifying the current version of this template, + * in this case it's the unix timestamp of the last modification + * + * @return string + */ + public function getUid() + { + return (string) filemtime($this->getResourceIdentifier()); + } + + /** + * returns a new template object from the given include name, null if no include is + * possible (resource not found), or false if include is not permitted by this resource type + * + * @param Dwoo $dwoo the dwoo instance requiring it + * @param mixed $resourceId the filename (relative to this template's dir) of the template to include + * @param int $cacheTime duration of the cache validity for this template, + * if null it defaults to the Dwoo instance that will + * render this template + * @param string $cacheId the unique cache identifier of this page or anything else that + * makes this template's content unique, if null it defaults + * to the current url + * @param string $compileId the unique compiled identifier, which is used to distinguish this + * template from others, if null it defaults to the filename+bits of the path + * @param Dwoo_ITemplate $parentTemplate the template that is requesting a new template object (through + * an include, extends or any other plugin) + * @return Dwoo_Template_File|null + */ + public static function templateFactory(Dwoo $dwoo, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null) + { + if (DIRECTORY_SEPARATOR === '\\') { + $resourceId = str_replace(array("\t", "\n", "\r", "\f", "\v"), array('\\t', '\\n', '\\r', '\\f', '\\v'), $resourceId); + } + $resourceId = strtr($resourceId, '\\', '/'); + + $includePath = null; + + if (file_exists($resourceId) === false) { + if ($parentTemplate === null) { + $parentTemplate = $dwoo->getTemplate(); + } + if ($parentTemplate instanceof Dwoo_Template_File) { + if ($includePath = $parentTemplate->getIncludePath()) { + if (strstr($resourceId, '../')) { + throw new Dwoo_Exception('When using an include path you can not reference a template into a parent directory (using ../)'); + } + } else { + $resourceId = dirname($parentTemplate->getResourceIdentifier()).DIRECTORY_SEPARATOR.$resourceId; + if (file_exists($resourceId) === false) { + return null; + } + } + } else { + return null; + } + } + + if ($policy = $dwoo->getSecurityPolicy()) { + while (true) { + if (preg_match('{^([a-z]+?)://}i', $resourceId)) { + throw new Dwoo_Security_Exception('The security policy prevents you to read files from external sources : '.$resourceId.'.'); + } + + if ($includePath) { + break; + } + + $resourceId = realpath($resourceId); + $dirs = $policy->getAllowedDirectories(); + foreach ($dirs as $dir=>$dummy) { + if (strpos($resourceId, $dir) === 0) { + break 2; + } + } + throw new Dwoo_Security_Exception('The security policy prevents you to read '.$resourceId.''); + } + } + + $class = 'Dwoo_Template_File'; + if ($parentTemplate) { + $class = get_class($parentTemplate); + } + return new $class($resourceId, $cacheTime, $cacheId, $compileId, $includePath); + } + + /** + * returns the full compiled file name and assigns a default value to it if + * required + * + * @param Dwoo $dwoo the dwoo instance that requests the file name + * @return string the full path to the compiled file + */ + protected function getCompiledFilename(Dwoo $dwoo) + { + // no compile id was provided, set default + if ($this->compileId===null) { + $this->compileId = str_replace('../', '__', strtr($this->getResourceIdentifier(), '\\:', '/-')); + } + return $dwoo->getCompileDir() . $this->compileId.'.d'.Dwoo::RELEASE_TAG.'.php'; + } + + /** + * returns some php code that will check if this template has been modified or not + * + * if the function returns null, the template will be instanciated and then the Uid checked + * + * @return string + */ + public function getIsModifiedCode() + { + return '"'.$this->getUid().'" == filemtime('.var_export($this->getResourceIdentifier(), true).')'; + } +} diff --git a/system/libs/dwoo/Dwoo/Template/String.php b/system/libs/dwoo/Dwoo/Template/String.php new file mode 100644 index 00000000..6fbcaa42 --- /dev/null +++ b/system/libs/dwoo/Dwoo/Template/String.php @@ -0,0 +1,497 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Template_String implements Dwoo_ITemplate +{ + /** + * template name + * + * @var string + */ + protected $name; + + /** + * template compilation id + * + * @var string + */ + protected $compileId; + + /** + * template cache id, if not provided in the constructor, it is set to + * the md4 hash of the request_uri. it is however highly recommended to + * provide one that will fit your needs. + * + * in all cases, the compilation id is prepended to the cache id to separate + * templates with similar cache ids from one another + * + * @var string + */ + protected $cacheId; + + /** + * validity duration of the generated cache file (in seconds) + * + * set to -1 for infinite cache, 0 to disable and null to inherit the Dwoo instance's cache time + * + * @var int + */ + protected $cacheTime; + + /** + * boolean flag that defines whether the compilation should be enforced (once) or + * not use this if you have issues with the compiled templates not being updated + * but if you do need this it's most likely that you should file a bug report + * + * @var bool + */ + protected $compilationEnforced; + + /** + * caches the results of the file checks to save some time when the same + * templates is rendered several times + * + * @var array + */ + protected static $cache = array('cached'=>array(), 'compiled'=>array()); + + /** + * holds the compiler that built this template + * + * @var Dwoo_ICompiler + */ + protected $compiler; + + /** + * chmod value for all files written (cached or compiled ones) + * + * set to null if you don't want any chmod operation to happen + * + * @var int + */ + protected $chmod = 0777; + + /** + * creates a template from a string + * + * @param string $templateString the template to use + * @param int $cacheTime duration of the cache validity for this template, + * if null it defaults to the Dwoo instance that will + * render this template, set to -1 for infinite cache or 0 to disable + * @param string $cacheId the unique cache identifier of this page or anything else that + * makes this template's content unique, if null it defaults + * to the current url + * @param string $compileId the unique compiled identifier, which is used to distinguish this + * template from others, if null it defaults to the md4 hash of the template + */ + public function __construct($templateString, $cacheTime = null, $cacheId = null, $compileId = null) + { + $this->template = $templateString; + if (function_exists('hash')) { + $this->name = hash('md4', $templateString); + } else { + $this->name = md5($templateString); + } + $this->cacheTime = $cacheTime; + + if ($compileId !== null) { + $this->compileId = str_replace('../', '__', strtr($compileId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); + } + + if ($cacheId !== null) { + $this->cacheId = str_replace('../', '__', strtr($cacheId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); + } + } + + /** + * returns the cache duration for this template + * + * defaults to null if it was not provided + * + * @return int|null + */ + public function getCacheTime() + { + return $this->cacheTime; + } + + /** + * sets the cache duration for this template + * + * can be used to set it after the object is created if you did not provide + * it in the constructor + * + * @param int $seconds duration of the cache validity for this template, if + * null it defaults to the Dwoo instance's cache time. 0 = disable and + * -1 = infinite cache + */ + public function setCacheTime($seconds = null) + { + $this->cacheTime = $seconds; + } + + /** + * returns the chmod value for all files written (cached or compiled ones) + * + * defaults to 0777 + * + * @return int|null + */ + public function getChmod() + { + return $this->chmod; + } + + /** + * set the chmod value for all files written (cached or compiled ones) + * + * set to null if you don't want to do any chmod() operation + * + * @param int $mask new bitmask to use for all files + */ + public function setChmod($mask = null) + { + $this->chmod = $mask; + } + + /** + * returns the template name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * returns the resource name for this template class + * + * @return string + */ + public function getResourceName() + { + return 'string'; + } + + /** + * returns the resource identifier for this template, false here as strings don't have identifiers + * + * @return false + */ + public function getResourceIdentifier() + { + return false; + } + + /** + * returns the template source of this template + * + * @return string + */ + public function getSource() + { + return $this->template; + } + + /** + * returns an unique value identifying the current version of this template, + * in this case it's the md4 hash of the content + * + * @return string + */ + public function getUid() + { + return $this->name; + } + + /** + * returns the compiler used by this template, if it was just compiled, or null + * + * @return Dwoo_ICompiler + */ + public function getCompiler() + { + return $this->compiler; + } + + /** + * marks this template as compile-forced, which means it will be recompiled even if it + * was already saved and wasn't modified since the last compilation. do not use this in production, + * it's only meant to be used in development (and the development of dwoo particularly) + */ + public function forceCompilation() + { + $this->compilationEnforced = true; + } + + /** + * returns the cached template output file name, true if it's cache-able but not cached + * or false if it's not cached + * + * @param Dwoo $dwoo the dwoo instance that requests it + * @return string|bool + */ + public function getCachedTemplate(Dwoo $dwoo) + { + if ($this->cacheTime !== null) { + $cacheLength = $this->cacheTime; + } else { + $cacheLength = $dwoo->getCacheTime(); + } + + // file is not cacheable + if ($cacheLength === 0) { + return false; + } + + $cachedFile = $this->getCacheFilename($dwoo); + + if (isset(self::$cache['cached'][$this->cacheId]) === true && file_exists($cachedFile)) { + // already checked, return cache file + return $cachedFile; + } elseif ($this->compilationEnforced !== true && file_exists($cachedFile) && ($cacheLength === -1 || filemtime($cachedFile) > ($_SERVER['REQUEST_TIME'] - $cacheLength)) && $this->isValidCompiledFile($this->getCompiledFilename($dwoo))) { + // cache is still valid and can be loaded + self::$cache['cached'][$this->cacheId] = true; + return $cachedFile; + } else { + // file is cacheable + return true; + } + } + + /** + * caches the provided output into the cache file + * + * @param Dwoo $dwoo the dwoo instance that requests it + * @param string $output the template output + * @return mixed full path of the cached file or false upon failure + */ + public function cache(Dwoo $dwoo, $output) + { + $cacheDir = $dwoo->getCacheDir(); + $cachedFile = $this->getCacheFilename($dwoo); + + // the code below is courtesy of Rasmus Schultz, + // thanks for his help on avoiding concurency issues + $temp = tempnam($cacheDir, 'temp'); + if (!($file = @fopen($temp, 'wb'))) { + $temp = $cacheDir . uniqid('temp'); + if (!($file = @fopen($temp, 'wb'))) { + trigger_error('Error writing temporary file \''.$temp.'\'', E_USER_WARNING); + return false; + } + } + + fwrite($file, $output); + fclose($file); + + $this->makeDirectory(dirname($cachedFile), $cacheDir); + if (!@rename($temp, $cachedFile)) { + @unlink($cachedFile); + @rename($temp, $cachedFile); + } + + if ($this->chmod !== null) { + chmod($cachedFile, $this->chmod); + } + + self::$cache['cached'][$this->cacheId] = true; + + return $cachedFile; + } + + /** + * clears the cached template if it's older than the given time + * + * @param Dwoo $dwoo the dwoo instance that was used to cache that template + * @param int $olderThan minimum time (in seconds) required for the cache to be cleared + * @return bool true if the cache was not present or if it was deleted, false if it remains there + */ + public function clearCache(Dwoo $dwoo, $olderThan = -1) + { + $cachedFile = $this->getCacheFilename($dwoo); + + return !file_exists($cachedFile) || (filectime($cachedFile) < (time() - $olderThan) && unlink($cachedFile)); + } + + /** + * returns the compiled template file name + * + * @param Dwoo $dwoo the dwoo instance that requests it + * @param Dwoo_ICompiler $compiler the compiler that must be used + * @return string + */ + public function getCompiledTemplate(Dwoo $dwoo, Dwoo_ICompiler $compiler = null) + { + $compiledFile = $this->getCompiledFilename($dwoo); + + if ($this->compilationEnforced !== true && isset(self::$cache['compiled'][$this->compileId]) === true) { + // already checked, return compiled file + } elseif ($this->compilationEnforced !== true && $this->isValidCompiledFile($compiledFile)) { + // template is compiled + self::$cache['compiled'][$this->compileId] = true; + } else { + // compiles the template + $this->compilationEnforced = false; + + if ($compiler === null) { + $compiler = $dwoo->getDefaultCompilerFactory($this->getResourceName()); + + if ($compiler === null || $compiler === array('Dwoo_Compiler', 'compilerFactory')) { + if (class_exists('Dwoo_Compiler', false) === false) { + include DWOO_DIRECTORY . 'Dwoo/Compiler.php'; + } + $compiler = Dwoo_Compiler::compilerFactory(); + } else { + $compiler = call_user_func($compiler); + } + } + + $this->compiler = $compiler; + + $compiler->setCustomPlugins($dwoo->getCustomPlugins()); + $compiler->setSecurityPolicy($dwoo->getSecurityPolicy()); + $this->makeDirectory(dirname($compiledFile), $dwoo->getCompileDir()); + file_put_contents($compiledFile, $compiler->compile($dwoo, $this)); + if ($this->chmod !== null) { + chmod($compiledFile, $this->chmod); + } + + self::$cache['compiled'][$this->compileId] = true; + } + + return $compiledFile; + } + + /** + * Checks if compiled file is valid (it exists) + * + * @param string file + * @return boolean True cache file existance + */ + protected function isValidCompiledFile($file) { + return file_exists($file); + } + + /** + * returns a new template string object with the resource id being the template source code + * + * @param Dwoo $dwoo the dwoo instance requiring it + * @param mixed $resourceId the filename (relative to this template's dir) of the template to include + * @param int $cacheTime duration of the cache validity for this template, + * if null it defaults to the Dwoo instance that will + * render this template + * @param string $cacheId the unique cache identifier of this page or anything else that + * makes this template's content unique, if null it defaults + * to the current url + * @param string $compileId the unique compiled identifier, which is used to distinguish this + * template from others, if null it defaults to the filename+bits of the path + * @param Dwoo_ITemplate $parentTemplate the template that is requesting a new template object (through + * an include, extends or any other plugin) + * @return Dwoo_Template_String + */ + public static function templateFactory(Dwoo $dwoo, $resourceId, $cacheTime = null, $cacheId = null, $compileId = null, Dwoo_ITemplate $parentTemplate = null) + { + return new self($resourceId, $cacheTime, $cacheId, $compileId); + } + + /** + * returns the full compiled file name and assigns a default value to it if + * required + * + * @param Dwoo $dwoo the dwoo instance that requests the file name + * @return string the full path to the compiled file + */ + protected function getCompiledFilename(Dwoo $dwoo) + { + // no compile id was provided, set default + if ($this->compileId===null) { + $this->compileId = $this->name; + } + return $dwoo->getCompileDir() . $this->compileId.'.d'.Dwoo::RELEASE_TAG.'.php'; + } + + /** + * returns the full cached file name and assigns a default value to it if + * required + * + * @param Dwoo $dwoo the dwoo instance that requests the file name + * @return string the full path to the cached file + */ + protected function getCacheFilename(Dwoo $dwoo) + { + // no cache id provided, use request_uri as default + if ($this->cacheId === null) { + if (isset($_SERVER['REQUEST_URI']) === true) { + $cacheId = $_SERVER['REQUEST_URI']; + } elseif (isset($_SERVER['SCRIPT_FILENAME']) && isset($_SERVER['argv'])) { + $cacheId = $_SERVER['SCRIPT_FILENAME'].'-'.implode('-', $_SERVER['argv']); + } else { + $cacheId = ''; + } + // force compiled id generation + $this->getCompiledFilename($dwoo); + + $this->cacheId = str_replace('../', '__', $this->compileId . strtr($cacheId, '\\%?=!:;'.PATH_SEPARATOR, '/-------')); + } + return $dwoo->getCacheDir() . $this->cacheId.'.html'; + } + + /** + * returns some php code that will check if this template has been modified or not + * + * if the function returns null, the template will be instanciated and then the Uid checked + * + * @return string + */ + public function getIsModifiedCode() + { + return null; + } + + /** + * ensures the given path exists + * + * @param string $path any path + * @param string $baseDir the base directory where the directory is created + * ($path must still contain the full path, $baseDir + * is only used for unix permissions) + */ + protected function makeDirectory($path, $baseDir = null) + { + if (is_dir($path) === true) { + return; + } + + if ($this->chmod === null) { + $chmod = 0777; + } else { + $chmod = $this->chmod; + } + mkdir($path, $chmod, true); + + // enforce the correct mode for all directories created + if (strpos(PHP_OS, 'WIN') !== 0 && $baseDir !== null) { + $path = strtr(str_replace($baseDir, '', $path), '\\', '/'); + $folders = explode('/', trim($path, '/')); + foreach ($folders as $folder) { + $baseDir .= $folder . DIRECTORY_SEPARATOR; + chmod($baseDir, $chmod); + } + } + } +} diff --git a/system/libs/dwoo/LICENSE b/system/libs/dwoo/LICENSE new file mode 100644 index 00000000..55dd4a4c --- /dev/null +++ b/system/libs/dwoo/LICENSE @@ -0,0 +1,25 @@ +Copyright (c) 2008, Dwoo / Jordi Boggiano +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Dwoo nor the names of its contributors may be + used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY JORDI BOGGIANO ''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 JORDI BOGGIANO 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. \ No newline at end of file diff --git a/system/libs/dwoo/README b/system/libs/dwoo/README new file mode 100644 index 00000000..317179a1 --- /dev/null +++ b/system/libs/dwoo/README @@ -0,0 +1,79 @@ +----------------------------------------------------------------------------- +-- WHAT IS DWOO? readme - version 1.0.0 +----------------------------------------------------------------------------- +Dwoo is a PHP5 Template Engine that was started in early 2008. The idea came +from the fact that Smarty, a well known template engine, is getting older and +older. It carries the weight of it's age, having old features that are +inconsistent compared to newer ones, being written for PHP4 its Object +Oriented aspect doesn't take advantage of PHP5's more advanced features in +the area, etc. Hence Dwoo was born, hoping to provide a more up to date and +stronger engine. + +So far it has proven to be faster than Smarty in many areas, and it provides +a compatibility layer to allow developers that have been using Smarty for +years to switch their application over to Dwoo progressively. + +----------------------------------------------------------------------------- +-- DOCUMENTATION +----------------------------------------------------------------------------- +Dwoo's website to get the latest version is at http://dwoo.org/ + +The wiki/documentation pages are available at http://wiki.dwoo.org/ + +----------------------------------------------------------------------------- +-- LICENSE +----------------------------------------------------------------------------- +Dwoo is released under the Modified BSD license. +See the LICENSE file included in the archive or go to the URL below to obtain +a copy. + +http://dwoo.org/LICENSE + +----------------------------------------------------------------------------- +-- QUICK START - RUNNING DWOO +----------------------------------------------------------------------------- +/***************************** Basic Example *******************************/ +// Include the main class (it should handle the rest on its own) +include 'path/to/dwooAutoload.php'; + +// Create the controller, this is reusable +$dwoo = new Dwoo(); + +// Load a template file (name it as you please), this is reusable +// if you want to render multiple times the same template with different data +$tpl = new Dwoo_Template_File('path/to/index.tpl'); + +// Create a data set, if you don't like this you can directly input an +// associative array in $dwoo->output() +$data = new Dwoo_Data(); +// Fill it with some data +$data->assign('foo', 'BAR'); +$data->assign('bar', 'BAZ'); + +// Outputs the result ... +$dwoo->output($tpl, $data); +// ... or get it to use it somewhere else +$dwoo->get($tpl, $data); + +/***************************** Loop Example *******************************/ +// To loop over multiple articles of a blog for instance, if you have a +// template file representing an article, you could do the following : + +include 'path/to/dwooAutoload.php'; + +$dwoo = new Dwoo(); +$tpl = new Dwoo_Template_File('path/to/article.tpl'); + +$pageContent = ''; + +// Loop over articles that have been retrieved from the DB +foreach($articles as $article) { + // Either associate variables one by one + $data = new Dwoo_Data(); + $data->assign('title', $article['title']; + $data->assign('content', $article['content']); + $pageContent .= $dwoo->get($tpl, $data); + + // Or use the article directly (which is a lot easier in this case) + $pageContent .= $dwoo->get($tpl, $article); +} \ No newline at end of file diff --git a/system/libs/dwoo/UPGRADE_NOTES b/system/libs/dwoo/UPGRADE_NOTES new file mode 100644 index 00000000..5f01896f --- /dev/null +++ b/system/libs/dwoo/UPGRADE_NOTES @@ -0,0 +1,65 @@ +----------------------------------------------------------------------------- +-- Upgrading to Dwoo v1.0.0beta +----------------------------------------------------------------------------- + +1. Dwoo classes loading +----------------------- + +While everything was previously included by Dwoo.php, this version introduces +an autoload function (dwooAutoload) that handles this automatically. This +means your choices are now : + +a) change your : include 'path/to/Dwoo.php'; + into : include 'path/to/dwooAutoload.php'; + this is the recommended setting, especially during development, so that if you + are seeing a Dwoo error and want to report a bug, you get proper line numbers + with the error and not just "error in Dwoo.compiled.php at line 2" + +b) use the compiled version of Dwoo, this is "experimental" and seems to provide better + performances mostly under windows, with a linux server it might imrpove performances + slightly if you have an opcode cache (APC, xcache, ..) : + include 'path/to/Dwoo.compiled.php'; + +c) load Dwoo classes yourself somehow, as part of your autoload function or + whatever suits you best + +----------------------------------------------------------------------------- +-- Upgrading to Dwoo v0.9.2 +----------------------------------------------------------------------------- + +1. Block plugins +---------------- + +This version introduced a backward compatibility break with block plugins, this +was needed to allow compile-time access to the block's (parsed) content, be +very careful if you manipulate this content since it is php code and should remain +so if you don't want syntax errors (which are fatal) during template run. + +Error message : + + Strict Standards: Declaration of Dwoo_Plugin_*::postProcessing() should be compatible with that of Dwoo_Block_Plugin::postProcessing() + +Solution : + + * Change your block plugins postProcessing method declaration to the following : + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + + * Then add "$content" to the beginning of your return value, or modify it if required + +2. Strip modifier +----------------- + +The strip modifier had the same name as the strip block, this worked when the block +was hard coded within the compiler, but with the API change (see above) I was able +to move it to a plugin. Since both plugins don't have the same purpose, there was +a real problem and I had to rename it. The renaming will be handled by the smarty compatibility +layer, but if you used it without smarty compatibility, you should edit your templates. + +3. DWOO_COMPILE_DIRECTORY and DWOO_CACHE_DIRECTORY constants +------------------------------------------------------------ + +If you used those before, you will now get an exception when loading Dwoo. This is done +on purpose to help people to make the transition to the new method of doing it : + + $dwoo = new Dwoo('myCompileDir', 'myCacheDir'); \ No newline at end of file diff --git a/system/libs/dwoo/cache/.gitignore b/system/libs/dwoo/cache/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/system/libs/dwoo/compiled/.gitignore b/system/libs/dwoo/compiled/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/system/libs/dwoo/dwooAutoload.php b/system/libs/dwoo/dwooAutoload.php new file mode 100644 index 00000000..1352db19 --- /dev/null +++ b/system/libs/dwoo/dwooAutoload.php @@ -0,0 +1,12 @@ + + * * href : the target URI where the link must point + * * rest : any other attributes you want to add to the tag can be added as named parameters + * + * + * Example : + * + * + * {* Create a simple link out of an url variable and add a special class attribute: *} + * + * {a $url class="external" /} + * + * {* Mark a link as active depending on some other variable : *} + * + * {a $link.url class=tif($link.active "active"); $link.title /} + * + * {* This is similar to: {$link.title} *} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_a extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init($href, array $rest=array()) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $p = $compiler->getCompiledParams($params); + + $out = Dwoo_Compiler::PHP_OPEN . 'echo \'\';' . Dwoo_Compiler::PHP_CLOSE; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $p = $compiler->getCompiledParams($params); + + // no content was provided so use the url as display text + if ($content == "") { + // merge into the href if href is a string + if (substr($p['href'], -1) === '"' || substr($p['href'], -1) === '\'') { + return Dwoo_Compiler::PHP_OPEN . 'echo '.substr($p['href'], 0, -1).''.substr($p['href'], -1).';'.Dwoo_Compiler::PHP_CLOSE; + } + // otherwise append + return Dwoo_Compiler::PHP_OPEN . 'echo '.$p['href'].'.\'\';'.Dwoo_Compiler::PHP_CLOSE; + } + + // return content + return $content . ''; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/auto_escape.php b/system/libs/dwoo/plugins/builtin/blocks/auto_escape.php new file mode 100644 index 00000000..e85f4450 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/auto_escape.php @@ -0,0 +1,61 @@ + + * * enabled : if set to "on", "enable", true or 1 then the compiler autoescaping is enabled inside this block. set to "off", "disable", false or 0 to disable it + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_auto_escape extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + protected static $stack = array(); + + public function init($enabled) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $params = $compiler->getCompiledParams($params); + switch(strtolower(trim((string) $params['enabled'], '"\''))) { + + case 'on': + case 'true': + case 'enabled': + case 'enable': + case '1': + $enable = true; + break; + case 'off': + case 'false': + case 'disabled': + case 'disable': + case '0': + $enable = false; + break; + default: + throw new Dwoo_Compilation_Exception($compiler, 'Auto_Escape : Invalid parameter ('.$params['enabled'].'), valid parameters are "enable"/true or "disable"/false'); + + } + + self::$stack[] = $compiler->getAutoEscape(); + $compiler->setAutoEscape($enable); + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $compiler->setAutoEscape(array_pop(self::$stack)); + return $content; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/block.php b/system/libs/dwoo/plugins/builtin/blocks/block.php new file mode 100644 index 00000000..b396d9e6 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/block.php @@ -0,0 +1,34 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_block extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init($name='') + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + return $content; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/capture.php b/system/libs/dwoo/plugins/builtin/blocks/capture.php new file mode 100644 index 00000000..43ef3de1 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/capture.php @@ -0,0 +1,61 @@ + + * * name : capture name, used to read the value afterwards + * * assign : if set, the value is also saved in the given variable + * * cat : if true, the value is appended to the previous one (if any) instead of overwriting it + * + * If the cat parameter is true, the content + * will be appended to the existing content + * + * Example : + * + * + * {capture "foo"} + * Anything in here won't show, it will be saved for later use.. + * {/capture} + * Output was : {$.capture.foo} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_capture extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init($name = 'default', $assign = null, $cat = false, $trim = false) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return Dwoo_Compiler::PHP_OPEN.$prepend.'ob_start();'.$append.Dwoo_Compiler::PHP_CLOSE; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $params = $compiler->getCompiledParams($params); + + $out = $content . Dwoo_Compiler::PHP_OPEN.$prepend."\n".'$tmp = ob_get_clean();'; + if ($params['trim'] !== 'false' && $params['trim'] !== 0) { + $out .= "\n".'$tmp = trim($tmp);'; + } + if ($params['cat'] === 'true' || $params['cat'] === 1) { + $out .= "\n".'$tmp = $this->readVar(\'dwoo.capture.\'.'.$params['name'].') . $tmp;'; + } + if ($params['assign'] !== 'null') { + $out .= "\n".'$this->scope['.$params['assign'].'] = $tmp;'; + } + return $out . "\n".'$this->globals[\'capture\']['.$params['name'].'] = $tmp;'.$append.Dwoo_Compiler::PHP_CLOSE; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/dynamic.php b/system/libs/dwoo/plugins/builtin/blocks/dynamic.php new file mode 100644 index 00000000..783eae8d --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/dynamic.php @@ -0,0 +1,65 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_dynamic extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init() + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $output = Dwoo_Compiler::PHP_OPEN . + 'if($doCache) {'."\n\t". + 'echo \''. + str_replace('\'', '\\\'', $content) . + '\';'. + "\n} else {\n\t"; + if(substr($content, 0, strlen(Dwoo_Compiler::PHP_OPEN)) == Dwoo_Compiler::PHP_OPEN) { + $output .= substr($content, strlen(Dwoo_Compiler::PHP_OPEN)); + } else { + $output .= Dwoo_Compiler::PHP_CLOSE . $content; + } + if(substr($output, -strlen(Dwoo_Compiler::PHP_CLOSE)) == Dwoo_Compiler::PHP_CLOSE) { + $output = substr($output, 0, -strlen(Dwoo_Compiler::PHP_CLOSE)); + } else { + $output .= Dwoo_Compiler::PHP_OPEN; + } + $output .= "\n}". Dwoo_Compiler::PHP_CLOSE; + + return $output; + } + + public static function unescape($output, $dynamicId, $compiledFile) + { + $output = preg_replace_callback('/(.+?)<\/dwoo:dynamic_'.$dynamicId.'>/s', array('self', 'unescapePhp'), $output, -1, $count); + // re-add the includes on top of the file + if ($count && preg_match('#/\* template head \*/(.+?)/\* end template head \*/#s', file_get_contents($compiledFile), $m)) { + $output = ''.$output; + } + return $output; + } + + public static function unescapePhp($match) + { + return preg_replace('{<\?php /\*'.$match[1].'\*/ echo \'(.+?)\'; \?>}s', '$1', $match[2]); + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/else.php b/system/libs/dwoo/plugins/builtin/blocks/else.php new file mode 100644 index 00000000..32f1563f --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/else.php @@ -0,0 +1,63 @@ + + * {foreach $array val} + * $array is not empty so we display it's values : {$val} + * {else} + * if this shows, it means that $array is empty or doesn't exist. + * {/foreach} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_else extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init() + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $preContent = ''; + while (true) { + $preContent .= $compiler->removeTopBlock(); + $block =& $compiler->getCurrentBlock(); + $interfaces = class_implements($block['class'], false); + if (in_array('Dwoo_IElseable', $interfaces) !== false) { + break; + } + } + + $params['initialized'] = true; + $compiler->injectBlock($type, $params); + return $preContent; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + if (!isset($params['initialized'])) { + return ''; + } + + $block =& $compiler->getCurrentBlock(); + $block['params']['hasElse'] = Dwoo_Compiler::PHP_OPEN."else {\n".Dwoo_Compiler::PHP_CLOSE . $content . Dwoo_Compiler::PHP_OPEN."\n}".Dwoo_Compiler::PHP_CLOSE; + return ''; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/elseif.php b/system/libs/dwoo/plugins/builtin/blocks/elseif.php new file mode 100644 index 00000000..14949ace --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/elseif.php @@ -0,0 +1,60 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_elseif extends Dwoo_Plugin_if implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + public function init(array $rest) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $preContent = ''; + while (true) { + $preContent .= $compiler->removeTopBlock(); + $block =& $compiler->getCurrentBlock(); + $interfaces = class_implements($block['class'], false); + if (in_array('Dwoo_IElseable', $interfaces) !== false) { + break; + } + } + + $params['initialized'] = true; + $compiler->injectBlock($type, $params); + return $preContent; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + if (!isset($params['initialized'])) { + return ''; + } + + $params = $compiler->getCompiledParams($params); + + $pre = Dwoo_Compiler::PHP_OPEN."elseif (".implode(' ', self::replaceKeywords($params['*'], $compiler)).") {\n" . Dwoo_Compiler::PHP_CLOSE; + $post = Dwoo_Compiler::PHP_OPEN."\n}".Dwoo_Compiler::PHP_CLOSE; + + if (isset($params['hasElse'])) { + $post .= $params['hasElse']; + } + + $block =& $compiler->getCurrentBlock(); + $block['params']['hasElse'] = $pre . $content . $post; + return ''; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/for.php b/system/libs/dwoo/plugins/builtin/blocks/for.php new file mode 100644 index 00000000..aeabb2a0 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/for.php @@ -0,0 +1,147 @@ + + * * name : for name to access it's iterator variables through {$.for.name.var} see {@link http://wiki.dwoo.org/index.php/IteratorVariables} for details + * * from : array to iterate from (which equals 0) or a number as a start value + * * to : value to stop iterating at (equals count($array) by default if you set an array in from) + * * step : defines the incrementation of the pointer at each iteration + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Plugin_for extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + public static $cnt=0; + + public function init($name, $from, $to=null, $step=1, $skip=0) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + // get block params and save the current template pointer to use it in the postProcessing method + $currentBlock =& $compiler->getCurrentBlock(); + $currentBlock['params']['tplPointer'] = $compiler->getPointer(); + + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $params = $compiler->getCompiledParams($params); + $tpl = $compiler->getTemplateSource($params['tplPointer']); + + // assigns params + $from = $params['from']; + $name = $params['name']; + $step = $params['step']; + $to = $params['to']; + + // evaluates which global variables have to be computed + $varName = '$dwoo.for.'.trim($name, '"\'').'.'; + $shortVarName = '$.for.'.trim($name, '"\'').'.'; + $usesAny = strpos($tpl, $varName) !== false || strpos($tpl, $shortVarName) !== false; + $usesFirst = strpos($tpl, $varName.'first') !== false || strpos($tpl, $shortVarName.'first') !== false; + $usesLast = strpos($tpl, $varName.'last') !== false || strpos($tpl, $shortVarName.'last') !== false; + $usesIndex = strpos($tpl, $varName.'index') !== false || strpos($tpl, $shortVarName.'index') !== false; + $usesIteration = $usesFirst || $usesLast || strpos($tpl, $varName.'iteration') !== false || strpos($tpl, $shortVarName.'iteration') !== false; + $usesShow = strpos($tpl, $varName.'show') !== false || strpos($tpl, $shortVarName.'show') !== false; + $usesTotal = $usesLast || strpos($tpl, $varName.'total') !== false || strpos($tpl, $shortVarName.'total') !== false; + + if (strpos($name, '$this->scope[') !== false) { + $usesAny = $usesFirst = $usesLast = $usesIndex = $usesIteration = $usesShow = $usesTotal = true; + } + + // gets foreach id + $cnt = self::$cnt++; + + // builds pre processing output for + $out = Dwoo_Compiler::PHP_OPEN . "\n".'$_for'.$cnt.'_from = '.$from.';'. + "\n".'$_for'.$cnt.'_to = '.$to.';'. + "\n".'$_for'.$cnt.'_step = abs('.$step.');'. + "\n".'if (is_numeric($_for'.$cnt.'_from) && !is_numeric($_for'.$cnt.'_to)) { $this->triggerError(\'For requires the to parameter when using a numerical from\'); }'. + "\n".'$tmp_shows = $this->isArray($_for'.$cnt.'_from, true) || (is_numeric($_for'.$cnt.'_from) && (abs(($_for'.$cnt.'_from - $_for'.$cnt.'_to)/$_for'.$cnt.'_step) !== 0 || $_for'.$cnt.'_from == $_for'.$cnt.'_to));'; + // adds foreach properties + if ($usesAny) { + $out .= "\n".'$this->globals["for"]['.$name.'] = array'."\n("; + if ($usesIndex) $out .="\n\t".'"index" => 0,'; + if ($usesIteration) $out .="\n\t".'"iteration" => 1,'; + if ($usesFirst) $out .="\n\t".'"first" => null,'; + if ($usesLast) $out .="\n\t".'"last" => null,'; + if ($usesShow) $out .="\n\t".'"show" => $tmp_shows,'; + if ($usesTotal) $out .="\n\t".'"total" => $this->isArray($_for'.$cnt.'_from) ? floor(count($_for'.$cnt.'_from) / $_for'.$cnt.'_step) : (is_numeric($_for'.$cnt.'_from) ? abs(($_for'.$cnt.'_to + 1 - $_for'.$cnt.'_from)/$_for'.$cnt.'_step) : 0),'; + $out.="\n);\n".'$_for'.$cnt.'_glob =& $this->globals["for"]['.$name.'];'; + } + // checks if for must be looped + $out .= "\n".'if ($tmp_shows)'."\n{"; + // set from/to to correct values if an array was given + $out .= "\n\t".'if ($this->isArray($_for'.$cnt.'_from, true)) { + $_for'.$cnt.'_to = is_numeric($_for'.$cnt.'_to) ? $_for'.$cnt.'_to - $_for'.$cnt.'_step : count($_for'.$cnt.'_from) - 1; + $_for'.$cnt.'_from = 0; + }'; + + // if input are pure numbers it shouldn't reorder them, if it's variables it gets too messy though so in that case a counter should be used + $reverse = false; + $condition = '<='; + $incrementer = '+'; + + if (preg_match('{^(["\']?)([0-9]+)\1$}', $from, $mN1) && preg_match('{^(["\']?)([0-9]+)\1$}', $to, $mN2)) { + $from = (int) $mN1[2]; + $to = (int) $mN2[2]; + if ($from > $to) { + $reverse = true; + $condition = '>='; + $incrementer = '-'; + } + } + + // reverse from and to if needed + if (!$reverse) { + $out .= "\n\t".'if ($_for'.$cnt.'_from > $_for'.$cnt.'_to) { + $tmp = $_for'.$cnt.'_from; + $_for'.$cnt.'_from = $_for'.$cnt.'_to; + $_for'.$cnt.'_to = $tmp; + }'; + } + + $out .= ' + for ($this->scope['.$name.'] = $_for'.$cnt.'_from; $this->scope['.$name.'] '.$condition.' $_for'.$cnt.'_to; $this->scope['.$name.'] '.$incrementer.'= $_for'.$cnt.'_step)'."\n\t{"; + // updates properties + if ($usesIndex) { + $out .="\n\t\t".'$_for'.$cnt.'_glob["index"] = $this->scope['.$name.'];'; + } + if ($usesFirst) { + $out .= "\n\t\t".'$_for'.$cnt.'_glob["first"] = (string) ($_for'.$cnt.'_glob["iteration"] === 1);'; + } + if ($usesLast) { + $out .= "\n\t\t".'$_for'.$cnt.'_glob["last"] = (string) ($_for'.$cnt.'_glob["iteration"] === $_for'.$cnt.'_glob["total"]);'; + } + $out .= "\n/* -- for start output */\n".Dwoo_Compiler::PHP_CLOSE; + + + // build post processing output and cache it + $postOut = Dwoo_Compiler::PHP_OPEN . '/* -- for end output */'; + // update properties + if ($usesIteration) { + $postOut .= "\n\t\t".'$_for'.$cnt.'_glob["iteration"]+=1;'; + } + // end loop + $postOut .= "\n\t}\n}\n".Dwoo_Compiler::PHP_CLOSE; + + if (isset($params['hasElse'])) { + $postOut .= $params['hasElse']; + } + + return $out . $content . $postOut; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/foreach.php b/system/libs/dwoo/plugins/builtin/blocks/foreach.php new file mode 100644 index 00000000..2c2f9728 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/foreach.php @@ -0,0 +1,152 @@ + + * * from : the array that you want to iterate over + * * key : variable name for the key (or for the item if item is not defined) + * * item : variable name for each item + * * name : foreach name to access it's iterator variables through {$.foreach.name.var} see {@link http://wiki.dwoo.org/index.php/IteratorVariables} for details + * + * Example : + * + * + * {foreach $array val} + * {$val.something} + * {/foreach} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Plugin_foreach extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + public static $cnt=0; + + public function init($from, $key=null, $item=null, $name='default', $implode=null) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + // get block params and save the current template pointer to use it in the postProcessing method + $currentBlock =& $compiler->getCurrentBlock(); + $currentBlock['params']['tplPointer'] = $compiler->getPointer(); + + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $params = $compiler->getCompiledParams($params); + $tpl = $compiler->getTemplateSource($params['tplPointer']); + + // assigns params + $src = $params['from']; + + if ($params['item'] !== 'null') { + if ($params['key'] !== 'null') { + $key = $params['key']; + } + $val = $params['item']; + } elseif ($params['key'] !== 'null') { + $val = $params['key']; + } else { + throw new Dwoo_Compilation_Exception($compiler, 'Foreach item parameter missing'); + } + $name = $params['name']; + + if (substr($val, 0, 1) !== '"' && substr($val, 0, 1) !== '\'') { + throw new Dwoo_Compilation_Exception($compiler, 'Foreach item parameter must be of type string'); + } + if (isset($key) && substr($val, 0, 1) !== '"' && substr($val, 0, 1) !== '\'') { + throw new Dwoo_Compilation_Exception($compiler, 'Foreach key parameter must be of type string'); + } + + // evaluates which global variables have to be computed + $varName = '$dwoo.foreach.'.trim($name, '"\'').'.'; + $shortVarName = '$.foreach.'.trim($name, '"\'').'.'; + $usesAny = strpos($tpl, $varName) !== false || strpos($tpl, $shortVarName) !== false; + $usesFirst = strpos($tpl, $varName.'first') !== false || strpos($tpl, $shortVarName.'first') !== false; + $usesLast = strpos($tpl, $varName.'last') !== false || strpos($tpl, $shortVarName.'last') !== false; + $usesIndex = $usesFirst || strpos($tpl, $varName.'index') !== false || strpos($tpl, $shortVarName.'index') !== false; + $usesIteration = $usesLast || strpos($tpl, $varName.'iteration') !== false || strpos($tpl, $shortVarName.'iteration') !== false; + $usesShow = strpos($tpl, $varName.'show') !== false || strpos($tpl, $shortVarName.'show') !== false; + $usesTotal = $usesLast || strpos($tpl, $varName.'total') !== false || strpos($tpl, $shortVarName.'total') !== false; + + if (strpos($name, '$this->scope[') !== false) { + $usesAny = $usesFirst = $usesLast = $usesIndex = $usesIteration = $usesShow = $usesTotal = true; + } + + // override globals vars if implode is used + if ($params['implode'] !== 'null') { + $implode = $params['implode']; + $usesAny = true; + $usesLast = true; + $usesIteration = true; + $usesTotal = true; + } + + // gets foreach id + $cnt = self::$cnt++; + + // build pre content output + $pre = Dwoo_Compiler::PHP_OPEN . "\n".'$_fh'.$cnt.'_data = '.$src.';'; + // adds foreach properties + if ($usesAny) { + $pre .= "\n".'$this->globals["foreach"]['.$name.'] = array'."\n("; + if ($usesIndex) $pre .="\n\t".'"index" => 0,'; + if ($usesIteration) $pre .="\n\t".'"iteration" => 1,'; + if ($usesFirst) $pre .="\n\t".'"first" => null,'; + if ($usesLast) $pre .="\n\t".'"last" => null,'; + if ($usesShow) $pre .="\n\t".'"show" => $this->isArray($_fh'.$cnt.'_data, true),'; + if ($usesTotal) $pre .="\n\t".'"total" => $this->isArray($_fh'.$cnt.'_data) ? count($_fh'.$cnt.'_data) : 0,'; + $pre.="\n);\n".'$_fh'.$cnt.'_glob =& $this->globals["foreach"]['.$name.'];'; + } + // checks if foreach must be looped + $pre .= "\n".'if ($this->isArray($_fh'.$cnt.'_data'.(isset($params['hasElse']) ? ', true' : '').') === true)'."\n{"; + // iterates over keys + $pre .= "\n\t".'foreach ($_fh'.$cnt.'_data as '.(isset($key)?'$this->scope['.$key.']=>':'').'$this->scope['.$val.'])'."\n\t{"; + // updates properties + if ($usesFirst) { + $pre .= "\n\t\t".'$_fh'.$cnt.'_glob["first"] = (string) ($_fh'.$cnt.'_glob["index"] === 0);'; + } + if ($usesLast) { + $pre .= "\n\t\t".'$_fh'.$cnt.'_glob["last"] = (string) ($_fh'.$cnt.'_glob["iteration"] === $_fh'.$cnt.'_glob["total"]);'; + } + $pre .= "\n/* -- foreach start output */\n".Dwoo_Compiler::PHP_CLOSE; + + // build post content output + $post = Dwoo_Compiler::PHP_OPEN . "\n"; + + if (isset($implode)) { + $post .= '/* -- implode */'."\n".'if (!$_fh'.$cnt.'_glob["last"]) {'. + "\n\t".'echo '.$implode.";\n}\n"; + } + $post .= '/* -- foreach end output */'; + // update properties + if ($usesIndex) { + $post.="\n\t\t".'$_fh'.$cnt.'_glob["index"]+=1;'; + } + if ($usesIteration) { + $post.="\n\t\t".'$_fh'.$cnt.'_glob["iteration"]+=1;'; + } + // end loop + $post .= "\n\t}\n}".Dwoo_Compiler::PHP_CLOSE; + if (isset($params['hasElse'])) { + $post .= $params['hasElse']; + } + + return $pre . $content . $post; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/foreachelse.php b/system/libs/dwoo/plugins/builtin/blocks/foreachelse.php new file mode 100644 index 00000000..fbae0ea1 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/foreachelse.php @@ -0,0 +1,43 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_foreachelse extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init() + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $with =& $compiler->findBlock('foreach', true); + + $params['initialized'] = true; + $compiler->injectBlock($type, $params); + + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + if (!isset($params['initialized'])) { + return ''; + } + + $block =& $compiler->getCurrentBlock(); + $block['params']['hasElse'] = Dwoo_Compiler::PHP_OPEN."else {\n".Dwoo_Compiler::PHP_CLOSE . $content . Dwoo_Compiler::PHP_OPEN."\n}".Dwoo_Compiler::PHP_CLOSE; + return ''; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/forelse.php b/system/libs/dwoo/plugins/builtin/blocks/forelse.php new file mode 100644 index 00000000..74bde5ba --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/forelse.php @@ -0,0 +1,43 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_forelse extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init() + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $with =& $compiler->findBlock('for', true); + + $params['initialized'] = true; + $compiler->injectBlock($type, $params); + + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + if (!isset($params['initialized'])) { + return ''; + } + + $block =& $compiler->getCurrentBlock(); + $block['params']['hasElse'] = Dwoo_Compiler::PHP_OPEN."else {\n".Dwoo_Compiler::PHP_CLOSE . $content . Dwoo_Compiler::PHP_OPEN."\n}".Dwoo_Compiler::PHP_CLOSE; + return ''; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/if.php b/system/libs/dwoo/plugins/builtin/blocks/if.php new file mode 100644 index 00000000..51cf5365 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/if.php @@ -0,0 +1,180 @@ + == + * neq or ne -> != + * gte or ge -> >= + * lte or le -> <= + * gt -> > + * lt -> < + * mod -> % + * not -> ! + * X is [not] div by Y -> (X % Y) == 0 + * X is [not] even [by Y] -> (X % 2) == 0 or ((X/Y) % 2) == 0 + * X is [not] odd [by Y] -> (X % 2) != 0 or ((X/Y) % 2) != 0 + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_if extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + public function init(array $rest) + { + } + + public static function replaceKeywords(array $params, Dwoo_Compiler $compiler) + { + $p = array(); + + reset($params); + while (list($k,$v) = each($params)) { + $v = (string) $v; + if(substr($v, 0, 1) === '"' || substr($v, 0, 1) === '\'') { + $vmod = strtolower(substr($v, 1, -1)); + } else { + $vmod = strtolower($v); + } + switch($vmod) { + + case 'and': + $p[] = '&&'; + break; + case 'or': + $p[] = '||'; + break; + case '==': + case 'eq': + $p[] = '=='; + break; + case '<>': + case '!=': + case 'ne': + case 'neq': + $p[] = '!='; + break; + case '>=': + case 'gte': + case 'ge': + $p[] = '>='; + break; + case '<=': + case 'lte': + case 'le': + $p[] = '<='; + break; + case '>': + case 'gt': + $p[] = '>'; + break; + case '<': + case 'lt': + $p[] = '<'; + break; + case '===': + $p[] = '==='; + break; + case '!==': + $p[] = '!=='; + break; + case 'is': + if (isset($params[$k+1]) && strtolower(trim($params[$k+1], '"\'')) === 'not') { + $negate = true; + next($params); + } else { + $negate = false; + } + $ptr = 1+(int)$negate; + if (!isset($params[$k+$ptr])) { + $params[$k+$ptr] = ''; + } else { + $params[$k+$ptr] = trim($params[$k+$ptr], '"\''); + } + switch($params[$k+$ptr]) { + + case 'div': + if (isset($params[$k+$ptr+1]) && strtolower(trim($params[$k+$ptr+1], '"\'')) === 'by') { + $p[] = ' % '.$params[$k+$ptr+2].' '.($negate?'!':'=').'== 0'; + next($params); + next($params); + next($params); + } else { + throw new Dwoo_Compilation_Exception($compiler, 'If : Syntax error : syntax should be "if $a is [not] div by $b", found '.$params[$k-1].' is '.($negate?'not ':'').'div '.$params[$k+$ptr+1].' '.$params[$k+$ptr+2]); + } + break; + case 'even': + $a = array_pop($p); + if (isset($params[$k+$ptr+1]) && strtolower(trim($params[$k+$ptr+1], '"\'')) === 'by') { + $b = $params[$k+$ptr+2]; + $p[] = '('.$a .' / '.$b.') % 2 '.($negate?'!':'=').'== 0'; + next($params); + next($params); + } else { + $p[] = $a.' % 2 '.($negate?'!':'=').'== 0'; + } + next($params); + break; + case 'odd': + $a = array_pop($p); + if (isset($params[$k+$ptr+1]) && strtolower(trim($params[$k+$ptr+1], '"\'')) === 'by') { + $b = $params[$k+$ptr+2]; + $p[] = '('.$a .' / '.$b.') % 2 '.($negate?'=':'!').'== 0'; + next($params); + next($params); + } else { + $p[] = $a.' % 2 '.($negate?'=':'!').'== 0'; + } + next($params); + break; + default: + throw new Dwoo_Compilation_Exception($compiler, 'If : Syntax error : syntax should be "if $a is [not] (div|even|odd) [by $b]", found '.$params[$k-1].' is '.$params[$k+$ptr+1]); + + } + break; + case '%': + case 'mod': + $p[] = '%'; + break; + case '!': + case 'not': + $p[] = '!'; + break; + default: + $p[] = $v; + + } + } + + return $p; + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $params = $compiler->getCompiledParams($params); + + $pre = Dwoo_Compiler::PHP_OPEN.'if ('.implode(' ', self::replaceKeywords($params['*'], $compiler)).") {\n".Dwoo_Compiler::PHP_CLOSE; + + $post = Dwoo_Compiler::PHP_OPEN."\n}".Dwoo_Compiler::PHP_CLOSE; + + if (isset($params['hasElse'])) { + $post .= $params['hasElse']; + } + + return $pre . $content . $post; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/loop.php b/system/libs/dwoo/plugins/builtin/blocks/loop.php new file mode 100644 index 00000000..026795c6 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/loop.php @@ -0,0 +1,128 @@ + + * * from : the array that you want to iterate over + * * name : loop name to access it's iterator variables through {$.loop.name.var} see {@link http://wiki.dwoo.org/index.php/IteratorVariables} for details + * + * Example : + * + * instead of a foreach block such as : + * + * + * {foreach $variable value} + * {$value.foo} {$value.bar} + * {/foreach} + * + * + * you can do : + * + * + * {loop $variable} + * {$foo} {$bar} + * {/loop} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Plugin_loop extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + public static $cnt=0; + + public function init($from, $name='default') + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + // get block params and save the current template pointer to use it in the postProcessing method + $currentBlock =& $compiler->getCurrentBlock(); + $currentBlock['params']['tplPointer'] = $compiler->getPointer(); + + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $params = $compiler->getCompiledParams($params); + $tpl = $compiler->getTemplateSource($params['tplPointer']); + + // assigns params + $src = $params['from']; + $name = $params['name']; + + // evaluates which global variables have to be computed + $varName = '$dwoo.loop.'.trim($name, '"\'').'.'; + $shortVarName = '$.loop.'.trim($name, '"\'').'.'; + $usesAny = strpos($tpl, $varName) !== false || strpos($tpl, $shortVarName) !== false; + $usesFirst = strpos($tpl, $varName.'first') !== false || strpos($tpl, $shortVarName.'first') !== false; + $usesLast = strpos($tpl, $varName.'last') !== false || strpos($tpl, $shortVarName.'last') !== false; + $usesIndex = $usesFirst || strpos($tpl, $varName.'index') !== false || strpos($tpl, $shortVarName.'index') !== false; + $usesIteration = $usesLast || strpos($tpl, $varName.'iteration') !== false || strpos($tpl, $shortVarName.'iteration') !== false; + $usesShow = strpos($tpl, $varName.'show') !== false || strpos($tpl, $shortVarName.'show') !== false; + $usesTotal = $usesLast || strpos($tpl, $varName.'total') !== false || strpos($tpl, $shortVarName.'total') !== false; + + if (strpos($name, '$this->scope[') !== false) { + $usesAny = $usesFirst = $usesLast = $usesIndex = $usesIteration = $usesShow = $usesTotal = true; + } + + // gets foreach id + $cnt = self::$cnt++; + + // builds pre processing output + $pre = Dwoo_Compiler::PHP_OPEN . "\n".'$_loop'.$cnt.'_data = '.$src.';'; + // adds foreach properties + if ($usesAny) { + $pre .= "\n".'$this->globals["loop"]['.$name.'] = array'."\n("; + if ($usesIndex) $pre .="\n\t".'"index" => 0,'; + if ($usesIteration) $pre .="\n\t".'"iteration" => 1,'; + if ($usesFirst) $pre .="\n\t".'"first" => null,'; + if ($usesLast) $pre .="\n\t".'"last" => null,'; + if ($usesShow) $pre .="\n\t".'"show" => $this->isArray($_loop'.$cnt.'_data, true),'; + if ($usesTotal) $pre .="\n\t".'"total" => $this->isArray($_loop'.$cnt.'_data) ? count($_loop'.$cnt.'_data) : 0,'; + $pre.="\n);\n".'$_loop'.$cnt.'_glob =& $this->globals["loop"]['.$name.'];'; + } + // checks if the loop must be looped + $pre .= "\n".'if ($this->isArray($_loop'.$cnt.'_data'.(isset($params['hasElse']) ? ', true' : '').') === true)'."\n{"; + // iterates over keys + $pre .= "\n\t".'foreach ($_loop'.$cnt.'_data as $tmp_key => $this->scope["-loop-"])'."\n\t{"; + // updates properties + if ($usesFirst) { + $pre .= "\n\t\t".'$_loop'.$cnt.'_glob["first"] = (string) ($_loop'.$cnt.'_glob["index"] === 0);'; + } + if ($usesLast) { + $pre .= "\n\t\t".'$_loop'.$cnt.'_glob["last"] = (string) ($_loop'.$cnt.'_glob["iteration"] === $_loop'.$cnt.'_glob["total"]);'; + } + $pre .= "\n\t\t".'$_loop'.$cnt.'_scope = $this->setScope(array("-loop-"));' . "\n/* -- loop start output */\n".Dwoo_Compiler::PHP_CLOSE; + + // build post processing output and cache it + $post = Dwoo_Compiler::PHP_OPEN . "\n".'/* -- loop end output */'."\n\t\t".'$this->setScope($_loop'.$cnt.'_scope, true);'; + // update properties + if ($usesIndex) { + $post.="\n\t\t".'$_loop'.$cnt.'_glob["index"]+=1;'; + } + if ($usesIteration) { + $post.="\n\t\t".'$_loop'.$cnt.'_glob["iteration"]+=1;'; + } + // end loop + $post .= "\n\t}\n}\n" . Dwoo_Compiler::PHP_CLOSE; + if (isset($params['hasElse'])) { + $post .= $params['hasElse']; + } + + return $pre . $content . $post; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/section.php b/system/libs/dwoo/plugins/builtin/blocks/section.php new file mode 100644 index 00000000..7daba515 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/section.php @@ -0,0 +1,131 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_section extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + public static $cnt=0; + + public function init($name, $loop, $start = null, $step = null, $max = null, $show = true) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $output = Dwoo_Compiler::PHP_OPEN; + $params = $compiler->getCompiledParams($params); + + // assigns params + $loop = $params['loop']; + $start = $params['start']; + $max = $params['max']; + $name = $params['name']; + $step = $params['step']; + $show = $params['show']; + + // gets unique id + $cnt = self::$cnt++; + + $output .= '$this->globals[\'section\']['.$name.'] = array();'."\n". + '$_section'.$cnt.' =& $this->globals[\'section\']['.$name.'];'."\n"; + + if ($loop !== 'null') { + $output .= '$_section'.$cnt.'[\'loop\'] = is_array($tmp = '.$loop.') ? count($tmp) : max(0, (int) $tmp);'."\n"; + } else { + $output .= '$_section'.$cnt.'[\'loop\'] = 1;'."\n"; + } + + if ($show !== 'null') { + $output .= '$_section'.$cnt.'[\'show\'] = '.$show.";\n"; + } else { + $output .= '$_section'.$cnt.'[\'show\'] = true;'."\n"; + } + + if ($name !== 'null') { + $output .= '$_section'.$cnt.'[\'name\'] = '.$name.";\n"; + } else { + $output .= '$_section'.$cnt.'[\'name\'] = true;'."\n"; + } + + if ($max !== 'null') { + $output .= '$_section'.$cnt.'[\'max\'] = (int)'.$max.";\n". + 'if($_section'.$cnt.'[\'max\'] < 0) { $_section'.$cnt.'[\'max\'] = $_section'.$cnt.'[\'loop\']; }'."\n"; + } else { + $output .= '$_section'.$cnt.'[\'max\'] = $_section'.$cnt.'[\'loop\'];'."\n"; + } + + if ($step !== 'null') { + $output .= '$_section'.$cnt.'[\'step\'] = (int)'.$step.' == 0 ? 1 : (int) '.$step.";\n"; + } else { + $output .= '$_section'.$cnt.'[\'step\'] = 1;'."\n"; + } + + if ($start !== 'null') { + $output .= '$_section'.$cnt.'[\'start\'] = (int)'.$start.";\n"; + } else { + $output .= '$_section'.$cnt.'[\'start\'] = $_section'.$cnt.'[\'step\'] > 0 ? 0 : $_section'.$cnt.'[\'loop\'] - 1;'."\n". + 'if ($_section'.$cnt.'[\'start\'] < 0) { $_section'.$cnt.'[\'start\'] = max($_section'.$cnt.'[\'step\'] > 0 ? 0 : -1, $_section'.$cnt.'[\'loop\'] + $_section'.$cnt.'[\'start\']); } '."\n". + 'else { $_section'.$cnt.'[\'start\'] = min($_section'.$cnt.'[\'start\'], $_section'.$cnt.'[\'step\'] > 0 ? $_section'.$cnt.'[\'loop\'] : $_section'.$cnt.'[\'loop\'] -1); }'."\n"; + } + +/* if ($usesAny) { + $output .= "\n".'$this->globals["section"]['.$name.'] = array'."\n("; + if ($usesIndex) $output .="\n\t".'"index" => 0,'; + if ($usesIteration) $output .="\n\t".'"iteration" => 1,'; + if ($usesFirst) $output .="\n\t".'"first" => null,'; + if ($usesLast) $output .="\n\t".'"last" => null,'; + if ($usesShow) $output .="\n\t".'"show" => ($this->isArray($_for'.$cnt.'_from, true)) || (is_numeric($_for'.$cnt.'_from) && $_for'.$cnt.'_from != $_for'.$cnt.'_to),'; + if ($usesTotal) $output .="\n\t".'"total" => $this->isArray($_for'.$cnt.'_from) ? count($_for'.$cnt.'_from) - $_for'.$cnt.'_skip : (is_numeric($_for'.$cnt.'_from) ? abs(($_for'.$cnt.'_to + 1 - $_for'.$cnt.'_from)/$_for'.$cnt.'_step) : 0),'; + $out.="\n);\n".'$_section'.$cnt.'[\'glob\'] =& $this->globals["section"]['.$name.'];'."\n\n"; + } +*/ + + $output .= 'if ($_section'.$cnt.'[\'show\']) {'."\n"; + if ($start === 'null' && $step === 'null' && $max === 'null') { + $output .= ' $_section'.$cnt.'[\'total\'] = $_section'.$cnt.'[\'loop\'];'."\n"; + } else { + $output .= ' $_section'.$cnt.'[\'total\'] = min(ceil(($_section'.$cnt.'[\'step\'] > 0 ? $_section'.$cnt.'[\'loop\'] - $_section'.$cnt.'[\'start\'] : $_section'.$cnt.'[\'start\'] + 1) / abs($_section'.$cnt.'[\'step\'])), $_section'.$cnt.'[\'max\']);'."\n"; + } + $output .= ' if ($_section'.$cnt.'[\'total\'] == 0) {'."\n". + ' $_section'.$cnt.'[\'show\'] = false;'."\n". + ' }'."\n". + '} else {'."\n". + ' $_section'.$cnt.'[\'total\'] = 0;'."\n}\n"; + $output .= 'if ($_section'.$cnt.'[\'show\']) {'."\n"; + $output .= "\t".'for ($this->scope['.$name.'] = $_section'.$cnt.'[\'start\'], $_section'.$cnt.'[\'iteration\'] = 1; '. + '$_section'.$cnt.'[\'iteration\'] <= $_section'.$cnt.'[\'total\']; '. + '$this->scope['.$name.'] += $_section'.$cnt.'[\'step\'], $_section'.$cnt.'[\'iteration\']++) {'."\n"; + $output .= "\t\t".'$_section'.$cnt.'[\'rownum\'] = $_section'.$cnt.'[\'iteration\'];'."\n"; + $output .= "\t\t".'$_section'.$cnt.'[\'index_prev\'] = $this->scope['.$name.'] - $_section'.$cnt.'[\'step\'];'."\n"; + $output .= "\t\t".'$_section'.$cnt.'[\'index_next\'] = $this->scope['.$name.'] + $_section'.$cnt.'[\'step\'];'."\n"; + $output .= "\t\t".'$_section'.$cnt.'[\'first\'] = ($_section'.$cnt.'[\'iteration\'] == 1);'."\n"; + $output .= "\t\t".'$_section'.$cnt.'[\'last\'] = ($_section'.$cnt.'[\'iteration\'] == $_section'.$cnt.'[\'total\']);'."\n"; + + $output .= Dwoo_Compiler::PHP_CLOSE . $content . Dwoo_Compiler::PHP_OPEN; + + $output .= "\n\t}\n} " . Dwoo_Compiler::PHP_CLOSE; + + if (isset($params['hasElse'])) { + $output .= $params['hasElse']; + } + + return $output; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/smartyinterface.php b/system/libs/dwoo/plugins/builtin/blocks/smartyinterface.php new file mode 100644 index 00000000..d0e495d4 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/smartyinterface.php @@ -0,0 +1,59 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_smartyinterface extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init($__funcname, $__functype, array $rest=array()) {} + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $params = $compiler->getCompiledParams($params); + $func = $params['__funcname']; + $pluginType = $params['__functype']; + $params = $params['*']; + + if ($pluginType & Dwoo::CUSTOM_PLUGIN) { + $customPlugins = $compiler->getDwoo()->getCustomPlugins(); + $callback = $customPlugins[$func]['callback']; + if (is_array($callback)) { + if (is_object($callback[0])) { + $callback = '$this->customPlugins[\''.$func.'\'][0]->'.$callback[1].'('; + } else { + $callback = ''.$callback[0].'::'.$callback[1].'('; + } + } else { + $callback = $callback.'('; + } + } else { + $callback = 'smarty_block_'.$func.'('; + } + + $paramsOut = ''; + foreach ($params as $i=>$p) { + $paramsOut .= var_export($i, true).' => '.$p.','; + } + + $curBlock =& $compiler->getCurrentBlock(); + $curBlock['params']['postOut'] = Dwoo_Compiler::PHP_OPEN.' $_block_content = ob_get_clean(); $_block_repeat=false; echo '.$callback.'$_tag_stack[count($_tag_stack)-1], $_block_content, $this, $_block_repeat); } array_pop($_tag_stack);'.Dwoo_Compiler::PHP_CLOSE; + + return Dwoo_Compiler::PHP_OPEN.$prepend.' if (!isset($_tag_stack)){ $_tag_stack = array(); } $_tag_stack[] = array('.$paramsOut.'); $_block_repeat=true; '.$callback.'$_tag_stack[count($_tag_stack)-1], null, $this, $_block_repeat); while ($_block_repeat) { ob_start();'.Dwoo_Compiler::PHP_CLOSE; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + return $content . $params['postOut']; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/strip.php b/system/libs/dwoo/plugins/builtin/blocks/strip.php new file mode 100644 index 00000000..dc02933b --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/strip.php @@ -0,0 +1,50 @@ + + * * mode : sets the content being stripped, available mode are 'default' or 'js' + * for javascript, which strips the comments to prevent syntax errors + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Plugin_strip extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init($mode = "default") + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $params = $compiler->getCompiledParams($params); + + $mode = trim($params['mode'], '"\''); + switch ($mode) { + case 'js': + case 'javascript': + $content = preg_replace('#(? + * * name : template name + * * rest : list of arguments and optional default values + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.1.0 + * @date 2009-07-18 + * @package Dwoo + */ +class Dwoo_Plugin_template extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init($name, array $rest = array()) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $params = $compiler->getCompiledParams($params); + $parsedParams = array(); + if (!isset($params['*'])) + $params['*'] = array(); + foreach ($params['*'] as $param=>$defValue) { + if (is_numeric($param)) { + $param = $defValue; + $defValue = null; + } + $param = trim($param, '\'"'); + if (!preg_match('#^[a-z0-9_]+$#i', $param)) { + throw new Dwoo_Compilation_Exception($compiler, 'Function : parameter names must contain only A-Z, 0-9 or _'); + } + $parsedParams[$param] = $defValue; + } + $params['name'] = substr($params['name'], 1, -1); + $params['*'] = $parsedParams; + $params['uuid'] = uniqid(); + $compiler->addTemplatePlugin($params['name'], $parsedParams, $params['uuid']); + $currentBlock =& $compiler->getCurrentBlock(); + $currentBlock['params'] = $params; + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $paramstr = 'Dwoo $dwoo'; + $init = 'static $_callCnt = 0;'."\n". + '$dwoo->scope[\' '.$params['uuid'].'\'.$_callCnt] = array();'."\n". + '$_scope = $dwoo->setScope(array(\' '.$params['uuid'].'\'.($_callCnt++)));'."\n"; + $cleanup = '/* -- template end output */ $dwoo->setScope($_scope, true);'; + foreach ($params['*'] as $param=>$defValue) { + if ($defValue === null) { + $paramstr.=', $'.$param; + } else { + $paramstr.=', $'.$param.' = '.$defValue; + } + $init .= '$dwoo->scope[\''.$param.'\'] = $'.$param.";\n"; + } + $init .= '/* -- template start output */'; + + $funcName = 'Dwoo_Plugin_'.$params['name'].'_'.$params['uuid']; + + $search = array( + '$this->charset', + '$this->', + '$this,', + ); + $replacement = array( + '$dwoo->getCharset()', + '$dwoo->', + '$dwoo,', + ); + $content = str_replace($search, $replacement, $content); + + $body = 'if (!function_exists(\''.$funcName."')) {\nfunction ".$funcName.'('.$paramstr.') {'."\n$init".Dwoo_Compiler::PHP_CLOSE. + $prepend.$content.$append. + Dwoo_Compiler::PHP_OPEN.$cleanup."\n}\n}"; + $compiler->addTemplatePlugin($params['name'], $params['*'], $params['uuid'], $body); + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/textformat.php b/system/libs/dwoo/plugins/builtin/blocks/textformat.php new file mode 100644 index 00000000..fb0f4229 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/textformat.php @@ -0,0 +1,94 @@ + + * * wrap : maximum line length + * * wrap_char : the character(s) to use to break the line + * * wrap_cut : if true, the words that are longer than $wrap are cut instead of overflowing + * * indent : amount of $indent_char to insert before every line + * * indent_char : character(s) to insert before every line + * * indent_first : amount of additional $indent_char to insert before the first line of each paragraphs + * * style : some predefined formatting styles that set up every required variables, can be "email" or "html" + * * assign : if set, the formatted text is assigned to that variable instead of being output + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_textformat extends Dwoo_Block_Plugin +{ + protected $wrap; + protected $wrapChar; + protected $wrapCut; + protected $indent; + protected $indChar; + protected $indFirst; + protected $assign; + + public function init($wrap=80, $wrap_char="\r\n", $wrap_cut=false, $indent=0, $indent_char=" ", $indent_first=0, $style="", $assign="") + { + if ($indent_char === 'tab') { + $indent_char = "\t"; + } + + switch($style) { + + case 'email': + $wrap = 72; + $indent_first = 0; + break; + case 'html': + $wrap_char = '
    '; + $indent_char = $indent_char == "\t" ? '    ':' '; + break; + + } + + $this->wrap = (int) $wrap; + $this->wrapChar = (string) $wrap_char; + $this->wrapCut = (bool) $wrap_cut; + $this->indent = (int) $indent; + $this->indChar = (string) $indent_char; + $this->indFirst = (int) $indent_first + $this->indent; + $this->assign = (string) $assign; + } + + public function process() + { + // gets paragraphs + $pgs = explode("\n", str_replace(array("\r\n", "\r"), "\n", $this->buffer)); + + while (list($i,) = each($pgs)) { + if (empty($pgs[$i])) { + continue; + } + + // removes line breaks and extensive white space + $pgs[$i] = preg_replace(array('#\s+#', '#^\s*(.+?)\s*$#m'), array(' ', '$1'), str_replace("\n", '', $pgs[$i])); + + // wordwraps + indents lines + $pgs[$i] = str_repeat($this->indChar, $this->indFirst) . + wordwrap( + $pgs[$i], + max($this->wrap - $this->indent, 1), + $this->wrapChar . str_repeat($this->indChar, $this->indent), + $this->wrapCut + ); + } + + if ($this->assign !== '') { + $this->dwoo->assignInScope(implode($this->wrapChar . $this->wrapChar, $pgs), $this->assign); + } else { + return implode($this->wrapChar . $this->wrapChar, $pgs); + } + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/topLevelBlock.php b/system/libs/dwoo/plugins/builtin/blocks/topLevelBlock.php new file mode 100644 index 00000000..95e55767 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/topLevelBlock.php @@ -0,0 +1,32 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +final class Dwoo_Plugin_topLevelBlock extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init() + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return '/* end template head */ ob_start(); /* template body */ '.Dwoo_Compiler::PHP_CLOSE; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + return $content . Dwoo_Compiler::PHP_OPEN.' /* end template body */'."\n".'return $this->buffer . ob_get_clean();'; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/with.php b/system/libs/dwoo/plugins/builtin/blocks/with.php new file mode 100644 index 00000000..8bd46dfc --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/with.php @@ -0,0 +1,76 @@ + + * * var : the variable name to move into + * + * Example : + * + * instead of the following : + * + * + * {if $long.boring.prefix} + * {$long.boring.prefix.val} - {$long.boring.prefix.secondVal} - {$long.boring.prefix.thirdVal} + * {/if} + * + * + * you can use : + * + * + * {with $long.boring.prefix} + * {$val} - {$secondVal} - {$thirdVal} + * {/with} + * + * + * 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. + * + * @author Jordi Boggiano + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_with extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block, Dwoo_IElseable +{ + protected static $cnt=0; + + public function init($var) + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + $rparams = $compiler->getRealParams($params); + $cparams = $compiler->getCompiledParams($params); + + $compiler->setScope($rparams['var']); + + + $pre = Dwoo_Compiler::PHP_OPEN. 'if ('.$cparams['var'].')'."\n{\n". + '$_with'.(self::$cnt).' = $this->setScope("'.$rparams['var'].'");'. + "\n/* -- start with output */\n".Dwoo_Compiler::PHP_CLOSE; + + $post = Dwoo_Compiler::PHP_OPEN. "\n/* -- end with output */\n". + '$this->setScope($_with'.(self::$cnt++).', true);'. + "\n}\n".Dwoo_Compiler::PHP_CLOSE; + + if (isset($params['hasElse'])) { + $post .= $params['hasElse']; + } + + return $pre . $content . $post; + } +} diff --git a/system/libs/dwoo/plugins/builtin/blocks/withelse.php b/system/libs/dwoo/plugins/builtin/blocks/withelse.php new file mode 100644 index 00000000..deffe574 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/blocks/withelse.php @@ -0,0 +1,43 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Plugin_withelse extends Dwoo_Block_Plugin implements Dwoo_ICompilable_Block +{ + public function init() + { + } + + public static function preProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $type) + { + $with =& $compiler->findBlock('with', true); + + $params['initialized'] = true; + $compiler->injectBlock($type, $params); + + return ''; + } + + public static function postProcessing(Dwoo_Compiler $compiler, array $params, $prepend, $append, $content) + { + if (!isset($params['initialized'])) { + return ''; + } + + $block =& $compiler->getCurrentBlock(); + $block['params']['hasElse'] = Dwoo_Compiler::PHP_OPEN."else {\n".Dwoo_Compiler::PHP_CLOSE . $content . Dwoo_Compiler::PHP_OPEN."\n}".Dwoo_Compiler::PHP_CLOSE; + return ''; + } +} diff --git a/system/libs/dwoo/plugins/builtin/filters/html_format.php b/system/libs/dwoo/plugins/builtin/filters/html_format.php new file mode 100644 index 00000000..18970f48 --- /dev/null +++ b/system/libs/dwoo/plugins/builtin/filters/html_format.php @@ -0,0 +1,175 @@ + + * @copyright Copyright (c) 2008, Jordi Boggiano + * @license http://dwoo.org/LICENSE Modified BSD License + * @link http://dwoo.org/ + * @version 1.0.0 + * @date 2008-10-23 + * @package Dwoo + */ +class Dwoo_Filter_html_format extends Dwoo_Filter +{ + /** + * tab count to auto-indent the source + * + * @var int + */ + protected static $tabCount = -1; + + /** + * stores the additional data (following a tag) of the last call to open/close/singleTag + * + * @var string + */ + protected static $lastCallAdd = ''; + + /** + * formats the input using the singleTag/closeTag/openTag functions + * + * It is auto indenting the whole code, excluding + + + +
    Test will include two attachments.
    + + +
    +
    + Mail Test Specs + + + + + +
    Test Type +
    + + + required> +
    +
    + + + required> +
    +
    + + + required> +
    +
    + + + required> +
    +
    +
    "> + SMTP Specific Options: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + + value=""> +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    + +
    + + + + diff --git a/system/libs/phpmailer/examples/contactform.phps b/system/libs/phpmailer/examples/contactform.phps new file mode 100644 index 00000000..d85e2045 --- /dev/null +++ b/system/libs/phpmailer/examples/contactform.phps @@ -0,0 +1,71 @@ +isSMTP(); + $mail->Host = 'localhost'; + $mail->Port = 25; + + //Use a fixed address in your own domain as the from address + //**DO NOT** use the submitter's address here as it will be forgery + //and will cause your messages to fail SPF checks + $mail->setFrom('from@example.com', 'First Last'); + //Send the message to yourself, or whoever should receive contact for submissions + $mail->addAddress('whoto@example.com', 'John Doe'); + //Put the submitter's address in a reply-to header + //This will fail if the address provided is invalid, + //in which case we should ignore the whole request + if ($mail->addReplyTo($_POST['email'], $_POST['name'])) { + $mail->Subject = 'PHPMailer contact form'; + //Keep it simple - don't use HTML + $mail->isHTML(false); + //Build a simple message body + $mail->Body = <<send()) { + //The reason for failing to send will be in $mail->ErrorInfo + //but you shouldn't display errors to users - process the error, log it on your server. + $msg = 'Sorry, something went wrong. Please try again later.'; + } else { + $msg = 'Message sent! Thanks for contacting us.'; + } + } else { + $msg = 'Invalid email address, message ignored.'; + } +} +?> + + + + + Contact form + + +

    Contact us

    +$msg"; +} ?> +
    +
    +
    +
    + +
    + + diff --git a/system/libs/phpmailer/examples/contents.html b/system/libs/phpmailer/examples/contents.html new file mode 100644 index 00000000..dc3fc667 --- /dev/null +++ b/system/libs/phpmailer/examples/contents.html @@ -0,0 +1,17 @@ + + + + + PHPMailer Test + + +
    +

    This is a test of PHPMailer.

    +
    + PHPMailer rocks +
    +

    This example uses HTML.

    +

    ISO-8859-1 text: éèîüçÅñæß

    +
    + + diff --git a/system/libs/phpmailer/examples/contentsutf8.html b/system/libs/phpmailer/examples/contentsutf8.html new file mode 100644 index 00000000..035d10c8 --- /dev/null +++ b/system/libs/phpmailer/examples/contentsutf8.html @@ -0,0 +1,21 @@ + + + + + PHPMailer Test + + +
    +

    This is a test of PHPMailer.

    +
    + PHPMailer rocks +
    +

    This example uses HTML.

    +

    Chinese text: 郵件內容為空

    +

    Russian text: ПуÑтое тело ÑообщениÑ

    +

    Armenian text: Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¤Õ¡Õ¿Õ¡Ö€Õ¯ Õ§

    +

    Czech text: Prázdné tělo zprávy

    +

    Emoji: 😂 🦄 💥 📤 📧

    +
    + + diff --git a/system/libs/phpmailer/examples/exceptions.phps b/system/libs/phpmailer/examples/exceptions.phps new file mode 100644 index 00000000..0e941e73 --- /dev/null +++ b/system/libs/phpmailer/examples/exceptions.phps @@ -0,0 +1,35 @@ +setFrom('from@example.com', 'First Last'); + //Set an alternative reply-to address + $mail->addReplyTo('replyto@example.com', 'First Last'); + //Set who the message is to be sent to + $mail->addAddress('whoto@example.com', 'John Doe'); + //Set the subject line + $mail->Subject = 'PHPMailer Exceptions test'; + //Read an HTML message body from an external file, convert referenced images to embedded, + //and convert the HTML into a basic plain-text alternative body + $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + //Replace the plain text body with one created manually + $mail->AltBody = 'This is a plain-text message body'; + //Attach an image file + $mail->addAttachment('images/phpmailer_mini.png'); + //send the message + //Note that we don't need check the response from this because it will throw an exception if it has trouble + $mail->send(); + echo "Message sent!"; +} catch (phpmailerException $e) { + echo $e->errorMessage(); //Pretty error messages from PHPMailer +} catch (Exception $e) { + echo $e->getMessage(); //Boring error messages from anything else! +} diff --git a/system/libs/phpmailer/examples/gmail.phps b/system/libs/phpmailer/examples/gmail.phps new file mode 100644 index 00000000..b3cc02d5 --- /dev/null +++ b/system/libs/phpmailer/examples/gmail.phps @@ -0,0 +1,75 @@ +isSMTP(); + +//Enable SMTP debugging +// 0 = off (for production use) +// 1 = client messages +// 2 = client and server messages +$mail->SMTPDebug = 2; + +//Ask for HTML-friendly debug output +$mail->Debugoutput = 'html'; + +//Set the hostname of the mail server +$mail->Host = 'smtp.gmail.com'; +// use +// $mail->Host = gethostbyname('smtp.gmail.com'); +// if your network does not support SMTP over IPv6 + +//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission +$mail->Port = 587; + +//Set the encryption system to use - ssl (deprecated) or tls +$mail->SMTPSecure = 'tls'; + +//Whether to use SMTP authentication +$mail->SMTPAuth = true; + +//Username to use for SMTP authentication - use full email address for gmail +$mail->Username = "username@gmail.com"; + +//Password to use for SMTP authentication +$mail->Password = "yourpassword"; + +//Set who the message is to be sent from +$mail->setFrom('from@example.com', 'First Last'); + +//Set an alternative reply-to address +$mail->addReplyTo('replyto@example.com', 'First Last'); + +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); + +//Set the subject line +$mail->Subject = 'PHPMailer GMail SMTP test'; + +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; + +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/system/libs/phpmailer/examples/gmail_xoauth.phps b/system/libs/phpmailer/examples/gmail_xoauth.phps new file mode 100644 index 00000000..d64483a4 --- /dev/null +++ b/system/libs/phpmailer/examples/gmail_xoauth.phps @@ -0,0 +1,85 @@ +isSMTP(); + +//Enable SMTP debugging +// 0 = off (for production use) +// 1 = client messages +// 2 = client and server messages +$mail->SMTPDebug = 0; + +//Ask for HTML-friendly debug output +$mail->Debugoutput = 'html'; + +//Set the hostname of the mail server +$mail->Host = 'smtp.gmail.com'; + +//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission +$mail->Port = 587; + +//Set the encryption system to use - ssl (deprecated) or tls +$mail->SMTPSecure = 'tls'; + +//Whether to use SMTP authentication +$mail->SMTPAuth = true; + +//Set AuthType +$mail->AuthType = 'XOAUTH2'; + +//User Email to use for SMTP authentication - Use the same Email used in Google Developer Console +$mail->oauthUserEmail = "someone@gmail.com"; + +//Obtained From Google Developer Console +$mail->oauthClientId = "RANDOMCHARS-----duv1n2.apps.googleusercontent.com"; + +//Obtained From Google Developer Console +$mail->oauthClientSecret = "RANDOMCHARS-----lGyjPcRtvP"; + +//Obtained By running get_oauth_token.php after setting up APP in Google Developer Console. +//Set Redirect URI in Developer Console as [https/http]:////get_oauth_token.php +// eg: http://localhost/phpmail/get_oauth_token.php +$mail->oauthRefreshToken = "RANDOMCHARS-----DWxgOvPT003r-yFUV49TQYag7_Aod7y0"; + +//Set who the message is to be sent from +//For gmail, this generally needs to be the same as the user you logged in as +$mail->setFrom('from@example.com', 'First Last'); + +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); + +//Set the subject line +$mail->Subject = 'PHPMailer GMail SMTP test'; + +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; + +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/system/libs/phpmailer/examples/images/phpmailer.png b/system/libs/phpmailer/examples/images/phpmailer.png new file mode 100644 index 0000000000000000000000000000000000000000..9bdd83c8ded93d00b1e05abcfe1d6cb5b2ae96ef GIT binary patch literal 5831 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 RgdfyIhIdW$>U5l={s-zotz7^B literal 0 HcmV?d00001 diff --git a/system/libs/phpmailer/examples/images/phpmailer_mini.png b/system/libs/phpmailer/examples/images/phpmailer_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..e6915f4317692a2591ef8c96ef74c50ea42a6fba GIT binary patch literal 1842 zcmV-22hI42P)cS z;&&eArFvNZrNTx8&q9F_J$UfI*49=(Ti!Qre+`?5s;4?sCM5$wU@&NWeB92?PCr{_ zqSMw;@*%0($^*qB(m{j=BkJz%wlJixH1->VNhVX(7ay~-B2 zwY9a(GT)!}^m4J`HFtBgo^6lOPqq0lIW5kK*IX*LY$!P<2pCjXSI06L85v;~s4wmT(7E?RPes7OO8NtDdii%h! z{r&wcFwPX`%IgXXZ}X*q-+qpER$22FIHr~_b;lDwf`dJJ^oV6rQBlDKW2FljYF*Q} zuB~mj-;tGGvh)cLcIworcO0EOdD0*l(vP{`7Dg*JM7cIVHY>t|VRWsouCmI%e*Idh zR2l<@^wR~y8$amlC$;nCVvknA?)Lj*7ErAt}3cqzHk8tJyGgWB7u&^*VIVczs_7Ju*_MGuU zwwED8;lV&fI-zM`NMlW!qYBCX+*niOi_DJC>RB!U=)mkQ7{Td!6+C7qhOx{7+&2x`M1bJkHQ7-=P<+qZ9bb#)m8tFEs8Cr&CldT(zJA$|b6b?esR;v&LPnGVa!%2;6B zSVvwk6f+wb8ew8$;y_^NY&$zUa6-VYUcHJVLh_YFB7uJ|FE0WH!O7Cn(wjGL9zTAZ zkdS~f5fKr+y}e8@IJ|c48jeoa*4A*BRVo!STU%Sx)6?_v@?dBR7(Dj%^${>c0|zoR zH8sTxM#4UDT1&w25ik15SI3VZ2Z>B3BVcF&yfeo^A&G(^@jP*Haq!FpD<~+y4i+(K z@Y&JPar5R)WDX1rAm{>tyZ-+E#)6^eU}U3WoD8k3te{E)_UzfSCk$cu?Sp|ICJhm=f7Nx`5cU}&*}bw&JQ zJiOpydV2co*|VtCU{}QX7)+oSFJ82?v>^PM35NTM4hd}dw70iswpd9?3A#GM%+OrO zDt^>vfLNLS>@_%TMr1Vd|}HzJ60aBvVG_rWmVq8E^8TZKZQ3k=w3 zG4~I0c6R<$z#ugK)2B}{N||6-QF?lMkh2elHspfgFU$WY1cok+^$k-66AaxF{i?aS z`Ocj?=xnIEsi}zzhH;Bx=&@M1F>~Nw9!vq#Xf&vpn~!h++*H;U0W&XIQq^iT*TmJ; z)!W;fH!c;CFJv;ra)+HtKtKRKVlhB1fF~OoM@Pr~TZ~(PVwlY0 + + + + PHPMailer Examples + + +

    PHPMailer code examplesPHPMailer logo

    +

    This folder contains a collection of examples of using PHPMailer.

    +

    About testing email sending

    +

    When working on email sending code you'll find yourself worrying about what might happen if all these test emails got sent to your mailing list. The solution is to use a fake mail server, one that acts just like the real thing, but just doesn't actually send anything out. Some offer web interfaces, feedback, logging, the ability to return specific error codes, all things that are useful for testing error handling, authentication etc. Here's a selection of mail testing tools you might like to try:

    +
      +
    • FakeSMTP, a Java desktop app with the ability to show an SMTP log and save messages to a folder.
    • +
    • FakeEmail, a Python-based fake mail server with a web interface.
    • +
    • smtp-sink, part of the Postfix mail server, so you probably already have this installed. This is used in the Travis-CI configuration to run PHPMailer's unit tests.
    • +
    • smtp4dev, a dummy SMTP server for Windows.
    • +
    • fakesendmail.sh, part of PHPMailer's test setup, this is a shell script that emulates sendmail for testing 'mail' or 'sendmail' methods in PHPMailer.
    • +
    • msglint, not a mail server, the IETF's MIME structure analyser checks the formatting of your messages.
    • +
    +
    +

    Security note

    +

    Before running these examples you'll need to rename them with '.php' extensions. They are supplied as '.phps' files which will usually be displayed with syntax highlighting by PHP instead of running them. This prevents potential security issues with running potential spam-gateway code if you happen to deploy these code examples on a live site - please don't do that! Similarly, don't leave your passwords in these files as they will be visible to the world!

    +
    +

    code_generator.phps

    +

    This script is a simple code generator - fill in the form and hit submit, and it will use when you entered to email you a message, and will also generate PHP code using your settings that you can copy and paste to use in your own apps. If you need to get going quickly, this is probably the best place to start.

    +

    mail.phps

    +

    This script is a basic example which creates an email message from an external HTML file, creates a plain text body, sets various addresses, adds an attachment and sends the message. It uses PHP's built-in mail() function which is the simplest to use, but relies on the presence of a local mail server, something which is not usually available on Windows. If you find yourself in that situation, either install a local mail server, or use a remote one and send using SMTP instead.

    +

    exceptions.phps

    +

    The same as the mail example, but shows how to use PHPMailer's optional exceptions for error handling.

    +

    smtp.phps

    +

    A simple example sending using SMTP with authentication.

    +

    smtp_no_auth.phps

    +

    A simple example sending using SMTP without authentication.

    +

    sendmail.phps

    +

    A simple example using sendmail. Sendmail is a program (usually found on Linux/BSD, OS X and other UNIX-alikes) that can be used to submit messages to a local mail server without a lengthy SMTP conversation. It's probably the fastest sending mechanism, but lacks some error reporting features. There are sendmail emulators for most popular mail servers including postfix, qmail, exim etc.

    +

    gmail.phps

    +

    Submitting email via Google's Gmail service is a popular use of PHPMailer. It's much the same as normal SMTP sending, just with some specific settings, namely using TLS encryption, authentication is enabled, and it connects to the SMTP submission port 587 on the smtp.gmail.com host. This example does all that.

    +

    pop_before_smtp.phps

    +

    Before effective SMTP authentication mechanisms were available, it was common for ISPs to use POP-before-SMTP authentication. As it implies, you authenticate using the POP3 protocol (an older protocol now mostly replaced by the far superior IMAP), and then the SMTP server will allow send access from your IP address for a short while, usually 5-15 minutes. PHPMailer includes a POP3 protocol client, so it can carry out this sequence - it's just like a normal SMTP conversation (without authentication), but connects via POP first.

    +

    mailing_list.phps

    +

    This is a somewhat naïve example of sending similar emails to a list of different addresses. It sets up a PHPMailer instance using SMTP, then connects to a MySQL database to retrieve a list of recipients. The code loops over this list, sending email to each person using their info and marks them as sent in the database. It makes use of SMTP keepalive which saves reconnecting and re-authenticating between each message.

    +
    +

    smtp_check.phps

    +

    This is an example showing how to use the SMTP class by itself (without PHPMailer) to check an SMTP connection.

    +
    +

    Most of these examples use the 'example.com' domain. This domain is reserved by IANA for illustrative purposes, as documented in RFC 2606. Don't use made-up domains like 'mydomain.com' or 'somedomain.com' in examples as someone, somewhere, probably owns them!

    + + diff --git a/system/libs/phpmailer/examples/mail.phps b/system/libs/phpmailer/examples/mail.phps new file mode 100644 index 00000000..8e129f47 --- /dev/null +++ b/system/libs/phpmailer/examples/mail.phps @@ -0,0 +1,31 @@ +setFrom('from@example.com', 'First Last'); +//Set an alternative reply-to address +$mail->addReplyTo('replyto@example.com', 'First Last'); +//Set who the message is to be sent to +$mail->addAddress('whoto@example.com', 'John Doe'); +//Set the subject line +$mail->Subject = 'PHPMailer mail() test'; +//Read an HTML message body from an external file, convert referenced images to embedded, +//convert HTML into a basic plain-text alternative body +$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); +//Replace the plain text body with one created manually +$mail->AltBody = 'This is a plain-text message body'; +//Attach an image file +$mail->addAttachment('images/phpmailer_mini.png'); + +//send the message, check for errors +if (!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; +} else { + echo "Message sent!"; +} diff --git a/system/libs/phpmailer/examples/mailing_list.phps b/system/libs/phpmailer/examples/mailing_list.phps new file mode 100644 index 00000000..8644bb59 --- /dev/null +++ b/system/libs/phpmailer/examples/mailing_list.phps @@ -0,0 +1,59 @@ +isSMTP(); +$mail->Host = 'smtp.example.com'; +$mail->SMTPAuth = true; +$mail->SMTPKeepAlive = true; // SMTP connection will not close after each email sent, reduces SMTP overhead +$mail->Port = 25; +$mail->Username = 'yourname@example.com'; +$mail->Password = 'yourpassword'; +$mail->setFrom('list@example.com', 'List manager'); +$mail->addReplyTo('list@example.com', 'List manager'); + +$mail->Subject = "PHPMailer Simple database mailing list test"; + +//Same body for all messages, so set this before the sending loop +//If you generate a different body for each recipient (e.g. you're using a templating system), +//set it inside the loop +$mail->msgHTML($body); +//msgHTML also sets AltBody, but if you want a custom one, set it afterwards +$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; + +//Connect to the database and select the recipients from your mailing list that have not yet been sent to +//You'll need to alter this to match your database +$mysql = mysqli_connect('localhost', 'username', 'password'); +mysqli_select_db($mysql, 'mydb'); +$result = mysqli_query($mysql, 'SELECT full_name, email, photo FROM mailinglist WHERE sent = false'); + +foreach ($result as $row) { //This iterator syntax only works in PHP 5.4+ + $mail->addAddress($row['email'], $row['full_name']); + if (!empty($row['photo'])) { + $mail->addStringAttachment($row['photo'], 'YourPhoto.jpg'); //Assumes the image data is stored in the DB + } + + if (!$mail->send()) { + echo "Mailer Error (" . str_replace("@", "@", $row["email"]) . ') ' . $mail->ErrorInfo . '
    '; + break; //Abandon sending + } else { + echo "Message sent to :" . $row['full_name'] . ' (' . str_replace("@", "@", $row['email']) . ')
    '; + //Mark it as sent in the DB + mysqli_query( + $mysql, + "UPDATE mailinglist SET sent = true WHERE email = '" . + mysqli_real_escape_string($mysql, $row['email']) . "'" + ); + } + // Clear all addresses and attachments for next loop + $mail->clearAddresses(); + $mail->clearAttachments(); +} diff --git a/system/libs/phpmailer/examples/pop_before_smtp.phps b/system/libs/phpmailer/examples/pop_before_smtp.phps new file mode 100644 index 00000000..164dfe8d --- /dev/null +++ b/system/libs/phpmailer/examples/pop_before_smtp.phps @@ -0,0 +1,54 @@ +isSMTP(); + //Enable SMTP debugging + // 0 = off (for production use) + // 1 = client messages + // 2 = client and server messages + $mail->SMTPDebug = 2; + //Ask for HTML-friendly debug output + $mail->Debugoutput = 'html'; + //Set the hostname of the mail server + $mail->Host = "mail.example.com"; + //Set the SMTP port number - likely to be 25, 465 or 587 + $mail->Port = 25; + //Whether to use SMTP authentication + $mail->SMTPAuth = false; + //Set who the message is to be sent from + $mail->setFrom('from@example.com', 'First Last'); + //Set an alternative reply-to address + $mail->addReplyTo('replyto@example.com', 'First Last'); + //Set who the message is to be sent to + $mail->addAddress('whoto@example.com', 'John Doe'); + //Set the subject line + $mail->Subject = 'PHPMailer POP-before-SMTP test'; + //Read an HTML message body from an external file, convert referenced images to embedded, + //and convert the HTML into a basic plain-text alternative body + $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); + //Replace the plain text body with one created manually + $mail->AltBody = 'This is a plain-text message body'; + //Attach an image file + $mail->addAttachment('images/phpmailer_mini.png'); + //send the message + //Note that we don't need check the response from this because it will throw an exception if it has trouble + $mail->send(); + echo "Message sent!"; +} catch (phpmailerException $e) { + echo $e->errorMessage(); //Pretty error messages from PHPMailer +} catch (Exception $e) { + echo $e->getMessage(); //Boring error messages from anything else! +} diff --git a/system/libs/phpmailer/examples/scripts/XRegExp.js b/system/libs/phpmailer/examples/scripts/XRegExp.js new file mode 100644 index 00000000..feb66798 --- /dev/null +++ b/system/libs/phpmailer/examples/scripts/XRegExp.js @@ -0,0 +1,664 @@ +// XRegExp 1.5.1 +// (c) 2007-2012 Steven Levithan +// MIT License +// +// Provides an augmented, extensible, cross-browser implementation of regular expressions, +// including support for additional syntax, flags, and methods + +var XRegExp; + +if (XRegExp) { + // Avoid running twice, since that would break references to native globals + throw Error("can't load XRegExp twice in the same frame"); +} + +// Run within an anonymous function to protect variables and avoid new globals +(function (undefined) { + + //--------------------------------- + // Constructor + //--------------------------------- + + // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native + // regular expression in that additional syntax and flags are supported and cross-browser + // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and + // converts to type XRegExp + XRegExp = function (pattern, flags) { + var output = [], + currScope = XRegExp.OUTSIDE_CLASS, + pos = 0, + context, tokenResult, match, chr, regex; + + if (XRegExp.isRegExp(pattern)) { + if (flags !== undefined) + throw TypeError("can't supply flags when constructing one RegExp from another"); + return clone(pattern); + } + // Tokens become part of the regex construction process, so protect against infinite + // recursion when an XRegExp is constructed within a token handler or trigger + if (isInsideConstructor) + throw Error("can't call the XRegExp constructor within token definition functions"); + + flags = flags || ""; + context = { // `this` object for custom tokens + hasNamedCapture: false, + captureNames: [], + hasFlag: function (flag) {return flags.indexOf(flag) > -1;}, + setFlag: function (flag) {flags += flag;} + }; + + while (pos < pattern.length) { + // Check for custom tokens at the current position + tokenResult = runTokens(pattern, pos, currScope, context); + + if (tokenResult) { + output.push(tokenResult.output); + pos += (tokenResult.match[0].length || 1); + } else { + // Check for native multicharacter metasequences (excluding character classes) at + // the current position + if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) { + output.push(match[0]); + pos += match[0].length; + } else { + chr = pattern.charAt(pos); + if (chr === "[") + currScope = XRegExp.INSIDE_CLASS; + else if (chr === "]") + currScope = XRegExp.OUTSIDE_CLASS; + // Advance position one character + output.push(chr); + pos++; + } + } + } + + regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, "")); + regex._xregexp = { + source: pattern, + captureNames: context.hasNamedCapture ? context.captureNames : null + }; + return regex; + }; + + + //--------------------------------- + // Public properties + //--------------------------------- + + XRegExp.version = "1.5.1"; + + // Token scope bitflags + XRegExp.INSIDE_CLASS = 1; + XRegExp.OUTSIDE_CLASS = 2; + + + //--------------------------------- + // Private variables + //--------------------------------- + + var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g, + flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags + quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/, + isInsideConstructor = false, + tokens = [], + // Copy native globals for reference ("native" is an ES3 reserved keyword) + nativ = { + exec: RegExp.prototype.exec, + test: RegExp.prototype.test, + match: String.prototype.match, + replace: String.prototype.replace, + split: String.prototype.split + }, + compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups + compliantLastIndexIncrement = function () { + var x = /^/g; + nativ.test.call(x, ""); + return !x.lastIndex; + }(), + hasNativeY = RegExp.prototype.sticky !== undefined, + nativeTokens = {}; + + // `nativeTokens` match native multicharacter metasequences only (including deprecated octals, + // excluding character classes) + nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/; + nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/; + + + //--------------------------------- + // Public methods + //--------------------------------- + + // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by + // the XRegExp library and can be used to create XRegExp plugins. This function is intended for + // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can + // be disabled by `XRegExp.freezeTokens` + XRegExp.addToken = function (regex, handler, scope, trigger) { + tokens.push({ + pattern: clone(regex, "g" + (hasNativeY ? "y" : "")), + handler: handler, + scope: scope || XRegExp.OUTSIDE_CLASS, + trigger: trigger || null + }); + }; + + // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag + // combination has previously been cached, the cached copy is returned; otherwise the newly + // created regex is cached + XRegExp.cache = function (pattern, flags) { + var key = pattern + "/" + (flags || ""); + return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags)); + }; + + // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh + // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global` + // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve + // special properties required for named capture + XRegExp.copyAsGlobal = function (regex) { + return clone(regex, "g"); + }; + + // Accepts a string; returns the string with regex metacharacters escaped. The returned string + // can safely be used at any point within a regex to match the provided literal string. Escaped + // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace + XRegExp.escape = function (str) { + return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + + // Accepts a string to search, regex to search with, position to start the search within the + // string (default: 0), and an optional Boolean indicating whether matches must start at-or- + // after the position or at the specified position only. This function ignores the `lastIndex` + // of the provided regex in its own handling, but updates the property for compatibility + XRegExp.execAt = function (str, regex, pos, anchored) { + var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")), + match; + r2.lastIndex = pos = pos || 0; + match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (anchored && match && match.index !== pos) + match = null; + if (regex.global) + regex.lastIndex = match ? r2.lastIndex : 0; + return match; + }; + + // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing + // syntax and flag changes. Should be run after XRegExp and any plugins are loaded + XRegExp.freezeTokens = function () { + XRegExp.addToken = function () { + throw Error("can't run addToken after freezeTokens"); + }; + }; + + // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object. + // Note that this is also `true` for regex literals and regexes created by the `XRegExp` + // constructor. This works correctly for variables created in another frame, when `instanceof` + // and `constructor` checks would fail to work as intended + XRegExp.isRegExp = function (o) { + return Object.prototype.toString.call(o) === "[object RegExp]"; + }; + + // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to + // iterate over regex matches compared to the traditional approaches of subverting + // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop + XRegExp.iterate = function (str, regex, callback, context) { + var r2 = clone(regex, "g"), + i = -1, match; + while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (regex.global) + regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback` + callback.call(context, match, ++i, str, regex); + if (r2.lastIndex === match.index) + r2.lastIndex++; + } + if (regex.global) + regex.lastIndex = 0; + }; + + // Accepts a string and an array of regexes; returns the result of using each successive regex + // to search within the matches of the previous regex. The array of regexes can also contain + // objects with `regex` and `backref` properties, in which case the named or numbered back- + // references specified are passed forward to the next regex or returned. E.g.: + // var xregexpImgFileNames = XRegExp.matchChain(html, [ + // {regex: /]+)>/i, backref: 1}, // tag attributes + // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values + // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths + // /[^\/]+$/ // filenames (strip directory paths) + // ]); + XRegExp.matchChain = function (str, chain) { + return function recurseChain (values, level) { + var item = chain[level].regex ? chain[level] : {regex: chain[level]}, + regex = clone(item.regex, "g"), + matches = [], i; + for (i = 0; i < values.length; i++) { + XRegExp.iterate(values[i], regex, function (match) { + matches.push(item.backref ? (match[item.backref] || "") : match[0]); + }); + } + return ((level === chain.length - 1) || !matches.length) ? + matches : recurseChain(matches, level + 1); + }([str], 0); + }; + + + //--------------------------------- + // New RegExp prototype methods + //--------------------------------- + + // Accepts a context object and arguments array; returns the result of calling `exec` with the + // first value in the arguments array. the context is ignored but is accepted for congruity + // with `Function.prototype.apply` + RegExp.prototype.apply = function (context, args) { + return this.exec(args[0]); + }; + + // Accepts a context object and string; returns the result of calling `exec` with the provided + // string. the context is ignored but is accepted for congruity with `Function.prototype.call` + RegExp.prototype.call = function (context, str) { + return this.exec(str); + }; + + + //--------------------------------- + // Overridden native methods + //--------------------------------- + + // Adds named capture support (with backreferences returned as `result.name`), and fixes two + // cross-browser issues per ES3: + // - Captured values for nonparticipating capturing groups should be returned as `undefined`, + // rather than the empty string. + // - `lastIndex` should not be incremented after zero-length matches. + RegExp.prototype.exec = function (str) { + var match, name, r2, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.apply(this, arguments); + if (match) { + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { + r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", "")); + // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed + // matching due to characters outside the match + nativ.replace.call((str + "").slice(match.index), r2, function () { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) + match[i] = undefined; + } + }); + } + // Attach named capture properties + if (this._xregexp && this._xregexp.captureNames) { + for (var i = 1; i < match.length; i++) { + name = this._xregexp.captureNames[i - 1]; + if (name) + match[name] = match[i]; + } + } + // Fix browsers that increment `lastIndex` after zero-length matches + if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + } + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return match; + }; + + // Fix browser bugs in native method + RegExp.prototype.test = function (str) { + // Use the native `exec` to skip some processing overhead, even though the altered + // `exec` would take care of the `lastIndex` fixes + var match, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.call(this, str); + // Fix browsers that increment `lastIndex` after zero-length matches + if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return !!match; + }; + + // Adds named capture support and fixes browser bugs in native method + String.prototype.match = function (regex) { + if (!XRegExp.isRegExp(regex)) + regex = RegExp(regex); // Native `RegExp` + if (regex.global) { + var result = nativ.match.apply(this, arguments); + regex.lastIndex = 0; // Fix IE bug + return result; + } + return regex.exec(this); // Run the altered `exec` + }; + + // Adds support for `${n}` tokens for named and numbered backreferences in replacement text, + // and provides named backreferences to replacement functions as `arguments[0].name`. Also + // fixes cross-browser differences in replacement text syntax when performing a replacement + // using a nonregex search value, and the value of replacement regexes' `lastIndex` property + // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary + // third (`flags`) parameter + String.prototype.replace = function (search, replacement) { + var isRegex = XRegExp.isRegExp(search), + captureNames, result, str, origLastIndex; + + // There are too many combinations of search/replacement types/values and browser bugs that + // preclude passing to native `replace`, so don't try + //if (...) + // return nativ.replace.apply(this, arguments); + + if (isRegex) { + if (search._xregexp) + captureNames = search._xregexp.captureNames; // Array or `null` + if (!search.global) + origLastIndex = search.lastIndex; + } else { + search = search + ""; // Type conversion + } + + if (Object.prototype.toString.call(replacement) === "[object Function]") { + result = nativ.replace.call(this + "", search, function () { + if (captureNames) { + // Change the `arguments[0]` string primitive to a String object which can store properties + arguments[0] = new String(arguments[0]); + // Store named backreferences on `arguments[0]` + for (var i = 0; i < captureNames.length; i++) { + if (captureNames[i]) + arguments[0][captureNames[i]] = arguments[i + 1]; + } + } + // Update `lastIndex` before calling `replacement` (fix browsers) + if (isRegex && search.global) + search.lastIndex = arguments[arguments.length - 2] + arguments[0].length; + return replacement.apply(null, arguments); + }); + } else { + str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`) + result = nativ.replace.call(str, search, function () { + var args = arguments; // Keep this function's `arguments` available through closure + return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) { + // Numbered backreference (without delimiters) or special variable + if ($1) { + switch ($1) { + case "$": return "$"; + case "&": return args[0]; + case "`": return args[args.length - 1].slice(0, args[args.length - 2]); + case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length); + // Numbered backreference + default: + // What does "$10" mean? + // - Backreference 10, if 10 or more capturing groups exist + // - Backreference 1 followed by "0", if 1-9 capturing groups exist + // - Otherwise, it's the string "$10" + // Also note: + // - Backreferences cannot be more than two digits (enforced by `replacementToken`) + // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01" + // - There is no "$0" token ("$&" is the entire match) + var literalNumbers = ""; + $1 = +$1; // Type conversion; drop leading zero + if (!$1) // `$1` was "0" or "00" + return $0; + while ($1 > args.length - 3) { + literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers; + $1 = Math.floor($1 / 10); // Drop the last digit + } + return ($1 ? args[$1] || "" : "$") + literalNumbers; + } + // Named backreference or delimited numbered backreference + } else { + // What does "${n}" mean? + // - Backreference to numbered capture n. Two differences from "$n": + // - n can be more than two digits + // - Backreference 0 is allowed, and is the entire match + // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture + // - Otherwise, it's the string "${n}" + var n = +$2; // Type conversion; drop leading zeros + if (n <= args.length - 3) + return args[n]; + n = captureNames ? indexOf(captureNames, $2) : -1; + return n > -1 ? args[n + 1] : $0; + } + }); + }); + } + + if (isRegex) { + if (search.global) + search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows) + else + search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + } + + return result; + }; + + // A consistent cross-browser, ES3 compliant `split` + String.prototype.split = function (s /* separator */, limit) { + // If separator `s` is not a regex, use the native `split` + if (!XRegExp.isRegExp(s)) + return nativ.split.apply(this, arguments); + + var str = this + "", // Type conversion + output = [], + lastLastIndex = 0, + match, lastLength; + + // Behavior for `limit`: if it's... + // - `undefined`: No limit + // - `NaN` or zero: Return an empty array + // - A positive number: Use `Math.floor(limit)` + // - A negative number: No limit + // - Other: Type-convert, then use the above rules + if (limit === undefined || +limit < 0) { + limit = Infinity; + } else { + limit = Math.floor(+limit); + if (!limit) + return []; + } + + // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero + // and restore it to its original value when we're done using the regex + s = XRegExp.copyAsGlobal(s); + + while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (s.lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + + if (match.length > 1 && match.index < str.length) + Array.prototype.push.apply(output, match.slice(1)); + + lastLength = match[0].length; + lastLastIndex = s.lastIndex; + + if (output.length >= limit) + break; + } + + if (s.lastIndex === match.index) + s.lastIndex++; + } + + if (lastLastIndex === str.length) { + if (!nativ.test.call(s, "") || lastLength) + output.push(""); + } else { + output.push(str.slice(lastLastIndex)); + } + + return output.length > limit ? output.slice(0, limit) : output; + }; + + + //--------------------------------- + // Private helper functions + //--------------------------------- + + // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp` + // instance with a fresh `lastIndex` (set to zero), preserving properties required for named + // capture. Also allows adding new flags in the process of copying the regex + function clone (regex, additionalFlags) { + if (!XRegExp.isRegExp(regex)) + throw TypeError("type RegExp expected"); + var x = regex._xregexp; + regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || "")); + if (x) { + regex._xregexp = { + source: x.source, + captureNames: x.captureNames ? x.captureNames.slice(0) : null + }; + } + return regex; + } + + function getNativeFlags (regex) { + return (regex.global ? "g" : "") + + (regex.ignoreCase ? "i" : "") + + (regex.multiline ? "m" : "") + + (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 + (regex.sticky ? "y" : ""); + } + + function runTokens (pattern, index, scope, context) { + var i = tokens.length, + result, match, t; + // Protect against constructing XRegExps within token handler and trigger functions + isInsideConstructor = true; + // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws + try { + while (i--) { // Run in reverse order + t = tokens[i]; + if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) { + t.pattern.lastIndex = index; + match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc. + if (match && match.index === index) { + result = { + output: t.handler.call(context, match, scope), + match: match + }; + break; + } + } + } + } catch (err) { + throw err; + } finally { + isInsideConstructor = false; + } + return result; + } + + function indexOf (array, item, from) { + if (Array.prototype.indexOf) // Use the native array method if available + return array.indexOf(item, from); + for (var i = from || 0; i < array.length; i++) { + if (array[i] === item) + return i; + } + return -1; + } + + + //--------------------------------- + // Built-in tokens + //--------------------------------- + + // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the + // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS` + + // Comment pattern: (?# ) + XRegExp.addToken( + /\(\?#[^)]*\)/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + } + ); + + // Capturing group (match the opening parenthesis only). + // Required for support of named capturing groups + XRegExp.addToken( + /\((?!\?)/, + function () { + this.captureNames.push(null); + return "("; + } + ); + + // Named capturing group (match the opening delimiter only): (? + XRegExp.addToken( + /\(\?<([$\w]+)>/, + function (match) { + this.captureNames.push(match[1]); + this.hasNamedCapture = true; + return "("; + } + ); + + // Named backreference: \k + XRegExp.addToken( + /\\k<([\w$]+)>/, + function (match) { + var index = indexOf(this.captureNames, match[1]); + // Keep backreferences separate from subsequent literal numbers. Preserve back- + // references to named groups that are undefined at this point as literal strings + return index > -1 ? + "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") : + match[0]; + } + ); + + // Empty character class: [] or [^] + XRegExp.addToken( + /\[\^?]/, + function (match) { + // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S]. + // (?!) should work like \b\B, but is unreliable in Firefox + return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]"; + } + ); + + // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx) + // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc. + XRegExp.addToken( + /^\(\?([imsx]+)\)/, + function (match) { + this.setFlag(match[1]); + return ""; + } + ); + + // Whitespace and comments, in free-spacing (aka extended) mode only + XRegExp.addToken( + /(?:\s+|#.*)+/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + }, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("x");} + ); + + // Dot, in dotall (aka singleline) mode only + XRegExp.addToken( + /\./, + function () {return "[\\s\\S]";}, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("s");} + ); + + + //--------------------------------- + // Backward compatibility + //--------------------------------- + + // Uncomment the following block for compatibility with XRegExp 1.0-1.2: + /* + XRegExp.matchWithinChain = XRegExp.matchChain; + RegExp.prototype.addFlags = function (s) {return clone(this, s);}; + RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;}; + RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);}; + RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;}; + */ + +})(); + diff --git a/system/libs/phpmailer/examples/scripts/shAutoloader.js b/system/libs/phpmailer/examples/scripts/shAutoloader.js new file mode 100644 index 00000000..9f5942ee --- /dev/null +++ b/system/libs/phpmailer/examples/scripts/shAutoloader.js @@ -0,0 +1,122 @@ +(function() { + +var sh = SyntaxHighlighter; + +/** + * Provides functionality to dynamically load only the brushes that a needed to render the current page. + * + * There are two syntaxes that autoload understands. For example: + * + * SyntaxHighlighter.autoloader( + * [ 'applescript', 'Scripts/shBrushAppleScript.js' ], + * [ 'actionscript3', 'as3', 'Scripts/shBrushAS3.js' ] + * ); + * + * or a more easily comprehendable one: + * + * SyntaxHighlighter.autoloader( + * 'applescript Scripts/shBrushAppleScript.js', + * 'actionscript3 as3 Scripts/shBrushAS3.js' + * ); + */ +sh.autoloader = function() +{ + var list = arguments, + elements = sh.findElements(), + brushes = {}, + scripts = {}, + all = SyntaxHighlighter.all, + allCalled = false, + allParams = null, + i + ; + + SyntaxHighlighter.all = function(params) + { + allParams = params; + allCalled = true; + }; + + function addBrush(aliases, url) + { + for (var i = 0; i < aliases.length; i++) + brushes[aliases[i]] = url; + }; + + function getAliases(item) + { + return item.pop + ? item + : item.split(/\s+/) + ; + } + + // create table of aliases and script urls + for (i = 0; i < list.length; i++) + { + var aliases = getAliases(list[i]), + url = aliases.pop() + ; + + addBrush(aliases, url); + } + + // dynamically add + +
    + +
    +
    + + + + +
    Login Successful
    + + + + +
    +
    + +
    +
    + + + + +
    You have logged in.
    Press here if you are not returned automatically.
    +
    +
    +
    + + + + +getCustomField("key"); + if(!$account_logged->isPremium()) + $account_status = 'Free Account'; + else + $account_status = 'Premium Account, '.$account_logged->getPremDays().' days left'; + if(empty($account_reckey)) + $account_registred = 'No'; + else + { + if($config['generate_new_reckey'] && $config['mail_enabled']) + $account_registred = 'Yes ( Buy new Recovery Key )'; + else + $account_registred = 'Yes'; + } + + $account_created = $account_logged->getCustomField("created"); + $account_email = $account_logged->getEMail(); + $account_email_new_time = $account_logged->getCustomField("email_new_time"); + if($account_email_new_time > 1) + $account_email_new = $account_logged->getCustomField("email_new"); + $account_rlname = $account_logged->getRLName(); + $account_location = $account_logged->getLocation(); + if($account_logged->isBanned()) + if($account_logged->getBanTime() > 0) + $welcome_msg = 'Your account is banished until '.date("j F Y, G:i:s", $account_logged->getBanTime()).'!'; + else + $welcome_msg = 'Your account is banished FOREVER!'; + else + $welcome_msg = 'Welcome to your account!'; + echo '

    '.$welcome_msg.'

    '; + //if account dont have recovery key show hint + if(empty($account_reckey)) + echo '
    Hint:You can register your account for increased protection. Click on "Register Account" and get your free recovery key today!

    '; + + $account_email_change = ''; + if($account_email_new_time > 1) + { + if($account_email_new_time < time()) + $account_email_change = '
    (You can accept '.$account_email_new.' as a new email.)'; + else + { + $account_email_change = '
    You can accept new e-mail after '.date("j F Y", $account_email_new_time)."."; + echo '
    Note:A request has been submitted to change the email address of this account to '.$account_email_new.'. After '.date("j F Y, G:i:s", $account_email_new_time).' you can accept the new email address and finish the process. Please cancel the request if you do not want your email address to be changed! Also cancel the request if you have no access to the new email address!


    '; + } + } + echo '
    General Information
    Email Address:'.$account_email.''.$account_email_change.'
    Created:'.date("j F Y, G:i:s", $account_created).'
    Last Login:'.date("j F Y, G:i:s", time()).'
    Account Status:'.$account_status.'
    Registred:'.$account_registred.'
    '; + //show button "register account" + if(empty($account_reckey)) + echo ''; + echo '

    Public Information
    Real Name:'.$account_rlname.'
    Location:'.$account_location.'
    '; + echo '
    Account logs
    + '; + + $player_number_counter = 0; + foreach($account_logged->getActionsLog(0, 1000) as $action) + { + echo ' + '; + } + echo '
    ActionDateIP
    '.$action['action'] . '' . date("jS F Y H:i:s",$action['date']) . '' . long2ip($action['ip']) . '
    + + +

    '; + echo '
    Characters
    '; + $account_players = $account_logged->getPlayersList(); + $account_players->orderBy('id'); + //show list of players on account + $player_number_counter = 0; + foreach($account_players as $account_player) + { + echo ''; + if(!$account_player->isOnline()) + echo ''; + else + echo ''; + echo ''; + } + echo '
    NameLevelStatus 
    '.$player_number_counter.'. '.$account_player->getName(); + if($account_player->isDeleted()) + echo ' [ DELETED ] '; + echo ''.$account_player->getLevel().' '.$config['vocations'][$account_player->getVocation()].'OfflineOnline[Edit]


    '; + } +//########### CHANGE PASSWORD ########## + if($action == "changepassword") { + $new_password = isset($_POST['newpassword']) ? $_POST['newpassword'] : NULL; + $new_password2 = isset($_POST['newpassword2']) ? $_POST['newpassword2'] : NULL; + $old_password = isset($_POST['oldpassword']) ? $_POST['oldpassword'] : NULL; + if(empty($new_password) && empty($new_password2) && empty($old_password)) { + echo 'Please enter your current password and a new password. For your security, please enter the new password twice.

    Change Password
    New Password:
    New Password Again:
    Current Password:

    '; + } + else + { + if(empty($new_password) || empty($new_password2) || empty($old_password)){ + $show_msgs[] = "Please fill in form."; + } + if($new_password != $new_password2) { + $show_msgs[] = "The new passwords do not match!"; + } + if(empty($show_msgs)) { + if(!check_password($new_password)) { + $show_msgs[] = "New password contains illegal chars (a-z, A-Z and 0-9 only!). Minimum password length is 7 characters and maximum 32."; + } + $old_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $old_password); + if($old_password != $account_logged->getPassword()) { + $show_msgs[] = "Current password is incorrect!"; + } + } + if(!empty($show_msgs)){ + //show errors + echo '
    The Following Errors Have Occurred:
    '; + foreach($show_msgs as $show_msg) { + echo '
  1. '.$show_msg; + } + echo '

  2. '; + //show form + echo 'Please enter your current password and a new password. For your security, please enter the new password twice.

    Change Password
    New Password:
    New Password Again:
    Current Password:

    '; + } + else + { + $org_pass = $new_password; + + if($config_salt_enabled) + { + $salt = generateRandomString(10, false, true, true); + $new_password = $salt . $new_password; + $account_logged->setSalt($salt); + } + + $new_password = encrypt($new_password); + $account_logged->setPassword($new_password); + $account_logged->save(); + $account_logged->logAction('Account password changed.'); + echo '
    Password Changed
    Your password has been changed.'; + if($config['mail_enabled'] && $config['send_mail_when_change_password']) + { + $mailBody = ' +

    Password to account changed!

    +

    You or someone else changed password to your account on server '.$config['lua']['serverName'].'.

    +

    New password: '.$org_pass.'

    '; + + if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - Changed password", $mailBody)) + echo '
    Your new password were send on email address '.$account_logged->getEMail().'.'; + else + echo '

    An error occorred while sending email with password:
    ' . $mailer->ErrorInfo . '

    '; + } + echo '

    '; + $_SESSION['password'] = $new_password; + } + } + } + +//############# CHANGE E-MAIL ################### + if($action == "changeemail") { + $account_email_new_time = $account_logged->getCustomField("email_new_time"); + if($account_email_new_time > 10) {$account_email_new = $account_logged->getCustomField("email_new"); } + if($account_email_new_time < 10){ + if(isset($_POST['changeemailsave']) && $_POST['changeemailsave'] == 1) { + $account_email_new = $_POST['new_email']; + $post_password = $_POST['password']; + if(empty($account_email_new)) { + $change_email_errors[] = "Please enter your new email address."; + } + else + { + if(!check_mail($account_email_new)) { + $change_email_errors[] = "E-mail address is not correct."; + } + } + if(empty($post_password)) { + $change_email_errors[] = "Please enter password to your account."; + } + else + { + $post_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $post_password); + if($post_password != $account_logged->getPassword()) { + $change_email_errors[] = "Wrong password to account."; + } + } + if(empty($change_email_errors)) { + $account_email_new_time = time() + $config['account_mail_change'] * 24 * 3600; + $account_logged->setCustomField("email_new", $account_email_new); + $account_logged->setCustomField("email_new_time", $account_email_new_time); + echo '
    New Email Address Requested
    You have requested to change your email address to '.$account_email_new.'. The actual change will take place after '.date("j F Y, G:i:s", $account_email_new_time).', during which you can cancel the request at any time.

    '; + } + else + { + //show errors + echo '
    The Following Errors Have Occurred:
    '; + foreach($change_email_errors as $change_email_error) { + echo '
  3. '.$change_email_error; + } + echo '

  4. '; + //show form + echo 'Please enter your password and the new email address. Make sure that you enter a valid email address which you have access to. For security reasons, the actual change will be finalised after a waiting period of '.$config['account_mail_change'].' days.

    Change Email Address
    New Email Address:
    Password:

    '; + } + } + else + { + echo 'Please enter your password and the new email address. Make sure that you enter a valid email address which you have access to. For security reasons, the actual change will be finalised after a waiting period of '.$config['account_mail_change'].' days.

    Change Email Address
    New Email Address:
    Password:

    '; + } + } + else + { + if($account_email_new_time < time()) { + if($_POST['changeemailsave'] == 1) { + $account_logged->setCustomField("email_new", ""); + $account_logged->setCustomField("email_new_time", 0); + $account_logged->setEmail($account_email_new); + $account_logged->save(); + $account_logged->logAction('Account email changed to ' . $account_email_new . ''); + echo '
    Email Address Change Accepted
    You have accepted '.$account_logged->getEmail().' as your new email adress.

    '; + } + else + { + echo '
    Email Address Change Accepted
    Do you accept '.$account_email_new.' as your new email adress?

     
     
    '; + } + } + else + { + echo '
    Change of Email Address
    A request has been submitted to change the email address of this account to '.$account_email_new.'.
    The actual change will take place on '.date("j F Y, G:i:s", $account_email_new_time).'.
    If you do not want to change your email address, please click on "Cancel".

    '; + } + } + if(isset($_POST['emailchangecancel']) && $_POST['emailchangecancel'] == 1) { + $account_logged->setCustomField("email_new", ""); + $account_logged->setCustomField("email_new_time", 0); + echo '
    Email Address Change Cancelled
    Your request to change the email address of your account has been cancelled. The email address will not be changed.

    '; + } + } + +//########### CHANGE PUBLIC INFORMATION (about account owner) ###################### + if($action == "changeinfo") { + $new_rlname = isset($_POST['info_rlname']) ? htmlspecialchars(stripslashes($_POST['info_rlname'])) : NULL; + $new_location = isset($_POST['info_location']) ? htmlspecialchars(stripslashes($_POST['info_location'])) : NULL; + $new_country = isset($_POST['info_country']) ? htmlspecialchars(stripslashes($_POST['info_country'])) : NULL; + if(isset($_POST['changeinfosave']) && $_POST['changeinfosave'] == 1) { + //save data from form + $account_logged->setCustomField("rlname", $new_rlname); + $account_logged->setCustomField("location", $new_location); + $account_logged->setCustomField("country", $new_country); + $account_logged->logAction('Changed Real Name to ' . $new_rlname . ', Location to ' . $new_location . ' and Country to ' . $config['countries'][$new_country] . '.'); + echo '
    Public Information Changed
    Your public information has been changed.

    '; + } + else + { + //show form + $account_rlname = $account_logged->getCustomField("rlname"); + $account_location = $account_logged->getCustomField("location"); + if($config['account_country']) + $account_country = $account_logged->getCustomField("country"); + ?> + Here you can tell other players about yourself. This information will be displayed alongside the data of your characters. If you do not want to fill in a certain field, just leave it blank.

    +
    +
    + +
    +
    + + + + +
    Change Public Information
    + + + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + +
    Real Name: + +
    Location: + +
    Country: + + + +
    +

    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + getCustomField('salt') : '') . $_POST['reg_password']); + $old_key = $account_logged->getCustomField("key"); + if(isset($_POST['registeraccountsave']) && $_POST['registeraccountsave'] == "1") { + if($reg_password == $account_logged->getPassword()) { + if(empty($old_key)) { + $dontshowtableagain = true; + $new_rec_key = generateRandomString(10, false, true, true); + + $account_logged->setCustomField("key", $new_rec_key); + $account_logged->logAction('Generated recovery key.'); + echo '
    Account Registered
    Thank you for registering your account! You can now recover your account if you have lost access to the assigned email address by using the following

       Recovery Key: '.$new_rec_key.'


    Important:
    • Write down this recovery key carefully.
    • Store it at a safe place!
    • '; + if($config['mail_enabled'] && $config['send_mail_when_generate_reckey']) + { + $mailBody = ' +

      New recovery key!

      +

      You or someone else generated recovery key to your account on server '.$config['lua']['serverName'].'.

      +

      Recovery key: '.$new_rec_key.'

      '; + if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - recovery key", $mailBody)) + echo '
      Your recovery key were send on email address '.$account_logged->getEMail().'.'; + else + echo '

      An error occorred while sending email with recovery key! You will not receive e-mail with this key. Error:
      ' . $mailer->ErrorInfo . '

      '; + } + echo '

    '; + } + else + $reg_errors[] = 'Your account is already registred.'; + } + else + $reg_errors[] = 'Wrong password to account.'; + } + if(!$dontshowtableagain) + { + //show errors if not empty + if(!empty($reg_errors)) + { + echo '
    The Following Errors Have Occurred:
    '; + foreach($reg_errors as $reg_error) + echo '
  5. '.$reg_error . '
  6. '; + echo '

    '; + } + //show form + echo 'To generate recovery key for your account please enter your password.

    Generate recovery key
    Password:

    '; + } + } + +//############## GENERATE NEW RECOVERY KEY ########### + if($action == "newreckey") + { + if(isset($_POST['reg_password'])) + $reg_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $_POST['reg_password']); + + $reckey = $account_logged->getCustomField('key'); + if((!$config['generate_new_reckey'] || !$config['mail_enabled']) || empty($reckey)) + echo 'You cant get new rec key'; + else + { + $points = $account_logged->getCustomField('premium_points'); + if(isset($_POST['registeraccountsave']) && $_POST['registeraccountsave'] == '1') + { + if($reg_password == $account_logged->getPassword()) + { + if($points >= $config['generate_new_reckey_price']) + { + $dontshowtableagain = true; + $new_rec_key = generateRandomString(10, false, true, true); + + echo '
    Account Registered
      '; + + $mailBody = ' +

      New recovery key!

      +

      You or someone else generated recovery key to your account on server '.$config['lua']['serverName'].'.

      +

      Recovery key: '.$new_rec_key.'

      '; + if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - new recovery key", $mailBody)) + { + $account_logged->setCustomField("key", $new_rec_key); + $account_logged->setCustomField("premium_points", $account_logged->getCustomField("premium_points") - $config['generate_new_reckey_price']); + $account_logged->logAction('Generated new recovery key for ' . $config['generate_new_reckey_price'] . ' premium points.'); + echo '
      Your recovery key were send on email address '.$account_logged->getEMail().' for '.$config['generate_new_reckey_price'].' premium points.'; + } + else + echo '

      An error occorred while sending email ( '.$account_logged->getEMail().' ) with recovery key! Recovery key not changed. Try again. Error:
      ' . $mailer->ErrorInfo . '

      '; + echo '

    '; + } + else + $reg_errors[] = 'You need '.$config['generate_new_reckey_price'].' premium points to generate new recovery key. You have '.$points.' premium points.'; + } + else + $reg_errors[] = 'Wrong password to account.'; + } + if(!$dontshowtableagain) + { + //show errors if not empty + if(!empty($reg_errors)) + { + echo '
    The Following Errors Have Occurred:
    '; + foreach($reg_errors as $reg_error) + echo '
  7. '.$reg_error; + echo '

  8. '; + } + //show form + echo 'To generate NEW recovery key for your account please enter your password.
    New recovery key cost '.$config['generate_new_reckey_price'].' Premium Points. You have '.$points.' premium points. You will receive e-mail with this recovery key.
    Generate recovery key
    Password:

    '; + } + } + } + + + +//###### CHANGE CHARACTER COMMENT ###### + if($action == "changecomment") { + $player_name = stripslashes($_REQUEST['name']); + $new_comment = isset($_POST['comment']) ? htmlspecialchars(stripslashes(substr($_POST['comment'],0,2000))) : NULL; + $new_hideacc = isset($_POST['accountvisible']) ? (int)$_POST['accountvisible'] : NULL; + if(check_name($player_name)) { + $player = $ots->createObject('Player'); + $player->find($player_name); + if($player->isLoaded()) { + $player_account = $player->getAccount(); + if($account_logged->getId() == $player_account->getId()) { + if(isset($_POST['changecommentsave']) && $_POST['changecommentsave'] == 1) { + $player->setCustomField("hidden", $new_hideacc); + $player->setCustomField("comment", $new_comment); + $account_logged->logAction('Changed comment for character ' . $player->getName() . '.'); + echo '
    Character Information Changed
    The character information has been changed.

    '; + } + else + { + echo 'Here you can see and edit the information about your character.
    If you do not want to specify a certain field, just leave it blank.

    Edit Character Information
    Name:'.$player_name.'
    Hide Account:'; + if($player->getCustomField("hidden") == 1) { + echo ''; + } + else + { + echo ''; + } + + echo ' check to hide your account information'; + if((int)$player->getCustomField('group_id') > 1) + echo ' (you will be also hidden on the Team page!)'; + + echo '
    Comment:
    [max. length: 2000 chars, 50 lines (ENTERs)]

    '; + } + } + else + { + echo "Error. Character ".$player_name." is not on your account."; + } + } + else + { + echo "Error. Character with this name doesn't exist."; + } + } + else + { + echo "Error. Name contain illegal characters."; + } + } + +//### DELETE character from account ### + if($action == "deletecharacter") { + $player_name = isset($_POST['delete_name']) ? stripslashes($_POST['delete_name']) : NULL; + $password_verify = isset($_POST['delete_password']) ? $_POST['delete_password'] : NULL; + $password_verify = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $password_verify); + if(isset($_POST['deletecharactersave']) && $_POST['deletecharactersave'] == 1) { + if(!empty($player_name) && !empty($password_verify)) { + if(check_name($player_name)) { + $player = $ots->createObject('Player'); + $player->find($player_name); + if($player->isLoaded()) { + $player_account = $player->getAccount(); + if($account_logged->getId() == $player_account->getId()) { + if($password_verify == $account_logged->getPassword()) { + if(!$player->isOnline()) + { + //dont show table "delete character" again + $dontshowtableagain = true; + //delete player + if(fieldExist('deletion', 'players')) + $player->setCustomField('deletion', 1); + else + $player->setCustomField('deleted', 1); + $account_logged->logAction('Deleted character ' . $player->getName() . '.'); + echo '
    Character Deleted
    The character '.$player_name.' has been deleted.

    '; + } + else + $delete_errors[] = 'This character is online.'; + } + else + { + $delete_errors[] = 'Wrong password to account.'; + } + } + else + { + $delete_errors[] = 'Character '.$player_name.' is not on your account.'; + } + } + else + { + $delete_errors[] = 'Character with this name doesn\'t exist.'; + } + } + else + { + $delete_errors[] = 'Name contain illegal characters.'; + } + } + else + { + $delete_errors[] = 'Character name or/and password is empty. Please fill in form.'; + } + } + if(!$dontshowtableagain) { + if(!empty($delete_errors)) { + echo '
    The Following Errors Have Occurred:
    '; + foreach($delete_errors as $delete_error) { + echo '
  9. '.$delete_error; + } + echo '

  10. '; + } + echo 'To delete a character enter the name of the character and your password.

    Delete Character
    Character Name:
    Password:

    '; + } + } + +//## CREATE CHARACTER on account ### + if($action == "createcharacter") { + echo ''; + $newchar_name = isset($_POST['newcharname']) ? stripslashes(ucwords(strtolower($_POST['newcharname']))) : NULL; + $newchar_sex = isset($_POST['newcharsex']) ? $_POST['newcharsex'] : NULL; + $newchar_vocation = isset($_POST['newcharvocation']) ? $_POST['newcharvocation'] : NULL; + $newchar_town = isset($_POST['newchartown']) ? $_POST['newchartown'] : NULL; + $newchar_errors = array(); + if(isset($_POST['savecharacter']) && $_POST['savecharacter'] == 1) { + if(empty($newchar_name)) + $newchar_errors[] = 'Please enter a name for your character!'; + + if(strlen($newchar_name) > 25) + $newchar_errors[] = 'Name is too long. Max. lenght 25 letters.'; + else if(strlen($newchar_name) < 3) + $newchar_errors[] = 'Name is too short. Min. lenght 25 letters.'; + + if(empty($newchar_sex) && $newchar_sex != "0") + $newchar_errors[] = 'Please select the sex for your character!'; + + if(count($config['character_samples']) > 1) + { + if(!isset($newchar_vocation)) + $newchar_errors[] = 'Please select a vocation for your character.'; + } + else + $newchar_vocation = $config['character_samples'][0]; + + if(count($config['character_towns']) > 1) + { + if(empty($newchar_town)) + $newchar_errors[] = 'Please select a town for your character.'; + } + else + $newchar_town = $config['character_towns'][0]; + + //check if was namelocked previously + if(tableExist('player_namelocks') && fieldExist('name', 'player_namelocks')) { + $namelockSQL = $db->query('SELECT `player_id` FROM `player_namelocks` WHERE `name` = ' . $db->quote($newchar_name)); + if($namelockSQL->rowCount() > 0) + $newchar_errors[] = 'Character with this name has been namelocked.'; + } + + if(empty($newchar_errors)) + { + if(!check_name_new_char($newchar_name)) + $newchar_errors[] = 'This name contains invalid letters, words or format. Please use only a-Z, - , \' and space.'; + if($newchar_sex != 1 && $newchar_sex != "0") + $newchar_errors[] = 'Sex must be equal 0 (female) or 1 (male).'; + if(!in_array($newchar_town, $config['character_towns'])) + $newchar_errors[] = 'Please select valid town.'; + if(count($config['character_samples']) > 1) + { + $newchar_vocation_check = false; + foreach($config['character_samples'] as $char_vocation_key => $sample_char) + if($newchar_vocation == $char_vocation_key) + $newchar_vocation_check = true; + if(!$newchar_vocation_check) + $newchar_errors[] = 'Unknown vocation. Please fill in form again.'; + } + else + $newchar_vocation = 0; + } + + if(empty($newchar_errors)) + { + $check_name_in_database = $ots->createObject('Player'); + $check_name_in_database->find($newchar_name); + if($check_name_in_database->isLoaded()) + $newchar_errors[] .= 'This name is already used. Please choose another name!'; + $number_of_players_on_account = $account_logged->getPlayersList()->count(); + if($number_of_players_on_account >= $config['characters_per_account']) + $newchar_errors[] .= 'You have too many characters on your account ('.$number_of_players_on_account.'/'.$config['characters_per_account'].')!'; + } + + if(empty($newchar_errors)) + { + $char_to_copy_name = $config['character_samples'][$newchar_vocation]; + $char_to_copy = new OTS_Player(); + $char_to_copy->find($char_to_copy_name); + if(!$char_to_copy->isLoaded()) + $newchar_errors[] .= 'Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copy'.$char_to_copy_name.'
    doesn\'t exist.'; + } + + if(empty($newchar_errors)) + { + if($newchar_sex == "0") + $char_to_copy->setLookType(136); + $player = $ots->createObject('Player'); + $player->setName($newchar_name); + $player->setAccount($account_logged); + //$player->setGroupId($char_to_copy->getGroup()->getId()); + $player->setGroupId(1); + $player->setSex($newchar_sex); + $player->setVocation($char_to_copy->getVocation()); + if(fieldExist('promotion', 'players')) + $player->setPromotion($char_to_copy->getPromotion()); + + $player->setConditions($char_to_copy->getConditions()); + if(fieldExist('rank_id', 'players')) + $player->setRank($char_to_copy->getRank()); + $player->setLookAddons($char_to_copy->getLookAddons()); + $player->setTownId($newchar_town); + $player->setExperience($char_to_copy->getExperience()); + $player->setLevel($char_to_copy->getLevel()); + $player->setMagLevel($char_to_copy->getMagLevel()); + $player->setHealth($char_to_copy->getHealth()); + $player->setHealthMax($char_to_copy->getHealthMax()); + $player->setMana($char_to_copy->getMana()); + $player->setManaMax($char_to_copy->getManaMax()); + $player->setManaSpent($char_to_copy->getManaSpent()); + $player->setSoul($char_to_copy->getSoul()); + if(fieldExist('direction', 'players')) + $player->setDirection($char_to_copy->getDirection()); + + $player->setLookBody($char_to_copy->getLookBody()); + $player->setLookFeet($char_to_copy->getLookFeet()); + $player->setLookHead($char_to_copy->getLookHead()); + $player->setLookLegs($char_to_copy->getLookLegs()); + $player->setLookType($char_to_copy->getLookType()); + $player->setCap($char_to_copy->getCap()); + $player->setBalance(0); + $player->setPosX(0); + $player->setPosY(0); + $player->setPosZ(0); + $player->setStamina($config['otserv_version'] == TFS_03 ? 151200000 : 2520); + if(fieldExist('loss_experience', 'players')) { + $player->setLossExperience($char_to_copy->getLossExperience()); + $player->setLossMana($char_to_copy->getLossMana()); + $player->setLossSkills($char_to_copy->getLossSkills()); + $player->setLossItems($char_to_copy->getLossItems()); + } + $player->save(); + $player->setCustomField("created", time()); + $account_logged->logAction('Created character ' . $player->getName() . '.'); + unset($player); + $player = $ots->createObject('Player'); + $player->find($newchar_name); + if($player->isLoaded()) + { + if(tableExist('player_skills')) { + for($i=0;$i<7;$i++) + { + $skillExists = $db->query('SELECT `skillid` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' AND `skillid` = ' . $i); + if($skillExists->rowCount() <= 0) + { + $db->query('INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES ('.$player->getId().', '.$i.', 10, 0)'); + } + } + } + + $loaded_items_to_copy = $db->query("SELECT * FROM player_items WHERE player_id = ".$char_to_copy->getId().""); + foreach($loaded_items_to_copy as $save_item) + $db->query("INSERT INTO `player_items` (`player_id` ,`pid` ,`sid` ,`itemtype`, `count`, `attributes`) VALUES ('".$player->getId()."', '".$save_item['pid']."', '".$save_item['sid']."', '".$save_item['itemtype']."', '".$save_item['count']."', '".$save_item['attributes']."');"); + echo '
    Character Created
    The character '.$newchar_name.' has been created.
    Please select the outfit when you log in for the first time.

    See you on '.$config['lua']['serverName'].'!

    '; + } + else + { + echo "Error. Can\'t create character. Probably problem with database. Try again or contact with admin."; + exit; + } + } + } + else + { + if(count($newchar_errors) > 0) { + echo '
    '; + echo 'The Following Errors Have Occurred:
    '; + foreach($newchar_errors as $newchar_error) + echo '
  11. '.$newchar_error . '
  12. '; + echo '

    '; + } + echo 'Please choose a name'; + if(count($config['character_samples']) > 1) + echo ', vocation'; + echo ' and sex for your character.
    In any case the name must not violate the naming conventions stated in the '.$config['lua']['serverName'].' Rules, or your character might get deleted or name locked.'; + if($account_logged->getPlayersList()->count() >= $config['characters_per_account']) { + echo ' You have maximum number of characters per account on your account. Delete one before you make new.'; + } + echo '

    Create Character
    NameSex

    Please enter your character name.
    '; + echo '
    '; + echo '
    '; + echo '
    '; + if(count($config['character_samples']) > 1) + { + echo '

    Select your vocation:
    '; + foreach($config['character_samples'] as $char_vocation_key => $sample_char) + { + echo ''; + } + echo '
    '; + } + if(count($config['character_towns']) > 1) + { + echo '

    Select your city:
    '; + foreach($config['character_towns'] as $town_id) + { + echo ''; + } + echo '
    '; + } + else + echo '
    '; + echo '
    '; + } + } +?> diff --git a/system/pages/admin/.htaccess b/system/pages/admin/.htaccess new file mode 100644 index 00000000..3418e55a --- /dev/null +++ b/system/pages/admin/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/system/pages/admin/changelog.php b/system/pages/admin/changelog.php new file mode 100644 index 00000000..3a92a3fb --- /dev/null +++ b/system/pages/admin/changelog.php @@ -0,0 +1,27 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'MyAAC - CHANGELOG'; + +$data = file_get_contents(SYSTEM . 'docs/CHANGELOG'); + +// replace special characters with HTML entities +// replace line breaks with
    +$data = nl2br(htmlspecialchars($data)); + +// replace multiple spaces with single spaces +$data = preg_replace('/\s\s+/', ' ', $data); + +// replace URLs with elements +$data = preg_replace('/\s(\w+:\/\/)(\S+)/', ' \\1\\2', $data); + +echo '
    ' . $data . '
    '; +?> diff --git a/system/pages/admin/dashboard.php b/system/pages/admin/dashboard.php new file mode 100644 index 00000000..a138e6b2 --- /dev/null +++ b/system/pages/admin/dashboard.php @@ -0,0 +1,64 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Dashboard'; +?> +
    + +

    Status: Online
    +
    + +

    + + +
    + Server:

    + Version:

    + + Monsters:
    + Map: , author: , size:
    + MOTD:


    + + Last updated: +
    +

    + +

    Status: Offline

    + +
    + + + + diff --git a/system/pages/admin/login.php b/system/pages/admin/login.php new file mode 100644 index 00000000..ccc318fe --- /dev/null +++ b/system/pages/admin/login.php @@ -0,0 +1,32 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Login'; + +if($action == 'logout') + echo 'You have been logout.
    '; + +if(isset($errors)) { + foreach($errors as $error) { + error($error); + } +} +?> + +Please login. +
    +
    +
    + +
    + + +
    \ No newline at end of file diff --git a/system/pages/admin/logs.php b/system/pages/admin/logs.php new file mode 100644 index 00000000..f6ed815c --- /dev/null +++ b/system/pages/admin/logs.php @@ -0,0 +1,78 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Logs viewer'; +?> + + + + + + + + + + +
    Log name + Last updated +
    +', 3) . '' . $file . ':

    ' . nl2br(file_get_contents($aac_path_logs . $file)); + else if(file_exists($server_path_logs . $file)) + echo str_repeat('
    ', 3) . '' . $file . ':

    ' . nl2br(file_get_contents($server_path_logs . $file)); + + else + echo 'Specified file does not exist.'; + } + else + echo 'Invalid file name specified.'; +} +?> diff --git a/system/pages/admin/mailer.php b/system/pages/admin/mailer.php new file mode 100644 index 00000000..05018cca --- /dev/null +++ b/system/pages/admin/mailer.php @@ -0,0 +1,111 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Mailer'; + +if(!hasFlag(FLAG_CONTENT_MAILER) && !superAdmin()) +{ + echo 'Access denied.'; + return; +} + +if(!$config['mail_enabled']) +{ + echo 'Mail support disabled.'; + return; +} + +$mail_content = isset($_POST['mail_content']) ? stripslashes($_POST['mail_content']) : NULL; +$mail_subject = isset($_POST['mail_subject']) ? stripslashes($_POST['mail_subject']) : NULL; +$preview = isset($_REQUEST['preview']); + +$preview_done = false; +if($preview) { + if(!empty($mail_content) && !empty($mail_subject)) + $preview_done = _mail($account_logged->getCustomField('email'), $mail_subject, $mail_content); + + if(!$preview_done) + error('Error while sending preview mail: ' . $mailer->ErrorInfo); +} + +?> + + + + + + + + + + + + + + + + + +
    +

    Sending mails may take some time if there are much users in db.

    +
    + + + +
    + +
    + Done.' : ''); ?>
    +
    +fieldName('email_verified') . ' = 1'; + + $query = $db->query('SELECT ' . $db->fieldName('email') . ' FROM ' . $db->tableName('accounts') . ' WHERE ' . $db->fieldName('email') . ' != ""' . $add); + foreach($query as $email) + { + if(_mail($email['email'], $mail_subject, $mail_content)) + $success++; + else + { + $failed++; + echo '
    '; + error('An error occorred while sending email to ' . $email['email'] . '. Error: ' . $mailer->ErrorInfo); + } + } +?> + Mailing finished.
    +

    emails delivered.


    +

    emails failed.


    diff --git a/system/pages/admin/notepad.php b/system/pages/admin/notepad.php new file mode 100644 index 00000000..611f06a1 --- /dev/null +++ b/system/pages/admin/notepad.php @@ -0,0 +1,108 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Notepad'; + +$notepad_content = Notepad::get($account_logged->getId()); +if(isset($_POST['content'])) +{ + $_content = html_entity_decode(stripslashes($_POST['content'])); + if(!$notepad_content) + Notepad::create($account_logged->getId(), $_content); + else + Notepad::update($account_logged->getId(), $_content); + + echo '
    Saved at ' . date('g:i A') . '
    '; +} +else +{ + if($notepad_content !== false) + $_content = $notepad_content; +} +?> + + + + + + + + + + + + + +
    +

    This is your personal notepad. Be sure to save it each time you modify something.

    +
    + +
    + +
    + + + + +select(TABLE_PREFIX . 'notepad', array('account_id' => $account_id)); + if($query !== false) + return $query['content']; + + return false; + } + + static public function create($account_id, $content = '') + { + global $db; + $db->insert(TABLE_PREFIX . 'notepad', array('account_id' => $account_id, 'content' => $content)); + } + + static public function update($account_id, $content = '') + { + global $db; + $db->update(TABLE_PREFIX . 'notepad', array('content' => $content), array('account_id' => $account_id)); + } +} diff --git a/system/pages/admin/pages.php b/system/pages/admin/pages.php new file mode 100644 index 00000000..68b0a001 --- /dev/null +++ b/system/pages/admin/pages.php @@ -0,0 +1,294 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Pages'; + +if(!hasFlag(FLAG_CONTENT_PAGES) && !superAdmin()) +{ + echo 'Access denied.'; + return; +} + +$name = $p_title = ''; +$groups = new OTS_Groups_List(); + +$php = false; +$access = 0; + +if(!empty($action)) +{ + if($action == 'delete' || $action == 'edit' || $action == 'hide') + $id = $_REQUEST['id']; + + if(isset($_REQUEST['name'])) + $name = $_REQUEST['name']; + + if(isset($_REQUEST['title'])) + $p_title = $_REQUEST['title']; + + $php = isset($_REQUEST['php']); + //if($php) + // $body = $_REQUEST['body']; + //else + if(isset($_REQUEST['body'])) + $body = html_entity_decode(stripslashes($_REQUEST['body'])); + + if(isset($_REQUEST['access'])) + $access = $_REQUEST['access']; + + $errors = array(); + $player_id = 1; + + if($action == 'add') { + if(Pages::add($name, $p_title, $body, $player_id, $php, $access, $errors)) + { + $name = $p_title = $body = ''; + $player_id = $access = 0; + $php = false; + } + } + else if($action == 'delete') { + Pages::delete($id, $errors); + } + else if($action == 'edit') + { + if(isset($id) && !isset($_REQUEST['name'])) { + $_page = Pages::get($id); + $name = $_page['name']; + $p_title = $_page['title']; + $body = $_page['body']; + $php = $_page['php'] == '1'; + $access = $_page['access']; + } + else { + Pages::update($id, $name, $p_title, $body, $player_id, $php, $access); + $action = $name = $p_title = $body = ''; + $player_id = 1; + $access = 0; + $php = false; + } + } + else if($action == 'hide') { + Pages::toggleHidden($id, $errors); + } + + if(!empty($errors)) + output_errors($errors); +} +?> + + + + + +
    + + + + + + + + + + +
    page
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Link/name:
    Title:
    PHP:/>
    Content: + + +
    + [Hide] + [Show] + +
    Access: + +
    + +
    +
    +
    + + + + + + +query('SELECT * FROM ' . $db->tableName(TABLE_PREFIX . 'pages')); + +$i = 0; +foreach($pages as $_page): ?> + + + + + + +
    NameTitleOptions
    + + + Edit + + + + Delete + + + + + +
    + +select(TABLE_PREFIX . 'pages', array('id' => $id)); + if($query !== false) + return $query; + + return false; + } + + static public function add($name, $title, $body, $player_id, $php, $access, &$errors) + { + global $db; + if(isset($name[0]) && isset($title[0]) && isset($body[0]) && $player_id != 0) + { + $query = $db->select(TABLE_PREFIX . 'pages', array('name' => $name)); + if($query === false) + $db->insert(TABLE_PREFIX . 'pages', array('name' => $name, 'title' => $title, 'body' => $body, 'player_id' => $player_id, 'php' => $php, 'access' => $access)); + else + $errors[] = 'Page with this words already exists.'; + } + else + $errors[] = 'Please fill all inputs.'; + + return !count($errors); + } + + static public function update($id, $name, $title, $body, $player_id, $php, $access) { + global $db; + $db->update(TABLE_PREFIX . 'pages', array('name' => $name, 'title' => $title, 'body' => $body, 'player_id' => $player_id, 'php' => $php ? '1' : '0', 'access' => $access), array('id' => $id)); + } + + static public function delete($id, &$errors) + { + global $db; + if(isset($id)) + { + if($db->select(TABLE_PREFIX . 'pages', array('id' => $id)) !== false) + $db->delete(TABLE_PREFIX . 'pages', array('id' => $id)); + else + $errors[] = 'Page with id ' . $id . ' does not exists.'; + } + else + $errors[] = 'id not set'; + + return !count($errors); + } + + static public function toggleHidden($id, &$errors) + { + global $db; + if(isset($id)) + { + $query = $db->select(TABLE_PREFIX . 'pages', array('id' => $id)); + if($query !== false) + $db->update(TABLE_PREFIX . 'pages', array('hidden' => ($query['hidden'] == 1 ? 0 : 1)), array('id' => $id)); + else + $errors[] = 'Page with id ' . $id . ' does not exists.'; + } + else + $errors[] = 'id not set'; + + return !count($errors); + } +} +?> \ No newline at end of file diff --git a/system/pages/admin/phpinfo.php b/system/pages/admin/phpinfo.php new file mode 100644 index 00000000..162dc06f --- /dev/null +++ b/system/pages/admin/phpinfo.php @@ -0,0 +1,20 @@ + + * @copyright 2017 MyAAC + * @version 0.0.1 + * @link http://my-aac.org + */ +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'PHP Info'; + +if(!function_exists('phpinfo')) { ?> +phpinfo() function is disabled in your webserver config.
    +You can enable it by editing php.ini file. + +'; + ifr = document.getElementById('iframe'); + doc = ifr.contentWindow.document; + + // Force absolute CSS urls + css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; + css = css.concat(tinymce.explode(ed.settings.content_css) || []); + tinymce.each(css, function(u) { + cssHTML += ''; + }); + + // Write content into iframe + doc.open(); + doc.write('' + cssHTML + ''); + doc.close(); + + doc.designMode = 'on'; + this.resize(); + + window.setTimeout(function() { + ifr.contentWindow.focus(); + }, 10); + }, + + insert : function() { + var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; + + tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); + tinyMCEPopup.close(); + }, + + resize : function() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('iframe'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 90) + 'px'; + } + } +}; + +tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); diff --git a/tools/tiny_mce/plugins/paste/langs/en_dlg.js b/tools/tiny_mce/plugins/paste/langs/en_dlg.js new file mode 100644 index 00000000..823eb16a --- /dev/null +++ b/tools/tiny_mce/plugins/paste/langs/en_dlg.js @@ -0,0 +1,5 @@ +tinyMCE.addI18n('en.paste_dlg',{ +text_title:"Use CTRL+V on your keyboard to paste the text into the window.", +text_linebreaks:"Keep linebreaks", +word_title:"Use CTRL+V on your keyboard to paste the text into the window." +}); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/paste/pastetext.htm b/tools/tiny_mce/plugins/paste/pastetext.htm new file mode 100644 index 00000000..8ccfbb97 --- /dev/null +++ b/tools/tiny_mce/plugins/paste/pastetext.htm @@ -0,0 +1,27 @@ + + + {#paste.paste_text_desc} + + + + +
    +
    {#paste.paste_text_desc}
    + +
    + +
    + +
    + +
    {#paste_dlg.text_title}
    + + + +
    + + +
    +
    + + \ No newline at end of file diff --git a/tools/tiny_mce/plugins/paste/pasteword.htm b/tools/tiny_mce/plugins/paste/pasteword.htm new file mode 100644 index 00000000..7731f39c --- /dev/null +++ b/tools/tiny_mce/plugins/paste/pasteword.htm @@ -0,0 +1,21 @@ + + + {#paste.paste_word_desc} + + + + +
    +
    {#paste.paste_word_desc}
    + +
    {#paste_dlg.word_title}
    + +
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/preview/editor_plugin.js b/tools/tiny_mce/plugins/preview/editor_plugin.js new file mode 100644 index 00000000..507909c5 --- /dev/null +++ b/tools/tiny_mce/plugins/preview/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/preview/editor_plugin_src.js b/tools/tiny_mce/plugins/preview/editor_plugin_src.js new file mode 100644 index 00000000..80f00f0d --- /dev/null +++ b/tools/tiny_mce/plugins/preview/editor_plugin_src.js @@ -0,0 +1,53 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Preview', { + init : function(ed, url) { + var t = this, css = tinymce.explode(ed.settings.content_css); + + t.editor = ed; + + // Force absolute CSS urls + tinymce.each(css, function(u, k) { + css[k] = ed.documentBaseURI.toAbsolute(u); + }); + + ed.addCommand('mcePreview', function() { + ed.windowManager.open({ + file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"), + width : parseInt(ed.getParam("plugin_preview_width", "550")), + height : parseInt(ed.getParam("plugin_preview_height", "600")), + resizable : "yes", + scrollbars : "yes", + popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"), + inline : ed.getParam("plugin_preview_inline", 1) + }, { + base : ed.documentBaseURI.getURI() + }); + }); + + ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'}); + }, + + getInfo : function() { + return { + longname : 'Preview', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('preview', tinymce.plugins.Preview); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/preview/example.html b/tools/tiny_mce/plugins/preview/example.html new file mode 100644 index 00000000..48202224 --- /dev/null +++ b/tools/tiny_mce/plugins/preview/example.html @@ -0,0 +1,28 @@ + + + + + +Example of a custom preview page + + + +Editor contents:
    +
    + +
    + + + diff --git a/tools/tiny_mce/plugins/preview/jscripts/embed.js b/tools/tiny_mce/plugins/preview/jscripts/embed.js new file mode 100644 index 00000000..6fe25de0 --- /dev/null +++ b/tools/tiny_mce/plugins/preview/jscripts/embed.js @@ -0,0 +1,73 @@ +/** + * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. + */ + +function writeFlash(p) { + writeEmbed( + 'D27CDB6E-AE6D-11cf-96B8-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'application/x-shockwave-flash', + p + ); +} + +function writeShockWave(p) { + writeEmbed( + '166B1BCA-3F9C-11CF-8075-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', + 'application/x-director', + p + ); +} + +function writeQuickTime(p) { + writeEmbed( + '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', + 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', + 'video/quicktime', + p + ); +} + +function writeRealMedia(p) { + writeEmbed( + 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'audio/x-pn-realaudio-plugin', + p + ); +} + +function writeWindowsMedia(p) { + p.url = p.src; + writeEmbed( + '6BF52A52-394A-11D3-B153-00C04F79FAA6', + 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', + 'application/x-mplayer2', + p + ); +} + +function writeEmbed(cls, cb, mt, p) { + var h = '', n; + + h += ''; + + h += ' + + + + + +{#preview.preview_desc} + + + + + diff --git a/tools/tiny_mce/plugins/print/editor_plugin.js b/tools/tiny_mce/plugins/print/editor_plugin.js new file mode 100644 index 00000000..b5b3a55e --- /dev/null +++ b/tools/tiny_mce/plugins/print/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/print/editor_plugin_src.js b/tools/tiny_mce/plugins/print/editor_plugin_src.js new file mode 100644 index 00000000..47e666a3 --- /dev/null +++ b/tools/tiny_mce/plugins/print/editor_plugin_src.js @@ -0,0 +1,34 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Print', { + init : function(ed, url) { + ed.addCommand('mcePrint', function() { + ed.getWin().print(); + }); + + ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'}); + }, + + getInfo : function() { + return { + longname : 'Print', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('print', tinymce.plugins.Print); +})(); diff --git a/tools/tiny_mce/plugins/save/editor_plugin.js b/tools/tiny_mce/plugins/save/editor_plugin.js new file mode 100644 index 00000000..8e939966 --- /dev/null +++ b/tools/tiny_mce/plugins/save/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/save/editor_plugin_src.js b/tools/tiny_mce/plugins/save/editor_plugin_src.js new file mode 100644 index 00000000..5ab6491c --- /dev/null +++ b/tools/tiny_mce/plugins/save/editor_plugin_src.js @@ -0,0 +1,101 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Save', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceSave', t._save, t); + ed.addCommand('mceCancel', t._cancel, t); + + // Register buttons + ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'}); + ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'}); + + ed.onNodeChange.add(t._nodeChange, t); + ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave'); + }, + + getInfo : function() { + return { + longname : 'Save', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + _nodeChange : function(ed, cm, n) { + var ed = this.editor; + + if (ed.getParam('save_enablewhendirty')) { + cm.setDisabled('save', !ed.isDirty()); + cm.setDisabled('cancel', !ed.isDirty()); + } + }, + + // Private methods + + _save : function() { + var ed = this.editor, formObj, os, i, elementId; + + formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form'); + + if (ed.getParam("save_enablewhendirty") && !ed.isDirty()) + return; + + tinyMCE.triggerSave(); + + // Use callback instead + if (os = ed.getParam("save_onsavecallback")) { + if (ed.execCallback('save_onsavecallback', ed)) { + ed.startContent = tinymce.trim(ed.getContent({format : 'raw'})); + ed.nodeChanged(); + } + + return; + } + + if (formObj) { + ed.isNotDirty = true; + + if (formObj.onsubmit == null || formObj.onsubmit() != false) + formObj.submit(); + + ed.nodeChanged(); + } else + ed.windowManager.alert("Error: No form element found."); + }, + + _cancel : function() { + var ed = this.editor, os, h = tinymce.trim(ed.startContent); + + // Use callback instead + if (os = ed.getParam("save_oncancelcallback")) { + ed.execCallback('save_oncancelcallback', ed); + return; + } + + ed.setContent(h); + ed.undoManager.clear(); + ed.nodeChanged(); + } + }); + + // Register plugin + tinymce.PluginManager.add('save', tinymce.plugins.Save); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/searchreplace/css/searchreplace.css b/tools/tiny_mce/plugins/searchreplace/css/searchreplace.css new file mode 100644 index 00000000..3e2eaf34 --- /dev/null +++ b/tools/tiny_mce/plugins/searchreplace/css/searchreplace.css @@ -0,0 +1,6 @@ +.panel_wrapper {height:85px;} +.panel_wrapper div.current {height:85px;} + +/* IE */ +* html .panel_wrapper {height:100px;} +* html .panel_wrapper div.current {height:100px;} diff --git a/tools/tiny_mce/plugins/searchreplace/editor_plugin.js b/tools/tiny_mce/plugins/searchreplace/editor_plugin.js new file mode 100644 index 00000000..cd9c985b --- /dev/null +++ b/tools/tiny_mce/plugins/searchreplace/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/tools/tiny_mce/plugins/searchreplace/editor_plugin_src.js new file mode 100644 index 00000000..e9b3ee81 --- /dev/null +++ b/tools/tiny_mce/plugins/searchreplace/editor_plugin_src.js @@ -0,0 +1,57 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.SearchReplacePlugin', { + init : function(ed, url) { + function open(m) { + ed.windowManager.open({ + file : url + '/searchreplace.htm', + width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), + height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)), + inline : 1, + auto_focus : 0 + }, { + mode : m, + search_string : ed.selection.getContent({format : 'text'}), + plugin_url : url + }); + }; + + // Register commands + ed.addCommand('mceSearch', function() { + open('search'); + }); + + ed.addCommand('mceReplace', function() { + open('replace'); + }); + + // Register buttons + ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'}); + ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'}); + + ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch'); + }, + + getInfo : function() { + return { + longname : 'Search/Replace', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/searchreplace/js/searchreplace.js b/tools/tiny_mce/plugins/searchreplace/js/searchreplace.js new file mode 100644 index 00000000..1426783c --- /dev/null +++ b/tools/tiny_mce/plugins/searchreplace/js/searchreplace.js @@ -0,0 +1,140 @@ +tinyMCEPopup.requireLangPack(); + +var SearchReplaceDialog = { + init : function(ed) { + var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); + + t.switchMode(m); + + f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string"); + + // Focus input field + f[m + '_panel_searchstring'].focus(); + + mcTabs.onChange.add(function(tab_id, panel_id) { + t.switchMode(tab_id.substring(0, tab_id.indexOf('_'))); + }); + }, + + switchMode : function(m) { + var f, lm = this.lastMode; + + if (lm != m) { + f = document.forms[0]; + + if (lm) { + f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value; + f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked; + f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked; + f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked; + } + + mcTabs.displayTab(m + '_tab', m + '_panel'); + document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none"; + document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none"; + this.lastMode = m; + } + }, + + searchNext : function(a) { + var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0; + + // Get input + f = document.forms[0]; + s = f[m + '_panel_searchstring'].value; + b = f[m + '_panel_backwardsu'].checked; + ca = f[m + '_panel_casesensitivebox'].checked; + rs = f['replace_panel_replacestring'].value; + + if (tinymce.isIE) { + r = ed.getDoc().selection.createRange(); + } + + if (s == '') + return; + + function fix() { + // Correct Firefox graphics glitches + // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions? + r = se.getRng().cloneRange(); + ed.getDoc().execCommand('SelectAll', false, null); + se.setRng(r); + }; + + function replace() { + ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE + }; + + // IE flags + if (ca) + fl = fl | 4; + + switch (a) { + case 'all': + // Move caret to beginning of text + ed.execCommand('SelectAll'); + ed.selection.collapse(true); + + if (tinymce.isIE) { + while (r.findText(s, b ? -1 : 1, fl)) { + r.scrollIntoView(); + r.select(); + replace(); + fo = 1; + + if (b) { + r.moveEnd("character", -(rs.length)); // Otherwise will loop forever + } + } + + tinyMCEPopup.storeSelection(); + } else { + while (w.find(s, ca, b, false, false, false, false)) { + replace(); + fo = 1; + } + } + + if (fo) + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced')); + else + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); + + return; + + case 'current': + if (!ed.selection.isCollapsed()) + replace(); + + break; + } + + se.collapse(b); + r = se.getRng(); + + if (tinymce.isIE) { + r = ed.getDoc().selection.createRange(); + } + + // Whats the point + if (!s) + return; + + if (tinymce.isIE) { + if (r.findText(s, b ? -1 : 1, fl)) { + r.scrollIntoView(); + r.select(); + } else + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); + + tinyMCEPopup.storeSelection(); + } else { + if (!w.find(s, ca, b, false, false, false, false)) + tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); + else + fix(); + } + } +}; + +tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog); diff --git a/tools/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/tools/tiny_mce/plugins/searchreplace/langs/en_dlg.js new file mode 100644 index 00000000..3dd3453d --- /dev/null +++ b/tools/tiny_mce/plugins/searchreplace/langs/en_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('en.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/searchreplace/searchreplace.htm b/tools/tiny_mce/plugins/searchreplace/searchreplace.htm new file mode 100644 index 00000000..bac5a184 --- /dev/null +++ b/tools/tiny_mce/plugins/searchreplace/searchreplace.htm @@ -0,0 +1,100 @@ + + + + {#searchreplace_dlg.replace_title} + + + + + + + + +
    + + +
    +
    + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + +
    +
    +
    + +
    + +
    + + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/spellchecker/css/content.css b/tools/tiny_mce/plugins/spellchecker/css/content.css new file mode 100644 index 00000000..656ce1ee --- /dev/null +++ b/tools/tiny_mce/plugins/spellchecker/css/content.css @@ -0,0 +1 @@ +.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} diff --git a/tools/tiny_mce/plugins/spellchecker/editor_plugin.js b/tools/tiny_mce/plugins/spellchecker/editor_plugin.js new file mode 100644 index 00000000..a9ec3b9c --- /dev/null +++ b/tools/tiny_mce/plugins/spellchecker/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});e.onInit.add(function(){if(e.settings.content_css!==false){e.dom.loadCSS(f+"/css/content.css")}});e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d$1$2');q=q.replace(g,'$1$2');j.replace(j.create("span",{"class":"mceItemHidden"},q),r)}}});l.moveToBookmark(m)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){l=b.getPos(h.getContentAreaContainer());d=h.controlManager.createDropMenu("spellcheckermenu",{offset_x:l.x,offset_y:l.y,"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/spellchecker/editor_plugin_src.js b/tools/tiny_mce/plugins/spellchecker/editor_plugin_src.js new file mode 100644 index 00000000..bd501d3d --- /dev/null +++ b/tools/tiny_mce/plugins/spellchecker/editor_plugin_src.js @@ -0,0 +1,417 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM; + + tinymce.create('tinymce.plugins.SpellcheckerPlugin', { + getInfo : function() { + return { + longname : 'Spellchecker', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + init : function(ed, url) { + var t = this, cm; + + t.url = url; + t.editor = ed; + t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}"); + + if (t.rpcUrl == '{backend}') { + // Sniff if the browser supports native spellchecking (Don't know of a better way) + if (tinymce.isIE) + return; + + t.hasSupport = true; + + // Disable the context menu when spellchecking is active + ed.onContextMenu.addToTop(function(ed, e) { + if (t.active) + return false; + }); + } + + // Register commands + ed.addCommand('mceSpellCheck', function() { + if (t.rpcUrl == '{backend}') { + // Enable/disable native spellchecker + t.editor.getBody().spellcheck = t.active = !t.active; + return; + } + + if (!t.active) { + ed.setProgressState(1); + t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) { + if (r.length > 0) { + t.active = 1; + t._markWords(r); + ed.setProgressState(0); + ed.nodeChanged(); + } else { + ed.setProgressState(0); + + if (ed.getParam('spellchecker_report_no_misspellings', true)) + ed.windowManager.alert('spellchecker.no_mpell'); + } + }); + } else + t._done(); + }); + + ed.onInit.add(function() { + if (ed.settings.content_css !== false) + ed.dom.loadCSS(url + '/css/content.css'); + }); + + ed.onClick.add(t._showMenu, t); + ed.onContextMenu.add(t._showMenu, t); + ed.onBeforeGetContent.add(function() { + if (t.active) + t._removeWords(); + }); + + ed.onNodeChange.add(function(ed, cm) { + cm.setActive('spellchecker', t.active); + }); + + ed.onSetContent.add(function() { + t._done(); + }); + + ed.onBeforeGetContent.add(function() { + t._done(); + }); + + ed.onBeforeExecCommand.add(function(ed, cmd) { + if (cmd == 'mceFullScreen') + t._done(); + }); + + // Find selected language + t.languages = {}; + each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) { + if (k.indexOf('+') === 0) { + k = k.substring(1); + t.selectedLang = v; + } + + t.languages[k] = v; + }); + }, + + createControl : function(n, cm) { + var t = this, c, ed = t.editor; + + if (n == 'spellchecker') { + // Use basic button if we use the native spellchecker + if (t.rpcUrl == '{backend}') { + // Create simple toggle button if we have native support + if (t.hasSupport) + c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); + + return c; + } + + c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); + + c.onRenderMenu.add(function(c, m) { + m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + each(t.languages, function(v, k) { + var o = {icon : 1}, mi; + + o.onclick = function() { + mi.setSelected(1); + t.selectedItem.setSelected(0); + t.selectedItem = mi; + t.selectedLang = v; + }; + + o.title = k; + mi = m.add(o); + mi.setSelected(v == t.selectedLang); + + if (v == t.selectedLang) + t.selectedItem = mi; + }) + }); + + return c; + } + }, + + // Internal functions + + _walk : function(n, f) { + var d = this.editor.getDoc(), w; + + if (d.createTreeWalker) { + w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); + + while ((n = w.nextNode()) != null) + f.call(this, n); + } else + tinymce.walk(n, f, 'childNodes'); + }, + + _getSeparators : function() { + var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c'); + + // Build word separator regexp + for (i=0; i$1$2'); + v = v.replace(r3, '$1$2'); + + dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n); + } + } + }); + + se.moveToBookmark(b); + }, + + _showMenu : function(ed, e) { + var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()), wordSpan = e.target; + + e = 0; // Fixes IE memory leak + + if (!m) { + p1 = DOM.getPos(ed.getContentAreaContainer()); + //p2 = DOM.getPos(ed.getContainer()); + + m = ed.controlManager.createDropMenu('spellcheckermenu', { + offset_x : p1.x, + offset_y : p1.y, + 'class' : 'mceNoIcons' + }); + + t._menu = m; + } + + if (dom.hasClass(wordSpan, 'mceItemHiddenSpellWord')) { + m.removeAll(); + m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + + t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(wordSpan.innerHTML)], function(r) { + var ignoreRpc; + + m.removeAll(); + + if (r.length > 0) { + m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + each(r, function(v) { + m.add({title : v, onclick : function() { + dom.replace(ed.getDoc().createTextNode(v), wordSpan); + t._checkDone(); + }}); + }); + + m.addSeparator(); + } else + m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); + + ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", ''); + m.add({ + title : 'spellchecker.ignore_word', + onclick : function() { + var word = wordSpan.innerHTML; + + dom.remove(wordSpan, 1); + t._checkDone(); + + // tell the server if we need to + if (ignoreRpc) { + ed.setProgressState(1); + t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) { + ed.setProgressState(0); + }); + } + } + }); + + m.add({ + title : 'spellchecker.ignore_words', + onclick : function() { + var word = wordSpan.innerHTML; + + t._removeWords(dom.decode(word)); + t._checkDone(); + + // tell the server if we need to + if (ignoreRpc) { + ed.setProgressState(1); + t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) { + ed.setProgressState(0); + }); + } + } + }); + + + if (t.editor.getParam("spellchecker_enable_learn_rpc")) { + m.add({ + title : 'spellchecker.learn_word', + onclick : function() { + var word = wordSpan.innerHTML; + + dom.remove(wordSpan, 1); + t._checkDone(); + + ed.setProgressState(1); + t._sendRPC('learnWord', [t.selectedLang, word], function(r) { + ed.setProgressState(0); + }); + } + }); + } + + m.update(); + }); + + ed.selection.select(wordSpan); + p1 = dom.getPos(wordSpan); + m.showMenu(p1.x, p1.y + wordSpan.offsetHeight - vp.y); + + return tinymce.dom.Event.cancel(e); + } else + m.hideMenu(); + }, + + _checkDone : function() { + var t = this, ed = t.editor, dom = ed.dom, o; + + each(dom.select('span'), function(n) { + if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) { + o = true; + return false; + } + }); + + if (!o) + t._done(); + }, + + _done : function() { + var t = this, la = t.active; + + if (t.active) { + t.active = 0; + t._removeWords(); + + if (t._menu) + t._menu.hideMenu(); + + if (la) + t.editor.nodeChanged(); + } + }, + + _sendRPC : function(m, p, cb) { + var t = this; + + JSONRequest.sendRPC({ + url : t.rpcUrl, + method : m, + params : p, + success : cb, + error : function(e, x) { + t.editor.setProgressState(0); + t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText)); + } + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin); +})(); diff --git a/tools/tiny_mce/plugins/spellchecker/img/wline.gif b/tools/tiny_mce/plugins/spellchecker/img/wline.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d0a4dbca03cc13177a359a5f175dda819fdf464 GIT binary patch literal 46 ycmZ?wbhEHbWMN=tXkcXcqowu#|9{1wEQ|~cj0`#qKmd|qU}ANVOOs?}um%7FLkRf* literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/plugins/style/css/props.css b/tools/tiny_mce/plugins/style/css/props.css new file mode 100644 index 00000000..5550b093 --- /dev/null +++ b/tools/tiny_mce/plugins/style/css/props.css @@ -0,0 +1,13 @@ +#text_font {width:250px;} +#text_size {width:70px;} +.mceAddSelectValue {background:#DDD;} +select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} +#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} +#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} +#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} +.panel_wrapper div.current {padding-top:10px;height:230px;} +.delim {border-left:1px solid gray;} +.tdelim {border-bottom:1px solid gray;} +#block_display {width:145px;} +#list_type {width:115px;} +.disabled {background:#EEE;} diff --git a/tools/tiny_mce/plugins/style/editor_plugin.js b/tools/tiny_mce/plugins/style/editor_plugin.js new file mode 100644 index 00000000..cab2153c --- /dev/null +++ b/tools/tiny_mce/plugins/style/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/style/editor_plugin_src.js b/tools/tiny_mce/plugins/style/editor_plugin_src.js new file mode 100644 index 00000000..c09d5e81 --- /dev/null +++ b/tools/tiny_mce/plugins/style/editor_plugin_src.js @@ -0,0 +1,55 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.StylePlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceStyleProps', function() { + ed.windowManager.open({ + file : url + '/props.htm', + width : 480 + parseInt(ed.getLang('style.delta_width', 0)), + height : 320 + parseInt(ed.getLang('style.delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + style_text : ed.selection.getNode().style.cssText + }); + }); + + ed.addCommand('mceSetElementStyle', function(ui, v) { + if (e = ed.selection.getNode()) { + ed.dom.setAttrib(e, 'style', v); + ed.execCommand('mceRepaint'); + } + }); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setDisabled('styleprops', n.nodeName === 'BODY'); + }); + + // Register buttons + ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); + }, + + getInfo : function() { + return { + longname : 'Style', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/style/js/props.js b/tools/tiny_mce/plugins/style/js/props.js new file mode 100644 index 00000000..1e73806d --- /dev/null +++ b/tools/tiny_mce/plugins/style/js/props.js @@ -0,0 +1,641 @@ +tinyMCEPopup.requireLangPack(); + +var defaultFonts = "" + + "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Courier New, Courier, mono=Courier New, Courier, mono;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + + "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + + "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; + +var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; +var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; +var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%"; +var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; +var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; +var defaultTextStyle = "normal;italic;oblique"; +var defaultVariant = "normal;small-caps"; +var defaultLineHeight = "normal"; +var defaultAttachment = "fixed;scroll"; +var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; +var defaultPosH = "left;center;right"; +var defaultPosV = "top;center;bottom"; +var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; +var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; +var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; +var defaultBorderWidth = "thin;medium;thick"; +var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; + +function init() { + var ce = document.getElementById('container'), h; + + ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); + + h = getBrowserHTML('background_image_browser','background_image','image','advimage'); + document.getElementById("background_image_browser").innerHTML = h; + + document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); + document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); + document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); + document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); + document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); + document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); + + fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); + fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); + fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); + fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); + fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); + fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); + fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); + fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); + fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); + + fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); + fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); + + fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); + fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); + fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); + fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); + fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); + fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); + fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); + + fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); + fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); + fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); + + fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); + + fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); + fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); + + fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); + fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); + + fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); + + fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); + + TinyMCE_EditableSelects.init(); + setupFormData(); + showDisabledControls(); +} + +function setupFormData() { + var ce = document.getElementById('container'), f = document.forms[0], s, b, i; + + // Setup text fields + + selectByValue(f, 'text_font', ce.style.fontFamily, true, true); + selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); + selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); + selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); + selectByValue(f, 'text_style', ce.style.fontStyle, true, true); + selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); + selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); + selectByValue(f, 'text_case', ce.style.textTransform, true, true); + selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); + f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color); + updateColor('text_color_pick', 'text_color'); + f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); + f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); + f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); + f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); + + // Setup background fields + + f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor); + updateColor('background_color_pick', 'background_color'); + f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); + selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); + selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); + selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); + selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); + selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); + + // Setup block fields + + selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); + selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); + selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); + selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); + selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); + selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); + f.block_text_indent.value = getNum(ce.style.textIndent); + selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); + selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); + selectByValue(f, 'block_display', ce.style.display, true, true); + + // Setup box fields + + f.box_width.value = getNum(ce.style.width); + selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); + + f.box_height.value = getNum(ce.style.height); + selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); + + if (tinymce.isGecko) + selectByValue(f, 'box_float', ce.style.cssFloat, true, true); + else + selectByValue(f, 'box_float', ce.style.styleFloat, true, true); + + selectByValue(f, 'box_clear', ce.style.clear, true, true); + + setupBox(f, ce, 'box_padding', 'padding', ''); + setupBox(f, ce, 'box_margin', 'margin', ''); + + // Setup border fields + + setupBox(f, ce, 'border_style', 'border', 'Style'); + setupBox(f, ce, 'border_width', 'border', 'Width'); + setupBox(f, ce, 'border_color', 'border', 'Color'); + + updateColor('border_color_top_pick', 'border_color_top'); + updateColor('border_color_right_pick', 'border_color_right'); + updateColor('border_color_bottom_pick', 'border_color_bottom'); + updateColor('border_color_left_pick', 'border_color_left'); + + f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value); + f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value); + f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value); + f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value); + + // Setup list fields + + selectByValue(f, 'list_type', ce.style.listStyleType, true, true); + selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); + f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + + // Setup box fields + + selectByValue(f, 'positioning_type', ce.style.position, true, true); + selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); + selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); + f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; + + f.positioning_width.value = getNum(ce.style.width); + selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); + + f.positioning_height.value = getNum(ce.style.height); + selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); + + setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']); + + s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); + s = s.replace(/,/g, ' '); + + if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = getNum(getVal(s, 1)); + selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); + f.positioning_clip_bottom.value = getNum(getVal(s, 2)); + selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); + f.positioning_clip_left.value = getNum(getVal(s, 3)); + selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); + } else { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; + } + +// setupBox(f, ce, '', 'border', 'Color'); +} + +function getMeasurement(s) { + return s.replace(/^([0-9.]+)(.*)$/, "$2"); +} + +function getNum(s) { + if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s)) + return s.replace(/[^0-9.]/g, ''); + + return s; +} + +function inStr(s, n) { + return new RegExp(n, 'gi').test(s); +} + +function getVal(s, i) { + var a = s.split(' '); + + if (a.length > 1) + return a[i]; + + return ""; +} + +function setValue(f, n, v) { + if (f.elements[n].type == "text") + f.elements[n].value = v; + else + selectByValue(f, n, v, true, true); +} + +function setupBox(f, ce, fp, pr, sf, b) { + if (typeof(b) == "undefined") + b = ['Top', 'Right', 'Bottom', 'Left']; + + if (isSame(ce, pr, sf, b)) { + f.elements[fp + "_same"].checked = true; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + f.elements[fp + "_right"].value = ""; + f.elements[fp + "_right"].disabled = true; + f.elements[fp + "_bottom"].value = ""; + f.elements[fp + "_bottom"].disabled = true; + f.elements[fp + "_left"].value = ""; + f.elements[fp + "_left"].disabled = true; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + f.elements[fp + "_left_measurement"].disabled = true; + f.elements[fp + "_bottom_measurement"].disabled = true; + f.elements[fp + "_right_measurement"].disabled = true; + } + } else { + f.elements[fp + "_same"].checked = false; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); + f.elements[fp + "_right"].disabled = false; + + setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); + f.elements[fp + "_bottom"].disabled = false; + + setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left"].disabled = false; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); + selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); + selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left_measurement"].disabled = false; + f.elements[fp + "_bottom_measurement"].disabled = false; + f.elements[fp + "_right_measurement"].disabled = false; + } + } +} + +function isSame(e, pr, sf, b) { + var a = [], i, x; + + if (typeof(b) == "undefined") + b = ['Top', 'Right', 'Bottom', 'Left']; + + if (typeof(sf) == "undefined" || sf == null) + sf = ""; + + a[0] = e.style[pr + b[0] + sf]; + a[1] = e.style[pr + b[1] + sf]; + a[2] = e.style[pr + b[2] + sf]; + a[3] = e.style[pr + b[3] + sf]; + + for (i=0; i 0 ? s.substring(1) : s; + + if (f.text_none.checked) + s = "none"; + + ce.style.textDecoration = s; + + // Build background styles + + ce.style.backgroundColor = f.background_color.value; + ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; + ce.style.backgroundRepeat = f.background_repeat.value; + ce.style.backgroundAttachment = f.background_attachment.value; + + if (f.background_hpos.value != "") { + s = ""; + s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; + s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); + ce.style.backgroundPosition = s; + } + + // Build block styles + + ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); + ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); + ce.style.verticalAlign = f.block_vertical_alignment.value; + ce.style.textAlign = f.block_text_align.value; + ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); + ce.style.whiteSpace = f.block_whitespace.value; + ce.style.display = f.block_display.value; + + // Build box styles + + ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); + ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); + ce.style.styleFloat = f.box_float.value; + + if (tinymce.isGecko) + ce.style.cssFloat = f.box_float.value; + + ce.style.clear = f.box_clear.value; + + if (!f.box_padding_same.checked) { + ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); + ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); + ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); + } else + ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + + if (!f.box_margin_same.checked) { + ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); + ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); + ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); + } else + ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + + // Build border styles + + if (!f.border_style_same.checked) { + ce.style.borderTopStyle = f.border_style_top.value; + ce.style.borderRightStyle = f.border_style_right.value; + ce.style.borderBottomStyle = f.border_style_bottom.value; + ce.style.borderLeftStyle = f.border_style_left.value; + } else + ce.style.borderStyle = f.border_style_top.value; + + if (!f.border_width_same.checked) { + ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); + ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); + ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); + } else + ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + + if (!f.border_color_same.checked) { + ce.style.borderTopColor = f.border_color_top.value; + ce.style.borderRightColor = f.border_color_right.value; + ce.style.borderBottomColor = f.border_color_bottom.value; + ce.style.borderLeftColor = f.border_color_left.value; + } else + ce.style.borderColor = f.border_color_top.value; + + // Build list styles + + ce.style.listStyleType = f.list_type.value; + ce.style.listStylePosition = f.list_position.value; + ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; + + // Build positioning styles + + ce.style.position = f.positioning_type.value; + ce.style.visibility = f.positioning_visibility.value; + + if (ce.style.width == "") + ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); + + if (ce.style.height == "") + ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); + + ce.style.zIndex = f.positioning_zindex.value; + ce.style.overflow = f.positioning_overflow.value; + + if (!f.positioning_placement_same.checked) { + ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); + ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); + ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); + } else { + s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.top = s; + ce.style.right = s; + ce.style.bottom = s; + ce.style.left = s; + } + + if (!f.positioning_clip_same.checked) { + s = "rect("; + s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); + s += ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } else { + s = "rect("; + t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; + s += t + " "; + s += t + " "; + s += t + " "; + s += t + ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } + + ce.style.cssText = ce.style.cssText; +} + +function isNum(s) { + return new RegExp('[0-9]+', 'g').test(s); +} + +function showDisabledControls() { + var f = document.forms, i, a; + + for (i=0; i 1) { + addSelectValue(f, s, p[0], p[1]); + + if (se) + selectByValue(f, s, p[1]); + } else { + addSelectValue(f, s, p[0], p[0]); + + if (se) + selectByValue(f, s, p[0]); + } + } +} + +function toggleSame(ce, pre) { + var el = document.forms[0].elements, i; + + if (ce.checked) { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = true; + el[pre + "_bottom"].disabled = true; + el[pre + "_left"].disabled = true; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = true; + el[pre + "_bottom_measurement"].disabled = true; + el[pre + "_left_measurement"].disabled = true; + } + } else { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = false; + el[pre + "_bottom"].disabled = false; + el[pre + "_left"].disabled = false; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = false; + el[pre + "_bottom_measurement"].disabled = false; + el[pre + "_left_measurement"].disabled = false; + } + } + + showDisabledControls(); +} + +function synch(fr, to) { + var f = document.forms[0]; + + f.elements[to].value = f.elements[fr].value; + + if (f.elements[fr + "_measurement"]) + selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); +} + +tinyMCEPopup.onInit.add(init); diff --git a/tools/tiny_mce/plugins/style/langs/en_dlg.js b/tools/tiny_mce/plugins/style/langs/en_dlg.js new file mode 100644 index 00000000..f311421f --- /dev/null +++ b/tools/tiny_mce/plugins/style/langs/en_dlg.js @@ -0,0 +1,70 @@ +tinyMCE.addI18n('en.style_dlg',{ +title:"Edit CSS Style", +apply:"Apply", +text_tab:"Text", +background_tab:"Background", +block_tab:"Block", +box_tab:"Box", +border_tab:"Border", +list_tab:"List", +positioning_tab:"Positioning", +text_props:"Text", +text_font:"Font", +text_size:"Size", +text_weight:"Weight", +text_style:"Style", +text_variant:"Variant", +text_lineheight:"Line height", +text_case:"Case", +text_color:"Color", +text_decoration:"Decoration", +text_overline:"overline", +text_underline:"underline", +text_striketrough:"strikethrough", +text_blink:"blink", +text_none:"none", +background_color:"Background color", +background_image:"Background image", +background_repeat:"Repeat", +background_attachment:"Attachment", +background_hpos:"Horizontal position", +background_vpos:"Vertical position", +block_wordspacing:"Word spacing", +block_letterspacing:"Letter spacing", +block_vertical_alignment:"Vertical alignment", +block_text_align:"Text align", +block_text_indent:"Text indent", +block_whitespace:"Whitespace", +block_display:"Display", +box_width:"Width", +box_height:"Height", +box_float:"Float", +box_clear:"Clear", +padding:"Padding", +same:"Same for all", +top:"Top", +right:"Right", +bottom:"Bottom", +left:"Left", +margin:"Margin", +style:"Style", +width:"Width", +height:"Height", +color:"Color", +list_type:"Type", +bullet_image:"Bullet image", +position:"Position", +positioning_type:"Type", +visibility:"Visibility", +zindex:"Z-index", +overflow:"Overflow", +placement:"Placement", +clip:"Clip", +text:"Text", +background:"Background", +block:"Block", +box:"Box", +border:"Border", +list:"List", +position:"Position" +}); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/style/props.htm b/tools/tiny_mce/plugins/style/props.htm new file mode 100644 index 00000000..5e6b3566 --- /dev/null +++ b/tools/tiny_mce/plugins/style/props.htm @@ -0,0 +1,838 @@ + + + + {#style_dlg.title} + + + + + + + + + + +
    + + +
    +
    +
    + {#style_dlg.text} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
      + + +
    +
    + +
    + + + +
    + + + + + + +
    + +   + + +
    +
    + +
    + + + + + +
     
    +
    {#style_dlg.text_decoration} + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + {#style_dlg.background} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
     
    +
    + + + + +
     
    +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    +
    +
    + +
    +
    + {#style_dlg.block} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + + +
    +
    +
    +
    + +
    +
    + {#style_dlg.box} + + + + + + + + + + + + + + +
    + + + + + + +
      + + +
    +
       
    + + + + + + +
      + + +
    +
       
    +
    +
    + {#style_dlg.padding} + + + + + + + + + + + + + + + + + + + + + + +
     
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    +
    +
    + +
    +
    + {#style_dlg.margin} + + + + + + + + + + + + + + + + + + + + + + +
     
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    + + + + + + +
      + + +
    +
    +
    +
    +
    +
    + +
    +
    + {#style_dlg.border} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
          
    {#style_dlg.top}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    {#style_dlg.right}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    {#style_dlg.bottom}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    {#style_dlg.left}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    +
    +
    + +
    +
    + {#style_dlg.list} + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    + {#style_dlg.position} + + + + + + + + + + + + + + + + + + + + + +
       
    + + + + + + +
      + + +
    +
       
    + + + + + + +
      + + +
    +
       
    + +
    +
    + {#style_dlg.placement} + + + + + + + + + + + + + + + + + + + + + + +
     
    {#style_dlg.top} + + + + + + +
      + + +
    +
    {#style_dlg.right} + + + + + + +
      + + +
    +
    {#style_dlg.bottom} + + + + + + +
      + + +
    +
    {#style_dlg.left} + + + + + + +
      + + +
    +
    +
    +
    + +
    +
    + {#style_dlg.clip} + + + + + + + + + + + + + + + + + + + + + + +
     
    {#style_dlg.top} + + + + + + +
      + + +
    +
    {#style_dlg.right} + + + + + + +
      + + +
    +
    {#style_dlg.bottom} + + + + + + +
      + + +
    +
    {#style_dlg.left} + + + + + + +
      + + +
    +
    +
    +
    +
    +
    + +
    + +
    + + + +
    +
    + +
    +
    +
    + + + diff --git a/tools/tiny_mce/plugins/tabfocus/editor_plugin.js b/tools/tiny_mce/plugins/tabfocus/editor_plugin.js new file mode 100644 index 00000000..d18689dd --- /dev/null +++ b/tools/tiny_mce/plugins/tabfocus/editor_plugin.js @@ -0,0 +1 @@ +(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(r){n=c.select(":input:enabled,*[tabindex]");function i(s){return s.type!="hidden"&&s.tabIndex!="-1"&&!(n[m].style.display=="none")&&!(n[m].style.visibility=="hidden")}d(n,function(t,s){if(t.id==l.id){j=s;return false}});if(r>0){for(m=j+1;m=0;m--){if(i(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/tabfocus/editor_plugin_src.js b/tools/tiny_mce/plugins/tabfocus/editor_plugin_src.js new file mode 100644 index 00000000..1be152c7 --- /dev/null +++ b/tools/tiny_mce/plugins/tabfocus/editor_plugin_src.js @@ -0,0 +1,114 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode; + + tinymce.create('tinymce.plugins.TabFocusPlugin', { + init : function(ed, url) { + function tabCancel(ed, e) { + if (e.keyCode === 9) + return Event.cancel(e); + }; + + function tabHandler(ed, e) { + var x, i, f, el, v; + + function find(d) { + el = DOM.select(':input:enabled,*[tabindex]'); + function canSelect(e) { + return e.type != 'hidden' && + e.tabIndex != '-1' && + !(el[i].style.display == "none") && + !(el[i].style.visibility == "hidden"); + } + + each(el, function(e, i) { + if (e.id == ed.id) { + x = i; + return false; + } + }); + + if (d > 0) { + for (i = x + 1; i < el.length; i++) { + if (canSelect(el[i])) + return el[i]; + } + } else { + for (i = x - 1; i >= 0; i--) { + if (canSelect(el[i])) + return el[i]; + } + } + + return null; + }; + + if (e.keyCode === 9) { + v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next'))); + + if (v.length == 1) { + v[1] = v[0]; + v[0] = ':prev'; + } + + // Find element to focus + if (e.shiftKey) { + if (v[0] == ':prev') + el = find(-1); + else + el = DOM.get(v[0]); + } else { + if (v[1] == ':next') + el = find(1); + else + el = DOM.get(v[1]); + } + + if (el) { + if (el.id && (ed = tinymce.get(el.id || el.name))) + ed.focus(); + else + window.setTimeout(function() { + if (!tinymce.isWebKit) + window.focus(); + el.focus(); + }, 10); + + return Event.cancel(e); + } + } + }; + + ed.onKeyUp.add(tabCancel); + + if (tinymce.isGecko) { + ed.onKeyPress.add(tabHandler); + ed.onKeyDown.add(tabCancel); + } else + ed.onKeyDown.add(tabHandler); + + }, + + getInfo : function() { + return { + longname : 'Tabfocus', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/table/cell.htm b/tools/tiny_mce/plugins/table/cell.htm new file mode 100644 index 00000000..b62fa547 --- /dev/null +++ b/tools/tiny_mce/plugins/table/cell.htm @@ -0,0 +1,178 @@ + + + + {#table_dlg.cell_title} + + + + + + + + +
    + + +
    +
    +
    + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + +
    +
    +
    + +
    +
    + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    +
    + +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/table/css/cell.css b/tools/tiny_mce/plugins/table/css/cell.css new file mode 100644 index 00000000..a47cc1a1 --- /dev/null +++ b/tools/tiny_mce/plugins/table/css/cell.css @@ -0,0 +1,17 @@ +/* CSS file for cell dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#class { + width: 150px; +} \ No newline at end of file diff --git a/tools/tiny_mce/plugins/table/css/row.css b/tools/tiny_mce/plugins/table/css/row.css new file mode 100644 index 00000000..0e397db3 --- /dev/null +++ b/tools/tiny_mce/plugins/table/css/row.css @@ -0,0 +1,25 @@ +/* CSS file for row dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#rowtype,#align,#valign,#class,#height { + width: 150px; +} + +#height { + width: 50px; +} + +.col2 { + padding-left: 20px; +} diff --git a/tools/tiny_mce/plugins/table/css/table.css b/tools/tiny_mce/plugins/table/css/table.css new file mode 100644 index 00000000..8f107831 --- /dev/null +++ b/tools/tiny_mce/plugins/table/css/table.css @@ -0,0 +1,13 @@ +/* CSS file for table dialog in the table plugin */ + +.panel_wrapper div.current { + height: 245px; +} + +.advfield { + width: 200px; +} + +#class { + width: 150px; +} diff --git a/tools/tiny_mce/plugins/table/editor_plugin.js b/tools/tiny_mce/plugins/table/editor_plugin.js new file mode 100644 index 00000000..484f81c3 --- /dev/null +++ b/tools/tiny_mce/plugins/table/editor_plugin.js @@ -0,0 +1 @@ +(function(c){var d=c.each;function b(f,g){var h=g.ownerDocument,e=h.createRange(),j;e.setStartBefore(g);e.setEnd(f.endContainer,f.endOffset);j=h.createElement("body");j.appendChild(e.cloneContents());return j.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(G,F,J){var f,K,C,o;s();o=F.getParent(J.getStart(),"th,td");if(o){K=E(o);C=H();o=w(K.x,K.y)}function z(M,L){M=M.cloneNode(L);M.removeAttribute("id");return M}function s(){var L=0;f=[];d(["thead","tbody","tfoot"],function(M){var N=F.select("> "+M+" tr",G);d(N,function(O,P){P+=L;d(F.select("> td, > th",O),function(V,Q){var R,S,T,U;if(f[P]){while(f[P][Q]){Q++}}T=h(V,"rowspan");U=h(V,"colspan");for(S=P;S'}return false}},"childNodes");L=z(L,false);L.rowSpan=L.colSpan=1;if(M){L.appendChild(M)}else{if(!c.isIE){L.innerHTML='
    '}}return L}function q(){var L=F.createRng();d(F.select("tr",G),function(M){if(M.cells.length==0){F.remove(M)}});if(F.select("tr",G).length==0){L.setStartAfter(G);L.setEndAfter(G);J.setRng(L);F.remove(G);return}d(F.select("thead,tbody,tfoot",G),function(M){if(M.rows.length==0){F.remove(M)}});s();row=f[Math.min(f.length-1,K.y)];if(row){J.select(row[Math.min(row.length-1,K.x)].elm,true);J.collapse(true)}}function t(R,P,T,Q){var O,M,L,N,S;O=f[P][R].elm.parentNode;for(L=1;L<=T;L++){O=F.getNext(O,"tr");if(O){for(M=R;M>=0;M--){S=f[P+L][M].elm;if(S.parentNode==O){for(N=1;N<=Q;N++){F.insertAfter(e(S),S)}break}}if(M==-1){for(N=1;N<=Q;N++){O.insertBefore(e(O.cells[0]),O.cells[0])}}}}}function B(){d(f,function(L,M){d(L,function(O,N){var R,Q,S,P;if(j(O)){O=O.elm;R=h(O,"colspan");Q=h(O,"rowspan");if(R>1||Q>1){O.colSpan=O.rowSpan=1;for(P=0;P1){Q.rowSpan=rowSpan+1;continue}}else{if(L>0&&f[L-1][P]){T=f[L-1][P].elm;rowSpan=h(T,"rowspan");if(rowSpan>1){T.rowSpan=rowSpan+1;continue}}}M=e(Q);M.colSpan=Q.colSpan;S.appendChild(M);N=Q}}if(S.hasChildNodes()){if(!O){F.insertAfter(S,R)}else{R.parentNode.insertBefore(S,R)}}}function g(M){var N,L;d(f,function(O,P){d(O,function(R,Q){if(j(R)){N=Q;if(M){return false}}});if(M){return !N}});d(f,function(R,S){var O=R[N].elm,P,Q;if(O!=L){Q=h(O,"colspan");P=h(O,"rowspan");if(Q==1){if(!M){F.insertAfter(e(O),O);t(N,S,P-1,Q)}else{O.parentNode.insertBefore(e(O),O);t(N,S,P-1,Q)}}else{O.colSpan++}L=O}})}function n(){var L=[];d(f,function(M,N){d(M,function(P,O){if(j(P)&&c.inArray(L,O)===-1){d(f,function(S){var Q=S[O].elm,R;R=h(Q,"colspan");if(R>1){Q.colSpan=R-1}else{F.remove(Q)}});L.push(O)}})});q()}function m(){var M;function L(P){var O,Q,N;O=F.getNext(P,"tr");d(P.cells,function(R){var S=h(R,"rowspan");if(S>1){R.rowSpan=S-1;Q=E(R);t(Q.x,Q.y,1,1)}});Q=E(P.cells[0]);d(f[Q.y],function(R){var S;R=R.elm;if(R!=N){S=h(R,"rowspan");if(S<=1){F.remove(R)}else{R.rowSpan=S-1}N=R}})}M=k();d(M.reverse(),function(N){L(N)});q()}function D(){var L=k();F.remove(L);q();return L}function I(){var L=k();d(L,function(N,M){L[M]=z(N,true)});return L}function A(N,M){var O=k(),L=O[M?0:O.length-1],P=L.cells.length;d(f,function(R){var Q;P=0;d(R,function(T,S){if(T.real){P+=T.colspan}if(T.elm.parentNode==L){Q=1}});if(Q){return false}});if(!M){N.reverse()}d(N,function(S){var R=S.cells.length,Q;for(i=0;iM){M=Q}if(P>L){L=P}if(R.real){T=R.colspan-1;S=R.rowspan-1;if(T){if(Q+T>M){M=Q+T}}if(S){if(P+S>L){L=P+S}}}}})});return{x:M,y:L}}function u(R){var O,N,T,S,M,L,P,Q;C=E(R);if(K&&C){O=Math.min(K.x,C.x);N=Math.min(K.y,C.y);T=Math.max(K.x,C.x);S=Math.max(K.y,C.y);M=T;L=S;for(y=N;y<=L;y++){R=f[y][O];if(!R.real){if(O-(R.colspan-1)M){M=x+P}}if(Q){if(y+Q>L){L=y+Q}}}}}F.removeClass(F.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=N;y<=L;y++){for(x=O;x<=M;x++){F.addClass(f[y][x].elm,"mceSelected")}}}}c.extend(this,{deleteTable:r,split:B,merge:p,insertRow:l,insertCol:g,deleteCols:n,deleteRows:m,cutRows:D,copyRows:I,pasteRows:A,getPos:E,setStartCell:v,setEndCell:u})}c.create("tinymce.plugins.TablePlugin",{init:function(f,g){var e,k;function j(n){var m=f.selection,l=f.dom.getParent(n||m.getNode(),"table");if(l){return new a(l,f.dom,m)}}function h(){f.getBody().style.webkitUserSelect="";f.dom.removeClass(f.dom.select("td.mceSelected,th.mceSelected"),"mceSelected")}d([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(l){f.addButton(l[0],{title:l[1],cmd:l[2],ui:l[3]})});if(!c.isIE){f.onClick.add(function(l,m){m=m.target;if(m.nodeName==="TABLE"){l.selection.select(m)}})}f.onNodeChange.add(function(m,l,q){var o;q=m.selection.getStart();o=m.dom.getParent(q,"td,th,caption");l.setActive("table",q.nodeName==="TABLE"||!!o);if(o&&o.nodeName==="CAPTION"){o=0}l.setDisabled("delete_table",!o);l.setDisabled("delete_col",!o);l.setDisabled("delete_table",!o);l.setDisabled("delete_row",!o);l.setDisabled("col_after",!o);l.setDisabled("col_before",!o);l.setDisabled("row_after",!o);l.setDisabled("row_before",!o);l.setDisabled("row_props",!o);l.setDisabled("cell_props",!o);l.setDisabled("split_cells",!o);l.setDisabled("merge_cells",!o)});f.onInit.add(function(m){var l,p,q=m.dom,n;e=m.windowManager;m.onMouseDown.add(function(r,s){if(s.button!=2){h();p=q.getParent(s.target,"td,th");l=q.getParent(p,"table")}});q.bind(m.getDoc(),"mouseover",function(u){var s,r,t=u.target;if(p&&(n||t!=p)&&(t.nodeName=="TD"||t.nodeName=="TH")){r=q.getParent(t,"table");if(r==l){if(!n){n=j(r);n.setStartCell(p);m.getBody().style.webkitUserSelect="none"}n.setEndCell(t)}s=m.selection.getSel();if(s.removeAllRanges){s.removeAllRanges()}else{s.empty()}u.preventDefault()}});m.onMouseUp.add(function(A,B){var s,u=A.selection,C,D=u.getSel(),r,v,t,z;if(p){if(n){A.getBody().style.webkitUserSelect=""}function w(E,G){var F=new c.dom.TreeWalker(E,E);do{if(E.nodeType==3&&c.trim(E.nodeValue).length!=0){if(G){s.setStart(E,0)}else{s.setEnd(E,E.nodeValue.length)}return}if(E.nodeName=="BR"){if(G){s.setStartBefore(E)}else{s.setEndBefore(E)}return}}while(E=(G?F.next():F.prev()))}C=q.select("td.mceSelected,th.mceSelected");if(C.length>0){s=q.createRng();v=C[0];z=C[C.length-1];w(v,1);r=new c.dom.TreeWalker(v,q.getParent(C[0],"table"));do{if(v.nodeName=="TD"||v.nodeName=="TH"){if(!q.hasClass(v,"mceSelected")){break}t=v}}while(v=r.next());w(t);u.setRng(s)}A.nodeChanged();p=n=l=null}});m.onKeyUp.add(function(r,s){h()});if(m&&m.plugins.contextmenu){m.plugins.contextmenu.onContextMenu.add(function(t,r,v){var w,u=m.selection,s=u.getNode()||m.getBody();if(m.dom.getParent(v,"td")||m.dom.getParent(v,"th")||m.dom.select("td.mceSelected,th.mceSelected").length){r.removeAll();if(s.nodeName=="A"&&!m.dom.getAttrib(s,"name")){r.add({title:"advanced.link_desc",icon:"link",cmd:m.plugins.advlink?"mceAdvLink":"mceLink",ui:true});r.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});r.addSeparator()}if(s.nodeName=="IMG"&&s.className.indexOf("mceItem")==-1){r.add({title:"advanced.image_desc",icon:"image",cmd:m.plugins.advimage?"mceAdvImage":"mceImage",ui:true});r.addSeparator()}r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});r.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});r.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});r.addSeparator();w=r.addMenu({title:"table.cell"});w.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});w.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});w.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});w=r.addMenu({title:"table.row"});w.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});w.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});w.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});w.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});w.addSeparator();w.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});w.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});w.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!k);w.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!k);w=r.addMenu({title:"table.col"});w.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});w.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});w.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(!c.isIE){function o(){var r;for(r=m.getBody().lastChild;r&&r.nodeType==3&&!r.nodeValue.length;r=r.previousSibling){}if(r&&r.nodeName=="TABLE"){m.dom.add(m.getBody(),"p",null,'
    ')}}if(c.isGecko){m.onKeyDown.add(function(s,u){var r,t,v=s.dom;if(u.keyCode==37||u.keyCode==38){r=s.selection.getRng();t=v.getParent(r.startContainer,"table");if(t&&s.getBody().firstChild==t){if(b(r,t)){r=v.createRng();r.setStartBefore(t);r.setEndBefore(t);s.selection.setRng(r);u.preventDefault()}}}})}m.onKeyUp.add(o);m.onSetContent.add(o);m.onVisualAid.add(o);m.onPreProcess.add(function(r,t){var s=t.node.lastChild;if(s&&s.childNodes.length==1&&s.firstChild.nodeName=="BR"){r.dom.remove(s)}});o()}});d({mceTableSplitCells:function(l){l.split()},mceTableMergeCells:function(m){var n,o,l;l=f.dom.getParent(f.selection.getNode(),"th,td");if(l){n=l.rowSpan;o=l.colSpan}if(!f.dom.select("td.mceSelected,th.mceSelected").length){e.open({url:g+"/merge_cells.htm",width:240+parseInt(f.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(f.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:n,cols:o,onaction:function(p){m.merge(l,p.cols,p.rows)},plugin_url:g})}else{m.merge()}},mceTableInsertRowBefore:function(l){l.insertRow(true)},mceTableInsertRowAfter:function(l){l.insertRow()},mceTableInsertColBefore:function(l){l.insertCol(true)},mceTableInsertColAfter:function(l){l.insertCol()},mceTableDeleteCol:function(l){l.deleteCols()},mceTableDeleteRow:function(l){l.deleteRows()},mceTableCutRow:function(l){k=l.cutRows()},mceTableCopyRow:function(l){k=l.copyRows()},mceTablePasteRowBefore:function(l){l.pasteRows(k,true)},mceTablePasteRowAfter:function(l){l.pasteRows(k)},mceTableDelete:function(l){l.deleteTable()}},function(m,l){f.addCommand(l,function(){var n=j();if(n){m(n);f.execCommand("mceRepaint");h()}})});d({mceInsertTable:function(l){e.open({url:g+"/table.htm",width:400+parseInt(f.getLang("table.table_delta_width",0)),height:320+parseInt(f.getLang("table.table_delta_height",0)),inline:1},{plugin_url:g,action:l?l.action:0})},mceTableRowProps:function(){e.open({url:g+"/row.htm",width:400+parseInt(f.getLang("table.rowprops_delta_width",0)),height:295+parseInt(f.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:g})},mceTableCellProps:function(){e.open({url:g+"/cell.htm",width:400+parseInt(f.getLang("table.cellprops_delta_width",0)),height:295+parseInt(f.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:g})}},function(m,l){f.addCommand(l,function(n,o){m(o)})})}});c.PluginManager.add("table",c.plugins.TablePlugin)})(tinymce); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/table/editor_plugin_src.js b/tools/tiny_mce/plugins/table/editor_plugin_src.js new file mode 100644 index 00000000..a41f38e8 --- /dev/null +++ b/tools/tiny_mce/plugins/table/editor_plugin_src.js @@ -0,0 +1,1139 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var each = tinymce.each; + + // Checks if the selection/caret is at the start of the specified block element + function isAtStart(rng, par) { + var doc = par.ownerDocument, rng2 = doc.createRange(), elm; + + rng2.setStartBefore(par); + rng2.setEnd(rng.endContainer, rng.endOffset); + + elm = doc.createElement('body'); + elm.appendChild(rng2.cloneContents()); + + // Check for text characters of other elements that should be treated as content + return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0; + }; + + /** + * Table Grid class. + */ + function TableGrid(table, dom, selection) { + var grid, startPos, endPos, selectedCell; + + buildGrid(); + selectedCell = dom.getParent(selection.getStart(), 'th,td'); + if (selectedCell) { + startPos = getPos(selectedCell); + endPos = findEndPos(); + selectedCell = getCell(startPos.x, startPos.y); + } + + function cloneNode(node, children) { + node = node.cloneNode(children); + node.removeAttribute('id'); + + return node; + } + + function buildGrid() { + var startY = 0; + + grid = []; + + each(['thead', 'tbody', 'tfoot'], function(part) { + var rows = dom.select('> ' + part + ' tr', table); + + each(rows, function(tr, y) { + y += startY; + + each(dom.select('> td, > th', tr), function(td, x) { + var x2, y2, rowspan, colspan; + + // Skip over existing cells produced by rowspan + if (grid[y]) { + while (grid[y][x]) + x++; + } + + // Get col/rowspan from cell + rowspan = getSpanVal(td, 'rowspan'); + colspan = getSpanVal(td, 'colspan'); + + // Fill out rowspan/colspan right and down + for (y2 = y; y2 < y + rowspan; y2++) { + if (!grid[y2]) + grid[y2] = []; + + for (x2 = x; x2 < x + colspan; x2++) { + grid[y2][x2] = { + part : part, + real : y2 == y && x2 == x, + elm : td, + rowspan : rowspan, + colspan : colspan + }; + } + } + }); + }); + + startY += rows.length; + }); + }; + + function getCell(x, y) { + var row; + + row = grid[y]; + if (row) + return row[x]; + }; + + function getSpanVal(td, name) { + return parseInt(td.getAttribute(name) || 1); + }; + + function isCellSelected(cell) { + return dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell; + }; + + function getSelectedRows() { + var rows = []; + + each(table.rows, function(row) { + each(row.cells, function(cell) { + if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { + rows.push(row); + return false; + } + }); + }); + + return rows; + }; + + function deleteTable() { + var rng = dom.createRng(); + + rng.setStartAfter(table); + rng.setEndAfter(table); + + selection.setRng(rng); + + dom.remove(table); + }; + + function cloneCell(cell) { + var formatNode; + + // Clone formats + tinymce.walk(cell, function(node) { + var curNode; + + if (node.nodeType == 3) { + each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { + node = cloneNode(node, false); + + if (!formatNode) + formatNode = curNode = node; + else if (curNode) + curNode.appendChild(node); + + curNode = node; + }); + + // Add something to the inner node + if (curNode) + curNode.innerHTML = tinymce.isIE ? ' ' : '
    '; + + return false; + } + }, 'childNodes'); + + cell = cloneNode(cell, false); + cell.rowSpan = cell.colSpan = 1; + + if (formatNode) { + cell.appendChild(formatNode); + } else { + if (!tinymce.isIE) + cell.innerHTML = '
    '; + } + + return cell; + }; + + function cleanup() { + var rng = dom.createRng(); + + // Empty rows + each(dom.select('tr', table), function(tr) { + if (tr.cells.length == 0) + dom.remove(tr); + }); + + // Empty table + if (dom.select('tr', table).length == 0) { + rng.setStartAfter(table); + rng.setEndAfter(table); + selection.setRng(rng); + dom.remove(table); + return; + } + + // Empty header/body/footer + each(dom.select('thead,tbody,tfoot', table), function(part) { + if (part.rows.length == 0) + dom.remove(part); + }); + + // Restore selection to start position if it still exists + buildGrid(); + + // Restore the selection to the closest table position + row = grid[Math.min(grid.length - 1, startPos.y)]; + if (row) { + selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); + selection.collapse(true); + } + }; + + function fillLeftDown(x, y, rows, cols) { + var tr, x2, r, c, cell; + + tr = grid[y][x].elm.parentNode; + for (r = 1; r <= rows; r++) { + tr = dom.getNext(tr, 'tr'); + + if (tr) { + // Loop left to find real cell + for (x2 = x; x2 >= 0; x2--) { + cell = grid[y + r][x2].elm; + + if (cell.parentNode == tr) { + // Append clones after + for (c = 1; c <= cols; c++) + dom.insertAfter(cloneCell(cell), cell); + + break; + } + } + + if (x2 == -1) { + // Insert nodes before first cell + for (c = 1; c <= cols; c++) + tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); + } + } + } + }; + + function split() { + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan, newCell, i; + + if (isCellSelected(cell)) { + cell = cell.elm; + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan > 1 || rowSpan > 1) { + cell.colSpan = cell.rowSpan = 1; + + // Insert cells right + for (i = 0; i < colSpan - 1; i++) + dom.insertAfter(cloneCell(cell), cell); + + fillLeftDown(x, y, rowSpan - 1, colSpan); + } + } + }); + }); + }; + + function merge(cell, cols, rows) { + var startX, startY, endX, endY, x, y, startCell, endCell, cell, children; + + // Use specified cell and cols/rows + if (cell) { + pos = getPos(cell); + startX = pos.x; + startY = pos.y; + endX = startX + (cols - 1); + endY = startY + (rows - 1); + } else { + // Use selection + startX = startPos.x; + startY = startPos.y; + endX = endPos.x; + endY = endPos.y; + } + + // Find start/end cells + startCell = getCell(startX, startY); + endCell = getCell(endX, endY); + + // Check if the cells exists and if they are of the same part for example tbody = tbody + if (startCell && endCell && startCell.part == endCell.part) { + // Split and rebuild grid + split(); + buildGrid(); + + // Set row/col span to start cell + startCell = getCell(startX, startY).elm; + startCell.colSpan = (endX - startX) + 1; + startCell.rowSpan = (endY - startY) + 1; + + // Remove other cells and add it's contents to the start cell + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + cell = grid[y][x].elm; + + if (cell != startCell) { + // Move children to startCell + children = tinymce.grep(cell.childNodes); + each(children, function(node, i) { + // Jump over last BR element + if (node.nodeName != 'BR' || i != children.length - 1) + startCell.appendChild(node); + }); + + // Remove cell + dom.remove(cell); + } + } + } + + // Remove empty rows etc and restore caret location + cleanup(); + } + }; + + function insertRow(before) { + var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell; + + // Find first/last row + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + cell = cell.elm; + rowElm = cell.parentNode; + newRow = cloneNode(rowElm, false); + posY = y; + + if (before) + return false; + } + }); + + if (before) + return !posY; + }); + + for (x = 0; x < grid[0].length; x++) { + cell = grid[posY][x].elm; + + if (cell != lastCell) { + if (!before) { + rowSpan = getSpanVal(cell, 'rowspan'); + if (rowSpan > 1) { + cell.rowSpan = rowSpan + 1; + continue; + } + } else { + // Check if cell above can be expanded + if (posY > 0 && grid[posY - 1][x]) { + otherCell = grid[posY - 1][x].elm; + rowSpan = getSpanVal(otherCell, 'rowspan'); + if (rowSpan > 1) { + otherCell.rowSpan = rowSpan + 1; + continue; + } + } + } + + // Insert new cell into new row + newCell = cloneCell(cell) + newCell.colSpan = cell.colSpan; + newRow.appendChild(newCell); + + lastCell = cell; + } + } + + if (newRow.hasChildNodes()) { + if (!before) + dom.insertAfter(newRow, rowElm); + else + rowElm.parentNode.insertBefore(newRow, rowElm); + } + }; + + function insertCol(before) { + var posX, lastCell; + + // Find first/last column + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + posX = x; + + if (before) + return false; + } + }); + + if (before) + return !posX; + }); + + each(grid, function(row, y) { + var cell = row[posX].elm, rowSpan, colSpan; + + if (cell != lastCell) { + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan == 1) { + if (!before) { + dom.insertAfter(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } else { + cell.parentNode.insertBefore(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } + } else + cell.colSpan++; + + lastCell = cell; + } + }); + }; + + function deleteCols() { + var cols = []; + + // Get selected column indexes + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { + each(grid, function(row) { + var cell = row[x].elm, colSpan; + + colSpan = getSpanVal(cell, 'colspan'); + + if (colSpan > 1) + cell.colSpan = colSpan - 1; + else + dom.remove(cell); + }); + + cols.push(x); + } + }); + }); + + cleanup(); + }; + + function deleteRows() { + var rows; + + function deleteRow(tr) { + var nextTr, pos, lastCell; + + nextTr = dom.getNext(tr, 'tr'); + + // Move down row spanned cells + each(tr.cells, function(cell) { + var rowSpan = getSpanVal(cell, 'rowspan'); + + if (rowSpan > 1) { + cell.rowSpan = rowSpan - 1; + pos = getPos(cell); + fillLeftDown(pos.x, pos.y, 1, 1); + } + }); + + // Delete cells + pos = getPos(tr.cells[0]); + each(grid[pos.y], function(cell) { + var rowSpan; + + cell = cell.elm; + + if (cell != lastCell) { + rowSpan = getSpanVal(cell, 'rowspan'); + + if (rowSpan <= 1) + dom.remove(cell); + else + cell.rowSpan = rowSpan - 1; + + lastCell = cell; + } + }); + }; + + // Get selected rows and move selection out of scope + rows = getSelectedRows(); + + // Delete all selected rows + each(rows.reverse(), function(tr) { + deleteRow(tr); + }); + + cleanup(); + }; + + function cutRows() { + var rows = getSelectedRows(); + + dom.remove(rows); + cleanup(); + + return rows; + }; + + function copyRows() { + var rows = getSelectedRows(); + + each(rows, function(row, i) { + rows[i] = cloneNode(row, true); + }); + + return rows; + }; + + function pasteRows(rows, before) { + var selectedRows = getSelectedRows(), + targetRow = selectedRows[before ? 0 : selectedRows.length - 1], + targetCellCount = targetRow.cells.length; + + // Calc target cell count + each(grid, function(row) { + var match; + + targetCellCount = 0; + each(row, function(cell, x) { + if (cell.real) + targetCellCount += cell.colspan; + + if (cell.elm.parentNode == targetRow) + match = 1; + }); + + if (match) + return false; + }); + + if (!before) + rows.reverse(); + + each(rows, function(row) { + var cellCount = row.cells.length, cell; + + // Remove col/rowspans + for (i = 0; i < cellCount; i++) { + cell = row.cells[i]; + cell.colSpan = cell.rowSpan = 1; + } + + // Needs more cells + for (i = cellCount; i < targetCellCount; i++) + row.appendChild(cloneCell(row.cells[cellCount - 1])); + + // Needs less cells + for (i = targetCellCount; i < cellCount; i++) + dom.remove(row.cells[i]); + + // Add before/after + if (before) + targetRow.parentNode.insertBefore(row, targetRow); + else + dom.insertAfter(row, targetRow); + }); + }; + + function getPos(target) { + var pos; + + each(grid, function(row, y) { + each(row, function(cell, x) { + if (cell.elm == target) { + pos = {x : x, y : y}; + return false; + } + }); + + return !pos; + }); + + return pos; + }; + + function setStartCell(cell) { + startPos = getPos(cell); + }; + + function findEndPos() { + var pos, maxX, maxY; + + maxX = maxY = 0; + + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan; + + if (isCellSelected(cell)) { + cell = grid[y][x]; + + if (x > maxX) + maxX = x; + + if (y > maxY) + maxY = y; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + }); + }); + + return {x : maxX, y : maxY}; + }; + + function setEndCell(cell) { + var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; + + endPos = getPos(cell); + + if (startPos && endPos) { + // Get start/end positions + startX = Math.min(startPos.x, endPos.x); + startY = Math.min(startPos.y, endPos.y); + endX = Math.max(startPos.x, endPos.x); + endY = Math.max(startPos.y, endPos.y); + + // Expand end positon to include spans + maxX = endX; + maxY = endY; + + // Expand startX + for (y = startY; y <= maxY; y++) { + cell = grid[y][startX]; + + if (!cell.real) { + if (startX - (cell.colspan - 1) < startX) + startX -= cell.colspan - 1; + } + } + + // Expand startY + for (x = startX; x <= maxX; x++) { + cell = grid[startY][x]; + + if (!cell.real) { + if (startY - (cell.rowspan - 1) < startY) + startY -= cell.rowspan - 1; + } + } + + // Find max X, Y + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + cell = grid[y][x]; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + } + + // Remove current selection + dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + + // Add new selection + for (y = startY; y <= maxY; y++) { + for (x = startX; x <= maxX; x++) + dom.addClass(grid[y][x].elm, 'mceSelected'); + } + } + }; + + // Expose to public + tinymce.extend(this, { + deleteTable : deleteTable, + split : split, + merge : merge, + insertRow : insertRow, + insertCol : insertCol, + deleteCols : deleteCols, + deleteRows : deleteRows, + cutRows : cutRows, + copyRows : copyRows, + pasteRows : pasteRows, + getPos : getPos, + setStartCell : setStartCell, + setEndCell : setEndCell + }); + }; + + tinymce.create('tinymce.plugins.TablePlugin', { + init : function(ed, url) { + var winMan, clipboardRows; + + function createTableGrid(node) { + var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); + + if (tblElm) + return new TableGrid(tblElm, ed.dom, selection); + }; + + function cleanup() { + // Restore selection possibilities + ed.getBody().style.webkitUserSelect = ''; + ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + }; + + // Register buttons + each([ + ['table', 'table.desc', 'mceInsertTable', true], + ['delete_table', 'table.del', 'mceTableDelete'], + ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], + ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], + ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], + ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], + ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], + ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], + ['row_props', 'table.row_desc', 'mceTableRowProps', true], + ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], + ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], + ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] + ], function(c) { + ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); + }); + + // Select whole table is a table border is clicked + if (!tinymce.isIE) { + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'TABLE') + ed.selection.select(e); + }); + } + + // Handle node change updates + ed.onNodeChange.add(function(ed, cm, n) { + var p; + + n = ed.selection.getStart(); + p = ed.dom.getParent(n, 'td,th,caption'); + cm.setActive('table', n.nodeName === 'TABLE' || !!p); + + // Disable table tools if we are in caption + if (p && p.nodeName === 'CAPTION') + p = 0; + + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_col', !p); + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_row', !p); + cm.setDisabled('col_after', !p); + cm.setDisabled('col_before', !p); + cm.setDisabled('row_after', !p); + cm.setDisabled('row_before', !p); + cm.setDisabled('row_props', !p); + cm.setDisabled('cell_props', !p); + cm.setDisabled('split_cells', !p); + cm.setDisabled('merge_cells', !p); + }); + + ed.onInit.add(function(ed) { + var startTable, startCell, dom = ed.dom, tableGrid; + + winMan = ed.windowManager; + + // Add cell selection logic + ed.onMouseDown.add(function(ed, e) { + if (e.button != 2) { + cleanup(); + + startCell = dom.getParent(e.target, 'td,th'); + startTable = dom.getParent(startCell, 'table'); + } + }); + + dom.bind(ed.getDoc(), 'mouseover', function(e) { + var sel, table, target = e.target; + + if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { + table = dom.getParent(target, 'table'); + if (table == startTable) { + if (!tableGrid) { + tableGrid = createTableGrid(table); + tableGrid.setStartCell(startCell); + + ed.getBody().style.webkitUserSelect = 'none'; + } + + tableGrid.setEndCell(target); + } + + // Remove current selection + sel = ed.selection.getSel(); + + if (sel.removeAllRanges) + sel.removeAllRanges(); + else + sel.empty(); + + e.preventDefault(); + } + }); + + ed.onMouseUp.add(function(ed, e) { + var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; + + // Move selection to startCell + if (startCell) { + if (tableGrid) + ed.getBody().style.webkitUserSelect = ''; + + function setPoint(node, start) { + var walker = new tinymce.dom.TreeWalker(node, node); + + do { + // Text node + if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { + if (start) + rng.setStart(node, 0); + else + rng.setEnd(node, node.nodeValue.length); + + return; + } + + // BR element + if (node.nodeName == 'BR') { + if (start) + rng.setStartBefore(node); + else + rng.setEndBefore(node); + + return; + } + } while (node = (start ? walker.next() : walker.prev())); + }; + + // Try to expand text selection as much as we can only Gecko supports cell selection + selectedCells = dom.select('td.mceSelected,th.mceSelected'); + if (selectedCells.length > 0) { + rng = dom.createRng(); + node = selectedCells[0]; + endNode = selectedCells[selectedCells.length - 1]; + + setPoint(node, 1); + walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); + + do { + if (node.nodeName == 'TD' || node.nodeName == 'TH') { + if (!dom.hasClass(node, 'mceSelected')) + break; + + lastNode = node; + } + } while (node = walker.next()); + + setPoint(lastNode); + + sel.setRng(rng); + } + + ed.nodeChanged(); + startCell = tableGrid = startTable = null; + } + }); + + ed.onKeyUp.add(function(ed, e) { + cleanup(); + }); + + // Add context menu + if (ed && ed.plugins.contextmenu) { + ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { + var sm, se = ed.selection, el = se.getNode() || ed.getBody(); + + if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { + m.removeAll(); + + if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + m.addSeparator(); + } + + if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + m.addSeparator(); + } + + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); + m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); + m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); + m.addSeparator(); + + // Cell menu + sm = m.addMenu({title : 'table.cell'}); + sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); + sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); + sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); + + // Row menu + sm = m.addMenu({title : 'table.row'}); + sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); + sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); + sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); + sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); + sm.addSeparator(); + sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); + sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); + sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); + sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); + + // Column menu + sm = m.addMenu({title : 'table.col'}); + sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); + sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); + sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); + } else + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); + }); + } + + // Fixes an issue on Gecko where it's impossible to place the caret behind a table + // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled + if (!tinymce.isIE) { + function fixTableCaretPos() { + var last; + + // Skip empty text nodes form the end + for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; + + if (last && last.nodeName == 'TABLE') + ed.dom.add(ed.getBody(), 'p', null, '
    '); + }; + + // Fixes an bug where it's impossible to place the caret before a table in Gecko + // this fix solves it by detecting when the caret is at the beginning of such a table + // and then manually moves the caret infront of the table + if (tinymce.isGecko) { + ed.onKeyDown.add(function(ed, e) { + var rng, table, dom = ed.dom; + + // On gecko it's not possible to place the caret before a table + if (e.keyCode == 37 || e.keyCode == 38) { + rng = ed.selection.getRng(); + table = dom.getParent(rng.startContainer, 'table'); + + if (table && ed.getBody().firstChild == table) { + if (isAtStart(rng, table)) { + rng = dom.createRng(); + + rng.setStartBefore(table); + rng.setEndBefore(table); + + ed.selection.setRng(rng); + + e.preventDefault(); + } + } + } + }); + } + + ed.onKeyUp.add(fixTableCaretPos); + ed.onSetContent.add(fixTableCaretPos); + ed.onVisualAid.add(fixTableCaretPos); + + ed.onPreProcess.add(function(ed, o) { + var last = o.node.lastChild; + + if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') + ed.dom.remove(last); + }); + + fixTableCaretPos(); + } + }); + + // Register action commands + each({ + mceTableSplitCells : function(grid) { + grid.split(); + }, + + mceTableMergeCells : function(grid) { + var rowSpan, colSpan, cell; + + cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); + if (cell) { + rowSpan = cell.rowSpan; + colSpan = cell.colSpan; + } + + if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { + winMan.open({ + url : url + '/merge_cells.htm', + width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), + height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), + inline : 1 + }, { + rows : rowSpan, + cols : colSpan, + onaction : function(data) { + grid.merge(cell, data.cols, data.rows); + }, + plugin_url : url + }); + } else + grid.merge(); + }, + + mceTableInsertRowBefore : function(grid) { + grid.insertRow(true); + }, + + mceTableInsertRowAfter : function(grid) { + grid.insertRow(); + }, + + mceTableInsertColBefore : function(grid) { + grid.insertCol(true); + }, + + mceTableInsertColAfter : function(grid) { + grid.insertCol(); + }, + + mceTableDeleteCol : function(grid) { + grid.deleteCols(); + }, + + mceTableDeleteRow : function(grid) { + grid.deleteRows(); + }, + + mceTableCutRow : function(grid) { + clipboardRows = grid.cutRows(); + }, + + mceTableCopyRow : function(grid) { + clipboardRows = grid.copyRows(); + }, + + mceTablePasteRowBefore : function(grid) { + grid.pasteRows(clipboardRows, true); + }, + + mceTablePasteRowAfter : function(grid) { + grid.pasteRows(clipboardRows); + }, + + mceTableDelete : function(grid) { + grid.deleteTable(); + } + }, function(func, name) { + ed.addCommand(name, function() { + var grid = createTableGrid(); + + if (grid) { + func(grid); + ed.execCommand('mceRepaint'); + cleanup(); + } + }); + }); + + // Register dialog commands + each({ + mceInsertTable : function(val) { + winMan.open({ + url : url + '/table.htm', + width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), + height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + action : val ? val.action : 0 + }); + }, + + mceTableRowProps : function() { + winMan.open({ + url : url + '/row.htm', + width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }, + + mceTableCellProps : function() { + winMan.open({ + url : url + '/cell.htm', + width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + } + }, function(func, name) { + ed.addCommand(name, function(ui, val) { + func(val); + }); + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); +})(tinymce); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/table/js/cell.js b/tools/tiny_mce/plugins/table/js/cell.js new file mode 100644 index 00000000..fae7e6fb --- /dev/null +++ b/tools/tiny_mce/plugins/table/js/cell.js @@ -0,0 +1,286 @@ +tinyMCEPopup.requireLangPack(); + +var ed; + +function init() { + ed = tinyMCEPopup.editor; + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') + + var inst = ed; + var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th"); + var formObj = document.forms[0]; + var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style")); + + // Get table cell data + var celltype = tdElm.nodeName.toLowerCase(); + var align = ed.dom.getAttrib(tdElm, 'align'); + var valign = ed.dom.getAttrib(tdElm, 'valign'); + var width = trimSize(getStyle(tdElm, 'width', 'width')); + var height = trimSize(getStyle(tdElm, 'height', 'height')); + var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); + var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); + var className = ed.dom.getAttrib(tdElm, 'class'); + var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + var id = ed.dom.getAttrib(tdElm, 'id'); + var lang = ed.dom.getAttrib(tdElm, 'lang'); + var dir = ed.dom.getAttrib(tdElm, 'dir'); + var scope = ed.dom.getAttrib(tdElm, 'scope'); + + // Setup form + addClassesToList('class', 'table_cell_styles'); + TinyMCE_EditableSelects.init(); + + if (!ed.dom.hasClass(tdElm, 'mceSelected')) { + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.backgroundimage.value = backgroundimage; + formObj.width.value = width; + formObj.height.value = height; + formObj.id.value = id; + formObj.lang.value = lang; + formObj.style.value = ed.dom.serializeStyle(st); + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'valign', valign); + selectByValue(formObj, 'class', className, true, true); + selectByValue(formObj, 'celltype', celltype); + selectByValue(formObj, 'dir', dir); + selectByValue(formObj, 'scope', scope); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + } else + tinyMCEPopup.dom.hide('action'); +} + +function updateAction() { + var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; + + tinyMCEPopup.restoreSelection(); + el = ed.selection.getStart(); + tdElm = ed.dom.getParent(el, "td,th"); + trElm = ed.dom.getParent(el, "tr"); + tableElm = ed.dom.getParent(el, "table"); + + // Cell is selected + if (ed.dom.hasClass(tdElm, 'mceSelected')) { + // Update all selected sells + tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) { + updateCell(td); + }); + + ed.addVisual(); + ed.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + return; + } + + ed.execCommand('mceBeginUndoLevel'); + + switch (getSelectValue(formObj, 'action')) { + case "cell": + var celltype = getSelectValue(formObj, 'celltype'); + var scope = getSelectValue(formObj, 'scope'); + + function doUpdate(s) { + if (s) { + updateCell(tdElm); + + ed.addVisual(); + ed.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + } + }; + + if (ed.getParam("accessibility_warnings", 1)) { + if (celltype == "th" && scope == "") + tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate); + else + doUpdate(1); + + return; + } + + updateCell(tdElm); + break; + + case "row": + var cell = trElm.firstChild; + + if (cell.nodeName != "TD" && cell.nodeName != "TH") + cell = nextCell(cell); + + do { + cell = updateCell(cell, true); + } while ((cell = nextCell(cell)) != null); + + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i 0) { + tinymce.each(tableElm.rows, function(tr) { + var i; + + for (i = 0; i < tr.cells.length; i++) { + if (dom.hasClass(tr.cells[i], 'mceSelected')) { + updateRow(tr, true); + return; + } + } + }); + + inst.addVisual(); + inst.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + return; + } + + inst.execCommand('mceBeginUndoLevel'); + + switch (action) { + case "row": + updateRow(trElm); + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i colLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); + return false; + } else if (rowLimit && rows > rowLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); + return false; + } else if (cellLimit && cols * rows > cellLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); + return false; + } + + // Update table + if (action == "update") { + inst.execCommand('mceBeginUndoLevel'); + + dom.setAttrib(elm, 'cellPadding', cellpadding, true); + dom.setAttrib(elm, 'cellSpacing', cellspacing, true); + dom.setAttrib(elm, 'border', border); + dom.setAttrib(elm, 'align', align); + dom.setAttrib(elm, 'frame', frame); + dom.setAttrib(elm, 'rules', rules); + dom.setAttrib(elm, 'class', className); + dom.setAttrib(elm, 'style', style); + dom.setAttrib(elm, 'id', id); + dom.setAttrib(elm, 'summary', summary); + dom.setAttrib(elm, 'dir', dir); + dom.setAttrib(elm, 'lang', lang); + + capEl = inst.dom.select('caption', elm)[0]; + + if (capEl && !caption) + capEl.parentNode.removeChild(capEl); + + if (!capEl && caption) { + capEl = elm.ownerDocument.createElement('caption'); + + if (!tinymce.isIE) + capEl.innerHTML = '
    '; + + elm.insertBefore(capEl, elm.firstChild); + } + + if (width && inst.settings.inline_styles) { + dom.setStyle(elm, 'width', width); + dom.setAttrib(elm, 'width', ''); + } else { + dom.setAttrib(elm, 'width', width, true); + dom.setStyle(elm, 'width', ''); + } + + // Remove these since they are not valid XHTML + dom.setAttrib(elm, 'borderColor', ''); + dom.setAttrib(elm, 'bgColor', ''); + dom.setAttrib(elm, 'background', ''); + + if (height && inst.settings.inline_styles) { + dom.setStyle(elm, 'height', height); + dom.setAttrib(elm, 'height', ''); + } else { + dom.setAttrib(elm, 'height', height, true); + dom.setStyle(elm, 'height', ''); + } + + if (background != '') + elm.style.backgroundImage = "url('" + background + "')"; + else + elm.style.backgroundImage = ''; + +/* if (tinyMCEPopup.getParam("inline_styles")) { + if (width != '') + elm.style.width = getCSSSize(width); + }*/ + + if (bordercolor != "") { + elm.style.borderColor = bordercolor; + elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; + elm.style.borderWidth = border == "" ? "1px" : border; + } else + elm.style.borderColor = ''; + + elm.style.backgroundColor = bgcolor; + elm.style.height = getCSSSize(height); + + inst.addVisual(); + + // Fix for stange MSIE align bug + //elm.outerHTML = elm.outerHTML; + + inst.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + + // Repaint if dimensions changed + if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) + inst.execCommand('mceRepaint'); + + tinyMCEPopup.close(); + return true; + } + + // Create new table + html += ''); + + tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { + if (patt) + patt += ','; + + patt += n + ' ._mce_marker'; + }); + + tinymce.each(inst.dom.select(patt), function(n) { + inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); + }); + + dom.setOuterHTML(dom.select('br._mce_marker')[0], html); + } else + inst.execCommand('mceInsertContent', false, html); + + tinymce.each(dom.select('table[_mce_new]'), function(node) { + var td = dom.select('td', node); + + try { + // IE9 might fail to do this selection + inst.selection.select(td[0], true); + inst.selection.collapse(); + } catch (ex) { + // Ignore + } + + dom.setAttrib(node, '_mce_new', ''); + }); + + inst.addVisual(); + inst.execCommand('mceEndUndoLevel'); + + tinyMCEPopup.close(); +} + +function makeAttrib(attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value == "") + return ""; + + // XML encode it + value = value.replace(/&/g, '&'); + value = value.replace(/\"/g, '"'); + value = value.replace(//g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', ''); + var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; + var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = ""; + var inst = tinyMCEPopup.editor, dom = inst.dom; + var formObj = document.forms[0]; + var elm = dom.getParent(inst.selection.getNode(), "table"); + + action = tinyMCEPopup.getWindowArg('action'); + + if (!action) + action = elm ? "update" : "insert"; + + if (elm && action != "insert") { + var rowsAr = elm.rows; + var cols = 0; + for (var i=0; i cols) + cols = rowsAr[i].cells.length; + + cols = cols; + rows = rowsAr.length; + + st = dom.parseStyle(dom.getAttrib(elm, "style")); + border = trimSize(getStyle(elm, 'border', 'borderWidth')); + cellpadding = dom.getAttrib(elm, 'cellpadding', ""); + cellspacing = dom.getAttrib(elm, 'cellspacing', ""); + width = trimSize(getStyle(elm, 'width', 'width')); + height = trimSize(getStyle(elm, 'height', 'height')); + bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); + bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); + align = dom.getAttrib(elm, 'align', align); + frame = dom.getAttrib(elm, 'frame'); + rules = dom.getAttrib(elm, 'rules'); + className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, '')); + id = dom.getAttrib(elm, 'id'); + summary = dom.getAttrib(elm, 'summary'); + style = dom.serializeStyle(st); + dir = dom.getAttrib(elm, 'dir'); + lang = dom.getAttrib(elm, 'lang'); + background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + formObj.caption.checked = elm.getElementsByTagName('caption').length > 0; + + orgTableWidth = width; + orgTableHeight = height; + + action = "update"; + formObj.insert.value = inst.getLang('update'); + } + + addClassesToList('class', "table_styles"); + TinyMCE_EditableSelects.init(); + + // Update form + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'tframe', frame); + selectByValue(formObj, 'rules', rules); + selectByValue(formObj, 'class', className, true, true); + formObj.cols.value = cols; + formObj.rows.value = rows; + formObj.border.value = border; + formObj.cellpadding.value = cellpadding; + formObj.cellspacing.value = cellspacing; + formObj.width.value = width; + formObj.height.value = height; + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.id.value = id; + formObj.summary.value = summary; + formObj.style.value = style; + formObj.dir.value = dir; + formObj.lang.value = lang; + formObj.backgroundimage.value = background; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + // Disable some fields in update mode + if (action == "update") { + formObj.cols.disabled = true; + formObj.rows.disabled = true; + } +} + +function changedSize() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + +/* var width = formObj.width.value; + if (width != "") + st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : ""; + else + st['width'] = "";*/ + + var height = formObj.height.value; + if (height != "") + st['height'] = getCSSSize(height); + else + st['height'] = ""; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedBackgroundImage() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedBorder() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + // Update border width if the element has a color + if (formObj.border.value != "" && formObj.bordercolor.value != "") + st['border-width'] = formObj.border.value + "px"; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedColor() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + st['background-color'] = formObj.bgcolor.value; + + if (formObj.bordercolor.value != "") { + st['border-color'] = formObj.bordercolor.value; + + // Add border-width if it's missing + if (!st['border-width']) + st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; + } + + formObj.style.value = dom.serializeStyle(st); +} + +function changedStyle() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + if (st['background-image']) + formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + else + formObj.backgroundimage.value = ''; + + if (st['width']) + formObj.width.value = trimSize(st['width']); + + if (st['height']) + formObj.height.value = trimSize(st['height']); + + if (st['background-color']) { + formObj.bgcolor.value = st['background-color']; + updateColor('bgcolor_pick','bgcolor'); + } + + if (st['border-color']) { + formObj.bordercolor.value = st['border-color']; + updateColor('bordercolor_pick','bordercolor'); + } +} + +tinyMCEPopup.onInit.add(init); diff --git a/tools/tiny_mce/plugins/table/langs/en_dlg.js b/tools/tiny_mce/plugins/table/langs/en_dlg.js new file mode 100644 index 00000000..db5555c1 --- /dev/null +++ b/tools/tiny_mce/plugins/table/langs/en_dlg.js @@ -0,0 +1,74 @@ +tinyMCE.addI18n('en.table_dlg',{ +general_tab:"General", +advanced_tab:"Advanced", +general_props:"General properties", +advanced_props:"Advanced properties", +rowtype:"Row in table part", +title:"Insert/Modify table", +width:"Width", +height:"Height", +cols:"Columns", +rows:"Rows", +cellspacing:"Cellspacing", +cellpadding:"Cellpadding", +border:"Border", +align:"Alignment", +align_default:"Default", +align_left:"Left", +align_right:"Right", +align_middle:"Center", +row_title:"Table row properties", +cell_title:"Table cell properties", +cell_type:"Cell type", +valign:"Vertical alignment", +align_top:"Top", +align_bottom:"Bottom", +bordercolor:"Border color", +bgcolor:"Background color", +merge_cells_title:"Merge table cells", +id:"Id", +style:"Style", +langdir:"Language direction", +langcode:"Language code", +mime:"Target MIME type", +ltr:"Left to right", +rtl:"Right to left", +bgimage:"Background image", +summary:"Summary", +td:"Data", +th:"Header", +cell_cell:"Update current cell", +cell_row:"Update all cells in row", +cell_all:"Update all cells in table", +row_row:"Update current row", +row_odd:"Update odd rows in table", +row_even:"Update even rows in table", +row_all:"Update all rows in table", +thead:"Table Head", +tbody:"Table Body", +tfoot:"Table Foot", +scope:"Scope", +rowgroup:"Row Group", +colgroup:"Col Group", +col_limit:"You've exceeded the maximum number of columns of {$cols}.", +row_limit:"You've exceeded the maximum number of rows of {$rows}.", +cell_limit:"You've exceeded the maximum number of cells of {$cells}.", +missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.", +caption:"Table caption", +frame:"Frame", +frame_none:"none", +frame_groups:"groups", +frame_rows:"rows", +frame_cols:"cols", +frame_all:"all", +rules:"Rules", +rules_void:"void", +rules_above:"above", +rules_below:"below", +rules_hsides:"hsides", +rules_lhs:"lhs", +rules_rhs:"rhs", +rules_vsides:"vsides", +rules_box:"box", +rules_border:"border" +}); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/table/merge_cells.htm b/tools/tiny_mce/plugins/table/merge_cells.htm new file mode 100644 index 00000000..5e132613 --- /dev/null +++ b/tools/tiny_mce/plugins/table/merge_cells.htm @@ -0,0 +1,32 @@ + + + + {#table_dlg.merge_cells_title} + + + + + + +
    +
    + {#table_dlg.merge_cells_title} + + + + + + + + + +
    :
    :
    +
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/table/row.htm b/tools/tiny_mce/plugins/table/row.htm new file mode 100644 index 00000000..d64e6d03 --- /dev/null +++ b/tools/tiny_mce/plugins/table/row.htm @@ -0,0 +1,157 @@ + + + + {#table_dlg.row_title} + + + + + + + + +
    + + +
    +
    +
    + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    +
    +
    + +
    +
    + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + + +
     
    +
    +
    +
    +
    +
    + +
    +
    + +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/table/table.htm b/tools/tiny_mce/plugins/table/table.htm new file mode 100644 index 00000000..d9f2dae7 --- /dev/null +++ b/tools/tiny_mce/plugins/table/table.htm @@ -0,0 +1,188 @@ + + + + {#table_dlg.title} + + + + + + + + + + +
    + + +
    +
    +
    + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +
    + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + +
     
    +
    + +
    + +
    + +
    + + + + + +
     
    +
    + + + + + +
     
    +
    +
    +
    +
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/template/blank.htm b/tools/tiny_mce/plugins/template/blank.htm new file mode 100644 index 00000000..538a3b12 --- /dev/null +++ b/tools/tiny_mce/plugins/template/blank.htm @@ -0,0 +1,12 @@ + + + blank_page + + + + + + + diff --git a/tools/tiny_mce/plugins/template/css/template.css b/tools/tiny_mce/plugins/template/css/template.css new file mode 100644 index 00000000..0a03f2e5 --- /dev/null +++ b/tools/tiny_mce/plugins/template/css/template.css @@ -0,0 +1,23 @@ +#frmbody { + padding: 10px; + background-color: #FFF; + border: 1px solid #CCC; +} + +.frmRow { + margin-bottom: 10px; +} + +#templatesrc { + border: none; + width: 320px; + height: 240px; +} + +.title { + padding-bottom: 5px; +} + +.mceActionPanel { + padding-top: 5px; +} diff --git a/tools/tiny_mce/plugins/template/editor_plugin.js b/tools/tiny_mce/plugins/template/editor_plugin.js new file mode 100644 index 00000000..ebe3c27d --- /dev/null +++ b/tools/tiny_mce/plugins/template/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length 0) { + el = dom.create('div', null); + el.appendChild(n[0].cloneNode(true)); + } + + function hasClass(n, c) { + return new RegExp('\\b' + c + '\\b', 'g').test(n.className); + }; + + each(dom.select('*', el), function(n) { + // Replace cdate + if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|'))) + n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format"))); + + // Replace mdate + if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) + n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); + + // Replace selection + if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|'))) + n.innerHTML = sel; + }); + + t._replaceVals(el); + + ed.execCommand('mceInsertContent', false, el.innerHTML); + ed.addVisual(); + }, + + _replaceVals : function(e) { + var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values'); + + each(dom.select('*', e), function(e) { + each(vl, function(v, k) { + if (dom.hasClass(e, k)) { + if (typeof(vl[k]) == 'function') + vl[k](e); + } + }); + }); + }, + + _getDateTime : function(d, fmt) { + if (!fmt) + return ""; + + function addZeros(value, len) { + var i; + + value = "" + value; + + if (value.length < len) { + for (i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; + } + + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]); + fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]); + fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]); + fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]); + fmt = fmt.replace("%%", "%"); + + return fmt; + } + }); + + // Register plugin + tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/template/js/template.js b/tools/tiny_mce/plugins/template/js/template.js new file mode 100644 index 00000000..7eab2ebb --- /dev/null +++ b/tools/tiny_mce/plugins/template/js/template.js @@ -0,0 +1,106 @@ +tinyMCEPopup.requireLangPack(); + +var TemplateDialog = { + preInit : function() { + var url = tinyMCEPopup.getParam("template_external_list_url"); + + if (url != null) + document.write(''); + }, + + init : function() { + var ed = tinyMCEPopup.editor, tsrc, sel, x, u; + + tsrc = ed.getParam("template_templates", false); + sel = document.getElementById('tpath'); + + // Setup external template list + if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { + for (x=0, tsrc = []; x'); + }); + }, + + selectTemplate : function(u, ti) { + var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc; + + if (!u) + return; + + d.body.innerHTML = this.templateHTML = this.getFileContents(u); + + for (x=0; x + + {#template_dlg.title} + + + + + +
    +
    +
    {#template_dlg.desc}
    +
    + +
    +
    +
    +
    + {#template_dlg.preview} + +
    +
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/visualchars/editor_plugin.js b/tools/tiny_mce/plugins/visualchars/editor_plugin.js new file mode 100644 index 00000000..94719f93 --- /dev/null +++ b/tools/tiny_mce/plugins/visualchars/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g$1');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/visualchars/editor_plugin_src.js b/tools/tiny_mce/plugins/visualchars/editor_plugin_src.js new file mode 100644 index 00000000..33b687f6 --- /dev/null +++ b/tools/tiny_mce/plugins/visualchars/editor_plugin_src.js @@ -0,0 +1,83 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.VisualChars', { + init : function(ed, url) { + var t = this; + + t.editor = ed; + + // Register commands + ed.addCommand('mceVisualChars', t._toggleVisualChars, t); + + // Register buttons + ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); + + ed.onBeforeGetContent.add(function(ed, o) { + if (t.state && o.format != 'raw' && !o.draft) { + t.state = true; + t._toggleVisualChars(false); + } + }); + }, + + getInfo : function() { + return { + longname : 'Visual characters', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + _toggleVisualChars : function(bookmark) { + var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm; + + t.state = !t.state; + ed.controlManager.setActive('visualchars', t.state); + + if (bookmark) + bm = s.getBookmark(); + + if (t.state) { + nl = []; + tinymce.walk(b, function(n) { + if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1) + nl.push(n); + }, 'childNodes'); + + for (i = 0; i < nl.length; i++) { + nv = nl[i].nodeValue; + nv = nv.replace(/(\u00a0)/g, '$1'); + + div = ed.dom.create('div', null, nv); + while (node = div.lastChild) + ed.dom.insertAfter(node, nl[i]); + + ed.dom.remove(nl[i]); + } + } else { + nl = ed.dom.select('span.mceItemNbsp', b); + + for (i = nl.length - 1; i >= 0; i--) + ed.dom.remove(nl[i], 1); + } + + s.moveToBookmark(bm); + } + }); + + // Register plugin + tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/wordcount/editor_plugin.js b/tools/tiny_mce/plugins/wordcount/editor_plugin.js new file mode 100644 index 00000000..a099e6a8 --- /dev/null +++ b/tools/tiny_mce/plugins/wordcount/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(a,b){var c=this,d=0;c.countre=a.getParam("wordcount_countregex",/\S\s+/g);c.cleanre=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$¿'"_+=\\\/-]*/g);c.id=a.id+"-word-count";a.onPostRender.add(function(f,e){var g,h;h=f.getParam("wordcount_target_id");if(!h){g=tinymce.DOM.get(f.id+"_path_row");if(g){tinymce.DOM.add(g.parentNode,"div",{style:"float: right"},f.getLang("wordcount.words","Words: ")+'0')}}else{tinymce.DOM.add(h,"span",{},'0')}});a.onInit.add(function(e){e.selection.onSetContent.add(function(){c._count(e)});c._count(e)});a.onSetContent.add(function(e){c._count(e)});a.onKeyUp.add(function(f,g){if(g.keyCode==d){return}if(13==g.keyCode||8==d||46==d){c._count(f)}d=g.keyCode})},_count:function(b){var c=this,a=0;if(c.block){return}c.block=1;setTimeout(function(){var d=b.getContent({format:"raw"});if(d){d=d.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");d=d.replace(c.cleanre,"");d.replace(c.countre,function(){a++})}tinymce.DOM.setHTML(c.id,a.toString());setTimeout(function(){c.block=0},2000)},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/wordcount/editor_plugin_src.js b/tools/tiny_mce/plugins/wordcount/editor_plugin_src.js new file mode 100644 index 00000000..0dc9e34e --- /dev/null +++ b/tools/tiny_mce/plugins/wordcount/editor_plugin_src.js @@ -0,0 +1,98 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.WordCount', { + block : 0, + id : null, + countre : null, + cleanre : null, + + init : function(ed, url) { + var t = this, last = 0; + + t.countre = ed.getParam('wordcount_countregex', /\S\s+/g); + t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$¿'"_+=\\\/-]*/g); + t.id = ed.id + '-word-count'; + + ed.onPostRender.add(function(ed, cm) { + var row, id; + + // Add it to the specified id or the theme advanced path + id = ed.getParam('wordcount_target_id'); + if (!id) { + row = tinymce.DOM.get(ed.id + '_path_row'); + + if (row) + tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '0'); + } else + tinymce.DOM.add(id, 'span', {}, '0'); + }); + + ed.onInit.add(function(ed) { + ed.selection.onSetContent.add(function() { + t._count(ed); + }); + + t._count(ed); + }); + + ed.onSetContent.add(function(ed) { + t._count(ed); + }); + + ed.onKeyUp.add(function(ed, e) { + if (e.keyCode == last) + return; + + if (13 == e.keyCode || 8 == last || 46 == last) + t._count(ed); + + last = e.keyCode; + }); + }, + + _count : function(ed) { + var t = this, tc = 0; + + // Keep multiple calls from happening at the same time + if (t.block) + return; + + t.block = 1; + + setTimeout(function() { + var tx = ed.getContent({format : 'raw'}); + + if (tx) { + tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars + tx = tx.replace(t.cleanre, ''); // remove numbers and punctuation + tx.replace(t.countre, function() {tc++;}); // count the words + } + + tinymce.DOM.setHTML(t.id, tc.toString()); + + setTimeout(function() {t.block = 0;}, 2000); + }, 1); + }, + + getInfo: function() { + return { + longname : 'Word Count plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); +})(); diff --git a/tools/tiny_mce/plugins/xhtmlxtras/abbr.htm b/tools/tiny_mce/plugins/xhtmlxtras/abbr.htm new file mode 100644 index 00000000..d4102180 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/abbr.htm @@ -0,0 +1,142 @@ + + + + {#xhtmlxtras_dlg.title_abbr_element} + + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/xhtmlxtras/acronym.htm b/tools/tiny_mce/plugins/xhtmlxtras/acronym.htm new file mode 100644 index 00000000..12b189b4 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -0,0 +1,142 @@ + + + + {#xhtmlxtras_dlg.title_acronym_element} + + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/xhtmlxtras/attributes.htm b/tools/tiny_mce/plugins/xhtmlxtras/attributes.htm new file mode 100644 index 00000000..d84f378b --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -0,0 +1,149 @@ + + + + {#xhtmlxtras_dlg.attribs_title} + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.attribute_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.attribute_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/xhtmlxtras/cite.htm b/tools/tiny_mce/plugins/xhtmlxtras/cite.htm new file mode 100644 index 00000000..ab61b330 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -0,0 +1,142 @@ + + + + {#xhtmlxtras_dlg.title_cite_element} + + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/tools/tiny_mce/plugins/xhtmlxtras/css/attributes.css new file mode 100644 index 00000000..85b1b376 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/css/attributes.css @@ -0,0 +1,11 @@ +.panel_wrapper div.current { + height: 290px; +} + +#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/tools/tiny_mce/plugins/xhtmlxtras/css/popup.css b/tools/tiny_mce/plugins/xhtmlxtras/css/popup.css new file mode 100644 index 00000000..034b9852 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/css/popup.css @@ -0,0 +1,9 @@ +input.field, select.field {width:200px;} +input.picker {width:179px; margin-left: 5px;} +input.disabled {border-color:#F2F2F2;} +img.picker {vertical-align:text-bottom; cursor:pointer;} +h1 {padding: 0 0 5px 0;} +.panel_wrapper div.current {height:160px;} +#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;} +a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;} +#datetime {width:180px;} diff --git a/tools/tiny_mce/plugins/xhtmlxtras/del.htm b/tools/tiny_mce/plugins/xhtmlxtras/del.htm new file mode 100644 index 00000000..e3f34c7d --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/del.htm @@ -0,0 +1,162 @@ + + + + {#xhtmlxtras_dlg.title_del_element} + + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
    : + + + + + +
    +
    :
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/tools/tiny_mce/plugins/xhtmlxtras/editor_plugin.js new file mode 100644 index 00000000..a9393ad6 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/tools/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js new file mode 100644 index 00000000..1f3f7709 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -0,0 +1,132 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceCite', function() { + ed.windowManager.open({ + file : url + '/cite.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAcronym', function() { + ed.windowManager.open({ + file : url + '/acronym.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAbbr', function() { + ed.windowManager.open({ + file : url + '/abbr.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceDel', function() { + ed.windowManager.open({ + file : url + '/del.htm', + width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceIns', function() { + ed.windowManager.open({ + file : url + '/ins.htm', + width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAttributes', function() { + ed.windowManager.open({ + file : url + '/attributes.htm', + width : 380, + height : 370, + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'}); + ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'}); + ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'}); + ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'}); + ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'}); + ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'}); + + ed.onNodeChange.add(function(ed, cm, n, co) { + n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS'); + + cm.setDisabled('cite', co); + cm.setDisabled('acronym', co); + cm.setDisabled('abbr', co); + cm.setDisabled('del', co); + cm.setDisabled('ins', co); + cm.setDisabled('attribs', n && n.nodeName == 'BODY'); + cm.setActive('cite', 0); + cm.setActive('acronym', 0); + cm.setActive('abbr', 0); + cm.setActive('del', 0); + cm.setActive('ins', 0); + + // Activate all + if (n) { + do { + cm.setDisabled(n.nodeName.toLowerCase(), 0); + cm.setActive(n.nodeName.toLowerCase(), 1); + } while (n = n.parentNode); + } + }); + + ed.onPreInit.add(function() { + // Fixed IE issue where it can't handle these elements correctly + ed.dom.create('abbr'); + }); + }, + + getInfo : function() { + return { + longname : 'XHTML Xtras Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/plugins/xhtmlxtras/ins.htm b/tools/tiny_mce/plugins/xhtmlxtras/ins.htm new file mode 100644 index 00000000..1fd668a8 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/ins.htm @@ -0,0 +1,162 @@ + + + + {#xhtmlxtras_dlg.title_ins_element} + + + + + + + + + + +
    + + +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
    : + + + + + +
    +
    :
    +
    +
    + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    : + +
    :
    : + +
    : + +
    +
    +
    +
    +
    + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    +
    +
    +
    +
    + + + +
    +
    + + diff --git a/tools/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/tools/tiny_mce/plugins/xhtmlxtras/js/abbr.js new file mode 100644 index 00000000..1790e83d --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/js/abbr.js @@ -0,0 +1,28 @@ +/** + * abbr.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('abbr'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAbbr() { + SXE.insertElement('abbr'); + tinyMCEPopup.close(); +} + +function removeAbbr() { + SXE.removeElement('abbr'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/tools/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/tools/tiny_mce/plugins/xhtmlxtras/js/acronym.js new file mode 100644 index 00000000..93b8d259 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/js/acronym.js @@ -0,0 +1,28 @@ +/** + * acronym.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('acronym'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAcronym() { + SXE.insertElement('acronym'); + tinyMCEPopup.close(); +} + +function removeAcronym() { + SXE.removeElement('acronym'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/tools/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/tools/tiny_mce/plugins/xhtmlxtras/js/attributes.js new file mode 100644 index 00000000..c7e0e7fc --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/js/attributes.js @@ -0,0 +1,126 @@ +/** + * attributes.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + tinyMCEPopup.resizeToInnerSize(); + var inst = tinyMCEPopup.editor; + var dom = inst.dom; + var elm = inst.selection.getNode(); + var f = document.forms[0]; + var onclick = dom.getAttrib(elm, 'onclick'); + + setFormValue('title', dom.getAttrib(elm, 'title')); + setFormValue('id', dom.getAttrib(elm, 'id')); + setFormValue('style', dom.getAttrib(elm, "style")); + setFormValue('dir', dom.getAttrib(elm, 'dir')); + setFormValue('lang', dom.getAttrib(elm, 'lang')); + setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('onfocus', dom.getAttrib(elm, 'onfocus')); + setFormValue('onblur', dom.getAttrib(elm, 'onblur')); + setFormValue('onclick', onclick); + setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup')); + className = dom.getAttrib(elm, 'class'); + + addClassesToList('classlist', 'advlink_styles'); + selectByValue(f, 'classlist', className, true); + + TinyMCE_EditableSelects.init(); +} + +function setFormValue(name, value) { + if(value && document.forms[0].elements[name]){ + document.forms[0].elements[name].value = value; + } +} + +function insertAction() { + var inst = tinyMCEPopup.editor; + var elm = inst.selection.getNode(); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + setAllAttribs(elm); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib.toLowerCase()]; + var inst = tinyMCEPopup.editor; + var dom = inst.dom; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + dom.setAttrib(elm, attrib.toLowerCase(), value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib.substring(0, 2) == 'on') + value = 'return true;' + value; + + if (attrib == "class") + attrib = "className"; + + elm[attrib]=value; + } else + elm.removeAttribute(attrib); +} + +function setAllAttribs(elm) { + var f = document.forms[0]; + + setAttrib(elm, 'title'); + setAttrib(elm, 'id'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(f, 'classlist')); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'tabindex'); + setAttrib(elm, 'accesskey'); + setAttrib(elm, 'onfocus'); + setAttrib(elm, 'onblur'); + setAttrib(elm, 'onclick'); + setAttrib(elm, 'ondblclick'); + setAttrib(elm, 'onmousedown'); + setAttrib(elm, 'onmouseup'); + setAttrib(elm, 'onmouseover'); + setAttrib(elm, 'onmousemove'); + setAttrib(elm, 'onmouseout'); + setAttrib(elm, 'onkeypress'); + setAttrib(elm, 'onkeydown'); + setAttrib(elm, 'onkeyup'); + + // Refresh in old MSIE +// if (tinyMCE.isMSIE5) +// elm.outerHTML = elm.outerHTML; +} + +function insertAttribute() { + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); +tinyMCEPopup.requireLangPack(); diff --git a/tools/tiny_mce/plugins/xhtmlxtras/js/cite.js b/tools/tiny_mce/plugins/xhtmlxtras/js/cite.js new file mode 100644 index 00000000..b73ef473 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/js/cite.js @@ -0,0 +1,28 @@ +/** + * cite.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('cite'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertCite() { + SXE.insertElement('cite'); + tinyMCEPopup.close(); +} + +function removeCite() { + SXE.removeElement('cite'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/tools/tiny_mce/plugins/xhtmlxtras/js/del.js b/tools/tiny_mce/plugins/xhtmlxtras/js/del.js new file mode 100644 index 00000000..74e52925 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/js/del.js @@ -0,0 +1,53 @@ +/** + * del.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('del'); + if (SXE.currentAction == "update") { + setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); + setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); + SXE.showRemoveButton(); + } +} + +function setElementAttribs(elm) { + setAllCommonAttribs(elm); + setAttrib(elm, 'datetime'); + setAttrib(elm, 'cite'); +} + +function insertDel() { + var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); + + tinyMCEPopup.execCommand('mceBeginUndoLevel'); + if (elm == null) { + var s = SXE.inst.selection.getContent(); + if(s.length > 0) { + insertInlineElement('del'); + var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';}); + for (var i=0; i 0) { + tagName = element_name; + + insertInlineElement(element_name); + var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); + for (var i=0; i -1) ? true : false; +} + +SXE.removeClass = function(elm,cl) { + if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { + return true; + } + var classNames = elm.className.split(" "); + var newClassNames = ""; + for (var x = 0, cnl = classNames.length; x < cnl; x++) { + if (classNames[x] != cl) { + newClassNames += (classNames[x] + " "); + } + } + elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end +} + +SXE.addClass = function(elm,cl) { + if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; + return true; +} + +function insertInlineElement(en) { + var ed = tinyMCEPopup.editor, dom = ed.dom; + + ed.getDoc().execCommand('FontName', false, 'mceinline'); + tinymce.each(dom.select('span,font'), function(n) { + if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') + dom.replace(dom.create(en, {_mce_new : 1}), n, 1); + }); +} diff --git a/tools/tiny_mce/plugins/xhtmlxtras/js/ins.js b/tools/tiny_mce/plugins/xhtmlxtras/js/ins.js new file mode 100644 index 00000000..8ec84422 --- /dev/null +++ b/tools/tiny_mce/plugins/xhtmlxtras/js/ins.js @@ -0,0 +1,52 @@ +/** + * ins.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('ins'); + if (SXE.currentAction == "update") { + setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); + setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); + SXE.showRemoveButton(); + } +} + +function setElementAttribs(elm) { + setAllCommonAttribs(elm); + setAttrib(elm, 'datetime'); + setAttrib(elm, 'cite'); +} + +function insertIns() { + var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS'); + tinyMCEPopup.execCommand('mceBeginUndoLevel'); + if (elm == null) { + var s = SXE.inst.selection.getContent(); + if(s.length > 0) { + insertInlineElement('INS'); + var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); + for (var i=0; i + + + {#advanced_dlg.about_title} + + + + + + + +
    +
    +

    {#advanced_dlg.about_title}

    +

    Version: ()

    +

    TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

    +

    Copyright © 2003-2011, Moxiecode Systems AB, All rights reserved.

    +

    For more information about this software visit the TinyMCE website.

    +
    + +
    +
    +

    {#advanced_dlg.about_loaded}

    + +
    +
    + +

     

    +
    +
    + +
    +
    +
    +
    + +
    + +
    + + diff --git a/tools/tiny_mce/themes/advanced/anchor.htm b/tools/tiny_mce/themes/advanced/anchor.htm new file mode 100644 index 00000000..dc53312d --- /dev/null +++ b/tools/tiny_mce/themes/advanced/anchor.htm @@ -0,0 +1,26 @@ + + + + {#advanced_dlg.anchor_title} + + + + +
    + + + + + + + + +
    {#advanced_dlg.anchor_title}
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/themes/advanced/charmap.htm b/tools/tiny_mce/themes/advanced/charmap.htm new file mode 100644 index 00000000..8b7de8b8 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/charmap.htm @@ -0,0 +1,53 @@ + + + + {#advanced_dlg.charmap_title} + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
     
     
    +
    + + + + + + + + + + + + + + + + +
     
     
     
    +
    + + + diff --git a/tools/tiny_mce/themes/advanced/color_picker.htm b/tools/tiny_mce/themes/advanced/color_picker.htm new file mode 100644 index 00000000..e7f19aba --- /dev/null +++ b/tools/tiny_mce/themes/advanced/color_picker.htm @@ -0,0 +1,74 @@ + + + + {#advanced_dlg.colorpicker_title} + + + + + + +
    + + +
    +
    +
    + {#advanced_dlg.colorpicker_picker_title} +
    + + +
    + +
    + +
    +
    +
    +
    + +
    +
    + {#advanced_dlg.colorpicker_palette_title} +
    + +
    + +
    +
    +
    + +
    +
    + {#advanced_dlg.colorpicker_named_title} +
    + +
    + +
    + +
    + {#advanced_dlg.colorpicker_name} +
    +
    +
    +
    + +
    + + +
    + +
    + +
    +
    +
    + + diff --git a/tools/tiny_mce/themes/advanced/editor_template.js b/tools/tiny_mce/themes/advanced/editor_template.js new file mode 100644 index 00000000..325471ab --- /dev/null +++ b/tools/tiny_mce/themes/advanced/editor_template.js @@ -0,0 +1 @@ +(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],shortcuts:["shortcuts_desc","mceShortcuts"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){i.formatter.remove(p[0])}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file diff --git a/tools/tiny_mce/themes/advanced/editor_template_src.js b/tools/tiny_mce/themes/advanced/editor_template_src.js new file mode 100644 index 00000000..1fb08097 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/editor_template_src.js @@ -0,0 +1,1326 @@ +/** + * editor_template_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; + + // Tell it to load theme specific language pack(s) + tinymce.ThemeManager.requireLangPack('advanced'); + + tinymce.create('tinymce.themes.AdvancedTheme', { + sizes : [8, 10, 12, 14, 18, 24, 36], + + // Control name lookup, format: title, command + controls : { + bold : ['bold_desc', 'Bold'], + italic : ['italic_desc', 'Italic'], + underline : ['underline_desc', 'Underline'], + strikethrough : ['striketrough_desc', 'Strikethrough'], + justifyleft : ['justifyleft_desc', 'JustifyLeft'], + justifycenter : ['justifycenter_desc', 'JustifyCenter'], + justifyright : ['justifyright_desc', 'JustifyRight'], + justifyfull : ['justifyfull_desc', 'JustifyFull'], + bullist : ['bullist_desc', 'InsertUnorderedList'], + numlist : ['numlist_desc', 'InsertOrderedList'], + outdent : ['outdent_desc', 'Outdent'], + indent : ['indent_desc', 'Indent'], + cut : ['cut_desc', 'Cut'], + copy : ['copy_desc', 'Copy'], + paste : ['paste_desc', 'Paste'], + undo : ['undo_desc', 'Undo'], + redo : ['redo_desc', 'Redo'], + link : ['link_desc', 'mceLink'], + unlink : ['unlink_desc', 'unlink'], + image : ['image_desc', 'mceImage'], + cleanup : ['cleanup_desc', 'mceCleanup'], + help : ['help_desc', 'mceHelp'], + shortcuts : ['shortcuts_desc', 'mceShortcuts'], + code : ['code_desc', 'mceCodeEditor'], + hr : ['hr_desc', 'InsertHorizontalRule'], + removeformat : ['removeformat_desc', 'RemoveFormat'], + sub : ['sub_desc', 'subscript'], + sup : ['sup_desc', 'superscript'], + forecolor : ['forecolor_desc', 'ForeColor'], + forecolorpicker : ['forecolor_desc', 'mceForeColor'], + backcolor : ['backcolor_desc', 'HiliteColor'], + backcolorpicker : ['backcolor_desc', 'mceBackColor'], + charmap : ['charmap_desc', 'mceCharMap'], + visualaid : ['visualaid_desc', 'mceToggleVisualAid'], + anchor : ['anchor_desc', 'mceInsertAnchor'], + newdocument : ['newdocument_desc', 'mceNewDocument'], + blockquote : ['blockquote_desc', 'mceBlockQuote'] + }, + + stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'], + + init : function(ed, url) { + var t = this, s, v, o; + + t.editor = ed; + t.url = url; + t.onResolveName = new tinymce.util.Dispatcher(this); + + ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast(); + ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin; + + // Default settings + t.settings = s = extend({ + theme_advanced_path : true, + theme_advanced_toolbar_location : 'bottom', + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect", + theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code", + theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap", + theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6", + theme_advanced_toolbar_align : "center", + theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats", + theme_advanced_more_colors : 1, + theme_advanced_row_height : 23, + theme_advanced_resize_horizontal : 1, + theme_advanced_resizing_use_cookie : 1, + theme_advanced_font_sizes : "1,2,3,4,5,6,7", + theme_advanced_font_selector : "span", + theme_advanced_show_current_color: 0, + readonly : ed.settings.readonly + }, ed.settings); + + // Setup default font_size_style_values + if (!s.font_size_style_values) + s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt"; + + if (tinymce.is(s.theme_advanced_font_sizes, 'string')) { + s.font_size_style_values = tinymce.explode(s.font_size_style_values); + s.font_size_classes = tinymce.explode(s.font_size_classes || ''); + + // Parse string value + o = {}; + ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes; + each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) { + var cl; + + if (k == v && v >= 1 && v <= 7) { + k = v + ' (' + t.sizes[v - 1] + 'pt)'; + cl = s.font_size_classes[v - 1]; + v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt'); + } + + if (/^\s*\./.test(v)) + cl = v.replace(/\./g, ''); + + o[k] = cl ? {'class' : cl} : {fontSize : v}; + }); + + s.theme_advanced_font_sizes = o; + } + + if ((v = s.theme_advanced_path_location) && v != 'none') + s.theme_advanced_statusbar_location = s.theme_advanced_path_location; + + if (s.theme_advanced_statusbar_location == 'none') + s.theme_advanced_statusbar_location = 0; + + // Init editor + ed.onInit.add(function() { + if (!ed.settings.readonly) { + ed.onNodeChange.add(t._nodeChanged, t); + ed.onKeyUp.add(t._updateUndoStatus, t); + ed.onMouseUp.add(t._updateUndoStatus, t); + ed.dom.bind(ed.dom.getRoot(), 'dragend', function() { + t._updateUndoStatus(ed); + }); + } + + if (ed.settings.content_css !== false) + ed.dom.loadCSS(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css")); + }); + + ed.onSetProgressState.add(function(ed, b, ti) { + var co, id = ed.id, tb; + + if (b) { + t.progressTimer = setTimeout(function() { + co = ed.getContainer(); + co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild); + tb = DOM.get(ed.id + '_tbl'); + + DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}}); + DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}}); + }, ti || 0); + } else { + DOM.remove(id + '_blocker'); + DOM.remove(id + '_progress'); + clearTimeout(t.progressTimer); + } + }); + + DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css"); + + if (s.skin_variant) + DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); + }, + + _isHighContrast : function() { + var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'}); + + actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, ''); + DOM.remove(div); + + return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56'; + }, + + createControl : function(n, cf) { + var cd, c; + + if (c = cf.createControl(n)) + return c; + + switch (n) { + case "styleselect": + return this._createStyleSelect(); + + case "formatselect": + return this._createBlockFormats(); + + case "fontselect": + return this._createFontSelect(); + + case "fontsizeselect": + return this._createFontSizeSelect(); + + case "forecolor": + return this._createForeColorMenu(); + + case "backcolor": + return this._createBackColorMenu(); + } + + if ((cd = this.controls[n])) + return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]}); + }, + + execCommand : function(cmd, ui, val) { + var f = this['_' + cmd]; + + if (f) { + f.call(this, ui, val); + return true; + } + + return false; + }, + + _importClasses : function(e) { + var ed = this.editor, ctrl = ed.controlManager.get('styleselect'); + + if (ctrl.getLength() == 0) { + each(ed.dom.getClasses(), function(o, idx) { + var name = 'style_' + idx; + + ed.formatter.register(name, { + inline : 'span', + attributes : {'class' : o['class']}, + selector : '*' + }); + + ctrl.add(o['class'], name); + }); + } + }, + + _createStyleSelect : function(n) { + var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl; + + // Setup style select box + ctrl = ctrlMan.createListBox('styleselect', { + title : 'advanced.style_select', + onselect : function(name) { + var matches, formatNames = []; + + each(ctrl.items, function(item) { + formatNames.push(item.value); + }); + + ed.focus(); + ed.undoManager.add(); + + // Toggle off the current format + matches = ed.formatter.matchAll(formatNames); + if (!name || matches[0] == name) + ed.formatter.remove(matches[0]); + else + ed.formatter.apply(name); + + ed.undoManager.add(); + ed.nodeChanged(); + + return false; // No auto select + } + }); + + // Handle specified format + ed.onInit.add(function() { + var counter = 0, formats = ed.getParam('style_formats'); + + if (formats) { + each(formats, function(fmt) { + var name, keys = 0; + + each(fmt, function() {keys++;}); + + if (keys > 1) { + name = fmt.name = fmt.name || 'style_' + (counter++); + ed.formatter.register(name, fmt); + ctrl.add(fmt.title, name); + } else + ctrl.add(fmt.title); + }); + } else { + each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) { + var name; + + if (val) { + name = 'style_' + (counter++); + + ed.formatter.register(name, { + inline : 'span', + classes : val, + selector : '*' + }); + + ctrl.add(t.editor.translate(key), name); + } + }); + } + }); + + // Auto import classes if the ctrl box is empty + if (ctrl.getLength() == 0) { + ctrl.onPostRender.add(function(ed, n) { + if (!ctrl.NativeListBox) { + Event.add(n.id + '_text', 'focus', t._importClasses, t); + Event.add(n.id + '_text', 'mousedown', t._importClasses, t); + Event.add(n.id + '_open', 'focus', t._importClasses, t); + Event.add(n.id + '_open', 'mousedown', t._importClasses, t); + } else + Event.add(n.id, 'focus', t._importClasses, t); + }); + } + + return ctrl; + }, + + _createFontSelect : function() { + var c, t = this, ed = t.editor; + + c = ed.controlManager.createListBox('fontselect', { + title : 'advanced.fontdefault', + onselect : function(v) { + var cur = c.items[c.selectedIndex]; + + if (!v && cur) { + ed.execCommand('FontName', false, cur.value); + return; + } + + ed.execCommand('FontName', false, v); + + // Fake selection, execCommand will fire a nodeChange and update the selection + c.select(function(sv) { + return v == sv; + }); + + return false; // No auto select + } + }); + + if (c) { + each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { + c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); + }); + } + + return c; + }, + + _createFontSizeSelect : function() { + var t = this, ed = t.editor, c, i = 0, cl = []; + + c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { + var cur = c.items[c.selectedIndex]; + + if (!v && cur) { + cur = cur.value; + + if (cur['class']) { + ed.formatter.toggle('fontsize_class', {value : cur['class']}); + ed.undoManager.add(); + ed.nodeChanged(); + } else { + ed.execCommand('FontSize', false, cur.fontSize); + } + + return; + } + + if (v['class']) { + ed.focus(); + ed.undoManager.add(); + ed.formatter.toggle('fontsize_class', {value : v['class']}); + ed.undoManager.add(); + ed.nodeChanged(); + } else + ed.execCommand('FontSize', false, v.fontSize); + + // Fake selection, execCommand will fire a nodeChange and update the selection + c.select(function(sv) { + return v == sv; + }); + + return false; // No auto select + }}); + + if (c) { + each(t.settings.theme_advanced_font_sizes, function(v, k) { + var fz = v.fontSize; + + if (fz >= 1 && fz <= 7) + fz = t.sizes[parseInt(fz) - 1] + 'pt'; + + c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))}); + }); + } + + return c; + }, + + _createBlockFormats : function() { + var c, fmts = { + p : 'advanced.paragraph', + address : 'advanced.address', + pre : 'advanced.pre', + h1 : 'advanced.h1', + h2 : 'advanced.h2', + h3 : 'advanced.h3', + h4 : 'advanced.h4', + h5 : 'advanced.h5', + h6 : 'advanced.h6', + div : 'advanced.div', + blockquote : 'advanced.blockquote', + code : 'advanced.code', + dt : 'advanced.dt', + dd : 'advanced.dd', + samp : 'advanced.samp' + }, t = this; + + c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'}); + if (c) { + each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { + c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); + }); + } + + return c; + }, + + _createForeColorMenu : function() { + var c, t = this, s = t.settings, o = {}, v; + + if (s.theme_advanced_more_colors) { + o.more_colors_func = function() { + t._mceColorPicker(0, { + color : c.value, + func : function(co) { + c.setColor(co); + } + }); + }; + } + + if (v = s.theme_advanced_text_colors) + o.colors = v; + + if (s.theme_advanced_default_foreground_color) + o.default_color = s.theme_advanced_default_foreground_color; + + o.title = 'advanced.forecolor_desc'; + o.cmd = 'ForeColor'; + o.scope = this; + + c = t.editor.controlManager.createColorSplitButton('forecolor', o); + + return c; + }, + + _createBackColorMenu : function() { + var c, t = this, s = t.settings, o = {}, v; + + if (s.theme_advanced_more_colors) { + o.more_colors_func = function() { + t._mceColorPicker(0, { + color : c.value, + func : function(co) { + c.setColor(co); + } + }); + }; + } + + if (v = s.theme_advanced_background_colors) + o.colors = v; + + if (s.theme_advanced_default_background_color) + o.default_color = s.theme_advanced_default_background_color; + + o.title = 'advanced.backcolor_desc'; + o.cmd = 'HiliteColor'; + o.scope = this; + + c = t.editor.controlManager.createColorSplitButton('backcolor', o); + + return c; + }, + + renderUI : function(o) { + var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl; + + if (ed.settings) { + ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut'); + } + // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for. + // Maybe actually inherit it from the original textara? + n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); + DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label); + if (!DOM.boxModel) + n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); + + n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); + n = tb = DOM.add(n, 'tbody'); + + switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { + case "rowlayout": + ic = t._rowLayout(s, tb, o); + break; + + case "customlayout": + ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p); + break; + + default: + ic = t._simpleLayout(s, tb, o, p); + } + + n = o.targetNode; + + // Add classes to first and last TRs + nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8 + DOM.addClass(nl[0], 'mceFirst'); + DOM.addClass(nl[nl.length - 1], 'mceLast'); + + // Add classes to first and last TDs + each(DOM.select('tr', tb), function(n) { + DOM.addClass(n.firstChild, 'mceFirst'); + DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast'); + }); + + if (DOM.get(s.theme_advanced_toolbar_container)) + DOM.get(s.theme_advanced_toolbar_container).appendChild(p); + else + DOM.insertAfter(p, n); + + Event.add(ed.id + '_path_row', 'click', function(e) { + e = e.target; + + if (e.nodeName == 'A') { + t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1')); + + return Event.cancel(e); + } + }); +/* + if (DOM.get(ed.id + '_path_row')) { + Event.add(ed.id + '_tbl', 'mouseover', function(e) { + var re; + + e = e.target; + + if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) { + re = DOM.get(ed.id + '_path_row'); + t.lastPath = re.innerHTML; + DOM.setHTML(re, e.parentNode.title); + } + }); + + Event.add(ed.id + '_tbl', 'mouseout', function(e) { + if (t.lastPath) { + DOM.setHTML(ed.id + '_path_row', t.lastPath); + t.lastPath = 0; + } + }); + } +*/ + + if (s.theme_advanced_toolbar_location == 'external') + o.deltaHeight = 0; + + t.deltaHeight = o.deltaHeight; + o.targetNode = null; + + ed.onKeyDown.add(function(ed, evt) { + var DOM_VK_F10 = 121, DOM_VK_F11 = 122; + if (evt.altKey) { + if (evt.keyCode === DOM_VK_F10) { + t.toolbarGroup.focus(); + return Event.cancel(evt); + } else if (evt.keyCode === DOM_VK_F11) { + DOM.get(ed.id + '_path_row').focus(); + return Event.cancel(evt); + } + } + }); + + // alt+0 is the UK recommended shortcut for accessing the list of access controls. + ed.addShortcut('alt+0', '', 'mceShortcuts', t); + + return { + iframeContainer : ic, + editorContainer : ed.id + '_parent', + sizeContainer : sc, + deltaHeight : o.deltaHeight + }; + }, + + getInfo : function() { + return { + longname : 'Advanced theme', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + version : tinymce.majorVersion + "." + tinymce.minorVersion + } + }, + + resizeBy : function(dw, dh) { + var e = DOM.get(this.editor.id + '_tbl'); + + this.resizeTo(e.clientWidth + dw, e.clientHeight + dh); + }, + + resizeTo : function(w, h, store) { + var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'); + + // Boundery fix box + w = Math.max(s.theme_advanced_resizing_min_width || 100, w); + h = Math.max(s.theme_advanced_resizing_min_height || 100, h); + w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w); + h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h); + + // Resize iframe and container + DOM.setStyle(e, 'height', ''); + DOM.setStyle(ifr, 'height', h); + + if (s.theme_advanced_resize_horizontal) { + DOM.setStyle(e, 'width', ''); + DOM.setStyle(ifr, 'width', w); + + // Make sure that the size is never smaller than the over all ui + if (w < e.clientWidth) { + w = e.clientWidth; + DOM.setStyle(ifr, 'width', e.clientWidth); + } + } + + // Store away the size + if (store && s.theme_advanced_resizing_use_cookie) { + Cookie.setHash("TinyMCE_" + ed.id + "_size", { + cw : w, + ch : h + }); + } + }, + + destroy : function() { + var id = this.editor.id; + + Event.clear(id + '_resize'); + Event.clear(id + '_path_row'); + Event.clear(id + '_external_close'); + }, + + // Internal functions + + _simpleLayout : function(s, tb, o, p) { + var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c; + + if (s.readonly) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + return ic; + } + + // Create toolbar container at top + if (lo == 'top') + t._addToolbars(tb, o); + + // Create external toolbar + if (lo == 'external') { + n = c = DOM.create('div', {style : 'position:relative'}); + n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'}); + DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'}); + n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0}); + etb = DOM.add(n, 'tbody'); + + if (p.firstChild.className == 'mceOldBoxModel') + p.firstChild.appendChild(c); + else + p.insertBefore(c, p.firstChild); + + t._addToolbars(etb, o); + + ed.onMouseUp.add(function() { + var e = DOM.get(ed.id + '_external'); + DOM.show(e); + + DOM.hide(lastExtID); + + var f = Event.add(ed.id + '_external_close', 'click', function() { + DOM.hide(ed.id + '_external'); + Event.remove(ed.id + '_external_close', 'click', f); + }); + + DOM.show(e); + DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1); + + // Fixes IE rendering bug + DOM.hide(e); + DOM.show(e); + e.style.filter = ''; + + lastExtID = ed.id + '_external'; + + e = null; + }); + } + + if (sl == 'top') + t._addStatusBar(tb, o); + + // Create iframe container + if (!s.theme_advanced_toolbar_container) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + } + + // Create toolbar container at bottom + if (lo == 'bottom') + t._addToolbars(tb, o); + + if (sl == 'bottom') + t._addStatusBar(tb, o); + + return ic; + }, + + _rowLayout : function(s, tb, o) { + var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a; + + dc = s.theme_advanced_containers_default_class || ''; + da = s.theme_advanced_containers_default_align || 'center'; + + each(explode(s.theme_advanced_containers || ''), function(c, i) { + var v = s['theme_advanced_container_' + c] || ''; + + switch (v.toLowerCase()) { + case 'mceeditor': + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + break; + + case 'mceelementpath': + t._addStatusBar(tb, o); + break; + + default: + a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase(); + a = 'mce' + t._ufirst(a); + + n = DOM.add(DOM.add(tb, 'tr'), 'td', { + 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da + }); + + to = cf.createToolbar("toolbar" + i); + t._addControls(v, to); + DOM.setHTML(n, to.renderHTML()); + o.deltaHeight -= s.theme_advanced_row_height; + } + }); + + return ic; + }, + + _addControls : function(v, tb) { + var t = this, s = t.settings, di, cf = t.editor.controlManager; + + if (s.theme_advanced_disable && !t._disabled) { + di = {}; + + each(explode(s.theme_advanced_disable), function(v) { + di[v] = 1; + }); + + t._disabled = di; + } else + di = t._disabled; + + each(explode(v), function(n) { + var c; + + if (di && di[n]) + return; + + // Compatiblity with 2.x + if (n == 'tablecontrols') { + each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) { + n = t.createControl(n, cf); + + if (n) + tb.add(n); + }); + + return; + } + + c = t.createControl(n, cf); + + if (c) + tb.add(c); + }); + }, + + _addToolbars : function(c, o) { + var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, a, toolbarGroup; + + toolbarGroup = cf.createToolbarGroup('toolbargroup', { + 'name': ed.getLang('advanced.toolbar'), + 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar') + }); + t.toolbarGroup = toolbarGroup; + + a = s.theme_advanced_toolbar_align.toLowerCase(); + a = 'mce' + t._ufirst(a); + + n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a}); + + // Create toolbar and add the controls + for (i=1; (v = s['theme_advanced_buttons' + i]); i++) { + tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i}); + + if (s['theme_advanced_buttons' + i + '_add']) + v += ',' + s['theme_advanced_buttons' + i + '_add']; + + if (s['theme_advanced_buttons' + i + '_add_before']) + v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v; + + t._addControls(v, tb); + toolbarGroup.add(tb); + + o.deltaHeight -= s.theme_advanced_row_height; + } + + DOM.setHTML(n, toolbarGroup.renderHTML()); + }, + + _addStatusBar : function(tb, o) { + var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td; + + n = DOM.add(tb, 'tr'); + n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); + n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'}); + if (s.theme_advanced_path) { + DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path')); + DOM.add(n, 'span', {}, ': '); + } else { + DOM.add(n, 'span', {}, ' '); + } + + if (s.theme_advanced_resizing) { + DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'}); + + if (s.theme_advanced_resizing_use_cookie) { + ed.onPostRender.add(function() { + var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl'); + + if (!o) + return; + + t.resizeTo(o.cw, o.ch); + }); + } + + ed.onPostRender.add(function() { + Event.add(ed.id + '_resize', 'click', function(e) { + e.preventDefault(); + }); + + Event.add(ed.id + '_resize', 'mousedown', function(e) { + var mouseMoveHandler1, mouseMoveHandler2, + mouseUpHandler1, mouseUpHandler2, + startX, startY, startWidth, startHeight, width, height, ifrElm; + + function resizeOnMove(e) { + e.preventDefault(); + + width = startWidth + (e.screenX - startX); + height = startHeight + (e.screenY - startY); + + t.resizeTo(width, height); + }; + + function endResize(e) { + // Stop listening + Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1); + Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2); + Event.remove(DOM.doc, 'mouseup', mouseUpHandler1); + Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2); + + width = startWidth + (e.screenX - startX); + height = startHeight + (e.screenY - startY); + t.resizeTo(width, height, true); + }; + + e.preventDefault(); + + // Get the current rect size + startX = e.screenX; + startY = e.screenY; + ifrElm = DOM.get(t.editor.id + '_ifr'); + startWidth = width = ifrElm.clientWidth; + startHeight = height = ifrElm.clientHeight; + + // Register envent handlers + mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove); + mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove); + mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize); + mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize); + }); + }); + } + + o.deltaHeight -= 21; + n = tb = null; + }, + + _updateUndoStatus : function(ed) { + var cm = ed.controlManager; + cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing); + cm.setDisabled('redo', !ed.undoManager.hasRedo()); + }, + + _nodeChanged : function(ed, cm, n, co, ob) { + var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches; + + tinymce.each(t.stateControls, function(c) { + cm.setActive(c, ed.queryCommandState(t.controls[c][1])); + }); + + function getParent(name) { + var i, parents = ob.parents, func = name; + + if (typeof(name) == 'string') { + func = function(node) { + return node.nodeName == name; + }; + } + + for (i = 0; i < parents.length; i++) { + if (func(parents[i])) + return parents[i]; + } + }; + + cm.setActive('visualaid', ed.hasVisual); + t._updateUndoStatus(ed); + cm.setDisabled('outdent', !ed.queryCommandState('Outdent')); + + p = getParent('A'); + if (c = cm.get('link')) { + if (!p || !p.name) { + c.setDisabled(!p && co); + c.setActive(!!p); + } + } + + if (c = cm.get('unlink')) { + c.setDisabled(!p && co); + c.setActive(!!p && !p.name); + } + + if (c = cm.get('anchor')) { + c.setActive(!!p && p.name); + } + + p = getParent('IMG'); + if (c = cm.get('image')) + c.setActive(!!p && n.className.indexOf('mceItem') == -1); + + if (c = cm.get('styleselect')) { + t._importClasses(); + + formatNames = []; + each(c.items, function(item) { + formatNames.push(item.value); + }); + + matches = ed.formatter.matchAll(formatNames); + c.select(matches[0]); + } + + if (c = cm.get('formatselect')) { + p = getParent(DOM.isBlock); + + if (p) + c.select(p.nodeName.toLowerCase()); + } + + // Find out current fontSize, fontFamily and fontClass + getParent(function(n) { + if (n.nodeName === 'SPAN') { + if (!cl && n.className) + cl = n.className; + } + + if (ed.dom.is(n, s.theme_advanced_font_selector)) { + if (!fz && n.style.fontSize) + fz = n.style.fontSize; + + if (!fn && n.style.fontFamily) + fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); + + if (!fc && n.style.color) + fc = n.style.color; + + if (!bc && n.style.backgroundColor) + bc = n.style.backgroundColor; + } + + return false; + }); + + if (c = cm.get('fontselect')) { + c.select(function(v) { + return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn; + }); + } + + // Select font size + if (c = cm.get('fontsizeselect')) { + // Use computed style + if (s.theme_advanced_runtime_fontsize && !fz && !cl) + fz = ed.dom.getStyle(n, 'fontSize', true); + + c.select(function(v) { + if (v.fontSize && v.fontSize === fz) + return true; + + if (v['class'] && v['class'] === cl) + return true; + }); + } + + if (s.theme_advanced_show_current_color) { + function updateColor(controlId, color) { + if (c = cm.get(controlId)) { + if (!color) + color = c.settings.default_color; + if (color !== c.value) { + c.displayColor(color); + } + } + } + updateColor('forecolor', fc); + updateColor('backcolor', bc); + } + + if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { + p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); + if (t.statusKeyboardNavigation) { + t.statusKeyboardNavigation.destroy(); + t.statusKeyboardNavigation = null; + } + DOM.setHTML(p, ''); + + getParent(function(n) { + var na = n.nodeName.toLowerCase(), u, pi, ti = ''; + + /*if (n.getAttribute('_mce_bogus')) + return; +*/ + // Ignore non element and hidden elements + if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) + return; + + // Fake name + if (v = DOM.getAttrib(n, 'mce_name')) + na = v; + + // Handle prefix + if (tinymce.isIE && n.scopeName !== 'HTML') + na = n.scopeName + ':' + na; + + // Remove internal prefix + na = na.replace(/mce\:/g, ''); + + // Handle node name + switch (na) { + case 'b': + na = 'strong'; + break; + + case 'i': + na = 'em'; + break; + + case 'img': + if (v = DOM.getAttrib(n, 'src')) + ti += 'src: ' + v + ' '; + + break; + + case 'a': + if (v = DOM.getAttrib(n, 'name')) { + ti += 'name: ' + v + ' '; + na += '#' + v; + } + + if (v = DOM.getAttrib(n, 'href')) + ti += 'href: ' + v + ' '; + + break; + + case 'font': + if (v = DOM.getAttrib(n, 'face')) + ti += 'font: ' + v + ' '; + + if (v = DOM.getAttrib(n, 'size')) + ti += 'size: ' + v + ' '; + + if (v = DOM.getAttrib(n, 'color')) + ti += 'color: ' + v + ' '; + + break; + + case 'span': + if (v = DOM.getAttrib(n, 'style')) + ti += 'style: ' + v + ' '; + + break; + } + + if (v = DOM.getAttrib(n, 'id')) + ti += 'id: ' + v + ' '; + + if (v = n.className) { + v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '') + + if (v) { + ti += 'class: ' + v + ' '; + + if (DOM.isBlock(n) || na == 'img' || na == 'span') + na += '.' + v; + } + } + + na = na.replace(/(html:)/g, ''); + na = {name : na, node : n, title : ti}; + t.onResolveName.dispatch(t, na); + ti = na.title; + na = na.name; + + //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');"; + pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); + + if (p.hasChildNodes()) { + p.insertBefore(DOM.create('span', { 'aria-hidden': 'true' }, ' \u00bb '), p.firstChild); + p.insertBefore(pi, p.firstChild); + } else + p.appendChild(pi); + + }, ed.getBody()); + + if (DOM.select('a', p).length > 0) { + t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({ + root: ed.id + "_path_row", + items: DOM.select('a', p), + excludeFromTabOrder: true, + onCancel: function() { + ed.focus(); + } + }, DOM); + } + } + }, + + // Commands gets called by execCommand + + _sel : function(v) { + this.editor.execCommand('mceSelectNodeDepth', false, v); + }, + + _mceInsertAnchor : function(ui, v) { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/anchor.htm', + width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)), + height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceCharMap : function() { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/charmap.htm', + width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), + height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceHelp : function() { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/about.htm', + width : 480, + height : 380, + inline : true + }, { + theme_url : this.url + }); + }, + + _mceShortcuts : function() { + var ed = this.editor; + ed.windowManager.open({ + url: this.url + '/shortcuts.htm', + width: 480, + height: 380, + inline: true + }, { + theme_url: this.url + }); + }, + + _mceColorPicker : function(u, v) { + var ed = this.editor; + + v = v || {}; + + ed.windowManager.open({ + url : this.url + '/color_picker.htm', + width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)), + height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)), + close_previous : false, + inline : true + }, { + input_color : v.color, + func : v.func, + theme_url : this.url + }); + }, + + _mceCodeEditor : function(ui, val) { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/source_editor.htm', + width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)), + height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)), + inline : true, + resizable : true, + maximizable : true + }, { + theme_url : this.url + }); + }, + + _mceImage : function(ui, val) { + var ed = this.editor; + + // Internal image object like a flash placeholder + if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) + return; + + ed.windowManager.open({ + url : this.url + '/image.htm', + width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)), + height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceLink : function(ui, val) { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/link.htm', + width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)), + height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceNewDocument : function() { + var ed = this.editor; + + ed.windowManager.confirm('advanced.newdocument', function(s) { + if (s) + ed.execCommand('mceSetContent', false, ''); + }); + }, + + _mceForeColor : function() { + var t = this; + + this._mceColorPicker(0, { + color: t.fgColor, + func : function(co) { + t.fgColor = co; + t.editor.execCommand('ForeColor', false, co); + } + }); + }, + + _mceBackColor : function() { + var t = this; + + this._mceColorPicker(0, { + color: t.bgColor, + func : function(co) { + t.bgColor = co; + t.editor.execCommand('HiliteColor', false, co); + } + }); + }, + + _ufirst : function(s) { + return s.substring(0, 1).toUpperCase() + s.substring(1); + } + }); + + tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); +}(tinymce)); diff --git a/tools/tiny_mce/themes/advanced/image.htm b/tools/tiny_mce/themes/advanced/image.htm new file mode 100644 index 00000000..98fd2cd0 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/image.htm @@ -0,0 +1,80 @@ + + + + {#advanced_dlg.image_title} + + + + + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    + x +
    +
    +
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/themes/advanced/img/colorpicker.jpg b/tools/tiny_mce/themes/advanced/img/colorpicker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4c542d107b25f68a9d4f9d7a109d0565d1f1437 GIT binary patch literal 3189 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 literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/themes/advanced/img/icons.gif b/tools/tiny_mce/themes/advanced/img/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..e46de5333082869b9bdab2576a554a2f9d01a966 GIT binary patch literal 11794 zcmWk!i9gei8~^OH(+nR+?qiNn!bm7$?mKheng~fXL_(QujvSd%A?0R7CgiL}a+f(O zN;OjH`ZiMOvR}XFKX_ix^M0Q9`~5r)PWGmI!&c$uzz+b}8$Q_3J`4cB+Lzu9odL-SKwq4;O-1r8)E~_ottI`aGXoKC%Au zn^#xDp}vVP`bSneE^UKdg?XnvE=UgehDKkkY9AdP{jI0_{bSMZpThwmk!wGX_1zudul>Eom7>$LI-A@t$)|4>D~MG&C1_zCR1#W^XEVDR=-wEvF0W^qAtIs z)-CkjpLXBFAX75e+9f86jDNd1jBg175*w=9#^cLYOG~p~zTtm;=-E(mwEEr#kH?=` z-Wu+Rd-7l>t*GMu*vscGE`ur7p5fH>_4Ul$YaH&E-1_Ck_kU=tbynl;glkiYS2iwJ z-)y_;S#nxV+^x;tu`DgtJ<_87V@KPMpId}(oB5Gw>!@21XPSy`tQFNgx|oyWnc8>M zkLZ#x(AGCiB$sv!%xqejT1GWCcTPOk(|a`k%iP?O1A_Nz47LvW@HcrMzkKIDUObf1 z)zCO~sEF^Cv(6I;!t!~vmMv!MTq|dpGdMJN5pl6)`RRWnqpR%I)gK8i_viq?$m)lw{^5u3pND@{D+11X1P+Xj4tqBz2fmV`K<2l!6#eJx03j`!`bbftj>{VZ?~#@ zU#JBxOKgFCqr7M5*o1vF7MI9$@=SWN!_Gq&7LIl$wy|dC{;UObM|R^SnJ;&^Wp==L+_>& z9HFf(-Mr8qJuAIf=hE^#Z)d6TH`q7&i@xNqXXld=2f)y?FoB5cX3Nt39Pt#l#og4K zA&A6+zw_sUcj~5eFu!VdwMX>`BMEvvH%=aDgW)ZuM2ZSN4)r=>Vt*GRKA&I8XFgV1 zKi5zQr=hdAr%|WSI}_T{_!nC5iz(e)PhsO_mIml8g%%3dH5b_zkz!3&vk4t4W>xyMM?Rgim)VJ3NYxbJ4@Sjn7klMA@JUN%=;H zWlkO&nbi|9mgRux$Q5}7q9fi)r~s&1w$YFcvjv4XXzy4-$6*EQ`ZwLeG3I9-e9yq0 zvbZ9Tq~w6TD^4pydn{tS7l9$6A5+rmocRc+IDpsZHqgiz<<v1V88S53UnpB&;jp(#rxs?7)FN!A}!Hx4c61 z#F}q>>Wg`cXtsv&)jrs2Fx2C(ow6p`M32bZf`Ff4#{?`DtW>E2*T$yX<1}p<#B7lF z6?x7+@}phbnN6nhHmKGPc~!0>@2sjOFJVG5Zl2fhOHV^O<6_F(Iq9BSaa(yDjqM9m!(@@Nm@ z+DX@KB#wUkPf>HP_E%>-AN4#EnlWCAogFY%&LGXN&cIcbmaJZ{ixIC&FOgCMSFVG~M0=r(q6P`J zaUS!vbQfk&IX;d~TExp(;V;0A)_0OQpXuBjpBLC_6*;RL{t9L}ZJzdbr2@Y&5UN%{ zFk`RW3^V5R?DLnV!wRxnuTL%u1)7oPrvjej4)xJ*5heUff@g_n}PjrtHiE2w)A{bkYhPFp2LdbjUQh%`f5MNZFsh1ef(*WrjeE0(&mG&X_a~M7*Ew+(shSk zElBN;D`~mUr{ZO?j&Bn`tvdKsW!kVp>F0d>Iy^v9Dc-WqU|Dfrc&PxuIGJ1;b9?r6 z!Say}Q}KYFmx$qEIPw-z_KdAq58fK`tOK{X5~Q{PR=Z6dRmEsbWarMD(|TmY!Y0Ya zPyE3{9XB1pO>V zTeY%3Aa&+RSF&M_{q53*Q%?pf`?sIJ{&^o&w(&j8{U`n;DozuwC+h~ddZh>`#P`PC zMcR$W0n2Cx!qfweM#Sqd7_wi^4tUoavKsFP9nr9(nLA%NTnh~h>XhMO@?4^v^8B!z z48^Q?Z!zOjF=q1k{magEw=!=^75oY3(s7+7;(kvGFu5-hC5W@CZkr`9$5?aVC+o#k!`Ff-pjNh;Xzx=)4EidJCw_a}637gMQ9RoVSP zS4a0ao+AVvv6mrC=f(?F6W$+}&v2=c&-9QP-hM>yf*nYCAz5caYP8mS2QQ&a-U{S` zkqK?t3bE3v3&}L1a~FZ}r%@I58`#Cdv&Di33e`<_9{BW~S-bCwrg#uh<%~m{h)m`E zXQdz9Xqk|))l4RQfM(b~en_al`fe|WqGxYcy&Z9-i;d9Rr(FH{|V z_)+x?Kg>}^3f$iR+20nf{-vuw_8m~NoOR@pkY!u4qc39Ve=o7nO z1raO6;``q%>aRVpIo?<7!aN{55XC=dWOdyPh_L<9i_3|#ZV58Zio6m7u5oM|KL+2+ zF;Ttv)*DR-SqOIgk!Nte&HJd7XrSPJFP;ntd9DH9OS9$n-!#yu-+v6lx8|Vg-m4hb~vvbIqwo#nlcg8dqF>StYcwZ4^j&u$*LLn7UUmOw|944evOFdj95PEc_13$ zo+*$>h!~lS-(6^Mm9{S07qR+wlwUof^wD5IJs!5zRH^s|Z>@LPYJ(CkfbYp*R6kH36@v4yDb9>>z zr^)jn#KB&kWah`4VlH)&*4_Wsbs=p}A@}2xXch1DQ$@xpJ z_UmmS`#tVCN%7s)G>U7Yn#WYZ&d1Fc_Qcx-gs9J$UJ=%~BGGmwU-)Glh6rE<@^As- zgX}rP)(@4w%~w|5p}Q|%39yWMWS8oqe$wj2p0E7%61`2SsJ-r9YNBlWH>8t+#FOb% zjUV>n@i3ei3CQ*Z;%DW0N7N$bLN}Jw($RXWiBM!0DY`+NNQyyS0+dIkZyTR>p2N2e z8@zY}OX+e2@TZZgN8@gtIuMRX*E)48Ou_qP#vSRsbw$AL&SVX|_Mtgk+IO@)lks{e zW8J~7kCdK5@mnD!fL0F0L@0+U0-A`|Ynes^!o#N|n*GFEP3TIMxVQ^hh1FsAIAN}9 zSxCH$s&R(KK{y3RLHr(%Sv_M0^LjUgoVpYmfyXChA}xRe6HKQ92RycH6x;ekd7a5aoCYh(bmTdj51#3tC*c66d43 zt@&r!5!2MTd2cDWkJM~t{Ar0^u4ek>YylUcN4!YQxhxw8ySR2B`dhlin$hrS=z^@c zrlV#*a2cA86!zQg^HUsPhngQk1isJhYD*6g(8aIufEYM<*v5URk?O2v0%0;f@6F$P zv1Hso|C>Vevy92U{kZD`1Sekbqcya;CzA7%R@a}>=PK~j) zO`(y9kj9px#YMYU3;%6ar|u%ubb`ZrL7?0TR%w}7n9O3G43sFNJ021q&wM&yLM^&# z6?S6V+6g`KMSNA#YE`++Km~Q?K<>03Ov*k^S}#lWQdm;8iIw{T;n)HvPigI+b_ohB zs|&^k#ht79>r~SqE78lVPRfurI;1}LP4&>udUTucLgiU-8aD~-6IrTFr?~c%R+FDK zXbjZgr~Tu9mY>De4<@s!JXn3%HD3j$$qW{2??A&rY-4d?V^MDH<+8@I-p2CY1`DDL zYoW1vUsG*hQ+-MkYhOmiFR`?;rklT-*zz}S?Yq$tc;j};jqb7=y}dX3pWSHt1=oR^ zb@=eRfz2@z!lPx)ZG6NDa=oI5xouof&^i1 zu!YPZVHZg3BU|K#qy-h&nF}aV4ABN+iqG2=h0zp}&?PqXY9}Zj=41m&w6XQv*}%hR zkSrT%Xx46c1L_d)LDQ@49ZYDL+dfPXndOT55ITIQ2>Vn>kpk5`5HI2aK^(N)a{xww zDN=;4REpt>u$x}u++5LBDmYh$YM`|oQoxG-!niYUOA=tRZMTo}P$66-xd^PUL}Dpj z$*Em|By1f|`X%<}vh&TiP116Ne=`YCprE|j7(dF*;36R@3V6W`>4opnBEm|k&^Zzj zMFxh5*jgegf{m`kTZB`3Syy{md63g@F~v#*e61Iwio5o_2h{0B2}{5Oq3t^0T^;Z+ z2{nHay7Rklz^osg!Imb&!kM=*S8rDd!Nq@zjZgGHasjv>ff=(l(4+ruYCl%6bcdtU zFPs6GQri@ncRzfD$p=A-zeTghrAo-qt9^*=@oE_WB9Gd?@w??;&?F#37DBe&8Xs)dn}B4gu<=94Vmw-w3U%P&BNSX2G+0IyHcN%}2O;k;2X~ea zKCMKsgCJ85%(Sv&XC;)&1e&&sn&v}=95jZ5CjAzx7>DiSi|wHT!eOug3MOR~Rmkr| zlAw*i)@0HH-`EGDRWNeO`0XquUj*s2Wfng}eK^R&dn9j}>`+D@ztQts_#GGZrLLm&WU$_1p$dSV+KuG%t z2va_TZJxpLIUjGq)9ypX9K4~xMW~nxi<=lw#-R+kvxayf_25Bd+@MbL;50=9!5>5z zJVbij-&0Ox@WO?l$L48a1%2mJ|$sbyJ&S~lSFAU~R?#`g9MNv>5T$B_K>^~!31MM>-!F^JNeo%za z1ER7=JADOa& z;REs{Av#{hlL~lJ#XL#V@aZMP05FP+F5sbAyy=ajYD7+UV?HY2JXR|N(rMvbW)4n6 zBDiMGlOKp4w#Z`&@;w{g!$-Lj7O-tdU&?@7Y!PyL0N)HV*M*abt7HLj5M>}TOdYgS z5@`mIj%1zyy8puHK2&voig!jpxqtP)bEs*6O%V%hd4VB!UJQZ9lVJDSEGl`Jrai(f z6zJ+l-@KUk!e_OvVqHjti8`!+EqNhac4x5s&fxX^t+~ykgQ5SuyE!<;e1@n3Btfgq z^IvXtb|T}(e7;Fe99)Du9quJoH{F zFnvs1m+%6de({3}XH(y=d37Gr&I02^Yj_y6$AlKKCrP0Cbv2~tZY<;uz>imo{o(^F zL{VuHHkS`Eh6nUR-_ zA>k0hqt@CA%=FUk%GYY4P|VbKY|&Ijn24c;S^O8dlT*v>U%zX<{Eis-Vf^0@L|B{R zK@27Yp<~5EcnG-~U{u*FVjNKrf_qY7H#vQwq6h+B`Kl#&k_(6cV#p_VG-*Y8WHjpp z`qXn!mxnk&f`li5J4{%GyvQBiTTxeta$VGqgm}dlN#ntebAjhfNR}|`OPUR$&c*|9 z0vXb$;Ibe6lU*oWH7sij%sY;A6!2G@@rVlt-Xpf=K&vew1CT)xRp)80ri|*65d#x2*#s0C1~n3o>_sfSy65iLtr(F^n6@z&7dg4Q`#wp<-(B7?ZEhmG zA@oa%-Mp`%^{oOiNxO)1QC#5?ePiW~N*5WJn0&61I{E8c*MnAPGF6+7zV)aTXu48n zD<_8Q+$uC*baOuVGzG{d^~7{8m58fLsT%vW1pSPCB)9_>4uck>jDkiQ> zkJPfI;wPFRKD9$*{A9y*d5FhjIe(ZyU$jytJ5X^1^2nuvm|`MLgv>N7i*7bWUeC&! z-|c|?lq@(p9lA9iE#@LSUn8RkC7-8<%64-kRE<-X3r=9i)bdUyk*P3?MPiJw^X<_$ zkAs`pG>N^7m5KE-Mny23f7m64G$G;{ODUY`ZzS)_;G(b^8nLTZD7W8H2>0tA!V>Nh z?8`Do1k=^XAVt%0kmT#~5w8M4iS|Kae}Ts<06SXMJlSfj|%(CK`E+G!nHx(#P# zpR0yVliaoB>T!6MLef0_xSU~f{W-1Fl_IU{t=?(ZTe<4Szw{QO+Y8zklRkbn$ubZ4q|&IK zC0Hryz&C#S(0noXvy#m1Hq|V9!=FGlGGUb6~vt+v}dh2qxwEPZViQ+OTDZ7Pgq^P)v<=w0BD9>>v0Um zDkmtJCIdNg6kd~H)E%(V zQu~RKFkBH5{PNQ!w_y}H;320Y_6AATKoi0aej~VUN1nlWx>SLkQ_|Vp;qMdcP>9-&>YYZCFX|*= zYx9XX0fibkRJSeDaIVVn^q}FD1&qX;>M^u9+GY{oWyGsGehQ9Mo}tjgHZQ1VYdfO1 zrZbcn5^;`U4yLjVN?N91{O*8^m3s2tN#rG=vZId5PckN^8f#GBmWDOG4b1;Giy|5V zZG4_WeR~LBv^(3CzWgJASUalN9v19`;dc#_#apP;{`5sghI5l?p~4~=siPbwTw5H5 z+GibRQcKM^FocK8QIFbej6da{`*$1K{^{q8L&di>qQG|s4-;}Nx<{WByY;Q6`LIDM z^S&szm3lZf%%%G&%-*W4ZhvK+DL-)jEETRoo`q{_14-V@14)Ayx11?iQZq0Tn3DxG zxUe`Ns6#tGAN_8 ze_UOD9iyAS42fMkCoMZLl5V;TwMRb??U|Y89dbmg@pBwfKIj%NqNtTA%-q1a zYQiJu9feiwTDGUw%|C5=ME}we#qDF41U+xgJvr(UY{(mPg4N5qzTF2N_PS`xi@$Qm zm7ySjm*ikv!0*dfIuKb=VibmSInV9DP^n}j^v+bo!KjIn7lfLYC$9CDq$t}?;WEmJ z0)sv7OP%vo)YwuH^BOlOC1cpM9#z7!x^{>gl$FEldbI60 zkgrDtIK=lIx=Y+UL>O|z8g_tyH2wq#sghrN6oFD`2rBq55bVE<57oQQ6fr6P;e+E2 zOLoseChS}Zcg8ZMUe+#J**32~z7-creMOMJFFVV!UMiv_YXsW}!LLu!h_GDSSX=RD zp2GSRD~F?2oORUR+8r}ww6G-&6G5SgGr>FA=QG5!wbv{U#I}0=0AYKm4~!37`;aah zHmnPSFoS~rvH2^{zO(NBuuQ{6)Z$KSSw`OVm^@MzIP4kdVX-a#mh~Bwf5pz;FPWE| zvJS(UgD({f2CqC+iTqE!IwA*x4DdwUp?vbg1C-t6?t9*$d5M>2+_Cz91cfJmWhcgH z*-CcoJ%l+O(;yVkA!z_V!lFx&m0jR0Aw`zUSBA^g){=Rm=pyl8$vFV1HM);}ZZkH2sidfpK@a@hHraOxqDn zSBb_bl>pVeY%@06;K)uN)?loc(s3K{8;6uAk|yBu98jl=JP(eLy2$(t7cx@9agRj~ zQgGwKRRsuTUvjGykMrf3sPau}0h&l9X!!@USOta$VTy#k78^D@H$l7Lj4XBAi(e&! znEOA3tyM{{nL$<*~_EHZ@SsAa2vaj^fVEldc?R%fA zHF&WecySnkqbbx%=cV zNI94GM0YckaPnnK{Zpx z(-I-OP4!3N2uFOaWa^z#Q>#M90nZ?-#oaWQ>e~F%pgJIa=@as@qR^FHcO%*7rpkmi zgq*AXjAfCr4gS;)v+;3)^G!$Rn=I_>O5AI0i!1`z&Nk$$BR%o-wWFAld;}XeQCjN+ z8Gv__QHN4cn+cY&){LLCbd%li1KpPUX76>USk%fISx9oyH`~)O9qF3nB1zmsm7T@wvrO*6*FGCp>n7bvpIB`c|#(K%j3AYdMy$Q(TT zZ(Fklef*KKT;nZS=)?p~dj1h5RRWzMjUK~VtU|toF5P+10s<^b#)(=-@Bhae@SpbN@Fo@9z(Gp;I98lx~Hh-poGc7NuNVpv-r$$0^soNwO9>pHQ z_*@Wr$im*?9`Gi?wsQwkxCkT(cC96q!iDeYNq4*`??|&w?olIiYcLt;&CFv&05|V} zVJ*2AIqS>*yJf^Gt-sOoL6P^s0p;YhNrOGiEX8(}&Ds{RpLAgh~!d z1>2g%qlYe_Orq~=MFXNlxWLGNgie9uDEd0xu!L2ZG?N}t=@1A=6S%;i6qpmkvPeX@lfji0|_j_%Y1r=4YYOmyWSlsBJfZTc#+eOf!7?EanC=?{R(6WztT z|FpXV4o=i?T^=cLY<^GtWA?xwv^KXao!nq^wTPGs+JysX*9<9q_J}R^Uv0DMCL0?k z3n~$qN`@edhyXdrrb_?3!x#e&vLLhj_+MY|KKL;%%KwtvrGgTb4Yvr4h-D?P>^)dY zMk7XN%(VMELueIUD^mK(h@t5q4bgXI_v* z$@AVj&--6IZ;lS?$b3Gq|9RKpX?YIpmG(sq(~Dw!YD5IawFJHcvn$9v69<5P6qqU! z)F&dRk5QxX!y_y^+2|QAv-iE`=NhiNFe|(od??vGEm8?1hYJ1yk@879ij$++FQ9&Y==2&n! zs>*xRg^?DGalKT-TJX+`#W<4@+W#m50BEnyk8Lu1OET%34C{Sh(KpPAJNqx%Ei5eE z4NYdeOr-@P#bsp!;1&zT1y7qdA6H`N)}Vn7{*Xxg>}|OG~KnbQOOjk5{#ASh6P%RhMo^HqqmXq|M_j@@wST@MAfz5oZmKTys+Iey?nSxsnuqHWf6z{95x#?!oQ3 z1j=2tH6(Nvtkqi@BYmh1{jjW1R_Ga~hRKw+kI|xs6;i2k*Oz2Gs0tPsb&4ii(WU&+ z`^D!UI@2sS)v0PI@xjef^#Io2Jd1tTacFji8HI@Pp7(Y{?yAQ*V}fQ~UQ&EtuOtFz zv_GX+A|9^5HG6%cn%?IN1y$ZTI{745rIKnUS|}L}$NF2hXw&V*{7z=gwIKt#_ zwr)xFj&ZNwkGx`DU;O=~zs3>3 z5VW5kaC@5OHZSE?sd;bi{P^YTu_9fcL>sn`jOH%>C)7fUsSTw%bk{+VaSD_;S+Nhx zp-WA-W3o6F@9lES{!pM+XZ#4ZRdN01JSLtCHZEy;9sl<~O22UX*p8_?suk)kMPguUV$i+B;HkurSBart5)TRz z$zn-iDoKa*lfo^NBHWV>A54lokrb7l6kV8fq#`M%HR4H;KvE&Su z&A`@-(3~H?w0~qd((JoI9UkleK11NnKS*m$&bybKKb2h2nvCEh84Y47Q5YF*h7Kp& z@3gvgGQDsy`SOX=SJF?H6#fhqJH^oYQR+z3;ZdVG*(S~s&W==*ocL0elxqEy8q1X0 zFVZsC_SYZ$Rd?^F4uDd?Gc=Ym{HfW!)tj}iQf_`pX%(bYyVHo;jFUVdx*MUuW4LpE znXzg9L0~&a2;d-=*HQ%+c@%W$!S2crXbn`aw2Ym5Ls2 zPaQ2x8>>hgANghtWQqA_Hl`rXR3PnJ;6Izvrd7_&=%1O5%Bgoh(@=4zrkfE0AyI7F zok(vNHp89pVRq`wi&tm9yfjIn`$h5mHt9^4g(z?P{Q<|IUoQ`yeS6~UyC0_zob1AM zD%1U?Kga!RCh?zE*VIRuY7Q56 z9a+~HFW%{QtHZzMDZRunYP`9Pa#>F=_@rC(`>$HuO6zP1-IxvSnOf&7hQ~fgse=cN z8isB88#|vg2X@7O{_ss_o_%QKg6`4pyPkE#JiT@7<9FS~?)Y~zEk}Roz3flXMS F{{gR&nqvR} literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/themes/advanced/js/about.js b/tools/tiny_mce/themes/advanced/js/about.js new file mode 100644 index 00000000..daf4909a --- /dev/null +++ b/tools/tiny_mce/themes/advanced/js/about.js @@ -0,0 +1,73 @@ +tinyMCEPopup.requireLangPack(); + +function init() { + var ed, tcont; + + tinyMCEPopup.resizeToInnerSize(); + ed = tinyMCEPopup.editor; + + // Give FF some time + window.setTimeout(insertHelpIFrame, 10); + + tcont = document.getElementById('plugintablecontainer'); + document.getElementById('plugins_tab').style.display = 'none'; + + var html = ""; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + tinymce.each(ed.plugins, function(p, n) { + var info; + + if (!p.getInfo) + return; + + html += ''; + + info = p.getInfo(); + + if (info.infourl != null && info.infourl != '') + html += ''; + else + html += ''; + + if (info.authorurl != null && info.authorurl != '') + html += ''; + else + html += ''; + + html += ''; + html += ''; + + document.getElementById('plugins_tab').style.display = ''; + + }); + + html += ''; + html += '
    ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
    ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
    '; + + tcont.innerHTML = html; + + tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; + tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; +} + +function insertHelpIFrame() { + var html; + + if (tinyMCEPopup.getParam('docs_url')) { + html = ''; + document.getElementById('iframecontainer').innerHTML = html; + document.getElementById('help_tab').style.display = 'block'; + document.getElementById('help_tab').setAttribute("aria-hidden", "false"); + } +} + +tinyMCEPopup.onInit.add(init); diff --git a/tools/tiny_mce/themes/advanced/js/anchor.js b/tools/tiny_mce/themes/advanced/js/anchor.js new file mode 100644 index 00000000..d7a854e9 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/js/anchor.js @@ -0,0 +1,37 @@ +tinyMCEPopup.requireLangPack(); + +var AnchorDialog = { + init : function(ed) { + var action, elm, f = document.forms[0]; + + this.editor = ed; + elm = ed.dom.getParent(ed.selection.getNode(), 'A'); + v = ed.dom.getAttrib(elm, 'name'); + + if (v) { + this.action = 'update'; + f.anchorName.value = v; + } + + f.insert.value = ed.getLang(elm ? 'update' : 'insert'); + }, + + update : function() { + var ed = this.editor, elm, name = document.forms[0].anchorName.value; + + tinyMCEPopup.restoreSelection(); + + if (this.action != 'update') + ed.selection.collapse(1); + + elm = ed.dom.getParent(ed.selection.getNode(), 'A'); + if (elm) + elm.name = name; + else + ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); + + tinyMCEPopup.close(); + } +}; + +tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); diff --git a/tools/tiny_mce/themes/advanced/js/charmap.js b/tools/tiny_mce/themes/advanced/js/charmap.js new file mode 100644 index 00000000..f4a5b1d1 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/js/charmap.js @@ -0,0 +1,353 @@ +/** + * charmap.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +tinyMCEPopup.requireLangPack(); + +var charmap = [ + [' ', ' ', true, 'no-break space'], + ['&', '&', true, 'ampersand'], + ['"', '"', true, 'quotation mark'], +// finance + ['¢', '¢', true, 'cent sign'], + ['€', '€', true, 'euro sign'], + ['£', '£', true, 'pound sign'], + ['¥', '¥', true, 'yen sign'], +// signs + ['©', '©', true, 'copyright sign'], + ['®', '®', true, 'registered sign'], + ['™', '™', true, 'trade mark sign'], + ['‰', '‰', true, 'per mille sign'], + ['µ', 'µ', true, 'micro sign'], + ['·', '·', true, 'middle dot'], + ['•', '•', true, 'bullet'], + ['…', '…', true, 'three dot leader'], + ['′', '′', true, 'minutes / feet'], + ['″', '″', true, 'seconds / inches'], + ['§', '§', true, 'section sign'], + ['¶', '¶', true, 'paragraph sign'], + ['ß', 'ß', true, 'sharp s / ess-zed'], +// quotations + ['‹', '‹', true, 'single left-pointing angle quotation mark'], + ['›', '›', true, 'single right-pointing angle quotation mark'], + ['«', '«', true, 'left pointing guillemet'], + ['»', '»', true, 'right pointing guillemet'], + ['‘', '‘', true, 'left single quotation mark'], + ['’', '’', true, 'right single quotation mark'], + ['“', '“', true, 'left double quotation mark'], + ['”', '”', true, 'right double quotation mark'], + ['‚', '‚', true, 'single low-9 quotation mark'], + ['„', '„', true, 'double low-9 quotation mark'], + ['<', '<', true, 'less-than sign'], + ['>', '>', true, 'greater-than sign'], + ['≤', '≤', true, 'less-than or equal to'], + ['≥', '≥', true, 'greater-than or equal to'], + ['–', '–', true, 'en dash'], + ['—', '—', true, 'em dash'], + ['¯', '¯', true, 'macron'], + ['‾', '‾', true, 'overline'], + ['¤', '¤', true, 'currency sign'], + ['¦', '¦', true, 'broken bar'], + ['¨', '¨', true, 'diaeresis'], + ['¡', '¡', true, 'inverted exclamation mark'], + ['¿', '¿', true, 'turned question mark'], + ['ˆ', 'ˆ', true, 'circumflex accent'], + ['˜', '˜', true, 'small tilde'], + ['°', '°', true, 'degree sign'], + ['−', '−', true, 'minus sign'], + ['±', '±', true, 'plus-minus sign'], + ['÷', '÷', true, 'division sign'], + ['⁄', '⁄', true, 'fraction slash'], + ['×', '×', true, 'multiplication sign'], + ['¹', '¹', true, 'superscript one'], + ['²', '²', true, 'superscript two'], + ['³', '³', true, 'superscript three'], + ['¼', '¼', true, 'fraction one quarter'], + ['½', '½', true, 'fraction one half'], + ['¾', '¾', true, 'fraction three quarters'], +// math / logical + ['ƒ', 'ƒ', true, 'function / florin'], + ['∫', '∫', true, 'integral'], + ['∑', '∑', true, 'n-ary sumation'], + ['∞', '∞', true, 'infinity'], + ['√', '√', true, 'square root'], + ['∼', '∼', false,'similar to'], + ['≅', '≅', false,'approximately equal to'], + ['≈', '≈', true, 'almost equal to'], + ['≠', '≠', true, 'not equal to'], + ['≡', '≡', true, 'identical to'], + ['∈', '∈', false,'element of'], + ['∉', '∉', false,'not an element of'], + ['∋', '∋', false,'contains as member'], + ['∏', '∏', true, 'n-ary product'], + ['∧', '∧', false,'logical and'], + ['∨', '∨', false,'logical or'], + ['¬', '¬', true, 'not sign'], + ['∩', '∩', true, 'intersection'], + ['∪', '∪', false,'union'], + ['∂', '∂', true, 'partial differential'], + ['∀', '∀', false,'for all'], + ['∃', '∃', false,'there exists'], + ['∅', '∅', false,'diameter'], + ['∇', '∇', false,'backward difference'], + ['∗', '∗', false,'asterisk operator'], + ['∝', '∝', false,'proportional to'], + ['∠', '∠', false,'angle'], +// undefined + ['´', '´', true, 'acute accent'], + ['¸', '¸', true, 'cedilla'], + ['ª', 'ª', true, 'feminine ordinal indicator'], + ['º', 'º', true, 'masculine ordinal indicator'], + ['†', '†', true, 'dagger'], + ['‡', '‡', true, 'double dagger'], +// alphabetical special chars + ['À', 'À', true, 'A - grave'], + ['Á', 'Á', true, 'A - acute'], + ['Â', 'Â', true, 'A - circumflex'], + ['Ã', 'Ã', true, 'A - tilde'], + ['Ä', 'Ä', true, 'A - diaeresis'], + ['Å', 'Å', true, 'A - ring above'], + ['Æ', 'Æ', true, 'ligature AE'], + ['Ç', 'Ç', true, 'C - cedilla'], + ['È', 'È', true, 'E - grave'], + ['É', 'É', true, 'E - acute'], + ['Ê', 'Ê', true, 'E - circumflex'], + ['Ë', 'Ë', true, 'E - diaeresis'], + ['Ì', 'Ì', true, 'I - grave'], + ['Í', 'Í', true, 'I - acute'], + ['Î', 'Î', true, 'I - circumflex'], + ['Ï', 'Ï', true, 'I - diaeresis'], + ['Ð', 'Ð', true, 'ETH'], + ['Ñ', 'Ñ', true, 'N - tilde'], + ['Ò', 'Ò', true, 'O - grave'], + ['Ó', 'Ó', true, 'O - acute'], + ['Ô', 'Ô', true, 'O - circumflex'], + ['Õ', 'Õ', true, 'O - tilde'], + ['Ö', 'Ö', true, 'O - diaeresis'], + ['Ø', 'Ø', true, 'O - slash'], + ['Œ', 'Œ', true, 'ligature OE'], + ['Š', 'Š', true, 'S - caron'], + ['Ù', 'Ù', true, 'U - grave'], + ['Ú', 'Ú', true, 'U - acute'], + ['Û', 'Û', true, 'U - circumflex'], + ['Ü', 'Ü', true, 'U - diaeresis'], + ['Ý', 'Ý', true, 'Y - acute'], + ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], + ['Þ', 'Þ', true, 'THORN'], + ['à', 'à', true, 'a - grave'], + ['á', 'á', true, 'a - acute'], + ['â', 'â', true, 'a - circumflex'], + ['ã', 'ã', true, 'a - tilde'], + ['ä', 'ä', true, 'a - diaeresis'], + ['å', 'å', true, 'a - ring above'], + ['æ', 'æ', true, 'ligature ae'], + ['ç', 'ç', true, 'c - cedilla'], + ['è', 'è', true, 'e - grave'], + ['é', 'é', true, 'e - acute'], + ['ê', 'ê', true, 'e - circumflex'], + ['ë', 'ë', true, 'e - diaeresis'], + ['ì', 'ì', true, 'i - grave'], + ['í', 'í', true, 'i - acute'], + ['î', 'î', true, 'i - circumflex'], + ['ï', 'ï', true, 'i - diaeresis'], + ['ð', 'ð', true, 'eth'], + ['ñ', 'ñ', true, 'n - tilde'], + ['ò', 'ò', true, 'o - grave'], + ['ó', 'ó', true, 'o - acute'], + ['ô', 'ô', true, 'o - circumflex'], + ['õ', 'õ', true, 'o - tilde'], + ['ö', 'ö', true, 'o - diaeresis'], + ['ø', 'ø', true, 'o slash'], + ['œ', 'œ', true, 'ligature oe'], + ['š', 'š', true, 's - caron'], + ['ù', 'ù', true, 'u - grave'], + ['ú', 'ú', true, 'u - acute'], + ['û', 'û', true, 'u - circumflex'], + ['ü', 'ü', true, 'u - diaeresis'], + ['ý', 'ý', true, 'y - acute'], + ['þ', 'þ', true, 'thorn'], + ['ÿ', 'ÿ', true, 'y - diaeresis'], + ['Α', 'Α', true, 'Alpha'], + ['Β', 'Β', true, 'Beta'], + ['Γ', 'Γ', true, 'Gamma'], + ['Δ', 'Δ', true, 'Delta'], + ['Ε', 'Ε', true, 'Epsilon'], + ['Ζ', 'Ζ', true, 'Zeta'], + ['Η', 'Η', true, 'Eta'], + ['Θ', 'Θ', true, 'Theta'], + ['Ι', 'Ι', true, 'Iota'], + ['Κ', 'Κ', true, 'Kappa'], + ['Λ', 'Λ', true, 'Lambda'], + ['Μ', 'Μ', true, 'Mu'], + ['Ν', 'Ν', true, 'Nu'], + ['Ξ', 'Ξ', true, 'Xi'], + ['Ο', 'Ο', true, 'Omicron'], + ['Π', 'Π', true, 'Pi'], + ['Ρ', 'Ρ', true, 'Rho'], + ['Σ', 'Σ', true, 'Sigma'], + ['Τ', 'Τ', true, 'Tau'], + ['Υ', 'Υ', true, 'Upsilon'], + ['Φ', 'Φ', true, 'Phi'], + ['Χ', 'Χ', true, 'Chi'], + ['Ψ', 'Ψ', true, 'Psi'], + ['Ω', 'Ω', true, 'Omega'], + ['α', 'α', true, 'alpha'], + ['β', 'β', true, 'beta'], + ['γ', 'γ', true, 'gamma'], + ['δ', 'δ', true, 'delta'], + ['ε', 'ε', true, 'epsilon'], + ['ζ', 'ζ', true, 'zeta'], + ['η', 'η', true, 'eta'], + ['θ', 'θ', true, 'theta'], + ['ι', 'ι', true, 'iota'], + ['κ', 'κ', true, 'kappa'], + ['λ', 'λ', true, 'lambda'], + ['μ', 'μ', true, 'mu'], + ['ν', 'ν', true, 'nu'], + ['ξ', 'ξ', true, 'xi'], + ['ο', 'ο', true, 'omicron'], + ['π', 'π', true, 'pi'], + ['ρ', 'ρ', true, 'rho'], + ['ς', 'ς', true, 'final sigma'], + ['σ', 'σ', true, 'sigma'], + ['τ', 'τ', true, 'tau'], + ['υ', 'υ', true, 'upsilon'], + ['φ', 'φ', true, 'phi'], + ['χ', 'χ', true, 'chi'], + ['ψ', 'ψ', true, 'psi'], + ['ω', 'ω', true, 'omega'], +// symbols + ['ℵ', 'ℵ', false,'alef symbol'], + ['ϖ', 'ϖ', false,'pi symbol'], + ['ℜ', 'ℜ', false,'real part symbol'], + ['ϑ','ϑ', false,'theta symbol'], + ['ϒ', 'ϒ', false,'upsilon - hook symbol'], + ['℘', '℘', false,'Weierstrass p'], + ['ℑ', 'ℑ', false,'imaginary part'], +// arrows + ['←', '←', true, 'leftwards arrow'], + ['↑', '↑', true, 'upwards arrow'], + ['→', '→', true, 'rightwards arrow'], + ['↓', '↓', true, 'downwards arrow'], + ['↔', '↔', true, 'left right arrow'], + ['↵', '↵', false,'carriage return'], + ['⇐', '⇐', false,'leftwards double arrow'], + ['⇑', '⇑', false,'upwards double arrow'], + ['⇒', '⇒', false,'rightwards double arrow'], + ['⇓', '⇓', false,'downwards double arrow'], + ['⇔', '⇔', false,'left right double arrow'], + ['∴', '∴', false,'therefore'], + ['⊂', '⊂', false,'subset of'], + ['⊃', '⊃', false,'superset of'], + ['⊄', '⊄', false,'not a subset of'], + ['⊆', '⊆', false,'subset of or equal to'], + ['⊇', '⊇', false,'superset of or equal to'], + ['⊕', '⊕', false,'circled plus'], + ['⊗', '⊗', false,'circled times'], + ['⊥', '⊥', false,'perpendicular'], + ['⋅', '⋅', false,'dot operator'], + ['⌈', '⌈', false,'left ceiling'], + ['⌉', '⌉', false,'right ceiling'], + ['⌊', '⌊', false,'left floor'], + ['⌋', '⌋', false,'right floor'], + ['⟨', '〈', false,'left-pointing angle bracket'], + ['⟩', '〉', false,'right-pointing angle bracket'], + ['◊', '◊', true,'lozenge'], + ['♠', '♠', false,'black spade suit'], + ['♣', '♣', true, 'black club suit'], + ['♥', '♥', true, 'black heart suit'], + ['♦', '♦', true, 'black diamond suit'], + [' ', ' ', false,'en space'], + [' ', ' ', false,'em space'], + [' ', ' ', false,'thin space'], + ['‌', '‌', false,'zero width non-joiner'], + ['‍', '‍', false,'zero width joiner'], + ['‎', '‎', false,'left-to-right mark'], + ['‏', '‏', false,'right-to-left mark'], + ['­', '­', false,'soft hyphen'] +]; + +tinyMCEPopup.onInit.add(function() { + tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); + addKeyboardNavigation(); +}); + +function addKeyboardNavigation(){ + var tableElm, cells, settings; + cells = tinyMCEPopup.dom.select(".charmaplink", "charmapgroup"); + + settings ={ + root: "charmapgroup", + items: cells + }; + tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom); + +} + +function renderCharMapHTML() { + var charsPerRow = 20, tdWidth=20, tdHeight=20, i; + var html = '
    '+ + ''; + var cols=-1; + + for (i=0; i' + + '' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + + html += '
    '; + + return html; +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); + + tinyMCEPopup.editor.focus(); + tinyMCEPopup.close(); +} + +function previewChar(codeA, codeB, codeN) { + var elmA = document.getElementById('codeA'); + var elmB = document.getElementById('codeB'); + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmB.innerHTML = '&' + codeA; + elmA.innerHTML = '&' + codeB; + elmN.innerHTML = codeN; +} diff --git a/tools/tiny_mce/themes/advanced/js/color_picker.js b/tools/tiny_mce/themes/advanced/js/color_picker.js new file mode 100644 index 00000000..c491ffd8 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/js/color_picker.js @@ -0,0 +1,329 @@ +tinyMCEPopup.requireLangPack(); + +var detail = 50, strhex = "0123456789ABCDEF", i, isMouseDown = false, isMouseOver = false; + +var colors = [ + "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", + "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", + "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", + "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", + "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", + "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", + "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", + "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", + "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", + "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", + "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", + "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", + "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", + "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", + "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", + "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", + "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", + "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", + "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", + "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", + "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", + "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", + "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", + "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", + "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", + "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", + "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" +]; + +var named = { + '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', + '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown', + '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue', + '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod', + '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green', + '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue', + '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue', + '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green', + '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey', + '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory', + '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue', + '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green', + '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey', + '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', + '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue', + '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin', + '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid', + '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff', + '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue', + '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver', + '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green', + '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', + '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green' +}; + +var namedLookup = {}; + +function init() { + var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value; + + tinyMCEPopup.resizeToInnerSize(); + + generatePicker(); + generateWebColors(); + generateNamedColors(); + + if (inputColor) { + changeFinalColor(inputColor); + + col = convertHexToRGB(inputColor); + + if (col) + updateLight(col.r, col.g, col.b); + } + + for (key in named) { + value = named[key]; + namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase(); + } +} + +function toHexColor(color) { + var matches, red, green, blue, toInt = parseInt; + + function hex(value) { + value = parseInt(value).toString(16); + + return value.length > 1 ? value : '0' + value; // Padd with leading zero + }; + + color = color.replace(/[\s#]+/g, '').toLowerCase(); + color = namedLookup[color] || color; + matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})|([a-f0-9])([a-f0-9])([a-f0-9])$/.exec(color); + + if (matches) { + if (matches[1]) { + red = toInt(matches[1]); + green = toInt(matches[2]); + blue = toInt(matches[3]); + } else if (matches[4]) { + red = toInt(matches[4], 16); + green = toInt(matches[5], 16); + blue = toInt(matches[6], 16); + } else if (matches[7]) { + red = toInt(matches[7] + matches[7], 16); + green = toInt(matches[8] + matches[8], 16); + blue = toInt(matches[9] + matches[9], 16); + } + + return '#' + hex(red) + hex(green) + hex(blue); + } + + return ''; +} + +function insertAction() { + var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); + + tinyMCEPopup.restoreSelection(); + + if (f) + f(toHexColor(color)); + + tinyMCEPopup.close(); +} + +function showColor(color, name) { + if (name) + document.getElementById("colorname").innerHTML = name; + + document.getElementById("preview").style.backgroundColor = color; + document.getElementById("color").value = color.toUpperCase(); +} + +function convertRGBToHex(col) { + var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); + + if (!col) + return col; + + var rgb = col.replace(re, "$1,$2,$3").split(','); + if (rgb.length == 3) { + r = parseInt(rgb[0]).toString(16); + g = parseInt(rgb[1]).toString(16); + b = parseInt(rgb[2]).toString(16); + + r = r.length == 1 ? '0' + r : r; + g = g.length == 1 ? '0' + g : g; + b = b.length == 1 ? '0' + b : b; + + return "#" + r + g + b; + } + + return col; +} + +function convertHexToRGB(col) { + if (col.indexOf('#') != -1) { + col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); + + r = parseInt(col.substring(0, 2), 16); + g = parseInt(col.substring(2, 4), 16); + b = parseInt(col.substring(4, 6), 16); + + return {r : r, g : g, b : b}; + } + + return null; +} + +function generatePicker() { + var el = document.getElementById('light'), h = '', i; + + for (i = 0; i < detail; i++){ + h += '
    '; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby. + h += '
    ' + + ''; + + for (i=0; i' + + ''; + if (tinyMCEPopup.editor.forcedHighContrastMode) { + h += ''; + } + h += ''; + h += ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
    '; + + el.innerHTML = h; + el.className = 'generated'; + + paintCanvas(el); + enableKeyboardNavigation(el.firstChild); +} + +function paintCanvas(el) { + tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) { + var context; + if (canvas.getContext && (context = canvas.getContext("2d"))) { + context.fillStyle = canvas.getAttribute('data-color'); + context.fillRect(0, 0, 10, 10); + } + }); +} +function generateNamedColors() { + var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; + + if (el.className == 'generated') + return; + + for (n in named) { + v = named[n]; + h += ''; + if (tinyMCEPopup.editor.forcedHighContrastMode) { + h += ''; + } + h += ''; + h += ''; + i++; + } + + el.innerHTML = h; + el.className = 'generated'; + + paintCanvas(el); + enableKeyboardNavigation(el); +} + +function enableKeyboardNavigation(el) { + tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', { + root: el, + items: tinyMCEPopup.dom.select('a', el) + }, tinyMCEPopup.dom); +} + +function dechex(n) { + return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); +} + +function computeColor(e) { + var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; + + x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); + y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); + + partWidth = document.getElementById('colors').width / 6; + partDetail = detail / 2; + imHeight = document.getElementById('colors').height; + + r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; + g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); + b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); + + coef = (imHeight - y) / imHeight; + r = 128 + (r - 128) * coef; + g = 128 + (g - 128) * coef; + b = 128 + (b - 128) * coef; + + changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); + updateLight(r, g, b); +} + +function updateLight(r, g, b) { + var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; + + for (i=0; i=0) && (i'); + }, + + init : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor; + + // Setup browse button + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '180px'; + + e = ed.selection.getNode(); + + this.fillFileList('image_list', 'tinyMCEImageList'); + + if (e.nodeName == 'IMG') { + f.src.value = ed.dom.getAttrib(e, 'src'); + f.alt.value = ed.dom.getAttrib(e, 'alt'); + f.border.value = this.getAttrib(e, 'border'); + f.vspace.value = this.getAttrib(e, 'vspace'); + f.hspace.value = this.getAttrib(e, 'hspace'); + f.width.value = ed.dom.getAttrib(e, 'width'); + f.height.value = ed.dom.getAttrib(e, 'height'); + f.insert.value = ed.getLang('update'); + this.styleVal = ed.dom.getAttrib(e, 'style'); + selectByValue(f, 'image_list', f.src.value); + selectByValue(f, 'align', this.getAttrib(e, 'align')); + this.updateStyle(); + } + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + update : function() { + var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el; + + tinyMCEPopup.restoreSelection(); + + if (f.src.value === '') { + if (ed.selection.getNode().nodeName == 'IMG') { + ed.dom.remove(ed.selection.getNode()); + ed.execCommand('mceRepaint'); + } + + tinyMCEPopup.close(); + return; + } + + if (!ed.settings.inline_styles) { + args = tinymce.extend(args, { + vspace : nl.vspace.value, + hspace : nl.hspace.value, + border : nl.border.value, + align : getSelectValue(f, 'align') + }); + } else + args.style = this.styleVal; + + tinymce.extend(args, { + src : f.src.value.replace(/ /g, '%20'), + alt : f.alt.value, + width : f.width.value, + height : f.height.value + }); + + el = ed.selection.getNode(); + + if (el && el.nodeName == 'IMG') { + ed.dom.setAttribs(el, args); + tinyMCEPopup.editor.execCommand('mceRepaint'); + tinyMCEPopup.editor.focus(); + } else { + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.dom.setAttribs('__mce_tmp', args); + ed.dom.setAttrib('__mce_tmp', 'id', ''); + ed.undoManager.add(); + } + + tinyMCEPopup.close(); + }, + + updateStyle : function() { + var dom = tinyMCEPopup.dom, st, v, f = document.forms[0]; + + if (tinyMCEPopup.editor.settings.inline_styles) { + st = tinyMCEPopup.dom.parseStyle(this.styleVal); + + // Handle align + v = getSelectValue(f, 'align'); + if (v) { + if (v == 'left' || v == 'right') { + st['float'] = v; + delete st['vertical-align']; + } else { + st['vertical-align'] = v; + delete st['float']; + } + } else { + delete st['float']; + delete st['vertical-align']; + } + + // Handle border + v = f.border.value; + if (v || v == '0') { + if (v == '0') + st['border'] = '0'; + else + st['border'] = v + 'px solid black'; + } else + delete st['border']; + + // Handle hspace + v = f.hspace.value; + if (v) { + delete st['margin']; + st['margin-left'] = v + 'px'; + st['margin-right'] = v + 'px'; + } else { + delete st['margin-left']; + delete st['margin-right']; + } + + // Handle vspace + v = f.vspace.value; + if (v) { + delete st['margin']; + st['margin-top'] = v + 'px'; + st['margin-bottom'] = v + 'px'; + } else { + delete st['margin-top']; + delete st['margin-bottom']; + } + + // Merge + st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img'); + this.styleVal = dom.serializeStyle(st, 'img'); + } + }, + + getAttrib : function(e, at) { + var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; + + if (ed.settings.inline_styles) { + switch (at) { + case 'align': + if (v = dom.getStyle(e, 'float')) + return v; + + if (v = dom.getStyle(e, 'vertical-align')) + return v; + + break; + + case 'hspace': + v = dom.getStyle(e, 'margin-left') + v2 = dom.getStyle(e, 'margin-right'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'vspace': + v = dom.getStyle(e, 'margin-top') + v2 = dom.getStyle(e, 'margin-bottom'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'border': + v = 0; + + tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { + sv = dom.getStyle(e, 'border-' + sv + '-width'); + + // False or not the same as prev + if (!sv || (sv != v && v !== 0)) { + v = 0; + return false; + } + + if (sv) + v = sv; + }); + + if (v) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + } + } + + if (v = dom.getAttrib(e, at)) + return v; + + return ''; + }, + + resetImageData : function() { + var f = document.forms[0]; + + f.width.value = f.height.value = ""; + }, + + updateImageData : function() { + var f = document.forms[0], t = ImageDialog; + + if (f.width.value == "") + f.width.value = t.preloadImg.width; + + if (f.height.value == "") + f.height.value = t.preloadImg.height; + }, + + getImageData : function() { + var f = document.forms[0]; + + this.preloadImg = new Image(); + this.preloadImg.onload = this.updateImageData; + this.preloadImg.onerror = this.resetImageData; + this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value); + } +}; + +ImageDialog.preInit(); +tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/tools/tiny_mce/themes/advanced/js/link.js b/tools/tiny_mce/themes/advanced/js/link.js new file mode 100644 index 00000000..f64a88d9 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/js/link.js @@ -0,0 +1,156 @@ +tinyMCEPopup.requireLangPack(); + +var LinkDialog = { + preInit : function() { + var url; + + if (url = tinyMCEPopup.getParam("external_link_list_url")) + document.write(''); + }, + + init : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor; + + // Setup browse button + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link'); + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '180px'; + + this.fillClassList('class_list'); + this.fillFileList('link_list', 'tinyMCELinkList'); + this.fillTargetList('target_list'); + + if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) { + f.href.value = ed.dom.getAttrib(e, 'href'); + f.linktitle.value = ed.dom.getAttrib(e, 'title'); + f.insert.value = ed.getLang('update'); + selectByValue(f, 'link_list', f.href.value); + selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target')); + selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class')); + } + }, + + update : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20'); + + tinyMCEPopup.restoreSelection(); + e = ed.dom.getParent(ed.selection.getNode(), 'A'); + + // Remove element if there is no href + if (!f.href.value) { + if (e) { + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + b = ed.selection.getBookmark(); + ed.dom.remove(e, 1); + ed.selection.moveToBookmark(b); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + return; + } + } + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + // Create new anchor elements + if (e == null) { + ed.getDoc().execCommand("unlink", false, null); + tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); + + tinymce.each(ed.dom.select("a"), function(n) { + if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { + e = n; + + ed.dom.setAttribs(e, { + href : href, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + }); + } else { + ed.dom.setAttribs(e, { + href : href, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + + // Don't move caret if selection was image + if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { + ed.focus(); + ed.selection.select(e); + ed.selection.collapse(0); + tinyMCEPopup.storeSelection(); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + }, + + checkPrefix : function(n) { + if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) + n.value = 'mailto:' + n.value; + + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) + n.value = 'http://' + n.value; + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillClassList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { + cl = []; + + tinymce.each(v.split(';'), function(v) { + var p = v.split('='); + + cl.push({'title' : p[0], 'class' : p[1]}); + }); + } else + cl = tinyMCEPopup.editor.dom.getClasses(); + + if (cl.length > 0) { + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + + tinymce.each(cl, function(o) { + lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillTargetList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v; + + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self'); + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank'); + + if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { + tinymce.each(v.split(','), function(v) { + v = v.split('='); + lst.options[lst.options.length] = new Option(v[0], v[1]); + }); + } + } +}; + +LinkDialog.preInit(); +tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog); diff --git a/tools/tiny_mce/themes/advanced/js/source_editor.js b/tools/tiny_mce/themes/advanced/js/source_editor.js new file mode 100644 index 00000000..4f61d1c7 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/js/source_editor.js @@ -0,0 +1,56 @@ +tinyMCEPopup.requireLangPack(); +tinyMCEPopup.onInit.add(onLoadInit); + +function saveContent() { + tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + // Remove Gecko spellchecking + if (tinymce.isGecko) + document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); + + document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); + + if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { + setWrap('soft'); + document.getElementById('wraped').checked = true; + } + + resizeInputs(); +} + +function setWrap(val) { + var v, n, s = document.getElementById('htmlSource'); + + s.wrap = val; + + if (!tinymce.isIE) { + v = s.value; + n = s.cloneNode(false); + n.setAttribute("wrap", val); + s.parentNode.replaceChild(n, s); + n.value = v; + } +} + +function toggleWordWrap(elm) { + if (elm.checked) + setWrap('soft'); + else + setWrap('off'); +} + +function resizeInputs() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('htmlSource'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 65) + 'px'; + } +} diff --git a/tools/tiny_mce/themes/advanced/langs/en.js b/tools/tiny_mce/themes/advanced/langs/en.js new file mode 100644 index 00000000..4c74747e --- /dev/null +++ b/tools/tiny_mce/themes/advanced/langs/en.js @@ -0,0 +1,68 @@ +tinyMCE.addI18n('en.advanced',{ +style_select:"Styles", +font_size:"Font size", +fontdefault:"Font family", +block:"Format", +paragraph:"Paragraph", +div:"Div", +address:"Address", +pre:"Preformatted", +h1:"Heading 1", +h2:"Heading 2", +h3:"Heading 3", +h4:"Heading 4", +h5:"Heading 5", +h6:"Heading 6", +blockquote:"Blockquote", +code:"Code", +samp:"Code sample", +dt:"Definition term ", +dd:"Definition description", +bold_desc:"Bold (Ctrl+B)", +italic_desc:"Italic (Ctrl+I)", +underline_desc:"Underline (Ctrl+U)", +striketrough_desc:"Strikethrough", +justifyleft_desc:"Align left", +justifycenter_desc:"Align center", +justifyright_desc:"Align right", +justifyfull_desc:"Align full", +bullist_desc:"Unordered list", +numlist_desc:"Ordered list", +outdent_desc:"Outdent", +indent_desc:"Indent", +undo_desc:"Undo (Ctrl+Z)", +redo_desc:"Redo (Ctrl+Y)", +link_desc:"Insert/edit link", +unlink_desc:"Unlink", +image_desc:"Insert/edit image", +cleanup_desc:"Cleanup messy code", +code_desc:"Edit HTML Source", +sub_desc:"Subscript", +sup_desc:"Superscript", +hr_desc:"Insert horizontal ruler", +removeformat_desc:"Remove formatting", +custom1_desc:"Your custom description here", +forecolor_desc:"Select text color", +backcolor_desc:"Select background color", +charmap_desc:"Insert custom character", +visualaid_desc:"Toggle guidelines/invisible elements", +anchor_desc:"Insert/edit anchor", +cut_desc:"Cut", +copy_desc:"Copy", +paste_desc:"Paste", +image_props_desc:"Image properties", +newdocument_desc:"New document", +help_desc:"Help", +blockquote_desc:"Blockquote", +clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?", +path:"Path", +newdocument:"Are you sure you want clear all contents?", +toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X", +more_colors:"More colors", + +// Accessibility Strings +shortcuts_desc:'Accessibility Help', +help_shortcut:'. Press ALT F10 for toolbar. Press ALT 0 for help.', +rich_text_area:"Rich Text Area", +toolbar:"Toolbar" +}); diff --git a/tools/tiny_mce/themes/advanced/langs/en_dlg.js b/tools/tiny_mce/themes/advanced/langs/en_dlg.js new file mode 100644 index 00000000..7f836506 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/langs/en_dlg.js @@ -0,0 +1,53 @@ +tinyMCE.addI18n('en.advanced_dlg',{ +about_title:"About TinyMCE", +about_general:"About", +about_help:"Help", +about_license:"License", +about_plugins:"Plugins", +about_plugin:"Plugin", +about_author:"Author", +about_version:"Version", +about_loaded:"Loaded plugins", +anchor_title:"Insert/edit anchor", +anchor_name:"Anchor name", +code_title:"HTML Source Editor", +code_wordwrap:"Word wrap", +colorpicker_title:"Select a color", +colorpicker_picker_tab:"Picker", +colorpicker_picker_title:"Color picker", +colorpicker_palette_tab:"Palette", +colorpicker_palette_title:"Palette colors", +colorpicker_named_tab:"Named", +colorpicker_named_title:"Named colors", +colorpicker_color:"Color:", +colorpicker_name:"Name:", +charmap_title:"Select custom character", +image_title:"Insert/edit image", +image_src:"Image URL", +image_alt:"Image description", +image_list:"Image list", +image_border:"Border", +image_dimensions:"Dimensions", +image_vspace:"Vertical space", +image_hspace:"Horizontal space", +image_align:"Alignment", +image_align_baseline:"Baseline", +image_align_top:"Top", +image_align_middle:"Middle", +image_align_bottom:"Bottom", +image_align_texttop:"Text top", +image_align_textbottom:"Text bottom", +image_align_left:"Left", +image_align_right:"Right", +link_title:"Insert/edit link", +link_url:"Link URL", +link_target:"Target", +link_target_same:"Open link in the same window", +link_target_blank:"Open link in a new window", +link_titlefield:"Title", +link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", +link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", +link_list:"Link list", +accessibility_help:"Accessibility Help", +accessibility_usage_title:"General Usage" +}); \ No newline at end of file diff --git a/tools/tiny_mce/themes/advanced/link.htm b/tools/tiny_mce/themes/advanced/link.htm new file mode 100644 index 00000000..22627ccc --- /dev/null +++ b/tools/tiny_mce/themes/advanced/link.htm @@ -0,0 +1,58 @@ + + + + {#advanced_dlg.link_title} + + + + + + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    +
    +
    + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/themes/advanced/shortcuts.htm b/tools/tiny_mce/themes/advanced/shortcuts.htm new file mode 100644 index 00000000..436091f1 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/shortcuts.htm @@ -0,0 +1,47 @@ + + + + {#advanced_dlg.accessibility_help} + + + + +

    {#advanced_dlg.accessibility_usage_title}

    +

    Toolbars

    +

    Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys. + Press enter to activate a button and return focus to the editor. + Press escape to return focus to the editor without performing any actions.

    + +

    Status Bar

    +

    To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path. + Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.

    + +

    Context Menu

    +

    Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key. + To close submenus press the left arrow key. Press escape to close the context menu.

    + +

    Keyboard Shortcuts

    + + + + + + + + + + + + + + + + + + + + + +
    KeystrokeFunction
    Control-BBold
    Control-IItalic
    Control-ZUndo
    Control-YRedo
    + + diff --git a/tools/tiny_mce/themes/advanced/skins/default/content.css b/tools/tiny_mce/themes/advanced/skins/default/content.css new file mode 100644 index 00000000..adc5569a --- /dev/null +++ b/tools/tiny_mce/themes/advanced/skins/default/content.css @@ -0,0 +1,37 @@ +body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} +body {background:#FFF;} +body.mceForceColors {background:#FFF; color:#000;} +body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;} +h1 {font-size: 2em} +h2 {font-size: 1.5em} +h3 {font-size: 1.17em} +h4 {font-size: 1em} +h5 {font-size: .83em} +h6 {font-size: .75em} +.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} +a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} +span.mceItemNbsp {background: #DDD} +td.mceSelected, th.mceSelected {background-color:#3399ff !important} +img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr {border-bottom:1px dashed #CCC; cursor:help} + +/* IE */ +* html body { +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +} + +img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} +font[face=mceinline] {font-family:inherit !important} diff --git a/tools/tiny_mce/themes/advanced/skins/default/dialog.css b/tools/tiny_mce/themes/advanced/skins/default/dialog.css new file mode 100644 index 00000000..1f5598c6 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/skins/default/dialog.css @@ -0,0 +1,117 @@ +/* Generic */ +body { +font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDDDDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +background:#F0F0EE; +padding:0; +margin:8px 8px 0 8px; +} + +html {background:#F0F0EE;} +td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +textarea {resize:none;outline:none;} +a:link, a:visited {color:black;} +a:hover {color:#2B6FB6;} +.nowrap {white-space: nowrap} + +/* Forms */ +fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} +legend {color:#2B6FB6; font-weight:bold;} +label.msg {display:none;} +label.invalid {color:#EE0000; display:inline;} +input.invalid {border:1px solid #EE0000;} +input {background:#FFF; border:1px solid #CCC;} +input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +input, select, textarea {border:1px solid #808080;} +input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} +input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} +.input_noborder {border:0;} + +/* Buttons */ +#insert, #cancel, input.button, .updateButton { +border:0; margin:0; padding:0; +font-weight:bold; +width:94px; height:26px; +background:url(img/buttons.png) 0 -26px; +cursor:pointer; +padding-bottom:2px; +float:left; +} + +#insert {background:url(img/buttons.png) 0 -52px} +#cancel {background:url(img/buttons.png) 0 0; float:right} + +/* Browse */ +a.pickcolor, a.browse {text-decoration:none} +a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} +.mceOldBoxModel a.browse span {width:22px; height:20px;} +a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} +a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} +a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} +.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} +a.pickcolor:hover span {background-color:#B2BBD0;} +a.pickcolor:hover span.disabled {} + +/* Charmap */ +table.charmap {border:1px solid #AAA; text-align:center} +td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} +#charmap a {display:block; color:#000; text-decoration:none; border:0} +#charmap a:hover {background:#CCC;color:#2B6FB6} +#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} +#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} + +/* Source */ +.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} +.mceActionPanel {margin-top:5px;} + +/* Tabs classes */ +.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;} +.tabs ul {margin:0; padding:0; list-style:none;} +.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} +.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} +.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} +.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} +.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} +.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} + +/* Panels */ +.panel_wrapper div.panel {display:none;} +.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} +.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} + +/* Columns */ +.column {float:left;} +.properties {width:100%;} +.properties .column1 {} +.properties .column2 {text-align:left;} + +/* Titles */ +h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} +h3 {font-size:14px;} +.title {font-size:12px; font-weight:bold; color:#2B6FB6;} + +/* Dialog specific */ +#link .panel_wrapper, #link div.current {height:125px;} +#image .panel_wrapper, #image div.current {height:200px;} +#plugintable thead {font-weight:bold; background:#DDD;} +#plugintable, #about #plugintable td {border:1px solid #919B9C;} +#plugintable {width:96%; margin-top:10px;} +#pluginscontainer {height:290px; overflow:auto;} +#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} +#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} +#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} +#colorpicker #light div {overflow:hidden;} +#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} +#colorpicker .panel_wrapper div.current {height:175px;} +#colorpicker #namedcolors {width:150px;} +#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} +#colorpicker #colornamecontainer {margin-top:5px;} +#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/tools/tiny_mce/themes/advanced/skins/default/img/buttons.png b/tools/tiny_mce/themes/advanced/skins/default/img/buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..7dd58418ba7cfe58ae7efdf174e0b223fe3aa6a0 GIT binary patch literal 3274 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 SLTQbO*E^TJI;F+RU=09Vu@yA{ literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/tools/tiny_mce/themes/advanced/skins/default/img/menu_check.gif new file mode 100644 index 0000000000000000000000000000000000000000..adfdddccd7cac62a17d68873fa53c248bff8351a GIT binary patch literal 70 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 R!Sp}^Mt9BhYjvGt{|88cricIl literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/tools/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png new file mode 100644 index 0000000000000000000000000000000000000000..8996c7493e8a58c9c40845cbe8abdc3e6730716d GIT binary patch literal 3736 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 M07*qoM6N<$f@g#ZbN~PV literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/themes/advanced/skins/o2k7/ui.css b/tools/tiny_mce/themes/advanced/skins/o2k7/ui.css new file mode 100644 index 00000000..e881eaf1 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/skins/o2k7/ui.css @@ -0,0 +1,215 @@ +/* Reset */ +.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} +.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} +.o2k7Skin table td {vertical-align:middle} + +/* Containers */ +.o2k7Skin table {background:transparent} +.o2k7Skin iframe {display:block;} +.o2k7Skin .mceToolbar {height:26px} + +/* External */ +.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none} +.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;} +.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} + +/* Layout */ +.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD} +.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD} +.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} +.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} +.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} +.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} +.o2k7Skin .mceStatusbar div {float:left; padding:2px} +.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} +.o2k7Skin .mceStatusbar a:hover {text-decoration:underline} +.o2k7Skin table.mceToolbar {margin-left:3px} +.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;} +.o2k7Skin .mceToolbar td.mceFirst span {margin:0} +.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} +.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none} +.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px} +.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} +.o2k7Skin td.mceCenter {text-align:center;} +.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;} +.o2k7Skin td.mceRight table {margin:0 0 0 auto;} + +/* Button */ +.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} +.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px} +.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} +.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} +.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px} +.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.o2k7Skin .mceButtonLabeled {width:auto} +.o2k7Skin .mceButtonLabeled span.mceIcon {float:left} +.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} +.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888} + +/* Separator */ +.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} + +/* ListBox */ +.o2k7Skin .mceListBox {margin-left:3px} +.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} +.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} +.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} +.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} +.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} +.o2k7Skin .mceListBoxDisabled .mceText {color:gray} +.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden} +.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px} +.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;} + +/* SplitButton */ +.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px} +.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} +.o2k7Skin .mceSplitButton a.mceAction {width:22px} +.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)} +.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} +.o2k7Skin .mceSplitButton span.mceOpen {display:none} +.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px} +.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px} +.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.o2k7Skin .mceSplitButtonActive {background-position:0 -44px} + +/* ColorSplitButton */ +.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} +.o2k7Skin .mceColorSplitMenu td {padding:2px} +.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} +.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} +.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} +.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} +.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} +.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden} +.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden} + +/* Menu */ +.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD} +.o2k7Skin .mceNoIcons span.mceIcon {width:0;} +.o2k7Skin .mceNoIcons a .mceText {padding-left:10px} +.o2k7Skin .mceMenu table {background:#FFF} +.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block} +.o2k7Skin .mceMenu td {height:20px} +.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0} +.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} +.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px} +.o2k7Skin .mceMenu pre.mceText {font-family:Monospace} +.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} +.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3} +.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px} +.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD} +.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} +.o2k7Skin .mceMenuItemDisabled .mceText {color:#888} +.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)} +.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center} +.o2k7Skin .mceMenu span.mceMenuLine {display:none} +.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} + +/* Progress,Resize */ +.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} +.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} + +/* Formats */ +.o2k7Skin .mce_formatPreview a {font-size:10px} +.o2k7Skin .mce_p span.mceText {} +.o2k7Skin .mce_address span.mceText {font-style:italic} +.o2k7Skin .mce_pre span.mceText {font-family:monospace} +.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} +.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} +.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} +.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} +.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} +.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} + +/* Theme */ +.o2k7Skin span.mce_bold {background-position:0 0} +.o2k7Skin span.mce_italic {background-position:-60px 0} +.o2k7Skin span.mce_underline {background-position:-140px 0} +.o2k7Skin span.mce_strikethrough {background-position:-120px 0} +.o2k7Skin span.mce_undo {background-position:-160px 0} +.o2k7Skin span.mce_redo {background-position:-100px 0} +.o2k7Skin span.mce_cleanup {background-position:-40px 0} +.o2k7Skin span.mce_bullist {background-position:-20px 0} +.o2k7Skin span.mce_numlist {background-position:-80px 0} +.o2k7Skin span.mce_justifyleft {background-position:-460px 0} +.o2k7Skin span.mce_justifyright {background-position:-480px 0} +.o2k7Skin span.mce_justifycenter {background-position:-420px 0} +.o2k7Skin span.mce_justifyfull {background-position:-440px 0} +.o2k7Skin span.mce_anchor {background-position:-200px 0} +.o2k7Skin span.mce_indent {background-position:-400px 0} +.o2k7Skin span.mce_outdent {background-position:-540px 0} +.o2k7Skin span.mce_link {background-position:-500px 0} +.o2k7Skin span.mce_unlink {background-position:-640px 0} +.o2k7Skin span.mce_sub {background-position:-600px 0} +.o2k7Skin span.mce_sup {background-position:-620px 0} +.o2k7Skin span.mce_removeformat {background-position:-580px 0} +.o2k7Skin span.mce_newdocument {background-position:-520px 0} +.o2k7Skin span.mce_image {background-position:-380px 0} +.o2k7Skin span.mce_help {background-position:-340px 0} +.o2k7Skin span.mce_code {background-position:-260px 0} +.o2k7Skin span.mce_hr {background-position:-360px 0} +.o2k7Skin span.mce_visualaid {background-position:-660px 0} +.o2k7Skin span.mce_charmap {background-position:-240px 0} +.o2k7Skin span.mce_paste {background-position:-560px 0} +.o2k7Skin span.mce_copy {background-position:-700px 0} +.o2k7Skin span.mce_cut {background-position:-680px 0} +.o2k7Skin span.mce_blockquote {background-position:-220px 0} +.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0} +.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0} +.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0} +.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0} + +/* Plugins */ +.o2k7Skin span.mce_advhr {background-position:-0px -20px} +.o2k7Skin span.mce_ltr {background-position:-20px -20px} +.o2k7Skin span.mce_rtl {background-position:-40px -20px} +.o2k7Skin span.mce_emotions {background-position:-60px -20px} +.o2k7Skin span.mce_fullpage {background-position:-80px -20px} +.o2k7Skin span.mce_fullscreen {background-position:-100px -20px} +.o2k7Skin span.mce_iespell {background-position:-120px -20px} +.o2k7Skin span.mce_insertdate {background-position:-140px -20px} +.o2k7Skin span.mce_inserttime {background-position:-160px -20px} +.o2k7Skin span.mce_absolute {background-position:-180px -20px} +.o2k7Skin span.mce_backward {background-position:-200px -20px} +.o2k7Skin span.mce_forward {background-position:-220px -20px} +.o2k7Skin span.mce_insert_layer {background-position:-240px -20px} +.o2k7Skin span.mce_insertlayer {background-position:-260px -20px} +.o2k7Skin span.mce_movebackward {background-position:-280px -20px} +.o2k7Skin span.mce_moveforward {background-position:-300px -20px} +.o2k7Skin span.mce_media {background-position:-320px -20px} +.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px} +.o2k7Skin span.mce_pastetext {background-position:-360px -20px} +.o2k7Skin span.mce_pasteword {background-position:-380px -20px} +.o2k7Skin span.mce_selectall {background-position:-400px -20px} +.o2k7Skin span.mce_preview {background-position:-420px -20px} +.o2k7Skin span.mce_print {background-position:-440px -20px} +.o2k7Skin span.mce_cancel {background-position:-460px -20px} +.o2k7Skin span.mce_save {background-position:-480px -20px} +.o2k7Skin span.mce_replace {background-position:-500px -20px} +.o2k7Skin span.mce_search {background-position:-520px -20px} +.o2k7Skin span.mce_styleprops {background-position:-560px -20px} +.o2k7Skin span.mce_table {background-position:-580px -20px} +.o2k7Skin span.mce_cell_props {background-position:-600px -20px} +.o2k7Skin span.mce_delete_table {background-position:-620px -20px} +.o2k7Skin span.mce_delete_col {background-position:-640px -20px} +.o2k7Skin span.mce_delete_row {background-position:-660px -20px} +.o2k7Skin span.mce_col_after {background-position:-680px -20px} +.o2k7Skin span.mce_col_before {background-position:-700px -20px} +.o2k7Skin span.mce_row_after {background-position:-720px -20px} +.o2k7Skin span.mce_row_before {background-position:-740px -20px} +.o2k7Skin span.mce_merge_cells {background-position:-760px -20px} +.o2k7Skin span.mce_table_props {background-position:-980px -20px} +.o2k7Skin span.mce_row_props {background-position:-780px -20px} +.o2k7Skin span.mce_split_cells {background-position:-800px -20px} +.o2k7Skin span.mce_template {background-position:-820px -20px} +.o2k7Skin span.mce_visualchars {background-position:-840px -20px} +.o2k7Skin span.mce_abbr {background-position:-860px -20px} +.o2k7Skin span.mce_acronym {background-position:-880px -20px} +.o2k7Skin span.mce_attribs {background-position:-900px -20px} +.o2k7Skin span.mce_cite {background-position:-920px -20px} +.o2k7Skin span.mce_del {background-position:-940px -20px} +.o2k7Skin span.mce_ins {background-position:-960px -20px} +.o2k7Skin span.mce_pagebreak {background-position:0 -40px} +.o2k7Skin span.mce_restoredraft {background-position:-20px -40px} +.o2k7Skin span.mce_spellchecker {background-position:-540px -20px} diff --git a/tools/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/tools/tiny_mce/themes/advanced/skins/o2k7/ui_black.css new file mode 100644 index 00000000..81dbfe41 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/skins/o2k7/ui_black.css @@ -0,0 +1,8 @@ +/* Black */ +.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} +.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} +.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} +.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} +.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} +.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} +.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file diff --git a/tools/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/tools/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css new file mode 100644 index 00000000..e8ae844f --- /dev/null +++ b/tools/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css @@ -0,0 +1,5 @@ +/* Silver */ +.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} +.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} +.o2k7SkinSilver .mceListBox .mceText {background:#FFF} +.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} diff --git a/tools/tiny_mce/themes/advanced/source_editor.htm b/tools/tiny_mce/themes/advanced/source_editor.htm new file mode 100644 index 00000000..d3f75d66 --- /dev/null +++ b/tools/tiny_mce/themes/advanced/source_editor.htm @@ -0,0 +1,25 @@ + + + {#advanced_dlg.code_title} + + + + +
    +
    + +
    + +
    + +
    + + + +
    + + +
    +
    + + diff --git a/tools/tiny_mce/themes/simple/editor_template.js b/tools/tiny_mce/themes/simple/editor_template.js new file mode 100644 index 00000000..ed89abc0 --- /dev/null +++ b/tools/tiny_mce/themes/simple/editor_template.js @@ -0,0 +1 @@ +(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); \ No newline at end of file diff --git a/tools/tiny_mce/themes/simple/editor_template_src.js b/tools/tiny_mce/themes/simple/editor_template_src.js new file mode 100644 index 00000000..ec9e9632 --- /dev/null +++ b/tools/tiny_mce/themes/simple/editor_template_src.js @@ -0,0 +1,85 @@ +/** + * editor_template_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM; + + // Tell it to load theme specific language pack(s) + tinymce.ThemeManager.requireLangPack('simple'); + + tinymce.create('tinymce.themes.SimpleTheme', { + init : function(ed, url) { + var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings; + + t.editor = ed; + + ed.onInit.add(function() { + ed.onNodeChange.add(function(ed, cm) { + tinymce.each(states, function(c) { + cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c)); + }); + }); + + ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css"); + }); + + DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css"); + }, + + renderUI : function(o) { + var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc; + + n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n); + n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'}); + n = tb = DOM.add(n, 'tbody'); + + // Create iframe container + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'}); + + // Create toolbar container + n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'}); + + // Create toolbar + tb = t.toolbar = cf.createToolbar("tools1"); + tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'})); + tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'})); + tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'})); + tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'})); + tb.add(cf.createSeparator()); + tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'})); + tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'})); + tb.add(cf.createSeparator()); + tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'})); + tb.add(cf.createSeparator()); + tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'})); + tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'})); + tb.renderTo(n); + + return { + iframeContainer : ic, + editorContainer : ed.id + '_container', + sizeContainer : sc, + deltaHeight : -20 + }; + }, + + getInfo : function() { + return { + longname : 'Simple theme', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + version : tinymce.majorVersion + "." + tinymce.minorVersion + } + } + }); + + tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme); +})(); \ No newline at end of file diff --git a/tools/tiny_mce/themes/simple/img/icons.gif b/tools/tiny_mce/themes/simple/img/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..16af141ff0eea376a889b1e8d28e9c1cacaaab16 GIT binary patch literal 1440 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 VmjT$ODWe$zObpERYjs_s{s;8{A&me4 literal 0 HcmV?d00001 diff --git a/tools/tiny_mce/themes/simple/skins/o2k7/ui.css b/tools/tiny_mce/themes/simple/skins/o2k7/ui.css new file mode 100644 index 00000000..021d650f --- /dev/null +++ b/tools/tiny_mce/themes/simple/skins/o2k7/ui.css @@ -0,0 +1,35 @@ +/* Reset */ +.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} + +/* Containers */ +.o2k7SimpleSkin {position:relative} +.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;} +.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;} +.o2k7SimpleSkin .mceToolbar {height:26px;} + +/* Layout */ +.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; } +.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} +.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px} +.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} + +/* Button */ +.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} +.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px} +.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} +.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px} +.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} + +/* Separator */ +.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} + +/* Theme */ +.o2k7SimpleSkin span.mce_bold {background-position:0 0} +.o2k7SimpleSkin span.mce_italic {background-position:-60px 0} +.o2k7SimpleSkin span.mce_underline {background-position:-140px 0} +.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0} +.o2k7SimpleSkin span.mce_undo {background-position:-160px 0} +.o2k7SimpleSkin span.mce_redo {background-position:-100px 0} +.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0} +.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} +.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0} diff --git a/tools/tiny_mce/tiny_mce.js b/tools/tiny_mce/tiny_mce.js new file mode 100644 index 00000000..4cdd0dba --- /dev/null +++ b/tools/tiny_mce/tiny_mce.js @@ -0,0 +1 @@ +(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"3.9.4",releaseDate:"2011-04-13",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE9=s.isIE&&!/MSIE [5678]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);if(d.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m=c.length){for(e=0,b=g.length;e=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(m){var k=m.each,j=m.is,i=m.isWebKit,d=m.isIE,a=/^(H[1-6R]|P|DIV|ADDRESS|PRE|FORM|T(ABLE|BODY|HEAD|FOOT|H|R|D)|LI|OL|UL|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|MENU|ISINDEX|SAMP)$/,e=g("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),f=g("src,href,style,coords,shape"),c={"&":"&",'"':""","<":"<",">":">"},n=/[<>&\"]/g,b=/^([a-z0-9],?)+$/i,h=/<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)(\s*\/?)>/g,l=/(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;function g(q){var p={},o;q=q.split(",");for(o=q.length;o>=0;o--){p[q[o]]=1}return p}m.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(u,q){var p=this,o;p.doc=u;p.win=window;p.files={};p.cssFlicker=false;p.counter=0;p.stdMode=u.documentMode>=8;p.boxModel=!m.isIE||u.compatMode=="CSS1Compat"||p.stdMode;p.settings=q=m.extend({keep_values:false,hex_colors:1,process_html:1},q);if(m.isIE6){try{u.execCommand("BackgroundImageCache",false,true)}catch(r){p.cssFlicker=true}}if(q.valid_styles){p._styles={};k(q.valid_styles,function(t,s){p._styles[s]=m.explode(t)})}m.addUnload(p.destroy,p)},getRoot:function(){var o=this,p=o.settings;return(p&&o.get(p.root_element))||o.doc.body},getViewPort:function(p){var q,o;p=!p?this.win:p;q=p.document;o=this.boxModel?q.documentElement:q.body;return{x:p.pageXOffset||o.scrollLeft,y:p.pageYOffset||o.scrollTop,w:p.innerWidth||o.clientWidth,h:p.innerHeight||o.clientHeight}},getRect:function(s){var r,o=this,q;s=o.get(s);r=o.getPos(s);q=o.getSize(s);return{x:r.x,y:r.y,w:q.w,h:q.h}},getSize:function(r){var p=this,o,q;r=p.get(r);o=p.getStyle(r,"width");q=p.getStyle(r,"height");if(o.indexOf("px")===-1){o=0}if(q.indexOf("px")===-1){q=0}return{w:parseInt(o)||r.offsetWidth||r.clientWidth,h:parseInt(q)||r.offsetHeight||r.clientHeight}},getParent:function(q,p,o){return this.getParents(q,p,o,false)},getParents:function(z,v,s,y){var q=this,p,u=q.settings,x=[];z=q.get(z);y=y===undefined;if(u.strict_root){s=s||q.getRoot()}if(j(v,"string")){p=v;if(v==="*"){v=function(o){return o.nodeType==1}}else{v=function(o){return q.is(o,p)}}}while(z){if(z==s||!z.nodeType||z.nodeType===9){break}if(!v||v(z)){if(y){x.push(z)}else{return z}}z=z.parentNode}return y?x:null},get:function(o){var p;if(o&&this.doc&&typeof(o)=="string"){p=o;o=this.doc.getElementById(o);if(o&&o.id!==p){return this.doc.getElementsByName(p)[1]}}return o},getNext:function(p,o){return this._findSib(p,o,"nextSibling")},getPrev:function(p,o){return this._findSib(p,o,"previousSibling")},add:function(s,v,o,r,u){var q=this;return this.run(s,function(y){var x,t;x=j(v,"string")?q.doc.createElement(v):v;q.setAttribs(x,o);if(r){if(r.nodeType){x.appendChild(r)}else{q.setHTML(x,r)}}return !u?y.appendChild(x):x})},create:function(q,o,p){return this.add(this.doc.createElement(q),q,o,p,1)},createHTML:function(v,p,s){var u="",r=this,q;u+="<"+v;for(q in p){if(p.hasOwnProperty(q)){u+=" "+q+'="'+r.encode(p[q])+'"'}}if(typeof(s)!="undefined"){return u+">"+s+""}return u+" />"},remove:function(o,p){return this.run(o,function(r){var q,s;q=r.parentNode;if(!q){return null}if(p){while(s=r.firstChild){if(!m.isIE||s.nodeType!==3||s.nodeValue){q.insertBefore(s,r)}else{r.removeChild(s)}}}return q.removeChild(r)})},setStyle:function(r,o,p){var q=this;return q.run(r,function(v){var u,t;u=v.style;o=o.replace(/-(\D)/g,function(x,s){return s.toUpperCase()});if(q.pixelStyles.test(o)&&(m.is(p,"number")||/^[\-0-9\.]+$/.test(p))){p+="px"}switch(o){case"opacity":if(d){u.filter=p===""?"":"alpha(opacity="+(p*100)+")";if(!r.currentStyle||!r.currentStyle.hasLayout){u.display="inline-block"}}u[o]=u["-moz-opacity"]=u["-khtml-opacity"]=p||"";break;case"float":d?u.styleFloat=p:u.cssFloat=p;break;default:u[o]=p||""}if(q.settings.update_styles){q.setAttrib(v,"_mce_style")}})},getStyle:function(r,o,q){r=this.get(r);if(!r){return false}if(this.doc.defaultView&&q){o=o.replace(/[A-Z]/g,function(s){return"-"+s});try{return this.doc.defaultView.getComputedStyle(r,null).getPropertyValue(o)}catch(p){return null}}o=o.replace(/-(\D)/g,function(t,s){return s.toUpperCase()});if(o=="float"){o=d?"styleFloat":"cssFloat"}if(r.currentStyle&&q){return r.currentStyle[o]}return r.style[o]},setStyles:function(u,v){var q=this,r=q.settings,p;p=r.update_styles;r.update_styles=0;k(v,function(o,s){q.setStyle(u,s,o)});r.update_styles=p;if(r.update_styles){q.setAttrib(u,r.cssText)}},removeAllAttribs:function(o){return this.run(o,function(r){var p=r.attributes;for(var q=p.length-1;q>=0;q--){r.removeAttributeNode(p.item(q))}})},setAttrib:function(q,r,o){var p=this;if(!q||!r){return}if(p.settings.strict){r=r.toLowerCase()}return this.run(q,function(u){var t=p.settings;switch(r){case"style":if(!j(o,"string")){k(o,function(s,x){p.setStyle(u,x,s)});return}if(t.keep_values){if(o&&!p._isRes(o)){u.setAttribute("_mce_style",o,2)}else{u.removeAttribute("_mce_style",2)}}u.style.cssText=o;break;case"class":u.className=o||"";break;case"src":case"href":if(t.keep_values){if(t.url_converter){o=t.url_converter.call(t.url_converter_scope||p,o,r,u)}p.setAttrib(u,"_mce_"+r,o,2)}break;case"shape":u.setAttribute("_mce_style",o);break}if(j(o)&&o!==null&&o.length!==0){u.setAttribute(r,""+o,2)}else{u.removeAttribute(r,2)}})},setAttribs:function(q,r){var p=this;return this.run(q,function(o){k(r,function(s,t){p.setAttrib(o,t,s)})})},getAttrib:function(r,s,q){var o,p=this;r=p.get(r);if(!r||r.nodeType!==1){return false}if(!j(q)){q=""}if(/^(src|href|style|coords|shape)$/.test(s)){o=r.getAttribute("_mce_"+s);if(o){return o}}if(d&&p.props[s]){o=r[p.props[s]];o=o&&o.nodeValue?o.nodeValue:o}if(!o){o=r.getAttribute(s,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(s)){if(r[p.props[s]]===true&&o===""){return s}return o?s:""}if(r.nodeName==="FORM"&&r.getAttributeNode(s)){return r.getAttributeNode(s).nodeValue}if(s==="style"){o=o||r.style.cssText;if(o){o=p.serializeStyle(p.parseStyle(o),r.nodeName);if(p.settings.keep_values&&!p._isRes(o)){r.setAttribute("_mce_style",o)}}}if(i&&s==="class"&&o){o=o.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(d){switch(s){case"rowspan":case"colspan":if(o===1){o=""}break;case"size":if(o==="+0"||o===20||o===0){o=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(o===0){o=""}break;case"hspace":if(o===-1){o=""}break;case"maxlength":case"tabindex":if(o===32768||o===2147483647||o==="32768"){o=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(o===65535){return s}return q;case"shape":o=o.toLowerCase();break;default:if(s.indexOf("on")===0&&o){o=m._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+o)}}}return(o!==undefined&&o!==null&&o!=="")?""+o:q},getPos:function(A,s){var p=this,o=0,z=0,u,v=p.doc,q;A=p.get(A);s=s||v.body;if(A){if(d&&!p.stdMode){A=A.getBoundingClientRect();u=p.boxModel?v.documentElement:v.body;o=p.getStyle(p.select("html")[0],"borderWidth");o=(o=="medium"||p.boxModel&&!p.isIE6)&&2||o;return{x:A.left+u.scrollLeft-o,y:A.top+u.scrollTop-o}}q=A;while(q&&q!=s&&q.nodeType){o+=q.offsetLeft||0;z+=q.offsetTop||0;q=q.offsetParent}q=A.parentNode;while(q&&q!=s&&q.nodeType){o-=q.scrollLeft||0;z-=q.scrollTop||0;q=q.parentNode}}return{x:o,y:z}},parseStyle:function(r){var u=this,x=u.settings,y={};if(!r){return y}function p(E,B,D){var A,C,o,z;A=y[E+"-top"+B];if(!A){return}C=y[E+"-right"+B];if(A!=C){return}o=y[E+"-bottom"+B];if(C!=o){return}z=y[E+"-left"+B];if(o!=z){return}y[D]=z;delete y[E+"-top"+B];delete y[E+"-right"+B];delete y[E+"-bottom"+B];delete y[E+"-left"+B]}function v(s){var o,t=y[s];if(!t||t.indexOf(" ")<0){return}o=t.split(" ");if(k(o,function(z){return z===o[0]})){y[s]=o[0];return true}else{return false}}function q(z,s,o,B){var A;if(!v(s)){return}if(!v(o)){return}if(!v(B)){return}y[z]=y[s]+" "+y[o]+" "+y[B];delete y[s];delete y[o];delete y[B]}r=r.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");k(r.split(";"),function(s){var o,t=[];if(s){s=s.replace(/_MCE_SEMI_/g,";");s=s.replace(/url\([^\)]+\)/g,function(z){t.push(z);return"url("+t.length+")"});s=s.split(":");o=m.trim(s[1]);o=o.replace(/url\(([^\)]+)\)/g,function(A,z){return t[parseInt(z)-1]});o=o.replace(/rgb\([^\)]+\)/g,function(z){return u.toHex(z)});if(x.url_converter){o=o.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(z,A){return"url("+x.url_converter.call(x.url_converter_scope||u,u.decode(A),"style",null)+")"})}y[m.trim(s[0]).toLowerCase()]=o}});p("border","","border");p("border","-width","border-width");p("border","-color","border-color");p("border","-style","border-style");p("padding","","padding");p("margin","","margin");q("border","border-width","border-style","border-color");if(d){if(y.border=="medium none"){y.border=""}}return y},serializeStyle:function(v,p){var q=this,r="";function u(s,o){if(o&&s){if(o.indexOf("-")===0){return}switch(o){case"font-weight":if(s==700){s="bold"}break;case"color":case"background-color":s=s.toLowerCase();break}r+=(r?" ":"")+o+": "+s+";"}}if(p&&q._styles){k(q._styles["*"],function(o){u(v[o],o)});k(q._styles[p.toLowerCase()],function(o){u(v[o],o)})}else{k(v,u)}return r},loadCSS:function(o){var q=this,r=q.doc,p;if(!o){o=""}p=q.select("head")[0];k(o.split(","),function(s){var t;if(q.files[s]){return}q.files[s]=true;t=q.create("link",{rel:"stylesheet",href:m._addVer(s)});if(d&&r.documentMode&&r.recalc){t.onload=function(){r.recalc();t.onload=null}}p.appendChild(t)})},addClass:function(o,p){return this.run(o,function(q){var r;if(!p){return 0}if(this.hasClass(q,p)){return q.className}r=this.removeClass(q,p);return q.className=(r!=""?(r+" "):"")+p})},removeClass:function(q,r){var o=this,p;return o.run(q,function(t){var s;if(o.hasClass(t,r)){if(!p){p=new RegExp("(^|\\s+)"+r+"(\\s+|$)","g")}s=t.className.replace(p," ");s=m.trim(s!=" "?s:"");t.className=s;if(!s){t.removeAttribute("class");t.removeAttribute("className")}return s}return t.className})},hasClass:function(p,o){p=this.get(p);if(!p||!o){return false}return(" "+p.className+" ").indexOf(" "+o+" ")!==-1},show:function(o){return this.setStyle(o,"display","block")},hide:function(o){return this.setStyle(o,"display","none")},isHidden:function(o){o=this.get(o);return !o||o.style.display=="none"||this.getStyle(o,"display")=="none"},uniqueId:function(o){return(!o?"mce_":o)+(this.counter++)},setHTML:function(q,p){var o=this;return this.run(q,function(v){var r,t,s,z,u,r;p=o.processHTML(p);if(d){function y(){while(v.firstChild){v.removeChild(v.firstChild)}try{v.innerHTML="
    "+p;v.removeChild(v.firstChild)}catch(x){r=o.create("div");r.innerHTML="
    "+p;k(r.childNodes,function(B,A){if(A){v.appendChild(B)}})}}if(o.settings.fix_ie_paragraphs){p=p.replace(/

    <\/p>|]+)><\/p>|/gi,' 

    ')}y();if(o.settings.fix_ie_paragraphs){s=v.getElementsByTagName("p");for(t=s.length-1,r=0;t>=0;t--){z=s[t];if(!z.hasChildNodes()){if(!z._mce_keep){r=1;break}z.removeAttribute("_mce_keep")}}}if(r){p=p.replace(/

    ]+)>|

    /ig,'

    ');p=p.replace(/<\/p>/gi,"
    ");y();if(o.settings.fix_ie_paragraphs){s=v.getElementsByTagName("DIV");for(t=s.length-1;t>=0;t--){z=s[t];if(z.hasAttribute("_mce_tmp")){u=o.doc.createElement("p");z.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(A,x){var B;if(x!=="_mce_tmp"){B=z.getAttribute(x);if(!B&&x==="class"){B=z.className}u.setAttribute(x,B)}});for(r=0;r]+)\/>|/gi,"",r);if(q.keep_values){if(/)/g,"\n");t=t.replace(/^[\r\n]*|[\r\n]*$/g,"");t=t.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,"");return t}r=r.replace(/]+|)>([\s\S]*?)<\/script>/gi,function(s,x,t){if(!x){x=' type="text/javascript"'}x=x.replace(/src=\"([^\"]+)\"?/i,function(y,z){if(q.url_converter){z=p.encode(q.url_converter.call(q.url_converter_scope||p,p.decode(z),"src","script"))}return'_mce_src="'+z+'"'});if(m.trim(t)){v.push(o(t));t=""}return""+t+""});r=r.replace(/]+|)>([\s\S]*?)<\/style>/gi,function(s,x,t){if(t){v.push(o(t));t=""}return""+t+""});r=r.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(s,x,t){return""})}r=m._replace(//g,"",r);function u(s){return s.replace(h,function(y,z,x,t){return"<"+z+x.replace(l,function(B,A,E,D,C){var F;A=A.toLowerCase();E=E||D||C||"";if(e[A]){if(E==="false"||E==="0"){return}return A+'="'+A+'"'}if(f[A]&&x.indexOf("_mce_"+A)==-1){F=p.decode(E);if(q.url_converter&&(A=="src"||A=="href")){F=q.url_converter.call(q.url_converter_scope||p,F,A,z)}if(A=="style"){F=p.serializeStyle(p.parseStyle(F),A)}return A+'="'+E+'" _mce_'+A+'="'+p.encode(F)+'"'}return B})+t+">"})}r=u(r);r=r.replace(/MCE_SCRIPT:([0-9]+)/g,function(t,s){return v[s]})}return r},getOuterHTML:function(o){var p;o=this.get(o);if(!o){return null}if(o.outerHTML!==undefined){return o.outerHTML}p=(o.ownerDocument||this.doc).createElement("body");p.appendChild(o.cloneNode(true));return p.innerHTML},setOuterHTML:function(r,p,s){var o=this;function q(u,t,x){var y,v;v=x.createElement("body");v.innerHTML=t;y=v.lastChild;while(y){o.insertAfter(y.cloneNode(true),u);y=y.previousSibling}o.remove(u)}return this.run(r,function(u){u=o.get(u);if(u.nodeType==1){s=s||u.ownerDocument||o.doc;if(d){try{if(d&&u.nodeType==1){u.outerHTML=p}else{q(u,p,s)}}catch(t){q(u,p,s)}}else{q(u,p,s)}}})},decode:function(p){var q,r,o;if(/&[\w#]+;/.test(p)){q=this.doc.createElement("div");q.innerHTML=p;r=q.firstChild;o="";if(r){do{o+=r.nodeValue}while(r=r.nextSibling)}return o||p}return p},encode:function(o){return(""+o).replace(n,function(p){return c[p]})},insertAfter:function(o,p){p=this.get(p);return this.run(o,function(r){var q,s;q=p.parentNode;s=p.nextSibling;if(s){q.insertBefore(r,s)}else{q.appendChild(r)}return r})},isBlock:function(o){if(o.nodeType&&o.nodeType!==1){return false}o=o.nodeName||o;return a.test(o)},replace:function(s,r,p){var q=this;if(j(r,"array")){s=s.cloneNode(true)}return q.run(r,function(t){if(p){k(m.grep(t.childNodes),function(o){s.appendChild(o)})}return t.parentNode.replaceChild(s,t)})},rename:function(r,o){var q=this,p;if(r.nodeName!=o.toUpperCase()){p=q.create(o);k(q.getAttribs(r),function(s){q.setAttrib(p,s.nodeName,q.getAttrib(r,s.nodeName))});q.replace(p,r,1)}return p||r},findCommonAncestor:function(q,o){var r=q,p;while(r){p=o;while(p&&r!=p){p=p.parentNode}if(r==p){break}r=r.parentNode}if(!r&&q.ownerDocument){return q.ownerDocument.documentElement}return r},toHex:function(o){var q=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(o);function p(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}if(q){o="#"+p(q[1])+p(q[2])+p(q[3]);return o}return o},getClasses:function(){var s=this,o=[],r,u={},v=s.settings.class_filter,q;if(s.classes){return s.classes}function x(t){k(t.imports,function(y){x(y)});k(t.cssRules||t.rules,function(y){switch(y.type||1){case 1:if(y.selectorText){k(y.selectorText.split(","),function(z){z=z.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(z)||!/\.[\w\-]+$/.test(z)){return}q=z;z=m._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",z);if(v&&!(z=v(z,q))){return}if(!u[z]){o.push({"class":z});u[z]=1}})}break;case 3:x(y.styleSheet);break}})}try{k(s.doc.styleSheets,x)}catch(p){}if(o.length>0){s.classes=o}return o},run:function(u,r,q){var p=this,v;if(p.doc&&typeof(u)==="string"){u=p.get(u)}if(!u){return false}q=q||this;if(!u.nodeType&&(u.length||u.length===0)){v=[];k(u,function(s,o){if(s){if(typeof(s)=="string"){s=p.doc.getElementById(s)}v.push(r.call(q,s,o))}});return v}return r.call(q,u)},getAttribs:function(q){var p;q=this.get(q);if(!q){return[]}if(d){p=[];if(q.nodeName=="OBJECT"){return q.attributes}if(q.nodeName==="OPTION"&&this.getAttrib(q,"selected")){p.push({specified:1,nodeName:"selected"})}q.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(o){p.push({specified:1,nodeName:o})});return p}return q.attributes},destroy:function(p){var o=this;if(o.events){o.events.destroy()}o.win=o.doc=o.root=o.events=null;if(!p){m.removeUnload(o.destroy)}},createRng:function(){var o=this.doc;return o.createRange?o.createRange():new m.dom.Range(this)},nodeIndex:function(t,u){var o=0,r,s,q,p;if(t){for(r=t.nodeType,t=t.previousSibling,s=t;t;t=t.previousSibling){q=t.nodeType;if(u&&q==3){p=false;try{p==t.nodeValue.length}catch(v){}if(q==r||!p){continue}}o++;r=q}}return o},split:function(u,s,y){var z=this,o=z.createRng(),v,q,x;function p(A){var t,r=A.childNodes;if(A.nodeType==1&&A.getAttribute("_mce_type")=="bookmark"){return}for(t=r.length-1;t>=0;t--){p(r[t])}if(A.nodeType!=9){if(A.nodeType==3&&A.nodeValue.length>0){if(!z.isBlock(A.parentNode)||m.trim(A.nodeValue).length>0){return}}if(A.nodeType==1){r=A.childNodes;if(r.length==1&&r[0]&&r[0].nodeType==1&&r[0].getAttribute("_mce_type")=="bookmark"){A.parentNode.insertBefore(r[0],A)}if(r.length||/^(br|hr|input|img)$/i.test(A.nodeName)){return}}z.remove(A)}return A}if(u&&s){o.setStart(u.parentNode,z.nodeIndex(u));o.setEnd(s.parentNode,z.nodeIndex(s));v=o.extractContents();o=z.createRng();o.setStart(s.parentNode,z.nodeIndex(s)+1);o.setEnd(u.parentNode,z.nodeIndex(u)+1);q=o.extractContents();x=u.parentNode;x.insertBefore(p(v),u);if(y){x.replaceChild(y,s)}else{x.insertBefore(s,u)}x.insertBefore(p(q),u);z.remove(u);return y||s}},bind:function(s,o,r,q){var p=this;if(!p.events){p.events=new m.dom.EventUtils()}return p.events.add(s,o,r,q||this)},unbind:function(r,o,q){var p=this;if(!p.events){p.events=new m.dom.EventUtils()}return p.events.remove(r,o,q)},_findSib:function(r,o,p){var q=this,s=o;if(r){if(j(s,"string")){s=function(t){return q.is(t,o)}}for(r=r[p];r;r=r[p]){if(s(r)){return r}}}return null},_isRes:function(o){return/^(top|left|bottom|right|width|height)/i.test(o)||/;\s*(top|left|bottom|right|width|height)/i.test(o)}});m.DOM=new m.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Y,t){var ab=N[h],W=N[U],aa=N[P],V=N[z],Z=t.startContainer,ad=t.startOffset,X=t.endContainer,ac=t.endOffset;if(Y===0){return G(ab,W,Z,ad)}if(Y===1){return G(aa,V,Z,ad)}if(Y===2){return G(aa,V,X,ac)}if(Y===3){return G(ab,W,X,ac)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(g){var i=this,j="\uFEFF",e,h,d=g.dom,c=true,f=false;function b(){var n=g.getRng(),k=d.createRng(),m,o;m=n.item?n.item(0):n.parentElement();if(m.ownerDocument!=d.doc){return k}if(n.item||!m.hasChildNodes()){k.setStart(m.parentNode,d.nodeIndex(m));k.setEnd(k.startContainer,k.startOffset+1);return k}o=g.isCollapsed();function l(s){var u,q,t,p,A=0,x,y,z,r,v;r=n.duplicate();r.collapse(s);u=d.create("a");z=r.parentElement();if(!z.hasChildNodes()){k[s?"setStart":"setEnd"](z,0);return}z.appendChild(u);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){k[s?"setStartAfter":"setEndAfter"](z);d.remove(u);return}p=tinymce.grep(z.childNodes);x=p.length-1;while(A<=x){y=Math.floor((A+x)/2);z.insertBefore(u,p[y]);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){A=y+1}else{if(v<0){x=y-1}else{found=true;break}}}q=v>0||y==0?u.nextSibling:u.previousSibling;if(q.nodeType==1){d.remove(u);t=d.nodeIndex(q);q=q.parentNode;if(!s||y>0){t++}}else{if(v>0||y==0){r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=r.text.length}else{r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=q.nodeValue.length-r.text.length}d.remove(u)}k[s?"setStart":"setEnd"](q,t)}l(true);if(!o){l()}return k}this.addRange=function(k){var p,n,m,r,u,s,t=g.dom.doc,o=t.body;function l(B){var x,A,v,z,y;v=d.create("a");x=B?m:u;A=B?r:s;z=p.duplicate();if(x==t){x=o;A=0}if(x.nodeType==3){x.parentNode.insertBefore(v,x);z.moveToElementText(v);z.moveStart("character",A);d.remove(v);p.setEndPoint(B?"StartToStart":"EndToEnd",z)}else{y=x.childNodes;if(y.length){if(A>=y.length){d.insertAfter(v,y[y.length-1])}else{x.insertBefore(v,y[A])}z.moveToElementText(v)}else{v=t.createTextNode(j);x.appendChild(v);z.moveToElementText(v.parentNode);z.collapse(c)}p.setEndPoint(B?"StartToStart":"EndToEnd",z);d.remove(v)}}this.destroy();m=k.startContainer;r=k.startOffset;u=k.endContainer;s=k.endOffset;p=o.createTextRange();if(m==u&&m.nodeType==1&&r==s-1){if(r==s-1){try{n=o.createControlRange();n.addElement(m.childNodes[r]);n.select();return}catch(q){}}}l(true);l();p.select()};this.getRangeAt=function(){if(!e||!tinymce.dom.RangeUtils.compareRanges(h,g.getRng())){e=b();h=g.getRng()}try{e.startContainer.nextSibling}catch(k){e=b();h=null}return e};this.destroy=function(){h=e=null}}tinymce.dom.TridentSelection=a})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}d.extend(n,h._stoppers)}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j_';if(k.startContainer==l&&k.endContainer==l){l.body.innerHTML=j}else{k.deleteContents();if(l.body.childNodes.length==0){l.body.innerHTML=j}else{if(k.createContextualFragment){k.insertNode(k.createContextualFragment(j))}else{var m=l.createDocumentFragment(),f=l.createElement("div");m.appendChild(f);f.outerHTML=j;k.insertNode(m)}}}n=g.dom.get("__caret");k=l.createRange();k.setStartBefore(n);k.setEndBefore(n);g.setRng(k);g.dom.remove("__caret");g.setRng(k)}else{if(k.item){l.execCommand("Delete",false,null);k=g.getRng()}k.pasteHTML(j)}g.onSetContent.dispatch(g,i)},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(q,r){var u=this,m=u.dom,g,j,i,n,h,o,p,l="\uFEFF",s;function f(v,x){var t=0;d(m.select(v),function(z,y){if(z==x){t=y}});return t}if(q==2){function k(){var v=u.getRng(true),t=m.getRoot(),x={};function y(B,G){var A=B[G?"startContainer":"endContainer"],F=B[G?"startOffset":"endOffset"],z=[],C,E,D=0;if(A.nodeType==3){if(r){for(C=A.previousSibling;C&&C.nodeType==3;C=C.previousSibling){F+=C.nodeValue.length}}z.push(F)}else{E=A.childNodes;if(F>=E.length&&E.length){D=1;F=Math.max(0,E.length-1)}z.push(u.dom.nodeIndex(E[F],r)+D)}for(;A&&A!=t;A=A.parentNode){z.push(u.dom.nodeIndex(A,r))}return z}x.start=y(v,true);if(!u.isCollapsed()){x.end=y(v)}return x}return k()}if(q){return{rng:u.getRng()}}g=u.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();s="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();g.collapse();g.pasteHTML(''+l+"");if(!n){j.collapse(false);j.pasteHTML(''+l+"")}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=u.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{_mce_type:"bookmark",id:i+"_end",style:s},l))}g.collapse(true);g.insertNode(m.create("span",{_mce_type:"bookmark",id:i+"_start",style:s},l))}u.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(r.tridentSel){r.tridentSel.destroy()}if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(u.length){x=u[t[v]]}}if(z){f.setStart(x,t[0])}else{f.setEnd(x,t[0])}}}g(true);g();r.setRng(f)}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(!a&&l.isBlock(t)&&!t.innerHTML){t.innerHTML='
    '}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},moveAfterNode:function(g){var f=this.dom.createRng();f.setStartAfter(g);f.setEndAfter(g);this.setRng(f)},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g);return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;h.removeAllRanges();h.addRange(i);g.selectedRange=h.getRangeAt(0)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(g.setStart){if(!g){return h.dom.getRoot()}l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.startOffset-g.endOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(c.isWebKit&&i.anchorNode&&i.anchorNode.nodeType==1){return i.anchorNode.childNodes[i.anchorOffset]}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var m=this.dom,l=m.doc,g=l.body,i,j;l.documentElement.unselectable=true;function k(n,q){var o=g.createTextRange();try{o.moveToPoint(n,q)}catch(p){o=null}return o}function h(o){var n;if(o.button){n=k(o.x,o.y);if(n){if(n.compareEndPoints("StartToStart",j)>0){n.setEndPoint("StartToStart",j)}else{n.setEndPoint("EndToEnd",j)}n.select()}}else{f()}}function f(){m.unbind(l,"mouseup",f);m.unbind(l,"mousemove",h);i=0}m.bind(l,"mousedown",function(n){if(n.target.nodeName==="HTML"){if(i){f()}i=1;j=k(n.x,n.y);if(j){m.bind(l,"mouseup",f);m.bind(l,"mousemove",h);m.win.focus();j.select()}}})}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>|]*>|<\/html>||]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,">")}return b}})})(tinymce);(function(c){var d=/[&\"<>]/g,b=/[<>&]/g,a={"&":"&",'"':""","<":"<",">":">"};c.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(e){this.settings=c.extend({indent_char:" ",indentation:0},e);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(e){this._writeAttributesEnd();this.writeRaw("<"+e);this.tags.push(e);this.inAttr=true;this.count++;this.elementCount=this.count;this.attrs={}},writeAttribute:function(g,e){var f=this;if(!f.attrs[g]){f.writeRaw(" "+f.encode(g,true)+'="'+f.encode(e,true)+'"');f.attrs[g]=e}},writeEndElement:function(){var e;if(this.tags.length>0){e=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(e){this._writeAttributesEnd();this.writeRaw(this.encode(e));this.count++},writeCDATA:function(e){this._writeAttributesEnd();this.writeRaw("");this.count++},writeComment:function(e){this._writeAttributesEnd();this.writeRaw("");this.count++},writeRaw:function(e){this.str+=e},encode:function(f,e){return f.replace(e?d:b,function(g){return a[g]})},getContent:function(){return this.str},_writeAttributesEnd:function(e){if(!this.inAttr){return}this.inAttr=false;if(e&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}if(e.isIE&&document.documentMode>8){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(_mce_|_moz_|sizset|sizcache)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",valid_elements:"*[*]",extended_valid_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;i.schema=j.schema;if(j.entity_encoding=="named"&&!j.entities){j.entity_encoding="raw"}if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(
    \s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^
    \s*<\//.test(n)){return""}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,z,y=["ol","ul"],u,t,q,k=/^(OL|UL)$/,A;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t]*>)(.*?)(<\/script>)/g},{pattern:/(]*>)(.*?)(<\/noscript>)/g},{pattern:/(]*>)(.*?)(<\/style>)/g},{pattern:/(]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/()/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=e._replace(/

    \s+<\/p>|]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?" 

    ":" 

    ",j);if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=e._replace(/(<[^>]+>)\s+/g,"$1 ",j);j=e._replace(/\s+(<\/[^>]+>)/g," $1",j);j=e._replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>",j);j=e._replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>",j);j=e._replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"",j)}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=e._replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n",j);j=e._replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>",j);j=e._replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"\n",j);j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=e._replace(//g,"",j);if(k.entity_encoding=="raw"){j=e._replace(/

     <\/p>|]+)> <\/p>/g,"\u00a0

    ",j)}j=j.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(h,p,o){return""+i.dom.decode(o.replace(//g,""))+""})}n.content=j},_serializeNode:function(E,J){var A=this,B=A.settings,y=A.writer,q,j,u,G,F,I,C,h,z,k,r,D,p,m,H,o,x;if(!B.node_filter||B.node_filter(E)){switch(E.nodeType){case 1:if(E.hasAttribute?E.hasAttribute("_mce_bogus"):E.getAttribute("_mce_bogus")){return}p=H=false;q=E.hasChildNodes();k=E.getAttribute("_mce_name")||E.nodeName.toLowerCase();o=E.getAttribute("_mce_type");if(o){if(!A._info.cleanup){p=true;return}else{H=1}}if(d){x=E.scopeName;if(x&&x!=="HTML"&&x!=="html"&&k.indexOf(x+":")!==0){k=x+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!H){if(!A.validElementsRE||!A.validElementsRE.test(k)||(A.invalidElementsRE&&A.invalidElementsRE.test(k))||J){p=true;break}}if(d){if(B.fix_content_duplication){if(E._mce_serialized==A.key){return}E._mce_serialized=A.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(E.nodeName==="BR"&&E.getAttribute("type")=="_moz"){return}}}if(B.validate_children){if(A.elementName&&!A.schema.isValid(A.elementName,k)){p=true;break}A.elementName=k}r=A.findRule(k);if(!r){p=true;break}k=r.name||k;m=B.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){I=r.requiredAttribs;for(G=I.length-1;G>=0;G--){if(this.dom.getAttrib(E,I[G])!==""){break}}if(G==-1){p=true;break}}y.writeStartElement(k);if(r.attribs){for(G=0,C=r.attribs,F=C.length;G-1;G--){h=C[G];if(h.specified){I=h.nodeName.toLowerCase();if(B.invalid_attrs.test(I)||!r.validAttribsRE.test(I)){continue}D=A.findAttribRule(r,I);z=A._getAttrib(E,D,I);if(z!==null){y.writeAttribute(I,z)}}}}if(o&&H){y.writeAttribute("_mce_type",o)}if(k==="script"&&e.trim(E.innerHTML)){y.writeText("// ");y.writeCDATA(E.innerHTML.replace(/|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=E.firstChild)&&u.nodeType===1&&E.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("_mce_bogus"):u.getAttribute("_mce_bogus")){y.writeText("\u00a0")}}else{if(!q){y.writeText("\u00a0")}}}break;case 3:if(B.validate_children&&A.elementName&&!A.schema.isValid(A.elementName,"#text")){return}return y.writeText(E.nodeValue);case 4:return y.writeCDATA(E.nodeValue);case 8:return y.writeComment(E.nodeValue)}}else{if(E.nodeType==1){q=E.hasChildNodes()}}if(q&&!m){u=E.firstChild;while(u){A._serializeNode(u);A.elementName=k;u=u.nextSibling}}if(!p){if(!m){y.writeFullEndElement()}else{y.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+""+p}))});return j},_unprotect:function(i,j){i=i.replace(/\"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,""))}}if(c.stdMode){f+=''+k.renderHTML()+""}else{f+=""+k.renderHTML()+""}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,""))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,""));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},""+f+"")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){return this.lookup[d]},requireLangPack:function(e){var d=b.settings;if(d&&d.language){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));if(!f.lookup[h]){b.ScriptLoader.add(e,d,g)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);if(j.adapter){j.adapter.patchEditor(m)}return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l':"",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir';if(F.document_base_url!=m.documentBaseURL){E.iframeHTML+=''}E.iframeHTML+='';if(m.relaxedDomain){E.iframeHTML+=''; + + bi = s.body_id || 'tinymce'; + if (bi.indexOf('=') != -1) { + bi = t.getParam('body_id', '', 'hash'); + bi = bi[t.id] || bi; + } + + bc = s.body_class || ''; + if (bc.indexOf('=') != -1) { + bc = t.getParam('body_class', '', 'hash'); + bc = bc[t.id] || ''; + } + + t.iframeHTML += ''; + + // Domain relaxing enabled, then set document domain + if (tinymce.relaxedDomain) { + // We need to write the contents here in IE since multiple writes messes up refresh button and back button + if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5)) + u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'; + else if (tinymce.isOpera) + u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()'; + } + + // Create iframe + //TODO: ACC add the appropriate description on this. + n = DOM.add(o.iframeContainer, 'iframe', { + id : t.id + "_ifr", + src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7 + frameBorder : '0', + title : s.aria_label, + + style : { + width : '100%', + height : h + } + }); + + t.contentAreaContainer = o.iframeContainer; + DOM.get(o.editorContainer).style.display = t.orgDisplay; + DOM.get(t.id).style.display = 'none'; + DOM.setAttrib(t.id, 'aria-hidden', true); + + if (!isIE || !tinymce.relaxedDomain) + t.setupIframe(); + + e = n = o = null; // Cleanup + }, + + setupIframe : function() { + var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b; + + // Setup iframe body + if (!isIE || !tinymce.relaxedDomain) { + d.open(); + d.write(t.iframeHTML); + d.close(); + } + + // Design mode needs to be added here Ctrl+A will fail otherwise + if (!isIE) { + try { + if (!s.readonly) + d.designMode = 'On'; + } catch (ex) { + // Will fail on Gecko if the editor is placed in an hidden container element + // The design mode will be set ones the editor is focused + } + } + + // IE needs to use contentEditable or it will display non secure items for HTTPS + if (isIE) { + // It will not steal focus if we hide it while setting contentEditable + b = t.getBody(); + DOM.hide(b); + + if (!s.readonly) + b.contentEditable = true; + + DOM.show(b); + } + + t.dom = new tinymce.dom.DOMUtils(t.getDoc(), { + keep_values : true, + url_converter : t.convertURL, + url_converter_scope : t, + hex_colors : s.force_hex_style_colors, + class_filter : s.class_filter, + update_styles : 1, + fix_ie_paragraphs : 1, + valid_styles : s.valid_styles + }); + + t.schema = new tinymce.dom.Schema(); + + t.serializer = new tinymce.dom.Serializer(extend(s, { + valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements, + dom : t.dom, + schema : t.schema + })); + + t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer); + + t.formatter = new tinymce.Formatter(this); + + // Register default formats + t.formatter.register({ + alignleft : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}}, + {selector : 'img,table', styles : {'float' : 'left'}} + ], + + aligncenter : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}}, + {selector : 'img', styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}}, + {selector : 'table', styles : {marginLeft : 'auto', marginRight : 'auto'}} + ], + + alignright : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}}, + {selector : 'img,table', styles : {'float' : 'right'}} + ], + + alignfull : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}} + ], + + bold : [ + {inline : 'strong'}, + {inline : 'span', styles : {fontWeight : 'bold'}}, + {inline : 'b'} + ], + + italic : [ + {inline : 'em'}, + {inline : 'span', styles : {fontStyle : 'italic'}}, + {inline : 'i'} + ], + + underline : [ + {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}, + {inline : 'u'} + ], + + strikethrough : [ + {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true}, + {inline : 'u'} + ], + + forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false}, + hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false}, + fontname : {inline : 'span', styles : {fontFamily : '%value'}}, + fontsize : {inline : 'span', styles : {fontSize : '%value'}}, + fontsize_class : {inline : 'span', attributes : {'class' : '%value'}}, + blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'}, + + removeformat : [ + {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true}, + {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true}, + {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true} + ] + }); + + // Register default block formats + each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) { + t.formatter.register(name, {block : name, remove : 'all'}); + }); + + // Register user defined formats + t.formatter.register(t.settings.formats); + + t.undoManager = new tinymce.UndoManager(t); + + // Pass through + t.undoManager.onAdd.add(function(um, l) { + if (!l.initial) + return t.onChange.dispatch(t, l, um); + }); + + t.undoManager.onUndo.add(function(um, l) { + return t.onUndo.dispatch(t, l, um); + }); + + t.undoManager.onRedo.add(function(um, l) { + return t.onRedo.dispatch(t, l, um); + }); + + t.forceBlocks = new tinymce.ForceBlocks(t, { + forced_root_block : s.forced_root_block + }); + + t.editorCommands = new tinymce.EditorCommands(t); + + // Pass through + t.serializer.onPreProcess.add(function(se, o) { + return t.onPreProcess.dispatch(t, o, se); + }); + + t.serializer.onPostProcess.add(function(se, o) { + return t.onPostProcess.dispatch(t, o, se); + }); + + t.onPreInit.dispatch(t); + + if (!s.gecko_spellcheck) + t.getBody().spellcheck = 0; + + if (!s.readonly) + t._addEvents(); + + t.controlManager.onPostRender.dispatch(t, t.controlManager); + t.onPostRender.dispatch(t); + + if (s.directionality) + t.getBody().dir = s.directionality; + + if (s.nowrap) + t.getBody().style.whiteSpace = "nowrap"; + + if (s.custom_elements) { + function handleCustom(ed, o) { + each(explode(s.custom_elements), function(v) { + var n; + + if (v.indexOf('~') === 0) { + v = v.substring(1); + n = 'span'; + } else + n = 'div'; + + o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' _mce_name="$1"$2>'); + o.content = o.content.replace(new RegExp('', 'g'), ''); + }); + }; + + t.onBeforeSetContent.add(handleCustom); + t.onPostProcess.add(function(ed, o) { + if (o.set) + handleCustom(ed, o); + }); + } + + if (s.handle_node_change_callback) { + t.onNodeChange.add(function(ed, cm, n) { + t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed()); + }); + } + + if (s.save_callback) { + t.onSaveContent.add(function(ed, o) { + var h = t.execCallback('save_callback', t.id, o.content, t.getBody()); + + if (h) + o.content = h; + }); + } + + if (s.onchange_callback) { + t.onChange.add(function(ed, l) { + t.execCallback('onchange_callback', t, l); + }); + } + + if (s.convert_newlines_to_brs) { + t.onBeforeSetContent.add(function(ed, o) { + if (o.initial) + o.content = o.content.replace(/\r?\n/g, '
    '); + }); + } + + if (s.fix_nesting && isIE) { + t.onBeforeSetContent.add(function(ed, o) { + o.content = t._fixNesting(o.content); + }); + } + + if (s.preformatted) { + t.onPostProcess.add(function(ed, o) { + o.content = o.content.replace(/^\s*/, ''); + o.content = o.content.replace(/<\/pre>\s*$/, ''); + + if (o.set) + o.content = '
    ' + o.content + '
    '; + }); + } + + if (s.verify_css_classes) { + t.serializer.attribValueFilter = function(n, v) { + var s, cl; + + if (n == 'class') { + // Build regexp for classes + if (!t.classesRE) { + cl = t.dom.getClasses(); + + if (cl.length > 0) { + s = ''; + + each (cl, function(o) { + s += (s ? '|' : '') + o['class']; + }); + + t.classesRE = new RegExp('(' + s + ')', 'gi'); + } + } + + return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : ''; + } + + return v; + }; + } + + if (s.cleanup_callback) { + t.onBeforeSetContent.add(function(ed, o) { + o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); + }); + + t.onPreProcess.add(function(ed, o) { + if (o.set) + t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o); + + if (o.get) + t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o); + }); + + t.onPostProcess.add(function(ed, o) { + if (o.set) + o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); + + if (o.get) + o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o); + }); + } + + if (s.save_callback) { + t.onGetContent.add(function(ed, o) { + if (o.save) + o.content = t.execCallback('save_callback', t.id, o.content, t.getBody()); + }); + } + + if (s.handle_event_callback) { + t.onEvent.add(function(ed, e, o) { + if (t.execCallback('handle_event_callback', e, ed, o) === false) + Event.cancel(e); + }); + } + + // Add visual aids when new contents is added + t.onSetContent.add(function() { + t.addVisual(t.getBody()); + }); + + // Remove empty contents + if (s.padd_empty_editor) { + t.onPostProcess.add(function(ed, o) { + o.content = o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/, ''); + }); + } + + if (isGecko) { + // Fix gecko link bug, when a link is placed at the end of block elements there is + // no way to move the caret behind the link. This fix adds a bogus br element after the link + function fixLinks(ed, o) { + each(ed.dom.select('a'), function(n) { + var pn = n.parentNode; + + if (ed.dom.isBlock(pn) && pn.lastChild === n) + ed.dom.add(pn, 'br', {'_mce_bogus' : 1}); + }); + }; + + t.onExecCommand.add(function(ed, cmd) { + if (cmd === 'CreateLink') + fixLinks(ed); + }); + + t.onSetContent.add(t.selection.onSetContent.add(fixLinks)); + + if (!s.readonly) { + try { + // Design mode must be set here once again to fix a bug where + // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again + d.designMode = 'Off'; + d.designMode = 'On'; + } catch (ex) { + // Will fail on Gecko if the editor is placed in an hidden container element + // The design mode will be set ones the editor is focused + } + } + } + + // A small timeout was needed since firefox will remove. Bug: #1838304 + setTimeout(function () { + if (t.removed) + return; + + t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')}); + t.startContent = t.getContent({format : 'raw'}); + t.initialized = true; + + t.onInit.dispatch(t); + t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc()); + t.execCallback('init_instance_callback', t); + t.focus(true); + t.nodeChanged({initial : 1}); + + // Load specified content CSS last + if (s.content_css) { + tinymce.each(explode(s.content_css), function(u) { + t.dom.loadCSS(t.documentBaseURI.toAbsolute(u)); + }); + } + + // Handle auto focus + if (s.auto_focus) { + setTimeout(function () { + var ed = tinymce.get(s.auto_focus); + + ed.selection.select(ed.getBody(), 1); + ed.selection.collapse(1); + ed.getWin().focus(); + }, 100); + } + }, 1); + + e = null; + }, + + + focus : function(sf) { + var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc(); + + if (!sf) { + // Get selected control element + ieRng = t.selection.getRng(); + if (ieRng.item) { + controlElm = ieRng.item(0); + } + + // Is not content editable + if (!ce) { + if (t.getWin().frameElement) t.getWin().frameElement.focus(); + t.getWin().focus(); + } + + // Restore selected control element + // This is needed when for example an image is selected within a + // layer a call to focus will then remove the control selection + if (controlElm && controlElm.ownerDocument == doc) { + ieRng = doc.body.createControlRange(); + ieRng.addElement(controlElm); + ieRng.select(); + } + + } + + if (tinymce.activeEditor != t) { + if ((oed = tinymce.activeEditor) != null) + oed.onDeactivate.dispatch(oed, t); + + t.onActivate.dispatch(t, oed); + } + + tinymce._setActive(t); + }, + + execCallback : function(n) { + var t = this, f = t.settings[n], s; + + if (!f) + return; + + // Look through lookup + if (t.callbackLookup && (s = t.callbackLookup[n])) { + f = s.func; + s = s.scope; + } + + if (is(f, 'string')) { + s = f.replace(/\.\w+$/, ''); + s = s ? tinymce.resolve(s) : 0; + f = tinymce.resolve(f); + t.callbackLookup = t.callbackLookup || {}; + t.callbackLookup[n] = {func : f, scope : s}; + } + + return f.apply(s || t, Array.prototype.slice.call(arguments, 1)); + }, + + translate : function(s) { + var c = this.settings.language || 'en', i18n = tinymce.i18n; + + if (!s) + return ''; + + return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) { + return i18n[c + '.' + b] || '{#' + b + '}'; + }); + }, + + getLang : function(n, dv) { + return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}'); + }, + + getParam : function(n, dv, ty) { + var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o; + + if (ty === 'hash') { + o = {}; + + if (is(v, 'string')) { + each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) { + v = v.split('='); + + if (v.length > 1) + o[tr(v[0])] = tr(v[1]); + else + o[tr(v[0])] = tr(v); + }); + } else + o = v; + + return o; + } + + return v; + }, + + nodeChanged : function(o) { + var t = this, s = t.selection, n = (isIE ? s.getNode() : s.getStart()) || t.getBody(); + + // Fix for bug #1896577 it seems that this can not be fired while the editor is loading + if (t.initialized) { + o = o || {}; + n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state + + // Get parents and add them to object + o.parents = []; + t.dom.getParent(n, function(node) { + if (node.nodeName == 'BODY') + return true; + + o.parents.push(node); + }); + + t.onNodeChange.dispatch( + t, + o ? o.controlManager || t.controlManager : t.controlManager, + n, + s.isCollapsed(), + o + ); + } + }, + + addButton : function(n, s) { + var t = this; + + t.buttons = t.buttons || {}; + t.buttons[n] = s; + }, + + addCommand : function(n, f, s) { + this.execCommands[n] = {func : f, scope : s || this}; + }, + + addQueryStateHandler : function(n, f, s) { + this.queryStateCommands[n] = {func : f, scope : s || this}; + }, + + addQueryValueHandler : function(n, f, s) { + this.queryValueCommands[n] = {func : f, scope : s || this}; + }, + + addShortcut : function(pa, desc, cmd_func, sc) { + var t = this, c; + + if (!t.settings.custom_shortcuts) + return false; + + t.shortcuts = t.shortcuts || {}; + + if (is(cmd_func, 'string')) { + c = cmd_func; + + cmd_func = function() { + t.execCommand(c, false, null); + }; + } + + if (is(cmd_func, 'object')) { + c = cmd_func; + + cmd_func = function() { + t.execCommand(c[0], c[1], c[2]); + }; + } + + each(explode(pa), function(pa) { + var o = { + func : cmd_func, + scope : sc || this, + desc : desc, + alt : false, + ctrl : false, + shift : false + }; + + each(explode(pa, '+'), function(v) { + switch (v) { + case 'alt': + case 'ctrl': + case 'shift': + o[v] = true; + break; + + default: + o.charCode = v.charCodeAt(0); + o.keyCode = v.toUpperCase().charCodeAt(0); + } + }); + + t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o; + }); + + return true; + }, + + execCommand : function(cmd, ui, val, a) { + var t = this, s = 0, o, st; + + if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus)) + t.focus(); + + o = {}; + t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o); + if (o.terminate) + return false; + + // Command callback + if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } + + // Registred commands + if (o = t.execCommands[cmd]) { + st = o.func.call(o.scope, ui, val); + + // Fall through on true + if (st !== true) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return st; + } + } + + // Plugin commands + each(t.plugins, function(p) { + if (p.execCommand && p.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + s = 1; + return false; + } + }); + + if (s) + return true; + + // Theme commands + if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } + + // Execute global commands + if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } + + // Editor commands + if (t.editorCommands.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } + + // Browser commands + t.getDoc().execCommand(cmd, ui, val); + t.onExecCommand.dispatch(t, cmd, ui, val, a); + }, + + queryCommandState : function(cmd) { + var t = this, o, s; + + // Is hidden then return undefined + if (t._isHidden()) + return; + + // Registred commands + if (o = t.queryStateCommands[cmd]) { + s = o.func.call(o.scope); + + // Fall though on true + if (s !== true) + return s; + } + + // Registred commands + o = t.editorCommands.queryCommandState(cmd); + if (o !== -1) + return o; + + // Browser commands + try { + return this.getDoc().queryCommandState(cmd); + } catch (ex) { + // Fails sometimes see bug: 1896577 + } + }, + + queryCommandValue : function(c) { + var t = this, o, s; + + // Is hidden then return undefined + if (t._isHidden()) + return; + + // Registred commands + if (o = t.queryValueCommands[c]) { + s = o.func.call(o.scope); + + // Fall though on true + if (s !== true) + return s; + } + + // Registred commands + o = t.editorCommands.queryCommandValue(c); + if (is(o)) + return o; + + // Browser commands + try { + return this.getDoc().queryCommandValue(c); + } catch (ex) { + // Fails sometimes see bug: 1896577 + } + }, + + show : function() { + var t = this; + + DOM.show(t.getContainer()); + DOM.hide(t.id); + t.load(); + }, + + hide : function() { + var t = this, d = t.getDoc(); + + // Fixed bug where IE has a blinking cursor left from the editor + if (isIE && d) + d.execCommand('SelectAll'); + + // We must save before we hide so Safari doesn't crash + t.save(); + DOM.hide(t.getContainer()); + DOM.setStyle(t.id, 'display', t.orgDisplay); + }, + + isHidden : function() { + return !DOM.isHidden(this.id); + }, + + setProgressState : function(b, ti, o) { + this.onSetProgressState.dispatch(this, b, ti, o); + + return b; + }, + + load : function(o) { + var t = this, e = t.getElement(), h; + + if (e) { + o = o || {}; + o.load = true; + + // Double encode existing entities in the value + h = t.setContent(is(e.value) ? e.value : e.innerHTML, o); + o.element = e; + + if (!o.no_events) + t.onLoadContent.dispatch(t, o); + + o.element = e = null; + + return h; + } + }, + + save : function(o) { + var t = this, e = t.getElement(), h, f; + + if (!e || !t.initialized) + return; + + o = o || {}; + o.save = true; + + // Add undo level will trigger onchange event + if (!o.no_events) { + t.undoManager.typing = 0; + t.undoManager.add(); + } + + o.element = e; + h = o.content = t.getContent(o); + + if (!o.no_events) + t.onSaveContent.dispatch(t, o); + + h = o.content; + + if (!/TEXTAREA|INPUT/i.test(e.nodeName)) { + e.innerHTML = h; + + // Update hidden form element + if (f = DOM.getParent(t.id, 'form')) { + each(f.elements, function(e) { + if (e.name == t.id) { + e.value = h; + return false; + } + }); + } + } else + e.value = h; + + o.element = e = null; + + return h; + }, + + setContent : function(h, o) { + var t = this; + + o = o || {}; + o.format = o.format || 'html'; + o.set = true; + o.content = h; + + if (!o.no_events) + t.onBeforeSetContent.dispatch(t, o); + + // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content + // It will also be impossible to place the caret in the editor unless there is a BR element present + if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) { + o.content = t.dom.setHTML(t.getBody(), '
    '); + o.format = 'raw'; + } + + o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content)); + + if (o.format != 'raw' && t.settings.cleanup) { + o.getInner = true; + o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o)); + } + + if (!o.no_events) + t.onSetContent.dispatch(t, o); + + return o.content; + }, + + getContent : function(o) { + var t = this, h; + + o = o || {}; + o.format = o.format || 'html'; + o.get = true; + + if (!o.no_events) + t.onBeforeGetContent.dispatch(t, o); + + if (o.format != 'raw' && t.settings.cleanup) { + o.getInner = true; + h = t.serializer.serialize(t.getBody(), o); + } else + h = t.getBody().innerHTML; + + h = h.replace(/^\s*|\s*$/g, ''); + o.content = h; + + if (!o.no_events) + t.onGetContent.dispatch(t, o); + + return o.content; + }, + + isDirty : function() { + var t = this; + + return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty; + }, + + getContainer : function() { + var t = this; + + if (!t.container) + t.container = DOM.get(t.editorContainer || t.id + '_parent'); + + return t.container; + }, + + getContentAreaContainer : function() { + return this.contentAreaContainer; + }, + + getElement : function() { + return DOM.get(this.settings.content_element || this.id); + }, + + getWin : function() { + var t = this, e; + + if (!t.contentWindow) { + e = DOM.get(t.id + "_ifr"); + + if (e) + t.contentWindow = e.contentWindow; + } + + return t.contentWindow; + }, + + getDoc : function() { + var t = this, w; + + if (!t.contentDocument) { + w = t.getWin(); + + if (w) + t.contentDocument = w.document; + } + + return t.contentDocument; + }, + + getBody : function() { + return this.bodyElement || this.getDoc().body; + }, + + convertURL : function(u, n, e) { + var t = this, s = t.settings; + + // Use callback instead + if (s.urlconverter_callback) + return t.execCallback('urlconverter_callback', u, e, true, n); + + // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs + if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0) + return u; + + // Convert to relative + if (s.relative_urls) + return t.documentBaseURI.toRelative(u); + + // Convert to absolute + u = t.documentBaseURI.toAbsolute(u, s.remove_script_host); + + return u; + }, + + addVisual : function(e) { + var t = this, s = t.settings; + + e = e || t.getBody(); + + if (!is(t.hasVisual)) + t.hasVisual = s.visual; + + each(t.dom.select('table,a', e), function(e) { + var v; + + switch (e.nodeName) { + case 'TABLE': + v = t.dom.getAttrib(e, 'border'); + + if (!v || v == '0') { + if (t.hasVisual) + t.dom.addClass(e, s.visual_table_class); + else + t.dom.removeClass(e, s.visual_table_class); + } + + return; + + case 'A': + v = t.dom.getAttrib(e, 'name'); + + if (v) { + if (t.hasVisual) + t.dom.addClass(e, 'mceItemAnchor'); + else + t.dom.removeClass(e, 'mceItemAnchor'); + } + + return; + } + }); + + t.onVisualAid.dispatch(t, e, t.hasVisual); + }, + + remove : function() { + var t = this, e = t.getContainer(); + + t.removed = 1; // Cancels post remove event execution + t.hide(); + + t.execCallback('remove_instance_callback', t); + t.onRemove.dispatch(t); + + // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command + t.onExecCommand.listeners = []; + + tinymce.remove(t); + DOM.remove(e); + }, + + destroy : function(s) { + var t = this; + + // One time is enough + if (t.destroyed) + return; + + if (!s) { + tinymce.removeUnload(t.destroy); + tinyMCE.onBeforeUnload.remove(t._beforeUnload); + + // Manual destroy + if (t.theme && t.theme.destroy) + t.theme.destroy(); + + // Destroy controls, selection and dom + t.controlManager.destroy(); + t.selection.destroy(); + t.dom.destroy(); + + // Remove all events + + // Don't clear the window or document if content editable + // is enabled since other instances might still be present + if (!t.settings.content_editable) { + Event.clear(t.getWin()); + Event.clear(t.getDoc()); + } + + Event.clear(t.getBody()); + Event.clear(t.formElement); + } + + if (t.formElement) { + t.formElement.submit = t.formElement._mceOldSubmit; + t.formElement._mceOldSubmit = null; + } + + t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null; + + if (t.selection) + t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null; + + t.destroyed = 1; + }, + + // Internal functions + + _addEvents : function() { + // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset + var t = this, i, s = t.settings, dom = t.dom, lo = { + mouseup : 'onMouseUp', + mousedown : 'onMouseDown', + click : 'onClick', + keyup : 'onKeyUp', + keydown : 'onKeyDown', + keypress : 'onKeyPress', + submit : 'onSubmit', + reset : 'onReset', + contextmenu : 'onContextMenu', + dblclick : 'onDblClick', + paste : 'onPaste' // Doesn't work in all browsers yet + }; + + function eventHandler(e, o) { + var ty = e.type; + + // Don't fire events when it's removed + if (t.removed) + return; + + // Generic event handler + if (t.onEvent.dispatch(t, e, o) !== false) { + // Specific event handler + t[lo[e.fakeType || e.type]].dispatch(t, e, o); + } + }; + + // Add DOM events + each(lo, function(v, k) { + switch (k) { + case 'contextmenu': + if (tinymce.isOpera) { + // Fake contextmenu on Opera + dom.bind(t.getBody(), 'mousedown', function(e) { + if (e.ctrlKey) { + e.fakeType = 'contextmenu'; + eventHandler(e); + } + }); + } else + dom.bind(isGecko ? t.getDoc() : t.getBody(), k, eventHandler); + break; + + case 'paste': + dom.bind(t.getBody(), k, function(e) { + eventHandler(e); + }); + break; + + case 'submit': + case 'reset': + dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); + break; + + default: + dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); + } + }); + + dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { + t.focus(true); + }); + + + // Fixes bug where a specified document_base_uri could result in broken images + // This will also fix drag drop of images in Gecko + if (tinymce.isGecko) { + dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { + var v; + + e = e.target; + + if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('_mce_src'))) + e.src = t.documentBaseURI.toAbsolute(v); + }); + } + + // Set various midas options in Gecko + if (isGecko) { + function setOpts() { + var t = this, d = t.getDoc(), s = t.settings; + + if (isGecko && !s.readonly) { + if (t._isHidden()) { + try { + if (!s.content_editable) + d.designMode = 'On'; + } catch (ex) { + // Fails if it's hidden + } + } + + try { + // Try new Gecko method + d.execCommand("styleWithCSS", 0, false); + } catch (ex) { + // Use old method + if (!t._isHidden()) + try {d.execCommand("useCSS", 0, true);} catch (ex) {} + } + + if (!s.table_inline_editing) + try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {} + + if (!s.object_resizing) + try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {} + } + }; + + t.onBeforeExecCommand.add(setOpts); + t.onMouseDown.add(setOpts); + } + + // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250 + // WebKit can't even do simple things like selecting an image + // This also fixes so it's possible to select mceItemAnchors + if (tinymce.isWebKit) { + t.onClick.add(function(ed, e) { + e = e.target; + + // Needs tobe the setBaseAndExtend or it will fail to select floated images + if (e.nodeName == 'IMG' || (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor'))) { + t.selection.getSel().setBaseAndExtent(e, 0, e, 1); + t.nodeChanged(); + } + }); + } + + // Add node change handlers + t.onMouseUp.add(t.nodeChanged); + //t.onClick.add(t.nodeChanged); + t.onKeyUp.add(function(ed, e) { + var c = e.keyCode; + + if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey) + t.nodeChanged(); + }); + + // Add reset handler + t.onReset.add(function() { + t.setContent(t.startContent, {format : 'raw'}); + }); + + // Add shortcuts + if (s.custom_shortcuts) { + if (s.custom_undo_redo_keyboard_shortcuts) { + t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo'); + t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo'); + } + + // Add default shortcuts for gecko + t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold'); + t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic'); + t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline'); + + // BlockFormat shortcuts keys + for (i=1; i<=6; i++) + t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]); + + t.addShortcut('ctrl+7', '', ['FormatBlock', false, '

    ']); + t.addShortcut('ctrl+8', '', ['FormatBlock', false, '

    ']); + t.addShortcut('ctrl+9', '', ['FormatBlock', false, '
    ']); + + function find(e) { + var v = null; + + if (!e.altKey && !e.ctrlKey && !e.metaKey) + return v; + + each(t.shortcuts, function(o) { + if (tinymce.isMac && o.ctrl != e.metaKey) + return; + else if (!tinymce.isMac && o.ctrl != e.ctrlKey) + return; + + if (o.alt != e.altKey) + return; + + if (o.shift != e.shiftKey) + return; + + if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) { + v = o; + return false; + } + }); + + return v; + }; + + t.onKeyUp.add(function(ed, e) { + var o = find(e); + + if (o) + return Event.cancel(e); + }); + + t.onKeyPress.add(function(ed, e) { + var o = find(e); + + if (o) + return Event.cancel(e); + }); + + t.onKeyDown.add(function(ed, e) { + var o = find(e); + + if (o) { + o.func.call(o.scope); + return Event.cancel(e); + } + }); + } + + if (tinymce.isIE) { + // Fix so resize will only update the width and height attributes not the styles of an image + // It will also block mceItemNoResize items + dom.bind(t.getDoc(), 'controlselect', function(e) { + var re = t.resizeInfo, cb; + + e = e.target; + + // Don't do this action for non image elements + if (e.nodeName !== 'IMG') + return; + + if (re) + dom.unbind(re.node, re.ev, re.cb); + + if (!dom.hasClass(e, 'mceItemNoResize')) { + ev = 'resizeend'; + cb = dom.bind(e, ev, function(e) { + var v; + + e = e.target; + + if (v = dom.getStyle(e, 'width')) { + dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, '')); + dom.setStyle(e, 'width', ''); + } + + if (v = dom.getStyle(e, 'height')) { + dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, '')); + dom.setStyle(e, 'height', ''); + } + }); + } else { + ev = 'resizestart'; + cb = dom.bind(e, 'resizestart', Event.cancel, Event); + } + + re = t.resizeInfo = { + node : e, + ev : ev, + cb : cb + }; + }); + + t.onKeyDown.add(function(ed, e) { + var sel; + + switch (e.keyCode) { + case 8: + sel = t.getDoc().selection; + + // Fix IE control + backspace browser bug + if (sel.createRange && sel.createRange().item) { + ed.dom.remove(sel.createRange().item(0)); + return Event.cancel(e); + } + } + }); + } + + if (tinymce.isOpera) { + t.onClick.add(function(ed, e) { + Event.prevent(e); + }); + } + + // Add custom undo/redo handlers + if (s.custom_undo_redo) { + function addUndo() { + t.undoManager.typing = 0; + t.undoManager.add(); + }; + + dom.bind(t.getDoc(), 'focusout', function(e) { + if (!t.removed && t.undoManager.typing) + addUndo(); + }); + + t.dom.bind(t.dom.getRoot(), 'dragend', function(e) { + addUndo(); + }); + + t.onKeyUp.add(function(ed, e) { + var rng, parent, bookmark; + if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey) + addUndo(); + + // Fix for bug #3168, to remove odd ".." nodes from the DOM we need to get/set the HTML of the parent node. + if (isIE && e.keyCode == 8) { + rng = t.selection.getRng(); + if (rng.parentElement) { + parent = rng.parentElement(); + bookmark = t.selection.getBookmark(); + parent.innerHTML = parent.innerHTML; + t.selection.moveToBookmark(bookmark); + } + } + + }); + + t.onKeyDown.add(function(ed, e) { + var rng, parent, bookmark; + + // IE has a really odd bug where the DOM might include an node that doesn't have + // a proper structure. If you try to access nodeValue it would throw an illegal value exception. + // This seems to only happen when you delete contents and it seems to be avoidable if you refresh the element + // after you delete contents from it. See: #3008923 + if (isIE && e.keyCode == 46) { + rng = t.selection.getRng(); + + if (rng.parentElement) { + addUndo(); + parent = rng.parentElement(); + + // Select next word when ctrl key is used in combo with delete + if (e.ctrlKey) { + rng.moveEnd('word', 1); + rng.select(); + } + + // Delete contents + t.selection.getSel().clear(); + + // Check if we are within the same parent + if (rng.parentElement() == parent) { + bookmark = t.selection.getBookmark(); + + try { + // Update the HTML and hopefully it will remove the artifacts + parent.innerHTML = parent.innerHTML; + } catch (ex) { + // And since it's IE it can sometimes produce an unknown runtime error + } + + // Restore the caret position + t.selection.moveToBookmark(bookmark); + } + + addUndo(); + + // Block the default delete behavior since it might be broken + e.preventDefault(); + return; + } + } + + // Special handling for enter to ensure typing is still set to true + if (e.keyCode == 13 && t.undoManager.typing) { + addUndo(); + t.undoManager.typing = 1; + } + + // Is caracter positon keys + if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 45) { + if (t.undoManager.typing) + addUndo(); + + return; + } + + if (!t.undoManager.typing) { + t.undoManager.add(); + t.undoManager.typing = 1; + } + }); + + t.onMouseDown.add(function() { + if (t.undoManager.typing) + addUndo(); + }); + } + + // Bug fix for FireFox keeping styles from end of selection instead of start. + if (tinymce.isGecko) { + function getAttributeApplyFunction() { + t.undoManager.typing = 0; + t.undoManager.add(); + var template = t.dom.getAttribs(t.selection.getStart().cloneNode(false)); + return function() { + var target = t.selection.getStart(); + t.dom.removeAllAttribs(target); + each(template, function(attr) { + target.setAttributeNode(attr.cloneNode(true)); + }); + //t.dom.setAttribs(target, template); + t.undoManager.typing = 0; + t.undoManager.add(); + }; + } + + function isSelectionAcrossElements() { + var s = t.selection; + return !s.isCollapsed() && s.getStart() != s.getEnd(); + } + + t.onKeyPress.add(function(ed, e) { + if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) { + var applyAttributes = getAttributeApplyFunction(); + t.getDoc().execCommand('delete', false, null); + applyAttributes(); + return Event.cancel(e); + } + }); + + t.dom.bind(t.getDoc(), 'cut', function(e) { + if (isSelectionAcrossElements()) { + var applyAttributes = getAttributeApplyFunction(); + t.onKeyUp.addToTop(Event.cancel, Event); + setTimeout(function() { + applyAttributes(); + t.onKeyUp.remove(Event.cancel, Event); + }, 0); + } + }); + } + }, + + _isHidden : function() { + var s; + + if (!isGecko) + return 0; + + // Weird, wheres that cursor selection? + s = this.selection.getSel(); + return (!s || !s.rangeCount || s.rangeCount == 0); + }, + + // Fix for bug #1867292 + _fixNesting : function(s) { + var d = [], i; + + s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) { + var e; + + // Handle end element + if (b === '/') { + if (!d.length) + return ''; + + if (c !== d[d.length - 1].tag) { + for (i=d.length - 1; i>=0; i--) { + if (d[i].tag === c) { + d[i].close = 1; + break; + } + } + + return ''; + } else { + d.pop(); + + if (d.length && d[d.length - 1].close) { + a = a + ''; + d.pop(); + } + } + } else { + // Ignore these + if (/^(br|hr|input|meta|img|link|param)$/i.test(c)) + return a; + + // Ignore closed ones + if (/\/>$/.test(a)) + return a; + + d.push({tag : c}); // Push start element + } + + return a; + }); + + // End all open tags + for (i=d.length - 1; i>=0; i--) + s += ''; + + return s; + } + }); +})(tinymce); + +(function(tinymce) { + // Added for compression purposes + var each = tinymce.each, undefined, TRUE = true, FALSE = false; + + tinymce.EditorCommands = function(editor) { + var dom = editor.dom, + selection = editor.selection, + commands = {state: {}, exec : {}, value : {}}, + settings = editor.settings, + bookmark; + + function execCommand(command, ui, value) { + var func; + + command = command.toLowerCase(); + if (func = commands.exec[command]) { + func(command, ui, value); + return TRUE; + } + + return FALSE; + }; + + function queryCommandState(command) { + var func; + + command = command.toLowerCase(); + if (func = commands.state[command]) + return func(command); + + return -1; + }; + + function queryCommandValue(command) { + var func; + + command = command.toLowerCase(); + if (func = commands.value[command]) + return func(command); + + return FALSE; + }; + + function addCommands(command_list, type) { + type = type || 'exec'; + + each(command_list, function(callback, command) { + each(command.toLowerCase().split(','), function(command) { + commands[type][command] = callback; + }); + }); + }; + + // Expose public methods + tinymce.extend(this, { + execCommand : execCommand, + queryCommandState : queryCommandState, + queryCommandValue : queryCommandValue, + addCommands : addCommands + }); + + // Private methods + + function execNativeCommand(command, ui, value) { + if (ui === undefined) + ui = FALSE; + + if (value === undefined) + value = null; + + return editor.getDoc().execCommand(command, ui, value); + }; + + function isFormatMatch(name) { + return editor.formatter.match(name); + }; + + function toggleFormat(name, value) { + editor.formatter.toggle(name, value ? {value : value} : undefined); + }; + + function storeSelection(type) { + bookmark = selection.getBookmark(type); + }; + + function restoreSelection() { + selection.moveToBookmark(bookmark); + }; + + // Add execCommand overrides + addCommands({ + // Ignore these, added for compatibility + 'mceResetDesignMode,mceBeginUndoLevel' : function() {}, + + // Add undo manager logic + 'mceEndUndoLevel,mceAddUndoLevel' : function() { + editor.undoManager.add(); + }, + + 'Cut,Copy,Paste' : function(command) { + var doc = editor.getDoc(), failed; + + // Try executing the native command + try { + execNativeCommand(command); + } catch (ex) { + // Command failed + failed = TRUE; + } + + // Present alert message about clipboard access not being available + if (failed || !doc.queryCommandSupported(command)) { + if (tinymce.isGecko) { + editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) { + if (state) + open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank'); + }); + } else + editor.windowManager.alert(editor.getLang('clipboard_no_support')); + } + }, + + // Override unlink command + unlink : function(command) { + if (selection.isCollapsed()) + selection.select(selection.getNode()); + + execNativeCommand(command); + selection.collapse(FALSE); + }, + + // Override justify commands to use the text formatter engine + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { + var align = command.substring(7); + + // Remove all other alignments first + each('left,center,right,full'.split(','), function(name) { + if (align != name) + editor.formatter.remove('align' + name); + }); + + toggleFormat('align' + align); + execCommand('mceRepaint'); + }, + + // Override list commands to fix WebKit bug + 'InsertUnorderedList,InsertOrderedList' : function(command) { + var listElm, listParent; + + execNativeCommand(command); + + // WebKit produces lists within block elements so we need to split them + // we will replace the native list creation logic to custom logic later on + // TODO: Remove this when the list creation logic is removed + listElm = dom.getParent(selection.getNode(), 'ol,ul'); + if (listElm) { + listParent = listElm.parentNode; + + // If list is within a text block then split that block + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { + storeSelection(); + dom.split(listParent, listElm); + restoreSelection(); + } + } + }, + + // Override commands to use the text formatter engine + 'Bold,Italic,Underline,Strikethrough' : function(command) { + toggleFormat(command); + }, + + // Override commands to use the text formatter engine + 'ForeColor,HiliteColor,FontName' : function(command, ui, value) { + toggleFormat(command, value); + }, + + FontSize : function(command, ui, value) { + var fontClasses, fontSizes; + + // Convert font size 1-7 to styles + if (value >= 1 && value <= 7) { + fontSizes = tinymce.explode(settings.font_size_style_values); + fontClasses = tinymce.explode(settings.font_size_classes); + + if (fontClasses) + value = fontClasses[value - 1] || value; + else + value = fontSizes[value - 1] || value; + } + + toggleFormat(command, value); + }, + + RemoveFormat : function(command) { + editor.formatter.remove(command); + }, + + mceBlockQuote : function(command) { + toggleFormat('blockquote'); + }, + + FormatBlock : function(command, ui, value) { + return toggleFormat(value || 'p'); + }, + + mceCleanup : function() { + var bookmark = selection.getBookmark(); + + editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE}); + + selection.moveToBookmark(bookmark); + }, + + mceRemoveNode : function(command, ui, value) { + var node = value || selection.getNode(); + + // Make sure that the body node isn't removed + if (node != editor.getBody()) { + storeSelection(); + editor.dom.remove(node, TRUE); + restoreSelection(); + } + }, + + mceSelectNodeDepth : function(command, ui, value) { + var counter = 0; + + dom.getParent(selection.getNode(), function(node) { + if (node.nodeType == 1 && counter++ == value) { + selection.select(node); + return FALSE; + } + }, editor.getBody()); + }, + + mceSelectNode : function(command, ui, value) { + selection.select(value); + }, + + mceInsertContent : function(command, ui, value) { + selection.setContent(value); + }, + + mceInsertRawHTML : function(command, ui, value) { + selection.setContent('tiny_mce_marker'); + editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value })); + }, + + mceSetContent : function(command, ui, value) { + editor.setContent(value); + }, + + 'Indent,Outdent' : function(command) { + var intentValue, indentUnit, value; + + // Setup indent level + intentValue = settings.indentation; + indentUnit = /[a-z%]+$/i.exec(intentValue); + intentValue = parseInt(intentValue); + + if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) { + each(selection.getSelectedBlocks(), function(element) { + if (command == 'outdent') { + value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue); + dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : ''); + } else + dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit); + }); + } else + execNativeCommand(command); + }, + + mceRepaint : function() { + var bookmark; + + if (tinymce.isGecko) { + try { + storeSelection(TRUE); + + if (selection.getSel()) + selection.getSel().selectAllChildren(editor.getBody()); + + selection.collapse(TRUE); + restoreSelection(); + } catch (ex) { + // Ignore + } + } + }, + + mceToggleFormat : function(command, ui, value) { + editor.formatter.toggle(value); + }, + + InsertHorizontalRule : function() { + var hrElm, hrParent, rng; + selection.setContent('
    '); + + hrElm = dom.get('_mce_inserted_hr'); + hrParent = hrElm.parentNode; + // If HR is within a text block then split that block + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(hrParent.nodeName)) { + dom.split(hrParent, hrElm); + } + dom.removeAllAttribs(hrElm); + if (hrElm.nextSibling) { + rng = dom.createRng(); + rng.setStart(hrElm.nextSibling, 0); + rng.setEnd(hrElm.nextSibling, 0); + selection.setRng(rng); + } else { + selection.moveAfterNode(hrElm); + } + }, + + mceToggleVisualAid : function() { + editor.hasVisual = !editor.hasVisual; + editor.addVisual(); + }, + + mceReplaceContent : function(command, ui, value) { + selection.setContent(value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'}))); + }, + + mceInsertLink : function(command, ui, value) { + var link = dom.getParent(selection.getNode(), 'a'); + + if (tinymce.is(value, 'string')) + value = {href : value}; + + // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here. + value.href = value.href.replace(' ', '%20'); + + if (!link) { + execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);'); + each(dom.select('a[href=javascript:mctmp(0);]'), function(link) { + dom.setAttribs(link, value); + }); + } else { + if (value.href) + dom.setAttribs(link, value); + else + editor.dom.remove(link, TRUE); + } + }, + + selectAll : function() { + var root = dom.getRoot(), rng = dom.createRng(); + + rng.setStart(root, 0); + rng.setEnd(root, root.childNodes.length); + + editor.selection.setRng(rng); + } + }); + + // Add queryCommandState overrides + addCommands({ + // Override justify commands + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { + return isFormatMatch('align' + command.substring(7)); + }, + + 'Bold,Italic,Underline,Strikethrough' : function(command) { + return isFormatMatch(command); + }, + + mceBlockQuote : function() { + return isFormatMatch('blockquote'); + }, + + Outdent : function() { + var node; + + if (settings.inline_styles) { + if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) + return TRUE; + + if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) + return TRUE; + } + + return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE')); + }, + + 'InsertUnorderedList,InsertOrderedList' : function(command) { + return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL'); + } + }, 'state'); + + // Add queryCommandValue overrides + addCommands({ + 'FontSize,FontName' : function(command) { + var value = 0, parent; + + if (parent = dom.getParent(selection.getNode(), 'span')) { + if (command == 'fontsize') + value = parent.style.fontSize; + else + value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); + } + + return value; + } + }, 'value'); + + // Add undo manager logic + if (settings.custom_undo_redo) { + addCommands({ + Undo : function() { + editor.undoManager.undo(); + }, + + Redo : function() { + editor.undoManager.redo(); + } + }); + } + }; +})(tinymce); +(function(tinymce) { + var Dispatcher = tinymce.util.Dispatcher; + + tinymce.UndoManager = function(editor) { + var self, index = 0, data = []; + + function getContent() { + return tinymce.trim(editor.getContent({format : 'raw', no_events : 1})); + }; + + return self = { + typing : 0, + + onAdd : new Dispatcher(self), + onUndo : new Dispatcher(self), + onRedo : new Dispatcher(self), + + add : function(level) { + var i, settings = editor.settings, lastLevel; + + level = level || {}; + level.content = getContent(); + + // Add undo level if needed + lastLevel = data[index]; + if (lastLevel && lastLevel.content == level.content) { + if (index > 0 || data.length == 1) + return null; + } + + // Time to compress + if (settings.custom_undo_redo_levels) { + if (data.length > settings.custom_undo_redo_levels) { + for (i = 0; i < data.length - 1; i++) + data[i] = data[i + 1]; + + data.length--; + index = data.length; + } + } + + // Get a non intrusive normalized bookmark + level.bookmark = editor.selection.getBookmark(2, true); + + // Crop array if needed + if (index < data.length - 1) { + // Treat first level as initial + if (index == 0) + data = []; + else + data.length = index + 1; + } + + data.push(level); + index = data.length - 1; + + self.onAdd.dispatch(self, level); + editor.isNotDirty = 0; + + return level; + }, + + undo : function() { + var level, i; + + if (self.typing) { + self.add(); + self.typing = 0; + } + + if (index > 0) { + level = data[--index]; + + editor.setContent(level.content, {format : 'raw'}); + editor.selection.moveToBookmark(level.bookmark); + + self.onUndo.dispatch(self, level); + } + + return level; + }, + + redo : function() { + var level; + + if (index < data.length - 1) { + level = data[++index]; + + editor.setContent(level.content, {format : 'raw'}); + editor.selection.moveToBookmark(level.bookmark); + + self.onRedo.dispatch(self, level); + } + + return level; + }, + + clear : function() { + data = []; + index = self.typing = 0; + }, + + hasUndo : function() { + return index > 0 || self.typing; + }, + + hasRedo : function() { + return index < data.length - 1; + } + }; + }; +})(tinymce); + +(function(tinymce) { + // Shorten names + var Event = tinymce.dom.Event, + isIE = tinymce.isIE, + isGecko = tinymce.isGecko, + isOpera = tinymce.isOpera, + each = tinymce.each, + extend = tinymce.extend, + TRUE = true, + FALSE = false; + + function cloneFormats(node) { + var clone, temp, inner; + + do { + if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) { + if (clone) { + temp = node.cloneNode(false); + temp.appendChild(clone); + clone = temp; + } else { + clone = inner = node.cloneNode(false); + } + + clone.removeAttribute('id'); + } + } while (node = node.parentNode); + + if (clone) + return {wrapper : clone, inner : inner}; + }; + + // Checks if the selection/caret is at the end of the specified block element + function isAtEnd(rng, par) { + var rng2 = par.ownerDocument.createRange(); + + rng2.setStart(rng.endContainer, rng.endOffset); + rng2.setEndAfter(par); + + // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element + return rng2.cloneContents().textContent.length == 0; + }; + + function isEmpty(n) { + n = n.innerHTML; + + n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars + n = n.replace(/<[^>]+>/g, ''); // Remove all tags + + return n.replace(/[ \u00a0\t\r\n]+/g, '') == ''; + }; + + function splitList(selection, dom, li) { + var listBlock, block; + + if (isEmpty(li)) { + listBlock = dom.getParent(li, 'ul,ol'); + + if (!dom.getParent(listBlock.parentNode, 'ul,ol')) { + dom.split(listBlock, li); + block = dom.create('p', 0, '
    '); + dom.replace(block, li); + selection.select(block, 1); + } + + return FALSE; + } + + return TRUE; + }; + + tinymce.create('tinymce.ForceBlocks', { + ForceBlocks : function(ed) { + var t = this, s = ed.settings, elm; + + t.editor = ed; + t.dom = ed.dom; + elm = (s.forced_root_block || 'p').toLowerCase(); + s.element = elm.toUpperCase(); + + ed.onPreInit.add(t.setup, t); + + t.reOpera = new RegExp('(\\u00a0| | )<\/' + elm + '>', 'gi'); + t.rePadd = new RegExp(']+)><\\\/p>|]+)\\\/>|]+)>\\s+<\\\/p>|

    <\\\/p>||

    \\s+<\\\/p>'.replace(/p/g, elm), 'gi'); + t.reNbsp2BR1 = new RegExp(']+)>[\\s\\u00a0]+<\\\/p>|

    [\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi'); + t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%p>'.replace(/%p/g, elm), 'gi'); + t.reBR2Nbsp = new RegExp(']+)>\\s*
    \\s*<\\\/p>|

    \\s*
    \\s*<\\\/p>'.replace(/p/g, elm), 'gi'); + + function padd(ed, o) { + if (isOpera) + o.content = o.content.replace(t.reOpera, ''); + + o.content = tinymce._replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0', o.content); + + if (!isIE && !isOpera && o.set) { + // Use   instead of BR in padded paragraphs + o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2>
    '); + o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2>
    '); + } else + o.content = tinymce._replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0', o.content); + }; + + ed.onBeforeSetContent.add(padd); + ed.onPostProcess.add(padd); + + if (s.forced_root_block) { + ed.onInit.add(t.forceRoots, t); + ed.onSetContent.add(t.forceRoots, t); + ed.onBeforeGetContent.add(t.forceRoots, t); + } + }, + + setup : function() { + var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection; + + // Force root blocks when typing and when getting output + if (s.forced_root_block) { + ed.onBeforeExecCommand.add(t.forceRoots, t); + ed.onKeyUp.add(t.forceRoots, t); + ed.onPreProcess.add(t.forceRoots, t); + } + + if (s.force_br_newlines) { + // Force IE to produce BRs on enter + if (isIE) { + ed.onKeyPress.add(function(ed, e) { + var n; + + if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') { + selection.setContent('
    ', {format : 'raw'}); + n = dom.get('__'); + n.removeAttribute('id'); + selection.select(n); + selection.collapse(); + return Event.cancel(e); + } + }); + } + } + + if (s.force_p_newlines) { + if (!isIE) { + ed.onKeyPress.add(function(ed, e) { + if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e)) + Event.cancel(e); + }); + } else { + // Ungly hack to for IE to preserve the formatting when you press + // enter at the end of a block element with formatted contents + // This logic overrides the browsers default logic with + // custom logic that enables us to control the output + tinymce.addUnload(function() { + t._previousFormats = 0; // Fix IE leak + }); + + ed.onKeyPress.add(function(ed, e) { + t._previousFormats = 0; + + // Clone the current formats, this will later be applied to the new block contents + if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles) + t._previousFormats = cloneFormats(ed.selection.getStart()); + }); + + ed.onKeyUp.add(function(ed, e) { + // Let IE break the element and the wrap the new caret location in the previous formats + if (e.keyCode == 13 && !e.shiftKey) { + var parent = ed.selection.getStart(), fmt = t._previousFormats; + + // Parent is an empty block + if (!parent.hasChildNodes() && fmt) { + parent = dom.getParent(parent, dom.isBlock); + + if (parent && parent.nodeName != 'LI') { + parent.innerHTML = ''; + + if (t._previousFormats) { + parent.appendChild(fmt.wrapper); + fmt.inner.innerHTML = '\uFEFF'; + } else + parent.innerHTML = '\uFEFF'; + + selection.select(parent, 1); + ed.getDoc().execCommand('Delete', false, null); + t._previousFormats = 0; + } + } + } + }); + } + + if (isGecko) { + ed.onKeyDown.add(function(ed, e) { + if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) + t.backspaceDelete(e, e.keyCode == 8); + }); + } + } + + // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973 + if (tinymce.isWebKit) { + function insertBr(ed) { + var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h; + + // Insert BR element + rng.insertNode(br = dom.create('br')); + + // Place caret after BR + rng.setStartAfter(br); + rng.setEndAfter(br); + selection.setRng(rng); + + // Could not place caret after BR then insert an nbsp entity and move the caret + if (selection.getSel().focusNode == br.previousSibling) { + selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br)); + selection.collapse(TRUE); + } + + // Create a temporary DIV after the BR and get the position as it + // seems like getPos() returns 0 for text nodes and BR elements. + dom.insertAfter(div, br); + divYPos = dom.getPos(div).y; + dom.remove(div); + + // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117 + if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port. + ed.getWin().scrollTo(0, divYPos); + }; + + ed.onKeyPress.add(function(ed, e) { + if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) { + insertBr(ed); + Event.cancel(e); + } + }); + } + + // Padd empty inline elements within block elements + // For example:

    becomes

     

    + ed.onPreProcess.add(function(ed, o) { + each(dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) { + if (isEmpty(p)) { + each(dom.select('span,em,strong,b,i', o.node), function(n) { + if (!n.hasChildNodes()) { + n.appendChild(ed.getDoc().createTextNode('\u00a0')); + return FALSE; // Break the loop one padding is enough + } + }); + } + }); + }); + + // IE specific fixes + if (isIE) { + // Replaces IE:s auto generated paragraphs with the specified element name + if (s.element != 'P') { + ed.onKeyPress.add(function(ed, e) { + t.lastElm = selection.getNode().nodeName; + }); + + ed.onKeyUp.add(function(ed, e) { + var bl, n = selection.getNode(), b = ed.getBody(); + + if (b.childNodes.length === 1 && n.nodeName == 'P') { + n = dom.rename(n, s.element); + selection.select(n); + selection.collapse(); + ed.nodeChanged(); + } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') { + bl = dom.getParent(n, 'p'); + + if (bl) { + dom.rename(bl, s.element); + ed.nodeChanged(); + } + } + }); + } + } + }, + + find : function(n, t, s) { + var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1; + + while (n = w.nextNode()) { + c++; + + // Index by node + if (t == 0 && n == s) + return c; + + // Node by index + if (t == 1 && c == s) + return n; + } + + return -1; + }, + + forceRoots : function(ed, e) { + var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF; + var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid; + + // Fix for bug #1863847 + //if (e && e.keyCode == 13) + // return TRUE; + + // Wrap non blocks into blocks + for (i = nl.length - 1; i >= 0; i--) { + nx = nl[i]; + + // Ignore internal elements + if (nx.nodeType === 1 && nx.getAttribute('_mce_type')) { + bl = null; + continue; + } + + // Is text or non block element + if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) { + if (!bl) { + // Create new block but ignore whitespace + if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) { + // Store selection + if (si == -2 && r) { + if (!isIE || r.setStart) { + // If selection is element then mark it + if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) { + // Save the id of the selected element + eid = n.getAttribute("id"); + n.setAttribute("id", "__mce"); + } else { + // If element is inside body, might not be the case in contentEdiable mode + if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) { + so = r.startOffset; + eo = r.endOffset; + si = t.find(b, 0, r.startContainer); + ei = t.find(b, 0, r.endContainer); + } + } + } else { + // Force control range into text range + if (r.item) { + tr = d.body.createTextRange(); + tr.moveToElementText(r.item(0)); + r = tr; + } + + tr = d.body.createTextRange(); + tr.moveToElementText(b); + tr.collapse(1); + bp = tr.move('character', c) * -1; + + tr = r.duplicate(); + tr.collapse(1); + sp = tr.move('character', c) * -1; + + tr = r.duplicate(); + tr.collapse(0); + le = (tr.move('character', c) * -1) - sp; + + si = sp - bp; + ei = le; + } + } + + // Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE + // See: http://support.microsoft.com/kb/829907 + bl = ed.dom.create(ed.settings.forced_root_block); + nx.parentNode.replaceChild(bl, nx); + bl.appendChild(nx); + } + } else { + if (bl.hasChildNodes()) + bl.insertBefore(nx, bl.firstChild); + else + bl.appendChild(nx); + } + } else + bl = null; // Time to create new block + } + + // Restore selection + if (si != -2) { + if (!isIE || r.setStart) { + bl = b.getElementsByTagName(ed.settings.element)[0]; + r = d.createRange(); + + // Select last location or generated block + if (si != -1) + r.setStart(t.find(b, 1, si), so); + else + r.setStart(bl, 0); + + // Select last location or generated block + if (ei != -1) + r.setEnd(t.find(b, 1, ei), eo); + else + r.setEnd(bl, 0); + + if (s) { + s.removeAllRanges(); + s.addRange(r); + } + } else { + try { + r = s.createRange(); + r.moveToElementText(b); + r.collapse(1); + r.moveStart('character', si); + r.moveEnd('character', ei); + r.select(); + } catch (ex) { + // Ignore + } + } + } else if ((!isIE || r.setStart) && (n = ed.dom.get('__mce'))) { + // Restore the id of the selected element + if (eid) + n.setAttribute('id', eid); + else + n.removeAttribute('id'); + + // Move caret before selected element + r = d.createRange(); + r.setStartBefore(n); + r.setEndBefore(n); + se.setRng(r); + } + }, + + getParentBlock : function(n) { + var d = this.dom; + + return d.getParent(n, d.isBlock); + }, + + insertPara : function(e) { + var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body; + var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car; + + // If root blocks are forced then use Operas default behavior since it's really good +// Removed due to bug: #1853816 +// if (se.forced_root_block && isOpera) +// return TRUE; + + // Setup before range + rb = d.createRange(); + + // If is before the first block element and in body, then move it into first block element + rb.setStart(s.anchorNode, s.anchorOffset); + rb.collapse(TRUE); + + // Setup after range + ra = d.createRange(); + + // If is before the first block element and in body, then move it into first block element + ra.setStart(s.focusNode, s.focusOffset); + ra.collapse(TRUE); + + // Setup start/end points + dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0; + sn = dir ? s.anchorNode : s.focusNode; + so = dir ? s.anchorOffset : s.focusOffset; + en = dir ? s.focusNode : s.anchorNode; + eo = dir ? s.focusOffset : s.anchorOffset; + + // If selection is in empty table cell + if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) { + if (sn.firstChild.nodeName == 'BR') + dom.remove(sn.firstChild); // Remove BR + + // Create two new block elements + if (sn.childNodes.length == 0) { + ed.dom.add(sn, se.element, null, '
    '); + aft = ed.dom.add(sn, se.element, null, '
    '); + } else { + n = sn.innerHTML; + sn.innerHTML = ''; + ed.dom.add(sn, se.element, null, n); + aft = ed.dom.add(sn, se.element, null, '
    '); + } + + // Move caret into the last one + r = d.createRange(); + r.selectNodeContents(aft); + r.collapse(1); + ed.selection.setRng(r); + + return FALSE; + } + + // If the caret is in an invalid location in FF we need to move it into the first block + if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) { + sn = en = sn.firstChild; + so = eo = 0; + rb = d.createRange(); + rb.setStart(sn, 0); + ra = d.createRange(); + ra.setStart(en, 0); + } + + // Never use body as start or end node + sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes + sn = sn.nodeName == "BODY" ? sn.firstChild : sn; + en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes + en = en.nodeName == "BODY" ? en.firstChild : en; + + // Get start and end blocks + sb = t.getParentBlock(sn); + eb = t.getParentBlock(en); + bn = sb ? sb.nodeName : se.element; // Get block name to create + + // Return inside list use default browser behavior + if (n = t.dom.getParent(sb, 'li,pre')) { + if (n.nodeName == 'LI') + return splitList(ed.selection, t.dom, n); + + return TRUE; + } + + // If caption or absolute layers then always generate new blocks within + if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { + bn = se.element; + sb = null; + } + + // If caption or absolute layers then always generate new blocks within + if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { + bn = se.element; + eb = null; + } + + // Use P instead + if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) { + bn = se.element; + sb = eb = null; + } + + // Setup new before and after blocks + bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn); + aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn); + + // Remove id from after clone + aft.removeAttribute('id'); + + // Is header and cursor is at the end, then force paragraph under + if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb)) + aft = ed.dom.create(se.element); + + // Find start chop node + n = sc = sn; + do { + if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName)) + break; + + sc = n; + } while ((n = n.previousSibling ? n.previousSibling : n.parentNode)); + + // Find end chop node + n = ec = en; + do { + if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName)) + break; + + ec = n; + } while ((n = n.nextSibling ? n.nextSibling : n.parentNode)); + + // Place first chop part into before block element + if (sc.nodeName == bn) + rb.setStart(sc, 0); + else + rb.setStartBefore(sc); + + rb.setEnd(sn, so); + bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari + + // Place secnd chop part within new block element + try { + ra.setEndAfter(ec); + } catch(ex) { + //console.debug(s.focusNode, s.focusOffset); + } + + ra.setStart(en, eo); + aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari + + // Create range around everything + r = d.createRange(); + if (!sc.previousSibling && sc.parentNode.nodeName == bn) { + r.setStartBefore(sc.parentNode); + } else { + if (rb.startContainer.nodeName == bn && rb.startOffset == 0) + r.setStartBefore(rb.startContainer); + else + r.setStart(rb.startContainer, rb.startOffset); + } + + if (!ec.nextSibling && ec.parentNode.nodeName == bn) + r.setEndAfter(ec.parentNode); + else + r.setEnd(ra.endContainer, ra.endOffset); + + // Delete and replace it with new block elements + r.deleteContents(); + + if (isOpera) + ed.getWin().scrollTo(0, vp.y); + + // Never wrap blocks in blocks + if (bef.firstChild && bef.firstChild.nodeName == bn) + bef.innerHTML = bef.firstChild.innerHTML; + + if (aft.firstChild && aft.firstChild.nodeName == bn) + aft.innerHTML = aft.firstChild.innerHTML; + + // Padd empty blocks + if (isEmpty(bef)) + bef.innerHTML = '
    '; + + function appendStyles(e, en) { + var nl = [], nn, n, i; + + e.innerHTML = ''; + + // Make clones of style elements + if (se.keep_styles) { + n = en; + do { + // We only want style specific elements + if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) { + nn = n.cloneNode(FALSE); + dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique + nl.push(nn); + } + } while (n = n.parentNode); + } + + // Append style elements to aft + if (nl.length > 0) { + for (i = nl.length - 1, nn = e; i >= 0; i--) + nn = nn.appendChild(nl[i]); + + // Padd most inner style element + nl[0].innerHTML = isOpera ? ' ' : '
    '; // Extra space for Opera so that the caret can move there + return nl[0]; // Move caret to most inner element + } else + e.innerHTML = isOpera ? ' ' : '
    '; // Extra space for Opera so that the caret can move there + }; + + // Fill empty afterblook with current style + if (isEmpty(aft)) + car = appendStyles(aft, en); + + // Opera needs this one backwards for older versions + if (isOpera && parseFloat(opera.version()) < 9.5) { + r.insertNode(bef); + r.insertNode(aft); + } else { + r.insertNode(aft); + r.insertNode(bef); + } + + // Normalize + aft.normalize(); + bef.normalize(); + + function first(n) { + return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n; + }; + + // Move cursor and scroll into view + r = d.createRange(); + r.selectNodeContents(isGecko ? first(car || aft) : car || aft); + r.collapse(1); + s.removeAllRanges(); + s.addRange(r); + + // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs + y = ed.dom.getPos(aft).y; + ch = aft.clientHeight; + + // Is element within viewport + if (y < vp.y || y + ch > vp.y + vp.h) { + ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks + //console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight)); + } + + return FALSE; + }, + + backspaceDelete : function(e, bs) { + var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker; + + // Delete when caret is behind a element doesn't work correctly on Gecko see #3011651 + if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) { + walker = new tinymce.dom.TreeWalker(sc.lastChild, sc); + + // Walk the dom backwards until we find a text node + for (n = sc.lastChild; n; n = walker.prev()) { + if (n.nodeType == 3) { + r.setStart(n, n.nodeValue.length); + r.collapse(true); + se.setRng(r); + return; + } + } + } + + // The caret sometimes gets stuck in Gecko if you delete empty paragraphs + // This workaround removes the element by hand and moves the caret to the previous element + if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) { + if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) { + // Find previous block element + n = sc; + while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ; + + if (n) { + if (sc != b.firstChild) { + // Find last text node + w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE); + while (tn = w.nextNode()) + n = tn; + + // Place caret at the end of last text node + r = ed.getDoc().createRange(); + r.setStart(n, n.nodeValue ? n.nodeValue.length : 0); + r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0); + se.setRng(r); + + // Remove the target container + ed.dom.remove(sc); + } + + return Event.cancel(e); + } + } + } + } + }); +})(tinymce); + +(function(tinymce) { + // Shorten names + var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend; + + tinymce.create('tinymce.ControlManager', { + ControlManager : function(ed, s) { + var t = this, i; + + s = s || {}; + t.editor = ed; + t.controls = {}; + t.onAdd = new tinymce.util.Dispatcher(t); + t.onPostRender = new tinymce.util.Dispatcher(t); + t.prefix = s.prefix || ed.id + '_'; + t._cls = {}; + + t.onPostRender.add(function() { + each(t.controls, function(c) { + c.postRender(); + }); + }); + }, + + get : function(id) { + return this.controls[this.prefix + id] || this.controls[id]; + }, + + setActive : function(id, s) { + var c = null; + + if (c = this.get(id)) + c.setActive(s); + + return c; + }, + + setDisabled : function(id, s) { + var c = null; + + if (c = this.get(id)) + c.setDisabled(s); + + return c; + }, + + add : function(c) { + var t = this; + + if (c) { + t.controls[c.id] = c; + t.onAdd.dispatch(c, t); + } + + return c; + }, + + createControl : function(n) { + var c, t = this, ed = t.editor; + + each(ed.plugins, function(p) { + if (p.createControl) { + c = p.createControl(n, t); + + if (c) + return false; + } + }); + + switch (n) { + case "|": + case "separator": + return t.createSeparator(); + } + + if (!c && ed.buttons && (c = ed.buttons[n])) + return t.createButton(n, c); + + return t.add(c); + }, + + createDropMenu : function(id, s, cc) { + var t = this, ed = t.editor, c, bm, v, cls; + + s = extend({ + 'class' : 'mceDropDown', + constrain : ed.settings.constrain_menus + }, s); + + s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin'; + if (v = ed.getParam('skin_variant')) + s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1); + + id = t.prefix + id; + cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu; + c = t.controls[id] = new cls(id, s); + c.onAddItem.add(function(c, o) { + var s = o.settings; + + s.title = ed.getLang(s.title, s.title); + + if (!s.onclick) { + s.onclick = function(v) { + if (s.cmd) + ed.execCommand(s.cmd, s.ui || false, s.value); + }; + } + }); + + ed.onRemove.add(function() { + c.destroy(); + }); + + // Fix for bug #1897785, #1898007 + if (tinymce.isIE) { + c.onShowMenu.add(function() { + // IE 8 needs focus in order to store away a range with the current collapsed caret location + ed.focus(); + + bm = ed.selection.getBookmark(1); + }); + + c.onHideMenu.add(function() { + if (bm) { + ed.selection.moveToBookmark(bm); + bm = 0; + } + }); + } + + return t.add(c); + }, + + createListBox : function(id, s, cc) { + var t = this, ed = t.editor, cmd, c, cls; + + if (t.get(id)) + return null; + + s.title = ed.translate(s.title); + s.scope = s.scope || ed; + + if (!s.onselect) { + s.onselect = function(v) { + ed.execCommand(s.cmd, s.ui || false, v || s.value); + }; + } + + s = extend({ + title : s.title, + 'class' : 'mce_' + id, + scope : s.scope, + control_manager : t + }, s); + + id = t.prefix + id; + + if (ed.settings.use_native_selects) + c = new tinymce.ui.NativeListBox(id, s); + else { + cls = cc || t._cls.listbox || tinymce.ui.ListBox; + c = new cls(id, s, ed); + } + + t.controls[id] = c; + + // Fix focus problem in Safari + if (tinymce.isWebKit) { + c.onPostRender.add(function(c, n) { + // Store bookmark on mousedown + Event.add(n, 'mousedown', function() { + ed.bookmark = ed.selection.getBookmark(1); + }); + + // Restore on focus, since it might be lost + Event.add(n, 'focus', function() { + ed.selection.moveToBookmark(ed.bookmark); + ed.bookmark = null; + }); + }); + } + + if (c.hideMenu) + ed.onMouseDown.add(c.hideMenu, c); + + return t.add(c); + }, + + createButton : function(id, s, cc) { + var t = this, ed = t.editor, o, c, cls; + + if (t.get(id)) + return null; + + s.title = ed.translate(s.title); + s.label = ed.translate(s.label); + s.scope = s.scope || ed; + + if (!s.onclick && !s.menu_button) { + s.onclick = function() { + ed.execCommand(s.cmd, s.ui || false, s.value); + }; + } + + s = extend({ + title : s.title, + 'class' : 'mce_' + id, + unavailable_prefix : ed.getLang('unavailable', ''), + scope : s.scope, + control_manager : t + }, s); + + id = t.prefix + id; + + if (s.menu_button) { + cls = cc || t._cls.menubutton || tinymce.ui.MenuButton; + c = new cls(id, s, ed); + ed.onMouseDown.add(c.hideMenu, c); + } else { + cls = t._cls.button || tinymce.ui.Button; + c = new cls(id, s); + } + + return t.add(c); + }, + + createMenuButton : function(id, s, cc) { + s = s || {}; + s.menu_button = 1; + + return this.createButton(id, s, cc); + }, + + createSplitButton : function(id, s, cc) { + var t = this, ed = t.editor, cmd, c, cls; + + if (t.get(id)) + return null; + + s.title = ed.translate(s.title); + s.scope = s.scope || ed; + + if (!s.onclick) { + s.onclick = function(v) { + ed.execCommand(s.cmd, s.ui || false, v || s.value); + }; + } + + if (!s.onselect) { + s.onselect = function(v) { + ed.execCommand(s.cmd, s.ui || false, v || s.value); + }; + } + + s = extend({ + title : s.title, + 'class' : 'mce_' + id, + scope : s.scope, + control_manager : t + }, s); + + id = t.prefix + id; + cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton; + c = t.add(new cls(id, s, ed)); + ed.onMouseDown.add(c.hideMenu, c); + + return c; + }, + + createColorSplitButton : function(id, s, cc) { + var t = this, ed = t.editor, cmd, c, cls, bm; + + if (t.get(id)) + return null; + + s.title = ed.translate(s.title); + s.scope = s.scope || ed; + + if (!s.onclick) { + s.onclick = function(v) { + if (tinymce.isIE) + bm = ed.selection.getBookmark(1); + + ed.execCommand(s.cmd, s.ui || false, v || s.value); + }; + } + + if (!s.onselect) { + s.onselect = function(v) { + ed.execCommand(s.cmd, s.ui || false, v || s.value); + }; + } + + s = extend({ + title : s.title, + 'class' : 'mce_' + id, + 'menu_class' : ed.getParam('skin') + 'Skin', + scope : s.scope, + more_colors_title : ed.getLang('more_colors') + }, s); + + id = t.prefix + id; + cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton; + c = new cls(id, s, ed); + ed.onMouseDown.add(c.hideMenu, c); + + // Remove the menu element when the editor is removed + ed.onRemove.add(function() { + c.destroy(); + }); + + // Fix for bug #1897785, #1898007 + if (tinymce.isIE) { + c.onShowMenu.add(function() { + // IE 8 needs focus in order to store away a range with the current collapsed caret location + ed.focus(); + bm = ed.selection.getBookmark(1); + }); + + c.onHideMenu.add(function() { + if (bm) { + ed.selection.moveToBookmark(bm); + bm = 0; + } + }); + } + + return t.add(c); + }, + + createToolbar : function(id, s, cc) { + var c, t = this, cls; + + id = t.prefix + id; + cls = cc || t._cls.toolbar || tinymce.ui.Toolbar; + c = new cls(id, s, t.editor); + + if (t.get(id)) + return null; + + return t.add(c); + }, + + createToolbarGroup : function(id, s, cc) { + var c, t = this, cls; + id = t.prefix + id; + cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup; + c = new cls(id, s, t.editor); + + if (t.get(id)) + return null; + + return t.add(c); + }, + + createSeparator : function(cc) { + var cls = cc || this._cls.separator || tinymce.ui.Separator; + + return new cls(); + }, + + setControlType : function(n, c) { + return this._cls[n.toLowerCase()] = c; + }, + + destroy : function() { + each(this.controls, function(c) { + c.destroy(); + }); + + this.controls = null; + } + }); +})(tinymce); + +(function(tinymce) { + var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera; + + tinymce.create('tinymce.WindowManager', { + WindowManager : function(ed) { + var t = this; + + t.editor = ed; + t.onOpen = new Dispatcher(t); + t.onClose = new Dispatcher(t); + t.params = {}; + t.features = {}; + }, + + open : function(s, p) { + var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u; + + // Default some options + s = s || {}; + p = p || {}; + sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window + sh = isOpera ? vp.h : screen.height; + s.name = s.name || 'mc_' + new Date().getTime(); + s.width = parseInt(s.width || 320); + s.height = parseInt(s.height || 240); + s.resizable = true; + s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0); + s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0); + p.inline = false; + p.mce_width = s.width; + p.mce_height = s.height; + p.mce_auto_focus = s.auto_focus; + + if (mo) { + if (isIE) { + s.center = true; + s.help = false; + s.dialogWidth = s.width + 'px'; + s.dialogHeight = s.height + 'px'; + s.scroll = s.scrollbars || false; + } + } + + // Build features string + each(s, function(v, k) { + if (tinymce.is(v, 'boolean')) + v = v ? 'yes' : 'no'; + + if (!/^(name|url)$/.test(k)) { + if (isIE && mo) + f += (f ? ';' : '') + k + ':' + v; + else + f += (f ? ',' : '') + k + '=' + v; + } + }); + + t.features = s; + t.params = p; + t.onOpen.dispatch(t, s, p); + + u = s.url || s.file; + u = tinymce._addVer(u); + + try { + if (isIE && mo) { + w = 1; + window.showModalDialog(u, window, f); + } else + w = window.open(u, s.name, f); + } catch (ex) { + // Ignore + } + + if (!w) + alert(t.editor.getLang('popup_blocked')); + }, + + close : function(w) { + w.close(); + this.onClose.dispatch(this); + }, + + createInstance : function(cl, a, b, c, d, e) { + var f = tinymce.resolve(cl); + + return new f(a, b, c, d, e); + }, + + confirm : function(t, cb, s, w) { + w = w || window; + + cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t)))); + }, + + alert : function(tx, cb, s, w) { + var t = this; + + w = w || window; + w.alert(t._decode(t.editor.getLang(tx, tx))); + + if (cb) + cb.call(s || t); + }, + + resizeBy : function(dw, dh, win) { + win.resizeBy(dw, dh); + }, + + // Internal functions + + _decode : function(s) { + return tinymce.DOM.decode(s).replace(/\\n/g, '\n'); + } + }); +}(tinymce)); +(function(tinymce) { + function CommandManager() { + var execCommands = {}, queryStateCommands = {}, queryValueCommands = {}; + + function add(collection, cmd, func, scope) { + if (typeof(cmd) == 'string') + cmd = [cmd]; + + tinymce.each(cmd, function(cmd) { + collection[cmd.toLowerCase()] = {func : func, scope : scope}; + }); + }; + + tinymce.extend(this, { + add : function(cmd, func, scope) { + add(execCommands, cmd, func, scope); + }, + + addQueryStateHandler : function(cmd, func, scope) { + add(queryStateCommands, cmd, func, scope); + }, + + addQueryValueHandler : function(cmd, func, scope) { + add(queryValueCommands, cmd, func, scope); + }, + + execCommand : function(scope, cmd, ui, value, args) { + if (cmd = execCommands[cmd.toLowerCase()]) { + if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false) + return true; + } + }, + + queryCommandValue : function() { + if (cmd = queryValueCommands[cmd.toLowerCase()]) + return cmd.func.call(scope || cmd.scope, ui, value, args); + }, + + queryCommandState : function() { + if (cmd = queryStateCommands[cmd.toLowerCase()]) + return cmd.func.call(scope || cmd.scope, ui, value, args); + } + }); + }; + + tinymce.GlobalCommands = new CommandManager(); +})(tinymce); +(function(tinymce) { + tinymce.Formatter = function(ed) { + var formats = {}, + each = tinymce.each, + dom = ed.dom, + selection = ed.selection, + TreeWalker = tinymce.dom.TreeWalker, + rangeUtils = new tinymce.dom.RangeUtils(dom), + isValid = ed.schema.isValid, + isBlock = dom.isBlock, + forcedRootBlock = ed.settings.forced_root_block, + nodeIndex = dom.nodeIndex, + INVISIBLE_CHAR = '\uFEFF', + MCE_ATTR_RE = /^(src|href|style)$/, + FALSE = false, + TRUE = true, + undefined, + pendingFormats = {apply : [], remove : []}; + + function isArray(obj) { + return obj instanceof Array; + }; + + function getParents(node, selector) { + return dom.getParents(node, selector, dom.getRoot()); + }; + + function isCaretNode(node) { + return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline'); + }; + + // Public functions + + function get(name) { + return name ? formats[name] : formats; + }; + + function register(name, format) { + if (name) { + if (typeof(name) !== 'string') { + each(name, function(format, name) { + register(name, format); + }); + } else { + // Force format into array and add it to internal collection + format = format.length ? format : [format]; + + each(format, function(format) { + // Set deep to false by default on selector formats this to avoid removing + // alignment on images inside paragraphs when alignment is changed on paragraphs + if (format.deep === undefined) + format.deep = !format.selector; + + // Default to true + if (format.split === undefined) + format.split = !format.selector || format.inline; + + // Default to true + if (format.remove === undefined && format.selector && !format.inline) + format.remove = 'none'; + + // Mark format as a mixed format inline + block level + if (format.selector && format.inline) { + format.mixed = true; + format.block_expand = true; + } + + // Split classes if needed + if (typeof(format.classes) === 'string') + format.classes = format.classes.split(/\s+/); + }); + + formats[name] = format; + } + } + }; + + var getTextDecoration = function(node) { + var decoration; + + ed.dom.getParent(node, function(n) { + decoration = ed.dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); + + return decoration; + }; + + var processUnderlineAndColor = function(node) { + var textDecoration; + if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { + textDecoration = getTextDecoration(node.parentNode); + if (ed.dom.getStyle(node, 'color') && textDecoration) { + ed.dom.setStyle(node, 'text-decoration', textDecoration); + } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) { + ed.dom.setStyle(node, 'text-decoration', null); + } + } + }; + + function apply(name, vars, node) { + var formatList = get(name), format = formatList[0], bookmark, rng, i; + + function moveStart(rng) { + var container = rng.startContainer, + offset = rng.startOffset, + walker, node; + + // Move startContainer/startOffset in to a suitable node + if (container.nodeType == 1 || container.nodeValue === "") { + container = container.nodeType == 1 ? container.childNodes[offset] : container; + + // Might fail if the offset is behind the last element in it's container + if (container) { + walker = new TreeWalker(container, container.parentNode); + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType == 3 && !isWhiteSpaceNode(node)) { + rng.setStart(node, 0); + break; + } + } + } + } + + return rng; + }; + + function setElementFormat(elm, fmt) { + fmt = fmt || format; + + if (elm) { + each(fmt.styles, function(value, name) { + dom.setStyle(elm, name, replaceVars(value, vars)); + }); + + each(fmt.attributes, function(value, name) { + dom.setAttrib(elm, name, replaceVars(value, vars)); + }); + + each(fmt.classes, function(value) { + value = replaceVars(value, vars); + + if (!dom.hasClass(elm, value)) + dom.addClass(elm, value); + }); + } + }; + + function applyRngStyle(rng) { + var newWrappers = [], wrapName, wrapElm; + + // Setup wrapper element + wrapName = format.inline || format.block; + wrapElm = dom.create(wrapName); + setElementFormat(wrapElm); + + rangeUtils.walk(rng, function(nodes) { + var currentWrapElm; + + function process(node) { + var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found; + + // Stop wrapping on br elements + if (isEq(nodeName, 'br')) { + currentWrapElm = 0; + + // Remove any br elements when we wrap things + if (format.block) + dom.remove(node); + + return; + } + + // If node is wrapper type + if (format.wrapper && matchNode(node, name, vars)) { + currentWrapElm = 0; + return; + } + + // Can we rename the block + if (format.block && !format.wrapper && isTextBlock(nodeName)) { + node = dom.rename(node, wrapName); + setElementFormat(node); + newWrappers.push(node); + currentWrapElm = 0; + return; + } + + // Handle selector patterns + if (format.selector) { + // Look for matching formats + each(formatList, function(format) { + if (dom.is(node, format.selector) && !isCaretNode(node)) { + setElementFormat(node, format); + found = true; + } + }); + + // Continue processing if a selector match wasn't found and a inline element is defined + if (!format.inline || found) { + currentWrapElm = 0; + return; + } + } + + // Is it valid to wrap this item + if ((format.wrap_links !== false || nodeName != 'a') && isValid(wrapName, nodeName) && isValid(parentName, wrapName)) { + // Start wrapping + if (!currentWrapElm) { + // Wrap the node + currentWrapElm = wrapElm.cloneNode(FALSE); + node.parentNode.insertBefore(currentWrapElm, node); + newWrappers.push(currentWrapElm); + } + + currentWrapElm.appendChild(node); + } else { + // Start a new wrapper for possible children + currentWrapElm = 0; + + each(tinymce.grep(node.childNodes), process); + + // End the last wrapper + currentWrapElm = 0; + } + }; + + // Process siblings from range + each(nodes, process); + }); + + // Cleanup + each(newWrappers, function(node) { + var childCount; + + function getChildCount(node) { + var count = 0; + + each(node.childNodes, function(node) { + if (!isWhiteSpaceNode(node) && !isBookmarkNode(node)) + count++; + }); + + return count; + }; + + function mergeStyles(node) { + var child, clone; + + each(node.childNodes, function(node) { + if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) { + child = node; + return FALSE; // break loop + } + }); + + // If child was found and of the same type as the current node + if (child && matchName(child, format)) { + clone = child.cloneNode(FALSE); + setElementFormat(clone); + + dom.replace(clone, node, TRUE); + dom.remove(child, 1); + } + + return clone || node; + }; + + childCount = getChildCount(node); + + // Remove empty nodes + if (childCount === 0) { + dom.remove(node, 1); + return; + } + + if (format.inline || format.wrapper) { + // Merges the current node with it's children of similar type to reduce the number of elements + if (!format.exact && childCount === 1) + node = mergeStyles(node); + + // Remove/merge children + each(formatList, function(format) { + // Merge all children of similar type will move styles from child to parent + // this: text + // will become: text + each(dom.select(format.inline, node), function(child) { + removeFormat(format, vars, child, format.exact ? child : null); + }); + }); + + // Remove child if direct parent is of same type + if (matchNode(node.parentNode, name, vars)) { + dom.remove(node, 1); + node = 0; + return TRUE; + } + + // Look for parent with similar style format + if (format.merge_with_parents) { + dom.getParent(node.parentNode, function(parent) { + if (matchNode(parent, name, vars)) { + dom.remove(node, 1); + node = 0; + return TRUE; + } + }); + } + + // Merge next and previous siblings if they are similar texttext becomes texttext + if (node) { + node = mergeSiblings(getNonWhiteSpaceSibling(node), node); + node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE)); + } + } + }); + }; + + if (format) { + if (node) { + rng = dom.createRng(); + + rng.setStartBefore(node); + rng.setEndAfter(node); + + applyRngStyle(expandRng(rng, formatList)); + } else { + if (!selection.isCollapsed() || !format.inline) { + // Obtain selection node before selection is unselected by applyRngStyle() + var curSelNode = ed.selection.getNode(); + + // Apply formatting to selection + bookmark = selection.getBookmark(); + applyRngStyle(expandRng(selection.getRng(TRUE), formatList)); + + // Colored nodes should be underlined so that the color of the underline matches the text color. + if (format.styles && (format.styles.color || format.styles.textDecoration)) { + tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes'); + processUnderlineAndColor(curSelNode); + } + + selection.moveToBookmark(bookmark); + selection.setRng(moveStart(selection.getRng(TRUE))); + ed.nodeChanged(); + } else + performCaretAction('apply', name, vars); + } + } + }; + + function remove(name, vars, node) { + var formatList = get(name), format = formatList[0], bookmark, i, rng; + + function moveStart(rng) { + var container = rng.startContainer, + offset = rng.startOffset, + walker, node, nodes, tmpNode; + + // Convert text node into index if possible + if (container.nodeType == 3 && offset >= container.nodeValue.length - 1) { + container = container.parentNode; + offset = nodeIndex(container) + 1; + } + + // Move startContainer/startOffset in to a suitable node + if (container.nodeType == 1) { + nodes = container.childNodes; + container = nodes[Math.min(offset, nodes.length - 1)]; + walker = new TreeWalker(container); + + // If offset is at end of the parent node walk to the next one + if (offset > nodes.length - 1) + walker.next(); + + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType == 3 && !isWhiteSpaceNode(node)) { + // IE has a "neat" feature where it moves the start node into the closest element + // we can avoid this by inserting an element before it and then remove it after we set the selection + tmpNode = dom.create('a', null, INVISIBLE_CHAR); + node.parentNode.insertBefore(tmpNode, node); + + // Set selection and remove tmpNode + rng.setStart(node, 0); + selection.setRng(rng); + dom.remove(tmpNode); + + return; + } + } + } + }; + + // Merges the styles for each node + function process(node) { + var children, i, l; + + // Grab the children first since the nodelist might be changed + children = tinymce.grep(node.childNodes); + + // Process current node + for (i = 0, l = formatList.length; i < l; i++) { + if (removeFormat(formatList[i], vars, node, node)) + break; + } + + // Process the children + if (format.deep) { + for (i = 0, l = children.length; i < l; i++) + process(children[i]); + } + }; + + function findFormatRoot(container) { + var formatRoot; + + // Find format root + each(getParents(container.parentNode).reverse(), function(parent) { + var format; + + // Find format root element + if (!formatRoot && parent.id != '_start' && parent.id != '_end') { + // Is the node matching the format we are looking for + format = matchNode(parent, name, vars); + if (format && format.split !== false) + formatRoot = parent; + } + }); + + return formatRoot; + }; + + function wrapAndSplit(format_root, container, target, split) { + var parent, clone, lastClone, firstClone, i, formatRootParent; + + // Format root found then clone formats and split it + if (format_root) { + formatRootParent = format_root.parentNode; + + for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) { + clone = parent.cloneNode(FALSE); + + for (i = 0; i < formatList.length; i++) { + if (removeFormat(formatList[i], vars, clone, clone)) { + clone = 0; + break; + } + } + + // Build wrapper node + if (clone) { + if (lastClone) + clone.appendChild(lastClone); + + if (!firstClone) + firstClone = clone; + + lastClone = clone; + } + } + + // Never split block elements if the format is mixed + if (split && (!format.mixed || !isBlock(format_root))) + container = dom.split(format_root, container); + + // Wrap container in cloned formats + if (lastClone) { + target.parentNode.insertBefore(lastClone, target); + firstClone.appendChild(target); + } + } + + return container; + }; + + function splitToFormatRoot(container) { + return wrapAndSplit(findFormatRoot(container), container, container, true); + }; + + function unwrap(start) { + var node = dom.get(start ? '_start' : '_end'), + out = node[start ? 'firstChild' : 'lastChild']; + + // If the end is placed within the start the result will be removed + // So this checks if the out node is a bookmark node if it is it + // checks for another more suitable node + if (isBookmarkNode(out)) + out = out[start ? 'firstChild' : 'lastChild']; + + dom.remove(node, true); + + return out; + }; + + function removeRngStyle(rng) { + var startContainer, endContainer; + + rng = expandRng(rng, formatList, TRUE); + + if (format.split) { + startContainer = getContainer(rng, TRUE); + endContainer = getContainer(rng); + + if (startContainer != endContainer) { + // Wrap start/end nodes in span element since these might be cloned/moved + startContainer = wrap(startContainer, 'span', {id : '_start', _mce_type : 'bookmark'}); + endContainer = wrap(endContainer, 'span', {id : '_end', _mce_type : 'bookmark'}); + + // Split start/end + splitToFormatRoot(startContainer); + splitToFormatRoot(endContainer); + + // Unwrap start/end to get real elements again + startContainer = unwrap(TRUE); + endContainer = unwrap(); + } else + startContainer = endContainer = splitToFormatRoot(startContainer); + + // Update range positions since they might have changed after the split operations + rng.startContainer = startContainer.parentNode; + rng.startOffset = nodeIndex(startContainer); + rng.endContainer = endContainer.parentNode; + rng.endOffset = nodeIndex(endContainer) + 1; + } + + // Remove items between start/end + rangeUtils.walk(rng, function(nodes) { + each(nodes, function(node) { + process(node); + + // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined. + if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') { + removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node); + } + }); + }); + }; + + // Handle node + if (node) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + removeRngStyle(rng); + return; + } + + if (!selection.isCollapsed() || !format.inline) { + bookmark = selection.getBookmark(); + removeRngStyle(selection.getRng(TRUE)); + selection.moveToBookmark(bookmark); + + // Check if start element still has formatting then we are at: "text|text" and need to move the start into the next text node + if (match(name, vars, selection.getStart())) { + moveStart(selection.getRng(true)); + } + + ed.nodeChanged(); + } else + performCaretAction('remove', name, vars); + }; + + function toggle(name, vars, node) { + var fmt = get(name); + if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0]['toggle'])) + remove(name, vars, node); + else + apply(name, vars, node); + }; + + function matchNode(node, name, vars, similar) { + var formatList = get(name), format, i, classes; + + function matchItems(node, format, item_name) { + var key, value, items = format[item_name], i; + + // Check all items + if (items) { + // Non indexed object + if (items.length === undefined) { + for (key in items) { + if (items.hasOwnProperty(key)) { + if (item_name === 'attributes') + value = dom.getAttrib(node, key); + else + value = getStyle(node, key); + + if (similar && !value && !format.exact) + return; + + if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars))) + return; + } + } + } else { + // Only one match needed for indexed arrays + for (i = 0; i < items.length; i++) { + if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i])) + return format; + } + } + } + + return format; + }; + + if (formatList && node) { + // Check each format in list + for (i = 0; i < formatList.length; i++) { + format = formatList[i]; + + // Name name, attributes, styles and classes + if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) { + // Match classes + if (classes = format.classes) { + for (i = 0; i < classes.length; i++) { + if (!dom.hasClass(node, classes[i])) + return; + } + } + + return format; + } + } + } + }; + + function match(name, vars, node) { + var startNode, i; + + function matchParents(node) { + // Find first node with similar format settings + node = dom.getParent(node, function(node) { + return !!matchNode(node, name, vars, true); + }); + + // Do an exact check on the similar format element + return matchNode(node, name, vars); + }; + + // Check specified node + if (node) + return matchParents(node); + + // Check pending formats + if (selection.isCollapsed()) { + for (i = pendingFormats.apply.length - 1; i >= 0; i--) { + if (pendingFormats.apply[i].name == name) + return true; + } + + for (i = pendingFormats.remove.length - 1; i >= 0; i--) { + if (pendingFormats.remove[i].name == name) + return false; + } + + return matchParents(selection.getNode()); + } + + // Check selected node + node = selection.getNode(); + if (matchParents(node)) + return TRUE; + + // Check start node if it's different + startNode = selection.getStart(); + if (startNode != node) { + if (matchParents(startNode)) + return TRUE; + } + + return FALSE; + }; + + function matchAll(names, vars) { + var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name; + + // If the selection is collapsed then check pending formats + if (selection.isCollapsed()) { + for (ni = 0; ni < names.length; ni++) { + // If the name is to be removed, then stop it from being added + for (i = pendingFormats.remove.length - 1; i >= 0; i--) { + name = names[ni]; + + if (pendingFormats.remove[i].name == name) { + checkedMap[name] = true; + break; + } + } + } + + // If the format is to be applied + for (i = pendingFormats.apply.length - 1; i >= 0; i--) { + for (ni = 0; ni < names.length; ni++) { + name = names[ni]; + + if (!checkedMap[name] && pendingFormats.apply[i].name == name) { + checkedMap[name] = true; + matchedFormatNames.push(name); + } + } + } + } + + // Check start of selection for formats + startElement = selection.getStart(); + dom.getParent(startElement, function(node) { + var i, name; + + for (i = 0; i < names.length; i++) { + name = names[i]; + + if (!checkedMap[name] && matchNode(node, name, vars)) { + checkedMap[name] = true; + matchedFormatNames.push(name); + } + } + }); + + return matchedFormatNames; + }; + + function canApply(name) { + var formatList = get(name), startNode, parents, i, x, selector; + + if (formatList) { + startNode = selection.getStart(); + parents = getParents(startNode); + + for (x = formatList.length - 1; x >= 0; x--) { + selector = formatList[x].selector; + + // Format is not selector based, then always return TRUE + if (!selector) + return TRUE; + + for (i = parents.length - 1; i >= 0; i--) { + if (dom.is(parents[i], selector)) + return TRUE; + } + } + } + + return FALSE; + }; + + // Expose to public + tinymce.extend(this, { + get : get, + register : register, + apply : apply, + remove : remove, + toggle : toggle, + match : match, + matchAll : matchAll, + matchNode : matchNode, + canApply : canApply + }); + + // Private functions + + function matchName(node, format) { + // Check for inline match + if (isEq(node, format.inline)) + return TRUE; + + // Check for block match + if (isEq(node, format.block)) + return TRUE; + + // Check for selector match + if (format.selector) + return dom.is(node, format.selector); + }; + + function isEq(str1, str2) { + str1 = str1 || ''; + str2 = str2 || ''; + + str1 = '' + (str1.nodeName || str1); + str2 = '' + (str2.nodeName || str2); + + return str1.toLowerCase() == str2.toLowerCase(); + }; + + function getStyle(node, name) { + var styleVal = dom.getStyle(node, name); + + // Force the format to hex + if (name == 'color' || name == 'backgroundColor') + styleVal = dom.toHex(styleVal); + + // Opera will return bold as 700 + if (name == 'fontWeight' && styleVal == 700) + styleVal = 'bold'; + + return '' + styleVal; + }; + + function replaceVars(value, vars) { + if (typeof(value) != "string") + value = value(vars); + else if (vars) { + value = value.replace(/%(\w+)/g, function(str, name) { + return vars[name] || str; + }); + } + + return value; + }; + + function isWhiteSpaceNode(node) { + return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue); + }; + + function wrap(node, name, attrs) { + var wrapper = dom.create(name, attrs); + + node.parentNode.insertBefore(wrapper, node); + wrapper.appendChild(node); + + return wrapper; + }; + + function expandRng(rng, format, remove) { + var startContainer = rng.startContainer, + startOffset = rng.startOffset, + endContainer = rng.endContainer, + endOffset = rng.endOffset, sibling, lastIdx, leaf; + + // This function walks up the tree if there is no siblings before/after the node + function findParentContainer(container, child_name, sibling_name, root) { + var parent, child; + + root = root || dom.getRoot(); + + for (;;) { + // Check if we can move up are we at root level or body level + parent = container.parentNode; + + // Stop expanding on block elements or root depending on format + if (parent == root || (!format[0].block_expand && isBlock(parent))) + return container; + + for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) { + if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) + return container; + + if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) + return container; + } + + container = container.parentNode; + } + + return container; + }; + + // This function walks down the tree to find the leaf at the selection. + // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node. + function findLeaf(node, offset) { + if (offset === undefined) + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + while (node && node.hasChildNodes()) { + node = node.childNodes[offset]; + if (node) + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + return { node: node, offset: offset }; + } + + // If index based start position then resolve it + if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) { + lastIdx = startContainer.childNodes.length - 1; + startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset]; + + if (startContainer.nodeType == 3) + startOffset = 0; + } + + // If index based end position then resolve it + if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) { + lastIdx = endContainer.childNodes.length - 1; + endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1]; + + if (endContainer.nodeType == 3) + endOffset = endContainer.nodeValue.length; + } + + // Exclude bookmark nodes if possible + if (isBookmarkNode(startContainer.parentNode)) + startContainer = startContainer.parentNode; + + if (isBookmarkNode(startContainer)) + startContainer = startContainer.nextSibling || startContainer; + + if (isBookmarkNode(endContainer.parentNode)) { + endOffset = dom.nodeIndex(endContainer); + endContainer = endContainer.parentNode; + } + + if (isBookmarkNode(endContainer) && endContainer.previousSibling) { + endContainer = endContainer.previousSibling; + endOffset = endContainer.length; + } + + if (format[0].inline) { + // Avoid applying formatting to a trailing space. + leaf = findLeaf(endContainer, endOffset); + if (leaf.node) { + while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) + leaf = findLeaf(leaf.node.previousSibling); + + if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && + leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { + + if (leaf.offset > 1) { + endContainer = leaf.node; + endContainer.splitText(leaf.offset - 1); + } else if (leaf.node.previousSibling) { + endContainer = leaf.node.previousSibling; + } + } + } + } + + // Move start/end point up the tree if the leaves are sharp and if we are in different containers + // Example * becomes !: !

    *texttext*

    ! + // This will reduce the number of wrapper elements that needs to be created + // Move start point up the tree + if (format[0].inline || format[0].block_expand) { + startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling'); + endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling'); + } + + // Expand start/end container to matching selector + if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) { + function findSelectorEndPoint(container, sibling_name) { + var parents, i, y; + + if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name]) + container = container[sibling_name]; + + parents = getParents(container); + for (i = 0; i < parents.length; i++) { + for (y = 0; y < format.length; y++) { + if (dom.is(parents[i], format[y].selector)) + return parents[i]; + } + } + + return container; + }; + + // Find new startContainer/endContainer if there is better one + startContainer = findSelectorEndPoint(startContainer, 'previousSibling'); + endContainer = findSelectorEndPoint(endContainer, 'nextSibling'); + } + + // Expand start/end container to matching block element or text node + if (format[0].block || format[0].selector) { + function findBlockEndPoint(container, sibling_name, sibling_name2) { + var node; + + // Expand to block of similar type + if (!format[0].wrapper) + node = dom.getParent(container, format[0].block); + + // Expand to first wrappable block element or any block element + if (!node) + node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock); + + // Exclude inner lists from wrapping + if (node && format[0].wrapper) + node = getParents(node, 'ul,ol').reverse()[0] || node; + + // Didn't find a block element look for first/last wrappable element + if (!node) { + node = container; + + while (node[sibling_name] && !isBlock(node[sibling_name])) { + node = node[sibling_name]; + + // Break on BR but include it will be removed later on + // we can't remove it now since we need to check if it can be wrapped + if (isEq(node, 'br')) + break; + } + } + + return node || container; + }; + + // Find new startContainer/endContainer if there is better one + startContainer = findBlockEndPoint(startContainer, 'previousSibling'); + endContainer = findBlockEndPoint(endContainer, 'nextSibling'); + + // Non block element then try to expand up the leaf + if (format[0].block) { + if (!isBlock(startContainer)) + startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling'); + + if (!isBlock(endContainer)) + endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling'); + } + } + + // Setup index for startContainer + if (startContainer.nodeType == 1) { + startOffset = nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + + // Setup index for endContainer + if (endContainer.nodeType == 1) { + endOffset = nodeIndex(endContainer) + 1; + endContainer = endContainer.parentNode; + } + + // Return new range like object + return { + startContainer : startContainer, + startOffset : startOffset, + endContainer : endContainer, + endOffset : endOffset + }; + } + + function removeFormat(format, vars, node, compare_node) { + var i, attrs, stylesModified; + + // Check if node matches format + if (!matchName(node, format)) + return FALSE; + + // Should we compare with format attribs and styles + if (format.remove != 'all') { + // Remove styles + each(format.styles, function(value, name) { + value = replaceVars(value, vars); + + // Indexed array + if (typeof(name) === 'number') { + name = value; + compare_node = 0; + } + + if (!compare_node || isEq(getStyle(compare_node, name), value)) + dom.setStyle(node, name, ''); + + stylesModified = 1; + }); + + // Remove style attribute if it's empty + if (stylesModified && dom.getAttrib(node, 'style') == '') { + node.removeAttribute('style'); + node.removeAttribute('_mce_style'); + } + + // Remove attributes + each(format.attributes, function(value, name) { + var valueOut; + + value = replaceVars(value, vars); + + // Indexed array + if (typeof(name) === 'number') { + name = value; + compare_node = 0; + } + + if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) { + // Keep internal classes + if (name == 'class') { + value = dom.getAttrib(node, name); + if (value) { + // Build new class value where everything is removed except the internal prefixed classes + valueOut = ''; + each(value.split(/\s+/), function(cls) { + if (/mce\w+/.test(cls)) + valueOut += (valueOut ? ' ' : '') + cls; + }); + + // We got some internal classes left + if (valueOut) { + dom.setAttrib(node, name, valueOut); + return; + } + } + } + + // IE6 has a bug where the attribute doesn't get removed correctly + if (name == "class") + node.removeAttribute('className'); + + // Remove mce prefixed attributes + if (MCE_ATTR_RE.test(name)) + node.removeAttribute('_mce_' + name); + + node.removeAttribute(name); + } + }); + + // Remove classes + each(format.classes, function(value) { + value = replaceVars(value, vars); + + if (!compare_node || dom.hasClass(compare_node, value)) + dom.removeClass(node, value); + }); + + // Check for non internal attributes + attrs = dom.getAttribs(node); + for (i = 0; i < attrs.length; i++) { + if (attrs[i].nodeName.indexOf('_') !== 0) + return FALSE; + } + } + + // Remove the inline child if it's empty for example or + if (format.remove != 'none') { + removeNode(node, format); + return TRUE; + } + }; + + function removeNode(node, format) { + var parentNode = node.parentNode, rootBlockElm; + + if (format.block) { + if (!forcedRootBlock) { + function find(node, next, inc) { + node = getNonWhiteSpaceSibling(node, next, inc); + + return !node || (node.nodeName == 'BR' || isBlock(node)); + }; + + // Append BR elements if needed before we remove the block + if (isBlock(node) && !isBlock(parentNode)) { + if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1)) + node.insertBefore(dom.create('br'), node.firstChild); + + if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1)) + node.appendChild(dom.create('br')); + } + } else { + // Wrap the block in a forcedRootBlock if we are at the root of document + if (parentNode == dom.getRoot()) { + if (!format.list_block || !isEq(node, format.list_block)) { + each(tinymce.grep(node.childNodes), function(node) { + if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) { + if (!rootBlockElm) + rootBlockElm = wrap(node, forcedRootBlock); + else + rootBlockElm.appendChild(node); + } else + rootBlockElm = 0; + }); + } + } + } + } + + // Never remove nodes that isn't the specified inline element if a selector is specified too + if (format.selector && format.inline && !isEq(format.inline, node)) + return; + + dom.remove(node, 1); + }; + + function getNonWhiteSpaceSibling(node, next, inc) { + if (node) { + next = next ? 'nextSibling' : 'previousSibling'; + + for (node = inc ? node : node[next]; node; node = node[next]) { + if (node.nodeType == 1 || !isWhiteSpaceNode(node)) + return node; + } + } + }; + + function isBookmarkNode(node) { + return node && node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark'; + }; + + function mergeSiblings(prev, next) { + var marker, sibling, tmpSibling; + + function compareElements(node1, node2) { + // Not the same name + if (node1.nodeName != node2.nodeName) + return FALSE; + + function getAttribs(node) { + var attribs = {}; + + each(dom.getAttribs(node), function(attr) { + var name = attr.nodeName.toLowerCase(); + + // Don't compare internal attributes or style + if (name.indexOf('_') !== 0 && name !== 'style') + attribs[name] = dom.getAttrib(node, name); + }); + + return attribs; + }; + + function compareObjects(obj1, obj2) { + var value, name; + + for (name in obj1) { + // Obj1 has item obj2 doesn't have + if (obj1.hasOwnProperty(name)) { + value = obj2[name]; + + // Obj2 doesn't have obj1 item + if (value === undefined) + return FALSE; + + // Obj2 item has a different value + if (obj1[name] != value) + return FALSE; + + // Delete similar value + delete obj2[name]; + } + } + + // Check if obj 2 has something obj 1 doesn't have + for (name in obj2) { + // Obj2 has item obj1 doesn't have + if (obj2.hasOwnProperty(name)) + return FALSE; + } + + return TRUE; + }; + + // Attribs are not the same + if (!compareObjects(getAttribs(node1), getAttribs(node2))) + return FALSE; + + // Styles are not the same + if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) + return FALSE; + + return TRUE; + }; + + // Check if next/prev exists and that they are elements + if (prev && next) { + function findElementSibling(node, sibling_name) { + for (sibling = node; sibling; sibling = sibling[sibling_name]) { + if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) + return node; + + if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) + return sibling; + } + + return node; + }; + + // If previous sibling is empty then jump over it + prev = findElementSibling(prev, 'previousSibling'); + next = findElementSibling(next, 'nextSibling'); + + // Compare next and previous nodes + if (compareElements(prev, next)) { + // Append nodes between + for (sibling = prev.nextSibling; sibling && sibling != next;) { + tmpSibling = sibling; + sibling = sibling.nextSibling; + prev.appendChild(tmpSibling); + } + + // Remove next node + dom.remove(next); + + // Move children into prev node + each(tinymce.grep(next.childNodes), function(node) { + prev.appendChild(node); + }); + + return prev; + } + } + + return next; + }; + + function isTextBlock(name) { + return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name); + }; + + function getContainer(rng, start) { + var container, offset, lastIdx; + + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + + if (container.nodeType == 1) { + lastIdx = container.childNodes.length - 1; + + if (!start && offset) + offset--; + + container = container.childNodes[offset > lastIdx ? lastIdx : offset]; + } + + return container; + }; + + function performCaretAction(type, name, vars) { + var i, currentPendingFormats = pendingFormats[type], + otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply']; + + function hasPending() { + return pendingFormats.apply.length || pendingFormats.remove.length; + }; + + function resetPending() { + pendingFormats.apply = []; + pendingFormats.remove = []; + }; + + function perform(caret_node) { + // Apply pending formats + each(pendingFormats.apply.reverse(), function(item) { + apply(item.name, item.vars, caret_node); + + // Colored nodes should be underlined so that the color of the underline matches the text color. + if (item.name === 'forecolor' && item.vars.value) + processUnderlineAndColor(caret_node.parentNode); + }); + + // Remove pending formats + each(pendingFormats.remove.reverse(), function(item) { + remove(item.name, item.vars, caret_node); + }); + + dom.remove(caret_node, 1); + resetPending(); + }; + + // Check if it already exists then ignore it + for (i = currentPendingFormats.length - 1; i >= 0; i--) { + if (currentPendingFormats[i].name == name) + return; + } + + currentPendingFormats.push({name : name, vars : vars}); + + // Check if it's in the other type, then remove it + for (i = otherPendingFormats.length - 1; i >= 0; i--) { + if (otherPendingFormats[i].name == name) + otherPendingFormats.splice(i, 1); + } + + // Pending apply or remove formats + if (hasPending()) { + ed.getDoc().execCommand('FontName', false, 'mceinline'); + pendingFormats.lastRng = selection.getRng(); + + // IE will convert the current word + each(dom.select('font,span'), function(node) { + var bookmark; + + if (isCaretNode(node)) { + bookmark = selection.getBookmark(); + perform(node); + selection.moveToBookmark(bookmark); + ed.nodeChanged(); + } + }); + + // Only register listeners once if we need to + if (!pendingFormats.isListening && hasPending()) { + pendingFormats.isListening = true; + + each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) { + ed[event].addToTop(function(ed, e) { + // Do we have pending formats and is the selection moved has moved + if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) { + each(dom.select('font,span'), function(node) { + var textNode, rng; + + // Look for marker + if (isCaretNode(node)) { + textNode = node.firstChild; + + if (textNode) { + perform(node); + + rng = dom.createRng(); + rng.setStart(textNode, textNode.nodeValue.length); + rng.setEnd(textNode, textNode.nodeValue.length); + selection.setRng(rng); + ed.nodeChanged(); + } else + dom.remove(node); + } + }); + + // Always unbind and clear pending styles on keyup + if (e.type == 'keyup' || e.type == 'mouseup') + resetPending(); + } + }); + }); + } + } + }; + }; +})(tinymce); + +tinymce.onAddEditor.add(function(tinymce, ed) { + var filters, fontSizes, dom, settings = ed.settings; + + if (settings.inline_styles) { + fontSizes = tinymce.explode(settings.font_size_style_values); + + function replaceWithSpan(node, styles) { + tinymce.each(styles, function(value, name) { + if (value) + dom.setStyle(node, name, value); + }); + + dom.rename(node, 'span'); + }; + + filters = { + font : function(dom, node) { + replaceWithSpan(node, { + backgroundColor : node.style.backgroundColor, + color : node.color, + fontFamily : node.face, + fontSize : fontSizes[parseInt(node.size) - 1] + }); + }, + + u : function(dom, node) { + replaceWithSpan(node, { + textDecoration : 'underline' + }); + }, + + strike : function(dom, node) { + replaceWithSpan(node, { + textDecoration : 'line-through' + }); + } + }; + + function convert(editor, params) { + dom = editor.dom; + + if (settings.convert_fonts_to_spans) { + tinymce.each(dom.select('font,u,strike', params.node), function(node) { + filters[node.nodeName.toLowerCase()](ed.dom, node); + }); + } + }; + + ed.onPreProcess.add(convert); + + ed.onInit.add(function() { + ed.selection.onSetContent.add(convert); + }); + } +}); + diff --git a/tools/tiny_mce/utils/editable_selects.js b/tools/tiny_mce/utils/editable_selects.js new file mode 100644 index 00000000..6cf1b166 --- /dev/null +++ b/tools/tiny_mce/utils/editable_selects.js @@ -0,0 +1,70 @@ +/** + * editable_selects.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +var TinyMCE_EditableSelects = { + editSelectElm : null, + + init : function() { + var nl = document.getElementsByTagName("select"), i, d = document, o; + + for (i=0; i'; + h += ' '; + + return h; +} + +function updateColor(img_id, form_element_id) { + document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value; +} + +function setBrowserDisabled(id, state) { + var img = document.getElementById(id); + var lnk = document.getElementById(id + "_link"); + + if (lnk) { + if (state) { + lnk.setAttribute("realhref", lnk.getAttribute("href")); + lnk.removeAttribute("href"); + tinyMCEPopup.dom.addClass(img, 'disabled'); + } else { + if (lnk.getAttribute("realhref")) + lnk.setAttribute("href", lnk.getAttribute("realhref")); + + tinyMCEPopup.dom.removeClass(img, 'disabled'); + } + } +} + +function getBrowserHTML(id, target_form_element, type, prefix) { + var option = prefix + "_" + type + "_browser_callback", cb, html; + + cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback")); + + if (!cb) + return ""; + + html = ""; + html += ''; + html += ' '; + + return html; +} + +function openBrowser(img_id, target_form_element, type, option) { + var img = document.getElementById(img_id); + + if (img.className != "mceButtonDisabled") + tinyMCEPopup.openBrowser(target_form_element, type, option); +} + +function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { + if (!form_obj || !form_obj.elements[field_name]) + return; + if (!value) + value = ""; + + var sel = form_obj.elements[field_name]; + + var found = false; + for (var i=0; i parseInt(v)) + st = this.mark(f, n); + } + } + + return st; + }, + + hasClass : function(n, c, d) { + return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className); + }, + + getNum : function(n, c) { + c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0]; + c = c.replace(/[^0-9]/g, ''); + + return c; + }, + + addClass : function(n, c, b) { + var o = this.removeClass(n, c); + n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c; + }, + + removeClass : function(n, c) { + c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' '); + return n.className = c != ' ' ? c : ''; + }, + + tags : function(f, s) { + return f.getElementsByTagName(s); + }, + + mark : function(f, n) { + var s = this.settings; + + this.addClass(n, s.invalid_cls); + n.setAttribute('aria-invalid', 'true'); + this.markLabels(f, n, s.invalid_cls); + + return false; + }, + + markLabels : function(f, n, ic) { + var nl, i; + + nl = this.tags(f, "label"); + for (i=0; i + * @copyright 2016 WodzAAC + * @version 0.0.1 + * @link http://myaac.info + */ + +// we need some functions +require('../common.php'); +require(LIBS . 'validator.php'); +require(SYSTEM . 'functions.php'); +require(SYSTEM . 'init.php'); + +echo ''; +if(isset($_GET['account'])) +{ + $account = trim($_GET['account']); + $tmp = strtoupper($account); + + $error = ''; + if(!check_account_name($tmp, $error)) + error_($error); + + $_account = new OTS_Account(); + $_account->find($tmp); + if($_account->isLoaded()) + error_('Account with this name already exist.'); + + success_('Good account name ( ' . $account . ' ).'); +} +else if(isset($_GET['email'])) +{ + $email = trim($_GET['email']); + if(strlen($email) >= 255) + error_('E-mail is too long (max. 255 chars).'); + + if(!Validator::email($email)) + error_('Invalid e-mail format.'); + + if($config['account_mail_unique']) + { + $account = new OTS_Account(); + $account->findByEMail($email); + if($account->isLoaded()) + error_('Account with this e-mail already exist.'); + } + + success_('Good e-mail.'); +} +else if(isset($_GET['name'])) +{ + $name = strtolower(stripslashes(trim($_GET['name']))); + $error = ''; + if(!check_name($name, $error)) + error_($error); + + // check if this name wasn't namelocked + if(tableExist('player_namelocks') && fieldExist('name', 'player_namelocks')) { + $query = $db->query('SELECT `player_id` FROM `player_namelocks` WHERE name = ' . $db->quote($name)); + if($query->rowCount() > 0) + error_('Character with this name has been namelocked.'); + } + + $player = new OTS_Player(); + $player->find($name); + if($player->isLoaded()) + error_('Player with this name already exist.'); + + success_('Good. Your name will be:
    ' . ucwords($name) . ''); +} +else + error_('Error: no input specified.'); + +/** + * Output message & exit. + * + * @param string $desc Description + */ +function success_($desc) { + echo '' . $desc . ''; + exit(); +} +function error_($desc) { + echo '' . $desc . ''; + exit(); +} + +?> \ No newline at end of file