aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Lœuillet <nicolas@loeuillet.org>2015-01-19 21:27:22 +0100
committerNicolas Lœuillet <nicolas@loeuillet.org>2015-01-19 21:27:22 +0100
commitc78c1a3f08815aab99752026ccdf1dcf63cf43c1 (patch)
tree99fb545cda7c0850e047aaf6d0060330236fb6e7
parent9e7f6caf03b90076ba7b448aa7f11d40f584045f (diff)
downloadwallabag-c78c1a3f08815aab99752026ccdf1dcf63cf43c1.tar.gz
wallabag-c78c1a3f08815aab99752026ccdf1dcf63cf43c1.tar.zst
wallabag-c78c1a3f08815aab99752026ccdf1dcf63cf43c1.zip
@fivefilters via composer
-rw-r--r--composer.json7
-rw-r--r--composer.lock35
-rwxr-xr-xinc/3rdparty/config.php461
-rw-r--r--inc/3rdparty/libraries/Zend/Cache.php250
-rw-r--r--inc/3rdparty/libraries/Zend/Cache/Backend.php290
-rw-r--r--inc/3rdparty/libraries/Zend/Cache/Backend/ExtendedInterface.php127
-rw-r--r--inc/3rdparty/libraries/Zend/Cache/Backend/File.php1034
-rw-r--r--inc/3rdparty/libraries/Zend/Cache/Backend/Interface.php99
-rw-r--r--inc/3rdparty/libraries/Zend/Cache/Core.php765
-rw-r--r--inc/3rdparty/libraries/Zend/Cache/Exception.php32
-rw-r--r--inc/3rdparty/libraries/Zend/Exception.php96
-rw-r--r--inc/3rdparty/libraries/content-extractor/ContentExtractor.php727
-rw-r--r--inc/3rdparty/libraries/content-extractor/SiteConfig.php343
-rwxr-xr-xinc/3rdparty/libraries/feedwriter/FeedItem.php204
-rwxr-xr-xinc/3rdparty/libraries/feedwriter/FeedWriter.php453
-rw-r--r--inc/3rdparty/libraries/html5/Data.php114
-rw-r--r--inc/3rdparty/libraries/html5/InputStream.php284
-rw-r--r--inc/3rdparty/libraries/html5/Parser.php36
-rw-r--r--inc/3rdparty/libraries/html5/Tokenizer.php2422
-rw-r--r--inc/3rdparty/libraries/html5/TreeBuilder.php3849
-rw-r--r--inc/3rdparty/libraries/html5/named-character-references.ser1
-rw-r--r--inc/3rdparty/libraries/humble-http-agent/CookieJar.php403
-rw-r--r--inc/3rdparty/libraries/humble-http-agent/HumbleHttpAgent.php810
-rw-r--r--inc/3rdparty/libraries/humble-http-agent/RollingCurl.php402
-rw-r--r--inc/3rdparty/libraries/humble-http-agent/SimplePie_HumbleHttpAgent.php78
-rw-r--r--inc/3rdparty/libraries/language-detect/LanguageDetect.php1693
-rw-r--r--inc/3rdparty/libraries/language-detect/LanguageDetect/Exception.php57
-rw-r--r--inc/3rdparty/libraries/language-detect/LanguageDetect/ISO639.php339
-rw-r--r--inc/3rdparty/libraries/language-detect/LanguageDetect/Parser.php347
-rw-r--r--inc/3rdparty/libraries/language-detect/lang.dat1
-rw-r--r--inc/3rdparty/libraries/language-detect/unicode_blocks.dat1
-rwxr-xr-xinc/3rdparty/makefulltextfeed.php912
-rwxr-xr-xinc/3rdparty/makefulltextfeedHelpers.php386
-rw-r--r--inc/3rdparty/site_config/README.txt6
-rw-r--r--inc/3rdparty/site_config/custom/bfmtv.com.txt6
-rw-r--r--inc/3rdparty/site_config/custom/blogs.faz.net.txt45
-rwxr-xr-xinc/3rdparty/site_config/custom/dailymotion.com.txt12
-rw-r--r--inc/3rdparty/site_config/custom/dilbert.com.txt4
-rw-r--r--inc/3rdparty/site_config/custom/index.php3
-rw-r--r--inc/3rdparty/site_config/custom/interviewmagazine.com.txt4
-rw-r--r--inc/3rdparty/site_config/custom/mobile.lemondeinformatique.fr.txt6
-rwxr-xr-xinc/3rdparty/site_config/custom/stackexchange.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/custom/stackoverflow.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/custom/ted.com.txt11
-rw-r--r--inc/3rdparty/site_config/custom/tldp.org.txt6
-rw-r--r--inc/3rdparty/site_config/index.php2
-rw-r--r--inc/3rdparty/site_config/standard/.about.com.txt14
-rw-r--r--inc/3rdparty/site_config/standard/.wikipedia.org.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/24ways.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/36kr.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/37signals.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/3quarksdaily.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/3voor12.vpro.nl.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/43folders.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/500px.com.txt27
-rwxr-xr-xinc/3rdparty/site_config/standard/512pixels.net.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/5by5.tv.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/7newsbelize.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/944.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/README.md40
-rwxr-xr-xinc/3rdparty/site_config/standard/aachener-nachrichten.de.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/aachener-zeitung.de.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/abc.es.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/abc.net.au.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/abcnews.go.com.txt27
-rwxr-xr-xinc/3rdparty/site_config/standard/accesstoinsight.org.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/acidcow.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/acquia.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/acroswing.fr.txt5
-rw-r--r--inc/3rdparty/site_config/standard/adme.ru.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/aftenposten.no.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/aftonbladet.se.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/aht.seriouseats.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/albayan.ae.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/alex.mullr.net.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/alexduner.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/alexduner.squarespace.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/alistapart.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/aljazeera.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/allrecipes.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/allthingsd.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/allyou.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/alphabeta.argaam.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/alriyadh.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/alseraj.net.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/alt1040.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/alternet.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/altfoto.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/alumni.stanford.edu.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/amandala.com.bz.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/amazon.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/americandrink.net.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/americascup.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/americastestkitchenfeed.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/amptoons.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/anandtech.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/androidpolice.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/andyrutledge.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/annatravelling.wordpress.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/apotheke-adhoc.de.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/applature.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/apple.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/appledaily.com.tw.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/appleinsider.com.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/appleweblog.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/archdaily.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/archiveofourown.org.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/arstechnica.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/articles.boston.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/articles.courant.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/articles.washingtonpost.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/asahi.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/ascarter.net.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/astronews.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/asymco.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/autoblog.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/autocar.co.uk.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/avclub.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/baltimoresun.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/baseballprospectus.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/basicthinking.de.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/bb.is.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/bbc.co.uk.txt55
-rwxr-xr-xinc/3rdparty/site_config/standard/bbc.com.txt60
-rwxr-xr-xinc/3rdparty/site_config/standard/bbcgoodfood.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/benoitmaison.org.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/berlingske.dk.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/bernama.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/betabeat.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/betanews.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/biography.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/bit-tech.net.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/bitelia.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/bizjournals.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/bjango.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/bleacherreport.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.arsln.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.asmartbear.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.cloudflare.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.fefe.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.instagram.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.instapaper.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.jaysalvat.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.kaelig.fr.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.naver.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.pchome.net.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.pinboard.in.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.renren.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.sina.com.cn.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.spu.edu.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/blog.wells.ee.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.aljazeera.net.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.faz.net.txt45
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.forbes.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.hbr.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.msdn.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.reuters.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.scientificamerican.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.smithsonianmag.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/blogs.technet.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/bluetouff.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/boagworld.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/boingboing.net.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/boldizsar.palotas.eu.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/book.douban.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/bookforum.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/borderhouseblog.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/bostonglobe.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/bostonreview.net.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/boundlessline.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/bowdoinorient.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/brainfacts.org.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/brandeins.de.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/brandingstrategyinsider.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/brasil.elpais.com.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/brettterpstra.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/brisbanetimes.com.au.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/brookings.edu.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/brooksreview.net.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/bt.no.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/buffed.de.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/buquad.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/business2community.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/businessinsider.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/businessnews.com.tn.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/businessweek.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/buzzfeed.com.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/bygonebureau.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/cable.co.uk.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/canonrumors.com.txt28
-rwxr-xr-xinc/3rdparty/site_config/standard/cardboardconnection.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/carpeaqua.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/cars.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/catb.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/cbc.ca.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/cbn.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/cbsnews.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/cedarrepublican.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/chareidi.org.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/chinamining.org.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/chomsky.info.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/chrisltd.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/christianitytoday.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/christianpf.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/christies.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/chrome.google.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/chronicle.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/ciaosamin.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/cicero.de.txt33
-rwxr-xr-xinc/3rdparty/site_config/standard/ciperchile.cl.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/cjr.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/classyllama.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/clientk.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/clubic.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/cmswire.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/cn.engadget.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/cn.reuters.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/cnet.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/cnn.com.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/cnnsi.com.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/code.activestate.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/code.fivefilters.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/code.google.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/codeproject.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/codinghorror.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/collegehumor.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/communities-dominate.blogs.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/community.service-now.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/computer.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/computerbase.de.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/computerworld.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/computerworld.dk.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/contemporist.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/conversaciones.nokia.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/cooper.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/core77.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/counterpunch.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/crazybutable.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/crimemagazine.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/crimethinc.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/crn.de.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/csmonitor.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/csnbayarea.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/csnphilly.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/css-tricks.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/cucharasonica.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/cw.com.tw.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/da.feedsportal.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/dagogtid.no.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/dailydot.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/dailykos.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/dailymail.co.uk.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/dailystar.com.lb.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/danleech.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/dansdata.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/dantri.com.vn.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/daringfireball.net.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/datanami.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/dcurt.is.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/defomicron.net.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/delong.typepad.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/democracynow.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/derstandard.at.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/designsponge.com.txt31
-rwxr-xr-xinc/3rdparty/site_config/standard/designtagebuch.de.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/desitvforum.net.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/details.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt29
-rwxr-xr-xinc/3rdparty/site_config/standard/developers.facebook.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/devlinsangle.blogspot.co.at.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/dictionary.reference.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/diepresse.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/digiphoto.techbang.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/digital-photography-school.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/digitalspy.co.uk.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/dilbert.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/dinamalar.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/dn.pt.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/dn.se.txt28
-rwxr-xr-xinc/3rdparty/site_config/standard/dobreprogramy.pl.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/doctac.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/domusweb.it.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/dou.ua.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/douban.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/dpreview.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/dr.dk.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/dramasonline.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/drdobbs.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/drive2.ru.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/dropbox.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/drupal.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/dukebasketballreport.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/dushumashang.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/dvice.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/eamesinerudition.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/eandt.theiet.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/eastoftheweb.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/ebay.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ecetia.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/echo-online.de.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/econlog.econlib.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/economia.estadao.com.br.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/economist.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/edge-online.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/edge.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/edition.channel5belize.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/edition.cnn.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/eetimes.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/ekultura.hu.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/elance.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/elderscrollsonline.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/elektroniknet.de.txt27
-rwxr-xr-xinc/3rdparty/site_config/standard/elmalpensante.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/elpais.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/emaratalyoum.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/en.espnf1.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/engadget.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/engineering.tumblr.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/english.aljazeera.net.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/enikos.gr.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/entertainment.timesonline.co.uk.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/ericsuh.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/es.hu.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/escapistmagazine.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/espn.go.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/esquire.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/essentialpublicradio.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/etc.se.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/eternabuenosaires.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/eurogamer.net.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/evo.co.uk.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/expressen.se.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/extracine.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/f1actual.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/facebook.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/facta.co.jp.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/falter.at.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/fanfiction.net.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/fastcompany.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/faz.net.txt101
-rwxr-xr-xinc/3rdparty/site_config/standard/fertigung.de.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/fictionpress.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ficwad.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/finance.yahoo.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/findtheswagger.tumblr.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/firstthings.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/fivechapters.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/fivefilters.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/fivethirtyeight.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/flyingmachinestudios.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/fm4.orf.at.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/fnal.gov.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/focus.de.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/folklore.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/food.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/fool.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/forbes.com.txt27
-rwxr-xr-xinc/3rdparty/site_config/standard/foreignaffairs.com.txt34
-rwxr-xr-xinc/3rdparty/site_config/standard/foreignpolicy.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/forsvaret.no.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/foxnews.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/freelancer.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/freytag-film.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/fria.nu.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/friatidningen.se.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/friendskorner.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/ft.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ftchinese.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/ftd.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/fubiz.net.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/futurezone.at.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/gamasutra.com.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/gameblog.fr.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/gamechurch.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/gamer.no.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/gamereactor.no.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/garythink.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/gasteroprod.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/gatopardo.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/gawker.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/geeksofdoom.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/geenstijl.nl.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/getnews.jp.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/giantbomb.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/giga.de.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/gigaom.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/gihyo.jp.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/gist.github.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/givemesomethingtoread.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/gizmodo.co.uk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/gizmodo.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/gizmodo.uol.com.br.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/gizmologia.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/gizmovil.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/global.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/globalissues.org.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/globoesporte.globo.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/gloswielkopolski.pl.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/goal.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/golem.de.txt34
-rwxr-xr-xinc/3rdparty/site_config/standard/good.is.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/goodfil.ms.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/gossip-tv.gr.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/goteborgsfria.se.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/gothamist.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/gotomanager.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/gov.ky.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/gp.se.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/gq.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/grantland.com.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/greatergreaterwashington.org.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/groups.drupal.org.txt5
-rw-r--r--inc/3rdparty/site_config/standard/guardian.co.uk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/gulfnews.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/guokr.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/haberler.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/habrahabr.ru.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/hackmake.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/halo.bungie.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/hammers.theoffside.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/handelsblatt.com.txt31
-rwxr-xr-xinc/3rdparty/site_config/standard/hanselman.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/hardware.fr.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/hardware.no.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/hbr.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/headrush.typepad.com.txt14
-rw-r--r--inc/3rdparty/site_config/standard/healthland.time.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/heise-online.mobi.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/heise.de.txt42
-rwxr-xr-xinc/3rdparty/site_config/standard/hemmings.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/heroturko.me.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/hespress.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/hiamag.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/highscalability.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/hiperpop.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/hiphopleeft.nl.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/historytoday.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/hmercer.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/hollywoodlife.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/hometheaterreview.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/hosted.ap.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/howtogeek.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/hs.fi.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/ht.ly.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/huffingtonpost.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/humantransit.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/hurriyet.com.tr.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/hvg.hu.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/hypebeast.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/icannabis.tumblr.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/idealog.co.nz.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/idlewords.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/igeneration.fr.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ignoredbydinosaurs.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/ilounge.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/ilyabirman.ru.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/inc.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/independent.co.uk.txt9
-rw-r--r--inc/3rdparty/site_config/standard/index.php3
-rwxr-xr-xinc/3rdparty/site_config/standard/indiatimes.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/inessential.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/info.abril.com.br.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/infoq.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/informador.com.mx.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/information.dk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/informationarchitects.net.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/informationclearinghouse.info.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/informit.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/infoworld.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/infzm.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/inhabitat.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/instagr.am.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/interest.co.nz.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/iolanguage.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/ipadclub.nl.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/ipadplanet.nl.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/iphoneclub.nl.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/iphonehacks.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/iplaysoft.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/isource.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/itavisen.no.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/itmedia.co.jp.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/itstactical.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/itunes.apple.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/itwire.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/itworld.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/izismile.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/jalopnik.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/jandan.net.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/jetzt.sueddeutsche.de.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/jjahnke.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/jobbank.gc.ca.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/joelonsoftware.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/jouire.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/joystiq.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/juedische-allgemeine.de.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/juppy.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/kachestvo.ru.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/kachiblog.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/kathimerini.gr.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/kenrockwell.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/kicker.de.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/kickstarter.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/kingarthurflour.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/kotaku.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/kottke.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/kumailplus.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/kumb.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/kwerfeldein.de.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/landetsfria.se.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/laphamsquarterly.org.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/laprensagrafica.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/laquadrature.net.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/lareviewofbooks.org.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/latimes.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/laughingsquid.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/leancrew.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/lefigaro.fr.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/lemonde.fr.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/lesnumeriques.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/letemps.ch.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/libcom.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/lifeandculture.fr.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/lifehacker.co.uk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/lifehacker.com.txt47
-rwxr-xr-xinc/3rdparty/site_config/standard/lifestyle.inquirer.net.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/lifeweek.com.cn.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/linkedin.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/livescience.com.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/longform.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/loopinsight.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/lostgarden.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/lovefm.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/lovetv.com.bz.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/lrb.co.uk.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/luminous-landscape.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/luxuo.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/m.bbc.co.uk.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/m.douban.com.txt13
-rw-r--r--inc/3rdparty/site_config/standard/m.guardian.co.uk.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/m.vanityfair.com.txt11
-rw-r--r--inc/3rdparty/site_config/standard/m00natic.github.io.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/mac4ever.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/macdrifter.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/macformat.techradar.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/macgeneration.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/macmagazine.com.br.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/macrumors.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/macstories.net.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/mactalk.com.au.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/mactechnews.de.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/macworld.com.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/mainichi.jp.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/mainpost.de.txt28
-rwxr-xr-xinc/3rdparty/site_config/standard/makeuseof.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/manager.co.th.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/marco.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/marksdailyapple.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/martinfowler.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/mashable.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/matt.might.net.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mattcutts.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/mbl.is.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/medialens.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/medium.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/megamp3.eu.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/menshealth.com.sg.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/menshealth.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/metafilter.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/mforum.cari.com.my.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/mikeash.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mikeindustries.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/minnesota.publicradio.org.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/minnpost.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mirrorfootball.co.uk.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/mises.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mlb.mlb.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/mlb.sbnation.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/mlssoccer.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/mmo-champion.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mnn.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/mno.hu.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/mobile.nytimes.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/mobile.slate.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mobileopportunity.blogspot.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/modernghana.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/money.cnn.com.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/monkeyzen.com.txt2
-rw-r--r--inc/3rdparty/site_config/standard/moo.nac.uci.edu.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/moonsault.de.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/moreintelligentlife.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/motherboard.vice.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/mothering.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/motherjones.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/motorfull.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/movie.douban.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/msdn.microsoft.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/msnbc.msn.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/myfoxatlanta.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/myfoxboston.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/myrecipes.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/narenji.ir.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/nasa.gov.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/nbweekly.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/neh.gov.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/neomoney.co.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/net-security.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/netmagazine.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/netzpolitik.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/newleftproject.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/newmatilda.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/newrepublic.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/news-gazette.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/news.cnet.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/news.detik.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/news.kanaloco.jp.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/news.mynavi.jp.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/news.orf.at.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/news.rambler.ru.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/news.techmeme.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/news.yahoo.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/news.ycombinator.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/news.zing.vn.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/news247.gr.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/newsbomb.gr.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/newsle.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/newsmill.se.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/newsunspun.org.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/newsweek.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/newswise.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/newyorker.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/next-gen.biz.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/nfl.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/ngm.nationalgeographic.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/nhk.or.jp.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/nintendoworldreport.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/nojesguiden.se.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/northumberlandview.ca.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/nosalty.hu.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/nplusonemag.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/npr.org.txt34
-rwxr-xr-xinc/3rdparty/site_config/standard/nybooks.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/nymag.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/nyteknik.se.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/nytimes.com.txt53
-rwxr-xr-xinc/3rdparty/site_config/standard/nzz.ch.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/observer.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/off.net.mk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/omaha.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/omiliya.org.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/on.net.mk.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/online.wsj.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/onlinewelten.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/onstartups.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/ontologicalgeek.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/opensource.org.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/openthemagazine.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/openwebx.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/orf.at.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/origo.hu.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/oschina.net.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/pakistantvdekho.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/pakmedia.tv.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/pandagon.net.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/pandodaily.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/panic.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/papodehomem.com.br.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/parislemon.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/parliament.uk.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/pastebin.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/pastepad.fivefilters.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/pathawks.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/pcast.me.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/pcmag.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/pcworld.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/penny-arcade.com.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/pentaxforums.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/philadelphiaeagles.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/philly.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/photo.tutsplus.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/php.net.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/physicstoday.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/pinterest.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/pitchfork.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/pittnews.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/pittsburgh.pirates.mlb.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/pittsburghlive.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/pittsburghmagazine.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/pittsburghpanthers.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/pittscriptblog.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/planetvita.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/playboy.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/plus.google.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/plzkthxbai.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/pogue.blogs.nytimes.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/politico.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/politifact.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/politiken.dk.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/polygon.com.txt34
-rwxr-xr-xinc/3rdparty/site_config/standard/popularmechanics.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/portertech.ca.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/positioningmag.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/post-gazette.com.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/posta.com.tr.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/prb.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/prog21.dadgum.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/prolost.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/propublica.org.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/prosa.dk.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/prospectmagazine.co.uk.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/protothema.gr.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/psychologytoday.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/publications.parliament.uk.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/publico.pt.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/purpleplanetmedia.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/qctimes.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/quantumdiaries.org.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/queerty.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/quepasa.cl.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/quora.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/racjonalista.pl.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/radar.oreilly.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/radionz.co.nz.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/randsinrepose.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/readability.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/readwriteweb.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/real.gr.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/recipe.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/red-hot-girls.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/reddit.com.txt21
-rwxr-xr-xinc/3rdparty/site_config/standard/redmondpie.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/redtape.msnbc.msn.com.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/reflets.info.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/renenekuda.cz.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/resume.se.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/retrieverweekly.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/reuters.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/revistapiaui.estadao.com.br.txt10
-rw-r--r--inc/3rdparty/site_config/standard/rezeptwelt.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/richardmuscat.wordpress.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ritemail.blogspot.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ritholtz.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/robertsspaceindustries.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/robots.thoughtbot.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/rockpapershotgun.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/rodrigo.sharpcube.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/rogerebert.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/rolfinjapan.nl.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/rollingstone.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/rottentomatoes.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/roughtype.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/roy.gbiv.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/rpgsite.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/rubysfera.pl.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/ruhlman.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/ruttloff.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/salon.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/salzburg.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/sanpedrosun.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/saveyourself.ca.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/sayidaty.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/sbnation.com.txt28
-rwxr-xr-xinc/3rdparty/site_config/standard/schneier.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/science.orf.at.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/scienceblogs.de.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/scienceticker.info.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/scientificamerican.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/scilogs.de.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/scotusblog.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/scraplab.net.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/scripting.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/sct.temple.edu.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/searchenginejournal.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/searchengineland.com.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/seattletransitblog.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/sebbo.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/select.yeeyan.org.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/seriouseats.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/sf.curbed.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/sf.eater.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/sfgate.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/sfweekly.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/shabayek.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/shawnblanc.net.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/shifteleven.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/siasat.pk.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/signalscv.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/simonwillison.net.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/singaporeanstocksinvestor.blogspot.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/singularityhub.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/sintagoulis.gr.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/sivers.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/skanesfria.se.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/slashfilm.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/slate.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/slice.seriouseats.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/slog.thestranger.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/smartinvestor.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/sme.sk.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/smithsonianmag.com.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/smokingapples.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/somethingawful.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/songshuhui.net.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/sourcebooks.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/spectator.co.uk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/spectrum.ieee.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/speirs.org.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/spiegel.de.txt75
-rwxr-xr-xinc/3rdparty/site_config/standard/spiked-online.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/spin.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/splatf.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/splitsider.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/sport.detik.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/sport.orf.at.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/sport365.fr.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/sports.espn.go.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/sports.yahoo.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/sportschau.de.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/sportsillustrated.cnn.com.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/sprengsatz.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/sqlite.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/squashed.tumblr.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/stackoverflow.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/stalbansreview.co.uk.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/standard.co.uk.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/staradvertiser.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/stephenfry.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/stlbeacon.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/stockholm.etc.se.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/stockholmsfria.nu.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/straightdope.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/streetsblog.net.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/stuff.co.nz.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/stumbleupon.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/subtraction.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/sueddeutsche.de.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/summify.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/suntimes.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/svd.se.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/svt.se.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/sydsvenskan.se.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/symmetrymagazine.org.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/sz-magazin.sueddeutsche.de.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/sz.de.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/tabletmag.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/tagesschau.de.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/tagesspiegel.de.txt60
-rwxr-xr-xinc/3rdparty/site_config/standard/tampabay.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/taptaptap.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/tasteofhome.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/taz.de.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/tbray.org.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/tcmanila.tk.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/tcng.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/tech.fortune.cnn.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/tech.gilt.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/tech.sina.com.cn.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/techcrunch.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/techdirt.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/techhive.com.txt18
-rwxr-xr-xinc/3rdparty/site_config/standard/techmeme.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/technicallyjordan.tumblr.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/technologizer.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/technologyreview.com.txt16
-rwxr-xr-xinc/3rdparty/site_config/standard/techpinions.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/techradar.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/telegraaf.nl.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/telegraph.co.uk.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/thanhnien.com.vn.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/the-magazine.org.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/theage.com.au.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/theamericanscholar.org.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/theappleblog.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/theatlantic.com.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/theatlanticcities.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/thebostonchannel.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/thebrowser.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/thecarton.net.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/thedaily.com.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/thedailybeast.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/thedailymash.co.uk.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/thedisneyblog.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/theeuropean-magazine.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/thefilmexperience.net.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/thegamedesignforum.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/theglobalmail.org.txt41
-rwxr-xr-xinc/3rdparty/site_config/standard/theglobeandmail.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/thegreatdiscontent.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/theguardian.com.txt24
-rwxr-xr-xinc/3rdparty/site_config/standard/theindychannel.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/themarker.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/themillions.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/themuseumofinnocence.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/thenation.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/thenetworkgarden.blogs.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/thenextgeneration.org.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/thenextweb.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/theoaklandpress.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/theonion.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/thepioneerwoman.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/theregister.co.uk.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/theroot.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/therumpus.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/thesiasat.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/thesimpledollar.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/thespoiler.co.uk.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/thespoof.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/thestranger.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/thestreet.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/thethaovanhoa.vn.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/theverge.com.txt53
-rwxr-xr-xinc/3rdparty/site_config/standard/theweek.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/thinkprogress.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/thisdaylive.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/thisiscolossal.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/thisismynext.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/tidbits.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/time.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/timeshighereducation.co.uk.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/tipb.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/tnr.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/tomdispatch.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/tomshardware.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/tomshardware.de.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/toolsandtoys.net.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/towerofthehand.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/tracks.ranea.org.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/trailer.web-view.net.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/trailerzone.de.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/traningslara.se.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/triblive.com.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/truthdig.com.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/tthfanfic.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/tthor.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/tuaw.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/tuckreview.com.txt6
-rw-r--r--inc/3rdparty/site_config/standard/tuhdo.github.io.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/tvtropes.org.txt20
-rwxr-xr-xinc/3rdparty/site_config/standard/twitter.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/uefa.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/uk.xbox360.ign.com.txt23
-rwxr-xr-xinc/3rdparty/site_config/standard/uni-watch.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/unwinnable.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/uppsalafria.se.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/urbandictionary.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/usatoday.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/usccb.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/useit.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/usfirst.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/utdailybeacon.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/ux.artu.tv.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/uzivatelsketestovani.cz.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/vanityfair.com.txt33
-rwxr-xr-xinc/3rdparty/site_config/standard/varingen.no.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/varsity.co.uk.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/vea.gov.vn.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/vedomosti.ru.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/veggbilder.no.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/vemedio.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/venturebeat.com.txt6
-rw-r--r--inc/3rdparty/site_config/standard/version.php1
-rw-r--r--inc/3rdparty/site_config/standard/version.txt1
-rwxr-xr-xinc/3rdparty/site_config/standard/version2.dk.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/verybestbaking.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/vg.no.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/video.forbes.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/videogum.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/villagevoice.com.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/vimeo.com.txt17
-rwxr-xr-xinc/3rdparty/site_config/standard/viply.de.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/visir.is.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/vitispr.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/vivirmexico.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/vnexpress.net.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/voices.washingtonpost.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/vworker.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/waffle.wootest.net.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/walrusmagazine.com.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/warnerbros.fr.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/washingtoninstitute.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/washingtonmonthly.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/washingtonpost.com.txt32
-rwxr-xr-xinc/3rdparty/site_config/standard/web-libre.org.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/weblog.bignerdranch.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/weblogs.asp.net.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/webpaper.nzz.ch.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/webwereld.nl.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/welt.de.txt22
-rwxr-xr-xinc/3rdparty/site_config/standard/westhamtillidie.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/what-if.xkcd.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/whatever.scalzi.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/wheelyric.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/wiki.guildwars.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/wiki.guildwars2.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/wikihow.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/wikitravel.org.txt14
-rwxr-xr-xinc/3rdparty/site_config/standard/will-self.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/williampfaff.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/winfuture.de.txt12
-rwxr-xr-xinc/3rdparty/site_config/standard/winrumors.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/winsupersite.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/wired.com.txt25
-rwxr-xr-xinc/3rdparty/site_config/standard/wmnf.org.txt13
-rwxr-xr-xinc/3rdparty/site_config/standard/wmpoweruser.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/wn.de.txt18
-rw-r--r--inc/3rdparty/site_config/standard/wordyard.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/worldpoultry.net.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/worldwidewords.org.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/wow.joystiq.com.txt6
-rwxr-xr-xinc/3rdparty/site_config/standard/wpmayor.com.txt8
-rwxr-xr-xinc/3rdparty/site_config/standard/wtatennis.com.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/www1.folha.uol.com.br.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/www3.imperial.ac.uk.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/wyborcza.pl.txt9
-rwxr-xr-xinc/3rdparty/site_config/standard/wyctim.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/wz-newsline.de.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/xfgjls.com.txt11
-rwxr-xr-xinc/3rdparty/site_config/standard/xoeb.us.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/yated.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/ynet.co.il.txt26
-rwxr-xr-xinc/3rdparty/site_config/standard/yostivanich.com.txt5
-rwxr-xr-xinc/3rdparty/site_config/standard/yourerie.com.txt2
-rwxr-xr-xinc/3rdparty/site_config/standard/youtube.com.txt15
-rwxr-xr-xinc/3rdparty/site_config/standard/zcommunications.org.txt7
-rwxr-xr-xinc/3rdparty/site_config/standard/zdnet.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/zeit.de.txt45
-rw-r--r--inc/3rdparty/site_config/standard/zerodistraction.com.txt4
-rwxr-xr-xinc/3rdparty/site_config/standard/zerohedge.com.txt10
-rwxr-xr-xinc/3rdparty/site_config/standard/zerokspot.com.txt3
-rwxr-xr-xinc/3rdparty/site_config/standard/zhihu.com.txt19
-rwxr-xr-xinc/3rdparty/site_config/standard/zingtrain.com.txt3
-rwxr-xr-xinc/poche/Tools.class.php2
-rwxr-xr-xinc/poche/global.inc.php8
1033 files changed, 42 insertions, 26775 deletions
diff --git a/composer.json b/composer.json
index 47458df4..fd4231b9 100644
--- a/composer.json
+++ b/composer.json
@@ -46,6 +46,10 @@
46 { 46 {
47 "type": "vcs", 47 "type": "vcs",
48 "url": "https://github.com/wallabag/phpMobi" 48 "url": "https://github.com/wallabag/phpMobi"
49 },
50 {
51 "type": "vcs",
52 "url": "https://github.com/wallabag/Fivefilters_Libraries"
49 } 53 }
50 ], 54 ],
51 "require": { 55 "require": {
@@ -64,7 +68,8 @@
64 "wallabag/pagination": "dev-master", 68 "wallabag/pagination": "dev-master",
65 "wallabag/PHPePub": "dev-master", 69 "wallabag/PHPePub": "dev-master",
66 "wallabag/php-readability": "dev-master", 70 "wallabag/php-readability": "dev-master",
67 "wallabag/phpMobi": "dev-master" 71 "wallabag/phpMobi": "dev-master",
72 "wallabag/Fivefilters_Libraries": "dev-master"
68 }, 73 },
69 "require-dev": { 74 "require-dev": {
70 "phpunit/phpunit": "~3.7" 75 "phpunit/phpunit": "~3.7"
diff --git a/composer.lock b/composer.lock
index 8d538cd2..8275066f 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
4 "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 4 "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
7 "hash": "4caad70325b5cf76eb8d4011bae06cbb", 7 "hash": "93ca2016541bb1e9aaf52a82468ce04d",
8 "packages": [ 8 "packages": [
9 { 9 {
10 "name": "ezyang/htmlpurifier", 10 "name": "ezyang/htmlpurifier",
@@ -1752,6 +1752,36 @@
1752 "time": "2013-02-14 16:41:48" 1752 "time": "2013-02-14 16:41:48"
1753 }, 1753 },
1754 { 1754 {
1755 "name": "wallabag/Fivefilters_Libraries",
1756 "version": "dev-master",
1757 "source": {
1758 "type": "git",
1759 "url": "https://github.com/wallabag/Fivefilters_Libraries.git",
1760 "reference": "93b5469d6036a68ce60f126f8430b3e1fbf1562f"
1761 },
1762 "dist": {
1763 "type": "zip",
1764 "url": "https://api.github.com/repos/wallabag/Fivefilters_Libraries/zipball/93b5469d6036a68ce60f126f8430b3e1fbf1562f",
1765 "reference": "93b5469d6036a68ce60f126f8430b3e1fbf1562f",
1766 "shasum": ""
1767 },
1768 "type": "library",
1769 "authors": [
1770 {
1771 "name": "Nicolas Lœuillet",
1772 "email": "nicolas@loeuillet.org",
1773 "homepage": "http://www.cdetc.fr"
1774 }
1775 ],
1776 "description": "Libraries from @fivefilters.",
1777 "homepage": "https://github.com/wallabag/Fivefilters_Libraries",
1778 "support": {
1779 "source": "https://github.com/wallabag/Fivefilters_Libraries/tree/master",
1780 "issues": "https://github.com/wallabag/Fivefilters_Libraries/issues"
1781 },
1782 "time": "2015-01-19 20:19:28"
1783 },
1784 {
1755 "name": "wallabag/PHPePub", 1785 "name": "wallabag/PHPePub",
1756 "version": "dev-master", 1786 "version": "dev-master",
1757 "source": { 1787 "source": {
@@ -2390,7 +2420,8 @@
2390 "wallabag/pagination": 20, 2420 "wallabag/pagination": 20,
2391 "wallabag/phpepub": 20, 2421 "wallabag/phpepub": 20,
2392 "wallabag/php-readability": 20, 2422 "wallabag/php-readability": 20,
2393 "wallabag/phpmobi": 20 2423 "wallabag/phpmobi": 20,
2424 "wallabag/fivefilters_libraries": 20
2394 }, 2425 },
2395 "prefer-stable": false, 2426 "prefer-stable": false,
2396 "prefer-lowest": false, 2427 "prefer-lowest": false,
diff --git a/inc/3rdparty/config.php b/inc/3rdparty/config.php
deleted file mode 100755
index ec680d86..00000000
--- a/inc/3rdparty/config.php
+++ /dev/null
@@ -1,461 +0,0 @@
1<?php
2/* Full-Text RSS config */
3
4// ......IMPORTANT......................................
5// .....................................................
6// Please do not change this file (config.php) directly.
7// Save a copy as custom_config.php and make your
8// changes to that instead. It will automatically
9// override anything in config.php. Because config.php
10// always gets loaded anyway, you can simply specify
11// options you'd like to override in custom_config.php.
12// .....................................................
13
14global $options;
15
16// Create config object
17if (!isset($options)) $options = new stdClass();
18
19// Enable service
20// ----------------------
21// Set this to false if you want to disable the service.
22// If set to false, no feed is produced and users will
23// be told that the service is disabled.
24$options->enabled = true;
25
26// Debug mode
27// ----------------------
28// Enable or disable debugging. When enabled debugging works by passing
29// &debug to the makefulltextfeed.php querystring.
30// Valid values:
31// true or 'user' (default) - let user decide
32// 'admin' - debug works only for logged in admin users
33// false - disabled
34$options->debug = true;
35
36// Default entries (without access key)
37// ----------------------
38// The number of feed items to process when no API key is supplied
39// and no &max=x value is supplied in the querystring.
40$options->default_entries = 5;
41
42// Max entries (without access key)
43// ----------------------
44// The maximum number of feed items to process when no access key is supplied.
45// This limits the user-supplied &max=x value. For example, if the user
46// asks for 20 items to be processed (&max=20), if max_entries is set to
47// 10, only 10 will be processed.
48$options->max_entries = 10;
49
50// Full content
51// ----------------------
52// By default Full-Text RSS includes the extracted content in the output.
53// You can exclude this from the output by passing '&content=0' in the querystring.
54//
55// Possible values...
56// Always include: true
57// Never include: false
58// Include unless user overrides (&content=0): 'user' (default)
59//
60// Note: currently this does not disable full content extraction. It simply omits it
61// from the output.
62$options->content = 'user';
63
64// Excerpts
65// ----------------------
66// By default Full-Text RSS does not include excerpts in the output.
67// You can enable this by passing '&summary=1' in the querystring.
68// This will include a plain text excerpt from the extracted content.
69//
70// Possible values...
71// Always include: true (recommended for new users)
72// Never include: false
73// Don't include unless user overrides (&summary=1): 'user' (default)
74//
75// Important: if both content and excerpts are requested, the excerpt will be
76// placed in the description element and the full content inside content:encoded.
77// If excerpts are not requested, the full content will go inside the description element.
78//
79// Why are we not returning both excerpts and content by default?
80// Mainly for backward compatibility.
81// Excerpts should appear in the feed item's description element. Previous versions
82// of Full-Text RSS did not return excerpts, so the description element was always
83// used for the full content (as recommended by the RSS advisory). When returning both,
84// we need somewhere else to place the content (content:encoded).
85// Having both enabled should not create any problems for news readers, but it may create
86// problems for developers upgrading from one of our earlier versions who may now find
87// their applications are returning excerpts instead of the full content they were
88// expecting. To avoid such surprises for users who are upgrading Full-Text RSS,
89// excerpts must be explicitly requested in the querystring by default.
90//
91// Why not use a different element name for excerpts?
92// According to the RSS advisory:
93// "Publishers who employ summaries should store the summary in description and
94// the full content in content:encoded, ordering description first within the item.
95// On items with no summary, the full content should be stored in description."
96// See: http://www.rssboard.org/rss-profile#namespace-elements-content-encoded
97//
98// For more consistent element naming, we recommend new users set this option to true.
99// The full content can still be excluded via the querystring, but the element names
100// will not change: when $options->summary = true, the description element will always
101// be reserved for the excerpt and content:encoded always for full content.
102$options->summary = 'user';
103
104// Rewrite relative URLs
105// ----------------------
106// With this enabled relative URLs found in the extracted content
107// block are automatically rewritten as absolute URLs.
108$options->rewrite_relative_urls = true;
109
110// Exclude items if extraction fails
111// ---------------------------------
112// Excludes items from the resulting feed
113// if we cannot extract any content from the
114// item URL.
115// Possible values...
116// Enable: true
117// Disable: false (default)
118// User decides: 'user' (this option will appear on the form)
119$options->exclude_items_on_fail = 'user';
120
121// Enable multi-page support
122// -------------------------
123// If enabled, we will try to follow next page links on multi-page articles.
124// Currently this only happens for sites where next_page_link has been defined
125// in a site config file.
126$options->multipage = true;
127
128// Enable caching
129// ----------------------
130// Enable this if you'd like to cache results
131// for 10 minutes. Cache files are written to disk (in cache/ subfolders
132// - which must be writable).
133// Initially it's best to keep this disabled to make sure everything works
134// as expected. If you have APC enabled, please also see smart_cache in the
135// advanced section.
136$options->caching = false;
137
138// Cache directory
139// ----------------------
140// Only used if caching is true
141$options->cache_dir = dirname(__FILE__).'/cache';
142
143// Message to prepend (without access key)
144// ----------------------
145// HTML to insert at the beginning of each feed item when no access key is supplied.
146// Substitution tags:
147// {url} - Feed item URL
148// {effective-url} - Feed item URL after we've followed all redirects
149$options->message_to_prepend = '';
150
151// Message to append (without access key)
152// ----------------------
153// HTML to insert at the end of each feed item when no access key is supplied.
154// Substitution tags:
155// {url} - Feed item URL
156// {effective-url} - Feed item URL after we've followed all redirects
157$options->message_to_append = '';
158
159// Error message when content extraction fails (without access key)
160// ----------------------
161$options->error_message = '[unable to retrieve full-text content]';
162
163// Keep enclosure in feed items
164// If enabled, we will try to preserve enclosures if present.
165// ----------------------
166$options->keep_enclosures = true;
167
168// Detect language
169// ---------------
170// Should we try and find/guess the language of the article being processed?
171// Values will be placed inside the <dc:language> element inside each <item> element
172// Possible values:
173// * Ignore language: 0
174// * Use article/feed metadata (e.g. HTML lang attribute): 1 (default)
175// * As above, but guess if not present: 2
176// * Always guess: 3
177// * User decides: 'user' (value of 0-3 can be passed in querystring: e.g. &l=2)
178$options->detect_language = 1;
179
180// Registration key
181// ---------------
182// The registration key is optional. It is not required to use Full-Text RSS,
183// and does not affect the normal operation of Full-Text RSS. It is currently
184// only used on admin pages which help you update site patterns with the
185// latest version offered by FiveFilters.org. For these admin-related
186// tasks to complete, we will require a valid registration key.
187// If you would like one, you can purchase the latest version of Full-Text RSS
188// at http://fivefilters.org/content-only/
189// Your registration key will automatically be sent in the confirmation email.
190// Once you have it, simply copy and paste it here.
191$options->registration_key = '';
192
193/////////////////////////////////////////////////
194/// RESTRICT ACCESS /////////////////////////////
195/////////////////////////////////////////////////
196
197// Admin credentials
198// ----------------------
199// Certain pages/actions, e.g. updating site patterns with our online tool, will require admin credentials.
200// To use these pages, enter a password here and you'll be prompted for it when you try to access those pages.
201// If no password or username is set, pages requiring admin privelages will be inaccessible.
202// The default username is 'admin'.
203// If overriding with an environment variable, separate username and password with a colon, e.g.:
204// ftr_admin_credentials: admin:my-secret-password
205// Example: $options->admin_credentials = array('username'=>'admin', 'password'=>'my-secret-password');
206$options->admin_credentials = array('username'=>'admin', 'password'=>'');
207
208// URLs to allow
209// ----------------------
210// List of URLs (or parts of a URL) which the service will accept.
211// If the list is empty, all URLs (except those specified in the blocked list below)
212// will be permitted.
213// Empty: array();
214// Non-empty example: array('example.com', 'anothersite.org');
215$options->allowed_urls = array();
216
217// URLs to block
218// ----------------------
219// List of URLs (or parts of a URL) which the service will not accept.
220// Note: this list is ignored if allowed_urls is not empty
221$options->blocked_urls = array();
222
223// Key holder(s) only?
224// ----------------------
225// Set this to true if you want to restrict access only to
226// those with a key (see below to specify key(s)).
227// If set to true, no feed is produced unless a valid
228// key is provided.
229$options->key_required = false;
230
231// Favour item titles in feed
232// ----------------------
233// By default, when processing feeds, we assume item titles in the feed
234// have not been truncated. So after processing web pages, the extracted titles
235// are not used in the generated feed. If you prefer to have extracted titles in
236// the feed you can either set this to false, in which case we will always favour
237// extracted titles. Alternatively, if set to 'user' (default) we'll use the
238// extracted title if you pass '&use_extracted_title' in the querystring.
239// Possible values:
240// * Favour feed titles: true
241// * Favour extracted titles: false
242// * Favour feed titles with user override: 'user' (default)
243// Note: this has no effect when the input URL is to a web page - in these cases
244// we always use the extracted title in the generated feed.
245$options->favour_feed_titles = 'user';
246
247// Access keys (password protected access)
248// ------------------------------------
249// NOTE: You do not need an API key from fivefilters.org to run your own
250// copy of the code. This is here if you'd like to restrict access to
251// _your_ copy.
252// Keys let you group users - those with a key and those without - and
253// restrict access to the service to those without a key.
254// If you want everyone to access the service in the same way, you can
255// leave the array below empty and ignore the access key options further down.
256// The options further down let you control how the service should behave
257// in each mode.
258// Note: Explicitly including the index number (1 and 2 in the examples below)
259// is highly recommended (when generating feeds, we encode the key and
260// refer to it by index number and hash).
261$options->api_keys = array();
262// Example:
263// $options->api_keys[1] = 'secret-key-1';
264// $options->api_keys[2] = 'secret-key-2';
265
266// Default entries (with access key)
267// ----------------------
268// The number of feed items to process when a valid access key is supplied.
269$options->default_entries_with_key = 5;
270
271// Max entries (with access key)
272// ----------------------
273// The maximum number of feed items to process when a valid access key is supplied.
274$options->max_entries_with_key = 10;
275
276/////////////////////////////////////////////////
277/// ADVANCED OPTIONS ////////////////////////////
278/////////////////////////////////////////////////
279
280// Enable XSS filter?
281// ----------------------
282// We have not enabled this by default because we assume the majority of
283// our users do not display the HTML retrieved by Full-Text RSS
284// in a web page without further processing. If you subscribe to our generated
285// feeds in your news reader application, it should, if it's good software, already
286// filter the resulting HTML for XSS attacks, making it redundant for
287// Full-Text RSS do the same. Similarly with frameworks/CMS which display
288// feed content - the content should be treated like any other user-submitted content.
289//
290// If you are writing an application yourself which is processing feeds generated by
291// Full-Text RSS, you can either filter the HTML yourself to remove potential XSS attacks
292// or enable this option. This might be useful if you are processing our generated
293// feeds with JavaScript on the client side - although there's client side xss
294// filtering available too, e.g. https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
295//
296// If enabled, we'll pass retrieved HTML content through htmLawed with
297// safe flag on and style attributes denied, see
298// http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/htmLawed_README.htm#s3.6
299// Note: if enabled this will also remove certain elements you may want to preserve, such as iframes.
300//
301// Valid values:
302// true - enabled, all content will be filtered
303// 'user' (default) - user must pass &xss in makefulltextfeed.php querystring to enable
304// false - disabled
305$options->xss_filter = 'user';
306
307// Allowed parsers
308// ----------------------
309// Full-Text RSS attempts to use PHP's libxml extension to process HTML.
310// While fast, on some sites it may not always produce good results.
311// For these sites, you can specify an alternative HTML parser:
312// parser: html5lib
313// The html5lib parser is bundled with Full-Text RSS.
314// see http://code.google.com/p/html5lib/
315//
316// To disable HTML parsing with html5lib, you can remove it from this list.
317// By default we allow both: libxml and html5lib.
318$options->allowed_parsers = array('libxml', 'html5lib');
319//$options->allowed_parsers = array('libxml'); //disable html5lib - forcing libxml in all cases
320
321// Enable Cross-Origin Resource Sharing (CORS)
322// ----------------------
323// If enabled we'll send the following HTTP header
324// Access-Control-Allow-Origin: *
325// see http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
326$options->cors = false;
327
328// Use APC user cache?
329// ----------------------
330// If enabled we will store site config files (when requested
331// for the first time) in APC's user cache. Keys prefixed with 'sc.'
332// This improves performance by reducing disk access.
333// Note: this has no effect if APC is unavailable on your server.
334$options->apc = true;
335
336// Smart cache (experimental)
337// ----------------------
338// With this option enabled we will not cache to disk immediately.
339// We will store the cache key in APC and if it's requested again
340// we will cache results to disk. Keys prefixed with 'cache.'
341// This improves performance by reducing disk access.
342// Note: this has no effect if APC is disabled or unavailable on your server,
343// or if you have caching disabled.
344$options->smart_cache = true;
345
346// Fingerprints
347// ----------------------
348// key is fingerprint (fragment to find in HTML)
349// value is host name to use for site config lookup if fingerprint matches
350$options->fingerprints = array(
351 // Posterous
352 '<meta name="generator" content="Posterous"' => array('hostname'=>'fingerprint.posterous.com', 'head'=>true),
353 // Blogger
354 '<meta content=\'blogger\' name=\'generator\'' => array('hostname'=>'fingerprint.blogspot.com', 'head'=>true),
355 '<meta name="generator" content="Blogger"' => array('hostname'=>'fingerprint.blogspot.com', 'head'=>true),
356 // WordPress (hosted)
357 // '<meta name="generator" content="WordPress.com"' => array('hostname'=>'fingerprint.wordpress.com', 'head'=>true),
358 // WordPress (self-hosted and hosted)
359 '<meta name="generator" content="WordPress' => array('hostname'=>'fingerprint.wordpress.com', 'head'=>true)
360);
361
362// User Agent strings - mapping domain names
363// ----------------------
364// e.g. $options->user_agents = array('example.org' => 'PHP/5.2');
365$options->user_agents = array( 'lifehacker.com' => 'PHP/5.2',
366 'gawker.com' => 'PHP/5.2',
367 'deadspin.com' => 'PHP/5.2',
368 'kotaku.com' => 'PHP/5.2',
369 'jezebel.com' => 'PHP/5.2',
370 'io9.com' => 'PHP/5.2',
371 'jalopnik.com' => 'PHP/5.2',
372 'gizmodo.com' => 'PHP/5.2',
373 '.wikipedia.org' => 'Mozilla/5.2',
374 '.fok.nl' => 'Googlebot/2.1',
375 'getpocket.com' => 'PHP/5.2'
376 );
377
378// URL Rewriting
379// ----------------------
380// Currently allows simple string replace of URLs.
381// Useful for rewriting certain URLs to point to a single page
382// or HTML view. Although using the single_page_link site config
383// instruction is the preferred way to do this, sometimes, as
384// with Google Docs URLs, it's not possible.
385// Note: this might move to the site config file at some point.
386$options->rewrite_url = array(
387 // Rewrite public Google Docs URLs to point to HTML view:
388 // if a URL contains docs.google.com, replace /Doc? with /View?
389 'docs.google.com' => array('/Doc?' => '/View?'),
390 'tnr.com' => array('tnr.com/article/' => 'tnr.com/print/article/'),
391 '.m.wikipedia.org' => array('.m.wikipedia.org' => '.wikipedia.org'),
392 'm.vanityfair.com' => array('m.vanityfair.com' => 'www.vanityfair.com')
393);
394
395// Content-Type exceptions
396// -----------------------
397// Here you can define different actions based
398// on the Content-Type header returned by server.
399// MIME type as key, action as value.
400// Valid actions:
401// * 'exclude' - exclude this item from the result
402// * 'link' - create HTML link to the item
403$options->content_type_exc = array(
404 'application/pdf' => array('action'=>'link', 'name'=>'PDF'),
405 'image' => array('action'=>'link', 'name'=>'Image'),
406 'audio' => array('action'=>'link', 'name'=>'Audio'),
407 'video' => array('action'=>'link', 'name'=>'Video')
408 );
409
410// Cache directory level
411// ----------------------
412// Spread cache files over different directories (only used if caching is enabled).
413// Used to prevent large number of files in one directory.
414// This corresponds to Zend_Cache's hashed_directory_level
415// see http://framework.zend.com/manual/en/zend.cache.backends.html
416// It's best not to change this if you're unsure.
417$options->cache_directory_level = 0;
418
419// Cache cleanup
420// -------------
421// 0 = script will not clean cache (rename cachecleanup.php and use it for scheduled (e.g. cron) cache cleanup)
422// 1 = clean cache everytime the script runs (not recommended)
423// 100 = clean cache roughly once every 100 script runs
424// x = clean cache roughly once every x script runs
425// ...you get the idea :)
426$options->cache_cleanup = 100;
427
428/////////////////////////////////////////////////
429/// DO NOT CHANGE ANYTHING BELOW THIS ///////////
430/////////////////////////////////////////////////
431
432if (!defined('_FF_FTR_VERSION')) define('_FF_FTR_VERSION', '3.2');
433
434if (basename(__FILE__) == 'config.php') {
435 if (file_exists(dirname(__FILE__).'/custom_config.php')) {
436 require_once dirname(__FILE__).'/custom_config.php';
437 }
438
439 // check for environment variables - often used on cloud platforms
440 // environment variables should be prefixed with 'ftr_', e.g.
441 // ftr_max_entries: 1
442 // will set the max_entries value to 1.
443 foreach ($options as $_key=>&$_val) {
444 $_key = "ftr_$_key";
445 if (($_env = getenv($_key)) !== false) {
446 if (is_array($_val)) {
447 if ($_key === 'ftr_admin_credentials') {
448 $_val = array_combine(array('username', 'password'), array_map('trim', explode(':', $_env, 2)));
449 if ($_val === false) $_val = array('username'=>'admin', 'password'=>'');
450 }
451 } elseif ($_env === 'true' || $_env === 'false') {
452 $_val = ($_env === 'true');
453 } elseif (is_numeric($_env)) {
454 $_val = (int)$_env;
455 } else { // string
456 $_val = $_env;
457 }
458 }
459 }
460 unset($_key, $_val, $_env);
461} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/Zend/Cache.php b/inc/3rdparty/libraries/Zend/Cache.php
deleted file mode 100644
index d28cb559..00000000
--- a/inc/3rdparty/libraries/Zend/Cache.php
+++ /dev/null
@@ -1,250 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
18 * @license http://framework.zend.com/license/new-bsd New BSD License
19 * @version $Id: Cache.php 24656 2012-02-26 06:02:53Z adamlundrigan $
20 */
21
22
23/**
24 * @package Zend_Cache
25 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
26 * @license http://framework.zend.com/license/new-bsd New BSD License
27 */
28abstract class Zend_Cache
29{
30
31 /**
32 * Standard frontends
33 *
34 * @var array
35 */
36 public static $standardFrontends = array('Core', 'Output', 'Class', 'File', 'Function', 'Page');
37
38 /**
39 * Standard backends
40 *
41 * @var array
42 */
43 public static $standardBackends = array('File', 'Sqlite', 'Memcached', 'Libmemcached', 'Apc', 'ZendPlatform',
44 'Xcache', 'TwoLevels', 'WinCache', 'ZendServer_Disk', 'ZendServer_ShMem');
45
46 /**
47 * Standard backends which implement the ExtendedInterface
48 *
49 * @var array
50 */
51 public static $standardExtendedBackends = array('File', 'Apc', 'TwoLevels', 'Memcached', 'Libmemcached', 'Sqlite', 'WinCache');
52
53 /**
54 * Only for backward compatibility (may be removed in next major release)
55 *
56 * @var array
57 * @deprecated
58 */
59 public static $availableFrontends = array('Core', 'Output', 'Class', 'File', 'Function', 'Page');
60
61 /**
62 * Only for backward compatibility (may be removed in next major release)
63 *
64 * @var array
65 * @deprecated
66 */
67 public static $availableBackends = array('File', 'Sqlite', 'Memcached', 'Libmemcached', 'Apc', 'ZendPlatform', 'Xcache', 'WinCache', 'TwoLevels');
68
69 /**
70 * Consts for clean() method
71 */
72 const CLEANING_MODE_ALL = 'all';
73 const CLEANING_MODE_OLD = 'old';
74 const CLEANING_MODE_MATCHING_TAG = 'matchingTag';
75 const CLEANING_MODE_NOT_MATCHING_TAG = 'notMatchingTag';
76 const CLEANING_MODE_MATCHING_ANY_TAG = 'matchingAnyTag';
77
78 /**
79 * Factory
80 *
81 * @param mixed $frontend frontend name (string) or Zend_Cache_Frontend_ object
82 * @param mixed $backend backend name (string) or Zend_Cache_Backend_ object
83 * @param array $frontendOptions associative array of options for the corresponding frontend constructor
84 * @param array $backendOptions associative array of options for the corresponding backend constructor
85 * @param boolean $customFrontendNaming if true, the frontend argument is used as a complete class name ; if false, the frontend argument is used as the end of "Zend_Cache_Frontend_[...]" class name
86 * @param boolean $customBackendNaming if true, the backend argument is used as a complete class name ; if false, the backend argument is used as the end of "Zend_Cache_Backend_[...]" class name
87 * @param boolean $autoload if true, there will no require_once for backend and frontend (useful only for custom backends/frontends)
88 * @throws Zend_Cache_Exception
89 * @return Zend_Cache_Core|Zend_Cache_Frontend
90 */
91 public static function factory($frontend, $backend, $frontendOptions = array(), $backendOptions = array(), $customFrontendNaming = false, $customBackendNaming = false, $autoload = false)
92 {
93 if (is_string($backend)) {
94 $backendObject = self::_makeBackend($backend, $backendOptions, $customBackendNaming, $autoload);
95 } else {
96 if ((is_object($backend)) && (in_array('Zend_Cache_Backend_Interface', class_implements($backend)))) {
97 $backendObject = $backend;
98 } else {
99 self::throwException('backend must be a backend name (string) or an object which implements Zend_Cache_Backend_Interface');
100 }
101 }
102 if (is_string($frontend)) {
103 $frontendObject = self::_makeFrontend($frontend, $frontendOptions, $customFrontendNaming, $autoload);
104 } else {
105 if (is_object($frontend)) {
106 $frontendObject = $frontend;
107 } else {
108 self::throwException('frontend must be a frontend name (string) or an object');
109 }
110 }
111 $frontendObject->setBackend($backendObject);
112 return $frontendObject;
113 }
114
115 /**
116 * Backend Constructor
117 *
118 * @param string $backend
119 * @param array $backendOptions
120 * @param boolean $customBackendNaming
121 * @param boolean $autoload
122 * @return Zend_Cache_Backend
123 */
124 public static function _makeBackend($backend, $backendOptions, $customBackendNaming = false, $autoload = false)
125 {
126 if (!$customBackendNaming) {
127 $backend = self::_normalizeName($backend);
128 }
129 if (in_array($backend, Zend_Cache::$standardBackends)) {
130 // we use a standard backend
131 $backendClass = 'Zend_Cache_Backend_' . $backend;
132 // security controls are explicit
133 require_once realpath(dirname(__FILE__).'/..').DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php';
134 } else {
135 // we use a custom backend
136 if (!preg_match('~^[\w\\\\]+$~D', $backend)) {
137 Zend_Cache::throwException("Invalid backend name [$backend]");
138 }
139 if (!$customBackendNaming) {
140 // we use this boolean to avoid an API break
141 $backendClass = 'Zend_Cache_Backend_' . $backend;
142 } else {
143 $backendClass = $backend;
144 }
145 if (!$autoload) {
146 $file = str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php';
147 if (!(self::_isReadable($file))) {
148 self::throwException("file $file not found in include_path");
149 }
150 require_once $file;
151 }
152 }
153 return new $backendClass($backendOptions);
154 }
155
156 /**
157 * Frontend Constructor
158 *
159 * @param string $frontend
160 * @param array $frontendOptions
161 * @param boolean $customFrontendNaming
162 * @param boolean $autoload
163 * @return Zend_Cache_Core|Zend_Cache_Frontend
164 */
165 public static function _makeFrontend($frontend, $frontendOptions = array(), $customFrontendNaming = false, $autoload = false)
166 {
167 if (!$customFrontendNaming) {
168 $frontend = self::_normalizeName($frontend);
169 }
170 if (in_array($frontend, self::$standardFrontends)) {
171 // we use a standard frontend
172 // For perfs reasons, with frontend == 'Core', we can interact with the Core itself
173 $frontendClass = 'Zend_Cache_' . ($frontend != 'Core' ? 'Frontend_' : '') . $frontend;
174 // security controls are explicit
175 require_once realpath(dirname(__FILE__).'/..').DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $frontendClass) . '.php';
176 } else {
177 // we use a custom frontend
178 if (!preg_match('~^[\w\\\\]+$~D', $frontend)) {
179 Zend_Cache::throwException("Invalid frontend name [$frontend]");
180 }
181 if (!$customFrontendNaming) {
182 // we use this boolean to avoid an API break
183 $frontendClass = 'Zend_Cache_Frontend_' . $frontend;
184 } else {
185 $frontendClass = $frontend;
186 }
187 if (!$autoload) {
188 $file = str_replace('_', DIRECTORY_SEPARATOR, $frontendClass) . '.php';
189 if (!(self::_isReadable($file))) {
190 self::throwException("file $file not found in include_path");
191 }
192 require_once $file;
193 }
194 }
195 return new $frontendClass($frontendOptions);
196 }
197
198 /**
199 * Throw an exception
200 *
201 * Note : for perf reasons, the "load" of Zend/Cache/Exception is dynamic
202 * @param string $msg Message for the exception
203 * @throws Zend_Cache_Exception
204 */
205 public static function throwException($msg, Exception $e = null)
206 {
207 // For perfs reasons, we use this dynamic inclusion
208 require_once 'Zend/Cache/Exception.php';
209 throw new Zend_Cache_Exception($msg, 0, $e);
210 }
211
212 /**
213 * Normalize frontend and backend names to allow multiple words TitleCased
214 *
215 * @param string $name Name to normalize
216 * @return string
217 */
218 protected static function _normalizeName($name)
219 {
220 $name = ucfirst(strtolower($name));
221 $name = str_replace(array('-', '_', '.'), ' ', $name);
222 $name = ucwords($name);
223 $name = str_replace(' ', '', $name);
224 if (stripos($name, 'ZendServer') === 0) {
225 $name = 'ZendServer_' . substr($name, strlen('ZendServer'));
226 }
227
228 return $name;
229 }
230
231 /**
232 * Returns TRUE if the $filename is readable, or FALSE otherwise.
233 * This function uses the PHP include_path, where PHP's is_readable()
234 * does not.
235 *
236 * Note : this method comes from Zend_Loader (see #ZF-2891 for details)
237 *
238 * @param string $filename
239 * @return boolean
240 */
241 private static function _isReadable($filename)
242 {
243 if (!$fh = @fopen($filename, 'r', true)) {
244 return false;
245 }
246 @fclose($fh);
247 return true;
248 }
249
250}
diff --git a/inc/3rdparty/libraries/Zend/Cache/Backend.php b/inc/3rdparty/libraries/Zend/Cache/Backend.php
deleted file mode 100644
index 803fd446..00000000
--- a/inc/3rdparty/libraries/Zend/Cache/Backend.php
+++ /dev/null
@@ -1,290 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @subpackage Zend_Cache_Backend
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
19 * @license http://framework.zend.com/license/new-bsd New BSD License
20 * @version $Id: Backend.php 24989 2012-06-21 07:24:13Z mabe $
21 */
22
23
24/**
25 * @package Zend_Cache
26 * @subpackage Zend_Cache_Backend
27 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
28 * @license http://framework.zend.com/license/new-bsd New BSD License
29 */
30class Zend_Cache_Backend
31{
32 /**
33 * Frontend or Core directives
34 *
35 * =====> (int) lifetime :
36 * - Cache lifetime (in seconds)
37 * - If null, the cache is valid forever
38 *
39 * =====> (int) logging :
40 * - if set to true, a logging is activated throw Zend_Log
41 *
42 * @var array directives
43 */
44 protected $_directives = array(
45 'lifetime' => 3600,
46 'logging' => false,
47 'logger' => null
48 );
49
50 /**
51 * Available options
52 *
53 * @var array available options
54 */
55 protected $_options = array();
56
57 /**
58 * Constructor
59 *
60 * @param array $options Associative array of options
61 * @throws Zend_Cache_Exception
62 * @return void
63 */
64 public function __construct(array $options = array())
65 {
66 while (list($name, $value) = each($options)) {
67 $this->setOption($name, $value);
68 }
69 }
70
71 /**
72 * Set the frontend directives
73 *
74 * @param array $directives Assoc of directives
75 * @throws Zend_Cache_Exception
76 * @return void
77 */
78 public function setDirectives($directives)
79 {
80 if (!is_array($directives)) Zend_Cache::throwException('Directives parameter must be an array');
81 while (list($name, $value) = each($directives)) {
82 if (!is_string($name)) {
83 Zend_Cache::throwException("Incorrect option name : $name");
84 }
85 $name = strtolower($name);
86 if (array_key_exists($name, $this->_directives)) {
87 $this->_directives[$name] = $value;
88 }
89
90 }
91
92 $this->_loggerSanity();
93 }
94
95 /**
96 * Set an option
97 *
98 * @param string $name
99 * @param mixed $value
100 * @throws Zend_Cache_Exception
101 * @return void
102 */
103 public function setOption($name, $value)
104 {
105 if (!is_string($name)) {
106 Zend_Cache::throwException("Incorrect option name : $name");
107 }
108 $name = strtolower($name);
109 if (array_key_exists($name, $this->_options)) {
110 $this->_options[$name] = $value;
111 }
112 }
113
114 /**
115 * Returns an option
116 *
117 * @param string $name Optional, the options name to return
118 * @throws Zend_Cache_Exceptions
119 * @return mixed
120 */
121 public function getOption($name)
122 {
123 $name = strtolower($name);
124
125 if (array_key_exists($name, $this->_options)) {
126 return $this->_options[$name];
127 }
128
129 if (array_key_exists($name, $this->_directives)) {
130 return $this->_directives[$name];
131 }
132
133 Zend_Cache::throwException("Incorrect option name : {$name}");
134 }
135
136 /**
137 * Get the life time
138 *
139 * if $specificLifetime is not false, the given specific life time is used
140 * else, the global lifetime is used
141 *
142 * @param int $specificLifetime
143 * @return int Cache life time
144 */
145 public function getLifetime($specificLifetime)
146 {
147 if ($specificLifetime === false) {
148 return $this->_directives['lifetime'];
149 }
150 return $specificLifetime;
151 }
152
153 /**
154 * Return true if the automatic cleaning is available for the backend
155 *
156 * DEPRECATED : use getCapabilities() instead
157 *
158 * @deprecated
159 * @return boolean
160 */
161 public function isAutomaticCleaningAvailable()
162 {
163 return true;
164 }
165
166 /**
167 * Determine system TMP directory and detect if we have read access
168 *
169 * inspired from Zend_File_Transfer_Adapter_Abstract
170 *
171 * @return string
172 * @throws Zend_Cache_Exception if unable to determine directory
173 */
174 public function getTmpDir()
175 {
176 $tmpdir = array();
177 foreach (array($_ENV, $_SERVER) as $tab) {
178 foreach (array('TMPDIR', 'TEMP', 'TMP', 'windir', 'SystemRoot') as $key) {
179 if (isset($tab[$key]) && is_string($tab[$key])) {
180 if (($key == 'windir') or ($key == 'SystemRoot')) {
181 $dir = realpath($tab[$key] . '\\temp');
182 } else {
183 $dir = realpath($tab[$key]);
184 }
185 if ($this->_isGoodTmpDir($dir)) {
186 return $dir;
187 }
188 }
189 }
190 }
191 $upload = ini_get('upload_tmp_dir');
192 if ($upload) {
193 $dir = realpath($upload);
194 if ($this->_isGoodTmpDir($dir)) {
195 return $dir;
196 }
197 }
198 if (function_exists('sys_get_temp_dir')) {
199 $dir = sys_get_temp_dir();
200 if ($this->_isGoodTmpDir($dir)) {
201 return $dir;
202 }
203 }
204 // Attemp to detect by creating a temporary file
205 $tempFile = tempnam(md5(uniqid(rand(), TRUE)), '');
206 if ($tempFile) {
207 $dir = realpath(dirname($tempFile));
208 unlink($tempFile);
209 if ($this->_isGoodTmpDir($dir)) {
210 return $dir;
211 }
212 }
213 if ($this->_isGoodTmpDir('/tmp')) {
214 return '/tmp';
215 }
216 if ($this->_isGoodTmpDir('\\temp')) {
217 return '\\temp';
218 }
219 Zend_Cache::throwException('Could not determine temp directory, please specify a cache_dir manually');
220 }
221
222 /**
223 * Verify if the given temporary directory is readable and writable
224 *
225 * @param string $dir temporary directory
226 * @return boolean true if the directory is ok
227 */
228 protected function _isGoodTmpDir($dir)
229 {
230 if (is_readable($dir)) {
231 if (is_writable($dir)) {
232 return true;
233 }
234 }
235 return false;
236 }
237
238 /**
239 * Make sure if we enable logging that the Zend_Log class
240 * is available.
241 * Create a default log object if none is set.
242 *
243 * @throws Zend_Cache_Exception
244 * @return void
245 */
246 protected function _loggerSanity()
247 {
248 if (!isset($this->_directives['logging']) || !$this->_directives['logging']) {
249 return;
250 }
251
252 if (isset($this->_directives['logger'])) {
253 if ($this->_directives['logger'] instanceof Zend_Log) {
254 return;
255 }
256 Zend_Cache::throwException('Logger object is not an instance of Zend_Log class.');
257 }
258
259 // Create a default logger to the standard output stream
260 require_once 'Zend/Log.php';
261 require_once 'Zend/Log/Writer/Stream.php';
262 require_once 'Zend/Log/Filter/Priority.php';
263 $logger = new Zend_Log(new Zend_Log_Writer_Stream('php://output'));
264 $logger->addFilter(new Zend_Log_Filter_Priority(Zend_Log::WARN, '<='));
265 $this->_directives['logger'] = $logger;
266 }
267
268 /**
269 * Log a message at the WARN (4) priority.
270 *
271 * @param string $message
272 * @throws Zend_Cache_Exception
273 * @return void
274 */
275 protected function _log($message, $priority = 4)
276 {
277 if (!$this->_directives['logging']) {
278 return;
279 }
280
281 if (!isset($this->_directives['logger'])) {
282 Zend_Cache::throwException('Logging is enabled but logger is not set.');
283 }
284 $logger = $this->_directives['logger'];
285 if (!$logger instanceof Zend_Log) {
286 Zend_Cache::throwException('Logger object is not an instance of Zend_Log class.');
287 }
288 $logger->log($message, $priority);
289 }
290}
diff --git a/inc/3rdparty/libraries/Zend/Cache/Backend/ExtendedInterface.php b/inc/3rdparty/libraries/Zend/Cache/Backend/ExtendedInterface.php
deleted file mode 100644
index c192baaf..00000000
--- a/inc/3rdparty/libraries/Zend/Cache/Backend/ExtendedInterface.php
+++ /dev/null
@@ -1,127 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @subpackage Zend_Cache_Backend
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
19 * @license http://framework.zend.com/license/new-bsd New BSD License
20 * @version $Id: ExtendedInterface.php 24593 2012-01-05 20:35:02Z matthew $
21 */
22
23/**
24 * @see Zend_Cache_Backend_Interface
25 */
26//require_once 'Zend/Cache/Backend/Interface.php';
27require_once dirname(__FILE__).'/Interface.php';
28
29/**
30 * @package Zend_Cache
31 * @subpackage Zend_Cache_Backend
32 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
33 * @license http://framework.zend.com/license/new-bsd New BSD License
34 */
35interface Zend_Cache_Backend_ExtendedInterface extends Zend_Cache_Backend_Interface
36{
37
38 /**
39 * Return an array of stored cache ids
40 *
41 * @return array array of stored cache ids (string)
42 */
43 public function getIds();
44
45 /**
46 * Return an array of stored tags
47 *
48 * @return array array of stored tags (string)
49 */
50 public function getTags();
51
52 /**
53 * Return an array of stored cache ids which match given tags
54 *
55 * In case of multiple tags, a logical AND is made between tags
56 *
57 * @param array $tags array of tags
58 * @return array array of matching cache ids (string)
59 */
60 public function getIdsMatchingTags($tags = array());
61
62 /**
63 * Return an array of stored cache ids which don't match given tags
64 *
65 * In case of multiple tags, a logical OR is made between tags
66 *
67 * @param array $tags array of tags
68 * @return array array of not matching cache ids (string)
69 */
70 public function getIdsNotMatchingTags($tags = array());
71
72 /**
73 * Return an array of stored cache ids which match any given tags
74 *
75 * In case of multiple tags, a logical AND is made between tags
76 *
77 * @param array $tags array of tags
78 * @return array array of any matching cache ids (string)
79 */
80 public function getIdsMatchingAnyTags($tags = array());
81
82 /**
83 * Return the filling percentage of the backend storage
84 *
85 * @return int integer between 0 and 100
86 */
87 public function getFillingPercentage();
88
89 /**
90 * Return an array of metadatas for the given cache id
91 *
92 * The array must include these keys :
93 * - expire : the expire timestamp
94 * - tags : a string array of tags
95 * - mtime : timestamp of last modification time
96 *
97 * @param string $id cache id
98 * @return array array of metadatas (false if the cache id is not found)
99 */
100 public function getMetadatas($id);
101
102 /**
103 * Give (if possible) an extra lifetime to the given cache id
104 *
105 * @param string $id cache id
106 * @param int $extraLifetime
107 * @return boolean true if ok
108 */
109 public function touch($id, $extraLifetime);
110
111 /**
112 * Return an associative array of capabilities (booleans) of the backend
113 *
114 * The array must include these keys :
115 * - automatic_cleaning (is automating cleaning necessary)
116 * - tags (are tags supported)
117 * - expired_read (is it possible to read expired cache records
118 * (for doNotTestCacheValidity option for example))
119 * - priority does the backend deal with priority when saving
120 * - infinite_lifetime (is infinite lifetime can work with this backend)
121 * - get_list (is it possible to get the list of cache ids and the complete list of tags)
122 *
123 * @return array associative of with capabilities
124 */
125 public function getCapabilities();
126
127}
diff --git a/inc/3rdparty/libraries/Zend/Cache/Backend/File.php b/inc/3rdparty/libraries/Zend/Cache/Backend/File.php
deleted file mode 100644
index 5affbcb3..00000000
--- a/inc/3rdparty/libraries/Zend/Cache/Backend/File.php
+++ /dev/null
@@ -1,1034 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @subpackage Zend_Cache_Backend
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
19 * @license http://framework.zend.com/license/new-bsd New BSD License
20 * @version $Id: File.php 24844 2012-05-31 19:01:36Z rob $
21 */
22
23/**
24 * @see Zend_Cache_Backend_Interface
25 */
26//require_once 'Zend/Cache/Backend/ExtendedInterface.php';
27require_once dirname(__FILE__).'/ExtendedInterface.php';
28
29/**
30 * @see Zend_Cache_Backend
31 */
32//require_once 'Zend/Cache/Backend.php';
33require_once realpath(dirname(__FILE__).'/..').DIRECTORY_SEPARATOR.'Backend.php';
34
35
36
37/**
38 * @package Zend_Cache
39 * @subpackage Zend_Cache_Backend
40 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
41 * @license http://framework.zend.com/license/new-bsd New BSD License
42 */
43class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
44{
45 /**
46 * Available options
47 *
48 * =====> (string) cache_dir :
49 * - Directory where to put the cache files
50 *
51 * =====> (boolean) file_locking :
52 * - Enable / disable file_locking
53 * - Can avoid cache corruption under bad circumstances but it doesn't work on multithread
54 * webservers and on NFS filesystems for example
55 *
56 * =====> (boolean) read_control :
57 * - Enable / disable read control
58 * - If enabled, a control key is embeded in cache file and this key is compared with the one
59 * calculated after the reading.
60 *
61 * =====> (string) read_control_type :
62 * - Type of read control (only if read control is enabled). Available values are :
63 * 'md5' for a md5 hash control (best but slowest)
64 * 'crc32' for a crc32 hash control (lightly less safe but faster, better choice)
65 * 'adler32' for an adler32 hash control (excellent choice too, faster than crc32)
66 * 'strlen' for a length only test (fastest)
67 *
68 * =====> (int) hashed_directory_level :
69 * - Hashed directory level
70 * - Set the hashed directory structure level. 0 means "no hashed directory
71 * structure", 1 means "one level of directory", 2 means "two levels"...
72 * This option can speed up the cache only when you have many thousands of
73 * cache file. Only specific benchs can help you to choose the perfect value
74 * for you. Maybe, 1 or 2 is a good start.
75 *
76 * =====> (int) hashed_directory_umask :
77 * - deprecated
78 * - Permissions for hashed directory structure
79 *
80 * =====> (int) hashed_directory_perm :
81 * - Permissions for hashed directory structure
82 *
83 * =====> (string) file_name_prefix :
84 * - prefix for cache files
85 * - be really carefull with this option because a too generic value in a system cache dir
86 * (like /tmp) can cause disasters when cleaning the cache
87 *
88 * =====> (int) cache_file_umask :
89 * - deprecated
90 * - Permissions for cache files
91 *
92 * =====> (int) cache_file_perm :
93 * - Permissions for cache files
94 *
95 * =====> (int) metatadatas_array_max_size :
96 * - max size for the metadatas array (don't change this value unless you
97 * know what you are doing)
98 *
99 * @var array available options
100 */
101 protected $_options = array(
102 'cache_dir' => null,
103 'file_locking' => true,
104 'read_control' => true,
105 'read_control_type' => 'crc32',
106 'hashed_directory_level' => 0,
107 'hashed_directory_perm' => 0700,
108 'file_name_prefix' => 'zend_cache',
109 'cache_file_perm' => 0600,
110 'metadatas_array_max_size' => 100
111 );
112
113 /**
114 * Array of metadatas (each item is an associative array)
115 *
116 * @var array
117 */
118 protected $_metadatasArray = array();
119
120
121 /**
122 * Constructor
123 *
124 * @param array $options associative array of options
125 * @throws Zend_Cache_Exception
126 * @return void
127 */
128 public function __construct(array $options = array())
129 {
130 parent::__construct($options);
131 if ($this->_options['cache_dir'] !== null) { // particular case for this option
132 $this->setCacheDir($this->_options['cache_dir']);
133 } else {
134 $this->setCacheDir(self::getTmpDir() . DIRECTORY_SEPARATOR, false);
135 }
136 if (isset($this->_options['file_name_prefix'])) { // particular case for this option
137 if (!preg_match('~^[a-zA-Z0-9_]+$~D', $this->_options['file_name_prefix'])) {
138 Zend_Cache::throwException('Invalid file_name_prefix : must use only [a-zA-Z0-9_]');
139 }
140 }
141 if ($this->_options['metadatas_array_max_size'] < 10) {
142 Zend_Cache::throwException('Invalid metadatas_array_max_size, must be > 10');
143 }
144
145 if (isset($options['hashed_directory_umask'])) {
146 // See #ZF-12047
147 trigger_error("'hashed_directory_umask' is deprecated -> please use 'hashed_directory_perm' instead", E_USER_NOTICE);
148 if (!isset($options['hashed_directory_perm'])) {
149 $options['hashed_directory_perm'] = $options['hashed_directory_umask'];
150 }
151 }
152 if (isset($options['hashed_directory_perm']) && is_string($options['hashed_directory_perm'])) {
153 // See #ZF-4422
154 $this->_options['hashed_directory_perm'] = octdec($this->_options['hashed_directory_perm']);
155 }
156
157 if (isset($options['cache_file_umask'])) {
158 // See #ZF-12047
159 trigger_error("'cache_file_umask' is deprecated -> please use 'cache_file_perm' instead", E_USER_NOTICE);
160 if (!isset($options['cache_file_perm'])) {
161 $options['cache_file_perm'] = $options['cache_file_umask'];
162 }
163 }
164 if (isset($options['cache_file_perm']) && is_string($options['cache_file_perm'])) {
165 // See #ZF-4422
166 $this->_options['cache_file_perm'] = octdec($this->_options['cache_file_perm']);
167 }
168 }
169
170 /**
171 * Set the cache_dir (particular case of setOption() method)
172 *
173 * @param string $value
174 * @param boolean $trailingSeparator If true, add a trailing separator is necessary
175 * @throws Zend_Cache_Exception
176 * @return void
177 */
178 public function setCacheDir($value, $trailingSeparator = true)
179 {
180 if (!is_dir($value)) {
181 Zend_Cache::throwException(sprintf('cache_dir "%s" must be a directory', $value));
182 }
183 if (!is_writable($value)) {
184 Zend_Cache::throwException(sprintf('cache_dir "%s" is not writable', $value));
185 }
186 if ($trailingSeparator) {
187 // add a trailing DIRECTORY_SEPARATOR if necessary
188 $value = rtrim(realpath($value), '\\/') . DIRECTORY_SEPARATOR;
189 }
190 $this->_options['cache_dir'] = $value;
191 }
192
193 /**
194 * Test if a cache is available for the given id and (if yes) return it (false else)
195 *
196 * @param string $id cache id
197 * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
198 * @return string|false cached datas
199 */
200 public function load($id, $doNotTestCacheValidity = false)
201 {
202 if (!($this->_test($id, $doNotTestCacheValidity))) {
203 // The cache is not hit !
204 return false;
205 }
206 $metadatas = $this->_getMetadatas($id);
207 $file = $this->_file($id);
208 $data = $this->_fileGetContents($file);
209 if ($this->_options['read_control']) {
210 $hashData = $this->_hash($data, $this->_options['read_control_type']);
211 $hashControl = $metadatas['hash'];
212 if ($hashData != $hashControl) {
213 // Problem detected by the read control !
214 $this->_log('Zend_Cache_Backend_File::load() / read_control : stored hash and computed hash do not match');
215 $this->remove($id);
216 return false;
217 }
218 }
219 return $data;
220 }
221
222 /**
223 * Test if a cache is available or not (for the given id)
224 *
225 * @param string $id cache id
226 * @return mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record
227 */
228 public function test($id)
229 {
230 clearstatcache();
231 return $this->_test($id, false);
232 }
233
234 /**
235 * Save some string datas into a cache record
236 *
237 * Note : $data is always "string" (serialization is done by the
238 * core not by the backend)
239 *
240 * @param string $data Datas to cache
241 * @param string $id Cache id
242 * @param array $tags Array of strings, the cache record will be tagged by each string entry
243 * @param int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
244 * @return boolean true if no problem
245 */
246 public function save($data, $id, $tags = array(), $specificLifetime = false)
247 {
248 clearstatcache();
249 $file = $this->_file($id);
250 $path = $this->_path($id);
251 if ($this->_options['hashed_directory_level'] > 0) {
252 if (!is_writable($path)) {
253 // maybe, we just have to build the directory structure
254 $this->_recursiveMkdirAndChmod($id);
255 }
256 if (!is_writable($path)) {
257 return false;
258 }
259 }
260 if ($this->_options['read_control']) {
261 $hash = $this->_hash($data, $this->_options['read_control_type']);
262 } else {
263 $hash = '';
264 }
265 $metadatas = array(
266 'hash' => $hash,
267 'mtime' => time(),
268 'expire' => $this->_expireTime($this->getLifetime($specificLifetime)),
269 'tags' => $tags
270 );
271 $res = $this->_setMetadatas($id, $metadatas);
272 if (!$res) {
273 $this->_log('Zend_Cache_Backend_File::save() / error on saving metadata');
274 return false;
275 }
276 $res = $this->_filePutContents($file, $data);
277 return $res;
278 }
279
280 /**
281 * Remove a cache record
282 *
283 * @param string $id cache id
284 * @return boolean true if no problem
285 */
286 public function remove($id)
287 {
288 $file = $this->_file($id);
289 $boolRemove = $this->_remove($file);
290 $boolMetadata = $this->_delMetadatas($id);
291 return $boolMetadata && $boolRemove;
292 }
293
294 /**
295 * Clean some cache records
296 *
297 * Available modes are :
298 *
299 * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache entries ($tags is not used)
300 * Zend_Cache::CLEANING_MODE_OLD => remove too old cache entries ($tags is not used)
301 * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries matching all given tags
302 * ($tags can be an array of strings or a single string)
303 * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
304 * ($tags can be an array of strings or a single string)
305 * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
306 * ($tags can be an array of strings or a single string)
307 *
308 * @param string $mode clean mode
309 * @param tags array $tags array of tags
310 * @return boolean true if no problem
311 */
312 public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
313 {
314 // We use this protected method to hide the recursive stuff
315 clearstatcache();
316 return $this->_clean($this->_options['cache_dir'], $mode, $tags);
317 }
318
319 /**
320 * Return an array of stored cache ids
321 *
322 * @return array array of stored cache ids (string)
323 */
324 public function getIds()
325 {
326 return $this->_get($this->_options['cache_dir'], 'ids', array());
327 }
328
329 /**
330 * Return an array of stored tags
331 *
332 * @return array array of stored tags (string)
333 */
334 public function getTags()
335 {
336 return $this->_get($this->_options['cache_dir'], 'tags', array());
337 }
338
339 /**
340 * Return an array of stored cache ids which match given tags
341 *
342 * In case of multiple tags, a logical AND is made between tags
343 *
344 * @param array $tags array of tags
345 * @return array array of matching cache ids (string)
346 */
347 public function getIdsMatchingTags($tags = array())
348 {
349 return $this->_get($this->_options['cache_dir'], 'matching', $tags);
350 }
351
352 /**
353 * Return an array of stored cache ids which don't match given tags
354 *
355 * In case of multiple tags, a logical OR is made between tags
356 *
357 * @param array $tags array of tags
358 * @return array array of not matching cache ids (string)
359 */
360 public function getIdsNotMatchingTags($tags = array())
361 {
362 return $this->_get($this->_options['cache_dir'], 'notMatching', $tags);
363 }
364
365 /**
366 * Return an array of stored cache ids which match any given tags
367 *
368 * In case of multiple tags, a logical AND is made between tags
369 *
370 * @param array $tags array of tags
371 * @return array array of any matching cache ids (string)
372 */
373 public function getIdsMatchingAnyTags($tags = array())
374 {
375 return $this->_get($this->_options['cache_dir'], 'matchingAny', $tags);
376 }
377
378 /**
379 * Return the filling percentage of the backend storage
380 *
381 * @throws Zend_Cache_Exception
382 * @return int integer between 0 and 100
383 */
384 public function getFillingPercentage()
385 {
386 $free = disk_free_space($this->_options['cache_dir']);
387 $total = disk_total_space($this->_options['cache_dir']);
388 if ($total == 0) {
389 Zend_Cache::throwException('can\'t get disk_total_space');
390 } else {
391 if ($free >= $total) {
392 return 100;
393 }
394 return ((int) (100. * ($total - $free) / $total));
395 }
396 }
397
398 /**
399 * Return an array of metadatas for the given cache id
400 *
401 * The array must include these keys :
402 * - expire : the expire timestamp
403 * - tags : a string array of tags
404 * - mtime : timestamp of last modification time
405 *
406 * @param string $id cache id
407 * @return array array of metadatas (false if the cache id is not found)
408 */
409 public function getMetadatas($id)
410 {
411 $metadatas = $this->_getMetadatas($id);
412 if (!$metadatas) {
413 return false;
414 }
415 if (time() > $metadatas['expire']) {
416 return false;
417 }
418 return array(
419 'expire' => $metadatas['expire'],
420 'tags' => $metadatas['tags'],
421 'mtime' => $metadatas['mtime']
422 );
423 }
424
425 /**
426 * Give (if possible) an extra lifetime to the given cache id
427 *
428 * @param string $id cache id
429 * @param int $extraLifetime
430 * @return boolean true if ok
431 */
432 public function touch($id, $extraLifetime)
433 {
434 $metadatas = $this->_getMetadatas($id);
435 if (!$metadatas) {
436 return false;
437 }
438 if (time() > $metadatas['expire']) {
439 return false;
440 }
441 $newMetadatas = array(
442 'hash' => $metadatas['hash'],
443 'mtime' => time(),
444 'expire' => $metadatas['expire'] + $extraLifetime,
445 'tags' => $metadatas['tags']
446 );
447 $res = $this->_setMetadatas($id, $newMetadatas);
448 if (!$res) {
449 return false;
450 }
451 return true;
452 }
453
454 /**
455 * Return an associative array of capabilities (booleans) of the backend
456 *
457 * The array must include these keys :
458 * - automatic_cleaning (is automating cleaning necessary)
459 * - tags (are tags supported)
460 * - expired_read (is it possible to read expired cache records
461 * (for doNotTestCacheValidity option for example))
462 * - priority does the backend deal with priority when saving
463 * - infinite_lifetime (is infinite lifetime can work with this backend)
464 * - get_list (is it possible to get the list of cache ids and the complete list of tags)
465 *
466 * @return array associative of with capabilities
467 */
468 public function getCapabilities()
469 {
470 return array(
471 'automatic_cleaning' => true,
472 'tags' => true,
473 'expired_read' => true,
474 'priority' => false,
475 'infinite_lifetime' => true,
476 'get_list' => true
477 );
478 }
479
480 /**
481 * PUBLIC METHOD FOR UNIT TESTING ONLY !
482 *
483 * Force a cache record to expire
484 *
485 * @param string $id cache id
486 */
487 public function ___expire($id)
488 {
489 $metadatas = $this->_getMetadatas($id);
490 if ($metadatas) {
491 $metadatas['expire'] = 1;
492 $this->_setMetadatas($id, $metadatas);
493 }
494 }
495
496 /**
497 * Get a metadatas record
498 *
499 * @param string $id Cache id
500 * @return array|false Associative array of metadatas
501 */
502 protected function _getMetadatas($id)
503 {
504 if (isset($this->_metadatasArray[$id])) {
505 return $this->_metadatasArray[$id];
506 } else {
507 $metadatas = $this->_loadMetadatas($id);
508 if (!$metadatas) {
509 return false;
510 }
511 $this->_setMetadatas($id, $metadatas, false);
512 return $metadatas;
513 }
514 }
515
516 /**
517 * Set a metadatas record
518 *
519 * @param string $id Cache id
520 * @param array $metadatas Associative array of metadatas
521 * @param boolean $save optional pass false to disable saving to file
522 * @return boolean True if no problem
523 */
524 protected function _setMetadatas($id, $metadatas, $save = true)
525 {
526 if (count($this->_metadatasArray) >= $this->_options['metadatas_array_max_size']) {
527 $n = (int) ($this->_options['metadatas_array_max_size'] / 10);
528 $this->_metadatasArray = array_slice($this->_metadatasArray, $n);
529 }
530 if ($save) {
531 $result = $this->_saveMetadatas($id, $metadatas);
532 if (!$result) {
533 return false;
534 }
535 }
536 $this->_metadatasArray[$id] = $metadatas;
537 return true;
538 }
539
540 /**
541 * Drop a metadata record
542 *
543 * @param string $id Cache id
544 * @return boolean True if no problem
545 */
546 protected function _delMetadatas($id)
547 {
548 if (isset($this->_metadatasArray[$id])) {
549 unset($this->_metadatasArray[$id]);
550 }
551 $file = $this->_metadatasFile($id);
552 return $this->_remove($file);
553 }
554
555 /**
556 * Clear the metadatas array
557 *
558 * @return void
559 */
560 protected function _cleanMetadatas()
561 {
562 $this->_metadatasArray = array();
563 }
564
565 /**
566 * Load metadatas from disk
567 *
568 * @param string $id Cache id
569 * @return array|false Metadatas associative array
570 */
571 protected function _loadMetadatas($id)
572 {
573 $file = $this->_metadatasFile($id);
574 $result = $this->_fileGetContents($file);
575 if (!$result) {
576 return false;
577 }
578 $tmp = @unserialize($result);
579 return $tmp;
580 }
581
582 /**
583 * Save metadatas to disk
584 *
585 * @param string $id Cache id
586 * @param array $metadatas Associative array
587 * @return boolean True if no problem
588 */
589 protected function _saveMetadatas($id, $metadatas)
590 {
591 $file = $this->_metadatasFile($id);
592 $result = $this->_filePutContents($file, serialize($metadatas));
593 if (!$result) {
594 return false;
595 }
596 return true;
597 }
598
599 /**
600 * Make and return a file name (with path) for metadatas
601 *
602 * @param string $id Cache id
603 * @return string Metadatas file name (with path)
604 */
605 protected function _metadatasFile($id)
606 {
607 $path = $this->_path($id);
608 $fileName = $this->_idToFileName('internal-metadatas---' . $id);
609 return $path . $fileName;
610 }
611
612 /**
613 * Check if the given filename is a metadatas one
614 *
615 * @param string $fileName File name
616 * @return boolean True if it's a metadatas one
617 */
618 protected function _isMetadatasFile($fileName)
619 {
620 $id = $this->_fileNameToId($fileName);
621 if (substr($id, 0, 21) == 'internal-metadatas---') {
622 return true;
623 } else {
624 return false;
625 }
626 }
627
628 /**
629 * Remove a file
630 *
631 * If we can't remove the file (because of locks or any problem), we will touch
632 * the file to invalidate it
633 *
634 * @param string $file Complete file path
635 * @return boolean True if ok
636 */
637 protected function _remove($file)
638 {
639 if (!is_file($file)) {
640 return false;
641 }
642 if (!@unlink($file)) {
643 # we can't remove the file (because of locks or any problem)
644 $this->_log("Zend_Cache_Backend_File::_remove() : we can't remove $file");
645 return false;
646 }
647 return true;
648 }
649
650 /**
651 * Clean some cache records (protected method used for recursive stuff)
652 *
653 * Available modes are :
654 * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache entries ($tags is not used)
655 * Zend_Cache::CLEANING_MODE_OLD => remove too old cache entries ($tags is not used)
656 * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries matching all given tags
657 * ($tags can be an array of strings or a single string)
658 * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
659 * ($tags can be an array of strings or a single string)
660 * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
661 * ($tags can be an array of strings or a single string)
662 *
663 * @param string $dir Directory to clean
664 * @param string $mode Clean mode
665 * @param array $tags Array of tags
666 * @throws Zend_Cache_Exception
667 * @return boolean True if no problem
668 */
669 protected function _clean($dir, $mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
670 {
671 if (!is_dir($dir)) {
672 return false;
673 }
674 $result = true;
675 $prefix = $this->_options['file_name_prefix'];
676 $glob = @glob($dir . $prefix . '--*');
677 if ($glob === false) {
678 // On some systems it is impossible to distinguish between empty match and an error.
679 return true;
680 }
681 foreach ($glob as $file) {
682 if (is_file($file)) {
683 $fileName = basename($file);
684 if ($this->_isMetadatasFile($fileName)) {
685 // in CLEANING_MODE_ALL, we drop anything, even remainings old metadatas files
686 if ($mode != Zend_Cache::CLEANING_MODE_ALL) {
687 continue;
688 }
689 }
690 $id = $this->_fileNameToId($fileName);
691 $metadatas = $this->_getMetadatas($id);
692 if ($metadatas === FALSE) {
693 $metadatas = array('expire' => 1, 'tags' => array());
694 }
695 switch ($mode) {
696 case Zend_Cache::CLEANING_MODE_ALL:
697 $res = $this->remove($id);
698 if (!$res) {
699 // in this case only, we accept a problem with the metadatas file drop
700 $res = $this->_remove($file);
701 }
702 $result = $result && $res;
703 break;
704 case Zend_Cache::CLEANING_MODE_OLD:
705 if (time() > $metadatas['expire']) {
706 $result = $this->remove($id) && $result;
707 }
708 break;
709 case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
710 $matching = true;
711 foreach ($tags as $tag) {
712 if (!in_array($tag, $metadatas['tags'])) {
713 $matching = false;
714 break;
715 }
716 }
717 if ($matching) {
718 $result = $this->remove($id) && $result;
719 }
720 break;
721 case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
722 $matching = false;
723 foreach ($tags as $tag) {
724 if (in_array($tag, $metadatas['tags'])) {
725 $matching = true;
726 break;
727 }
728 }
729 if (!$matching) {
730 $result = $this->remove($id) && $result;
731 }
732 break;
733 case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
734 $matching = false;
735 foreach ($tags as $tag) {
736 if (in_array($tag, $metadatas['tags'])) {
737 $matching = true;
738 break;
739 }
740 }
741 if ($matching) {
742 $result = $this->remove($id) && $result;
743 }
744 break;
745 default:
746 Zend_Cache::throwException('Invalid mode for clean() method');
747 break;
748 }
749 }
750 if ((is_dir($file)) and ($this->_options['hashed_directory_level']>0)) {
751 // Recursive call
752 $result = $this->_clean($file . DIRECTORY_SEPARATOR, $mode, $tags) && $result;
753 if ($mode == Zend_Cache::CLEANING_MODE_ALL) {
754 // we try to drop the structure too
755 @rmdir($file);
756 }
757 }
758 }
759 return $result;
760 }
761
762 protected function _get($dir, $mode, $tags = array())
763 {
764 if (!is_dir($dir)) {
765 return false;
766 }
767 $result = array();
768 $prefix = $this->_options['file_name_prefix'];
769 $glob = @glob($dir . $prefix . '--*');
770 if ($glob === false) {
771 // On some systems it is impossible to distinguish between empty match and an error.
772 return array();
773 }
774 foreach ($glob as $file) {
775 if (is_file($file)) {
776 $fileName = basename($file);
777 $id = $this->_fileNameToId($fileName);
778 $metadatas = $this->_getMetadatas($id);
779 if ($metadatas === FALSE) {
780 continue;
781 }
782 if (time() > $metadatas['expire']) {
783 continue;
784 }
785 switch ($mode) {
786 case 'ids':
787 $result[] = $id;
788 break;
789 case 'tags':
790 $result = array_unique(array_merge($result, $metadatas['tags']));
791 break;
792 case 'matching':
793 $matching = true;
794 foreach ($tags as $tag) {
795 if (!in_array($tag, $metadatas['tags'])) {
796 $matching = false;
797 break;
798 }
799 }
800 if ($matching) {
801 $result[] = $id;
802 }
803 break;
804 case 'notMatching':
805 $matching = false;
806 foreach ($tags as $tag) {
807 if (in_array($tag, $metadatas['tags'])) {
808 $matching = true;
809 break;
810 }
811 }
812 if (!$matching) {
813 $result[] = $id;
814 }
815 break;
816 case 'matchingAny':
817 $matching = false;
818 foreach ($tags as $tag) {
819 if (in_array($tag, $metadatas['tags'])) {
820 $matching = true;
821 break;
822 }
823 }
824 if ($matching) {
825 $result[] = $id;
826 }
827 break;
828 default:
829 Zend_Cache::throwException('Invalid mode for _get() method');
830 break;
831 }
832 }
833 if ((is_dir($file)) and ($this->_options['hashed_directory_level']>0)) {
834 // Recursive call
835 $recursiveRs = $this->_get($file . DIRECTORY_SEPARATOR, $mode, $tags);
836 if ($recursiveRs === false) {
837 $this->_log('Zend_Cache_Backend_File::_get() / recursive call : can\'t list entries of "'.$file.'"');
838 } else {
839 $result = array_unique(array_merge($result, $recursiveRs));
840 }
841 }
842 }
843 return array_unique($result);
844 }
845
846 /**
847 * Compute & return the expire time
848 *
849 * @return int expire time (unix timestamp)
850 */
851 protected function _expireTime($lifetime)
852 {
853 if ($lifetime === null) {
854 return 9999999999;
855 }
856 return time() + $lifetime;
857 }
858
859 /**
860 * Make a control key with the string containing datas
861 *
862 * @param string $data Data
863 * @param string $controlType Type of control 'md5', 'crc32' or 'strlen'
864 * @throws Zend_Cache_Exception
865 * @return string Control key
866 */
867 protected function _hash($data, $controlType)
868 {
869 switch ($controlType) {
870 case 'md5':
871 return md5($data);
872 case 'crc32':
873 return crc32($data);
874 case 'strlen':
875 return strlen($data);
876 case 'adler32':
877 return hash('adler32', $data);
878 default:
879 Zend_Cache::throwException("Incorrect hash function : $controlType");
880 }
881 }
882
883 /**
884 * Transform a cache id into a file name and return it
885 *
886 * @param string $id Cache id
887 * @return string File name
888 */
889 protected function _idToFileName($id)
890 {
891 $prefix = $this->_options['file_name_prefix'];
892 $result = $prefix . '---' . $id;
893 return $result;
894 }
895
896 /**
897 * Make and return a file name (with path)
898 *
899 * @param string $id Cache id
900 * @return string File name (with path)
901 */
902 protected function _file($id)
903 {
904 $path = $this->_path($id);
905 $fileName = $this->_idToFileName($id);
906 return $path . $fileName;
907 }
908
909 /**
910 * Return the complete directory path of a filename (including hashedDirectoryStructure)
911 *
912 * @param string $id Cache id
913 * @param boolean $parts if true, returns array of directory parts instead of single string
914 * @return string Complete directory path
915 */
916 protected function _path($id, $parts = false)
917 {
918 $partsArray = array();
919 $root = $this->_options['cache_dir'];
920 $prefix = $this->_options['file_name_prefix'];
921 if ($this->_options['hashed_directory_level']>0) {
922 $hash = hash('adler32', $id);
923 for ($i=0 ; $i < $this->_options['hashed_directory_level'] ; $i++) {
924 $root = $root . $prefix . '--' . substr($hash, 0, $i + 1) . DIRECTORY_SEPARATOR;
925 $partsArray[] = $root;
926 }
927 }
928 if ($parts) {
929 return $partsArray;
930 } else {
931 return $root;
932 }
933 }
934
935 /**
936 * Make the directory strucuture for the given id
937 *
938 * @param string $id cache id
939 * @return boolean true
940 */
941 protected function _recursiveMkdirAndChmod($id)
942 {
943 if ($this->_options['hashed_directory_level'] <=0) {
944 return true;
945 }
946 $partsArray = $this->_path($id, true);
947 foreach ($partsArray as $part) {
948 if (!is_dir($part)) {
949 @mkdir($part, $this->_options['hashed_directory_perm']);
950 @chmod($part, $this->_options['hashed_directory_perm']); // see #ZF-320 (this line is required in some configurations)
951 }
952 }
953 return true;
954 }
955
956 /**
957 * Test if the given cache id is available (and still valid as a cache record)
958 *
959 * @param string $id Cache id
960 * @param boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
961 * @return boolean|mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record
962 */
963 protected function _test($id, $doNotTestCacheValidity)
964 {
965 $metadatas = $this->_getMetadatas($id);
966 if (!$metadatas) {
967 return false;
968 }
969 if ($doNotTestCacheValidity || (time() <= $metadatas['expire'])) {
970 return $metadatas['mtime'];
971 }
972 return false;
973 }
974
975 /**
976 * Return the file content of the given file
977 *
978 * @param string $file File complete path
979 * @return string File content (or false if problem)
980 */
981 protected function _fileGetContents($file)
982 {
983 $result = false;
984 if (!is_file($file)) {
985 return false;
986 }
987 $f = @fopen($file, 'rb');
988 if ($f) {
989 if ($this->_options['file_locking']) @flock($f, LOCK_SH);
990 $result = stream_get_contents($f);
991 if ($this->_options['file_locking']) @flock($f, LOCK_UN);
992 @fclose($f);
993 }
994 return $result;
995 }
996
997 /**
998 * Put the given string into the given file
999 *
1000 * @param string $file File complete path
1001 * @param string $string String to put in file
1002 * @return boolean true if no problem
1003 */
1004 protected function _filePutContents($file, $string)
1005 {
1006 $result = false;
1007 $f = @fopen($file, 'ab+');
1008 if ($f) {
1009 if ($this->_options['file_locking']) @flock($f, LOCK_EX);
1010 fseek($f, 0);
1011 ftruncate($f, 0);
1012 $tmp = @fwrite($f, $string);
1013 if (!($tmp === FALSE)) {
1014 $result = true;
1015 }
1016 @fclose($f);
1017 }
1018 @chmod($file, $this->_options['cache_file_perm']);
1019 return $result;
1020 }
1021
1022 /**
1023 * Transform a file name into cache id and return it
1024 *
1025 * @param string $fileName File name
1026 * @return string Cache id
1027 */
1028 protected function _fileNameToId($fileName)
1029 {
1030 $prefix = $this->_options['file_name_prefix'];
1031 return preg_replace('~^' . $prefix . '---(.*)$~', '$1', $fileName);
1032 }
1033
1034}
diff --git a/inc/3rdparty/libraries/Zend/Cache/Backend/Interface.php b/inc/3rdparty/libraries/Zend/Cache/Backend/Interface.php
deleted file mode 100644
index 3f44e2e1..00000000
--- a/inc/3rdparty/libraries/Zend/Cache/Backend/Interface.php
+++ /dev/null
@@ -1,99 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @subpackage Zend_Cache_Backend
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
19 * @license http://framework.zend.com/license/new-bsd New BSD License
20 * @version $Id: Interface.php 24593 2012-01-05 20:35:02Z matthew $
21 */
22
23
24/**
25 * @package Zend_Cache
26 * @subpackage Zend_Cache_Backend
27 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
28 * @license http://framework.zend.com/license/new-bsd New BSD License
29 */
30interface Zend_Cache_Backend_Interface
31{
32 /**
33 * Set the frontend directives
34 *
35 * @param array $directives assoc of directives
36 */
37 public function setDirectives($directives);
38
39 /**
40 * Test if a cache is available for the given id and (if yes) return it (false else)
41 *
42 * Note : return value is always "string" (unserialization is done by the core not by the backend)
43 *
44 * @param string $id Cache id
45 * @param boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
46 * @return string|false cached datas
47 */
48 public function load($id, $doNotTestCacheValidity = false);
49
50 /**
51 * Test if a cache is available or not (for the given id)
52 *
53 * @param string $id cache id
54 * @return mixed|false (a cache is not available) or "last modified" timestamp (int) of the available cache record
55 */
56 public function test($id);
57
58 /**
59 * Save some string datas into a cache record
60 *
61 * Note : $data is always "string" (serialization is done by the
62 * core not by the backend)
63 *
64 * @param string $data Datas to cache
65 * @param string $id Cache id
66 * @param array $tags Array of strings, the cache record will be tagged by each string entry
67 * @param int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
68 * @return boolean true if no problem
69 */
70 public function save($data, $id, $tags = array(), $specificLifetime = false);
71
72 /**
73 * Remove a cache record
74 *
75 * @param string $id Cache id
76 * @return boolean True if no problem
77 */
78 public function remove($id);
79
80 /**
81 * Clean some cache records
82 *
83 * Available modes are :
84 * Zend_Cache::CLEANING_MODE_ALL (default) => remove all cache entries ($tags is not used)
85 * Zend_Cache::CLEANING_MODE_OLD => remove too old cache entries ($tags is not used)
86 * Zend_Cache::CLEANING_MODE_MATCHING_TAG => remove cache entries matching all given tags
87 * ($tags can be an array of strings or a single string)
88 * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
89 * ($tags can be an array of strings or a single string)
90 * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
91 * ($tags can be an array of strings or a single string)
92 *
93 * @param string $mode Clean mode
94 * @param array $tags Array of tags
95 * @return boolean true if no problem
96 */
97 public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array());
98
99}
diff --git a/inc/3rdparty/libraries/Zend/Cache/Core.php b/inc/3rdparty/libraries/Zend/Cache/Core.php
deleted file mode 100644
index e3588636..00000000
--- a/inc/3rdparty/libraries/Zend/Cache/Core.php
+++ /dev/null
@@ -1,765 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
18 * @license http://framework.zend.com/license/new-bsd New BSD License
19 * @version $Id: Core.php 24989 2012-06-21 07:24:13Z mabe $
20 */
21
22
23/**
24 * @package Zend_Cache
25 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
26 * @license http://framework.zend.com/license/new-bsd New BSD License
27 */
28class Zend_Cache_Core
29{
30 /**
31 * Messages
32 */
33 const BACKEND_NOT_SUPPORTS_TAG = 'tags are not supported by the current backend';
34 const BACKEND_NOT_IMPLEMENTS_EXTENDED_IF = 'Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available';
35
36 /**
37 * Backend Object
38 *
39 * @var Zend_Cache_Backend_Interface $_backend
40 */
41 protected $_backend = null;
42
43 /**
44 * Available options
45 *
46 * ====> (boolean) write_control :
47 * - Enable / disable write control (the cache is read just after writing to detect corrupt entries)
48 * - Enable write control will lightly slow the cache writing but not the cache reading
49 * Write control can detect some corrupt cache files but maybe it's not a perfect control
50 *
51 * ====> (boolean) caching :
52 * - Enable / disable caching
53 * (can be very useful for the debug of cached scripts)
54 *
55 * =====> (string) cache_id_prefix :
56 * - prefix for cache ids (namespace)
57 *
58 * ====> (boolean) automatic_serialization :
59 * - Enable / disable automatic serialization
60 * - It can be used to save directly datas which aren't strings (but it's slower)
61 *
62 * ====> (int) automatic_cleaning_factor :
63 * - Disable / Tune the automatic cleaning process
64 * - The automatic cleaning process destroy too old (for the given life time)
65 * cache files when a new cache file is written :
66 * 0 => no automatic cache cleaning
67 * 1 => systematic cache cleaning
68 * x (integer) > 1 => automatic cleaning randomly 1 times on x cache write
69 *
70 * ====> (int) lifetime :
71 * - Cache lifetime (in seconds)
72 * - If null, the cache is valid forever.
73 *
74 * ====> (boolean) logging :
75 * - If set to true, logging is activated (but the system is slower)
76 *
77 * ====> (boolean) ignore_user_abort
78 * - If set to true, the core will set the ignore_user_abort PHP flag inside the
79 * save() method to avoid cache corruptions in some cases (default false)
80 *
81 * @var array $_options available options
82 */
83 protected $_options = array(
84 'write_control' => true,
85 'caching' => true,
86 'cache_id_prefix' => null,
87 'automatic_serialization' => false,
88 'automatic_cleaning_factor' => 10,
89 'lifetime' => 3600,
90 'logging' => false,
91 'logger' => null,
92 'ignore_user_abort' => false
93 );
94
95 /**
96 * Array of options which have to be transfered to backend
97 *
98 * @var array $_directivesList
99 */
100 protected static $_directivesList = array('lifetime', 'logging', 'logger');
101
102 /**
103 * Not used for the core, just a sort a hint to get a common setOption() method (for the core and for frontends)
104 *
105 * @var array $_specificOptions
106 */
107 protected $_specificOptions = array();
108
109 /**
110 * Last used cache id
111 *
112 * @var string $_lastId
113 */
114 private $_lastId = null;
115
116 /**
117 * True if the backend implements Zend_Cache_Backend_ExtendedInterface
118 *
119 * @var boolean $_extendedBackend
120 */
121 protected $_extendedBackend = false;
122
123 /**
124 * Array of capabilities of the backend (only if it implements Zend_Cache_Backend_ExtendedInterface)
125 *
126 * @var array
127 */
128 protected $_backendCapabilities = array();
129
130 /**
131 * Constructor
132 *
133 * @param array|Zend_Config $options Associative array of options or Zend_Config instance
134 * @throws Zend_Cache_Exception
135 * @return void
136 */
137 public function __construct($options = array())
138 {
139 if ($options instanceof Zend_Config) {
140 $options = $options->toArray();
141 }
142 if (!is_array($options)) {
143 Zend_Cache::throwException("Options passed were not an array"
144 . " or Zend_Config instance.");
145 }
146 while (list($name, $value) = each($options)) {
147 $this->setOption($name, $value);
148 }
149 $this->_loggerSanity();
150 }
151
152 /**
153 * Set options using an instance of type Zend_Config
154 *
155 * @param Zend_Config $config
156 * @return Zend_Cache_Core
157 */
158 public function setConfig(Zend_Config $config)
159 {
160 $options = $config->toArray();
161 while (list($name, $value) = each($options)) {
162 $this->setOption($name, $value);
163 }
164 return $this;
165 }
166
167 /**
168 * Set the backend
169 *
170 * @param Zend_Cache_Backend $backendObject
171 * @throws Zend_Cache_Exception
172 * @return void
173 */
174 public function setBackend(Zend_Cache_Backend $backendObject)
175 {
176 $this->_backend= $backendObject;
177 // some options (listed in $_directivesList) have to be given
178 // to the backend too (even if they are not "backend specific")
179 $directives = array();
180 foreach (Zend_Cache_Core::$_directivesList as $directive) {
181 $directives[$directive] = $this->_options[$directive];
182 }
183 $this->_backend->setDirectives($directives);
184 if (in_array('Zend_Cache_Backend_ExtendedInterface', class_implements($this->_backend))) {
185 $this->_extendedBackend = true;
186 $this->_backendCapabilities = $this->_backend->getCapabilities();
187 }
188
189 }
190
191 /**
192 * Returns the backend
193 *
194 * @return Zend_Cache_Backend backend object
195 */
196 public function getBackend()
197 {
198 return $this->_backend;
199 }
200
201 /**
202 * Public frontend to set an option
203 *
204 * There is an additional validation (relatively to the protected _setOption method)
205 *
206 * @param string $name Name of the option
207 * @param mixed $value Value of the option
208 * @throws Zend_Cache_Exception
209 * @return void
210 */
211 public function setOption($name, $value)
212 {
213 if (!is_string($name)) {
214 Zend_Cache::throwException("Incorrect option name!");
215 }
216 $name = strtolower($name);
217 if (array_key_exists($name, $this->_options)) {
218 // This is a Core option
219 $this->_setOption($name, $value);
220 return;
221 }
222 if (array_key_exists($name, $this->_specificOptions)) {
223 // This a specic option of this frontend
224 $this->_specificOptions[$name] = $value;
225 return;
226 }
227 }
228
229 /**
230 * Public frontend to get an option value
231 *
232 * @param string $name Name of the option
233 * @throws Zend_Cache_Exception
234 * @return mixed option value
235 */
236 public function getOption($name)
237 {
238 $name = strtolower($name);
239
240 if (array_key_exists($name, $this->_options)) {
241 // This is a Core option
242 return $this->_options[$name];
243 }
244
245 if (array_key_exists($name, $this->_specificOptions)) {
246 // This a specic option of this frontend
247 return $this->_specificOptions[$name];
248 }
249
250 Zend_Cache::throwException("Incorrect option name : $name");
251 }
252
253 /**
254 * Set an option
255 *
256 * @param string $name Name of the option
257 * @param mixed $value Value of the option
258 * @throws Zend_Cache_Exception
259 * @return void
260 */
261 private function _setOption($name, $value)
262 {
263 if (!is_string($name) || !array_key_exists($name, $this->_options)) {
264 Zend_Cache::throwException("Incorrect option name : $name");
265 }
266 if ($name == 'lifetime' && empty($value)) {
267 $value = null;
268 }
269 $this->_options[$name] = $value;
270 }
271
272 /**
273 * Force a new lifetime
274 *
275 * The new value is set for the core/frontend but for the backend too (directive)
276 *
277 * @param int $newLifetime New lifetime (in seconds)
278 * @return void
279 */
280 public function setLifetime($newLifetime)
281 {
282 $this->_options['lifetime'] = $newLifetime;
283 $this->_backend->setDirectives(array(
284 'lifetime' => $newLifetime
285 ));
286 }
287
288 /**
289 * Test if a cache is available for the given id and (if yes) return it (false else)
290 *
291 * @param string $id Cache id
292 * @param boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
293 * @param boolean $doNotUnserialize Do not serialize (even if automatic_serialization is true) => for internal use
294 * @return mixed|false Cached datas
295 */
296 public function load($id, $doNotTestCacheValidity = false, $doNotUnserialize = false)
297 {
298 if (!$this->_options['caching']) {
299 return false;
300 }
301 $id = $this->_id($id); // cache id may need prefix
302 $this->_lastId = $id;
303 self::_validateIdOrTag($id);
304
305 $this->_log("Zend_Cache_Core: load item '{$id}'", 7);
306 $data = $this->_backend->load($id, $doNotTestCacheValidity);
307 if ($data===false) {
308 // no cache available
309 return false;
310 }
311 if ((!$doNotUnserialize) && $this->_options['automatic_serialization']) {
312 // we need to unserialize before sending the result
313 return unserialize($data);
314 }
315 return $data;
316 }
317
318 /**
319 * Test if a cache is available for the given id
320 *
321 * @param string $id Cache id
322 * @return int|false Last modified time of cache entry if it is available, false otherwise
323 */
324 public function test($id)
325 {
326 if (!$this->_options['caching']) {
327 return false;
328 }
329 $id = $this->_id($id); // cache id may need prefix
330 self::_validateIdOrTag($id);
331 $this->_lastId = $id;
332
333 $this->_log("Zend_Cache_Core: test item '{$id}'", 7);
334 return $this->_backend->test($id);
335 }
336
337 /**
338 * Save some data in a cache
339 *
340 * @param mixed $data Data to put in cache (can be another type than string if automatic_serialization is on)
341 * @param string $id Cache id (if not set, the last cache id will be used)
342 * @param array $tags Cache tags
343 * @param int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
344 * @param int $priority integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends
345 * @throws Zend_Cache_Exception
346 * @return boolean True if no problem
347 */
348 public function save($data, $id = null, $tags = array(), $specificLifetime = false, $priority = 8)
349 {
350 if (!$this->_options['caching']) {
351 return true;
352 }
353 if ($id === null) {
354 $id = $this->_lastId;
355 } else {
356 $id = $this->_id($id);
357 }
358 self::_validateIdOrTag($id);
359 self::_validateTagsArray($tags);
360 if ($this->_options['automatic_serialization']) {
361 // we need to serialize datas before storing them
362 $data = serialize($data);
363 } else {
364 if (!is_string($data)) {
365 Zend_Cache::throwException("Datas must be string or set automatic_serialization = true");
366 }
367 }
368
369 // automatic cleaning
370 if ($this->_options['automatic_cleaning_factor'] > 0) {
371 $rand = rand(1, $this->_options['automatic_cleaning_factor']);
372 if ($rand==1) {
373 // new way || deprecated way
374 if ($this->_extendedBackend || method_exists($this->_backend, 'isAutomaticCleaningAvailable')) {
375 $this->_log("Zend_Cache_Core::save(): automatic cleaning running", 7);
376 $this->clean(Zend_Cache::CLEANING_MODE_OLD);
377 } else {
378 $this->_log("Zend_Cache_Core::save(): automatic cleaning is not available/necessary with current backend", 4);
379 }
380 }
381 }
382
383 $this->_log("Zend_Cache_Core: save item '{$id}'", 7);
384 if ($this->_options['ignore_user_abort']) {
385 $abort = ignore_user_abort(true);
386 }
387 if (($this->_extendedBackend) && ($this->_backendCapabilities['priority'])) {
388 $result = $this->_backend->save($data, $id, $tags, $specificLifetime, $priority);
389 } else {
390 $result = $this->_backend->save($data, $id, $tags, $specificLifetime);
391 }
392 if ($this->_options['ignore_user_abort']) {
393 ignore_user_abort($abort);
394 }
395
396 if (!$result) {
397 // maybe the cache is corrupted, so we remove it !
398 $this->_log("Zend_Cache_Core::save(): failed to save item '{$id}' -> removing it", 4);
399 $this->_backend->remove($id);
400 return false;
401 }
402
403 if ($this->_options['write_control']) {
404 $data2 = $this->_backend->load($id, true);
405 if ($data!=$data2) {
406 $this->_log("Zend_Cache_Core::save(): write control of item '{$id}' failed -> removing it", 4);
407 $this->_backend->remove($id);
408 return false;
409 }
410 }
411
412 return true;
413 }
414
415 /**
416 * Remove a cache
417 *
418 * @param string $id Cache id to remove
419 * @return boolean True if ok
420 */
421 public function remove($id)
422 {
423 if (!$this->_options['caching']) {
424 return true;
425 }
426 $id = $this->_id($id); // cache id may need prefix
427 self::_validateIdOrTag($id);
428
429 $this->_log("Zend_Cache_Core: remove item '{$id}'", 7);
430 return $this->_backend->remove($id);
431 }
432
433 /**
434 * Clean cache entries
435 *
436 * Available modes are :
437 * 'all' (default) => remove all cache entries ($tags is not used)
438 * 'old' => remove too old cache entries ($tags is not used)
439 * 'matchingTag' => remove cache entries matching all given tags
440 * ($tags can be an array of strings or a single string)
441 * 'notMatchingTag' => remove cache entries not matching one of the given tags
442 * ($tags can be an array of strings or a single string)
443 * 'matchingAnyTag' => remove cache entries matching any given tags
444 * ($tags can be an array of strings or a single string)
445 *
446 * @param string $mode
447 * @param array|string $tags
448 * @throws Zend_Cache_Exception
449 * @return boolean True if ok
450 */
451 public function clean($mode = 'all', $tags = array())
452 {
453 if (!$this->_options['caching']) {
454 return true;
455 }
456 if (!in_array($mode, array(Zend_Cache::CLEANING_MODE_ALL,
457 Zend_Cache::CLEANING_MODE_OLD,
458 Zend_Cache::CLEANING_MODE_MATCHING_TAG,
459 Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG,
460 Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG))) {
461 Zend_Cache::throwException('Invalid cleaning mode');
462 }
463 self::_validateTagsArray($tags);
464
465 return $this->_backend->clean($mode, $tags);
466 }
467
468 /**
469 * Return an array of stored cache ids which match given tags
470 *
471 * In case of multiple tags, a logical AND is made between tags
472 *
473 * @param array $tags array of tags
474 * @return array array of matching cache ids (string)
475 */
476 public function getIdsMatchingTags($tags = array())
477 {
478 if (!$this->_extendedBackend) {
479 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
480 }
481 if (!($this->_backendCapabilities['tags'])) {
482 Zend_Cache::throwException(self::BACKEND_NOT_SUPPORTS_TAG);
483 }
484
485 $ids = $this->_backend->getIdsMatchingTags($tags);
486
487 // we need to remove cache_id_prefix from ids (see #ZF-6178, #ZF-7600)
488 if (isset($this->_options['cache_id_prefix']) && $this->_options['cache_id_prefix'] !== '') {
489 $prefix = & $this->_options['cache_id_prefix'];
490 $prefixLen = strlen($prefix);
491 foreach ($ids as &$id) {
492 if (strpos($id, $prefix) === 0) {
493 $id = substr($id, $prefixLen);
494 }
495 }
496 }
497
498 return $ids;
499 }
500
501 /**
502 * Return an array of stored cache ids which don't match given tags
503 *
504 * In case of multiple tags, a logical OR is made between tags
505 *
506 * @param array $tags array of tags
507 * @return array array of not matching cache ids (string)
508 */
509 public function getIdsNotMatchingTags($tags = array())
510 {
511 if (!$this->_extendedBackend) {
512 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
513 }
514 if (!($this->_backendCapabilities['tags'])) {
515 Zend_Cache::throwException(self::BACKEND_NOT_SUPPORTS_TAG);
516 }
517
518 $ids = $this->_backend->getIdsNotMatchingTags($tags);
519
520 // we need to remove cache_id_prefix from ids (see #ZF-6178, #ZF-7600)
521 if (isset($this->_options['cache_id_prefix']) && $this->_options['cache_id_prefix'] !== '') {
522 $prefix = & $this->_options['cache_id_prefix'];
523 $prefixLen = strlen($prefix);
524 foreach ($ids as &$id) {
525 if (strpos($id, $prefix) === 0) {
526 $id = substr($id, $prefixLen);
527 }
528 }
529 }
530
531 return $ids;
532 }
533
534 /**
535 * Return an array of stored cache ids which match any given tags
536 *
537 * In case of multiple tags, a logical OR is made between tags
538 *
539 * @param array $tags array of tags
540 * @return array array of matching any cache ids (string)
541 */
542 public function getIdsMatchingAnyTags($tags = array())
543 {
544 if (!$this->_extendedBackend) {
545 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
546 }
547 if (!($this->_backendCapabilities['tags'])) {
548 Zend_Cache::throwException(self::BACKEND_NOT_SUPPORTS_TAG);
549 }
550
551 $ids = $this->_backend->getIdsMatchingAnyTags($tags);
552
553 // we need to remove cache_id_prefix from ids (see #ZF-6178, #ZF-7600)
554 if (isset($this->_options['cache_id_prefix']) && $this->_options['cache_id_prefix'] !== '') {
555 $prefix = & $this->_options['cache_id_prefix'];
556 $prefixLen = strlen($prefix);
557 foreach ($ids as &$id) {
558 if (strpos($id, $prefix) === 0) {
559 $id = substr($id, $prefixLen);
560 }
561 }
562 }
563
564 return $ids;
565 }
566
567 /**
568 * Return an array of stored cache ids
569 *
570 * @return array array of stored cache ids (string)
571 */
572 public function getIds()
573 {
574 if (!$this->_extendedBackend) {
575 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
576 }
577
578 $ids = $this->_backend->getIds();
579
580 // we need to remove cache_id_prefix from ids (see #ZF-6178, #ZF-7600)
581 if (isset($this->_options['cache_id_prefix']) && $this->_options['cache_id_prefix'] !== '') {
582 $prefix = & $this->_options['cache_id_prefix'];
583 $prefixLen = strlen($prefix);
584 foreach ($ids as &$id) {
585 if (strpos($id, $prefix) === 0) {
586 $id = substr($id, $prefixLen);
587 }
588 }
589 }
590
591 return $ids;
592 }
593
594 /**
595 * Return an array of stored tags
596 *
597 * @return array array of stored tags (string)
598 */
599 public function getTags()
600 {
601 if (!$this->_extendedBackend) {
602 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
603 }
604 if (!($this->_backendCapabilities['tags'])) {
605 Zend_Cache::throwException(self::BACKEND_NOT_SUPPORTS_TAG);
606 }
607 return $this->_backend->getTags();
608 }
609
610 /**
611 * Return the filling percentage of the backend storage
612 *
613 * @return int integer between 0 and 100
614 */
615 public function getFillingPercentage()
616 {
617 if (!$this->_extendedBackend) {
618 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
619 }
620 return $this->_backend->getFillingPercentage();
621 }
622
623 /**
624 * Return an array of metadatas for the given cache id
625 *
626 * The array will include these keys :
627 * - expire : the expire timestamp
628 * - tags : a string array of tags
629 * - mtime : timestamp of last modification time
630 *
631 * @param string $id cache id
632 * @return array array of metadatas (false if the cache id is not found)
633 */
634 public function getMetadatas($id)
635 {
636 if (!$this->_extendedBackend) {
637 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
638 }
639 $id = $this->_id($id); // cache id may need prefix
640 return $this->_backend->getMetadatas($id);
641 }
642
643 /**
644 * Give (if possible) an extra lifetime to the given cache id
645 *
646 * @param string $id cache id
647 * @param int $extraLifetime
648 * @return boolean true if ok
649 */
650 public function touch($id, $extraLifetime)
651 {
652 if (!$this->_extendedBackend) {
653 Zend_Cache::throwException(self::BACKEND_NOT_IMPLEMENTS_EXTENDED_IF);
654 }
655 $id = $this->_id($id); // cache id may need prefix
656
657 $this->_log("Zend_Cache_Core: touch item '{$id}'", 7);
658 return $this->_backend->touch($id, $extraLifetime);
659 }
660
661 /**
662 * Validate a cache id or a tag (security, reliable filenames, reserved prefixes...)
663 *
664 * Throw an exception if a problem is found
665 *
666 * @param string $string Cache id or tag
667 * @throws Zend_Cache_Exception
668 * @return void
669 */
670 protected static function _validateIdOrTag($string)
671 {
672 if (!is_string($string)) {
673 Zend_Cache::throwException('Invalid id or tag : must be a string');
674 }
675 if (substr($string, 0, 9) == 'internal-') {
676 Zend_Cache::throwException('"internal-*" ids or tags are reserved');
677 }
678 if (!preg_match('~^[a-zA-Z0-9_]+$~D', $string)) {
679 Zend_Cache::throwException("Invalid id or tag '$string' : must use only [a-zA-Z0-9_]");
680 }
681 }
682
683 /**
684 * Validate a tags array (security, reliable filenames, reserved prefixes...)
685 *
686 * Throw an exception if a problem is found
687 *
688 * @param array $tags Array of tags
689 * @throws Zend_Cache_Exception
690 * @return void
691 */
692 protected static function _validateTagsArray($tags)
693 {
694 if (!is_array($tags)) {
695 Zend_Cache::throwException('Invalid tags array : must be an array');
696 }
697 foreach($tags as $tag) {
698 self::_validateIdOrTag($tag);
699 }
700 reset($tags);
701 }
702
703 /**
704 * Make sure if we enable logging that the Zend_Log class
705 * is available.
706 * Create a default log object if none is set.
707 *
708 * @throws Zend_Cache_Exception
709 * @return void
710 */
711 protected function _loggerSanity()
712 {
713 if (!isset($this->_options['logging']) || !$this->_options['logging']) {
714 return;
715 }
716
717 if (isset($this->_options['logger']) && $this->_options['logger'] instanceof Zend_Log) {
718 return;
719 }
720
721 // Create a default logger to the standard output stream
722 require_once 'Zend/Log.php';
723 require_once 'Zend/Log/Writer/Stream.php';
724 require_once 'Zend/Log/Filter/Priority.php';
725 $logger = new Zend_Log(new Zend_Log_Writer_Stream('php://output'));
726 $logger->addFilter(new Zend_Log_Filter_Priority(Zend_Log::WARN, '<='));
727 $this->_options['logger'] = $logger;
728 }
729
730 /**
731 * Log a message at the WARN (4) priority.
732 *
733 * @param string $message
734 * @throws Zend_Cache_Exception
735 * @return void
736 */
737 protected function _log($message, $priority = 4)
738 {
739 if (!$this->_options['logging']) {
740 return;
741 }
742 if (!(isset($this->_options['logger']) || $this->_options['logger'] instanceof Zend_Log)) {
743 Zend_Cache::throwException('Logging is enabled but logger is not set');
744 }
745 $logger = $this->_options['logger'];
746 $logger->log($message, $priority);
747 }
748
749 /**
750 * Make and return a cache id
751 *
752 * Checks 'cache_id_prefix' and returns new id with prefix or simply the id if null
753 *
754 * @param string $id Cache id
755 * @return string Cache id (with or without prefix)
756 */
757 protected function _id($id)
758 {
759 if (($id !== null) && isset($this->_options['cache_id_prefix'])) {
760 return $this->_options['cache_id_prefix'] . $id; // return with prefix
761 }
762 return $id; // no prefix, just return the $id passed
763 }
764
765}
diff --git a/inc/3rdparty/libraries/Zend/Cache/Exception.php b/inc/3rdparty/libraries/Zend/Cache/Exception.php
deleted file mode 100644
index 44884515..00000000
--- a/inc/3rdparty/libraries/Zend/Cache/Exception.php
+++ /dev/null
@@ -1,32 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend_Cache
17 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
18 * @license http://framework.zend.com/license/new-bsd New BSD License
19 * @version $Id: Exception.php 24593 2012-01-05 20:35:02Z matthew $
20 */
21
22/**
23 * @see Zend_Exception
24 */
25require_once 'Zend/Exception.php';
26
27/**
28 * @package Zend_Cache
29 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
30 * @license http://framework.zend.com/license/new-bsd New BSD License
31 */
32class Zend_Cache_Exception extends Zend_Exception {}
diff --git a/inc/3rdparty/libraries/Zend/Exception.php b/inc/3rdparty/libraries/Zend/Exception.php
deleted file mode 100644
index 92b2e460..00000000
--- a/inc/3rdparty/libraries/Zend/Exception.php
+++ /dev/null
@@ -1,96 +0,0 @@
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category Zend
16 * @package Zend
17 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
18 * @license http://framework.zend.com/license/new-bsd New BSD License
19 * @version $Id: Exception.php 24593 2012-01-05 20:35:02Z matthew $
20 */
21
22/**
23* @category Zend
24* @package Zend
25* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
26* @license http://framework.zend.com/license/new-bsd New BSD License
27*/
28class Zend_Exception extends Exception
29{
30 /**
31 * @var null|Exception
32 */
33 private $_previous = null;
34
35 /**
36 * Construct the exception
37 *
38 * @param string $msg
39 * @param int $code
40 * @param Exception $previous
41 * @return void
42 */
43 public function __construct($msg = '', $code = 0, Exception $previous = null)
44 {
45 if (version_compare(PHP_VERSION, '5.3.0', '<')) {
46 parent::__construct($msg, (int) $code);
47 $this->_previous = $previous;
48 } else {
49 parent::__construct($msg, (int) $code, $previous);
50 }
51 }
52
53 /**
54 * Overloading
55 *
56 * For PHP < 5.3.0, provides access to the getPrevious() method.
57 *
58 * @param string $method
59 * @param array $args
60 * @return mixed
61 */
62 public function __call($method, array $args)
63 {
64 if ('getprevious' == strtolower($method)) {
65 return $this->_getPrevious();
66 }
67 return null;
68 }
69
70 /**
71 * String representation of the exception
72 *
73 * @return string
74 */
75 public function __toString()
76 {
77 if (version_compare(PHP_VERSION, '5.3.0', '<')) {
78 if (null !== ($e = $this->getPrevious())) {
79 return $e->__toString()
80 . "\n\nNext "
81 . parent::__toString();
82 }
83 }
84 return parent::__toString();
85 }
86
87 /**
88 * Returns previous Exception
89 *
90 * @return Exception|null
91 */
92 protected function _getPrevious()
93 {
94 return $this->_previous;
95 }
96}
diff --git a/inc/3rdparty/libraries/content-extractor/ContentExtractor.php b/inc/3rdparty/libraries/content-extractor/ContentExtractor.php
deleted file mode 100644
index 21e693e7..00000000
--- a/inc/3rdparty/libraries/content-extractor/ContentExtractor.php
+++ /dev/null
@@ -1,727 +0,0 @@
1<?php
2/**
3 * Content Extractor
4 *
5 * Uses patterns specified in site config files and auto detection (hNews/PHP Readability)
6 * to extract content from HTML files.
7 *
8 * @version 1.0
9 * @date 2013-02-05
10 * @author Keyvan Minoukadeh
11 * @copyright 2013 Keyvan Minoukadeh
12 * @license http://www.gnu.org/licenses/agpl-3.0.html AGPL v3
13 */
14
15class ContentExtractor
16{
17 protected static $tidy_config = array(
18 'clean' => true,
19 'output-xhtml' => true,
20 'logical-emphasis' => true,
21 'show-body-only' => false,
22 'new-blocklevel-tags' => 'article, aside, footer, header, hgroup, menu, nav, section, details, datagrid',
23 'new-inline-tags' => 'mark, time, meter, progress, data',
24 'wrap' => 0,
25 'drop-empty-paras' => true,
26 'drop-proprietary-attributes' => false,
27 'enclose-text' => true,
28 'enclose-block-text' => true,
29 'merge-divs' => true,
30 'merge-spans' => true,
31 'char-encoding' => 'utf8',
32 'hide-comments' => true
33 );
34 protected $html;
35 protected $config;
36 protected $title;
37 protected $author = array();
38 protected $language;
39 protected $date;
40 protected $body;
41 protected $success = false;
42 protected $nextPageUrl;
43 public $allowedParsers = array('libxml', 'html5lib');
44 public $fingerprints = array();
45 public $readability;
46 public $debug = false;
47 public $debugVerbose = false;
48
49 function __construct($path, $fallback=null) {
50 SiteConfig::set_config_path($path, $fallback);
51 }
52
53 protected function debug($msg) {
54 if ($this->debug) {
55 $mem = round(memory_get_usage()/1024, 2);
56 $memPeak = round(memory_get_peak_usage()/1024, 2);
57 echo '* ',$msg;
58 if ($this->debugVerbose) echo ' - mem used: ',$mem," (peak: $memPeak)";
59 echo "\n";
60 ob_flush();
61 flush();
62 }
63 }
64
65 public function reset() {
66 $this->html = null;
67 $this->readability = null;
68 $this->config = null;
69 $this->title = null;
70 $this->body = null;
71 $this->author = array();
72 $this->language = null;
73 $this->date = null;
74 $this->nextPageUrl = null;
75 $this->success = false;
76 }
77
78 public function findHostUsingFingerprints($html) {
79 $this->debug('Checking fingerprints...');
80 $head = substr($html, 0, 8000);
81 foreach ($this->fingerprints as $_fp => $_fphost) {
82 $lookin = 'html';
83 if (is_array($_fphost)) {
84 if (isset($_fphost['head']) && $_fphost['head']) {
85 $lookin = 'head';
86 }
87 $_fphost = $_fphost['hostname'];
88 }
89 if (strpos($$lookin, $_fp) !== false) {
90 $this->debug("Found match: $_fphost");
91 return $_fphost;
92 }
93 }
94 $this->debug('No fingerprint matches');
95 return false;
96 }
97
98 // returns SiteConfig instance (joined in order: exact match, wildcard, fingerprint, global, default)
99 public function buildSiteConfig($url, $html='', $add_to_cache=true) {
100 // extract host name
101 $host = @parse_url($url, PHP_URL_HOST);
102 $host = strtolower($host);
103 if (substr($host, 0, 4) == 'www.') $host = substr($host, 4);
104 // is merged version already cached?
105 if (SiteConfig::is_cached("$host.merged")) {
106 $this->debug("Returning cached and merged site config for $host");
107 return SiteConfig::build("$host.merged");
108 }
109 // let's build from site_config/custom/ and standard/
110 $config = SiteConfig::build($host);
111 if ($add_to_cache && $config && !SiteConfig::is_cached("$host")) {
112 SiteConfig::add_to_cache($host, $config);
113 }
114 // if no match, use defaults
115 if (!$config) $config = new SiteConfig();
116 // load fingerprint config?
117 if ($config->autodetect_on_failure()) {
118 // check HTML for fingerprints
119 if (!empty($this->fingerprints) && ($_fphost = $this->findHostUsingFingerprints($html))) {
120 if ($config_fingerprint = SiteConfig::build($_fphost)) {
121 $this->debug("Appending site config settings from $_fphost (fingerprint match)");
122 $config->append($config_fingerprint);
123 if ($add_to_cache && !SiteConfig::is_cached($_fphost)) {
124 //$config_fingerprint->cache_in_apc = true;
125 SiteConfig::add_to_cache($_fphost, $config_fingerprint);
126 }
127 }
128 }
129 }
130 // load global config?
131 if ($config->autodetect_on_failure()) {
132 if ($config_global = SiteConfig::build('global', true)) {
133 $this->debug('Appending site config settings from global.txt');
134 $config->append($config_global);
135 if ($add_to_cache && !SiteConfig::is_cached('global')) {
136 //$config_global->cache_in_apc = true;
137 SiteConfig::add_to_cache('global', $config_global);
138 }
139 }
140 }
141 // store copy of merged config
142 if ($add_to_cache) {
143 // do not store in APC if wildcard match
144 $use_apc = ($host == $config->cache_key);
145 $config->cache_key = null;
146 SiteConfig::add_to_cache("$host.merged", $config, $use_apc);
147 }
148 return $config;
149 }
150
151 // returns true on success, false on failure
152 // $smart_tidy indicates that if tidy is used and no results are produced, we will
153 // try again without it. Tidy helps us deal with PHP's patchy HTML parsing most of the time
154 // but it has problems of its own which we try to avoid with this option.
155 public function process($html, $url, $smart_tidy=true) {
156 $this->reset();
157 $this->config = $this->buildSiteConfig($url, $html);
158
159 // do string replacements
160 if (!empty($this->config->find_string)) {
161 if (count($this->config->find_string) == count($this->config->replace_string)) {
162 $html = str_replace($this->config->find_string, $this->config->replace_string, $html, $_count);
163 $this->debug("Strings replaced: $_count (find_string and/or replace_string)");
164 } else {
165 $this->debug('Skipped string replacement - incorrect number of find-replace strings in site config');
166 }
167 unset($_count);
168 }
169
170 // use tidy (if it exists)?
171 // This fixes problems with some sites which would otherwise
172 // trouble DOMDocument's HTML parsing. (Although sometimes it
173 // makes matters worse, which is why you can override it in site config files.)
174 $tidied = false;
175 if ($this->config->tidy() && function_exists('tidy_parse_string') && $smart_tidy) {
176 $this->debug('Using Tidy');
177 $tidy = tidy_parse_string($html, self::$tidy_config, 'UTF8');
178 if (tidy_clean_repair($tidy)) {
179 $original_html = $html;
180 $tidied = true;
181 $html = $tidy->value;
182 }
183 unset($tidy);
184 }
185
186 // load and parse html
187 $_parser = $this->config->parser();
188 if (!in_array($_parser, $this->allowedParsers)) {
189 $this->debug("HTML parser $_parser not listed, using libxml instead");
190 $_parser = 'libxml';
191 }
192 $this->debug("Attempting to parse HTML with $_parser");
193 $this->readability = new Readability($html, $url, $_parser);
194
195 // we use xpath to find elements in the given HTML document
196 // see http://en.wikipedia.org/wiki/XPath_1.0
197 $xpath = new DOMXPath($this->readability->dom);
198
199 // try to get next page link
200 foreach ($this->config->next_page_link as $pattern) {
201 $elems = @$xpath->evaluate($pattern, $this->readability->dom);
202 if (is_string($elems)) {
203 $this->nextPageUrl = trim($elems);
204 break;
205 } elseif ($elems instanceof DOMNodeList && $elems->length > 0) {
206 foreach ($elems as $item) {
207 if ($item instanceof DOMElement && $item->hasAttribute('href')) {
208 $this->nextPageUrl = $item->getAttribute('href');
209 break 2;
210 } elseif ($item instanceof DOMAttr && $item->value) {
211 $this->nextPageUrl = $item->value;
212 break 2;
213 }
214 }
215 }
216 }
217
218 // try to get title
219 foreach ($this->config->title as $pattern) {
220 // $this->debug("Trying $pattern");
221 $elems = @$xpath->evaluate($pattern, $this->readability->dom);
222 if (is_string($elems)) {
223 $this->title = trim($elems);
224 $this->debug('Title expression evaluated as string: '.$this->title);
225 $this->debug("...XPath match: $pattern");
226 break;
227 } elseif ($elems instanceof DOMNodeList && $elems->length > 0) {
228 $this->title = $elems->item(0)->textContent;
229 $this->debug('Title matched: '.$this->title);
230 $this->debug("...XPath match: $pattern");
231 // remove title from document
232 try {
233 @$elems->item(0)->parentNode->removeChild($elems->item(0));
234 } catch (DOMException $e) {
235 // do nothing
236 }
237 break;
238 }
239 }
240
241 // try to get author (if it hasn't already been set)
242 if (empty($this->author)) {
243 foreach ($this->config->author as $pattern) {
244 $elems = @$xpath->evaluate($pattern, $this->readability->dom);
245 if (is_string($elems)) {
246 if (trim($elems) != '') {
247 $this->author[] = trim($elems);
248 $this->debug('Author expression evaluated as string: '.trim($elems));
249 $this->debug("...XPath match: $pattern");
250 break;
251 }
252 } elseif ($elems instanceof DOMNodeList && $elems->length > 0) {
253 foreach ($elems as $elem) {
254 if (!isset($elem->parentNode)) continue;
255 $this->author[] = trim($elem->textContent);
256 $this->debug('Author matched: '.trim($elem->textContent));
257 }
258 if (!empty($this->author)) {
259 $this->debug("...XPath match: $pattern");
260 break;
261 }
262 }
263 }
264 }
265
266 // try to get language
267 $_lang_xpath = array('//html[@lang]/@lang', '//meta[@name="DC.language"]/@content');
268 foreach ($_lang_xpath as $pattern) {
269 $elems = @$xpath->evaluate($pattern, $this->readability->dom);
270 if (is_string($elems)) {
271 if (trim($elems) != '') {
272 $this->language = trim($elems);
273 $this->debug('Language matched: '.$this->language);
274 break;
275 }
276 } elseif ($elems instanceof DOMNodeList && $elems->length > 0) {
277 foreach ($elems as $elem) {
278 if (!isset($elem->parentNode)) continue;
279 $this->language = trim($elem->textContent);
280 $this->debug('Language matched: '.$this->language);
281 }
282 if ($this->language) break;
283 }
284 }
285
286 // try to get date
287 foreach ($this->config->date as $pattern) {
288 $elems = @$xpath->evaluate($pattern, $this->readability->dom);
289 if (is_string($elems)) {
290 $this->date = strtotime(trim($elems, "; \t\n\r\0\x0B"));
291 } elseif ($elems instanceof DOMNodeList && $elems->length > 0) {
292 $this->date = $elems->item(0)->textContent;
293 $this->date = strtotime(trim($this->date, "; \t\n\r\0\x0B"));
294 // remove date from document
295 // $elems->item(0)->parentNode->removeChild($elems->item(0));
296 }
297 if (!$this->date) {
298 $this->date = null;
299 } else {
300 $this->debug('Date matched: '.date('Y-m-d H:i:s', $this->date));
301 $this->debug("...XPath match: $pattern");
302 break;
303 }
304 }
305
306 // strip elements (using xpath expressions)
307 foreach ($this->config->strip as $pattern) {
308 $elems = @$xpath->query($pattern, $this->readability->dom);
309 // check for matches
310 if ($elems && $elems->length > 0) {
311 $this->debug('Stripping '.$elems->length.' elements (strip)');
312 for ($i=$elems->length-1; $i >= 0; $i--) {
313 $elems->item($i)->parentNode->removeChild($elems->item($i));
314 }
315 }
316 }
317
318 // strip elements (using id and class attribute values)
319 foreach ($this->config->strip_id_or_class as $string) {
320 $string = strtr($string, array("'"=>'', '"'=>''));
321 $elems = @$xpath->query("//*[contains(@class, '$string') or contains(@id, '$string')]", $this->readability->dom);
322 // check for matches
323 if ($elems && $elems->length > 0) {
324 $this->debug('Stripping '.$elems->length.' elements (strip_id_or_class)');
325 for ($i=$elems->length-1; $i >= 0; $i--) {
326 $elems->item($i)->parentNode->removeChild($elems->item($i));
327 }
328 }
329 }
330
331 // strip images (using src attribute values)
332 foreach ($this->config->strip_image_src as $string) {
333 $string = strtr($string, array("'"=>'', '"'=>''));
334 $elems = @$xpath->query("//img[contains(@src, '$string')]", $this->readability->dom);
335 // check for matches
336 if ($elems && $elems->length > 0) {
337 $this->debug('Stripping '.$elems->length.' image elements');
338 for ($i=$elems->length-1; $i >= 0; $i--) {
339 $elems->item($i)->parentNode->removeChild($elems->item($i));
340 }
341 }
342 }
343 // strip elements using Readability.com and Instapaper.com ignore class names
344 // .entry-unrelated and .instapaper_ignore
345 // See https://www.readability.com/publishers/guidelines/#view-plainGuidelines
346 // and http://blog.instapaper.com/post/730281947
347 $elems = @$xpath->query("//*[contains(concat(' ',normalize-space(@class),' '),' entry-unrelated ') or contains(concat(' ',normalize-space(@class),' '),' instapaper_ignore ')]", $this->readability->dom);
348 // check for matches
349 if ($elems && $elems->length > 0) {
350 $this->debug('Stripping '.$elems->length.' .entry-unrelated,.instapaper_ignore elements');
351 for ($i=$elems->length-1; $i >= 0; $i--) {
352 $elems->item($i)->parentNode->removeChild($elems->item($i));
353 }
354 }
355
356 // strip elements that contain style="display: none;"
357 $elems = @$xpath->query("//*[contains(@style,'display:none')]", $this->readability->dom);
358 // check for matches
359 if ($elems && $elems->length > 0) {
360 $this->debug('Stripping '.$elems->length.' elements with inline display:none style');
361 for ($i=$elems->length-1; $i >= 0; $i--) {
362 $elems->item($i)->parentNode->removeChild($elems->item($i));
363 }
364 }
365
366 // try to get body
367 foreach ($this->config->body as $pattern) {
368 $elems = @$xpath->query($pattern, $this->readability->dom);
369 // check for matches
370 if ($elems && $elems->length > 0) {
371 $this->debug('Body matched');
372 $this->debug("...XPath match: $pattern");
373 if ($elems->length == 1) {
374 $this->body = $elems->item(0);
375 // prune (clean up elements that may not be content)
376 if ($this->config->prune()) {
377 $this->debug('...pruning content');
378 $this->readability->prepArticle($this->body);
379 }
380 break;
381 } else {
382 $this->body = $this->readability->dom->createElement('div');
383 $this->debug($elems->length.' body elems found');
384 foreach ($elems as $elem) {
385 if (!isset($elem->parentNode)) continue;
386 $isDescendant = false;
387 foreach ($this->body->childNodes as $parent) {
388 if ($this->isDescendant($parent, $elem)) {
389 $isDescendant = true;
390 break;
391 }
392 }
393 if ($isDescendant) {
394 $this->debug('...element is child of another body element, skipping.');
395 } else {
396 // prune (clean up elements that may not be content)
397 if ($this->config->prune()) {
398 $this->debug('Pruning content');
399 $this->readability->prepArticle($elem);
400 }
401 $this->debug('...element added to body');
402 $this->body->appendChild($elem);
403 }
404 }
405 if ($this->body->hasChildNodes()) break;
406 }
407 }
408 }
409
410 // auto detect?
411 $detect_title = $detect_body = $detect_author = $detect_date = false;
412 // detect title?
413 if (!isset($this->title)) {
414 if (empty($this->config->title) || $this->config->autodetect_on_failure()) {
415 $detect_title = true;
416 }
417 }
418 // detect body?
419 if (!isset($this->body)) {
420 if (empty($this->config->body) || $this->config->autodetect_on_failure()) {
421 $detect_body = true;
422 }
423 }
424 // detect author?
425 if (empty($this->author)) {
426 if (empty($this->config->author) || $this->config->autodetect_on_failure()) {
427 $detect_author = true;
428 }
429 }
430 // detect date?
431 if (!isset($this->date)) {
432 if (empty($this->config->date) || $this->config->autodetect_on_failure()) {
433 $detect_date = true;
434 }
435 }
436
437 // check for hNews
438 if ($detect_title || $detect_body) {
439 // check for hentry
440 $elems = @$xpath->query("//*[contains(concat(' ',normalize-space(@class),' '),' hentry ')]", $this->readability->dom);
441 if ($elems && $elems->length > 0) {
442 $this->debug('hNews: found hentry');
443 $hentry = $elems->item(0);
444
445 if ($detect_title) {
446 // check for entry-title
447 $elems = @$xpath->query(".//*[contains(concat(' ',normalize-space(@class),' '),' entry-title ')]", $hentry);
448 if ($elems && $elems->length > 0) {
449 $this->title = $elems->item(0)->textContent;
450 $this->debug('hNews: found entry-title: '.$this->title);
451 // remove title from document
452 $elems->item(0)->parentNode->removeChild($elems->item(0));
453 $detect_title = false;
454 }
455 }
456
457 if ($detect_date) {
458 // check for time element with pubdate attribute
459 $elems = @$xpath->query(".//time[@pubdate] | .//abbr[contains(concat(' ',normalize-space(@class),' '),' published ')]", $hentry);
460 if ($elems && $elems->length > 0) {
461 $this->date = strtotime(trim($elems->item(0)->textContent));
462 // remove date from document
463 //$elems->item(0)->parentNode->removeChild($elems->item(0));
464 if ($this->date) {
465 $this->debug('hNews: found publication date: '.date('Y-m-d H:i:s', $this->date));
466 $detect_date = false;
467 } else {
468 $this->date = null;
469 }
470 }
471 }
472
473 if ($detect_author) {
474 // check for time element with pubdate attribute
475 $elems = @$xpath->query(".//*[contains(concat(' ',normalize-space(@class),' '),' vcard ') and (contains(concat(' ',normalize-space(@class),' '),' author ') or contains(concat(' ',normalize-space(@class),' '),' byline '))]", $hentry);
476 if ($elems && $elems->length > 0) {
477 $author = $elems->item(0);
478 $fn = @$xpath->query(".//*[contains(concat(' ',normalize-space(@class),' '),' fn ')]", $author);
479 if ($fn && $fn->length > 0) {
480 foreach ($fn as $_fn) {
481 if (trim($_fn->textContent) != '') {
482 $this->author[] = trim($_fn->textContent);
483 $this->debug('hNews: found author: '.trim($_fn->textContent));
484 }
485 }
486 } else {
487 if (trim($author->textContent) != '') {
488 $this->author[] = trim($author->textContent);
489 $this->debug('hNews: found author: '.trim($author->textContent));
490 }
491 }
492 $detect_author = empty($this->author);
493 }
494 }
495
496 // check for entry-content.
497 // according to hAtom spec, if there are multiple elements marked entry-content,
498 // we include all of these in the order they appear - see http://microformats.org/wiki/hatom#Entry_Content
499 if ($detect_body) {
500 $elems = @$xpath->query(".//*[contains(concat(' ',normalize-space(@class),' '),' entry-content ')]", $hentry);
501 if ($elems && $elems->length > 0) {
502 $this->debug('hNews: found entry-content');
503 if ($elems->length == 1) {
504 // what if it's empty? (some sites misuse hNews - place their content outside an empty entry-content element)
505 $e = $elems->item(0);
506 if (($e->tagName == 'img') || (trim($e->textContent) != '')) {
507 $this->body = $elems->item(0);
508 // prune (clean up elements that may not be content)
509 if ($this->config->prune()) {
510 $this->debug('Pruning content');
511 $this->readability->prepArticle($this->body);
512 }
513 $detect_body = false;
514 } else {
515 $this->debug('hNews: skipping entry-content - appears not to contain content');
516 }
517 unset($e);
518 } else {
519 $this->body = $this->readability->dom->createElement('div');
520 $this->debug($elems->length.' entry-content elems found');
521 foreach ($elems as $elem) {
522 if (!isset($elem->parentNode)) continue;
523 $isDescendant = false;
524 foreach ($this->body->childNodes as $parent) {
525 if ($this->isDescendant($parent, $elem)) {
526 $isDescendant = true;
527 break;
528 }
529 }
530 if ($isDescendant) {
531 $this->debug('Element is child of another body element, skipping.');
532 } else {
533 // prune (clean up elements that may not be content)
534 if ($this->config->prune()) {
535 $this->debug('Pruning content');
536 $this->readability->prepArticle($elem);
537 }
538 $this->debug('Element added to body');
539 $this->body->appendChild($elem);
540 }
541 }
542 $detect_body = false;
543 }
544 }
545 }
546 }
547 }
548
549 // check for elements marked with instapaper_title
550 if ($detect_title) {
551 // check for instapaper_title
552 $elems = @$xpath->query("//*[contains(concat(' ',normalize-space(@class),' '),' instapaper_title ')]", $this->readability->dom);
553 if ($elems && $elems->length > 0) {
554 $this->title = $elems->item(0)->textContent;
555 $this->debug('Title found (.instapaper_title): '.$this->title);
556 // remove title from document
557 $elems->item(0)->parentNode->removeChild($elems->item(0));
558 $detect_title = false;
559 }
560 }
561 // check for elements marked with instapaper_body
562 if ($detect_body) {
563 $elems = @$xpath->query("//*[contains(concat(' ',normalize-space(@class),' '),' instapaper_body ')]", $this->readability->dom);
564 if ($elems && $elems->length > 0) {
565 $this->debug('body found (.instapaper_body)');
566 $this->body = $elems->item(0);
567 // prune (clean up elements that may not be content)
568 if ($this->config->prune()) {
569 $this->debug('Pruning content');
570 $this->readability->prepArticle($this->body);
571 }
572 $detect_body = false;
573 }
574 }
575
576 // Find author in rel="author" marked element
577 // We only use this if there's exactly one.
578 // If there's more than one, it could indicate more than
579 // one author, but it could also indicate that we're processing
580 // a page listing different articles with different authors.
581 if ($detect_author) {
582 $elems = @$xpath->query("//a[contains(concat(' ',normalize-space(@rel),' '),' author ')]", $this->readability->dom);
583 if ($elems && $elems->length == 1) {
584 $author = trim($elems->item(0)->textContent);
585 if ($author != '') {
586 $this->debug("Author found (rel=\"author\"): $author");
587 $this->author[] = $author;
588 $detect_author = false;
589 }
590 }
591 }
592
593 // Find date in pubdate marked time element
594 // For the same reason given above, we only use this
595 // if there's exactly one element.
596 if ($detect_date) {
597 $elems = @$xpath->query("//time[@pubdate]", $this->readability->dom);
598 if ($elems && $elems->length == 1) {
599 $this->date = strtotime(trim($elems->item(0)->textContent));
600 // remove date from document
601 //$elems->item(0)->parentNode->removeChild($elems->item(0));
602 if ($this->date) {
603 $this->debug('Date found (pubdate marked time element): '.date('Y-m-d H:i:s', $this->date));
604 $detect_date = false;
605 } else {
606 $this->date = null;
607 }
608 }
609 }
610
611 // still missing title or body, so we detect using Readability
612 if ($detect_title || $detect_body) {
613 $this->debug('Using Readability');
614 // clone body if we're only using Readability for title (otherwise it may interfere with body element)
615 if (isset($this->body)) $this->body = $this->body->cloneNode(true);
616 $success = $this->readability->init();
617 }
618 if ($detect_title) {
619 $this->debug('Detecting title');
620 $this->title = $this->readability->getTitle()->textContent;
621 }
622 if ($detect_body && $success) {
623 $this->debug('Detecting body');
624 $this->body = $this->readability->getContent();
625 if ($this->body->childNodes->length == 1 && $this->body->firstChild->nodeType === XML_ELEMENT_NODE) {
626 $this->body = $this->body->firstChild;
627 }
628 // prune (clean up elements that may not be content)
629 if ($this->config->prune()) {
630 $this->debug('Pruning content');
631 $this->readability->prepArticle($this->body);
632 }
633 }
634 if (isset($this->body)) {
635 // remove scripts
636 $this->readability->removeScripts($this->body);
637 // remove any h1-h6 elements that appear as first thing in the body
638 // and which match our title
639 if (isset($this->title) && ($this->title != '')) {
640 $firstChild = $this->body->firstChild;
641 while ($firstChild->nodeType && ($firstChild->nodeType !== XML_ELEMENT_NODE)) {
642 $firstChild = $firstChild->nextSibling;
643 }
644 if (($firstChild->nodeType === XML_ELEMENT_NODE)
645 && in_array(strtolower($firstChild->tagName), array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))
646 && (strtolower(trim($firstChild->textContent)) == strtolower(trim($this->title)))) {
647 $this->body->removeChild($firstChild);
648 }
649 }
650 // prevent self-closing iframes
651 $elems = $this->body->getElementsByTagName('iframe');
652 for ($i = $elems->length-1; $i >= 0; $i--) {
653 $e = $elems->item($i);
654 if (!$e->hasChildNodes()) {
655 $e->appendChild($this->body->ownerDocument->createTextNode('[embedded content]'));
656 }
657 }
658 // remove image lazy loading - WordPress plugin http://wordpress.org/extend/plugins/lazy-load/
659 // the plugin replaces the src attribute to point to a 1x1 gif and puts the original src
660 // inside the data-lazy-src attribute. It also places the original image inside a noscript element
661 // next to the amended one.
662 $elems = @$xpath->query("//img[@data-lazy-src]", $this->body);
663 for ($i = $elems->length-1; $i >= 0; $i--) {
664 $e = $elems->item($i);
665 // let's see if we can grab image from noscript
666 if ($e->nextSibling !== null && $e->nextSibling->nodeName === 'noscript') {
667 $_new_elem = $e->ownerDocument->createDocumentFragment();
668 @$_new_elem->appendXML($e->nextSibling->innerHTML);
669 $e->nextSibling->parentNode->replaceChild($_new_elem, $e->nextSibling);
670 $e->parentNode->removeChild($e);
671 } else {
672 // Use data-lazy-src as src value
673 $e->setAttribute('src', $e->getAttribute('data-lazy-src'));
674 $e->removeAttribute('data-lazy-src');
675 }
676 }
677
678 $this->success = true;
679 }
680
681 // if we've had no success and we've used tidy, there's a chance
682 // that tidy has messed up. So let's try again without tidy...
683 if (!$this->success && $tidied && $smart_tidy) {
684 $this->debug('Trying again without tidy');
685 $this->process($original_html, $url, false);
686 }
687
688 return $this->success;
689 }
690
691 private function isDescendant(DOMElement $parent, DOMElement $child) {
692 $node = $child->parentNode;
693 while ($node != null) {
694 if ($node->isSameNode($parent)) return true;
695 $node = $node->parentNode;
696 }
697 return false;
698 }
699
700 public function getContent() {
701 return $this->body;
702 }
703
704 public function getTitle() {
705 return $this->title;
706 }
707
708 public function getAuthors() {
709 return $this->author;
710 }
711
712 public function getLanguage() {
713 return $this->language;
714 }
715
716 public function getDate() {
717 return $this->date;
718 }
719
720 public function getSiteConfig() {
721 return $this->config;
722 }
723
724 public function getNextPageUrl() {
725 return $this->nextPageUrl;
726 }
727} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/content-extractor/SiteConfig.php b/inc/3rdparty/libraries/content-extractor/SiteConfig.php
deleted file mode 100644
index 1f6a7603..00000000
--- a/inc/3rdparty/libraries/content-extractor/SiteConfig.php
+++ /dev/null
@@ -1,343 +0,0 @@
1<?php
2/**
3 * Site Config
4 *
5 * Each instance of this class should hold extraction patterns and other directives
6 * for a website. See ContentExtractor class to see how it's used.
7 *
8 * @version 0.8
9 * @date 2013-04-16
10 * @author Keyvan Minoukadeh
11 * @copyright 2013 Keyvan Minoukadeh
12 * @license http://www.gnu.org/licenses/agpl-3.0.html AGPL v3
13 */
14
15class SiteConfig
16{
17 // Use first matching element as title (0 or more xpath expressions)
18 public $title = array();
19
20 // Use first matching element as body (0 or more xpath expressions)
21 public $body = array();
22
23 // Use first matching element as author (0 or more xpath expressions)
24 public $author = array();
25
26 // Use first matching element as date (0 or more xpath expressions)
27 public $date = array();
28
29 // Strip elements matching these xpath expressions (0 or more)
30 public $strip = array();
31
32 // Strip elements which contain these strings (0 or more) in the id or class attribute
33 public $strip_id_or_class = array();
34
35 // Strip images which contain these strings (0 or more) in the src attribute
36 public $strip_image_src = array();
37
38 // Additional HTTP headers to send
39 // NOT YET USED
40 public $http_header = array();
41
42 // Process HTML with tidy before creating DOM (bool or null if undeclared)
43 public $tidy = null;
44
45 protected $default_tidy = true; // used if undeclared
46
47 // Autodetect title/body if xpath expressions fail to produce results.
48 // Note that this applies to title and body separately, ie.
49 // * if we get a body match but no title match, this option will determine whether we autodetect title
50 // * if neither match, this determines whether we autodetect title and body.
51 // Also note that this only applies when there is at least one xpath expression in title or body, ie.
52 // * if title and body are both empty (no xpath expressions), this option has no effect (both title and body will be auto-detected)
53 // * if there's an xpath expression for title and none for body, body will be auto-detected and this option will determine whether we auto-detect title if the xpath expression for it fails to produce results.
54 // Usage scenario: you want to extract something specific from a set of URLs, e.g. a table, and if the table is not found, you want to ignore the entry completely. Auto-detection is unlikely to succeed here, so you construct your patterns and set this option to false. Another scenario may be a site where auto-detection has proven to fail (or worse, picked up the wrong content).
55 // bool or null if undeclared
56 public $autodetect_on_failure = null;
57 protected $default_autodetect_on_failure = true; // used if undeclared
58
59 // Clean up content block - attempt to remove elements that appear to be superfluous
60 // bool or null if undeclared
61 public $prune = null;
62 protected $default_prune = true; // used if undeclared
63
64 // Test URL - if present, can be used to test the config above
65 public $test_url = array();
66
67 // Single-page link - should identify a link element or URL pointing to the page holding the entire article
68 // This is useful for sites which split their articles across multiple pages. Links to such pages tend to
69 // display the first page with links to the other pages at the bottom. Often there is also a link to a page
70 // which displays the entire article on one page (e.g. 'print view').
71 // This should be an XPath expression identifying the link to that page. If present and we find a match,
72 // we will retrieve that page and the rest of the options in this config will be applied to the new page.
73 public $single_page_link = array();
74
75 public $next_page_link = array();
76
77 // Single-page link in feed? - same as above, but patterns applied to item description HTML taken from feed
78 public $single_page_link_in_feed = array();
79
80 // Which parser to use for turning raw HTML into a DOMDocument (either 'libxml' or 'html5lib')
81 // string or null if undeclared
82 public $parser = null;
83 protected $default_parser = 'libxml'; // used if undeclared
84
85 // Strings to search for in HTML before processing begins (used with $replace_string)
86 public $find_string = array();
87 // Strings to replace those found in $find_string before HTML processing begins
88 public $replace_string = array();
89
90 // the options below cannot be set in the config files which this class represents
91
92 //public $cache_in_apc = false; // used to decide if we should cache in apc or not
93 public $cache_key = null;
94 public static $debug = false;
95 protected static $apc = false;
96 protected static $config_path;
97 protected static $config_path_fallback;
98 protected static $config_cache = array();
99 const HOSTNAME_REGEX = '/^(([a-zA-Z0-9-]*[a-zA-Z0-9])\.)*([A-Za-z0-9-]*[A-Za-z0-9])$/';
100
101 protected static function debug($msg) {
102 if (self::$debug) {
103 //$mem = round(memory_get_usage()/1024, 2);
104 //$memPeak = round(memory_get_peak_usage()/1024, 2);
105 echo '* ',$msg;
106 //echo ' - mem used: ',$mem," (peak: $memPeak)\n";
107 echo "\n";
108 ob_flush();
109 flush();
110 }
111 }
112
113 // enable APC caching of certain site config files?
114 // If enabled the following site config files will be
115 // cached in APC cache (when requested for first time):
116 // * anything in site_config/custom/ and its corresponding file in site_config/standard/
117 // * the site config files associated with HTML fingerprints
118 // * the global site config file
119 // returns true if enabled, false otherwise
120 public static function use_apc($apc=true) {
121 if (!function_exists('apc_add')) {
122 if ($apc) self::debug('APC will not be used (function apc_add does not exist)');
123 return false;
124 }
125 self::$apc = $apc;
126 return $apc;
127 }
128
129 // return bool or null
130 public function tidy($use_default=true) {
131 if ($use_default) return (isset($this->tidy)) ? $this->tidy : $this->default_tidy;
132 return $this->tidy;
133 }
134
135 // return bool or null
136 public function prune($use_default=true) {
137 if ($use_default) return (isset($this->prune)) ? $this->prune : $this->default_prune;
138 return $this->prune;
139 }
140
141 // return string or null
142 public function parser($use_default=true) {
143 if ($use_default) return (isset($this->parser)) ? $this->parser : $this->default_parser;
144 return $this->parser;
145 }
146
147 // return bool or null
148 public function autodetect_on_failure($use_default=true) {
149 if ($use_default) return (isset($this->autodetect_on_failure)) ? $this->autodetect_on_failure : $this->default_autodetect_on_failure;
150 return $this->autodetect_on_failure;
151 }
152
153 public static function set_config_path($path, $fallback=null) {
154 self::$config_path = $path;
155 self::$config_path_fallback = $fallback;
156 }
157
158 public static function add_to_cache($key, SiteConfig $config, $use_apc=true) {
159 $key = strtolower($key);
160 if (substr($key, 0, 4) == 'www.') $key = substr($key, 4);
161 if ($config->cache_key) $key = $config->cache_key;
162 self::$config_cache[$key] = $config;
163 if (self::$apc && $use_apc) {
164 self::debug("Adding site config to APC cache with key sc.$key");
165 apc_add("sc.$key", $config);
166 }
167 self::debug("Cached site config with key $key");
168 }
169
170 public static function is_cached($key) {
171 $key = strtolower($key);
172 if (substr($key, 0, 4) == 'www.') $key = substr($key, 4);
173 if (array_key_exists($key, self::$config_cache)) {
174 return true;
175 } elseif (self::$apc && (bool)apc_fetch("sc.$key")) {
176 return true;
177 }
178 return false;
179 }
180
181 public function append(SiteConfig $newconfig) {
182 // check for commands where we accept multiple statements (no test_url)
183 foreach (array('title', 'body', 'author', 'date', 'strip', 'strip_id_or_class', 'strip_image_src', 'single_page_link', 'single_page_link_in_feed', 'next_page_link', 'http_header') as $var) {
184 // append array elements for this config variable from $newconfig to this config
185 //$this->$var = $this->$var + $newconfig->$var;
186 $this->$var = array_unique(array_merge($this->$var, $newconfig->$var));
187 }
188 // check for single statement commands
189 // we do not overwrite existing non null values
190 foreach (array('tidy', 'prune', 'parser', 'autodetect_on_failure') as $var) {
191 if ($this->$var === null) $this->$var = $newconfig->$var;
192 }
193 // treat find_string and replace_string separately (don't apply array_unique) (thanks fabrizio!)
194 foreach (array('find_string', 'replace_string') as $var) {
195 // append array elements for this config variable from $newconfig to this config
196 //$this->$var = $this->$var + $newconfig->$var;
197 $this->$var = array_merge($this->$var, $newconfig->$var);
198 }
199 }
200
201 // returns SiteConfig instance if an appropriate one is found, false otherwise
202 // if $exact_host_match is true, we will not look for wildcard config matches
203 // by default if host is 'test.example.org' we will look for and load '.example.org.txt' if it exists
204 public static function build($host, $exact_host_match=false) {
205 $host = strtolower($host);
206 if (substr($host, 0, 4) == 'www.') $host = substr($host, 4);
207 if (!$host || (strlen($host) > 200) || !preg_match(self::HOSTNAME_REGEX, ltrim($host, '.'))) return false;
208 // check for site configuration
209 $try = array($host);
210 // should we look for wildcard matches
211 if (!$exact_host_match) {
212 $split = explode('.', $host);
213 if (count($split) > 1) {
214 array_shift($split);
215 $try[] = '.'.implode('.', $split);
216 }
217 }
218
219 // look for site config file in primary folder
220 self::debug(". looking for site config for $host in primary folder");
221 foreach ($try as $h) {
222 if (array_key_exists($h, self::$config_cache)) {
223 self::debug("... site config for $h already loaded in this request");
224 return self::$config_cache[$h];
225 } elseif (self::$apc && ($sconfig = apc_fetch("sc.$h"))) {
226 self::debug("... site config for $h in APC cache");
227 return $sconfig;
228 } elseif (file_exists(self::$config_path."/$h.txt")) {
229 self::debug("... found site config ($h.txt)");
230 $file_primary = self::$config_path."/$h.txt";
231 $matched_name = $h;
232 break;
233 }
234 }
235
236 // if we found site config, process it
237 if (isset($file_primary)) {
238 $config_lines = file($file_primary, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
239 if (!$config_lines || !is_array($config_lines)) return false;
240 $config = self::build_from_array($config_lines);
241 // if APC caching is available and enabled, mark this for cache
242 //$config->cache_in_apc = true;
243 $config->cache_key = $matched_name;
244
245 // if autodetec on failure is off (on by default) we do not need to look
246 // in secondary folder
247 if (!$config->autodetect_on_failure()) {
248 self::debug('... autodetect on failure is disabled (no other site config files will be loaded)');
249 return $config;
250 }
251 }
252
253 // look for site config file in secondary folder
254 if (isset(self::$config_path_fallback)) {
255 self::debug(". looking for site config for $host in secondary folder");
256 foreach ($try as $h) {
257 if (file_exists(self::$config_path_fallback."/$h.txt")) {
258 self::debug("... found site config in secondary folder ($h.txt)");
259 $file_secondary = self::$config_path_fallback."/$h.txt";
260 $matched_name = $h;
261 break;
262 }
263 }
264 if (!isset($file_secondary)) {
265 self::debug("... no site config match in secondary folder");
266 }
267 }
268
269 // return false if no config file found
270 if (!isset($file_primary) && !isset($file_secondary)) {
271 self::debug("... no site config match for $host");
272 return false;
273 }
274
275 // return primary config if secondary not found
276 if (!isset($file_secondary) && isset($config)) {
277 return $config;
278 }
279
280 // process secondary config file
281 $config_lines = file($file_secondary, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
282 if (!$config_lines || !is_array($config_lines)) {
283 // failed to process secondary
284 if (isset($config)) {
285 // return primary config
286 return $config;
287 } else {
288 return false;
289 }
290 }
291
292 // merge with primary and return
293 if (isset($config)) {
294 self::debug('. merging config files');
295 $config->append(self::build_from_array($config_lines));
296 return $config;
297 } else {
298 // return just secondary
299 $config = self::build_from_array($config_lines);
300 // if APC caching is available and enabled, mark this for cache
301 //$config->cache_in_apc = true;
302 $config->cache_key = $matched_name;
303 return $config;
304 }
305 }
306
307 public static function build_from_array(array $lines) {
308 $config = new SiteConfig();
309 foreach ($lines as $line) {
310 $line = trim($line);
311
312 // skip comments, empty lines
313 if ($line == '' || $line[0] == '#') continue;
314
315 // get command
316 $command = explode(':', $line, 2);
317 // if there's no colon ':', skip this line
318 if (count($command) != 2) continue;
319 $val = trim($command[1]);
320 $command = trim($command[0]);
321 if ($command == '' || $val == '') continue;
322
323 // check for commands where we accept multiple statements
324 if (in_array($command, array('title', 'body', 'author', 'date', 'strip', 'strip_id_or_class', 'strip_image_src', 'single_page_link', 'single_page_link_in_feed', 'next_page_link', 'http_header', 'test_url', 'find_string', 'replace_string'))) {
325 array_push($config->$command, $val);
326 // check for single statement commands that evaluate to true or false
327 } elseif (in_array($command, array('tidy', 'prune', 'autodetect_on_failure'))) {
328 $config->$command = ($val == 'yes');
329 // check for single statement commands stored as strings
330 } elseif (in_array($command, array('parser'))) {
331 $config->$command = $val;
332 // check for replace_string(find): replace
333 } elseif ((substr($command, -1) == ')') && preg_match('!^([a-z0-9_]+)\((.*?)\)$!i', $command, $match)) {
334 if (in_array($match[1], array('replace_string'))) {
335 $command = $match[1];
336 array_push($config->find_string, $match[2]);
337 array_push($config->$command, $val);
338 }
339 }
340 }
341 return $config;
342 }
343} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/feedwriter/FeedItem.php b/inc/3rdparty/libraries/feedwriter/FeedItem.php
deleted file mode 100755
index 40786598..00000000
--- a/inc/3rdparty/libraries/feedwriter/FeedItem.php
+++ /dev/null
@@ -1,204 +0,0 @@
1<?php
2 /**
3 * Univarsel Feed Writer
4 *
5 * FeedItem class - Used as feed element in FeedWriter class
6 *
7 * @package UnivarselFeedWriter
8 * @author Anis uddin Ahmad <anisniit@gmail.com>
9 * @link http://www.ajaxray.com/projects/rss
10 */
11 class FeedItem
12 {
13 private $elements = array(); //Collection of feed elements
14 private $version;
15
16 /**
17 * Constructor
18 *
19 * @param contant (RSS1/RSS2/ATOM) RSS2 is default.
20 */
21 function __construct($version = RSS2)
22 {
23 $this->version = $version;
24 }
25
26 /**
27 * Set element (overwrites existing elements with $elementName)
28 *
29 * @access public
30 * @param srting The tag name of an element
31 * @param srting The content of tag
32 * @param array Attributes(if any) in 'attrName' => 'attrValue' format
33 * @return void
34 */
35 public function setElement($elementName, $content, $attributes = null)
36 {
37 if (isset($this->elements[$elementName])) {
38 unset($this->elements[$elementName]);
39 }
40 $this->addElement($elementName, $content, $attributes);
41 }
42
43 /**
44 * Add an element to elements array
45 *
46 * @access public
47 * @param srting The tag name of an element
48 * @param srting The content of tag
49 * @param array Attributes(if any) in 'attrName' => 'attrValue' format
50 * @return void
51 */
52 public function addElement($elementName, $content, $attributes = null)
53 {
54 $i = 0;
55 if (isset($this->elements[$elementName])) {
56 $i = count($this->elements[$elementName]);
57 } else {
58 $this->elements[$elementName] = array();
59 }
60 $this->elements[$elementName][$i]['name'] = $elementName;
61 $this->elements[$elementName][$i]['content'] = $content;
62 $this->elements[$elementName][$i]['attributes'] = $attributes;
63 }
64
65 /**
66 * Set multiple feed elements from an array.
67 * Elements which have attributes cannot be added by this method
68 *
69 * @access public
70 * @param array array of elements in 'tagName' => 'tagContent' format.
71 * @return void
72 */
73 public function addElementArray($elementArray)
74 {
75 if(! is_array($elementArray)) return;
76 foreach ($elementArray as $elementName => $content)
77 {
78 $this->addElement($elementName, $content);
79 }
80 }
81
82 /**
83 * Return the collection of elements in this feed item
84 *
85 * @access public
86 * @return array
87 */
88 public function getElements()
89 {
90 return $this->elements;
91 }
92
93 // Wrapper functions ------------------------------------------------------
94
95 /**
96 * Set the 'dscription' element of feed item
97 *
98 * @access public
99 * @param string The content of 'description' element
100 * @return void
101 */
102 public function setDescription($description)
103 {
104 $tag = ($this->version == ATOM)? 'summary' : 'description';
105 $this->setElement($tag, $description);
106 }
107
108 /**
109 * @desc Set the 'title' element of feed item
110 * @access public
111 * @param string The content of 'title' element
112 * @return void
113 */
114 public function setTitle($title)
115 {
116 $this->setElement('title', $title);
117 }
118
119 /**
120 * Set the 'date' element of feed item
121 *
122 * @access public
123 * @param string The content of 'date' element
124 * @return void
125 */
126 public function setDate($date)
127 {
128 if(! is_numeric($date))
129 {
130 $date = strtotime($date);
131 }
132
133 if($this->version == ATOM)
134 {
135 $tag = 'updated';
136 $value = date(DATE_ATOM, $date);
137 }
138 elseif($this->version == RSS2)
139 {
140 $tag = 'pubDate';
141 $value = date(DATE_RSS, $date);
142 }
143 else
144 {
145 $tag = 'dc:date';
146 $value = date("Y-m-d", $date);
147 }
148
149 $this->setElement($tag, $value);
150 }
151
152 /**
153 * Set the 'link' element of feed item
154 *
155 * @access public
156 * @param string The content of 'link' element
157 * @return void
158 */
159 public function setLink($link)
160 {
161 if($this->version == RSS2 || $this->version == RSS1)
162 {
163 $this->setElement('link', $link);
164 $this->setElement('guid', $link);
165 }
166 else
167 {
168 $this->setElement('link','',array('href'=>$link));
169 $this->setElement('id', FeedWriter::uuid($link,'urn:uuid:'));
170 }
171
172 }
173
174 /**
175 * Set the 'source' element of feed item
176 *
177 * @access public
178 * @param string The content of 'source' element
179 * @return void
180 */
181 public function setSource($link)
182 {
183 $attributes = array('url'=>$link);
184 $this->setElement('source', "wallabag",$attributes);
185 }
186
187 /**
188 * Set the 'encloser' element of feed item
189 * For RSS 2.0 only
190 *
191 * @access public
192 * @param string The url attribute of encloser tag
193 * @param string The length attribute of encloser tag
194 * @param string The type attribute of encloser tag
195 * @return void
196 */
197 public function setEncloser($url, $length, $type)
198 {
199 $attributes = array('url'=>$url, 'length'=>$length, 'type'=>$type);
200 $this->setElement('enclosure','',$attributes);
201 }
202
203 } // end of class FeedItem
204?> \ No newline at end of file
diff --git a/inc/3rdparty/libraries/feedwriter/FeedWriter.php b/inc/3rdparty/libraries/feedwriter/FeedWriter.php
deleted file mode 100755
index 9446cddf..00000000
--- a/inc/3rdparty/libraries/feedwriter/FeedWriter.php
+++ /dev/null
@@ -1,453 +0,0 @@
1<?php
2define('RSS2', 1, true);
3define('JSON', 2, true);
4define('JSONP', 3, true);
5define('ATOM', 4, true);
6
7 /**
8 * Univarsel Feed Writer class
9 *
10 * Genarate RSS2 or JSON (original: RSS 1.0, RSS2.0 and ATOM Feed)
11 *
12 * Modified for FiveFilters.org's Full-Text RSS project
13 * to allow for inclusion of hubs, JSON output.
14 * Stripped RSS1 and ATOM support.
15 *
16 * @package UnivarselFeedWriter
17 * @author Anis uddin Ahmad <anisniit@gmail.com>
18 * @link http://www.ajaxray.com/projects/rss
19 */
20 class FeedWriter
21 {
22 private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html
23 private $hubs = array(); // PubSubHubbub hubs
24 private $channels = array(); // Collection of channel elements
25 private $items = array(); // Collection of items as object of FeedItem class.
26 private $data = array(); // Store some other version wise data
27 private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA
28 private $xsl = null; // stylesheet to render RSS (used by Chrome)
29 private $json = null; // JSON object
30
31 private $version = null;
32
33 /**
34 * Constructor
35 *
36 * @param constant the version constant (RSS2 or JSON).
37 */
38 function __construct($version = RSS2)
39 {
40 $this->version = $version;
41
42 // Setting default value for assential channel elements
43 $this->channels['title'] = $version . ' Feed';
44 $this->channels['link'] = 'http://www.ajaxray.com/blog';
45
46 //Tag names to encode in CDATA
47 $this->CDATAEncoding = array('description', 'content:encoded', 'content', 'subtitle', 'summary');
48 }
49
50 public function setFormat($format) {
51 $this->version = $format;
52 }
53
54 // Start # public functions ---------------------------------------------
55
56 /**
57 * Set a channel element
58 * @access public
59 * @param srting name of the channel tag
60 * @param string content of the channel tag
61 * @return void
62 */
63 public function setChannelElement($elementName, $content)
64 {
65 $this->channels[$elementName] = $content ;
66 }
67
68 /**
69 * Set multiple channel elements from an array. Array elements
70 * should be 'channelName' => 'channelContent' format.
71 *
72 * @access public
73 * @param array array of channels
74 * @return void
75 */
76 public function setChannelElementsFromArray($elementArray)
77 {
78 if(! is_array($elementArray)) return;
79 foreach ($elementArray as $elementName => $content)
80 {
81 $this->setChannelElement($elementName, $content);
82 }
83 }
84
85 /**
86 * Genarate the actual RSS/JSON file
87 *
88 * @access public
89 * @return void
90 */
91 public function genarateFeed($withHeaders = true)
92 {
93 if ($withHeaders) {
94 if ($this->version == RSS2) {
95 header('Content-type: text/xml; charset=UTF-8');
96 // this line prevents Chrome 20 from prompting download
97 // used by Google: https://news.google.com/news/feeds?ned=us&topic=b&output=rss
98 header('X-content-type-options: nosniff');
99 } elseif ($this->version == JSON) {
100 header('Content-type: application/json; charset=UTF-8');
101 } elseif ($this->version == JSONP) {
102 header('Content-type: application/javascript; charset=UTF-8');
103 }
104 }
105
106 if ($this->version == JSON || $this->version == JSONP) {
107 $this->json = new stdClass();
108 }
109
110
111 $this->printHead();
112 $this->printChannels();
113 $this->printItems();
114 $this->printTale();
115 if ($this->version == JSON || $this->version == JSONP) {
116 echo json_encode($this->json);
117 }
118 }
119
120 public function &getItems()
121 {
122 return $this->items;
123 }
124
125 /**
126 * Create a new FeedItem.
127 *
128 * @access public
129 * @return object instance of FeedItem class
130 */
131 public function createNewItem()
132 {
133 $Item = new FeedItem($this->version);
134 return $Item;
135 }
136
137 /**
138 * Add a FeedItem to the main class
139 *
140 * @access public
141 * @param object instance of FeedItem class
142 * @return void
143 */
144 public function addItem($feedItem)
145 {
146 $this->items[] = $feedItem;
147 }
148
149 // Wrapper functions -------------------------------------------------------------------
150
151 /**
152 * Set the 'title' channel element
153 *
154 * @access public
155 * @param srting value of 'title' channel tag
156 * @return void
157 */
158 public function setTitle($title)
159 {
160 $this->setChannelElement('title', $title);
161 }
162
163 /**
164 * Add a hub to the channel element
165 *
166 * @access public
167 * @param string URL
168 * @return void
169 */
170 public function addHub($hub)
171 {
172 $this->hubs[] = $hub;
173 }
174
175 /**
176 * Set XSL URL
177 *
178 * @access public
179 * @param string URL
180 * @return void
181 */
182 public function setXsl($xsl)
183 {
184 $this->xsl = $xsl;
185 }
186
187 /**
188 * Set self URL
189 *
190 * @access public
191 * @param string URL
192 * @return void
193 */
194 public function setSelf($self)
195 {
196 $this->self = $self;
197 }
198
199 /**
200 * Set the 'description' channel element
201 *
202 * @access public
203 * @param srting value of 'description' channel tag
204 * @return void
205 */
206 public function setDescription($description)
207 {
208 $tag = ($this->version == ATOM)? 'subtitle' : 'description';
209 $this->setChannelElement($tag, $description);
210 }
211
212 /**
213 * Set the 'link' channel element
214 *
215 * @access public
216 * @param srting value of 'link' channel tag
217 * @return void
218 */
219 public function setLink($link)
220 {
221 $this->setChannelElement('link', $link);
222 }
223
224 /**
225 * Set the 'image' channel element
226 *
227 * @access public
228 * @param srting title of image
229 * @param srting link url of the imahe
230 * @param srting path url of the image
231 * @return void
232 */
233 public function setImage($title, $link, $url)
234 {
235 $this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url));
236 }
237
238 // End # public functions ----------------------------------------------
239
240 // Start # private functions ----------------------------------------------
241
242 /**
243 * Prints the xml and rss namespace
244 *
245 * @access private
246 * @return void
247 */
248 private function printHead()
249 {
250 if ($this->version == RSS2)
251 {
252 $out = '<?xml version="1.0" encoding="utf-8"?>'."\n";
253 if ($this->xsl) $out .= '<?xml-stylesheet type="text/xsl" href="'.htmlspecialchars($this->xsl).'"?>' . PHP_EOL;
254 $out .= '<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">' . PHP_EOL;
255 echo $out;
256 }
257 elseif ($this->version == JSON || $this->version == JSONP)
258 {
259 $this->json->rss = array('@attributes' => array('version' => '2.0'));
260 }
261 }
262
263 /**
264 * Closes the open tags at the end of file
265 *
266 * @access private
267 * @return void
268 */
269 private function printTale()
270 {
271 if ($this->version == RSS2)
272 {
273 echo '</channel>',PHP_EOL,'</rss>';
274 }
275 // do nothing for JSON
276 }
277
278 /**
279 * Creates a single node as xml format
280 *
281 * @access private
282 * @param string name of the tag
283 * @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format
284 * @param array Attributes(if any) in 'attrName' => 'attrValue' format
285 * @return string formatted xml tag
286 */
287 private function makeNode($tagName, $tagContent, $attributes = null)
288 {
289 if ($this->version == RSS2)
290 {
291 $nodeText = '';
292 $attrText = '';
293 if (is_array($attributes))
294 {
295 foreach ($attributes as $key => $value)
296 {
297 $attrText .= " $key=\"$value\" ";
298 }
299 }
300 $nodeText .= "<{$tagName}{$attrText}>";
301 if (is_array($tagContent))
302 {
303 foreach ($tagContent as $key => $value)
304 {
305 $nodeText .= $this->makeNode($key, $value);
306 }
307 }
308 else
309 {
310 //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent);
311 $nodeText .= htmlspecialchars($tagContent);
312 }
313 //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]></$tagName>" : "</$tagName>";
314 $nodeText .= "</$tagName>";
315 return $nodeText . PHP_EOL;
316 }
317 elseif ($this->version == JSON || $this->version == JSONP)
318 {
319 $tagName = (string)$tagName;
320 $tagName = strtr($tagName, ':', '_');
321 $node = null;
322 if (!$tagContent && is_array($attributes) && count($attributes))
323 {
324 $node = array('@attributes' => $this->json_keys($attributes));
325 } else {
326 if (is_array($tagContent)) {
327 $node = $this->json_keys($tagContent);
328 } else {
329 $node = $tagContent;
330 }
331 }
332 return $node;
333 }
334 return ''; // should not get here
335 }
336
337 private function json_keys(array $array) {
338 $new = array();
339 foreach ($array as $key => $val) {
340 if (is_string($key)) $key = strtr($key, ':', '_');
341 if (is_array($val)) {
342 $new[$key] = $this->json_keys($val);
343 } else {
344 $new[$key] = $val;
345 }
346 }
347 return $new;
348 }
349
350 /**
351 * @desc Print channels
352 * @access private
353 * @return void
354 */
355 private function printChannels()
356 {
357 //Start channel tag
358 if ($this->version == RSS2) {
359 echo '<channel>' . PHP_EOL;
360 // add hubs
361 foreach ($this->hubs as $hub) {
362 //echo $this->makeNode('link', '', array('rel'=>'hub', 'href'=>$hub, 'xmlns'=>'http://www.w3.org/2005/Atom'));
363 echo '<link rel="hub" href="'.htmlspecialchars($hub).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
364 }
365 // add self
366 if (isset($this->self)) {
367 //echo $this->makeNode('link', '', array('rel'=>'self', 'href'=>$this->self, 'xmlns'=>'http://www.w3.org/2005/Atom'));
368 echo '<link rel="self" href="'.htmlspecialchars($this->self).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
369 }
370 //Print Items of channel
371 foreach ($this->channels as $key => $value)
372 {
373 echo $this->makeNode($key, $value);
374 }
375 } elseif ($this->version == JSON || $this->version == JSONP) {
376 $this->json->rss['channel'] = (object)$this->json_keys($this->channels);
377 }
378 }
379
380 /**
381 * Prints formatted feed items
382 *
383 * @access private
384 * @return void
385 */
386 private function printItems()
387 {
388 foreach ($this->items as $item) {
389 $itemElements = $item->getElements();
390
391 echo $this->startItem();
392
393 if ($this->version == JSON || $this->version == JSONP) {
394 $json_item = array();
395 }
396
397 foreach ($itemElements as $thisElement) {
398 foreach ($thisElement as $instance) {
399 if ($this->version == RSS2) {
400 echo $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
401 } elseif ($this->version == JSON || $this->version == JSONP) {
402 $_json_node = $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
403 if (count($thisElement) > 1) {
404 $json_item[strtr($instance['name'], ':', '_')][] = $_json_node;
405 } else {
406 $json_item[strtr($instance['name'], ':', '_')] = $_json_node;
407 }
408 }
409 }
410 }
411 echo $this->endItem();
412 if ($this->version == JSON || $this->version == JSONP) {
413 if (count($this->items) > 1) {
414 $this->json->rss['channel']->item[] = $json_item;
415 } else {
416 $this->json->rss['channel']->item = $json_item;
417 }
418 }
419 }
420 }
421
422 /**
423 * Make the starting tag of channels
424 *
425 * @access private
426 * @return void
427 */
428 private function startItem()
429 {
430 if ($this->version == RSS2)
431 {
432 echo '<item>' . PHP_EOL;
433 }
434 // nothing for JSON
435 }
436
437 /**
438 * Closes feed item tag
439 *
440 * @access private
441 * @return void
442 */
443 private function endItem()
444 {
445 if ($this->version == RSS2)
446 {
447 echo '</item>' . PHP_EOL;
448 }
449 // nothing for JSON
450 }
451
452 // End # private functions ----------------------------------------------
453 } \ No newline at end of file
diff --git a/inc/3rdparty/libraries/html5/Data.php b/inc/3rdparty/libraries/html5/Data.php
deleted file mode 100644
index 497345f4..00000000
--- a/inc/3rdparty/libraries/html5/Data.php
+++ /dev/null
@@ -1,114 +0,0 @@
1<?php
2
3// warning: this file is encoded in UTF-8!
4
5class HTML5_Data
6{
7
8 // at some point this should be moved to a .ser file. Another
9 // possible optimization is to give UTF-8 bytes, not Unicode
10 // codepoints
11 // XXX: Not quite sure why it's named this; this is
12 // actually the numeric entity dereference table.
13 protected static $realCodepointTable = array(
14 0x00 => 0xFFFD, // REPLACEMENT CHARACTER
15 0x0D => 0x000A, // LINE FEED (LF)
16 0x80 => 0x20AC, // EURO SIGN ('€')
17 0x81 => 0x0081, // <control>
18 0x82 => 0x201A, // SINGLE LOW-9 QUOTATION MARK ('‚')
19 0x83 => 0x0192, // LATIN SMALL LETTER F WITH HOOK ('ƒ')
20 0x84 => 0x201E, // DOUBLE LOW-9 QUOTATION MARK ('„')
21 0x85 => 0x2026, // HORIZONTAL ELLIPSIS ('…')
22 0x86 => 0x2020, // DAGGER ('†')
23 0x87 => 0x2021, // DOUBLE DAGGER ('‡')
24 0x88 => 0x02C6, // MODIFIER LETTER CIRCUMFLEX ACCENT ('ˆ')
25 0x89 => 0x2030, // PER MILLE SIGN ('‰')
26 0x8A => 0x0160, // LATIN CAPITAL LETTER S WITH CARON ('Š')
27 0x8B => 0x2039, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK ('‹')
28 0x8C => 0x0152, // LATIN CAPITAL LIGATURE OE ('Œ')
29 0x8D => 0x008D, // <control>
30 0x8E => 0x017D, // LATIN CAPITAL LETTER Z WITH CARON ('Ž')
31 0x8F => 0x008F, // <control>
32 0x90 => 0x0090, // <control>
33 0x91 => 0x2018, // LEFT SINGLE QUOTATION MARK ('‘')
34 0x92 => 0x2019, // RIGHT SINGLE QUOTATION MARK ('’')
35 0x93 => 0x201C, // LEFT DOUBLE QUOTATION MARK ('“')
36 0x94 => 0x201D, // RIGHT DOUBLE QUOTATION MARK ('”')
37 0x95 => 0x2022, // BULLET ('•')
38 0x96 => 0x2013, // EN DASH ('–')
39 0x97 => 0x2014, // EM DASH ('—')
40 0x98 => 0x02DC, // SMALL TILDE ('˜')
41 0x99 => 0x2122, // TRADE MARK SIGN ('™')
42 0x9A => 0x0161, // LATIN SMALL LETTER S WITH CARON ('š')
43 0x9B => 0x203A, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK ('›')
44 0x9C => 0x0153, // LATIN SMALL LIGATURE OE ('œ')
45 0x9D => 0x009D, // <control>
46 0x9E => 0x017E, // LATIN SMALL LETTER Z WITH CARON ('ž')
47 0x9F => 0x0178, // LATIN CAPITAL LETTER Y WITH DIAERESIS ('Ÿ')
48 );
49
50 protected static $namedCharacterReferences;
51
52 protected static $namedCharacterReferenceMaxLength;
53
54 /**
55 * Returns the "real" Unicode codepoint of a malformed character
56 * reference.
57 */
58 public static function getRealCodepoint($ref) {
59 if (!isset(self::$realCodepointTable[$ref])) return false;
60 else return self::$realCodepointTable[$ref];
61 }
62
63 public static function getNamedCharacterReferences() {
64 if (!self::$namedCharacterReferences) {
65 self::$namedCharacterReferences = unserialize(
66 file_get_contents(dirname(__FILE__) . '/named-character-references.ser'));
67 }
68 return self::$namedCharacterReferences;
69 }
70
71 /**
72 * Converts a Unicode codepoint to sequence of UTF-8 bytes.
73 * @note Shamelessly stolen from HTML Purifier, which is also
74 * shamelessly stolen from Feyd (which is in public domain).
75 */
76 public static function utf8chr($code) {
77 /* We don't care: we live dangerously
78 * if($code > 0x10FFFF or $code < 0x0 or
79 ($code >= 0xD800 and $code <= 0xDFFF) ) {
80 // bits are set outside the "valid" range as defined
81 // by UNICODE 4.1.0
82 return "\xEF\xBF\xBD";
83 }*/
84
85 $x = $y = $z = $w = 0;
86 if ($code < 0x80) {
87 // regular ASCII character
88 $x = $code;
89 } else {
90 // set up bits for UTF-8
91 $x = ($code & 0x3F) | 0x80;
92 if ($code < 0x800) {
93 $y = (($code & 0x7FF) >> 6) | 0xC0;
94 } else {
95 $y = (($code & 0xFC0) >> 6) | 0x80;
96 if($code < 0x10000) {
97 $z = (($code >> 12) & 0x0F) | 0xE0;
98 } else {
99 $z = (($code >> 12) & 0x3F) | 0x80;
100 $w = (($code >> 18) & 0x07) | 0xF0;
101 }
102 }
103 }
104 // set up the actual character
105 $ret = '';
106 if($w) $ret .= chr($w);
107 if($z) $ret .= chr($z);
108 if($y) $ret .= chr($y);
109 $ret .= chr($x);
110
111 return $ret;
112 }
113
114}
diff --git a/inc/3rdparty/libraries/html5/InputStream.php b/inc/3rdparty/libraries/html5/InputStream.php
deleted file mode 100644
index f98b4272..00000000
--- a/inc/3rdparty/libraries/html5/InputStream.php
+++ /dev/null
@@ -1,284 +0,0 @@
1<?php
2
3/*
4
5Copyright 2009 Geoffrey Sneddon <http://gsnedders.com/>
6
7Permission is hereby granted, free of charge, to any person obtaining a
8copy of this software and associated documentation files (the
9"Software"), to deal in the Software without restriction, including
10without limitation the rights to use, copy, modify, merge, publish,
11distribute, sublicense, and/or sell copies of the Software, and to
12permit persons to whom the Software is furnished to do so, subject to
13the following conditions:
14
15The above copyright notice and this permission notice shall be included
16in all copies or substantial portions of the Software.
17
18THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
26*/
27
28// Some conventions:
29// /* */ indicates verbatim text from the HTML 5 specification
30// // indicates regular comments
31
32class HTML5_InputStream {
33 /**
34 * The string data we're parsing.
35 */
36 private $data;
37
38 /**
39 * The current integer byte position we are in $data
40 */
41 private $char;
42
43 /**
44 * Length of $data; when $char === $data, we are at the end-of-file.
45 */
46 private $EOF;
47
48 /**
49 * Parse errors.
50 */
51 public $errors = array();
52
53 /**
54 * @param $data Data to parse
55 */
56 public function __construct($data) {
57
58 /* Given an encoding, the bytes in the input stream must be
59 converted to Unicode characters for the tokeniser, as
60 described by the rules for that encoding, except that the
61 leading U+FEFF BYTE ORDER MARK character, if any, must not
62 be stripped by the encoding layer (it is stripped by the rule below).
63
64 Bytes or sequences of bytes in the original byte stream that
65 could not be converted to Unicode characters must be converted
66 to U+FFFD REPLACEMENT CHARACTER code points. */
67
68 // XXX currently assuming input data is UTF-8; once we
69 // build encoding detection this will no longer be the case
70 //
71 // We previously had an mbstring implementation here, but that
72 // implementation is heavily non-conforming, so it's been
73 // omitted.
74 if (extension_loaded('iconv')) {
75 // non-conforming
76 $data = @iconv('UTF-8', 'UTF-8//IGNORE', $data);
77 } else {
78 // we can make a conforming native implementation
79 throw new Exception('Not implemented, please install mbstring or iconv');
80 }
81
82 /* One leading U+FEFF BYTE ORDER MARK character must be
83 ignored if any are present. */
84 if (substr($data, 0, 3) === "\xEF\xBB\xBF") {
85 $data = substr($data, 3);
86 }
87
88 /* All U+0000 NULL characters in the input must be replaced
89 by U+FFFD REPLACEMENT CHARACTERs. Any occurrences of such
90 characters is a parse error. */
91 for ($i = 0, $count = substr_count($data, "\0"); $i < $count; $i++) {
92 $this->errors[] = array(
93 'type' => HTML5_Tokenizer::PARSEERROR,
94 'data' => 'null-character'
95 );
96 }
97 /* U+000D CARRIAGE RETURN (CR) characters and U+000A LINE FEED
98 (LF) characters are treated specially. Any CR characters
99 that are followed by LF characters must be removed, and any
100 CR characters not followed by LF characters must be converted
101 to LF characters. Thus, newlines in HTML DOMs are represented
102 by LF characters, and there are never any CR characters in the
103 input to the tokenization stage. */
104 $data = str_replace(
105 array(
106 "\0",
107 "\r\n",
108 "\r"
109 ),
110 array(
111 "\xEF\xBF\xBD",
112 "\n",
113 "\n"
114 ),
115 $data
116 );
117
118 /* Any occurrences of any characters in the ranges U+0001 to
119 U+0008, U+000B, U+000E to U+001F, U+007F to U+009F,
120 U+D800 to U+DFFF , U+FDD0 to U+FDEF, and
121 characters U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFFE, U+2FFFF,
122 U+3FFFE, U+3FFFF, U+4FFFE, U+4FFFF, U+5FFFE, U+5FFFF, U+6FFFE,
123 U+6FFFF, U+7FFFE, U+7FFFF, U+8FFFE, U+8FFFF, U+9FFFE, U+9FFFF,
124 U+AFFFE, U+AFFFF, U+BFFFE, U+BFFFF, U+CFFFE, U+CFFFF, U+DFFFE,
125 U+DFFFF, U+EFFFE, U+EFFFF, U+FFFFE, U+FFFFF, U+10FFFE, and
126 U+10FFFF are parse errors. (These are all control characters
127 or permanently undefined Unicode characters.) */
128 // Check PCRE is loaded.
129 if (extension_loaded('pcre')) {
130 $count = preg_match_all(
131 '/(?:
132 [\x01-\x08\x0B\x0E-\x1F\x7F] # U+0001 to U+0008, U+000B, U+000E to U+001F and U+007F
133 |
134 \xC2[\x80-\x9F] # U+0080 to U+009F
135 |
136 \xED(?:\xA0[\x80-\xFF]|[\xA1-\xBE][\x00-\xFF]|\xBF[\x00-\xBF]) # U+D800 to U+DFFFF
137 |
138 \xEF\xB7[\x90-\xAF] # U+FDD0 to U+FDEF
139 |
140 \xEF\xBF[\xBE\xBF] # U+FFFE and U+FFFF
141 |
142 [\xF0-\xF4][\x8F-\xBF]\xBF[\xBE\xBF] # U+nFFFE and U+nFFFF (1 <= n <= 10_{16})
143 )/x',
144 $data,
145 $matches
146 );
147 for ($i = 0; $i < $count; $i++) {
148 $this->errors[] = array(
149 'type' => HTML5_Tokenizer::PARSEERROR,
150 'data' => 'invalid-codepoint'
151 );
152 }
153 } else {
154 // XXX: Need non-PCRE impl, probably using substr_count
155 }
156
157 $this->data = $data;
158 $this->char = 0;
159 $this->EOF = strlen($data);
160 }
161
162 /**
163 * Returns the current line that the tokenizer is at.
164 */
165 public function getCurrentLine() {
166 // Check the string isn't empty
167 if($this->EOF) {
168 // Add one to $this->char because we want the number for the next
169 // byte to be processed.
170 return substr_count($this->data, "\n", 0, min($this->char, $this->EOF)) + 1;
171 } else {
172 // If the string is empty, we are on the first line (sorta).
173 return 1;
174 }
175 }
176
177 /**
178 * Returns the current column of the current line that the tokenizer is at.
179 */
180 public function getColumnOffset() {
181 // strrpos is weird, and the offset needs to be negative for what we
182 // want (i.e., the last \n before $this->char). This needs to not have
183 // one (to make it point to the next character, the one we want the
184 // position of) added to it because strrpos's behaviour includes the
185 // final offset byte.
186 $lastLine = strrpos($this->data, "\n", $this->char - 1 - strlen($this->data));
187
188 // However, for here we want the length up until the next byte to be
189 // processed, so add one to the current byte ($this->char).
190 if($lastLine !== false) {
191 $findLengthOf = substr($this->data, $lastLine + 1, $this->char - 1 - $lastLine);
192 } else {
193 $findLengthOf = substr($this->data, 0, $this->char);
194 }
195
196 // Get the length for the string we need.
197 if(extension_loaded('iconv')) {
198 return iconv_strlen($findLengthOf, 'utf-8');
199 } elseif(extension_loaded('mbstring')) {
200 return mb_strlen($findLengthOf, 'utf-8');
201 } elseif(extension_loaded('xml')) {
202 return strlen(utf8_decode($findLengthOf));
203 } else {
204 $count = count_chars($findLengthOf);
205 // 0x80 = 0x7F - 0 + 1 (one added to get inclusive range)
206 // 0x33 = 0xF4 - 0x2C + 1 (one added to get inclusive range)
207 return array_sum(array_slice($count, 0, 0x80)) +
208 array_sum(array_slice($count, 0xC2, 0x33));
209 }
210 }
211
212 /**
213 * Retrieve the currently consume character.
214 * @note This performs bounds checking
215 */
216 public function char() {
217 return ($this->char++ < $this->EOF)
218 ? $this->data[$this->char - 1]
219 : false;
220 }
221
222 /**
223 * Get all characters until EOF.
224 * @note This performs bounds checking
225 */
226 public function remainingChars() {
227 if($this->char < $this->EOF) {
228 $data = substr($this->data, $this->char);
229 $this->char = $this->EOF;
230 return $data;
231 } else {
232 return false;
233 }
234 }
235
236 /**
237 * Matches as far as possible until we reach a certain set of bytes
238 * and returns the matched substring.
239 * @param $bytes Bytes to match.
240 */
241 public function charsUntil($bytes, $max = null) {
242 if ($this->char < $this->EOF) {
243 if ($max === 0 || $max) {
244 $len = strcspn($this->data, $bytes, $this->char, $max);
245 } else {
246 $len = strcspn($this->data, $bytes, $this->char);
247 }
248 $string = (string) substr($this->data, $this->char, $len);
249 $this->char += $len;
250 return $string;
251 } else {
252 return false;
253 }
254 }
255
256 /**
257 * Matches as far as possible with a certain set of bytes
258 * and returns the matched substring.
259 * @param $bytes Bytes to match.
260 */
261 public function charsWhile($bytes, $max = null) {
262 if ($this->char < $this->EOF) {
263 if ($max === 0 || $max) {
264 $len = strspn($this->data, $bytes, $this->char, $max);
265 } else {
266 $len = strspn($this->data, $bytes, $this->char);
267 }
268 $string = (string) substr($this->data, $this->char, $len);
269 $this->char += $len;
270 return $string;
271 } else {
272 return false;
273 }
274 }
275
276 /**
277 * Unconsume one character.
278 */
279 public function unget() {
280 if ($this->char <= $this->EOF) {
281 $this->char--;
282 }
283 }
284}
diff --git a/inc/3rdparty/libraries/html5/Parser.php b/inc/3rdparty/libraries/html5/Parser.php
deleted file mode 100644
index 5f9ca560..00000000
--- a/inc/3rdparty/libraries/html5/Parser.php
+++ /dev/null
@@ -1,36 +0,0 @@
1<?php
2
3require_once dirname(__FILE__) . '/Data.php';
4require_once dirname(__FILE__) . '/InputStream.php';
5require_once dirname(__FILE__) . '/TreeBuilder.php';
6require_once dirname(__FILE__) . '/Tokenizer.php';
7
8/**
9 * Outwards facing interface for HTML5.
10 */
11class HTML5_Parser
12{
13 /**
14 * Parses a full HTML document.
15 * @param $text HTML text to parse
16 * @param $builder Custom builder implementation
17 * @return Parsed HTML as DOMDocument
18 */
19 static public function parse($text, $builder = null) {
20 $tokenizer = new HTML5_Tokenizer($text, $builder);
21 $tokenizer->parse();
22 return $tokenizer->save();
23 }
24 /**
25 * Parses an HTML fragment.
26 * @param $text HTML text to parse
27 * @param $context String name of context element to pretend parsing is in.
28 * @param $builder Custom builder implementation
29 * @return Parsed HTML as DOMDocument
30 */
31 static public function parseFragment($text, $context = null, $builder = null) {
32 $tokenizer = new HTML5_Tokenizer($text, $builder);
33 $tokenizer->parseFragment($context);
34 return $tokenizer->save();
35 }
36}
diff --git a/inc/3rdparty/libraries/html5/Tokenizer.php b/inc/3rdparty/libraries/html5/Tokenizer.php
deleted file mode 100644
index 0af07164..00000000
--- a/inc/3rdparty/libraries/html5/Tokenizer.php
+++ /dev/null
@@ -1,2422 +0,0 @@
1<?php
2
3/*
4
5Copyright 2007 Jeroen van der Meer <http://jero.net/>
6Copyright 2008 Edward Z. Yang <http://htmlpurifier.org/>
7Copyright 2009 Geoffrey Sneddon <http://gsnedders.com/>
8
9Permission is hereby granted, free of charge, to any person obtaining a
10copy of this software and associated documentation files (the
11"Software"), to deal in the Software without restriction, including
12without limitation the rights to use, copy, modify, merge, publish,
13distribute, sublicense, and/or sell copies of the Software, and to
14permit persons to whom the Software is furnished to do so, subject to
15the following conditions:
16
17The above copyright notice and this permission notice shall be included
18in all copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
28*/
29
30// Some conventions:
31// /* */ indicates verbatim text from the HTML 5 specification
32// // indicates regular comments
33
34// all flags are in hyphenated form
35
36class HTML5_Tokenizer {
37 /**
38 * Points to an InputStream object.
39 */
40 protected $stream;
41
42 /**
43 * Tree builder that the tokenizer emits token to.
44 */
45 private $tree;
46
47 /**
48 * Current content model we are parsing as.
49 */
50 protected $content_model;
51
52 /**
53 * Current token that is being built, but not yet emitted. Also
54 * is the last token emitted, if applicable.
55 */
56 protected $token;
57
58 // These are constants describing the content model
59 const PCDATA = 0;
60 const RCDATA = 1;
61 const CDATA = 2;
62 const PLAINTEXT = 3;
63
64 // These are constants describing tokens
65 // XXX should probably be moved somewhere else, probably the
66 // HTML5 class.
67 const DOCTYPE = 0;
68 const STARTTAG = 1;
69 const ENDTAG = 2;
70 const COMMENT = 3;
71 const CHARACTER = 4;
72 const SPACECHARACTER = 5;
73 const EOF = 6;
74 const PARSEERROR = 7;
75
76 // These are constants representing bunches of characters.
77 const ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
78 const UPPER_ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
79 const LOWER_ALPHA = 'abcdefghijklmnopqrstuvwxyz';
80 const DIGIT = '0123456789';
81 const HEX = '0123456789ABCDEFabcdef';
82 const WHITESPACE = "\t\n\x0c ";
83
84 /**
85 * @param $data Data to parse
86 */
87 public function __construct($data, $builder = null) {
88 $this->stream = new HTML5_InputStream($data);
89 if (!$builder) $this->tree = new HTML5_TreeBuilder;
90 else $this->tree = $builder;
91 $this->content_model = self::PCDATA;
92 }
93
94 public function parseFragment($context = null) {
95 $this->tree->setupContext($context);
96 if ($this->tree->content_model) {
97 $this->content_model = $this->tree->content_model;
98 $this->tree->content_model = null;
99 }
100 $this->parse();
101 }
102
103 // XXX maybe convert this into an iterator? regardless, this function
104 // and the save function should go into a Parser facade of some sort
105 /**
106 * Performs the actual parsing of the document.
107 */
108 public function parse() {
109 // Current state
110 $state = 'data';
111 // This is used to avoid having to have look-behind in the data state.
112 $lastFourChars = '';
113 /**
114 * Escape flag as specified by the HTML5 specification: "used to
115 * control the behavior of the tokeniser. It is either true or
116 * false, and initially must be set to the false state."
117 */
118 $escape = false;
119 //echo "\n\n";
120 while($state !== null) {
121
122 /*echo $state . ' ';
123 switch ($this->content_model) {
124 case self::PCDATA: echo 'PCDATA'; break;
125 case self::RCDATA: echo 'RCDATA'; break;
126 case self::CDATA: echo 'CDATA'; break;
127 case self::PLAINTEXT: echo 'PLAINTEXT'; break;
128 }
129 if ($escape) echo " escape";
130 echo "\n";*/
131
132 switch($state) {
133 case 'data':
134
135 /* Consume the next input character */
136 $char = $this->stream->char();
137 $lastFourChars .= $char;
138 if (strlen($lastFourChars) > 4) $lastFourChars = substr($lastFourChars, -4);
139
140 // see below for meaning
141 $hyp_cond =
142 !$escape &&
143 (
144 $this->content_model === self::RCDATA ||
145 $this->content_model === self::CDATA
146 );
147 $amp_cond =
148 !$escape &&
149 (
150 $this->content_model === self::PCDATA ||
151 $this->content_model === self::RCDATA
152 );
153 $lt_cond =
154 $this->content_model === self::PCDATA ||
155 (
156 (
157 $this->content_model === self::RCDATA ||
158 $this->content_model === self::CDATA
159 ) &&
160 !$escape
161 );
162 $gt_cond =
163 $escape &&
164 (
165 $this->content_model === self::RCDATA ||
166 $this->content_model === self::CDATA
167 );
168
169 if($char === '&' && $amp_cond) {
170 /* U+0026 AMPERSAND (&)
171 When the content model flag is set to one of the PCDATA or RCDATA
172 states and the escape flag is false: switch to the
173 character reference data state. Otherwise: treat it as per
174 the "anything else" entry below. */
175 $state = 'character reference data';
176
177 } elseif(
178 $char === '-' &&
179 $hyp_cond &&
180 $lastFourChars === '<!--'
181 ) {
182 /*
183 U+002D HYPHEN-MINUS (-)
184 If the content model flag is set to either the RCDATA state or
185 the CDATA state, and the escape flag is false, and there are at
186 least three characters before this one in the input stream, and the
187 last four characters in the input stream, including this one, are
188 U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS,
189 and U+002D HYPHEN-MINUS ("<!--"), then set the escape flag to true. */
190 $escape = true;
191
192 /* In any case, emit the input character as a character token. Stay
193 in the data state. */
194 $this->emitToken(array(
195 'type' => self::CHARACTER,
196 'data' => '-'
197 ));
198 // We do the "any case" part as part of "anything else".
199
200 /* U+003C LESS-THAN SIGN (<) */
201 } elseif($char === '<' && $lt_cond) {
202 /* When the content model flag is set to the PCDATA state: switch
203 to the tag open state.
204
205 When the content model flag is set to either the RCDATA state or
206 the CDATA state and the escape flag is false: switch to the tag
207 open state.
208
209 Otherwise: treat it as per the "anything else" entry below. */
210 $state = 'tag open';
211
212 /* U+003E GREATER-THAN SIGN (>) */
213 } elseif(
214 $char === '>' &&
215 $gt_cond &&
216 substr($lastFourChars, 1) === '-->'
217 ) {
218 /* If the content model flag is set to either the RCDATA state or
219 the CDATA state, and the escape flag is true, and the last three
220 characters in the input stream including this one are U+002D
221 HYPHEN-MINUS, U+002D HYPHEN-MINUS, U+003E GREATER-THAN SIGN ("-->"),
222 set the escape flag to false. */
223 $escape = false;
224
225 /* In any case, emit the input character as a character token.
226 Stay in the data state. */
227 $this->emitToken(array(
228 'type' => self::CHARACTER,
229 'data' => '>'
230 ));
231 // We do the "any case" part as part of "anything else".
232
233 } elseif($char === false) {
234 /* EOF
235 Emit an end-of-file token. */
236 $state = null;
237 $this->tree->emitToken(array(
238 'type' => self::EOF
239 ));
240
241 } elseif($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
242 // Directly after emitting a token you switch back to the "data
243 // state". At that point spaceCharacters are important so they are
244 // emitted separately.
245 $chars = $this->stream->charsWhile(self::WHITESPACE);
246 $this->emitToken(array(
247 'type' => self::SPACECHARACTER,
248 'data' => $char . $chars
249 ));
250 $lastFourChars .= $chars;
251 if (strlen($lastFourChars) > 4) $lastFourChars = substr($lastFourChars, -4);
252
253 } else {
254 /* Anything else
255 THIS IS AN OPTIMIZATION: Get as many character that
256 otherwise would also be treated as a character token and emit it
257 as a single character token. Stay in the data state. */
258
259 $mask = '';
260 if ($hyp_cond) $mask .= '-';
261 if ($amp_cond) $mask .= '&';
262 if ($lt_cond) $mask .= '<';
263 if ($gt_cond) $mask .= '>';
264
265 if ($mask === '') {
266 $chars = $this->stream->remainingChars();
267 } else {
268 $chars = $this->stream->charsUntil($mask);
269 }
270
271 $this->emitToken(array(
272 'type' => self::CHARACTER,
273 'data' => $char . $chars
274 ));
275
276 $lastFourChars .= $chars;
277 if (strlen($lastFourChars) > 4) $lastFourChars = substr($lastFourChars, -4);
278
279 $state = 'data';
280 }
281 break;
282
283 case 'character reference data':
284 /* (This cannot happen if the content model flag
285 is set to the CDATA state.) */
286
287 /* Attempt to consume a character reference, with no
288 additional allowed character. */
289 $entity = $this->consumeCharacterReference();
290
291 /* If nothing is returned, emit a U+0026 AMPERSAND
292 character token. Otherwise, emit the character token that
293 was returned. */
294 // This is all done when consuming the character reference.
295 $this->emitToken(array(
296 'type' => self::CHARACTER,
297 'data' => $entity
298 ));
299
300 /* Finally, switch to the data state. */
301 $state = 'data';
302 break;
303
304 case 'tag open':
305 $char = $this->stream->char();
306
307 switch($this->content_model) {
308 case self::RCDATA:
309 case self::CDATA:
310 /* Consume the next input character. If it is a
311 U+002F SOLIDUS (/) character, switch to the close
312 tag open state. Otherwise, emit a U+003C LESS-THAN
313 SIGN character token and reconsume the current input
314 character in the data state. */
315 // We consumed above.
316
317 if($char === '/') {
318 $state = 'close tag open';
319
320 } else {
321 $this->emitToken(array(
322 'type' => self::CHARACTER,
323 'data' => '<'
324 ));
325
326 $this->stream->unget();
327
328 $state = 'data';
329 }
330 break;
331
332 case self::PCDATA:
333 /* If the content model flag is set to the PCDATA state
334 Consume the next input character: */
335 // We consumed above.
336
337 if($char === '!') {
338 /* U+0021 EXCLAMATION MARK (!)
339 Switch to the markup declaration open state. */
340 $state = 'markup declaration open';
341
342 } elseif($char === '/') {
343 /* U+002F SOLIDUS (/)
344 Switch to the close tag open state. */
345 $state = 'close tag open';
346
347 } elseif('A' <= $char && $char <= 'Z') {
348 /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
349 Create a new start tag token, set its tag name to the lowercase
350 version of the input character (add 0x0020 to the character's code
351 point), then switch to the tag name state. (Don't emit the token
352 yet; further details will be filled in before it is emitted.) */
353 $this->token = array(
354 'name' => strtolower($char),
355 'type' => self::STARTTAG,
356 'attr' => array()
357 );
358
359 $state = 'tag name';
360
361 } elseif('a' <= $char && $char <= 'z') {
362 /* U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z
363 Create a new start tag token, set its tag name to the input
364 character, then switch to the tag name state. (Don't emit
365 the token yet; further details will be filled in before it
366 is emitted.) */
367 $this->token = array(
368 'name' => $char,
369 'type' => self::STARTTAG,
370 'attr' => array()
371 );
372
373 $state = 'tag name';
374
375 } elseif($char === '>') {
376 /* U+003E GREATER-THAN SIGN (>)
377 Parse error. Emit a U+003C LESS-THAN SIGN character token and a
378 U+003E GREATER-THAN SIGN character token. Switch to the data state. */
379 $this->emitToken(array(
380 'type' => self::PARSEERROR,
381 'data' => 'expected-tag-name-but-got-right-bracket'
382 ));
383 $this->emitToken(array(
384 'type' => self::CHARACTER,
385 'data' => '<>'
386 ));
387
388 $state = 'data';
389
390 } elseif($char === '?') {
391 /* U+003F QUESTION MARK (?)
392 Parse error. Switch to the bogus comment state. */
393 $this->emitToken(array(
394 'type' => self::PARSEERROR,
395 'data' => 'expected-tag-name-but-got-question-mark'
396 ));
397 $this->token = array(
398 'data' => '?',
399 'type' => self::COMMENT
400 );
401 $state = 'bogus comment';
402
403 } else {
404 /* Anything else
405 Parse error. Emit a U+003C LESS-THAN SIGN character token and
406 reconsume the current input character in the data state. */
407 $this->emitToken(array(
408 'type' => self::PARSEERROR,
409 'data' => 'expected-tag-name'
410 ));
411 $this->emitToken(array(
412 'type' => self::CHARACTER,
413 'data' => '<'
414 ));
415
416 $state = 'data';
417 $this->stream->unget();
418 }
419 break;
420 }
421 break;
422
423 case 'close tag open':
424 if (
425 $this->content_model === self::RCDATA ||
426 $this->content_model === self::CDATA
427 ) {
428 /* If the content model flag is set to the RCDATA or CDATA
429 states... */
430 $name = strtolower($this->stream->charsWhile(self::ALPHA));
431 $following = $this->stream->char();
432 $this->stream->unget();
433 if (
434 !$this->token ||
435 $this->token['name'] !== $name ||
436 $this->token['name'] === $name && !in_array($following, array("\x09", "\x0A", "\x0C", "\x20", "\x3E", "\x2F", false))
437 ) {
438 /* if no start tag token has ever been emitted by this instance
439 of the tokenizer (fragment case), or, if the next few
440 characters do not match the tag name of the last start tag
441 token emitted (compared in an ASCII case-insensitive manner),
442 or if they do but they are not immediately followed by one of
443 the following characters:
444
445 * U+0009 CHARACTER TABULATION
446 * U+000A LINE FEED (LF)
447 * U+000C FORM FEED (FF)
448 * U+0020 SPACE
449 * U+003E GREATER-THAN SIGN (>)
450 * U+002F SOLIDUS (/)
451 * EOF
452
453 ...then emit a U+003C LESS-THAN SIGN character token, a
454 U+002F SOLIDUS character token, and switch to the data
455 state to process the next input character. */
456 // XXX: Probably ought to replace in_array with $following === x ||...
457
458 // We also need to emit $name now we've consumed that, as we
459 // know it'll just be emitted as a character token.
460 $this->emitToken(array(
461 'type' => self::CHARACTER,
462 'data' => '</' . $name
463 ));
464
465 $state = 'data';
466 } else {
467 // This matches what would happen if we actually did the
468 // otherwise below (but we can't because we've consumed too
469 // much).
470
471 // Start the end tag token with the name we already have.
472 $this->token = array(
473 'name' => $name,
474 'type' => self::ENDTAG
475 );
476
477 // Change to tag name state.
478 $state = 'tag name';
479 }
480 } elseif ($this->content_model === self::PCDATA) {
481 /* Otherwise, if the content model flag is set to the PCDATA
482 state [...]: */
483 $char = $this->stream->char();
484
485 if ('A' <= $char && $char <= 'Z') {
486 /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
487 Create a new end tag token, set its tag name to the lowercase version
488 of the input character (add 0x0020 to the character's code point), then
489 switch to the tag name state. (Don't emit the token yet; further details
490 will be filled in before it is emitted.) */
491 $this->token = array(
492 'name' => strtolower($char),
493 'type' => self::ENDTAG
494 );
495
496 $state = 'tag name';
497
498 } elseif ('a' <= $char && $char <= 'z') {
499 /* U+0061 LATIN SMALL LETTER A through to U+007A LATIN SMALL LETTER Z
500 Create a new end tag token, set its tag name to the
501 input character, then switch to the tag name state.
502 (Don't emit the token yet; further details will be
503 filled in before it is emitted.) */
504 $this->token = array(
505 'name' => $char,
506 'type' => self::ENDTAG
507 );
508
509 $state = 'tag name';
510
511 } elseif($char === '>') {
512 /* U+003E GREATER-THAN SIGN (>)
513 Parse error. Switch to the data state. */
514 $this->emitToken(array(
515 'type' => self::PARSEERROR,
516 'data' => 'expected-closing-tag-but-got-right-bracket'
517 ));
518 $state = 'data';
519
520 } elseif($char === false) {
521 /* EOF
522 Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F
523 SOLIDUS character token. Reconsume the EOF character in the data state. */
524 $this->emitToken(array(
525 'type' => self::PARSEERROR,
526 'data' => 'expected-closing-tag-but-got-eof'
527 ));
528 $this->emitToken(array(
529 'type' => self::CHARACTER,
530 'data' => '</'
531 ));
532
533 $this->stream->unget();
534 $state = 'data';
535
536 } else {
537 /* Parse error. Switch to the bogus comment state. */
538 $this->emitToken(array(
539 'type' => self::PARSEERROR,
540 'data' => 'expected-closing-tag-but-got-char'
541 ));
542 $this->token = array(
543 'data' => $char,
544 'type' => self::COMMENT
545 );
546 $state = 'bogus comment';
547 }
548 }
549 break;
550
551 case 'tag name':
552 /* Consume the next input character: */
553 $char = $this->stream->char();
554
555 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
556 /* U+0009 CHARACTER TABULATION
557 U+000A LINE FEED (LF)
558 U+000C FORM FEED (FF)
559 U+0020 SPACE
560 Switch to the before attribute name state. */
561 $state = 'before attribute name';
562
563 } elseif($char === '/') {
564 /* U+002F SOLIDUS (/)
565 Switch to the self-closing start tag state. */
566 $state = 'self-closing start tag';
567
568 } elseif($char === '>') {
569 /* U+003E GREATER-THAN SIGN (>)
570 Emit the current tag token. Switch to the data state. */
571 $this->emitToken($this->token);
572 $state = 'data';
573
574 } elseif('A' <= $char && $char <= 'Z') {
575 /* U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z
576 Append the lowercase version of the current input
577 character (add 0x0020 to the character's code point) to
578 the current tag token's tag name. Stay in the tag name state. */
579 $chars = $this->stream->charsWhile(self::UPPER_ALPHA);
580
581 $this->token['name'] .= strtolower($char . $chars);
582 $state = 'tag name';
583
584 } elseif($char === false) {
585 /* EOF
586 Parse error. Reconsume the EOF character in the data state. */
587 $this->emitToken(array(
588 'type' => self::PARSEERROR,
589 'data' => 'eof-in-tag-name'
590 ));
591
592 $this->stream->unget();
593 $state = 'data';
594
595 } else {
596 /* Anything else
597 Append the current input character to the current tag token's tag name.
598 Stay in the tag name state. */
599 $chars = $this->stream->charsUntil("\t\n\x0C />" . self::UPPER_ALPHA);
600
601 $this->token['name'] .= $char . $chars;
602 $state = 'tag name';
603 }
604 break;
605
606 case 'before attribute name':
607 /* Consume the next input character: */
608 $char = $this->stream->char();
609
610 // this conditional is optimized, check bottom
611 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
612 /* U+0009 CHARACTER TABULATION
613 U+000A LINE FEED (LF)
614 U+000C FORM FEED (FF)
615 U+0020 SPACE
616 Stay in the before attribute name state. */
617 $state = 'before attribute name';
618
619 } elseif($char === '/') {
620 /* U+002F SOLIDUS (/)
621 Switch to the self-closing start tag state. */
622 $state = 'self-closing start tag';
623
624 } elseif($char === '>') {
625 /* U+003E GREATER-THAN SIGN (>)
626 Emit the current tag token. Switch to the data state. */
627 $this->emitToken($this->token);
628 $state = 'data';
629
630 } elseif('A' <= $char && $char <= 'Z') {
631 /* U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z
632 Start a new attribute in the current tag token. Set that
633 attribute's name to the lowercase version of the current
634 input character (add 0x0020 to the character's code
635 point), and its value to the empty string. Switch to the
636 attribute name state.*/
637 $this->token['attr'][] = array(
638 'name' => strtolower($char),
639 'value' => ''
640 );
641
642 $state = 'attribute name';
643
644 } elseif($char === false) {
645 /* EOF
646 Parse error. Reconsume the EOF character in the data state. */
647 $this->emitToken(array(
648 'type' => self::PARSEERROR,
649 'data' => 'expected-attribute-name-but-got-eof'
650 ));
651
652 $this->stream->unget();
653 $state = 'data';
654
655 } else {
656 /* U+0022 QUOTATION MARK (")
657 U+0027 APOSTROPHE (')
658 U+003C LESS-THAN SIGN (<)
659 U+003D EQUALS SIGN (=)
660 Parse error. Treat it as per the "anything else" entry
661 below. */
662 if($char === '"' || $char === "'" || $char === '<' || $char === '=') {
663 $this->emitToken(array(
664 'type' => self::PARSEERROR,
665 'data' => 'invalid-character-in-attribute-name'
666 ));
667 }
668
669 /* Anything else
670 Start a new attribute in the current tag token. Set that attribute's
671 name to the current input character, and its value to the empty string.
672 Switch to the attribute name state. */
673 $this->token['attr'][] = array(
674 'name' => $char,
675 'value' => ''
676 );
677
678 $state = 'attribute name';
679 }
680 break;
681
682 case 'attribute name':
683 // Consume the next input character:
684 $char = $this->stream->char();
685
686 // this conditional is optimized, check bottom
687 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
688 /* U+0009 CHARACTER TABULATION
689 U+000A LINE FEED (LF)
690 U+000C FORM FEED (FF)
691 U+0020 SPACE
692 Switch to the after attribute name state. */
693 $state = 'after attribute name';
694
695 } elseif($char === '/') {
696 /* U+002F SOLIDUS (/)
697 Switch to the self-closing start tag state. */
698 $state = 'self-closing start tag';
699
700 } elseif($char === '=') {
701 /* U+003D EQUALS SIGN (=)
702 Switch to the before attribute value state. */
703 $state = 'before attribute value';
704
705 } elseif($char === '>') {
706 /* U+003E GREATER-THAN SIGN (>)
707 Emit the current tag token. Switch to the data state. */
708 $this->emitToken($this->token);
709 $state = 'data';
710
711 } elseif('A' <= $char && $char <= 'Z') {
712 /* U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z
713 Append the lowercase version of the current input
714 character (add 0x0020 to the character's code point) to
715 the current attribute's name. Stay in the attribute name
716 state. */
717 $chars = $this->stream->charsWhile(self::UPPER_ALPHA);
718
719 $last = count($this->token['attr']) - 1;
720 $this->token['attr'][$last]['name'] .= strtolower($char . $chars);
721
722 $state = 'attribute name';
723
724 } elseif($char === false) {
725 /* EOF
726 Parse error. Reconsume the EOF character in the data state. */
727 $this->emitToken(array(
728 'type' => self::PARSEERROR,
729 'data' => 'eof-in-attribute-name'
730 ));
731
732 $this->stream->unget();
733 $state = 'data';
734
735 } else {
736 /* U+0022 QUOTATION MARK (")
737 U+0027 APOSTROPHE (')
738 U+003C LESS-THAN SIGN (<)
739 Parse error. Treat it as per the "anything else"
740 entry below. */
741 if($char === '"' || $char === "'" || $char === '<') {
742 $this->emitToken(array(
743 'type' => self::PARSEERROR,
744 'data' => 'invalid-character-in-attribute-name'
745 ));
746 }
747
748 /* Anything else
749 Append the current input character to the current attribute's name.
750 Stay in the attribute name state. */
751 $chars = $this->stream->charsUntil("\t\n\x0C /=>\"'" . self::UPPER_ALPHA);
752
753 $last = count($this->token['attr']) - 1;
754 $this->token['attr'][$last]['name'] .= $char . $chars;
755
756 $state = 'attribute name';
757 }
758
759 /* When the user agent leaves the attribute name state
760 (and before emitting the tag token, if appropriate), the
761 complete attribute's name must be compared to the other
762 attributes on the same token; if there is already an
763 attribute on the token with the exact same name, then this
764 is a parse error and the new attribute must be dropped, along
765 with the value that gets associated with it (if any). */
766 // this might be implemented in the emitToken method
767 break;
768
769 case 'after attribute name':
770 // Consume the next input character:
771 $char = $this->stream->char();
772
773 // this is an optimized conditional, check the bottom
774 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
775 /* U+0009 CHARACTER TABULATION
776 U+000A LINE FEED (LF)
777 U+000C FORM FEED (FF)
778 U+0020 SPACE
779 Stay in the after attribute name state. */
780 $state = 'after attribute name';
781
782 } elseif($char === '/') {
783 /* U+002F SOLIDUS (/)
784 Switch to the self-closing start tag state. */
785 $state = 'self-closing start tag';
786
787 } elseif($char === '=') {
788 /* U+003D EQUALS SIGN (=)
789 Switch to the before attribute value state. */
790 $state = 'before attribute value';
791
792 } elseif($char === '>') {
793 /* U+003E GREATER-THAN SIGN (>)
794 Emit the current tag token. Switch to the data state. */
795 $this->emitToken($this->token);
796 $state = 'data';
797
798 } elseif('A' <= $char && $char <= 'Z') {
799 /* U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z
800 Start a new attribute in the current tag token. Set that
801 attribute's name to the lowercase version of the current
802 input character (add 0x0020 to the character's code
803 point), and its value to the empty string. Switch to the
804 attribute name state. */
805 $this->token['attr'][] = array(
806 'name' => strtolower($char),
807 'value' => ''
808 );
809
810 $state = 'attribute name';
811
812 } elseif($char === false) {
813 /* EOF
814 Parse error. Reconsume the EOF character in the data state. */
815 $this->emitToken(array(
816 'type' => self::PARSEERROR,
817 'data' => 'expected-end-of-tag-but-got-eof'
818 ));
819
820 $this->stream->unget();
821 $state = 'data';
822
823 } else {
824 /* U+0022 QUOTATION MARK (")
825 U+0027 APOSTROPHE (')
826 U+003C LESS-THAN SIGN(<)
827 Parse error. Treat it as per the "anything else"
828 entry below. */
829 if($char === '"' || $char === "'" || $char === "<") {
830 $this->emitToken(array(
831 'type' => self::PARSEERROR,
832 'data' => 'invalid-character-after-attribute-name'
833 ));
834 }
835
836 /* Anything else
837 Start a new attribute in the current tag token. Set that attribute's
838 name to the current input character, and its value to the empty string.
839 Switch to the attribute name state. */
840 $this->token['attr'][] = array(
841 'name' => $char,
842 'value' => ''
843 );
844
845 $state = 'attribute name';
846 }
847 break;
848
849 case 'before attribute value':
850 // Consume the next input character:
851 $char = $this->stream->char();
852
853 // this is an optimized conditional
854 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
855 /* U+0009 CHARACTER TABULATION
856 U+000A LINE FEED (LF)
857 U+000C FORM FEED (FF)
858 U+0020 SPACE
859 Stay in the before attribute value state. */
860 $state = 'before attribute value';
861
862 } elseif($char === '"') {
863 /* U+0022 QUOTATION MARK (")
864 Switch to the attribute value (double-quoted) state. */
865 $state = 'attribute value (double-quoted)';
866
867 } elseif($char === '&') {
868 /* U+0026 AMPERSAND (&)
869 Switch to the attribute value (unquoted) state and reconsume
870 this input character. */
871 $this->stream->unget();
872 $state = 'attribute value (unquoted)';
873
874 } elseif($char === '\'') {
875 /* U+0027 APOSTROPHE (')
876 Switch to the attribute value (single-quoted) state. */
877 $state = 'attribute value (single-quoted)';
878
879 } elseif($char === '>') {
880 /* U+003E GREATER-THAN SIGN (>)
881 Parse error. Emit the current tag token. Switch to the data state. */
882 $this->emitToken(array(
883 'type' => self::PARSEERROR,
884 'data' => 'expected-attribute-value-but-got-right-bracket'
885 ));
886 $this->emitToken($this->token);
887 $state = 'data';
888
889 } elseif($char === false) {
890 /* EOF
891 Parse error. Reconsume the EOF character in the data state. */
892 $this->emitToken(array(
893 'type' => self::PARSEERROR,
894 'data' => 'expected-attribute-value-but-got-eof'
895 ));
896 $this->stream->unget();
897 $state = 'data';
898
899 } else {
900 /* U+003D EQUALS SIGN (=)
901 * U+003C LESS-THAN SIGN (<)
902 Parse error. Treat it as per the "anything else" entry below. */
903 if($char === '=' || $char === '<') {
904 $this->emitToken(array(
905 'type' => self::PARSEERROR,
906 'data' => 'equals-in-unquoted-attribute-value'
907 ));
908 }
909
910 /* Anything else
911 Append the current input character to the current attribute's value.
912 Switch to the attribute value (unquoted) state. */
913 $last = count($this->token['attr']) - 1;
914 $this->token['attr'][$last]['value'] .= $char;
915
916 $state = 'attribute value (unquoted)';
917 }
918 break;
919
920 case 'attribute value (double-quoted)':
921 // Consume the next input character:
922 $char = $this->stream->char();
923
924 if($char === '"') {
925 /* U+0022 QUOTATION MARK (")
926 Switch to the after attribute value (quoted) state. */
927 $state = 'after attribute value (quoted)';
928
929 } elseif($char === '&') {
930 /* U+0026 AMPERSAND (&)
931 Switch to the character reference in attribute value
932 state, with the additional allowed character
933 being U+0022 QUOTATION MARK ("). */
934 $this->characterReferenceInAttributeValue('"');
935
936 } elseif($char === false) {
937 /* EOF
938 Parse error. Reconsume the EOF character in the data state. */
939 $this->emitToken(array(
940 'type' => self::PARSEERROR,
941 'data' => 'eof-in-attribute-value-double-quote'
942 ));
943
944 $this->stream->unget();
945 $state = 'data';
946
947 } else {
948 /* Anything else
949 Append the current input character to the current attribute's value.
950 Stay in the attribute value (double-quoted) state. */
951 $chars = $this->stream->charsUntil('"&');
952
953 $last = count($this->token['attr']) - 1;
954 $this->token['attr'][$last]['value'] .= $char . $chars;
955
956 $state = 'attribute value (double-quoted)';
957 }
958 break;
959
960 case 'attribute value (single-quoted)':
961 // Consume the next input character:
962 $char = $this->stream->char();
963
964 if($char === "'") {
965 /* U+0022 QUOTATION MARK (')
966 Switch to the after attribute value state. */
967 $state = 'after attribute value (quoted)';
968
969 } elseif($char === '&') {
970 /* U+0026 AMPERSAND (&)
971 Switch to the entity in attribute value state. */
972 $this->characterReferenceInAttributeValue("'");
973
974 } elseif($char === false) {
975 /* EOF
976 Parse error. Reconsume the EOF character in the data state. */
977 $this->emitToken(array(
978 'type' => self::PARSEERROR,
979 'data' => 'eof-in-attribute-value-single-quote'
980 ));
981
982 $this->stream->unget();
983 $state = 'data';
984
985 } else {
986 /* Anything else
987 Append the current input character to the current attribute's value.
988 Stay in the attribute value (single-quoted) state. */
989 $chars = $this->stream->charsUntil("'&");
990
991 $last = count($this->token['attr']) - 1;
992 $this->token['attr'][$last]['value'] .= $char . $chars;
993
994 $state = 'attribute value (single-quoted)';
995 }
996 break;
997
998 case 'attribute value (unquoted)':
999 // Consume the next input character:
1000 $char = $this->stream->char();
1001
1002 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1003 /* U+0009 CHARACTER TABULATION
1004 U+000A LINE FEED (LF)
1005 U+000C FORM FEED (FF)
1006 U+0020 SPACE
1007 Switch to the before attribute name state. */
1008 $state = 'before attribute name';
1009
1010 } elseif($char === '&') {
1011 /* U+0026 AMPERSAND (&)
1012 Switch to the entity in attribute value state, with the
1013 additional allowed character being U+003E
1014 GREATER-THAN SIGN (>). */
1015 $this->characterReferenceInAttributeValue('>');
1016
1017 } elseif($char === '>') {
1018 /* U+003E GREATER-THAN SIGN (>)
1019 Emit the current tag token. Switch to the data state. */
1020 $this->emitToken($this->token);
1021 $state = 'data';
1022
1023 } elseif ($char === false) {
1024 /* EOF
1025 Parse error. Reconsume the EOF character in the data state. */
1026 $this->emitToken(array(
1027 'type' => self::PARSEERROR,
1028 'data' => 'eof-in-attribute-value-no-quotes'
1029 ));
1030 $this->stream->unget();
1031 $state = 'data';
1032
1033 } else {
1034 /* U+0022 QUOTATION MARK (")
1035 U+0027 APOSTROPHE (')
1036 U+003C LESS-THAN SIGN (<)
1037 U+003D EQUALS SIGN (=)
1038 Parse error. Treat it as per the "anything else"
1039 entry below. */
1040 if($char === '"' || $char === "'" || $char === '=' || $char == '<') {
1041 $this->emitToken(array(
1042 'type' => self::PARSEERROR,
1043 'data' => 'unexpected-character-in-unquoted-attribute-value'
1044 ));
1045 }
1046
1047 /* Anything else
1048 Append the current input character to the current attribute's value.
1049 Stay in the attribute value (unquoted) state. */
1050 $chars = $this->stream->charsUntil("\t\n\x0c &>\"'=");
1051
1052 $last = count($this->token['attr']) - 1;
1053 $this->token['attr'][$last]['value'] .= $char . $chars;
1054
1055 $state = 'attribute value (unquoted)';
1056 }
1057 break;
1058
1059 case 'after attribute value (quoted)':
1060 /* Consume the next input character: */
1061 $char = $this->stream->char();
1062
1063 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1064 /* U+0009 CHARACTER TABULATION
1065 U+000A LINE FEED (LF)
1066 U+000C FORM FEED (FF)
1067 U+0020 SPACE
1068 Switch to the before attribute name state. */
1069 $state = 'before attribute name';
1070
1071 } elseif ($char === '/') {
1072 /* U+002F SOLIDUS (/)
1073 Switch to the self-closing start tag state. */
1074 $state = 'self-closing start tag';
1075
1076 } elseif ($char === '>') {
1077 /* U+003E GREATER-THAN SIGN (>)
1078 Emit the current tag token. Switch to the data state. */
1079 $this->emitToken($this->token);
1080 $state = 'data';
1081
1082 } elseif ($char === false) {
1083 /* EOF
1084 Parse error. Reconsume the EOF character in the data state. */
1085 $this->emitToken(array(
1086 'type' => self::PARSEERROR,
1087 'data' => 'unexpected-EOF-after-attribute-value'
1088 ));
1089 $this->stream->unget();
1090 $state = 'data';
1091
1092 } else {
1093 /* Anything else
1094 Parse error. Reconsume the character in the before attribute
1095 name state. */
1096 $this->emitToken(array(
1097 'type' => self::PARSEERROR,
1098 'data' => 'unexpected-character-after-attribute-value'
1099 ));
1100 $this->stream->unget();
1101 $state = 'before attribute name';
1102 }
1103 break;
1104
1105 case 'self-closing start tag':
1106 /* Consume the next input character: */
1107 $char = $this->stream->char();
1108
1109 if ($char === '>') {
1110 /* U+003E GREATER-THAN SIGN (>)
1111 Set the self-closing flag of the current tag token.
1112 Emit the current tag token. Switch to the data state. */
1113 // not sure if this is the name we want
1114 $this->token['self-closing'] = true;
1115 $this->emitToken($this->token);
1116 $state = 'data';
1117
1118 } elseif ($char === false) {
1119 /* EOF
1120 Parse error. Reconsume the EOF character in the data state. */
1121 $this->emitToken(array(
1122 'type' => self::PARSEERROR,
1123 'data' => 'unexpected-eof-after-self-closing'
1124 ));
1125 $this->stream->unget();
1126 $state = 'data';
1127
1128 } else {
1129 /* Anything else
1130 Parse error. Reconsume the character in the before attribute name state. */
1131 $this->emitToken(array(
1132 'type' => self::PARSEERROR,
1133 'data' => 'unexpected-character-after-self-closing'
1134 ));
1135 $this->stream->unget();
1136 $state = 'before attribute name';
1137 }
1138 break;
1139
1140 case 'bogus comment':
1141 /* (This can only happen if the content model flag is set to the PCDATA state.) */
1142 /* Consume every character up to the first U+003E GREATER-THAN SIGN
1143 character (>) or the end of the file (EOF), whichever comes first. Emit
1144 a comment token whose data is the concatenation of all the characters
1145 starting from and including the character that caused the state machine
1146 to switch into the bogus comment state, up to and including the last
1147 consumed character before the U+003E character, if any, or up to the
1148 end of the file otherwise. (If the comment was started by the end of
1149 the file (EOF), the token is empty.) */
1150 $this->token['data'] .= (string) $this->stream->charsUntil('>');
1151 $this->stream->char();
1152
1153 $this->emitToken($this->token);
1154
1155 /* Switch to the data state. */
1156 $state = 'data';
1157 break;
1158
1159 case 'markup declaration open':
1160 // Consume for below
1161 $hyphens = $this->stream->charsWhile('-', 2);
1162 if ($hyphens === '-') {
1163 $this->stream->unget();
1164 }
1165 if ($hyphens !== '--') {
1166 $alpha = $this->stream->charsWhile(self::ALPHA, 7);
1167 }
1168
1169 /* If the next two characters are both U+002D HYPHEN-MINUS (-)
1170 characters, consume those two characters, create a comment token whose
1171 data is the empty string, and switch to the comment state. */
1172 if($hyphens === '--') {
1173 $state = 'comment start';
1174 $this->token = array(
1175 'data' => '',
1176 'type' => self::COMMENT
1177 );
1178
1179 /* Otherwise if the next seven characters are a case-insensitive match
1180 for the word "DOCTYPE", then consume those characters and switch to the
1181 DOCTYPE state. */
1182 } elseif(strtoupper($alpha) === 'DOCTYPE') {
1183 $state = 'DOCTYPE';
1184
1185 // XXX not implemented
1186 /* Otherwise, if the insertion mode is "in foreign content"
1187 and the current node is not an element in the HTML namespace
1188 and the next seven characters are an ASCII case-sensitive
1189 match for the string "[CDATA[" (the five uppercase letters
1190 "CDATA" with a U+005B LEFT SQUARE BRACKET character before
1191 and after), then consume those characters and switch to the
1192 CDATA section state (which is unrelated to the content model
1193 flag's CDATA state). */
1194
1195 /* Otherwise, is is a parse error. Switch to the bogus comment state.
1196 The next character that is consumed, if any, is the first character
1197 that will be in the comment. */
1198 } else {
1199 $this->emitToken(array(
1200 'type' => self::PARSEERROR,
1201 'data' => 'expected-dashes-or-doctype'
1202 ));
1203 $this->token = array(
1204 'data' => (string) $alpha,
1205 'type' => self::COMMENT
1206 );
1207 $state = 'bogus comment';
1208 }
1209 break;
1210
1211 case 'comment start':
1212 /* Consume the next input character: */
1213 $char = $this->stream->char();
1214
1215 if ($char === '-') {
1216 /* U+002D HYPHEN-MINUS (-)
1217 Switch to the comment start dash state. */
1218 $state = 'comment start dash';
1219 } elseif ($char === '>') {
1220 /* U+003E GREATER-THAN SIGN (>)
1221 Parse error. Emit the comment token. Switch to the
1222 data state. */
1223 $this->emitToken(array(
1224 'type' => self::PARSEERROR,
1225 'data' => 'incorrect-comment'
1226 ));
1227 $this->emitToken($this->token);
1228 $state = 'data';
1229 } elseif ($char === false) {
1230 /* EOF
1231 Parse error. Emit the comment token. Reconsume the
1232 EOF character in the data state. */
1233 $this->emitToken(array(
1234 'type' => self::PARSEERROR,
1235 'data' => 'eof-in-comment'
1236 ));
1237 $this->emitToken($this->token);
1238 $this->stream->unget();
1239 $state = 'data';
1240 } else {
1241 /* Anything else
1242 Append the input character to the comment token's
1243 data. Switch to the comment state. */
1244 $this->token['data'] .= $char;
1245 $state = 'comment';
1246 }
1247 break;
1248
1249 case 'comment start dash':
1250 /* Consume the next input character: */
1251 $char = $this->stream->char();
1252 if ($char === '-') {
1253 /* U+002D HYPHEN-MINUS (-)
1254 Switch to the comment end state */
1255 $state = 'comment end';
1256 } elseif ($char === '>') {
1257 /* U+003E GREATER-THAN SIGN (>)
1258 Parse error. Emit the comment token. Switch to the
1259 data state. */
1260 $this->emitToken(array(
1261 'type' => self::PARSEERROR,
1262 'data' => 'incorrect-comment'
1263 ));
1264 $this->emitToken($this->token);
1265 $state = 'data';
1266 } elseif ($char === false) {
1267 /* Parse error. Emit the comment token. Reconsume the
1268 EOF character in the data state. */
1269 $this->emitToken(array(
1270 'type' => self::PARSEERROR,
1271 'data' => 'eof-in-comment'
1272 ));
1273 $this->emitToken($this->token);
1274 $this->stream->unget();
1275 $state = 'data';
1276 } else {
1277 $this->token['data'] .= '-' . $char;
1278 $state = 'comment';
1279 }
1280 break;
1281
1282 case 'comment':
1283 /* Consume the next input character: */
1284 $char = $this->stream->char();
1285
1286 if($char === '-') {
1287 /* U+002D HYPHEN-MINUS (-)
1288 Switch to the comment end dash state */
1289 $state = 'comment end dash';
1290
1291 } elseif($char === false) {
1292 /* EOF
1293 Parse error. Emit the comment token. Reconsume the EOF character
1294 in the data state. */
1295 $this->emitToken(array(
1296 'type' => self::PARSEERROR,
1297 'data' => 'eof-in-comment'
1298 ));
1299 $this->emitToken($this->token);
1300 $this->stream->unget();
1301 $state = 'data';
1302
1303 } else {
1304 /* Anything else
1305 Append the input character to the comment token's data. Stay in
1306 the comment state. */
1307 $chars = $this->stream->charsUntil('-');
1308
1309 $this->token['data'] .= $char . $chars;
1310 }
1311 break;
1312
1313 case 'comment end dash':
1314 /* Consume the next input character: */
1315 $char = $this->stream->char();
1316
1317 if($char === '-') {
1318 /* U+002D HYPHEN-MINUS (-)
1319 Switch to the comment end state */
1320 $state = 'comment end';
1321
1322 } elseif($char === false) {
1323 /* EOF
1324 Parse error. Emit the comment token. Reconsume the EOF character
1325 in the data state. */
1326 $this->emitToken(array(
1327 'type' => self::PARSEERROR,
1328 'data' => 'eof-in-comment-end-dash'
1329 ));
1330 $this->emitToken($this->token);
1331 $this->stream->unget();
1332 $state = 'data';
1333
1334 } else {
1335 /* Anything else
1336 Append a U+002D HYPHEN-MINUS (-) character and the input
1337 character to the comment token's data. Switch to the comment state. */
1338 $this->token['data'] .= '-'.$char;
1339 $state = 'comment';
1340 }
1341 break;
1342
1343 case 'comment end':
1344 /* Consume the next input character: */
1345 $char = $this->stream->char();
1346
1347 if($char === '>') {
1348 /* U+003E GREATER-THAN SIGN (>)
1349 Emit the comment token. Switch to the data state. */
1350 $this->emitToken($this->token);
1351 $state = 'data';
1352
1353 } elseif($char === '-') {
1354 /* U+002D HYPHEN-MINUS (-)
1355 Parse error. Append a U+002D HYPHEN-MINUS (-) character
1356 to the comment token's data. Stay in the comment end
1357 state. */
1358 $this->emitToken(array(
1359 'type' => self::PARSEERROR,
1360 'data' => 'unexpected-dash-after-double-dash-in-comment'
1361 ));
1362 $this->token['data'] .= '-';
1363
1364 } elseif($char === "\t" || $char === "\n" || $char === "\x0a" || $char === ' ') {
1365 $this->emitToken(array(
1366 'type' => self::PARSEERROR,
1367 'data' => 'unexpected-space-after-double-dash-in-comment'
1368 ));
1369 $this->token['data'] .= '--' . $char;
1370 $state = 'comment end space';
1371
1372 } elseif($char === '!') {
1373 $this->emitToken(array(
1374 'type' => self::PARSEERROR,
1375 'data' => 'unexpected-bang-after-double-dash-in-comment'
1376 ));
1377 $state = 'comment end bang';
1378
1379 } elseif($char === false) {
1380 /* EOF
1381 Parse error. Emit the comment token. Reconsume the
1382 EOF character in the data state. */
1383 $this->emitToken(array(
1384 'type' => self::PARSEERROR,
1385 'data' => 'eof-in-comment-double-dash'
1386 ));
1387 $this->emitToken($this->token);
1388 $this->stream->unget();
1389 $state = 'data';
1390
1391 } else {
1392 /* Anything else
1393 Parse error. Append two U+002D HYPHEN-MINUS (-)
1394 characters and the input character to the comment token's
1395 data. Switch to the comment state. */
1396 $this->emitToken(array(
1397 'type' => self::PARSEERROR,
1398 'data' => 'unexpected-char-in-comment'
1399 ));
1400 $this->token['data'] .= '--'.$char;
1401 $state = 'comment';
1402 }
1403 break;
1404
1405 case 'comment end bang':
1406 $char = $this->stream->char();
1407 if ($char === '>') {
1408 $this->emitToken($this->token);
1409 $state = 'data';
1410 } elseif ($char === "-") {
1411 $this->token['data'] .= '--!';
1412 $state = 'comment end dash';
1413 } elseif ($char === false) {
1414 $this->emitToken(array(
1415 'type' => self::PARSEERROR,
1416 'data' => 'eof-in-comment-end-bang'
1417 ));
1418 $this->emitToken($this->token);
1419 $this->stream->unget();
1420 $state = 'data';
1421 } else {
1422 $this->token['data'] .= '--!' . $char;
1423 $state = 'comment';
1424 }
1425 break;
1426
1427 case 'comment end space':
1428 $char = $this->stream->char();
1429 if ($char === '>') {
1430 $this->emitToken($this->token);
1431 $state = 'data';
1432 } elseif ($char === '-') {
1433 $state = 'comment end dash';
1434 } elseif ($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1435 $this->token['data'] .= $char;
1436 } elseif ($char === false) {
1437 $this->emitToken(array(
1438 'type' => self::PARSEERROR,
1439 'data' => 'unexpected-eof-in-comment-end-space',
1440 ));
1441 $this->emitToken($this->token);
1442 $this->stream->unget();
1443 $state = 'data';
1444 } else {
1445 $this->token['data'] .= $char;
1446 $state = 'comment';
1447 }
1448 break;
1449
1450 case 'DOCTYPE':
1451 /* Consume the next input character: */
1452 $char = $this->stream->char();
1453
1454 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1455 /* U+0009 CHARACTER TABULATION
1456 U+000A LINE FEED (LF)
1457 U+000C FORM FEED (FF)
1458 U+0020 SPACE
1459 Switch to the before DOCTYPE name state. */
1460 $state = 'before DOCTYPE name';
1461
1462 } elseif($char === false) {
1463 /* EOF
1464 Parse error. Create a new DOCTYPE token. Set its
1465 force-quirks flag to on. Emit the token. Reconsume the
1466 EOF character in the data state. */
1467 $this->emitToken(array(
1468 'type' => self::PARSEERROR,
1469 'data' => 'need-space-after-doctype-but-got-eof'
1470 ));
1471 $this->emitToken(array(
1472 'name' => '',
1473 'type' => self::DOCTYPE,
1474 'force-quirks' => true,
1475 'error' => true
1476 ));
1477 $this->stream->unget();
1478 $state = 'data';
1479
1480 } else {
1481 /* Anything else
1482 Parse error. Reconsume the current character in the
1483 before DOCTYPE name state. */
1484 $this->emitToken(array(
1485 'type' => self::PARSEERROR,
1486 'data' => 'need-space-after-doctype'
1487 ));
1488 $this->stream->unget();
1489 $state = 'before DOCTYPE name';
1490 }
1491 break;
1492
1493 case 'before DOCTYPE name':
1494 /* Consume the next input character: */
1495 $char = $this->stream->char();
1496
1497 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1498 /* U+0009 CHARACTER TABULATION
1499 U+000A LINE FEED (LF)
1500 U+000C FORM FEED (FF)
1501 U+0020 SPACE
1502 Stay in the before DOCTYPE name state. */
1503
1504 } elseif($char === '>') {
1505 /* U+003E GREATER-THAN SIGN (>)
1506 Parse error. Create a new DOCTYPE token. Set its
1507 force-quirks flag to on. Emit the token. Switch to the
1508 data state. */
1509 $this->emitToken(array(
1510 'type' => self::PARSEERROR,
1511 'data' => 'expected-doctype-name-but-got-right-bracket'
1512 ));
1513 $this->emitToken(array(
1514 'name' => '',
1515 'type' => self::DOCTYPE,
1516 'force-quirks' => true,
1517 'error' => true
1518 ));
1519
1520 $state = 'data';
1521
1522 } elseif('A' <= $char && $char <= 'Z') {
1523 /* U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z
1524 Create a new DOCTYPE token. Set the token's name to the
1525 lowercase version of the input character (add 0x0020 to
1526 the character's code point). Switch to the DOCTYPE name
1527 state. */
1528 $this->token = array(
1529 'name' => strtolower($char),
1530 'type' => self::DOCTYPE,
1531 'error' => true
1532 );
1533
1534 $state = 'DOCTYPE name';
1535
1536 } elseif($char === false) {
1537 /* EOF
1538 Parse error. Create a new DOCTYPE token. Set its
1539 force-quirks flag to on. Emit the token. Reconsume the
1540 EOF character in the data state. */
1541 $this->emitToken(array(
1542 'type' => self::PARSEERROR,
1543 'data' => 'expected-doctype-name-but-got-eof'
1544 ));
1545 $this->emitToken(array(
1546 'name' => '',
1547 'type' => self::DOCTYPE,
1548 'force-quirks' => true,
1549 'error' => true
1550 ));
1551
1552 $this->stream->unget();
1553 $state = 'data';
1554
1555 } else {
1556 /* Anything else
1557 Create a new DOCTYPE token. Set the token's name to the
1558 current input character. Switch to the DOCTYPE name state. */
1559 $this->token = array(
1560 'name' => $char,
1561 'type' => self::DOCTYPE,
1562 'error' => true
1563 );
1564
1565 $state = 'DOCTYPE name';
1566 }
1567 break;
1568
1569 case 'DOCTYPE name':
1570 /* Consume the next input character: */
1571 $char = $this->stream->char();
1572
1573 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1574 /* U+0009 CHARACTER TABULATION
1575 U+000A LINE FEED (LF)
1576 U+000C FORM FEED (FF)
1577 U+0020 SPACE
1578 Switch to the after DOCTYPE name state. */
1579 $state = 'after DOCTYPE name';
1580
1581 } elseif($char === '>') {
1582 /* U+003E GREATER-THAN SIGN (>)
1583 Emit the current DOCTYPE token. Switch to the data state. */
1584 $this->emitToken($this->token);
1585 $state = 'data';
1586
1587 } elseif('A' <= $char && $char <= 'Z') {
1588 /* U+0041 LATIN CAPITAL LETTER A through to U+005A LATIN CAPITAL LETTER Z
1589 Append the lowercase version of the input character
1590 (add 0x0020 to the character's code point) to the current
1591 DOCTYPE token's name. Stay in the DOCTYPE name state. */
1592 $this->token['name'] .= strtolower($char);
1593
1594 } elseif($char === false) {
1595 /* EOF
1596 Parse error. Set the DOCTYPE token's force-quirks flag
1597 to on. Emit that DOCTYPE token. Reconsume the EOF
1598 character in the data state. */
1599 $this->emitToken(array(
1600 'type' => self::PARSEERROR,
1601 'data' => 'eof-in-doctype-name'
1602 ));
1603 $this->token['force-quirks'] = true;
1604 $this->emitToken($this->token);
1605 $this->stream->unget();
1606 $state = 'data';
1607
1608 } else {
1609 /* Anything else
1610 Append the current input character to the current
1611 DOCTYPE token's name. Stay in the DOCTYPE name state. */
1612 $this->token['name'] .= $char;
1613 }
1614
1615 // XXX this is probably some sort of quirks mode designation,
1616 // check tree-builder to be sure. In general 'error' needs
1617 // to be specc'ified, this probably means removing it at the end
1618 $this->token['error'] = ($this->token['name'] === 'HTML')
1619 ? false
1620 : true;
1621 break;
1622
1623 case 'after DOCTYPE name':
1624 /* Consume the next input character: */
1625 $char = $this->stream->char();
1626
1627 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1628 /* U+0009 CHARACTER TABULATION
1629 U+000A LINE FEED (LF)
1630 U+000C FORM FEED (FF)
1631 U+0020 SPACE
1632 Stay in the after DOCTYPE name state. */
1633
1634 } elseif($char === '>') {
1635 /* U+003E GREATER-THAN SIGN (>)
1636 Emit the current DOCTYPE token. Switch to the data state. */
1637 $this->emitToken($this->token);
1638 $state = 'data';
1639
1640 } elseif($char === false) {
1641 /* EOF
1642 Parse error. Set the DOCTYPE token's force-quirks flag
1643 to on. Emit that DOCTYPE token. Reconsume the EOF
1644 character in the data state. */
1645 $this->emitToken(array(
1646 'type' => self::PARSEERROR,
1647 'data' => 'eof-in-doctype'
1648 ));
1649 $this->token['force-quirks'] = true;
1650 $this->emitToken($this->token);
1651 $this->stream->unget();
1652 $state = 'data';
1653
1654 } else {
1655 /* Anything else */
1656
1657 $nextSix = strtoupper($char . $this->stream->charsWhile(self::ALPHA, 5));
1658 if ($nextSix === 'PUBLIC') {
1659 /* If the next six characters are an ASCII
1660 case-insensitive match for the word "PUBLIC", then
1661 consume those characters and switch to the before
1662 DOCTYPE public identifier state. */
1663 $state = 'before DOCTYPE public identifier';
1664
1665 } elseif ($nextSix === 'SYSTEM') {
1666 /* Otherwise, if the next six characters are an ASCII
1667 case-insensitive match for the word "SYSTEM", then
1668 consume those characters and switch to the before
1669 DOCTYPE system identifier state. */
1670 $state = 'before DOCTYPE system identifier';
1671
1672 } else {
1673 /* Otherwise, this is the parse error. Set the DOCTYPE
1674 token's force-quirks flag to on. Switch to the bogus
1675 DOCTYPE state. */
1676 $this->emitToken(array(
1677 'type' => self::PARSEERROR,
1678 'data' => 'expected-space-or-right-bracket-in-doctype'
1679 ));
1680 $this->token['force-quirks'] = true;
1681 $this->token['error'] = true;
1682 $state = 'bogus DOCTYPE';
1683 }
1684 }
1685 break;
1686
1687 case 'before DOCTYPE public identifier':
1688 /* Consume the next input character: */
1689 $char = $this->stream->char();
1690
1691 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1692 /* U+0009 CHARACTER TABULATION
1693 U+000A LINE FEED (LF)
1694 U+000C FORM FEED (FF)
1695 U+0020 SPACE
1696 Stay in the before DOCTYPE public identifier state. */
1697 } elseif ($char === '"') {
1698 /* U+0022 QUOTATION MARK (")
1699 Set the DOCTYPE token's public identifier to the empty
1700 string (not missing), then switch to the DOCTYPE public
1701 identifier (double-quoted) state. */
1702 $this->token['public'] = '';
1703 $state = 'DOCTYPE public identifier (double-quoted)';
1704 } elseif ($char === "'") {
1705 /* U+0027 APOSTROPHE (')
1706 Set the DOCTYPE token's public identifier to the empty
1707 string (not missing), then switch to the DOCTYPE public
1708 identifier (single-quoted) state. */
1709 $this->token['public'] = '';
1710 $state = 'DOCTYPE public identifier (single-quoted)';
1711 } elseif ($char === '>') {
1712 /* Parse error. Set the DOCTYPE token's force-quirks flag
1713 to on. Emit that DOCTYPE token. Switch to the data state. */
1714 $this->emitToken(array(
1715 'type' => self::PARSEERROR,
1716 'data' => 'unexpected-end-of-doctype'
1717 ));
1718 $this->token['force-quirks'] = true;
1719 $this->emitToken($this->token);
1720 $state = 'data';
1721 } elseif ($char === false) {
1722 /* Parse error. Set the DOCTYPE token's force-quirks
1723 flag to on. Emit that DOCTYPE token. Reconsume the EOF
1724 character in the data state. */
1725 $this->emitToken(array(
1726 'type' => self::PARSEERROR,
1727 'data' => 'eof-in-doctype'
1728 ));
1729 $this->token['force-quirks'] = true;
1730 $this->emitToken($this->token);
1731 $this->stream->unget();
1732 $state = 'data';
1733 } else {
1734 /* Parse error. Set the DOCTYPE token's force-quirks flag
1735 to on. Switch to the bogus DOCTYPE state. */
1736 $this->emitToken(array(
1737 'type' => self::PARSEERROR,
1738 'data' => 'unexpected-char-in-doctype'
1739 ));
1740 $this->token['force-quirks'] = true;
1741 $state = 'bogus DOCTYPE';
1742 }
1743 break;
1744
1745 case 'DOCTYPE public identifier (double-quoted)':
1746 /* Consume the next input character: */
1747 $char = $this->stream->char();
1748
1749 if ($char === '"') {
1750 /* U+0022 QUOTATION MARK (")
1751 Switch to the after DOCTYPE public identifier state. */
1752 $state = 'after DOCTYPE public identifier';
1753 } elseif ($char === '>') {
1754 /* U+003E GREATER-THAN SIGN (>)
1755 Parse error. Set the DOCTYPE token's force-quirks flag
1756 to on. Emit that DOCTYPE token. Switch to the data state. */
1757 $this->emitToken(array(
1758 'type' => self::PARSEERROR,
1759 'data' => 'unexpected-end-of-doctype'
1760 ));
1761 $this->token['force-quirks'] = true;
1762 $this->emitToken($this->token);
1763 $state = 'data';
1764 } elseif ($char === false) {
1765 /* EOF
1766 Parse error. Set the DOCTYPE token's force-quirks flag
1767 to on. Emit that DOCTYPE token. Reconsume the EOF
1768 character in the data state. */
1769 $this->emitToken(array(
1770 'type' => self::PARSEERROR,
1771 'data' => 'eof-in-doctype'
1772 ));
1773 $this->token['force-quirks'] = true;
1774 $this->emitToken($this->token);
1775 $this->stream->unget();
1776 $state = 'data';
1777 } else {
1778 /* Anything else
1779 Append the current input character to the current
1780 DOCTYPE token's public identifier. Stay in the DOCTYPE
1781 public identifier (double-quoted) state. */
1782 $this->token['public'] .= $char;
1783 }
1784 break;
1785
1786 case 'DOCTYPE public identifier (single-quoted)':
1787 /* Consume the next input character: */
1788 $char = $this->stream->char();
1789
1790 if ($char === "'") {
1791 /* U+0027 APOSTROPHE (')
1792 Switch to the after DOCTYPE public identifier state. */
1793 $state = 'after DOCTYPE public identifier';
1794 } elseif ($char === '>') {
1795 /* U+003E GREATER-THAN SIGN (>)
1796 Parse error. Set the DOCTYPE token's force-quirks flag
1797 to on. Emit that DOCTYPE token. Switch to the data state. */
1798 $this->emitToken(array(
1799 'type' => self::PARSEERROR,
1800 'data' => 'unexpected-end-of-doctype'
1801 ));
1802 $this->token['force-quirks'] = true;
1803 $this->emitToken($this->token);
1804 $state = 'data';
1805 } elseif ($char === false) {
1806 /* EOF
1807 Parse error. Set the DOCTYPE token's force-quirks flag
1808 to on. Emit that DOCTYPE token. Reconsume the EOF
1809 character in the data state. */
1810 $this->emitToken(array(
1811 'type' => self::PARSEERROR,
1812 'data' => 'eof-in-doctype'
1813 ));
1814 $this->token['force-quirks'] = true;
1815 $this->emitToken($this->token);
1816 $this->stream->unget();
1817 $state = 'data';
1818 } else {
1819 /* Anything else
1820 Append the current input character to the current
1821 DOCTYPE token's public identifier. Stay in the DOCTYPE
1822 public identifier (double-quoted) state. */
1823 $this->token['public'] .= $char;
1824 }
1825 break;
1826
1827 case 'after DOCTYPE public identifier':
1828 /* Consume the next input character: */
1829 $char = $this->stream->char();
1830
1831 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1832 /* U+0009 CHARACTER TABULATION
1833 U+000A LINE FEED (LF)
1834 U+000C FORM FEED (FF)
1835 U+0020 SPACE
1836 Stay in the after DOCTYPE public identifier state. */
1837 } elseif ($char === '"') {
1838 /* U+0022 QUOTATION MARK (")
1839 Set the DOCTYPE token's system identifier to the
1840 empty string (not missing), then switch to the DOCTYPE
1841 system identifier (double-quoted) state. */
1842 $this->token['system'] = '';
1843 $state = 'DOCTYPE system identifier (double-quoted)';
1844 } elseif ($char === "'") {
1845 /* U+0027 APOSTROPHE (')
1846 Set the DOCTYPE token's system identifier to the
1847 empty string (not missing), then switch to the DOCTYPE
1848 system identifier (single-quoted) state. */
1849 $this->token['system'] = '';
1850 $state = 'DOCTYPE system identifier (single-quoted)';
1851 } elseif ($char === '>') {
1852 /* U+003E GREATER-THAN SIGN (>)
1853 Emit the current DOCTYPE token. Switch to the data state. */
1854 $this->emitToken($this->token);
1855 $state = 'data';
1856 } elseif ($char === false) {
1857 /* Parse error. Set the DOCTYPE token's force-quirks
1858 flag to on. Emit that DOCTYPE token. Reconsume the EOF
1859 character in the data state. */
1860 $this->emitToken(array(
1861 'type' => self::PARSEERROR,
1862 'data' => 'eof-in-doctype'
1863 ));
1864 $this->token['force-quirks'] = true;
1865 $this->emitToken($this->token);
1866 $this->stream->unget();
1867 $state = 'data';
1868 } else {
1869 /* Anything else
1870 Parse error. Set the DOCTYPE token's force-quirks flag
1871 to on. Switch to the bogus DOCTYPE state. */
1872 $this->emitToken(array(
1873 'type' => self::PARSEERROR,
1874 'data' => 'unexpected-char-in-doctype'
1875 ));
1876 $this->token['force-quirks'] = true;
1877 $state = 'bogus DOCTYPE';
1878 }
1879 break;
1880
1881 case 'before DOCTYPE system identifier':
1882 /* Consume the next input character: */
1883 $char = $this->stream->char();
1884
1885 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
1886 /* U+0009 CHARACTER TABULATION
1887 U+000A LINE FEED (LF)
1888 U+000C FORM FEED (FF)
1889 U+0020 SPACE
1890 Stay in the before DOCTYPE system identifier state. */
1891 } elseif ($char === '"') {
1892 /* U+0022 QUOTATION MARK (")
1893 Set the DOCTYPE token's system identifier to the empty
1894 string (not missing), then switch to the DOCTYPE system
1895 identifier (double-quoted) state. */
1896 $this->token['system'] = '';
1897 $state = 'DOCTYPE system identifier (double-quoted)';
1898 } elseif ($char === "'") {
1899 /* U+0027 APOSTROPHE (')
1900 Set the DOCTYPE token's system identifier to the empty
1901 string (not missing), then switch to the DOCTYPE system
1902 identifier (single-quoted) state. */
1903 $this->token['system'] = '';
1904 $state = 'DOCTYPE system identifier (single-quoted)';
1905 } elseif ($char === '>') {
1906 /* Parse error. Set the DOCTYPE token's force-quirks flag
1907 to on. Emit that DOCTYPE token. Switch to the data state. */
1908 $this->emitToken(array(
1909 'type' => self::PARSEERROR,
1910 'data' => 'unexpected-char-in-doctype'
1911 ));
1912 $this->token['force-quirks'] = true;
1913 $this->emitToken($this->token);
1914 $state = 'data';
1915 } elseif ($char === false) {
1916 /* Parse error. Set the DOCTYPE token's force-quirks
1917 flag to on. Emit that DOCTYPE token. Reconsume the EOF
1918 character in the data state. */
1919 $this->emitToken(array(
1920 'type' => self::PARSEERROR,
1921 'data' => 'eof-in-doctype'
1922 ));
1923 $this->token['force-quirks'] = true;
1924 $this->emitToken($this->token);
1925 $this->stream->unget();
1926 $state = 'data';
1927 } else {
1928 /* Parse error. Set the DOCTYPE token's force-quirks flag
1929 to on. Switch to the bogus DOCTYPE state. */
1930 $this->emitToken(array(
1931 'type' => self::PARSEERROR,
1932 'data' => 'unexpected-char-in-doctype'
1933 ));
1934 $this->token['force-quirks'] = true;
1935 $state = 'bogus DOCTYPE';
1936 }
1937 break;
1938
1939 case 'DOCTYPE system identifier (double-quoted)':
1940 /* Consume the next input character: */
1941 $char = $this->stream->char();
1942
1943 if ($char === '"') {
1944 /* U+0022 QUOTATION MARK (")
1945 Switch to the after DOCTYPE system identifier state. */
1946 $state = 'after DOCTYPE system identifier';
1947 } elseif ($char === '>') {
1948 /* U+003E GREATER-THAN SIGN (>)
1949 Parse error. Set the DOCTYPE token's force-quirks flag
1950 to on. Emit that DOCTYPE token. Switch to the data state. */
1951 $this->emitToken(array(
1952 'type' => self::PARSEERROR,
1953 'data' => 'unexpected-end-of-doctype'
1954 ));
1955 $this->token['force-quirks'] = true;
1956 $this->emitToken($this->token);
1957 $state = 'data';
1958 } elseif ($char === false) {
1959 /* EOF
1960 Parse error. Set the DOCTYPE token's force-quirks flag
1961 to on. Emit that DOCTYPE token. Reconsume the EOF
1962 character in the data state. */
1963 $this->emitToken(array(
1964 'type' => self::PARSEERROR,
1965 'data' => 'eof-in-doctype'
1966 ));
1967 $this->token['force-quirks'] = true;
1968 $this->emitToken($this->token);
1969 $this->stream->unget();
1970 $state = 'data';
1971 } else {
1972 /* Anything else
1973 Append the current input character to the current
1974 DOCTYPE token's system identifier. Stay in the DOCTYPE
1975 system identifier (double-quoted) state. */
1976 $this->token['system'] .= $char;
1977 }
1978 break;
1979
1980 case 'DOCTYPE system identifier (single-quoted)':
1981 /* Consume the next input character: */
1982 $char = $this->stream->char();
1983
1984 if ($char === "'") {
1985 /* U+0027 APOSTROPHE (')
1986 Switch to the after DOCTYPE system identifier state. */
1987 $state = 'after DOCTYPE system identifier';
1988 } elseif ($char === '>') {
1989 /* U+003E GREATER-THAN SIGN (>)
1990 Parse error. Set the DOCTYPE token's force-quirks flag
1991 to on. Emit that DOCTYPE token. Switch to the data state. */
1992 $this->emitToken(array(
1993 'type' => self::PARSEERROR,
1994 'data' => 'unexpected-end-of-doctype'
1995 ));
1996 $this->token['force-quirks'] = true;
1997 $this->emitToken($this->token);
1998 $state = 'data';
1999 } elseif ($char === false) {
2000 /* EOF
2001 Parse error. Set the DOCTYPE token's force-quirks flag
2002 to on. Emit that DOCTYPE token. Reconsume the EOF
2003 character in the data state. */
2004 $this->emitToken(array(
2005 'type' => self::PARSEERROR,
2006 'data' => 'eof-in-doctype'
2007 ));
2008 $this->token['force-quirks'] = true;
2009 $this->emitToken($this->token);
2010 $this->stream->unget();
2011 $state = 'data';
2012 } else {
2013 /* Anything else
2014 Append the current input character to the current
2015 DOCTYPE token's system identifier. Stay in the DOCTYPE
2016 system identifier (double-quoted) state. */
2017 $this->token['system'] .= $char;
2018 }
2019 break;
2020
2021 case 'after DOCTYPE system identifier':
2022 /* Consume the next input character: */
2023 $char = $this->stream->char();
2024
2025 if($char === "\t" || $char === "\n" || $char === "\x0c" || $char === ' ') {
2026 /* U+0009 CHARACTER TABULATION
2027 U+000A LINE FEED (LF)
2028 U+000C FORM FEED (FF)
2029 U+0020 SPACE
2030 Stay in the after DOCTYPE system identifier state. */
2031 } elseif ($char === '>') {
2032 /* U+003E GREATER-THAN SIGN (>)
2033 Emit the current DOCTYPE token. Switch to the data state. */
2034 $this->emitToken($this->token);
2035 $state = 'data';
2036 } elseif ($char === false) {
2037 /* Parse error. Set the DOCTYPE token's force-quirks
2038 flag to on. Emit that DOCTYPE token. Reconsume the EOF
2039 character in the data state. */
2040 $this->emitToken(array(
2041 'type' => self::PARSEERROR,
2042 'data' => 'eof-in-doctype'
2043 ));
2044 $this->token['force-quirks'] = true;
2045 $this->emitToken($this->token);
2046 $this->stream->unget();
2047 $state = 'data';
2048 } else {
2049 /* Anything else
2050 Parse error. Switch to the bogus DOCTYPE state.
2051 (This does not set the DOCTYPE token's force-quirks
2052 flag to on.) */
2053 $this->emitToken(array(
2054 'type' => self::PARSEERROR,
2055 'data' => 'unexpected-char-in-doctype'
2056 ));
2057 $state = 'bogus DOCTYPE';
2058 }
2059 break;
2060
2061 case 'bogus DOCTYPE':
2062 /* Consume the next input character: */
2063 $char = $this->stream->char();
2064
2065 if ($char === '>') {
2066 /* U+003E GREATER-THAN SIGN (>)
2067 Emit the DOCTYPE token. Switch to the data state. */
2068 $this->emitToken($this->token);
2069 $state = 'data';
2070
2071 } elseif($char === false) {
2072 /* EOF
2073 Emit the DOCTYPE token. Reconsume the EOF character in
2074 the data state. */
2075 $this->emitToken($this->token);
2076 $this->stream->unget();
2077 $state = 'data';
2078
2079 } else {
2080 /* Anything else
2081 Stay in the bogus DOCTYPE state. */
2082 }
2083 break;
2084
2085 // case 'cdataSection':
2086
2087 }
2088 }
2089 }
2090
2091 /**
2092 * Returns a serialized representation of the tree.
2093 */
2094 public function save() {
2095 return $this->tree->save();
2096 }
2097
2098 /**
2099 * Returns the input stream.
2100 */
2101 public function stream() {
2102 return $this->stream;
2103 }
2104
2105 private function consumeCharacterReference($allowed = false, $inattr = false) {
2106 // This goes quite far against spec, and is far closer to the Python
2107 // impl., mainly because we don't do the large unconsuming the spec
2108 // requires.
2109
2110 // All consumed characters.
2111 $chars = $this->stream->char();
2112
2113 /* This section defines how to consume a character
2114 reference. This definition is used when parsing character
2115 references in text and in attributes.
2116
2117 The behavior depends on the identity of the next character
2118 (the one immediately after the U+0026 AMPERSAND character): */
2119
2120 if (
2121 $chars[0] === "\x09" ||
2122 $chars[0] === "\x0A" ||
2123 $chars[0] === "\x0C" ||
2124 $chars[0] === "\x20" ||
2125 $chars[0] === '<' ||
2126 $chars[0] === '&' ||
2127 $chars === false ||
2128 $chars[0] === $allowed
2129 ) {
2130 /* U+0009 CHARACTER TABULATION
2131 U+000A LINE FEED (LF)
2132 U+000C FORM FEED (FF)
2133 U+0020 SPACE
2134 U+003C LESS-THAN SIGN
2135 U+0026 AMPERSAND
2136 EOF
2137 The additional allowed character, if there is one
2138 Not a character reference. No characters are consumed,
2139 and nothing is returned. (This is not an error, either.) */
2140 // We already consumed, so unconsume.
2141 $this->stream->unget();
2142 return '&';
2143 } elseif ($chars[0] === '#') {
2144 /* Consume the U+0023 NUMBER SIGN. */
2145 // Um, yeah, we already did that.
2146 /* The behavior further depends on the character after
2147 the U+0023 NUMBER SIGN: */
2148 $chars .= $this->stream->char();
2149 if (isset($chars[1]) && ($chars[1] === 'x' || $chars[1] === 'X')) {
2150 /* U+0078 LATIN SMALL LETTER X
2151 U+0058 LATIN CAPITAL LETTER X */
2152 /* Consume the X. */
2153 // Um, yeah, we already did that.
2154 /* Follow the steps below, but using the range of
2155 characters U+0030 DIGIT ZERO through to U+0039 DIGIT
2156 NINE, U+0061 LATIN SMALL LETTER A through to U+0066
2157 LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER
2158 A, through to U+0046 LATIN CAPITAL LETTER F (in other
2159 words, 0123456789, ABCDEF, abcdef). */
2160 $char_class = self::HEX;
2161 /* When it comes to interpreting the
2162 number, interpret it as a hexadecimal number. */
2163 $hex = true;
2164 } else {
2165 /* Anything else */
2166 // Unconsume because we shouldn't have consumed this.
2167 $chars = $chars[0];
2168 $this->stream->unget();
2169 /* Follow the steps below, but using the range of
2170 characters U+0030 DIGIT ZERO through to U+0039 DIGIT
2171 NINE (i.e. just 0123456789). */
2172 $char_class = self::DIGIT;
2173 /* When it comes to interpreting the number,
2174 interpret it as a decimal number. */
2175 $hex = false;
2176 }
2177
2178 /* Consume as many characters as match the range of characters given above. */
2179 $consumed = $this->stream->charsWhile($char_class);
2180 if ($consumed === '' || $consumed === false) {
2181 /* If no characters match the range, then don't consume
2182 any characters (and unconsume the U+0023 NUMBER SIGN
2183 character and, if appropriate, the X character). This
2184 is a parse error; nothing is returned. */
2185 $this->emitToken(array(
2186 'type' => self::PARSEERROR,
2187 'data' => 'expected-numeric-entity'
2188 ));
2189 return '&' . $chars;
2190 } else {
2191 /* Otherwise, if the next character is a U+003B SEMICOLON,
2192 consume that too. If it isn't, there is a parse error. */
2193 if ($this->stream->char() !== ';') {
2194 $this->stream->unget();
2195 $this->emitToken(array(
2196 'type' => self::PARSEERROR,
2197 'data' => 'numeric-entity-without-semicolon'
2198 ));
2199 }
2200
2201 /* If one or more characters match the range, then take
2202 them all and interpret the string of characters as a number
2203 (either hexadecimal or decimal as appropriate). */
2204 $codepoint = $hex ? hexdec($consumed) : (int) $consumed;
2205
2206 /* If that number is one of the numbers in the first column
2207 of the following table, then this is a parse error. Find the
2208 row with that number in the first column, and return a
2209 character token for the Unicode character given in the
2210 second column of that row. */
2211 $new_codepoint = HTML5_Data::getRealCodepoint($codepoint);
2212 if ($new_codepoint) {
2213 $this->emitToken(array(
2214 'type' => self::PARSEERROR,
2215 'data' => 'illegal-windows-1252-entity'
2216 ));
2217 return HTML5_Data::utf8chr($new_codepoint);
2218 } else {
2219 /* Otherwise, if the number is greater than 0x10FFFF, then
2220 * this is a parse error. Return a U+FFFD REPLACEMENT
2221 * CHARACTER. */
2222 if ($codepoint > 0x10FFFF) {
2223 $this->emitToken(array(
2224 'type' => self::PARSEERROR,
2225 'data' => 'overlong-character-entity' // XXX probably not correct
2226 ));
2227 return "\xEF\xBF\xBD";
2228 }
2229 /* Otherwise, return a character token for the Unicode
2230 * character whose code point is that number. If the
2231 * number is in the range 0x0001 to 0x0008, 0x000E to
2232 * 0x001F, 0x007F to 0x009F, 0xD800 to 0xDFFF, 0xFDD0 to
2233 * 0xFDEF, or is one of 0x000B, 0xFFFE, 0xFFFF, 0x1FFFE,
2234 * 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE,
2235 * 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE,
2236 * 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE,
2237 * 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE,
2238 * 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, 0x10FFFE,
2239 * or 0x10FFFF, then this is a parse error. */
2240 // && has higher precedence than ||
2241 if (
2242 $codepoint >= 0x0000 && $codepoint <= 0x0008 ||
2243 $codepoint === 0x000B ||
2244 $codepoint >= 0x000E && $codepoint <= 0x001F ||
2245 $codepoint >= 0x007F && $codepoint <= 0x009F ||
2246 $codepoint >= 0xD800 && $codepoint <= 0xDFFF ||
2247 $codepoint >= 0xFDD0 && $codepoint <= 0xFDEF ||
2248 ($codepoint & 0xFFFE) === 0xFFFE ||
2249 $codepoint == 0x10FFFF || $codepoint == 0x10FFFE
2250 ) {
2251 $this->emitToken(array(
2252 'type' => self::PARSEERROR,
2253 'data' => 'illegal-codepoint-for-numeric-entity'
2254 ));
2255 }
2256 return HTML5_Data::utf8chr($codepoint);
2257 }
2258 }
2259
2260 } else {
2261 /* Anything else */
2262
2263 /* Consume the maximum number of characters possible,
2264 with the consumed characters matching one of the
2265 identifiers in the first column of the named character
2266 references table (in a case-sensitive manner). */
2267 // What we actually do here is consume as much as we can while it
2268 // matches the start of one of the identifiers in the first column.
2269
2270 $refs = HTML5_Data::getNamedCharacterReferences();
2271
2272 // Get the longest string which is the start of an identifier
2273 // ($chars) as well as the longest identifier which matches ($id)
2274 // and its codepoint ($codepoint).
2275 $codepoint = false;
2276 $char = $chars;
2277 while ($char !== false && isset($refs[$char])) {
2278 $refs = $refs[$char];
2279 if (isset($refs['codepoint'])) {
2280 $id = $chars;
2281 $codepoint = $refs['codepoint'];
2282 }
2283 $chars .= $char = $this->stream->char();
2284 }
2285
2286 // Unconsume the one character we just took which caused the while
2287 // statement to fail. This could be anything and could cause state
2288 // changes (as if it matches the while loop it must be
2289 // alphanumeric so we can just concat it to whatever we get later).
2290 $this->stream->unget();
2291 if ($char !== false) {
2292 $chars = substr($chars, 0, -1);
2293 }
2294
2295 /* If no match can be made, then this is a parse error.
2296 No characters are consumed, and nothing is returned. */
2297 if (!$codepoint) {
2298 $this->emitToken(array(
2299 'type' => self::PARSEERROR,
2300 'data' => 'expected-named-entity'
2301 ));
2302 return '&' . $chars;
2303 }
2304
2305 /* If the last character matched is not a U+003B SEMICOLON
2306 (;), there is a parse error. */
2307 $semicolon = true;
2308 if (substr($id, -1) !== ';') {
2309 $this->emitToken(array(
2310 'type' => self::PARSEERROR,
2311 'data' => 'named-entity-without-semicolon'
2312 ));
2313 $semicolon = false;
2314 }
2315
2316 /* If the character reference is being consumed as part of
2317 an attribute, and the last character matched is not a
2318 U+003B SEMICOLON (;), and the next character is in the
2319 range U+0030 DIGIT ZERO to U+0039 DIGIT NINE, U+0041
2320 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z,
2321 or U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z,
2322 then, for historical reasons, all the characters that were
2323 matched after the U+0026 AMPERSAND (&) must be unconsumed,
2324 and nothing is returned. */
2325 if ($inattr && !$semicolon) {
2326 // The next character is either the next character in $chars or in the stream.
2327 if (strlen($chars) > strlen($id)) {
2328 $next = substr($chars, strlen($id), 1);
2329 } else {
2330 $next = $this->stream->char();
2331 $this->stream->unget();
2332 }
2333 if (
2334 '0' <= $next && $next <= '9' ||
2335 'A' <= $next && $next <= 'Z' ||
2336 'a' <= $next && $next <= 'z'
2337 ) {
2338 return '&' . $chars;
2339 }
2340 }
2341
2342 /* Otherwise, return a character token for the character
2343 corresponding to the character reference name (as given
2344 by the second column of the named character references table). */
2345 return HTML5_Data::utf8chr($codepoint) . substr($chars, strlen($id));
2346 }
2347 }
2348
2349 private function characterReferenceInAttributeValue($allowed = false) {
2350 /* Attempt to consume a character reference. */
2351 $entity = $this->consumeCharacterReference($allowed, true);
2352
2353 /* If nothing is returned, append a U+0026 AMPERSAND
2354 character to the current attribute's value.
2355
2356 Otherwise, append the returned character token to the
2357 current attribute's value. */
2358 $char = (!$entity)
2359 ? '&'
2360 : $entity;
2361
2362 $last = count($this->token['attr']) - 1;
2363 $this->token['attr'][$last]['value'] .= $char;
2364
2365 /* Finally, switch back to the attribute value state that you
2366 were in when were switched into this state. */
2367 }
2368
2369 /**
2370 * Emits a token, passing it on to the tree builder.
2371 */
2372 protected function emitToken($token, $checkStream = true, $dry = false) {
2373 if ($checkStream) {
2374 // Emit errors from input stream.
2375 while ($this->stream->errors) {
2376 $this->emitToken(array_shift($this->stream->errors), false);
2377 }
2378 }
2379 if($token['type'] === self::ENDTAG && !empty($token['attr'])) {
2380 for ($i = 0; $i < count($token['attr']); $i++) {
2381 $this->emitToken(array(
2382 'type' => self::PARSEERROR,
2383 'data' => 'attributes-in-end-tag'
2384 ));
2385 }
2386 }
2387 if($token['type'] === self::ENDTAG && !empty($token['self-closing'])) {
2388 $this->emitToken(array(
2389 'type' => self::PARSEERROR,
2390 'data' => 'self-closing-flag-on-end-tag',
2391 ));
2392 }
2393 if($token['type'] === self::STARTTAG) {
2394 // This could be changed to actually pass the tree-builder a hash
2395 $hash = array();
2396 foreach ($token['attr'] as $keypair) {
2397 if (isset($hash[$keypair['name']])) {
2398 $this->emitToken(array(
2399 'type' => self::PARSEERROR,
2400 'data' => 'duplicate-attribute',
2401 ));
2402 } else {
2403 $hash[$keypair['name']] = $keypair['value'];
2404 }
2405 }
2406 }
2407
2408 if(!$dry) {
2409 // the current structure of attributes is not a terribly good one
2410 $this->tree->emitToken($token);
2411 }
2412
2413 if(!$dry && is_int($this->tree->content_model)) {
2414 $this->content_model = $this->tree->content_model;
2415 $this->tree->content_model = null;
2416
2417 } elseif($token['type'] === self::ENDTAG) {
2418 $this->content_model = self::PCDATA;
2419 }
2420 }
2421}
2422
diff --git a/inc/3rdparty/libraries/html5/TreeBuilder.php b/inc/3rdparty/libraries/html5/TreeBuilder.php
deleted file mode 100644
index c4a48b21..00000000
--- a/inc/3rdparty/libraries/html5/TreeBuilder.php
+++ /dev/null
@@ -1,3849 +0,0 @@
1<?php
2
3/*
4
5Copyright 2007 Jeroen van der Meer <http://jero.net/>
6Copyright 2009 Edward Z. Yang <edwardzyang@thewritingpot.com>
7
8Permission is hereby granted, free of charge, to any person obtaining a
9copy of this software and associated documentation files (the
10"Software"), to deal in the Software without restriction, including
11without limitation the rights to use, copy, modify, merge, publish,
12distribute, sublicense, and/or sell copies of the Software, and to
13permit persons to whom the Software is furnished to do so, subject to
14the following conditions:
15
16The above copyright notice and this permission notice shall be included
17in all copies or substantial portions of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
23CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
27*/
28
29// Tags for FIX ME!!!: (in order of priority)
30// XXX - should be fixed NAO!
31// XERROR - with regards to parse errors
32// XSCRIPT - with regards to scripting mode
33// XENCODING - with regards to encoding (for reparsing tests)
34// XDOM - DOM specific code (tagName is explicitly not marked).
35// this is not (yet) in helper functions.
36
37class HTML5_TreeBuilder {
38 public $stack = array();
39 public $content_model;
40
41 private $mode;
42 private $original_mode;
43 private $secondary_mode;
44 private $dom;
45 // Whether or not normal insertion of nodes should actually foster
46 // parent (used in one case in spec)
47 private $foster_parent = false;
48 private $a_formatting = array();
49
50 private $head_pointer = null;
51 private $form_pointer = null;
52
53 private $flag_frameset_ok = true;
54 private $flag_force_quirks = false;
55 private $ignored = false;
56 private $quirks_mode = null;
57 // this gets to 2 when we want to ignore the next lf character, and
58 // is decrement at the beginning of each processed token (this way,
59 // code can check for (bool)$ignore_lf_token, but it phases out
60 // appropriately)
61 private $ignore_lf_token = 0;
62 private $fragment = false;
63 private $root;
64
65 private $scoping = array('applet','button','caption','html','marquee','object','table','td','th', 'svg:foreignObject');
66 private $formatting = array('a','b','big','code','em','font','i','nobr','s','small','strike','strong','tt','u');
67 // dl and ds are speculative
68 private $special = array('address','area','article','aside','base','basefont','bgsound',
69 'blockquote','body','br','center','col','colgroup','command','dc','dd','details','dir','div','dl','ds',
70 'dt','embed','fieldset','figure','footer','form','frame','frameset','h1','h2','h3','h4','h5',
71 'h6','head','header','hgroup','hr','iframe','img','input','isindex','li','link',
72 'listing','menu','meta','nav','noembed','noframes','noscript','ol',
73 'p','param','plaintext','pre','script','select','spacer','style',
74 'tbody','textarea','tfoot','thead','title','tr','ul','wbr');
75
76 private $pendingTableCharacters;
77 private $pendingTableCharactersDirty;
78
79 // Tree construction modes
80 const INITIAL = 0;
81 const BEFORE_HTML = 1;
82 const BEFORE_HEAD = 2;
83 const IN_HEAD = 3;
84 const IN_HEAD_NOSCRIPT = 4;
85 const AFTER_HEAD = 5;
86 const IN_BODY = 6;
87 const IN_CDATA_RCDATA = 7;
88 const IN_TABLE = 8;
89 const IN_TABLE_TEXT = 9;
90 const IN_CAPTION = 10;
91 const IN_COLUMN_GROUP = 11;
92 const IN_TABLE_BODY = 12;
93 const IN_ROW = 13;
94 const IN_CELL = 14;
95 const IN_SELECT = 15;
96 const IN_SELECT_IN_TABLE= 16;
97 const IN_FOREIGN_CONTENT= 17;
98 const AFTER_BODY = 18;
99 const IN_FRAMESET = 19;
100 const AFTER_FRAMESET = 20;
101 const AFTER_AFTER_BODY = 21;
102 const AFTER_AFTER_FRAMESET = 22;
103
104 /**
105 * Converts a magic number to a readable name. Use for debugging.
106 */
107 private function strConst($number) {
108 static $lookup;
109 if (!$lookup) {
110 $lookup = array();
111 $r = new ReflectionClass('HTML5_TreeBuilder');
112 $consts = $r->getConstants();
113 foreach ($consts as $const => $num) {
114 if (!is_int($num)) continue;
115 $lookup[$num] = $const;
116 }
117 }
118 return $lookup[$number];
119 }
120
121 // The different types of elements.
122 const SPECIAL = 100;
123 const SCOPING = 101;
124 const FORMATTING = 102;
125 const PHRASING = 103;
126
127 // Quirks modes in $quirks_mode
128 const NO_QUIRKS = 200;
129 const QUIRKS_MODE = 201;
130 const LIMITED_QUIRKS_MODE = 202;
131
132 // Marker to be placed in $a_formatting
133 const MARKER = 300;
134
135 // Namespaces for foreign content
136 const NS_HTML = null; // to prevent DOM from requiring NS on everything
137 const NS_XHTML = 'http://www.w3.org/1999/xhtml';
138 const NS_MATHML = 'http://www.w3.org/1998/Math/MathML';
139 const NS_SVG = 'http://www.w3.org/2000/svg';
140 const NS_XLINK = 'http://www.w3.org/1999/xlink';
141 const NS_XML = 'http://www.w3.org/XML/1998/namespace';
142 const NS_XMLNS = 'http://www.w3.org/2000/xmlns/';
143
144 // Different types of scopes to test for elements
145 const SCOPE = 0;
146 const SCOPE_LISTITEM = 1;
147 const SCOPE_TABLE = 2;
148
149 public function __construct() {
150 $this->mode = self::INITIAL;
151 $this->dom = new DOMDocument;
152
153 $this->dom->encoding = 'UTF-8';
154 $this->dom->preserveWhiteSpace = true;
155 $this->dom->substituteEntities = true;
156 $this->dom->strictErrorChecking = false;
157 }
158
159 // Process tag tokens
160 public function emitToken($token, $mode = null) {
161 // XXX: ignore parse errors... why are we emitting them, again?
162 if ($token['type'] === HTML5_Tokenizer::PARSEERROR) return;
163 if ($mode === null) $mode = $this->mode;
164
165 /*
166 $backtrace = debug_backtrace();
167 if ($backtrace[1]['class'] !== 'HTML5_TreeBuilder') echo "--\n";
168 echo $this->strConst($mode);
169 if ($this->original_mode) echo " (originally ".$this->strConst($this->original_mode).")";
170 echo "\n ";
171 token_dump($token);
172 $this->printStack();
173 $this->printActiveFormattingElements();
174 if ($this->foster_parent) echo " -> this is a foster parent mode\n";
175 if ($this->flag_frameset_ok) echo " -> frameset ok\n";
176 */
177
178 if ($this->ignore_lf_token) $this->ignore_lf_token--;
179 $this->ignored = false;
180 // indenting is a little wonky, this can be changed later on
181 switch ($mode) {
182
183 case self::INITIAL:
184
185 /* A character token that is one of U+0009 CHARACTER TABULATION,
186 * U+000A LINE FEED (LF), U+000C FORM FEED (FF), or U+0020 SPACE */
187 if ($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
188 /* Ignore the token. */
189 $this->ignored = true;
190 } elseif ($token['type'] === HTML5_Tokenizer::DOCTYPE) {
191 if (
192 $token['name'] !== 'html' || !empty($token['public']) ||
193 !empty($token['system']) || $token !== 'about:legacy-compat'
194 ) {
195 /* If the DOCTYPE token's name is not a case-sensitive match
196 * for the string "html", or if the token's public identifier
197 * is not missing, or if the token's system identifier is
198 * neither missing nor a case-sensitive match for the string
199 * "about:legacy-compat", then there is a parse error (this
200 * is the DOCTYPE parse error). */
201 // DOCTYPE parse error
202 }
203 /* Append a DocumentType node to the Document node, with the name
204 * attribute set to the name given in the DOCTYPE token, or the
205 * empty string if the name was missing; the publicId attribute
206 * set to the public identifier given in the DOCTYPE token, or
207 * the empty string if the public identifier was missing; the
208 * systemId attribute set to the system identifier given in the
209 * DOCTYPE token, or the empty string if the system identifier
210 * was missing; and the other attributes specific to
211 * DocumentType objects set to null and empty lists as
212 * appropriate. Associate the DocumentType node with the
213 * Document object so that it is returned as the value of the
214 * doctype attribute of the Document object. */
215 if (!isset($token['public'])) $token['public'] = null;
216 if (!isset($token['system'])) $token['system'] = null;
217 // XDOM
218 // Yes this is hacky. I'm kind of annoyed that I can't appendChild
219 // a doctype to DOMDocument. Maybe I haven't chanted the right
220 // syllables.
221 $impl = new DOMImplementation();
222 // This call can fail for particularly pathological cases (namely,
223 // the qualifiedName parameter ($token['name']) could be missing.
224 if ($token['name']) {
225 $doctype = $impl->createDocumentType($token['name'], $token['public'], $token['system']);
226 $this->dom->appendChild($doctype);
227 } else {
228 // It looks like libxml's not actually *able* to express this case.
229 // So... don't.
230 $this->dom->emptyDoctype = true;
231 }
232 $public = is_null($token['public']) ? false : strtolower($token['public']);
233 $system = is_null($token['system']) ? false : strtolower($token['system']);
234 $publicStartsWithForQuirks = array(
235 "+//silmaril//dtd html pro v0r11 19970101//",
236 "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
237 "-//as//dtd html 3.0 aswedit + extensions//",
238 "-//ietf//dtd html 2.0 level 1//",
239 "-//ietf//dtd html 2.0 level 2//",
240 "-//ietf//dtd html 2.0 strict level 1//",
241 "-//ietf//dtd html 2.0 strict level 2//",
242 "-//ietf//dtd html 2.0 strict//",
243 "-//ietf//dtd html 2.0//",
244 "-//ietf//dtd html 2.1e//",
245 "-//ietf//dtd html 3.0//",
246 "-//ietf//dtd html 3.2 final//",
247 "-//ietf//dtd html 3.2//",
248 "-//ietf//dtd html 3//",
249 "-//ietf//dtd html level 0//",
250 "-//ietf//dtd html level 1//",
251 "-//ietf//dtd html level 2//",
252 "-//ietf//dtd html level 3//",
253 "-//ietf//dtd html strict level 0//",
254 "-//ietf//dtd html strict level 1//",
255 "-//ietf//dtd html strict level 2//",
256 "-//ietf//dtd html strict level 3//",
257 "-//ietf//dtd html strict//",
258 "-//ietf//dtd html//",
259 "-//metrius//dtd metrius presentational//",
260 "-//microsoft//dtd internet explorer 2.0 html strict//",
261 "-//microsoft//dtd internet explorer 2.0 html//",
262 "-//microsoft//dtd internet explorer 2.0 tables//",
263 "-//microsoft//dtd internet explorer 3.0 html strict//",
264 "-//microsoft//dtd internet explorer 3.0 html//",
265 "-//microsoft//dtd internet explorer 3.0 tables//",
266 "-//netscape comm. corp.//dtd html//",
267 "-//netscape comm. corp.//dtd strict html//",
268 "-//o'reilly and associates//dtd html 2.0//",
269 "-//o'reilly and associates//dtd html extended 1.0//",
270 "-//o'reilly and associates//dtd html extended relaxed 1.0//",
271 "-//spyglass//dtd html 2.0 extended//",
272 "-//sq//dtd html 2.0 hotmetal + extensions//",
273 "-//sun microsystems corp.//dtd hotjava html//",
274 "-//sun microsystems corp.//dtd hotjava strict html//",
275 "-//w3c//dtd html 3 1995-03-24//",
276 "-//w3c//dtd html 3.2 draft//",
277 "-//w3c//dtd html 3.2 final//",
278 "-//w3c//dtd html 3.2//",
279 "-//w3c//dtd html 3.2s draft//",
280 "-//w3c//dtd html 4.0 frameset//",
281 "-//w3c//dtd html 4.0 transitional//",
282 "-//w3c//dtd html experimental 19960712//",
283 "-//w3c//dtd html experimental 970421//",
284 "-//w3c//dtd w3 html//",
285 "-//w3o//dtd w3 html 3.0//",
286 "-//webtechs//dtd mozilla html 2.0//",
287 "-//webtechs//dtd mozilla html//",
288 );
289 $publicSetToForQuirks = array(
290 "-//w3o//dtd w3 html strict 3.0//",
291 "-/w3c/dtd html 4.0 transitional/en",
292 "html",
293 );
294 $publicStartsWithAndSystemForQuirks = array(
295 "-//w3c//dtd html 4.01 frameset//",
296 "-//w3c//dtd html 4.01 transitional//",
297 );
298 $publicStartsWithForLimitedQuirks = array(
299 "-//w3c//dtd xhtml 1.0 frameset//",
300 "-//w3c//dtd xhtml 1.0 transitional//",
301 );
302 $publicStartsWithAndSystemForLimitedQuirks = array(
303 "-//w3c//dtd html 4.01 frameset//",
304 "-//w3c//dtd html 4.01 transitional//",
305 );
306 // first, do easy checks
307 if (
308 !empty($token['force-quirks']) ||
309 strtolower($token['name']) !== 'html'
310 ) {
311 $this->quirks_mode = self::QUIRKS_MODE;
312 } else {
313 do {
314 if ($system) {
315 foreach ($publicStartsWithAndSystemForQuirks as $x) {
316 if (strncmp($public, $x, strlen($x)) === 0) {
317 $this->quirks_mode = self::QUIRKS_MODE;
318 break;
319 }
320 }
321 if (!is_null($this->quirks_mode)) break;
322 foreach ($publicStartsWithAndSystemForLimitedQuirks as $x) {
323 if (strncmp($public, $x, strlen($x)) === 0) {
324 $this->quirks_mode = self::LIMITED_QUIRKS_MODE;
325 break;
326 }
327 }
328 if (!is_null($this->quirks_mode)) break;
329 }
330 foreach ($publicSetToForQuirks as $x) {
331 if ($public === $x) {
332 $this->quirks_mode = self::QUIRKS_MODE;
333 break;
334 }
335 }
336 if (!is_null($this->quirks_mode)) break;
337 foreach ($publicStartsWithForLimitedQuirks as $x) {
338 if (strncmp($public, $x, strlen($x)) === 0) {
339 $this->quirks_mode = self::LIMITED_QUIRKS_MODE;
340 }
341 }
342 if (!is_null($this->quirks_mode)) break;
343 if ($system === "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd") {
344 $this->quirks_mode = self::QUIRKS_MODE;
345 break;
346 }
347 foreach ($publicStartsWithForQuirks as $x) {
348 if (strncmp($public, $x, strlen($x)) === 0) {
349 $this->quirks_mode = self::QUIRKS_MODE;
350 break;
351 }
352 }
353 if (is_null($this->quirks_mode)) {
354 $this->quirks_mode = self::NO_QUIRKS;
355 }
356 } while (false);
357 }
358 $this->mode = self::BEFORE_HTML;
359 } else {
360 // parse error
361 /* Switch the insertion mode to "before html", then reprocess the
362 * current token. */
363 $this->mode = self::BEFORE_HTML;
364 $this->quirks_mode = self::QUIRKS_MODE;
365 $this->emitToken($token);
366 }
367 break;
368
369 case self::BEFORE_HTML:
370
371 /* A DOCTYPE token */
372 if($token['type'] === HTML5_Tokenizer::DOCTYPE) {
373 // Parse error. Ignore the token.
374 $this->ignored = true;
375
376 /* A comment token */
377 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
378 /* Append a Comment node to the Document object with the data
379 attribute set to the data given in the comment token. */
380 // XDOM
381 $comment = $this->dom->createComment($token['data']);
382 $this->dom->appendChild($comment);
383
384 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
385 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
386 or U+0020 SPACE */
387 } elseif($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
388 /* Ignore the token. */
389 $this->ignored = true;
390
391 /* A start tag whose tag name is "html" */
392 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] == 'html') {
393 /* Create an element for the token in the HTML namespace. Append it
394 * to the Document object. Put this element in the stack of open
395 * elements. */
396 // XDOM
397 $html = $this->insertElement($token, false);
398 $this->dom->appendChild($html);
399 $this->stack[] = $html;
400
401 $this->mode = self::BEFORE_HEAD;
402
403 } else {
404 /* Create an html element. Append it to the Document object. Put
405 * this element in the stack of open elements. */
406 // XDOM
407 $html = $this->dom->createElementNS(self::NS_HTML, 'html');
408 $this->dom->appendChild($html);
409 $this->stack[] = $html;
410
411 /* Switch the insertion mode to "before head", then reprocess the
412 * current token. */
413 $this->mode = self::BEFORE_HEAD;
414 $this->emitToken($token);
415 }
416 break;
417
418 case self::BEFORE_HEAD:
419
420 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
421 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
422 or U+0020 SPACE */
423 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
424 /* Ignore the token. */
425 $this->ignored = true;
426
427 /* A comment token */
428 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
429 /* Append a Comment node to the current node with the data attribute
430 set to the data given in the comment token. */
431 $this->insertComment($token['data']);
432
433 /* A DOCTYPE token */
434 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
435 /* Parse error. Ignore the token */
436 $this->ignored = true;
437 // parse error
438
439 /* A start tag token with the tag name "html" */
440 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
441 /* Process the token using the rules for the "in body"
442 * insertion mode. */
443 $this->processWithRulesFor($token, self::IN_BODY);
444
445 /* A start tag token with the tag name "head" */
446 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'head') {
447 /* Insert an HTML element for the token. */
448 $element = $this->insertElement($token);
449
450 /* Set the head element pointer to this new element node. */
451 $this->head_pointer = $element;
452
453 /* Change the insertion mode to "in head". */
454 $this->mode = self::IN_HEAD;
455
456 /* An end tag whose tag name is one of: "head", "body", "html", "br" */
457 } elseif(
458 $token['type'] === HTML5_Tokenizer::ENDTAG && (
459 $token['name'] === 'head' || $token['name'] === 'body' ||
460 $token['name'] === 'html' || $token['name'] === 'br'
461 )) {
462 /* Act as if a start tag token with the tag name "head" and no
463 * attributes had been seen, then reprocess the current token. */
464 $this->emitToken(array(
465 'name' => 'head',
466 'type' => HTML5_Tokenizer::STARTTAG,
467 'attr' => array()
468 ));
469 $this->emitToken($token);
470
471 /* Any other end tag */
472 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG) {
473 /* Parse error. Ignore the token. */
474 $this->ignored = true;
475
476 } else {
477 /* Act as if a start tag token with the tag name "head" and no
478 * attributes had been seen, then reprocess the current token.
479 * Note: This will result in an empty head element being
480 * generated, with the current token being reprocessed in the
481 * "after head" insertion mode. */
482 $this->emitToken(array(
483 'name' => 'head',
484 'type' => HTML5_Tokenizer::STARTTAG,
485 'attr' => array()
486 ));
487 $this->emitToken($token);
488 }
489 break;
490
491 case self::IN_HEAD:
492
493 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
494 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
495 or U+0020 SPACE. */
496 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
497 /* Insert the character into the current node. */
498 $this->insertText($token['data']);
499
500 /* A comment token */
501 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
502 /* Append a Comment node to the current node with the data attribute
503 set to the data given in the comment token. */
504 $this->insertComment($token['data']);
505
506 /* A DOCTYPE token */
507 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
508 /* Parse error. Ignore the token. */
509 $this->ignored = true;
510 // parse error
511
512 /* A start tag whose tag name is "html" */
513 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
514 $token['name'] === 'html') {
515 $this->processWithRulesFor($token, self::IN_BODY);
516
517 /* A start tag whose tag name is one of: "base", "command", "link" */
518 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
519 ($token['name'] === 'base' || $token['name'] === 'command' ||
520 $token['name'] === 'link')) {
521 /* Insert an HTML element for the token. Immediately pop the
522 * current node off the stack of open elements. */
523 $this->insertElement($token);
524 array_pop($this->stack);
525
526 // YYY: Acknowledge the token's self-closing flag, if it is set.
527
528 /* A start tag whose tag name is "meta" */
529 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'meta') {
530 /* Insert an HTML element for the token. Immediately pop the
531 * current node off the stack of open elements. */
532 $this->insertElement($token);
533 array_pop($this->stack);
534
535 // XERROR: Acknowledge the token's self-closing flag, if it is set.
536
537 // XENCODING: If the element has a charset attribute, and its value is a
538 // supported encoding, and the confidence is currently tentative,
539 // then change the encoding to the encoding given by the value of
540 // the charset attribute.
541 //
542 // Otherwise, if the element has a content attribute, and applying
543 // the algorithm for extracting an encoding from a Content-Type to
544 // its value returns a supported encoding encoding, and the
545 // confidence is currently tentative, then change the encoding to
546 // the encoding encoding.
547
548 /* A start tag with the tag name "title" */
549 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'title') {
550 $this->insertRCDATAElement($token);
551
552 /* A start tag whose tag name is "noscript", if the scripting flag is enabled, or
553 * A start tag whose tag name is one of: "noframes", "style" */
554 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
555 ($token['name'] === 'noscript' || $token['name'] === 'noframes' || $token['name'] === 'style')) {
556 // XSCRIPT: Scripting flag not respected
557 $this->insertCDATAElement($token);
558
559 // XSCRIPT: Scripting flag disable not implemented
560
561 /* A start tag with the tag name "script" */
562 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'script') {
563 /* 1. Create an element for the token in the HTML namespace. */
564 $node = $this->insertElement($token, false);
565
566 /* 2. Mark the element as being "parser-inserted" */
567 // Uhhh... XSCRIPT
568
569 /* 3. If the parser was originally created for the HTML
570 * fragment parsing algorithm, then mark the script element as
571 * "already executed". (fragment case) */
572 // ditto... XSCRIPT
573
574 /* 4. Append the new element to the current node and push it onto
575 * the stack of open elements. */
576 end($this->stack)->appendChild($node);
577 $this->stack[] = $node;
578 // I guess we could squash these together
579
580 /* 6. Let the original insertion mode be the current insertion mode. */
581 $this->original_mode = $this->mode;
582 /* 7. Switch the insertion mode to "in CDATA/RCDATA" */
583 $this->mode = self::IN_CDATA_RCDATA;
584 /* 5. Switch the tokeniser's content model flag to the CDATA state. */
585 $this->content_model = HTML5_Tokenizer::CDATA;
586
587 /* An end tag with the tag name "head" */
588 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'head') {
589 /* Pop the current node (which will be the head element) off the stack of open elements. */
590 array_pop($this->stack);
591
592 /* Change the insertion mode to "after head". */
593 $this->mode = self::AFTER_HEAD;
594
595 // Slight logic inversion here to minimize duplication
596 /* A start tag with the tag name "head". */
597 /* An end tag whose tag name is not one of: "body", "html", "br" */
598 } elseif(($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'head') ||
599 ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] !== 'html' &&
600 $token['name'] !== 'body' && $token['name'] !== 'br')) {
601 // Parse error. Ignore the token.
602 $this->ignored = true;
603
604 /* Anything else */
605 } else {
606 /* Act as if an end tag token with the tag name "head" had been
607 * seen, and reprocess the current token. */
608 $this->emitToken(array(
609 'name' => 'head',
610 'type' => HTML5_Tokenizer::ENDTAG
611 ));
612
613 /* Then, reprocess the current token. */
614 $this->emitToken($token);
615 }
616 break;
617
618 case self::IN_HEAD_NOSCRIPT:
619 if ($token['type'] === HTML5_Tokenizer::DOCTYPE) {
620 // parse error
621 } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
622 $this->processWithRulesFor($token, self::IN_BODY);
623 } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'noscript') {
624 /* Pop the current node (which will be a noscript element) from the
625 * stack of open elements; the new current node will be a head
626 * element. */
627 array_pop($this->stack);
628 $this->mode = self::IN_HEAD;
629 } elseif (
630 ($token['type'] === HTML5_Tokenizer::SPACECHARACTER) ||
631 ($token['type'] === HTML5_Tokenizer::COMMENT) ||
632 ($token['type'] === HTML5_Tokenizer::STARTTAG && (
633 $token['name'] === 'link' || $token['name'] === 'meta' ||
634 $token['name'] === 'noframes' || $token['name'] === 'style'))) {
635 $this->processWithRulesFor($token, self::IN_HEAD);
636 // inverted logic
637 } elseif (
638 ($token['type'] === HTML5_Tokenizer::STARTTAG && (
639 $token['name'] === 'head' || $token['name'] === 'noscript')) ||
640 ($token['type'] === HTML5_Tokenizer::ENDTAG &&
641 $token['name'] !== 'br')) {
642 // parse error
643 } else {
644 // parse error
645 $this->emitToken(array(
646 'type' => HTML5_Tokenizer::ENDTAG,
647 'name' => 'noscript',
648 ));
649 $this->emitToken($token);
650 }
651 break;
652
653 case self::AFTER_HEAD:
654 /* Handle the token as follows: */
655
656 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
657 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
658 or U+0020 SPACE */
659 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
660 /* Append the character to the current node. */
661 $this->insertText($token['data']);
662
663 /* A comment token */
664 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
665 /* Append a Comment node to the current node with the data attribute
666 set to the data given in the comment token. */
667 $this->insertComment($token['data']);
668
669 } elseif ($token['type'] === HTML5_Tokenizer::DOCTYPE) {
670 // parse error
671
672 } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
673 $this->processWithRulesFor($token, self::IN_BODY);
674
675 /* A start tag token with the tag name "body" */
676 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'body') {
677 $this->insertElement($token);
678
679 /* Set the frameset-ok flag to "not ok". */
680 $this->flag_frameset_ok = false;
681
682 /* Change the insertion mode to "in body". */
683 $this->mode = self::IN_BODY;
684
685 /* A start tag token with the tag name "frameset" */
686 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'frameset') {
687 /* Insert a frameset element for the token. */
688 $this->insertElement($token);
689
690 /* Change the insertion mode to "in frameset". */
691 $this->mode = self::IN_FRAMESET;
692
693 /* A start tag token whose tag name is one of: "base", "link", "meta",
694 "script", "style", "title" */
695 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'],
696 array('base', 'link', 'meta', 'noframes', 'script', 'style', 'title'))) {
697 // parse error
698 /* Push the node pointed to by the head element pointer onto the
699 * stack of open elements. */
700 $this->stack[] = $this->head_pointer;
701 $this->processWithRulesFor($token, self::IN_HEAD);
702 array_splice($this->stack, array_search($this->head_pointer, $this->stack, true), 1);
703
704 // inversion of specification
705 } elseif(
706 ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'head') ||
707 ($token['type'] === HTML5_Tokenizer::ENDTAG &&
708 $token['name'] !== 'body' && $token['name'] !== 'html' &&
709 $token['name'] !== 'br')) {
710 // parse error
711
712 /* Anything else */
713 } else {
714 $this->emitToken(array(
715 'name' => 'body',
716 'type' => HTML5_Tokenizer::STARTTAG,
717 'attr' => array()
718 ));
719 $this->flag_frameset_ok = true;
720 $this->emitToken($token);
721 }
722 break;
723
724 case self::IN_BODY:
725 /* Handle the token as follows: */
726
727 switch($token['type']) {
728 /* A character token */
729 case HTML5_Tokenizer::CHARACTER:
730 case HTML5_Tokenizer::SPACECHARACTER:
731 /* Reconstruct the active formatting elements, if any. */
732 $this->reconstructActiveFormattingElements();
733
734 /* Append the token's character to the current node. */
735 $this->insertText($token['data']);
736
737 /* If the token is not one of U+0009 CHARACTER TABULATION,
738 * U+000A LINE FEED (LF), U+000C FORM FEED (FF), or U+0020
739 * SPACE, then set the frameset-ok flag to "not ok". */
740 // i.e., if any of the characters is not whitespace
741 if (strlen($token['data']) !== strspn($token['data'], HTML5_Tokenizer::WHITESPACE)) {
742 $this->flag_frameset_ok = false;
743 }
744 break;
745
746 /* A comment token */
747 case HTML5_Tokenizer::COMMENT:
748 /* Append a Comment node to the current node with the data
749 attribute set to the data given in the comment token. */
750 $this->insertComment($token['data']);
751 break;
752
753 case HTML5_Tokenizer::DOCTYPE:
754 // parse error
755 break;
756
757 case HTML5_Tokenizer::EOF:
758 // parse error
759 break;
760
761 case HTML5_Tokenizer::STARTTAG:
762 switch($token['name']) {
763 case 'html':
764 // parse error
765 /* For each attribute on the token, check to see if the
766 * attribute is already present on the top element of the
767 * stack of open elements. If it is not, add the attribute
768 * and its corresponding value to that element. */
769 foreach($token['attr'] as $attr) {
770 if(!$this->stack[0]->hasAttribute($attr['name'])) {
771 $this->stack[0]->setAttribute($attr['name'], $attr['value']);
772 }
773 }
774 break;
775
776 case 'base': case 'command': case 'link': case 'meta': case 'noframes':
777 case 'script': case 'style': case 'title':
778 /* Process the token as if the insertion mode had been "in
779 head". */
780 $this->processWithRulesFor($token, self::IN_HEAD);
781 break;
782
783 /* A start tag token with the tag name "body" */
784 case 'body':
785 /* Parse error. If the second element on the stack of open
786 elements is not a body element, or, if the stack of open
787 elements has only one node on it, then ignore the token.
788 (fragment case) */
789 if(count($this->stack) === 1 || $this->stack[1]->tagName !== 'body') {
790 $this->ignored = true;
791 // Ignore
792
793 /* Otherwise, for each attribute on the token, check to see
794 if the attribute is already present on the body element (the
795 second element) on the stack of open elements. If it is not,
796 add the attribute and its corresponding value to that
797 element. */
798 } else {
799 foreach($token['attr'] as $attr) {
800 if(!$this->stack[1]->hasAttribute($attr['name'])) {
801 $this->stack[1]->setAttribute($attr['name'], $attr['value']);
802 }
803 }
804 }
805 break;
806
807 case 'frameset':
808 // parse error
809 /* If the second element on the stack of open elements is
810 * not a body element, or, if the stack of open elements
811 * has only one node on it, then ignore the token.
812 * (fragment case) */
813 if(count($this->stack) === 1 || $this->stack[1]->tagName !== 'body') {
814 $this->ignored = true;
815 // Ignore
816 } elseif (!$this->flag_frameset_ok) {
817 $this->ignored = true;
818 // Ignore
819 } else {
820 /* 1. Remove the second element on the stack of open
821 * elements from its parent node, if it has one. */
822 if($this->stack[1]->parentNode) {
823 $this->stack[1]->parentNode->removeChild($this->stack[1]);
824 }
825
826 /* 2. Pop all the nodes from the bottom of the stack of
827 * open elements, from the current node up to the root
828 * html element. */
829 array_splice($this->stack, 1);
830
831 $this->insertElement($token);
832 $this->mode = self::IN_FRAMESET;
833 }
834 break;
835
836 // in spec, there is a diversion here
837
838 case 'address': case 'article': case 'aside': case 'blockquote':
839 case 'center': case 'datagrid': case 'details': case 'dir':
840 case 'div': case 'dl': case 'fieldset': case 'figure': case 'footer':
841 case 'header': case 'hgroup': case 'menu': case 'nav':
842 case 'ol': case 'p': case 'section': case 'ul':
843 /* If the stack of open elements has a p element in scope,
844 then act as if an end tag with the tag name p had been
845 seen. */
846 if($this->elementInScope('p')) {
847 $this->emitToken(array(
848 'name' => 'p',
849 'type' => HTML5_Tokenizer::ENDTAG
850 ));
851 }
852
853 /* Insert an HTML element for the token. */
854 $this->insertElement($token);
855 break;
856
857 /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
858 "h5", "h6" */
859 case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
860 /* If the stack of open elements has a p element in scope,
861 then act as if an end tag with the tag name p had been seen. */
862 if($this->elementInScope('p')) {
863 $this->emitToken(array(
864 'name' => 'p',
865 'type' => HTML5_Tokenizer::ENDTAG
866 ));
867 }
868
869 /* If the current node is an element whose tag name is one
870 * of "h1", "h2", "h3", "h4", "h5", or "h6", then this is a
871 * parse error; pop the current node off the stack of open
872 * elements. */
873 $peek = array_pop($this->stack);
874 if (in_array($peek->tagName, array("h1", "h2", "h3", "h4", "h5", "h6"))) {
875 // parse error
876 } else {
877 $this->stack[] = $peek;
878 }
879
880 /* Insert an HTML element for the token. */
881 $this->insertElement($token);
882 break;
883
884 case 'pre': case 'listing':
885 /* If the stack of open elements has a p element in scope,
886 then act as if an end tag with the tag name p had been seen. */
887 if($this->elementInScope('p')) {
888 $this->emitToken(array(
889 'name' => 'p',
890 'type' => HTML5_Tokenizer::ENDTAG
891 ));
892 }
893 $this->insertElement($token);
894 /* If the next token is a U+000A LINE FEED (LF) character
895 * token, then ignore that token and move on to the next
896 * one. (Newlines at the start of pre blocks are ignored as
897 * an authoring convenience.) */
898 $this->ignore_lf_token = 2;
899 $this->flag_frameset_ok = false;
900 break;
901
902 /* A start tag whose tag name is "form" */
903 case 'form':
904 /* If the form element pointer is not null, ignore the
905 token with a parse error. */
906 if($this->form_pointer !== null) {
907 $this->ignored = true;
908 // Ignore.
909
910 /* Otherwise: */
911 } else {
912 /* If the stack of open elements has a p element in
913 scope, then act as if an end tag with the tag name p
914 had been seen. */
915 if($this->elementInScope('p')) {
916 $this->emitToken(array(
917 'name' => 'p',
918 'type' => HTML5_Tokenizer::ENDTAG
919 ));
920 }
921
922 /* Insert an HTML element for the token, and set the
923 form element pointer to point to the element created. */
924 $element = $this->insertElement($token);
925 $this->form_pointer = $element;
926 }
927 break;
928
929 // condensed specification
930 case 'li': case 'dc': case 'dd': case 'ds': case 'dt':
931 /* 1. Set the frameset-ok flag to "not ok". */
932 $this->flag_frameset_ok = false;
933
934 $stack_length = count($this->stack) - 1;
935 for($n = $stack_length; 0 <= $n; $n--) {
936 /* 2. Initialise node to be the current node (the
937 bottommost node of the stack). */
938 $stop = false;
939 $node = $this->stack[$n];
940 $cat = $this->getElementCategory($node);
941
942 // for case 'li':
943 /* 3. If node is an li element, then act as if an end
944 * tag with the tag name "li" had been seen, then jump
945 * to the last step. */
946 // for case 'dc': case 'dd': case 'ds': case 'dt':
947 /* If node is a dc, dd, ds or dt element, then act as if an end
948 * tag with the same tag name as node had been seen, then
949 * jump to the last step. */
950 if(($token['name'] === 'li' && $node->tagName === 'li') ||
951 ($token['name'] !== 'li' && ($node->tagName == 'dc' || $node->tagName === 'dd' || $node->tagName == 'ds' || $node->tagName === 'dt'))) { // limited conditional
952 $this->emitToken(array(
953 'type' => HTML5_Tokenizer::ENDTAG,
954 'name' => $node->tagName,
955 ));
956 break;
957 }
958
959 /* 4. If node is not in the formatting category, and is
960 not in the phrasing category, and is not an address,
961 div or p element, then stop this algorithm. */
962 if($cat !== self::FORMATTING && $cat !== self::PHRASING &&
963 $node->tagName !== 'address' && $node->tagName !== 'div' &&
964 $node->tagName !== 'p') {
965 break;
966 }
967
968 /* 5. Otherwise, set node to the previous entry in the
969 * stack of open elements and return to step 2. */
970 }
971
972 /* 6. This is the last step. */
973
974 /* If the stack of open elements has a p element in scope,
975 then act as if an end tag with the tag name p had been
976 seen. */
977 if($this->elementInScope('p')) {
978 $this->emitToken(array(
979 'name' => 'p',
980 'type' => HTML5_Tokenizer::ENDTAG
981 ));
982 }
983
984 /* Finally, insert an HTML element with the same tag
985 name as the token's. */
986 $this->insertElement($token);
987 break;
988
989 /* A start tag token whose tag name is "plaintext" */
990 case 'plaintext':
991 /* If the stack of open elements has a p element in scope,
992 then act as if an end tag with the tag name p had been
993 seen. */
994 if($this->elementInScope('p')) {
995 $this->emitToken(array(
996 'name' => 'p',
997 'type' => HTML5_Tokenizer::ENDTAG
998 ));
999 }
1000
1001 /* Insert an HTML element for the token. */
1002 $this->insertElement($token);
1003
1004 $this->content_model = HTML5_Tokenizer::PLAINTEXT;
1005 break;
1006
1007 // more diversions
1008
1009 /* A start tag whose tag name is "a" */
1010 case 'a':
1011 /* If the list of active formatting elements contains
1012 an element whose tag name is "a" between the end of the
1013 list and the last marker on the list (or the start of
1014 the list if there is no marker on the list), then this
1015 is a parse error; act as if an end tag with the tag name
1016 "a" had been seen, then remove that element from the list
1017 of active formatting elements and the stack of open
1018 elements if the end tag didn't already remove it (it
1019 might not have if the element is not in table scope). */
1020 $leng = count($this->a_formatting);
1021
1022 for($n = $leng - 1; $n >= 0; $n--) {
1023 if($this->a_formatting[$n] === self::MARKER) {
1024 break;
1025
1026 } elseif($this->a_formatting[$n]->tagName === 'a') {
1027 $a = $this->a_formatting[$n];
1028 $this->emitToken(array(
1029 'name' => 'a',
1030 'type' => HTML5_Tokenizer::ENDTAG
1031 ));
1032 if (in_array($a, $this->a_formatting)) {
1033 $a_i = array_search($a, $this->a_formatting, true);
1034 if($a_i !== false) array_splice($this->a_formatting, $a_i, 1);
1035 }
1036 if (in_array($a, $this->stack)) {
1037 $a_i = array_search($a, $this->stack, true);
1038 if ($a_i !== false) array_splice($this->stack, $a_i, 1);
1039 }
1040 break;
1041 }
1042 }
1043
1044 /* Reconstruct the active formatting elements, if any. */
1045 $this->reconstructActiveFormattingElements();
1046
1047 /* Insert an HTML element for the token. */
1048 $el = $this->insertElement($token);
1049
1050 /* Add that element to the list of active formatting
1051 elements. */
1052 $this->a_formatting[] = $el;
1053 break;
1054
1055 case 'b': case 'big': case 'code': case 'em': case 'font': case 'i':
1056 case 's': case 'small': case 'strike':
1057 case 'strong': case 'tt': case 'u':
1058 /* Reconstruct the active formatting elements, if any. */
1059 $this->reconstructActiveFormattingElements();
1060
1061 /* Insert an HTML element for the token. */
1062 $el = $this->insertElement($token);
1063
1064 /* Add that element to the list of active formatting
1065 elements. */
1066 $this->a_formatting[] = $el;
1067 break;
1068
1069 case 'nobr':
1070 /* Reconstruct the active formatting elements, if any. */
1071 $this->reconstructActiveFormattingElements();
1072
1073 /* If the stack of open elements has a nobr element in
1074 * scope, then this is a parse error; act as if an end tag
1075 * with the tag name "nobr" had been seen, then once again
1076 * reconstruct the active formatting elements, if any. */
1077 if ($this->elementInScope('nobr')) {
1078 $this->emitToken(array(
1079 'name' => 'nobr',
1080 'type' => HTML5_Tokenizer::ENDTAG,
1081 ));
1082 $this->reconstructActiveFormattingElements();
1083 }
1084
1085 /* Insert an HTML element for the token. */
1086 $el = $this->insertElement($token);
1087
1088 /* Add that element to the list of active formatting
1089 elements. */
1090 $this->a_formatting[] = $el;
1091 break;
1092
1093 // another diversion
1094
1095 /* A start tag token whose tag name is "button" */
1096 case 'button':
1097 /* If the stack of open elements has a button element in scope,
1098 then this is a parse error; act as if an end tag with the tag
1099 name "button" had been seen, then reprocess the token. (We don't
1100 do that. Unnecessary.) (I hope you're right! -- ezyang) */
1101 if($this->elementInScope('button')) {
1102 $this->emitToken(array(
1103 'name' => 'button',
1104 'type' => HTML5_Tokenizer::ENDTAG
1105 ));
1106 }
1107
1108 /* Reconstruct the active formatting elements, if any. */
1109 $this->reconstructActiveFormattingElements();
1110
1111 /* Insert an HTML element for the token. */
1112 $this->insertElement($token);
1113
1114 /* Insert a marker at the end of the list of active
1115 formatting elements. */
1116 $this->a_formatting[] = self::MARKER;
1117
1118 $this->flag_frameset_ok = false;
1119 break;
1120
1121 case 'applet': case 'marquee': case 'object':
1122 /* Reconstruct the active formatting elements, if any. */
1123 $this->reconstructActiveFormattingElements();
1124
1125 /* Insert an HTML element for the token. */
1126 $this->insertElement($token);
1127
1128 /* Insert a marker at the end of the list of active
1129 formatting elements. */
1130 $this->a_formatting[] = self::MARKER;
1131
1132 $this->flag_frameset_ok = false;
1133 break;
1134
1135 // spec diversion
1136
1137 /* A start tag whose tag name is "table" */
1138 case 'table':
1139 /* If the Document is not set to quirks mode, and the
1140 * stack of open elements has a p element in scope, then
1141 * act as if an end tag with the tag name "p" had been
1142 * seen. */
1143 if($this->quirks_mode !== self::QUIRKS_MODE &&
1144 $this->elementInScope('p')) {
1145 $this->emitToken(array(
1146 'name' => 'p',
1147 'type' => HTML5_Tokenizer::ENDTAG
1148 ));
1149 }
1150
1151 /* Insert an HTML element for the token. */
1152 $this->insertElement($token);
1153
1154 $this->flag_frameset_ok = false;
1155
1156 /* Change the insertion mode to "in table". */
1157 $this->mode = self::IN_TABLE;
1158 break;
1159
1160 /* A start tag whose tag name is one of: "area", "basefont",
1161 "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */
1162 case 'area': case 'basefont': case 'bgsound': case 'br':
1163 case 'embed': case 'img': case 'input': case 'keygen': case 'spacer':
1164 case 'wbr':
1165 /* Reconstruct the active formatting elements, if any. */
1166 $this->reconstructActiveFormattingElements();
1167
1168 /* Insert an HTML element for the token. */
1169 $this->insertElement($token);
1170
1171 /* Immediately pop the current node off the stack of open elements. */
1172 array_pop($this->stack);
1173
1174 // YYY: Acknowledge the token's self-closing flag, if it is set.
1175
1176 $this->flag_frameset_ok = false;
1177 break;
1178
1179 case 'param': case 'source':
1180 /* Insert an HTML element for the token. */
1181 $this->insertElement($token);
1182
1183 /* Immediately pop the current node off the stack of open elements. */
1184 array_pop($this->stack);
1185
1186 // YYY: Acknowledge the token's self-closing flag, if it is set.
1187 break;
1188
1189 /* A start tag whose tag name is "hr" */
1190 case 'hr':
1191 /* If the stack of open elements has a p element in scope,
1192 then act as if an end tag with the tag name p had been seen. */
1193 if($this->elementInScope('p')) {
1194 $this->emitToken(array(
1195 'name' => 'p',
1196 'type' => HTML5_Tokenizer::ENDTAG
1197 ));
1198 }
1199
1200 /* Insert an HTML element for the token. */
1201 $this->insertElement($token);
1202
1203 /* Immediately pop the current node off the stack of open elements. */
1204 array_pop($this->stack);
1205
1206 // YYY: Acknowledge the token's self-closing flag, if it is set.
1207
1208 $this->flag_frameset_ok = false;
1209 break;
1210
1211 /* A start tag whose tag name is "image" */
1212 case 'image':
1213 /* Parse error. Change the token's tag name to "img" and
1214 reprocess it. (Don't ask.) */
1215 $token['name'] = 'img';
1216 $this->emitToken($token);
1217 break;
1218
1219 /* A start tag whose tag name is "isindex" */
1220 case 'isindex':
1221 /* Parse error. */
1222
1223 /* If the form element pointer is not null,
1224 then ignore the token. */
1225 if($this->form_pointer === null) {
1226 /* Act as if a start tag token with the tag name "form" had
1227 been seen. */
1228 /* If the token has an attribute called "action", set
1229 * the action attribute on the resulting form
1230 * element to the value of the "action" attribute of
1231 * the token. */
1232 $attr = array();
1233 $action = $this->getAttr($token, 'action');
1234 if ($action !== false) {
1235 $attr[] = array('name' => 'action', 'value' => $action);
1236 }
1237 $this->emitToken(array(
1238 'name' => 'form',
1239 'type' => HTML5_Tokenizer::STARTTAG,
1240 'attr' => $attr
1241 ));
1242
1243 /* Act as if a start tag token with the tag name "hr" had
1244 been seen. */
1245 $this->emitToken(array(
1246 'name' => 'hr',
1247 'type' => HTML5_Tokenizer::STARTTAG,
1248 'attr' => array()
1249 ));
1250
1251 /* Act as if a start tag token with the tag name "label"
1252 had been seen. */
1253 $this->emitToken(array(
1254 'name' => 'label',
1255 'type' => HTML5_Tokenizer::STARTTAG,
1256 'attr' => array()
1257 ));
1258
1259 /* Act as if a stream of character tokens had been seen. */
1260 $prompt = $this->getAttr($token, 'prompt');
1261 if ($prompt === false) {
1262 $prompt = 'This is a searchable index. '.
1263 'Insert your search keywords here: ';
1264 }
1265 $this->emitToken(array(
1266 'data' => $prompt,
1267 'type' => HTML5_Tokenizer::CHARACTER,
1268 ));
1269
1270 /* Act as if a start tag token with the tag name "input"
1271 had been seen, with all the attributes from the "isindex"
1272 token, except with the "name" attribute set to the value
1273 "isindex" (ignoring any explicit "name" attribute). */
1274 $attr = array();
1275 foreach ($token['attr'] as $keypair) {
1276 if ($keypair['name'] === 'name' || $keypair['name'] === 'action' ||
1277 $keypair['name'] === 'prompt') continue;
1278 $attr[] = $keypair;
1279 }
1280 $attr[] = array('name' => 'name', 'value' => 'isindex');
1281
1282 $this->emitToken(array(
1283 'name' => 'input',
1284 'type' => HTML5_Tokenizer::STARTTAG,
1285 'attr' => $attr
1286 ));
1287
1288 /* Act as if an end tag token with the tag name "label"
1289 had been seen. */
1290 $this->emitToken(array(
1291 'name' => 'label',
1292 'type' => HTML5_Tokenizer::ENDTAG
1293 ));
1294
1295 /* Act as if a start tag token with the tag name "hr" had
1296 been seen. */
1297 $this->emitToken(array(
1298 'name' => 'hr',
1299 'type' => HTML5_Tokenizer::STARTTAG
1300 ));
1301
1302 /* Act as if an end tag token with the tag name "form" had
1303 been seen. */
1304 $this->emitToken(array(
1305 'name' => 'form',
1306 'type' => HTML5_Tokenizer::ENDTAG
1307 ));
1308 } else {
1309 $this->ignored = true;
1310 }
1311 break;
1312
1313 /* A start tag whose tag name is "textarea" */
1314 case 'textarea':
1315 $this->insertElement($token);
1316
1317 /* If the next token is a U+000A LINE FEED (LF)
1318 * character token, then ignore that token and move on to
1319 * the next one. (Newlines at the start of textarea
1320 * elements are ignored as an authoring convenience.)
1321 * need flag, see also <pre> */
1322 $this->ignore_lf_token = 2;
1323
1324 $this->original_mode = $this->mode;
1325 $this->flag_frameset_ok = false;
1326 $this->mode = self::IN_CDATA_RCDATA;
1327
1328 /* Switch the tokeniser's content model flag to the
1329 RCDATA state. */
1330 $this->content_model = HTML5_Tokenizer::RCDATA;
1331 break;
1332
1333 /* A start tag token whose tag name is "xmp" */
1334 case 'xmp':
1335 /* If the stack of open elements has a p element in
1336 scope, then act as if an end tag with the tag name
1337 "p" has been seen. */
1338 if ($this->elementInScope('p')) {
1339 $this->emitToken(array(
1340 'name' => 'p',
1341 'type' => HTML5_Tokenizer::ENDTAG
1342 ));
1343 }
1344
1345 /* Reconstruct the active formatting elements, if any. */
1346 $this->reconstructActiveFormattingElements();
1347
1348 $this->flag_frameset_ok = false;
1349
1350 $this->insertCDATAElement($token);
1351 break;
1352
1353 case 'iframe':
1354 $this->flag_frameset_ok = false;
1355 $this->insertCDATAElement($token);
1356 break;
1357
1358 case 'noembed': case 'noscript':
1359 // XSCRIPT: should check scripting flag
1360 $this->insertCDATAElement($token);
1361 break;
1362
1363 /* A start tag whose tag name is "select" */
1364 case 'select':
1365 /* Reconstruct the active formatting elements, if any. */
1366 $this->reconstructActiveFormattingElements();
1367
1368 /* Insert an HTML element for the token. */
1369 $this->insertElement($token);
1370
1371 $this->flag_frameset_ok = false;
1372
1373 /* If the insertion mode is one of in table", "in caption",
1374 * "in column group", "in table body", "in row", or "in
1375 * cell", then switch the insertion mode to "in select in
1376 * table". Otherwise, switch the insertion mode to "in
1377 * select". */
1378 if (
1379 $this->mode === self::IN_TABLE || $this->mode === self::IN_CAPTION ||
1380 $this->mode === self::IN_COLUMN_GROUP || $this->mode ==+self::IN_TABLE_BODY ||
1381 $this->mode === self::IN_ROW || $this->mode === self::IN_CELL
1382 ) {
1383 $this->mode = self::IN_SELECT_IN_TABLE;
1384 } else {
1385 $this->mode = self::IN_SELECT;
1386 }
1387 break;
1388
1389 case 'option': case 'optgroup':
1390 if ($this->elementInScope('option')) {
1391 $this->emitToken(array(
1392 'name' => 'option',
1393 'type' => HTML5_Tokenizer::ENDTAG,
1394 ));
1395 }
1396 $this->reconstructActiveFormattingElements();
1397 $this->insertElement($token);
1398 break;
1399
1400 case 'rp': case 'rt':
1401 /* If the stack of open elements has a ruby element in scope, then generate
1402 * implied end tags. If the current node is not then a ruby element, this is
1403 * a parse error; pop all the nodes from the current node up to the node
1404 * immediately before the bottommost ruby element on the stack of open elements.
1405 */
1406 if ($this->elementInScope('ruby')) {
1407 $this->generateImpliedEndTags();
1408 }
1409 $peek = false;
1410 do {
1411 if ($peek) {
1412 // parse error
1413 }
1414 $peek = array_pop($this->stack);
1415 } while ($peek->tagName !== 'ruby');
1416 $this->stack[] = $peek; // we popped one too many
1417 $this->insertElement($token);
1418 break;
1419
1420 // spec diversion
1421
1422 case 'math':
1423 $this->reconstructActiveFormattingElements();
1424 $token = $this->adjustMathMLAttributes($token);
1425 $token = $this->adjustForeignAttributes($token);
1426 $this->insertForeignElement($token, self::NS_MATHML);
1427 if (isset($token['self-closing'])) {
1428 // XERROR: acknowledge the token's self-closing flag
1429 array_pop($this->stack);
1430 }
1431 if ($this->mode !== self::IN_FOREIGN_CONTENT) {
1432 $this->secondary_mode = $this->mode;
1433 $this->mode = self::IN_FOREIGN_CONTENT;
1434 }
1435 break;
1436
1437 case 'svg':
1438 $this->reconstructActiveFormattingElements();
1439 $token = $this->adjustSVGAttributes($token);
1440 $token = $this->adjustForeignAttributes($token);
1441 $this->insertForeignElement($token, self::NS_SVG);
1442 if (isset($token['self-closing'])) {
1443 // XERROR: acknowledge the token's self-closing flag
1444 array_pop($this->stack);
1445 }
1446 if ($this->mode !== self::IN_FOREIGN_CONTENT) {
1447 $this->secondary_mode = $this->mode;
1448 $this->mode = self::IN_FOREIGN_CONTENT;
1449 }
1450 break;
1451
1452 case 'caption': case 'col': case 'colgroup': case 'frame': case 'head':
1453 case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead': case 'tr':
1454 // parse error
1455 break;
1456
1457 /* A start tag token not covered by the previous entries */
1458 default:
1459 /* Reconstruct the active formatting elements, if any. */
1460 $this->reconstructActiveFormattingElements();
1461
1462 $this->insertElement($token);
1463 /* This element will be a phrasing element. */
1464 break;
1465 }
1466 break;
1467
1468 case HTML5_Tokenizer::ENDTAG:
1469 switch($token['name']) {
1470 /* An end tag with the tag name "body" */
1471 case 'body':
1472 /* If the stack of open elements does not have a body
1473 * element in scope, this is a parse error; ignore the
1474 * token. */
1475 if(!$this->elementInScope('body')) {
1476 $this->ignored = true;
1477
1478 /* Otherwise, if there is a node in the stack of open
1479 * elements that is not either a dc element, a dd element,
1480 * a ds element, a dt element, an li element, an optgroup
1481 * element, an option element, a p element, an rp element,
1482 * an rt element, a tbody element, a td element, a tfoot
1483 * element, a th element, a thead element, a tr element,
1484 * the body element, or the html element, then this is a
1485 * parse error.
1486 */
1487 } else {
1488 // XERROR: implement this check for parse error
1489 }
1490
1491 /* Change the insertion mode to "after body". */
1492 $this->mode = self::AFTER_BODY;
1493 break;
1494
1495 /* An end tag with the tag name "html" */
1496 case 'html':
1497 /* Act as if an end tag with tag name "body" had been seen,
1498 then, if that token wasn't ignored, reprocess the current
1499 token. */
1500 $this->emitToken(array(
1501 'name' => 'body',
1502 'type' => HTML5_Tokenizer::ENDTAG
1503 ));
1504
1505 if (!$this->ignored) $this->emitToken($token);
1506 break;
1507
1508 case 'address': case 'article': case 'aside': case 'blockquote':
1509 case 'center': case 'datagrid': case 'details': case 'dir':
1510 case 'div': case 'dl': case 'fieldset': case 'footer':
1511 case 'header': case 'hgroup': case 'listing': case 'menu':
1512 case 'nav': case 'ol': case 'pre': case 'section': case 'ul':
1513 /* If the stack of open elements has an element in scope
1514 with the same tag name as that of the token, then generate
1515 implied end tags. */
1516 if($this->elementInScope($token['name'])) {
1517 $this->generateImpliedEndTags();
1518
1519 /* Now, if the current node is not an element with
1520 the same tag name as that of the token, then this
1521 is a parse error. */
1522 // XERROR: implement parse error logic
1523
1524 /* If the stack of open elements has an element in
1525 scope with the same tag name as that of the token,
1526 then pop elements from this stack until an element
1527 with that tag name has been popped from the stack. */
1528 do {
1529 $node = array_pop($this->stack);
1530 } while ($node->tagName !== $token['name']);
1531 } else {
1532 // parse error
1533 }
1534 break;
1535
1536 /* An end tag whose tag name is "form" */
1537 case 'form':
1538 /* Let node be the element that the form element pointer is set to. */
1539 $node = $this->form_pointer;
1540 /* Set the form element pointer to null. */
1541 $this->form_pointer = null;
1542 /* If node is null or the stack of open elements does not
1543 * have node in scope, then this is a parse error; ignore the token. */
1544 if ($node === null || !in_array($node, $this->stack)) {
1545 // parse error
1546 $this->ignored = true;
1547 } else {
1548 /* 1. Generate implied end tags. */
1549 $this->generateImpliedEndTags();
1550 /* 2. If the current node is not node, then this is a parse error. */
1551 if (end($this->stack) !== $node) {
1552 // parse error
1553 }
1554 /* 3. Remove node from the stack of open elements. */
1555 array_splice($this->stack, array_search($node, $this->stack, true), 1);
1556 }
1557
1558 break;
1559
1560 /* An end tag whose tag name is "p" */
1561 case 'p':
1562 /* If the stack of open elements has a p element in scope,
1563 then generate implied end tags, except for p elements. */
1564 if($this->elementInScope('p')) {
1565 /* Generate implied end tags, except for elements with
1566 * the same tag name as the token. */
1567 $this->generateImpliedEndTags(array('p'));
1568
1569 /* If the current node is not a p element, then this is
1570 a parse error. */
1571 // XERROR: implement
1572
1573 /* Pop elements from the stack of open elements until
1574 * an element with the same tag name as the token has
1575 * been popped from the stack. */
1576 do {
1577 $node = array_pop($this->stack);
1578 } while ($node->tagName !== 'p');
1579
1580 } else {
1581 // parse error
1582 $this->emitToken(array(
1583 'name' => 'p',
1584 'type' => HTML5_Tokenizer::STARTTAG,
1585 ));
1586 $this->emitToken($token);
1587 }
1588 break;
1589
1590 /* An end tag whose tag name is "li" */
1591 case 'li':
1592 /* If the stack of open elements does not have an element
1593 * in list item scope with the same tag name as that of the
1594 * token, then this is a parse error; ignore the token. */
1595 if ($this->elementInScope($token['name'], self::SCOPE_LISTITEM)) {
1596 /* Generate implied end tags, except for elements with the
1597 * same tag name as the token. */
1598 $this->generateImpliedEndTags(array($token['name']));
1599 /* If the current node is not an element with the same tag
1600 * name as that of the token, then this is a parse error. */
1601 // XERROR: parse error
1602 /* Pop elements from the stack of open elements until an
1603 * element with the same tag name as the token has been
1604 * popped from the stack. */
1605 do {
1606 $node = array_pop($this->stack);
1607 } while ($node->tagName !== $token['name']);
1608 } else {
1609 // XERROR: parse error
1610 }
1611 break;
1612
1613 /* An end tag whose tag name is "dc", "dd", "ds", "dt" */
1614 case 'dc': case 'dd': case 'ds': case 'dt':
1615 if($this->elementInScope($token['name'])) {
1616 $this->generateImpliedEndTags(array($token['name']));
1617
1618 /* If the current node is not an element with the same
1619 tag name as the token, then this is a parse error. */
1620 // XERROR: implement parse error
1621
1622 /* Pop elements from the stack of open elements until
1623 * an element with the same tag name as the token has
1624 * been popped from the stack. */
1625 do {
1626 $node = array_pop($this->stack);
1627 } while ($node->tagName !== $token['name']);
1628
1629 } else {
1630 // XERROR: parse error
1631 }
1632 break;
1633
1634 /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4",
1635 "h5", "h6" */
1636 case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
1637 $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6');
1638
1639 /* If the stack of open elements has in scope an element whose
1640 tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
1641 generate implied end tags. */
1642 if($this->elementInScope($elements)) {
1643 $this->generateImpliedEndTags();
1644
1645 /* Now, if the current node is not an element with the same
1646 tag name as that of the token, then this is a parse error. */
1647 // XERROR: implement parse error
1648
1649 /* If the stack of open elements has in scope an element
1650 whose tag name is one of "h1", "h2", "h3", "h4", "h5", or
1651 "h6", then pop elements from the stack until an element
1652 with one of those tag names has been popped from the stack. */
1653 do {
1654 $node = array_pop($this->stack);
1655 } while (!in_array($node->tagName, $elements));
1656 } else {
1657 // parse error
1658 }
1659 break;
1660
1661 /* An end tag whose tag name is one of: "a", "b", "big", "em",
1662 "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
1663 case 'a': case 'b': case 'big': case 'code': case 'em': case 'font':
1664 case 'i': case 'nobr': case 's': case 'small': case 'strike':
1665 case 'strong': case 'tt': case 'u':
1666 // XERROR: generally speaking this needs parse error logic
1667 /* 1. Let the formatting element be the last element in
1668 the list of active formatting elements that:
1669 * is between the end of the list and the last scope
1670 marker in the list, if any, or the start of the list
1671 otherwise, and
1672 * has the same tag name as the token.
1673 */
1674 while(true) {
1675 for($a = count($this->a_formatting) - 1; $a >= 0; $a--) {
1676 if($this->a_formatting[$a] === self::MARKER) {
1677 break;
1678
1679 } elseif($this->a_formatting[$a]->tagName === $token['name']) {
1680 $formatting_element = $this->a_formatting[$a];
1681 $in_stack = in_array($formatting_element, $this->stack, true);
1682 $fe_af_pos = $a;
1683 break;
1684 }
1685 }
1686
1687 /* If there is no such node, or, if that node is
1688 also in the stack of open elements but the element
1689 is not in scope, then this is a parse error. Abort
1690 these steps. The token is ignored. */
1691 if(!isset($formatting_element) || ($in_stack &&
1692 !$this->elementInScope($token['name']))) {
1693 $this->ignored = true;
1694 break;
1695
1696 /* Otherwise, if there is such a node, but that node
1697 is not in the stack of open elements, then this is a
1698 parse error; remove the element from the list, and
1699 abort these steps. */
1700 } elseif(isset($formatting_element) && !$in_stack) {
1701 unset($this->a_formatting[$fe_af_pos]);
1702 $this->a_formatting = array_merge($this->a_formatting);
1703 break;
1704 }
1705
1706 /* Otherwise, there is a formatting element and that
1707 * element is in the stack and is in scope. If the
1708 * element is not the current node, this is a parse
1709 * error. In any case, proceed with the algorithm as
1710 * written in the following steps. */
1711 // XERROR: implement me
1712
1713 /* 2. Let the furthest block be the topmost node in the
1714 stack of open elements that is lower in the stack
1715 than the formatting element, and is not an element in
1716 the phrasing or formatting categories. There might
1717 not be one. */
1718 $fe_s_pos = array_search($formatting_element, $this->stack, true);
1719 $length = count($this->stack);
1720
1721 for($s = $fe_s_pos + 1; $s < $length; $s++) {
1722 $category = $this->getElementCategory($this->stack[$s]);
1723
1724 if($category !== self::PHRASING && $category !== self::FORMATTING) {
1725 $furthest_block = $this->stack[$s];
1726 break;
1727 }
1728 }
1729
1730 /* 3. If there is no furthest block, then the UA must
1731 skip the subsequent steps and instead just pop all
1732 the nodes from the bottom of the stack of open
1733 elements, from the current node up to the formatting
1734 element, and remove the formatting element from the
1735 list of active formatting elements. */
1736 if(!isset($furthest_block)) {
1737 for($n = $length - 1; $n >= $fe_s_pos; $n--) {
1738 array_pop($this->stack);
1739 }
1740
1741 unset($this->a_formatting[$fe_af_pos]);
1742 $this->a_formatting = array_merge($this->a_formatting);
1743 break;
1744 }
1745
1746 /* 4. Let the common ancestor be the element
1747 immediately above the formatting element in the stack
1748 of open elements. */
1749 $common_ancestor = $this->stack[$fe_s_pos - 1];
1750
1751 /* 5. Let a bookmark note the position of the
1752 formatting element in the list of active formatting
1753 elements relative to the elements on either side
1754 of it in the list. */
1755 $bookmark = $fe_af_pos;
1756
1757 /* 6. Let node and last node be the furthest block.
1758 Follow these steps: */
1759 $node = $furthest_block;
1760 $last_node = $furthest_block;
1761
1762 while(true) {
1763 for($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) {
1764 /* 6.1 Let node be the element immediately
1765 prior to node in the stack of open elements. */
1766 $node = $this->stack[$n];
1767
1768 /* 6.2 If node is not in the list of active
1769 formatting elements, then remove node from
1770 the stack of open elements and then go back
1771 to step 1. */
1772 if(!in_array($node, $this->a_formatting, true)) {
1773 array_splice($this->stack, $n, 1);
1774
1775 } else {
1776 break;
1777 }
1778 }
1779
1780 /* 6.3 Otherwise, if node is the formatting
1781 element, then go to the next step in the overall
1782 algorithm. */
1783 if($node === $formatting_element) {
1784 break;
1785
1786 /* 6.4 Otherwise, if last node is the furthest
1787 block, then move the aforementioned bookmark to
1788 be immediately after the node in the list of
1789 active formatting elements. */
1790 } elseif($last_node === $furthest_block) {
1791 $bookmark = array_search($node, $this->a_formatting, true) + 1;
1792 }
1793
1794 /* 6.5 Create an element for the token for which
1795 * the element node was created, replace the entry
1796 * for node in the list of active formatting
1797 * elements with an entry for the new element,
1798 * replace the entry for node in the stack of open
1799 * elements with an entry for the new element, and
1800 * let node be the new element. */
1801 // we don't know what the token is anymore
1802 // XDOM
1803 $clone = $node->cloneNode();
1804 $a_pos = array_search($node, $this->a_formatting, true);
1805 $s_pos = array_search($node, $this->stack, true);
1806 $this->a_formatting[$a_pos] = $clone;
1807 $this->stack[$s_pos] = $clone;
1808 $node = $clone;
1809
1810 /* 6.6 Insert last node into node, first removing
1811 it from its previous parent node if any. */
1812 // XDOM
1813 if($last_node->parentNode !== null) {
1814 $last_node->parentNode->removeChild($last_node);
1815 }
1816
1817 // XDOM
1818 $node->appendChild($last_node);
1819
1820 /* 6.7 Let last node be node. */
1821 $last_node = $node;
1822
1823 /* 6.8 Return to step 1 of this inner set of steps. */
1824 }
1825
1826 /* 7. If the common ancestor node is a table, tbody,
1827 * tfoot, thead, or tr element, then, foster parent
1828 * whatever last node ended up being in the previous
1829 * step, first removing it from its previous parent
1830 * node if any. */
1831 // XDOM
1832 if ($last_node->parentNode) { // common step
1833 $last_node->parentNode->removeChild($last_node);
1834 }
1835 if (in_array($common_ancestor->tagName, array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
1836 $this->fosterParent($last_node);
1837 /* Otherwise, append whatever last node ended up being
1838 * in the previous step to the common ancestor node,
1839 * first removing it from its previous parent node if
1840 * any. */
1841 } else {
1842 // XDOM
1843 $common_ancestor->appendChild($last_node);
1844 }
1845
1846 /* 8. Create an element for the token for which the
1847 * formatting element was created. */
1848 // XDOM
1849 $clone = $formatting_element->cloneNode();
1850
1851 /* 9. Take all of the child nodes of the furthest
1852 block and append them to the element created in the
1853 last step. */
1854 // XDOM
1855 while($furthest_block->hasChildNodes()) {
1856 $child = $furthest_block->firstChild;
1857 $furthest_block->removeChild($child);
1858 $clone->appendChild($child);
1859 }
1860
1861 /* 10. Append that clone to the furthest block. */
1862 // XDOM
1863 $furthest_block->appendChild($clone);
1864
1865 /* 11. Remove the formatting element from the list
1866 of active formatting elements, and insert the new element
1867 into the list of active formatting elements at the
1868 position of the aforementioned bookmark. */
1869 $fe_af_pos = array_search($formatting_element, $this->a_formatting, true);
1870 array_splice($this->a_formatting, $fe_af_pos, 1);
1871
1872 $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1);
1873 $af_part2 = array_slice($this->a_formatting, $bookmark);
1874 $this->a_formatting = array_merge($af_part1, array($clone), $af_part2);
1875
1876 /* 12. Remove the formatting element from the stack
1877 of open elements, and insert the new element into the stack
1878 of open elements immediately below the position of the
1879 furthest block in that stack. */
1880 $fe_s_pos = array_search($formatting_element, $this->stack, true);
1881 array_splice($this->stack, $fe_s_pos, 1);
1882
1883 $fb_s_pos = array_search($furthest_block, $this->stack, true);
1884 $s_part1 = array_slice($this->stack, 0, $fb_s_pos + 1);
1885 $s_part2 = array_slice($this->stack, $fb_s_pos + 1);
1886 $this->stack = array_merge($s_part1, array($clone), $s_part2);
1887
1888 /* 13. Jump back to step 1 in this series of steps. */
1889 unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block);
1890 }
1891 break;
1892
1893 case 'applet': case 'button': case 'marquee': case 'object':
1894 /* If the stack of open elements has an element in scope whose
1895 tag name matches the tag name of the token, then generate implied
1896 tags. */
1897 if($this->elementInScope($token['name'])) {
1898 $this->generateImpliedEndTags();
1899
1900 /* Now, if the current node is not an element with the same
1901 tag name as the token, then this is a parse error. */
1902 // XERROR: implement logic
1903
1904 /* Pop elements from the stack of open elements until
1905 * an element with the same tag name as the token has
1906 * been popped from the stack. */
1907 do {
1908 $node = array_pop($this->stack);
1909 } while ($node->tagName !== $token['name']);
1910
1911 /* Clear the list of active formatting elements up to the
1912 * last marker. */
1913 $keys = array_keys($this->a_formatting, self::MARKER, true);
1914 $marker = end($keys);
1915
1916 for($n = count($this->a_formatting) - 1; $n > $marker; $n--) {
1917 array_pop($this->a_formatting);
1918 }
1919 } else {
1920 // parse error
1921 }
1922 break;
1923
1924 case 'br':
1925 // Parse error
1926 $this->emitToken(array(
1927 'name' => 'br',
1928 'type' => HTML5_Tokenizer::STARTTAG,
1929 ));
1930 break;
1931
1932 /* An end tag token not covered by the previous entries */
1933 default:
1934 for($n = count($this->stack) - 1; $n >= 0; $n--) {
1935 /* Initialise node to be the current node (the bottommost
1936 node of the stack). */
1937 $node = $this->stack[$n];
1938
1939 /* If node has the same tag name as the end tag token,
1940 then: */
1941 if($token['name'] === $node->tagName) {
1942 /* Generate implied end tags. */
1943 $this->generateImpliedEndTags();
1944
1945 /* If the tag name of the end tag token does not
1946 match the tag name of the current node, this is a
1947 parse error. */
1948 // XERROR: implement this
1949
1950 /* Pop all the nodes from the current node up to
1951 node, including node, then stop these steps. */
1952 // XSKETCHY
1953 do {
1954 $pop = array_pop($this->stack);
1955 } while ($pop !== $node);
1956 break;
1957
1958 } else {
1959 $category = $this->getElementCategory($node);
1960
1961 if($category !== self::FORMATTING && $category !== self::PHRASING) {
1962 /* Otherwise, if node is in neither the formatting
1963 category nor the phrasing category, then this is a
1964 parse error. Stop this algorithm. The end tag token
1965 is ignored. */
1966 $this->ignored = true;
1967 break;
1968 // parse error
1969 }
1970 }
1971 /* Set node to the previous entry in the stack of open elements. Loop. */
1972 }
1973 break;
1974 }
1975 break;
1976 }
1977 break;
1978
1979 case self::IN_CDATA_RCDATA:
1980 if (
1981 $token['type'] === HTML5_Tokenizer::CHARACTER ||
1982 $token['type'] === HTML5_Tokenizer::SPACECHARACTER
1983 ) {
1984 $this->insertText($token['data']);
1985 } elseif ($token['type'] === HTML5_Tokenizer::EOF) {
1986 // parse error
1987 /* If the current node is a script element, mark the script
1988 * element as "already executed". */
1989 // probably not necessary
1990 array_pop($this->stack);
1991 $this->mode = $this->original_mode;
1992 $this->emitToken($token);
1993 } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'script') {
1994 array_pop($this->stack);
1995 $this->mode = $this->original_mode;
1996 // we're ignoring all of the execution stuff
1997 } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG) {
1998 array_pop($this->stack);
1999 $this->mode = $this->original_mode;
2000 }
2001 break;
2002
2003 case self::IN_TABLE:
2004 $clear = array('html', 'table');
2005
2006 /* A character token */
2007 if ($token['type'] === HTML5_Tokenizer::CHARACTER ||
2008 $token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
2009 /* Let the pending table character tokens
2010 * be an empty list of tokens. */
2011 $this->pendingTableCharacters = "";
2012 $this->pendingTableCharactersDirty = false;
2013 /* Let the original insertion mode be the current
2014 * insertion mode. */
2015 $this->original_mode = $this->mode;
2016 /* Switch the insertion mode to
2017 * "in table text" and
2018 * reprocess the token. */
2019 $this->mode = self::IN_TABLE_TEXT;
2020 $this->emitToken($token);
2021
2022 /* A comment token */
2023 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
2024 /* Append a Comment node to the current node with the data
2025 attribute set to the data given in the comment token. */
2026 $this->insertComment($token['data']);
2027
2028 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
2029 // parse error
2030
2031 /* A start tag whose tag name is "caption" */
2032 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2033 $token['name'] === 'caption') {
2034 /* Clear the stack back to a table context. */
2035 $this->clearStackToTableContext($clear);
2036
2037 /* Insert a marker at the end of the list of active
2038 formatting elements. */
2039 $this->a_formatting[] = self::MARKER;
2040
2041 /* Insert an HTML element for the token, then switch the
2042 insertion mode to "in caption". */
2043 $this->insertElement($token);
2044 $this->mode = self::IN_CAPTION;
2045
2046 /* A start tag whose tag name is "colgroup" */
2047 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2048 $token['name'] === 'colgroup') {
2049 /* Clear the stack back to a table context. */
2050 $this->clearStackToTableContext($clear);
2051
2052 /* Insert an HTML element for the token, then switch the
2053 insertion mode to "in column group". */
2054 $this->insertElement($token);
2055 $this->mode = self::IN_COLUMN_GROUP;
2056
2057 /* A start tag whose tag name is "col" */
2058 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2059 $token['name'] === 'col') {
2060 $this->emitToken(array(
2061 'name' => 'colgroup',
2062 'type' => HTML5_Tokenizer::STARTTAG,
2063 'attr' => array()
2064 ));
2065
2066 $this->emitToken($token);
2067
2068 /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */
2069 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'],
2070 array('tbody', 'tfoot', 'thead'))) {
2071 /* Clear the stack back to a table context. */
2072 $this->clearStackToTableContext($clear);
2073
2074 /* Insert an HTML element for the token, then switch the insertion
2075 mode to "in table body". */
2076 $this->insertElement($token);
2077 $this->mode = self::IN_TABLE_BODY;
2078
2079 /* A start tag whose tag name is one of: "td", "th", "tr" */
2080 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2081 in_array($token['name'], array('td', 'th', 'tr'))) {
2082 /* Act as if a start tag token with the tag name "tbody" had been
2083 seen, then reprocess the current token. */
2084 $this->emitToken(array(
2085 'name' => 'tbody',
2086 'type' => HTML5_Tokenizer::STARTTAG,
2087 'attr' => array()
2088 ));
2089
2090 $this->emitToken($token);
2091
2092 /* A start tag whose tag name is "table" */
2093 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2094 $token['name'] === 'table') {
2095 /* Parse error. Act as if an end tag token with the tag name "table"
2096 had been seen, then, if that token wasn't ignored, reprocess the
2097 current token. */
2098 $this->emitToken(array(
2099 'name' => 'table',
2100 'type' => HTML5_Tokenizer::ENDTAG
2101 ));
2102
2103 if (!$this->ignored) $this->emitToken($token);
2104
2105 /* An end tag whose tag name is "table" */
2106 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2107 $token['name'] === 'table') {
2108 /* If the stack of open elements does not have an element in table
2109 scope with the same tag name as the token, this is a parse error.
2110 Ignore the token. (fragment case) */
2111 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2112 $this->ignored = true;
2113
2114 /* Otherwise: */
2115 } else {
2116 do {
2117 $node = array_pop($this->stack);
2118 } while ($node->tagName !== 'table');
2119
2120 /* Reset the insertion mode appropriately. */
2121 $this->resetInsertionMode();
2122 }
2123
2124 /* An end tag whose tag name is one of: "body", "caption", "col",
2125 "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
2126 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'],
2127 array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td',
2128 'tfoot', 'th', 'thead', 'tr'))) {
2129 // Parse error. Ignore the token.
2130
2131 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2132 ($token['name'] === 'style' || $token['name'] === 'script')) {
2133 $this->processWithRulesFor($token, self::IN_HEAD);
2134
2135 } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'input' &&
2136 // assignment is intentional
2137 /* If the token does not have an attribute with the name "type", or
2138 * if it does, but that attribute's value is not an ASCII
2139 * case-insensitive match for the string "hidden", then: act as
2140 * described in the "anything else" entry below. */
2141 ($type = $this->getAttr($token, 'type')) && strtolower($type) === 'hidden') {
2142 // I.e., if its an input with the type attribute == 'hidden'
2143 /* Otherwise */
2144 // parse error
2145 $this->insertElement($token);
2146 array_pop($this->stack);
2147 } elseif ($token['type'] === HTML5_Tokenizer::EOF) {
2148 /* If the current node is not the root html element, then this is a parse error. */
2149 if (end($this->stack)->tagName !== 'html') {
2150 // Note: It can only be the current node in the fragment case.
2151 // parse error
2152 }
2153 /* Stop parsing. */
2154 /* Anything else */
2155 } else {
2156 /* Parse error. Process the token as if the insertion mode was "in
2157 body", with the following exception: */
2158
2159 $old = $this->foster_parent;
2160 $this->foster_parent = true;
2161 $this->processWithRulesFor($token, self::IN_BODY);
2162 $this->foster_parent = $old;
2163 }
2164 break;
2165
2166 case self::IN_TABLE_TEXT:
2167 /* A character token */
2168 if($token['type'] === HTML5_Tokenizer::CHARACTER) {
2169 /* Append the character token to the pending table
2170 * character tokens list. */
2171 $this->pendingTableCharacters .= $token['data'];
2172 $this->pendingTableCharactersDirty = true;
2173 } elseif ($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
2174 $this->pendingTableCharacters .= $token['data'];
2175 /* Anything else */
2176 } else {
2177 if ($this->pendingTableCharacters !== '' && is_string($this->pendingTableCharacters)) {
2178 /* If any of the tokens in the pending table character tokens list
2179 * are character tokens that are not one of U+0009 CHARACTER
2180 * TABULATION, U+000A LINE FEED (LF), U+000C FORM FEED (FF), or
2181 * U+0020 SPACE, then reprocess those character tokens using the
2182 * rules given in the "anything else" entry in the in table"
2183 * insertion mode.*/
2184 if ($this->pendingTableCharactersDirty) {
2185 /* Parse error. Process the token using the rules for the
2186 * "in body" insertion mode, except that if the current
2187 * node is a table, tbody, tfoot, thead, or tr element,
2188 * then, whenever a node would be inserted into the current
2189 * node, it must instead be foster parented. */
2190 // XERROR
2191 $old = $this->foster_parent;
2192 $this->foster_parent = true;
2193 $text_token = array(
2194 'type' => HTML5_Tokenizer::CHARACTER,
2195 'data' => $this->pendingTableCharacters,
2196 );
2197 $this->processWithRulesFor($text_token, self::IN_BODY);
2198 $this->foster_parent = $old;
2199
2200 /* Otherwise, insert the characters given by the pending table
2201 * character tokens list into the current node. */
2202 } else {
2203 $this->insertText($this->pendingTableCharacters);
2204 }
2205 $this->pendingTableCharacters = null;
2206 $this->pendingTableCharactersNull = null;
2207 }
2208
2209 /* Switch the insertion mode to the original insertion mode and
2210 * reprocess the token.
2211 */
2212 $this->mode = $this->original_mode;
2213 $this->emitToken($token);
2214 }
2215 break;
2216
2217 case self::IN_CAPTION:
2218 /* An end tag whose tag name is "caption" */
2219 if($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'caption') {
2220 /* If the stack of open elements does not have an element in table
2221 scope with the same tag name as the token, this is a parse error.
2222 Ignore the token. (fragment case) */
2223 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2224 $this->ignored = true;
2225 // Ignore
2226
2227 /* Otherwise: */
2228 } else {
2229 /* Generate implied end tags. */
2230 $this->generateImpliedEndTags();
2231
2232 /* Now, if the current node is not a caption element, then this
2233 is a parse error. */
2234 // XERROR: implement
2235
2236 /* Pop elements from this stack until a caption element has
2237 been popped from the stack. */
2238 do {
2239 $node = array_pop($this->stack);
2240 } while ($node->tagName !== 'caption');
2241
2242 /* Clear the list of active formatting elements up to the last
2243 marker. */
2244 $this->clearTheActiveFormattingElementsUpToTheLastMarker();
2245
2246 /* Switch the insertion mode to "in table". */
2247 $this->mode = self::IN_TABLE;
2248 }
2249
2250 /* A start tag whose tag name is one of: "caption", "col", "colgroup",
2251 "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag
2252 name is "table" */
2253 } elseif(($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'],
2254 array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
2255 'thead', 'tr'))) || ($token['type'] === HTML5_Tokenizer::ENDTAG &&
2256 $token['name'] === 'table')) {
2257 /* Parse error. Act as if an end tag with the tag name "caption"
2258 had been seen, then, if that token wasn't ignored, reprocess the
2259 current token. */
2260 $this->emitToken(array(
2261 'name' => 'caption',
2262 'type' => HTML5_Tokenizer::ENDTAG
2263 ));
2264
2265 if (!$this->ignored) $this->emitToken($token);
2266
2267 /* An end tag whose tag name is one of: "body", "col", "colgroup",
2268 "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
2269 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'],
2270 array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th',
2271 'thead', 'tr'))) {
2272 // Parse error. Ignore the token.
2273 $this->ignored = true;
2274
2275 /* Anything else */
2276 } else {
2277 /* Process the token as if the insertion mode was "in body". */
2278 $this->processWithRulesFor($token, self::IN_BODY);
2279 }
2280 break;
2281
2282 case self::IN_COLUMN_GROUP:
2283 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
2284 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
2285 or U+0020 SPACE */
2286 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
2287 /* Append the character to the current node. */
2288 $this->insertText($token['data']);
2289
2290 /* A comment token */
2291 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
2292 /* Append a Comment node to the current node with the data
2293 attribute set to the data given in the comment token. */
2294 $this->insertToken($token['data']);
2295
2296 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
2297 // parse error
2298
2299 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
2300 $this->processWithRulesFor($token, self::IN_BODY);
2301
2302 /* A start tag whose tag name is "col" */
2303 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'col') {
2304 /* Insert a col element for the token. Immediately pop the current
2305 node off the stack of open elements. */
2306 $this->insertElement($token);
2307 array_pop($this->stack);
2308 // XERROR: Acknowledge the token's self-closing flag, if it is set.
2309
2310 /* An end tag whose tag name is "colgroup" */
2311 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2312 $token['name'] === 'colgroup') {
2313 /* If the current node is the root html element, then this is a
2314 parse error, ignore the token. (fragment case) */
2315 if(end($this->stack)->tagName === 'html') {
2316 $this->ignored = true;
2317
2318 /* Otherwise, pop the current node (which will be a colgroup
2319 element) from the stack of open elements. Switch the insertion
2320 mode to "in table". */
2321 } else {
2322 array_pop($this->stack);
2323 $this->mode = self::IN_TABLE;
2324 }
2325
2326 /* An end tag whose tag name is "col" */
2327 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'col') {
2328 /* Parse error. Ignore the token. */
2329 $this->ignored = true;
2330
2331 /* An end-of-file token */
2332 /* If the current node is the root html element */
2333 } elseif($token['type'] === HTML5_Tokenizer::EOF && end($this->stack)->tagName === 'html') {
2334 /* Stop parsing */
2335
2336 /* Anything else */
2337 } else {
2338 /* Act as if an end tag with the tag name "colgroup" had been seen,
2339 and then, if that token wasn't ignored, reprocess the current token. */
2340 $this->emitToken(array(
2341 'name' => 'colgroup',
2342 'type' => HTML5_Tokenizer::ENDTAG
2343 ));
2344
2345 if (!$this->ignored) $this->emitToken($token);
2346 }
2347 break;
2348
2349 case self::IN_TABLE_BODY:
2350 $clear = array('tbody', 'tfoot', 'thead', 'html');
2351
2352 /* A start tag whose tag name is "tr" */
2353 if($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'tr') {
2354 /* Clear the stack back to a table body context. */
2355 $this->clearStackToTableContext($clear);
2356
2357 /* Insert a tr element for the token, then switch the insertion
2358 mode to "in row". */
2359 $this->insertElement($token);
2360 $this->mode = self::IN_ROW;
2361
2362 /* A start tag whose tag name is one of: "th", "td" */
2363 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2364 ($token['name'] === 'th' || $token['name'] === 'td')) {
2365 /* Parse error. Act as if a start tag with the tag name "tr" had
2366 been seen, then reprocess the current token. */
2367 $this->emitToken(array(
2368 'name' => 'tr',
2369 'type' => HTML5_Tokenizer::STARTTAG,
2370 'attr' => array()
2371 ));
2372
2373 $this->emitToken($token);
2374
2375 /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
2376 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2377 in_array($token['name'], array('tbody', 'tfoot', 'thead'))) {
2378 /* If the stack of open elements does not have an element in table
2379 scope with the same tag name as the token, this is a parse error.
2380 Ignore the token. */
2381 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2382 // Parse error
2383 $this->ignored = true;
2384
2385 /* Otherwise: */
2386 } else {
2387 /* Clear the stack back to a table body context. */
2388 $this->clearStackToTableContext($clear);
2389
2390 /* Pop the current node from the stack of open elements. Switch
2391 the insertion mode to "in table". */
2392 array_pop($this->stack);
2393 $this->mode = self::IN_TABLE;
2394 }
2395
2396 /* A start tag whose tag name is one of: "caption", "col", "colgroup",
2397 "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */
2398 } elseif(($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'],
2399 array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead'))) ||
2400 ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) {
2401 /* If the stack of open elements does not have a tbody, thead, or
2402 tfoot element in table scope, this is a parse error. Ignore the
2403 token. (fragment case) */
2404 if(!$this->elementInScope(array('tbody', 'thead', 'tfoot'), self::SCOPE_TABLE)) {
2405 // parse error
2406 $this->ignored = true;
2407
2408 /* Otherwise: */
2409 } else {
2410 /* Clear the stack back to a table body context. */
2411 $this->clearStackToTableContext($clear);
2412
2413 /* Act as if an end tag with the same tag name as the current
2414 node ("tbody", "tfoot", or "thead") had been seen, then
2415 reprocess the current token. */
2416 $this->emitToken(array(
2417 'name' => end($this->stack)->tagName,
2418 'type' => HTML5_Tokenizer::ENDTAG
2419 ));
2420
2421 $this->emitToken($token);
2422 }
2423
2424 /* An end tag whose tag name is one of: "body", "caption", "col",
2425 "colgroup", "html", "td", "th", "tr" */
2426 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'],
2427 array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) {
2428 /* Parse error. Ignore the token. */
2429 $this->ignored = true;
2430
2431 /* Anything else */
2432 } else {
2433 /* Process the token as if the insertion mode was "in table". */
2434 $this->processWithRulesFor($token, self::IN_TABLE);
2435 }
2436 break;
2437
2438 case self::IN_ROW:
2439 $clear = array('tr', 'html');
2440
2441 /* A start tag whose tag name is one of: "th", "td" */
2442 if($token['type'] === HTML5_Tokenizer::STARTTAG &&
2443 ($token['name'] === 'th' || $token['name'] === 'td')) {
2444 /* Clear the stack back to a table row context. */
2445 $this->clearStackToTableContext($clear);
2446
2447 /* Insert an HTML element for the token, then switch the insertion
2448 mode to "in cell". */
2449 $this->insertElement($token);
2450 $this->mode = self::IN_CELL;
2451
2452 /* Insert a marker at the end of the list of active formatting
2453 elements. */
2454 $this->a_formatting[] = self::MARKER;
2455
2456 /* An end tag whose tag name is "tr" */
2457 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'tr') {
2458 /* If the stack of open elements does not have an element in table
2459 scope with the same tag name as the token, this is a parse error.
2460 Ignore the token. (fragment case) */
2461 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2462 // Ignore.
2463 $this->ignored = true;
2464
2465 /* Otherwise: */
2466 } else {
2467 /* Clear the stack back to a table row context. */
2468 $this->clearStackToTableContext($clear);
2469
2470 /* Pop the current node (which will be a tr element) from the
2471 stack of open elements. Switch the insertion mode to "in table
2472 body". */
2473 array_pop($this->stack);
2474 $this->mode = self::IN_TABLE_BODY;
2475 }
2476
2477 /* A start tag whose tag name is one of: "caption", "col", "colgroup",
2478 "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */
2479 } elseif(($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'],
2480 array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) ||
2481 ($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'table')) {
2482 /* Act as if an end tag with the tag name "tr" had been seen, then,
2483 if that token wasn't ignored, reprocess the current token. */
2484 $this->emitToken(array(
2485 'name' => 'tr',
2486 'type' => HTML5_Tokenizer::ENDTAG
2487 ));
2488 if (!$this->ignored) $this->emitToken($token);
2489
2490 /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
2491 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2492 in_array($token['name'], array('tbody', 'tfoot', 'thead'))) {
2493 /* If the stack of open elements does not have an element in table
2494 scope with the same tag name as the token, this is a parse error.
2495 Ignore the token. */
2496 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2497 $this->ignored = true;
2498
2499 /* Otherwise: */
2500 } else {
2501 /* Otherwise, act as if an end tag with the tag name "tr" had
2502 been seen, then reprocess the current token. */
2503 $this->emitToken(array(
2504 'name' => 'tr',
2505 'type' => HTML5_Tokenizer::ENDTAG
2506 ));
2507
2508 $this->emitToken($token);
2509 }
2510
2511 /* An end tag whose tag name is one of: "body", "caption", "col",
2512 "colgroup", "html", "td", "th" */
2513 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'],
2514 array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th'))) {
2515 /* Parse error. Ignore the token. */
2516 $this->ignored = true;
2517
2518 /* Anything else */
2519 } else {
2520 /* Process the token as if the insertion mode was "in table". */
2521 $this->processWithRulesFor($token, self::IN_TABLE);
2522 }
2523 break;
2524
2525 case self::IN_CELL:
2526 /* An end tag whose tag name is one of: "td", "th" */
2527 if($token['type'] === HTML5_Tokenizer::ENDTAG &&
2528 ($token['name'] === 'td' || $token['name'] === 'th')) {
2529 /* If the stack of open elements does not have an element in table
2530 scope with the same tag name as that of the token, then this is a
2531 parse error and the token must be ignored. */
2532 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2533 $this->ignored = true;
2534
2535 /* Otherwise: */
2536 } else {
2537 /* Generate implied end tags, except for elements with the same
2538 tag name as the token. */
2539 $this->generateImpliedEndTags(array($token['name']));
2540
2541 /* Now, if the current node is not an element with the same tag
2542 name as the token, then this is a parse error. */
2543 // XERROR: Implement parse error code
2544
2545 /* Pop elements from this stack until an element with the same
2546 tag name as the token has been popped from the stack. */
2547 do {
2548 $node = array_pop($this->stack);
2549 } while ($node->tagName !== $token['name']);
2550
2551 /* Clear the list of active formatting elements up to the last
2552 marker. */
2553 $this->clearTheActiveFormattingElementsUpToTheLastMarker();
2554
2555 /* Switch the insertion mode to "in row". (The current node
2556 will be a tr element at this point.) */
2557 $this->mode = self::IN_ROW;
2558 }
2559
2560 /* A start tag whose tag name is one of: "caption", "col", "colgroup",
2561 "tbody", "td", "tfoot", "th", "thead", "tr" */
2562 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && in_array($token['name'],
2563 array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
2564 'thead', 'tr'))) {
2565 /* If the stack of open elements does not have a td or th element
2566 in table scope, then this is a parse error; ignore the token.
2567 (fragment case) */
2568 if(!$this->elementInScope(array('td', 'th'), self::SCOPE_TABLE)) {
2569 // parse error
2570 $this->ignored = true;
2571
2572 /* Otherwise, close the cell (see below) and reprocess the current
2573 token. */
2574 } else {
2575 $this->closeCell();
2576 $this->emitToken($token);
2577 }
2578
2579 /* An end tag whose tag name is one of: "body", "caption", "col",
2580 "colgroup", "html" */
2581 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'],
2582 array('body', 'caption', 'col', 'colgroup', 'html'))) {
2583 /* Parse error. Ignore the token. */
2584 $this->ignored = true;
2585
2586 /* An end tag whose tag name is one of: "table", "tbody", "tfoot",
2587 "thead", "tr" */
2588 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && in_array($token['name'],
2589 array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
2590 /* If the stack of open elements does not have a td or th element
2591 in table scope, then this is a parse error; ignore the token.
2592 (innerHTML case) */
2593 if(!$this->elementInScope(array('td', 'th'), self::SCOPE_TABLE)) {
2594 // Parse error
2595 $this->ignored = true;
2596
2597 /* Otherwise, close the cell (see below) and reprocess the current
2598 token. */
2599 } else {
2600 $this->closeCell();
2601 $this->emitToken($token);
2602 }
2603
2604 /* Anything else */
2605 } else {
2606 /* Process the token as if the insertion mode was "in body". */
2607 $this->processWithRulesFor($token, self::IN_BODY);
2608 }
2609 break;
2610
2611 case self::IN_SELECT:
2612 /* Handle the token as follows: */
2613
2614 /* A character token */
2615 if(
2616 $token['type'] === HTML5_Tokenizer::CHARACTER ||
2617 $token['type'] === HTML5_Tokenizer::SPACECHARACTER
2618 ) {
2619 /* Append the token's character to the current node. */
2620 $this->insertText($token['data']);
2621
2622 /* A comment token */
2623 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
2624 /* Append a Comment node to the current node with the data
2625 attribute set to the data given in the comment token. */
2626 $this->insertComment($token['data']);
2627
2628 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
2629 // parse error
2630
2631 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
2632 $this->processWithRulesFor($token, self::INBODY);
2633
2634 /* A start tag token whose tag name is "option" */
2635 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2636 $token['name'] === 'option') {
2637 /* If the current node is an option element, act as if an end tag
2638 with the tag name "option" had been seen. */
2639 if(end($this->stack)->tagName === 'option') {
2640 $this->emitToken(array(
2641 'name' => 'option',
2642 'type' => HTML5_Tokenizer::ENDTAG
2643 ));
2644 }
2645
2646 /* Insert an HTML element for the token. */
2647 $this->insertElement($token);
2648
2649 /* A start tag token whose tag name is "optgroup" */
2650 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2651 $token['name'] === 'optgroup') {
2652 /* If the current node is an option element, act as if an end tag
2653 with the tag name "option" had been seen. */
2654 if(end($this->stack)->tagName === 'option') {
2655 $this->emitToken(array(
2656 'name' => 'option',
2657 'type' => HTML5_Tokenizer::ENDTAG
2658 ));
2659 }
2660
2661 /* If the current node is an optgroup element, act as if an end tag
2662 with the tag name "optgroup" had been seen. */
2663 if(end($this->stack)->tagName === 'optgroup') {
2664 $this->emitToken(array(
2665 'name' => 'optgroup',
2666 'type' => HTML5_Tokenizer::ENDTAG
2667 ));
2668 }
2669
2670 /* Insert an HTML element for the token. */
2671 $this->insertElement($token);
2672
2673 /* An end tag token whose tag name is "optgroup" */
2674 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2675 $token['name'] === 'optgroup') {
2676 /* First, if the current node is an option element, and the node
2677 immediately before it in the stack of open elements is an optgroup
2678 element, then act as if an end tag with the tag name "option" had
2679 been seen. */
2680 $elements_in_stack = count($this->stack);
2681
2682 if($this->stack[$elements_in_stack - 1]->tagName === 'option' &&
2683 $this->stack[$elements_in_stack - 2]->tagName === 'optgroup') {
2684 $this->emitToken(array(
2685 'name' => 'option',
2686 'type' => HTML5_Tokenizer::ENDTAG
2687 ));
2688 }
2689
2690 /* If the current node is an optgroup element, then pop that node
2691 from the stack of open elements. Otherwise, this is a parse error,
2692 ignore the token. */
2693 if(end($this->stack)->tagName === 'optgroup') {
2694 array_pop($this->stack);
2695 } else {
2696 // parse error
2697 $this->ignored = true;
2698 }
2699
2700 /* An end tag token whose tag name is "option" */
2701 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2702 $token['name'] === 'option') {
2703 /* If the current node is an option element, then pop that node
2704 from the stack of open elements. Otherwise, this is a parse error,
2705 ignore the token. */
2706 if(end($this->stack)->tagName === 'option') {
2707 array_pop($this->stack);
2708 } else {
2709 // parse error
2710 $this->ignored = true;
2711 }
2712
2713 /* An end tag whose tag name is "select" */
2714 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2715 $token['name'] === 'select') {
2716 /* If the stack of open elements does not have an element in table
2717 scope with the same tag name as the token, this is a parse error.
2718 Ignore the token. (fragment case) */
2719 if(!$this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2720 $this->ignored = true;
2721 // parse error
2722
2723 /* Otherwise: */
2724 } else {
2725 /* Pop elements from the stack of open elements until a select
2726 element has been popped from the stack. */
2727 do {
2728 $node = array_pop($this->stack);
2729 } while ($node->tagName !== 'select');
2730
2731 /* Reset the insertion mode appropriately. */
2732 $this->resetInsertionMode();
2733 }
2734
2735 /* A start tag whose tag name is "select" */
2736 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'select') {
2737 /* Parse error. Act as if the token had been an end tag with the
2738 tag name "select" instead. */
2739 $this->emitToken(array(
2740 'name' => 'select',
2741 'type' => HTML5_Tokenizer::ENDTAG
2742 ));
2743
2744 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
2745 ($token['name'] === 'input' || $token['name'] === 'keygen' || $token['name'] === 'textarea')) {
2746 // parse error
2747 $this->emitToken(array(
2748 'name' => 'select',
2749 'type' => HTML5_Tokenizer::ENDTAG
2750 ));
2751 $this->emitToken($token);
2752
2753 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'script') {
2754 $this->processWithRulesFor($token, self::IN_HEAD);
2755
2756 } elseif($token['type'] === HTML5_Tokenizer::EOF) {
2757 // XERROR: If the current node is not the root html element, then this is a parse error.
2758 /* Stop parsing */
2759
2760 /* Anything else */
2761 } else {
2762 /* Parse error. Ignore the token. */
2763 $this->ignored = true;
2764 }
2765 break;
2766
2767 case self::IN_SELECT_IN_TABLE:
2768
2769 if($token['type'] === HTML5_Tokenizer::STARTTAG &&
2770 in_array($token['name'], array('caption', 'table', 'tbody',
2771 'tfoot', 'thead', 'tr', 'td', 'th'))) {
2772 // parse error
2773 $this->emitToken(array(
2774 'name' => 'select',
2775 'type' => HTML5_Tokenizer::ENDTAG,
2776 ));
2777 $this->emitToken($token);
2778
2779 /* An end tag whose tag name is one of: "caption", "table", "tbody",
2780 "tfoot", "thead", "tr", "td", "th" */
2781 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
2782 in_array($token['name'], array('caption', 'table', 'tbody', 'tfoot', 'thead', 'tr', 'td', 'th'))) {
2783 /* Parse error. */
2784 // parse error
2785
2786 /* If the stack of open elements has an element in table scope with
2787 the same tag name as that of the token, then act as if an end tag
2788 with the tag name "select" had been seen, and reprocess the token.
2789 Otherwise, ignore the token. */
2790 if($this->elementInScope($token['name'], self::SCOPE_TABLE)) {
2791 $this->emitToken(array(
2792 'name' => 'select',
2793 'type' => HTML5_Tokenizer::ENDTAG
2794 ));
2795
2796 $this->emitToken($token);
2797 } else {
2798 $this->ignored = true;
2799 }
2800 } else {
2801 $this->processWithRulesFor($token, self::IN_SELECT);
2802 }
2803 break;
2804
2805 case self::IN_FOREIGN_CONTENT:
2806 if ($token['type'] === HTML5_Tokenizer::CHARACTER ||
2807 $token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
2808 $this->insertText($token['data']);
2809 } elseif ($token['type'] === HTML5_Tokenizer::COMMENT) {
2810 $this->insertComment($token['data']);
2811 } elseif ($token['type'] === HTML5_Tokenizer::DOCTYPE) {
2812 // XERROR: parse error
2813 } elseif ($token['type'] === HTML5_Tokenizer::ENDTAG &&
2814 $token['name'] === 'script' && end($this->stack)->tagName === 'script' &&
2815 // XDOM
2816 end($this->stack)->namespaceURI === self::NS_SVG) {
2817 array_pop($this->stack);
2818 // a bunch of script running mumbo jumbo
2819 } elseif (
2820 ($token['type'] === HTML5_Tokenizer::STARTTAG &&
2821 ((
2822 $token['name'] !== 'mglyph' &&
2823 $token['name'] !== 'malignmark' &&
2824 // XDOM
2825 end($this->stack)->namespaceURI === self::NS_MATHML &&
2826 in_array(end($this->stack)->tagName, array('mi', 'mo', 'mn', 'ms', 'mtext'))
2827 ) ||
2828 (
2829 $token['name'] === 'svg' &&
2830 // XDOM
2831 end($this->stack)->namespaceURI === self::NS_MATHML &&
2832 end($this->stack)->tagName === 'annotation-xml'
2833 ) ||
2834 (
2835 // XDOM
2836 end($this->stack)->namespaceURI === self::NS_SVG &&
2837 in_array(end($this->stack)->tagName, array('foreignObject', 'desc', 'title'))
2838 ) ||
2839 (
2840 // XSKETCHY && XDOM
2841 end($this->stack)->namespaceURI === self::NS_HTML
2842 ))
2843 ) || $token['type'] === HTML5_Tokenizer::ENDTAG
2844 ) {
2845 $this->processWithRulesFor($token, $this->secondary_mode);
2846 /* If, after doing so, the insertion mode is still "in foreign
2847 * content", but there is no element in scope that has a namespace
2848 * other than the HTML namespace, switch the insertion mode to the
2849 * secondary insertion mode. */
2850 if ($this->mode === self::IN_FOREIGN_CONTENT) {
2851 $found = false;
2852 // this basically duplicates elementInScope()
2853 for ($i = count($this->stack) - 1; $i >= 0; $i--) {
2854 // XDOM
2855 $node = $this->stack[$i];
2856 if ($node->namespaceURI !== self::NS_HTML) {
2857 $found = true;
2858 break;
2859 } elseif (in_array($node->tagName, array('table', 'html',
2860 'applet', 'caption', 'td', 'th', 'button', 'marquee',
2861 'object')) || ($node->tagName === 'foreignObject' &&
2862 $node->namespaceURI === self::NS_SVG)) {
2863 break;
2864 }
2865 }
2866 if (!$found) {
2867 $this->mode = $this->secondary_mode;
2868 }
2869 }
2870 } elseif ($token['type'] === HTML5_Tokenizer::EOF || (
2871 $token['type'] === HTML5_Tokenizer::STARTTAG &&
2872 (in_array($token['name'], array('b', "big", "blockquote", "body", "br",
2873 "center", "code", "dc", "dd", "div", "dl", "ds", "dt", "em", "embed", "h1", "h2",
2874 "h3", "h4", "h5", "h6", "head", "hr", "i", "img", "li", "listing",
2875 "menu", "meta", "nobr", "ol", "p", "pre", "ruby", "s", "small",
2876 "span", "strong", "strike", "sub", "sup", "table", "tt", "u", "ul",
2877 "var")) || ($token['name'] === 'font' && ($this->getAttr($token, 'color') ||
2878 $this->getAttr($token, 'face') || $this->getAttr($token, 'size')))))) {
2879 // XERROR: parse error
2880 do {
2881 $node = array_pop($this->stack);
2882 // XDOM
2883 } while ($node->namespaceURI !== self::NS_HTML);
2884 $this->stack[] = $node;
2885 $this->mode = $this->secondary_mode;
2886 $this->emitToken($token);
2887 } elseif ($token['type'] === HTML5_Tokenizer::STARTTAG) {
2888 static $svg_lookup = array(
2889 'altglyph' => 'altGlyph',
2890 'altglyphdef' => 'altGlyphDef',
2891 'altglyphitem' => 'altGlyphItem',
2892 'animatecolor' => 'animateColor',
2893 'animatemotion' => 'animateMotion',
2894 'animatetransform' => 'animateTransform',
2895 'clippath' => 'clipPath',
2896 'feblend' => 'feBlend',
2897 'fecolormatrix' => 'feColorMatrix',
2898 'fecomponenttransfer' => 'feComponentTransfer',
2899 'fecomposite' => 'feComposite',
2900 'feconvolvematrix' => 'feConvolveMatrix',
2901 'fediffuselighting' => 'feDiffuseLighting',
2902 'fedisplacementmap' => 'feDisplacementMap',
2903 'fedistantlight' => 'feDistantLight',
2904 'feflood' => 'feFlood',
2905 'fefunca' => 'feFuncA',
2906 'fefuncb' => 'feFuncB',
2907 'fefuncg' => 'feFuncG',
2908 'fefuncr' => 'feFuncR',
2909 'fegaussianblur' => 'feGaussianBlur',
2910 'feimage' => 'feImage',
2911 'femerge' => 'feMerge',
2912 'femergenode' => 'feMergeNode',
2913 'femorphology' => 'feMorphology',
2914 'feoffset' => 'feOffset',
2915 'fepointlight' => 'fePointLight',
2916 'fespecularlighting' => 'feSpecularLighting',
2917 'fespotlight' => 'feSpotLight',
2918 'fetile' => 'feTile',
2919 'feturbulence' => 'feTurbulence',
2920 'foreignobject' => 'foreignObject',
2921 'glyphref' => 'glyphRef',
2922 'lineargradient' => 'linearGradient',
2923 'radialgradient' => 'radialGradient',
2924 'textpath' => 'textPath',
2925 );
2926 // XDOM
2927 $current = end($this->stack);
2928 if ($current->namespaceURI === self::NS_MATHML) {
2929 $token = $this->adjustMathMLAttributes($token);
2930 }
2931 if ($current->namespaceURI === self::NS_SVG &&
2932 isset($svg_lookup[$token['name']])) {
2933 $token['name'] = $svg_lookup[$token['name']];
2934 }
2935 if ($current->namespaceURI === self::NS_SVG) {
2936 $token = $this->adjustSVGAttributes($token);
2937 }
2938 $token = $this->adjustForeignAttributes($token);
2939 $this->insertForeignElement($token, $current->namespaceURI);
2940 if (isset($token['self-closing'])) {
2941 array_pop($this->stack);
2942 // XERROR: acknowledge self-closing flag
2943 }
2944 }
2945 break;
2946
2947 case self::AFTER_BODY:
2948 /* Handle the token as follows: */
2949
2950 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
2951 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
2952 or U+0020 SPACE */
2953 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
2954 /* Process the token as it would be processed if the insertion mode
2955 was "in body". */
2956 $this->processWithRulesFor($token, self::IN_BODY);
2957
2958 /* A comment token */
2959 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
2960 /* Append a Comment node to the first element in the stack of open
2961 elements (the html element), with the data attribute set to the
2962 data given in the comment token. */
2963 // XDOM
2964 $comment = $this->dom->createComment($token['data']);
2965 $this->stack[0]->appendChild($comment);
2966
2967 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
2968 // parse error
2969
2970 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
2971 $this->processWithRulesFor($token, self::IN_BODY);
2972
2973 /* An end tag with the tag name "html" */
2974 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG && $token['name'] === 'html') {
2975 /* If the parser was originally created as part of the HTML
2976 * fragment parsing algorithm, this is a parse error; ignore
2977 * the token. (fragment case) */
2978 $this->ignored = true;
2979 // XERROR: implement this
2980
2981 $this->mode = self::AFTER_AFTER_BODY;
2982
2983 } elseif($token['type'] === HTML5_Tokenizer::EOF) {
2984 /* Stop parsing */
2985
2986 /* Anything else */
2987 } else {
2988 /* Parse error. Set the insertion mode to "in body" and reprocess
2989 the token. */
2990 $this->mode = self::IN_BODY;
2991 $this->emitToken($token);
2992 }
2993 break;
2994
2995 case self::IN_FRAMESET:
2996 /* Handle the token as follows: */
2997
2998 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
2999 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
3000 U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
3001 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
3002 /* Append the character to the current node. */
3003 $this->insertText($token['data']);
3004
3005 /* A comment token */
3006 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
3007 /* Append a Comment node to the current node with the data
3008 attribute set to the data given in the comment token. */
3009 $this->insertComment($token['data']);
3010
3011 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
3012 // parse error
3013
3014 /* A start tag with the tag name "frameset" */
3015 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
3016 $token['name'] === 'frameset') {
3017 $this->insertElement($token);
3018
3019 /* An end tag with the tag name "frameset" */
3020 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
3021 $token['name'] === 'frameset') {
3022 /* If the current node is the root html element, then this is a
3023 parse error; ignore the token. (fragment case) */
3024 if(end($this->stack)->tagName === 'html') {
3025 $this->ignored = true;
3026 // Parse error
3027
3028 } else {
3029 /* Otherwise, pop the current node from the stack of open
3030 elements. */
3031 array_pop($this->stack);
3032
3033 /* If the parser was not originally created as part of the HTML
3034 * fragment parsing algorithm (fragment case), and the current
3035 * node is no longer a frameset element, then switch the
3036 * insertion mode to "after frameset". */
3037 $this->mode = self::AFTER_FRAMESET;
3038 }
3039
3040 /* A start tag with the tag name "frame" */
3041 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
3042 $token['name'] === 'frame') {
3043 /* Insert an HTML element for the token. */
3044 $this->insertElement($token);
3045
3046 /* Immediately pop the current node off the stack of open elements. */
3047 array_pop($this->stack);
3048
3049 // XERROR: Acknowledge the token's self-closing flag, if it is set.
3050
3051 /* A start tag with the tag name "noframes" */
3052 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
3053 $token['name'] === 'noframes') {
3054 /* Process the token using the rules for the "in head" insertion mode. */
3055 $this->processwithRulesFor($token, self::IN_HEAD);
3056
3057 } elseif($token['type'] === HTML5_Tokenizer::EOF) {
3058 // XERROR: If the current node is not the root html element, then this is a parse error.
3059 /* Stop parsing */
3060 /* Anything else */
3061 } else {
3062 /* Parse error. Ignore the token. */
3063 $this->ignored = true;
3064 }
3065 break;
3066
3067 case self::AFTER_FRAMESET:
3068 /* Handle the token as follows: */
3069
3070 /* A character token that is one of one of U+0009 CHARACTER TABULATION,
3071 U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
3072 U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
3073 if($token['type'] === HTML5_Tokenizer::SPACECHARACTER) {
3074 /* Append the character to the current node. */
3075 $this->insertText($token['data']);
3076
3077 /* A comment token */
3078 } elseif($token['type'] === HTML5_Tokenizer::COMMENT) {
3079 /* Append a Comment node to the current node with the data
3080 attribute set to the data given in the comment token. */
3081 $this->insertComment($token['data']);
3082
3083 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE) {
3084 // parse error
3085
3086 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html') {
3087 $this->processWithRulesFor($token, self::IN_BODY);
3088
3089 /* An end tag with the tag name "html" */
3090 } elseif($token['type'] === HTML5_Tokenizer::ENDTAG &&
3091 $token['name'] === 'html') {
3092 $this->mode = self::AFTER_AFTER_FRAMESET;
3093
3094 /* A start tag with the tag name "noframes" */
3095 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG &&
3096 $token['name'] === 'noframes') {
3097 $this->processWithRulesFor($token, self::IN_HEAD);
3098
3099 } elseif($token['type'] === HTML5_Tokenizer::EOF) {
3100 /* Stop parsing */
3101
3102 /* Anything else */
3103 } else {
3104 /* Parse error. Ignore the token. */
3105 $this->ignored = true;
3106 }
3107 break;
3108
3109 case self::AFTER_AFTER_BODY:
3110 /* A comment token */
3111 if($token['type'] === HTML5_Tokenizer::COMMENT) {
3112 /* Append a Comment node to the Document object with the data
3113 attribute set to the data given in the comment token. */
3114 // XDOM
3115 $comment = $this->dom->createComment($token['data']);
3116 $this->dom->appendChild($comment);
3117
3118 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE ||
3119 $token['type'] === HTML5_Tokenizer::SPACECHARACTER ||
3120 ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html')) {
3121 $this->processWithRulesFor($token, self::IN_BODY);
3122
3123 /* An end-of-file token */
3124 } elseif($token['type'] === HTML5_Tokenizer::EOF) {
3125 /* OMG DONE!! */
3126 } else {
3127 // parse error
3128 $this->mode = self::IN_BODY;
3129 $this->emitToken($token);
3130 }
3131 break;
3132
3133 case self::AFTER_AFTER_FRAMESET:
3134 /* A comment token */
3135 if($token['type'] === HTML5_Tokenizer::COMMENT) {
3136 /* Append a Comment node to the Document object with the data
3137 attribute set to the data given in the comment token. */
3138 // XDOM
3139 $comment = $this->dom->createComment($token['data']);
3140 $this->dom->appendChild($comment);
3141
3142 } elseif($token['type'] === HTML5_Tokenizer::DOCTYPE ||
3143 $token['type'] === HTML5_Tokenizer::SPACECHARACTER ||
3144 ($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'html')) {
3145 $this->processWithRulesFor($token, self::IN_BODY);
3146
3147 /* An end-of-file token */
3148 } elseif($token['type'] === HTML5_Tokenizer::EOF) {
3149 /* OMG DONE!! */
3150 } elseif($token['type'] === HTML5_Tokenizer::STARTTAG && $token['name'] === 'nofrmaes') {
3151 $this->processWithRulesFor($token, self::IN_HEAD);
3152 } else {
3153 // parse error
3154 }
3155 break;
3156 }
3157 // end funky indenting
3158 }
3159
3160 private function insertElement($token, $append = true) {
3161 //$el = $this->dom->createElementNS(self::NS_HTML, $token['name']);
3162 $namespaceURI = strpos($token['name'], ':') ? self::NS_XHTML : self::NS_HTML;
3163 $el = $this->dom->createElementNS($namespaceURI, $token['name']);
3164
3165 if (!empty($token['attr'])) {
3166 foreach($token['attr'] as $attr) {
3167
3168 // mike@macgirvin.com 2011-11-17, check attribute name for
3169 // validity (ignoring extenders and combiners) as illegal chars in names
3170 // causes everything to abort
3171
3172 $valid = preg_match('/^[a-zA-Z\_\:]([\-a-zA-Z0-9\_\:\.]+$)/',$attr['name']);
3173 if($attr['name'] && (!$el->hasAttribute($attr['name'])) && ($valid)) {
3174 $el->setAttribute($attr['name'], $attr['value']);
3175 }
3176 }
3177 }
3178 if ($append) {
3179 $this->appendToRealParent($el);
3180 $this->stack[] = $el;
3181 }
3182
3183 return $el;
3184 }
3185
3186 private function insertText($data) {
3187 if ($data === '') return;
3188 if ($this->ignore_lf_token) {
3189 if ($data[0] === "\n") {
3190 $data = substr($data, 1);
3191 if ($data === false) return;
3192 }
3193 }
3194 $text = $this->dom->createTextNode($data);
3195 $this->appendToRealParent($text);
3196 }
3197
3198 private function insertComment($data) {
3199 $comment = $this->dom->createComment($data);
3200 $this->appendToRealParent($comment);
3201 }
3202
3203 private function appendToRealParent($node) {
3204 // this is only for the foster_parent case
3205 /* If the current node is a table, tbody, tfoot, thead, or tr
3206 element, then, whenever a node would be inserted into the current
3207 node, it must instead be inserted into the foster parent element. */
3208 if(!$this->foster_parent || !in_array(end($this->stack)->tagName,
3209 array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
3210 end($this->stack)->appendChild($node);
3211 } else {
3212 $this->fosterParent($node);
3213 }
3214 }
3215
3216 private function elementInScope($el, $scope = self::SCOPE) {
3217 if(is_array($el)) {
3218 foreach($el as $element) {
3219 if($this->elementInScope($element, $scope)) {
3220 return true;
3221 }
3222 }
3223
3224 return false;
3225 }
3226
3227 $leng = count($this->stack);
3228
3229 for($n = 0; $n < $leng; $n++) {
3230 /* 1. Initialise node to be the current node (the bottommost node of
3231 the stack). */
3232 $node = $this->stack[$leng - 1 - $n];
3233
3234 if($node->tagName === $el) {
3235 /* 2. If node is the target node, terminate in a match state. */
3236 return true;
3237
3238 // We've expanded the logic for these states a little differently;
3239 // Hixie's refactoring into "specific scope" is more general, but
3240 // this "gets the job done"
3241
3242 // these are the common states for all scopes
3243 } elseif($node->tagName === 'table' || $node->tagName === 'html') {
3244 return false;
3245
3246 // these are valid for "in scope" and "in list item scope"
3247 } elseif($scope !== self::SCOPE_TABLE &&
3248 (in_array($node->tagName, array('applet', 'caption', 'td',
3249 'th', 'button', 'marquee', 'object')) ||
3250 $node->tagName === 'foreignObject' && $node->namespaceURI === self::NS_SVG)) {
3251 return false;
3252
3253
3254 // these are valid for "in list item scope"
3255 } elseif($scope === self::SCOPE_LISTITEM && in_array($node->tagName, array('ol', 'ul'))) {
3256 return false;
3257 }
3258
3259 /* Otherwise, set node to the previous entry in the stack of open
3260 elements and return to step 2. (This will never fail, since the loop
3261 will always terminate in the previous step if the top of the stack
3262 is reached.) */
3263 }
3264 }
3265
3266 private function reconstructActiveFormattingElements() {
3267 /* 1. If there are no entries in the list of active formatting elements,
3268 then there is nothing to reconstruct; stop this algorithm. */
3269 $formatting_elements = count($this->a_formatting);
3270
3271 if($formatting_elements === 0) {
3272 return false;
3273 }
3274
3275 /* 3. Let entry be the last (most recently added) element in the list
3276 of active formatting elements. */
3277 $entry = end($this->a_formatting);
3278
3279 /* 2. If the last (most recently added) entry in the list of active
3280 formatting elements is a marker, or if it is an element that is in the
3281 stack of open elements, then there is nothing to reconstruct; stop this
3282 algorithm. */
3283 if($entry === self::MARKER || in_array($entry, $this->stack, true)) {
3284 return false;
3285 }
3286
3287 for($a = $formatting_elements - 1; $a >= 0; true) {
3288 /* 4. If there are no entries before entry in the list of active
3289 formatting elements, then jump to step 8. */
3290 if($a === 0) {
3291 $step_seven = false;
3292 break;
3293 }
3294
3295 /* 5. Let entry be the entry one earlier than entry in the list of
3296 active formatting elements. */
3297 $a--;
3298 $entry = $this->a_formatting[$a];
3299
3300 /* 6. If entry is neither a marker nor an element that is also in
3301 thetack of open elements, go to step 4. */
3302 if($entry === self::MARKER || in_array($entry, $this->stack, true)) {
3303 break;
3304 }
3305 }
3306
3307 while(true) {
3308 /* 7. Let entry be the element one later than entry in the list of
3309 active formatting elements. */
3310 if(isset($step_seven) && $step_seven === true) {
3311 $a++;
3312 $entry = $this->a_formatting[$a];
3313 }
3314
3315 /* 8. Perform a shallow clone of the element entry to obtain clone. */
3316 $clone = $entry->cloneNode();
3317
3318 /* 9. Append clone to the current node and push it onto the stack
3319 of open elements so that it is the new current node. */
3320 $this->appendToRealParent($clone);
3321 $this->stack[] = $clone;
3322
3323 /* 10. Replace the entry for entry in the list with an entry for
3324 clone. */
3325 $this->a_formatting[$a] = $clone;
3326
3327 /* 11. If the entry for clone in the list of active formatting
3328 elements is not the last entry in the list, return to step 7. */
3329 if(end($this->a_formatting) !== $clone) {
3330 $step_seven = true;
3331 } else {
3332 break;
3333 }
3334 }
3335 }
3336
3337 private function clearTheActiveFormattingElementsUpToTheLastMarker() {
3338 /* When the steps below require the UA to clear the list of active
3339 formatting elements up to the last marker, the UA must perform the
3340 following steps: */
3341
3342 while(true) {
3343 /* 1. Let entry be the last (most recently added) entry in the list
3344 of active formatting elements. */
3345 $entry = end($this->a_formatting);
3346
3347 /* 2. Remove entry from the list of active formatting elements. */
3348 array_pop($this->a_formatting);
3349
3350 /* 3. If entry was a marker, then stop the algorithm at this point.
3351 The list has been cleared up to the last marker. */
3352 if($entry === self::MARKER) {
3353 break;
3354 }
3355 }
3356 }
3357
3358 private function generateImpliedEndTags($exclude = array()) {
3359 /* When the steps below require the UA to generate implied end tags,
3360 * then, while the current node is a dc element, a dd element, a ds
3361 * element, a dt element, an li element, an option element, an optgroup
3362 * element, a p element, an rp element, or an rt element, the UA must
3363 * pop the current node off the stack of open elements. */
3364 $node = end($this->stack);
3365 $elements = array_diff(array('dc', 'dd', 'ds', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude);
3366
3367 while(in_array(end($this->stack)->tagName, $elements)) {
3368 array_pop($this->stack);
3369 }
3370 }
3371
3372 private function getElementCategory($node) {
3373 if (!is_object($node)) debug_print_backtrace();
3374 $name = $node->tagName;
3375 if(in_array($name, $this->special))
3376 return self::SPECIAL;
3377
3378 elseif(in_array($name, $this->scoping))
3379 return self::SCOPING;
3380
3381 elseif(in_array($name, $this->formatting))
3382 return self::FORMATTING;
3383
3384 else
3385 return self::PHRASING;
3386 }
3387
3388 private function clearStackToTableContext($elements) {
3389 /* When the steps above require the UA to clear the stack back to a
3390 table context, it means that the UA must, while the current node is not
3391 a table element or an html element, pop elements from the stack of open
3392 elements. */
3393 while(true) {
3394 $name = end($this->stack)->tagName;
3395
3396 if(in_array($name, $elements)) {
3397 break;
3398 } else {
3399 array_pop($this->stack);
3400 }
3401 }
3402 }
3403
3404 private function resetInsertionMode($context = null) {
3405 /* 1. Let last be false. */
3406 $last = false;
3407 $leng = count($this->stack);
3408
3409 for($n = $leng - 1; $n >= 0; $n--) {
3410 /* 2. Let node be the last node in the stack of open elements. */
3411 $node = $this->stack[$n];
3412
3413 /* 3. If node is the first node in the stack of open elements, then
3414 * set last to true and set node to the context element. (fragment
3415 * case) */
3416 if($this->stack[0]->isSameNode($node)) {
3417 $last = true;
3418 $node = $context;
3419 }
3420
3421 /* 4. If node is a select element, then switch the insertion mode to
3422 "in select" and abort these steps. (fragment case) */
3423 if($node->tagName === 'select') {
3424 $this->mode = self::IN_SELECT;
3425 break;
3426
3427 /* 5. If node is a td or th element, then switch the insertion mode
3428 to "in cell" and abort these steps. */
3429 } elseif($node->tagName === 'td' || $node->nodeName === 'th') {
3430 $this->mode = self::IN_CELL;
3431 break;
3432
3433 /* 6. If node is a tr element, then switch the insertion mode to
3434 "in row" and abort these steps. */
3435 } elseif($node->tagName === 'tr') {
3436 $this->mode = self::IN_ROW;
3437 break;
3438
3439 /* 7. If node is a tbody, thead, or tfoot element, then switch the
3440 insertion mode to "in table body" and abort these steps. */
3441 } elseif(in_array($node->tagName, array('tbody', 'thead', 'tfoot'))) {
3442 $this->mode = self::IN_TABLE_BODY;
3443 break;
3444
3445 /* 8. If node is a caption element, then switch the insertion mode
3446 to "in caption" and abort these steps. */
3447 } elseif($node->tagName === 'caption') {
3448 $this->mode = self::IN_CAPTION;
3449 break;
3450
3451 /* 9. If node is a colgroup element, then switch the insertion mode
3452 to "in column group" and abort these steps. (innerHTML case) */
3453 } elseif($node->tagName === 'colgroup') {
3454 $this->mode = self::IN_COLUMN_GROUP;
3455 break;
3456
3457 /* 10. If node is a table element, then switch the insertion mode
3458 to "in table" and abort these steps. */
3459 } elseif($node->tagName === 'table') {
3460 $this->mode = self::IN_TABLE;
3461 break;
3462
3463 /* 11. If node is an element from the MathML namespace or the SVG
3464 * namespace, then switch the insertion mode to "in foreign
3465 * content", let the secondary insertion mode be "in body", and
3466 * abort these steps. */
3467 } elseif($node->namespaceURI === self::NS_SVG ||
3468 $node->namespaceURI === self::NS_MATHML) {
3469 $this->mode = self::IN_FOREIGN_CONTENT;
3470 $this->secondary_mode = self::IN_BODY;
3471 break;
3472
3473 /* 12. If node is a head element, then switch the insertion mode
3474 to "in body" ("in body"! not "in head"!) and abort these steps.
3475 (fragment case) */
3476 } elseif($node->tagName === 'head') {
3477 $this->mode = self::IN_BODY;
3478 break;
3479
3480 /* 13. If node is a body element, then switch the insertion mode to
3481 "in body" and abort these steps. */
3482 } elseif($node->tagName === 'body') {
3483 $this->mode = self::IN_BODY;
3484 break;
3485
3486 /* 14. If node is a frameset element, then switch the insertion
3487 mode to "in frameset" and abort these steps. (fragment case) */
3488 } elseif($node->tagName === 'frameset') {
3489 $this->mode = self::IN_FRAMESET;
3490 break;
3491
3492 /* 15. If node is an html element, then: if the head element
3493 pointer is null, switch the insertion mode to "before head",
3494 otherwise, switch the insertion mode to "after head". In either
3495 case, abort these steps. (fragment case) */
3496 } elseif($node->tagName === 'html') {
3497 $this->mode = ($this->head_pointer === null)
3498 ? self::BEFORE_HEAD
3499 : self::AFTER_HEAD;
3500
3501 break;
3502
3503 /* 16. If last is true, then set the insertion mode to "in body"
3504 and abort these steps. (fragment case) */
3505 } elseif($last) {
3506 $this->mode = self::IN_BODY;
3507 break;
3508 }
3509 }
3510 }
3511
3512 private function closeCell() {
3513 /* If the stack of open elements has a td or th element in table scope,
3514 then act as if an end tag token with that tag name had been seen. */
3515 foreach(array('td', 'th') as $cell) {
3516 if($this->elementInScope($cell, self::SCOPE_TABLE)) {
3517 $this->emitToken(array(
3518 'name' => $cell,
3519 'type' => HTML5_Tokenizer::ENDTAG
3520 ));
3521
3522 break;
3523 }
3524 }
3525 }
3526
3527 private function processWithRulesFor($token, $mode) {
3528 /* "using the rules for the m insertion mode", where m is one of these
3529 * modes, the user agent must use the rules described under the m
3530 * insertion mode's section, but must leave the insertion mode
3531 * unchanged unless the rules in m themselves switch the insertion mode
3532 * to a new value. */
3533 return $this->emitToken($token, $mode);
3534 }
3535
3536 private function insertCDATAElement($token) {
3537 $this->insertElement($token);
3538 $this->original_mode = $this->mode;
3539 $this->mode = self::IN_CDATA_RCDATA;
3540 $this->content_model = HTML5_Tokenizer::CDATA;
3541 }
3542
3543 private function insertRCDATAElement($token) {
3544 $this->insertElement($token);
3545 $this->original_mode = $this->mode;
3546 $this->mode = self::IN_CDATA_RCDATA;
3547 $this->content_model = HTML5_Tokenizer::RCDATA;
3548 }
3549
3550 private function getAttr($token, $key) {
3551 if (!isset($token['attr'])) return false;
3552 $ret = false;
3553 foreach ($token['attr'] as $keypair) {
3554 if ($keypair['name'] === $key) $ret = $keypair['value'];
3555 }
3556 return $ret;
3557 }
3558
3559 private function getCurrentTable() {
3560 /* The current table is the last table element in the stack of open
3561 * elements, if there is one. If there is no table element in the stack
3562 * of open elements (fragment case), then the current table is the
3563 * first element in the stack of open elements (the html element). */
3564 for ($i = count($this->stack) - 1; $i >= 0; $i--) {
3565 if ($this->stack[$i]->tagName === 'table') {
3566 return $this->stack[$i];
3567 }
3568 }
3569 return $this->stack[0];
3570 }
3571
3572 private function getFosterParent() {
3573 /* The foster parent element is the parent element of the last
3574 table element in the stack of open elements, if there is a
3575 table element and it has such a parent element. If there is no
3576 table element in the stack of open elements (innerHTML case),
3577 then the foster parent element is the first element in the
3578 stack of open elements (the html element). Otherwise, if there
3579 is a table element in the stack of open elements, but the last
3580 table element in the stack of open elements has no parent, or
3581 its parent node is not an element, then the foster parent
3582 element is the element before the last table element in the
3583 stack of open elements. */
3584 for($n = count($this->stack) - 1; $n >= 0; $n--) {
3585 if($this->stack[$n]->tagName === 'table') {
3586 $table = $this->stack[$n];
3587 break;
3588 }
3589 }
3590
3591 if(isset($table) && $table->parentNode !== null) {
3592 return $table->parentNode;
3593
3594 } elseif(!isset($table)) {
3595 return $this->stack[0];
3596
3597 } elseif(isset($table) && ($table->parentNode === null ||
3598 $table->parentNode->nodeType !== XML_ELEMENT_NODE)) {
3599 return $this->stack[$n - 1];
3600 }
3601 }
3602
3603 public function fosterParent($node) {
3604 $foster_parent = $this->getFosterParent();
3605 $table = $this->getCurrentTable(); // almost equivalent to last table element, except it can be html
3606 /* When a node node is to be foster parented, the node node must be
3607 * be inserted into the foster parent element. */
3608 /* If the foster parent element is the parent element of the last table
3609 * element in the stack of open elements, then node must be inserted
3610 * immediately before the last table element in the stack of open
3611 * elements in the foster parent element; otherwise, node must be
3612 * appended to the foster parent element. */
3613 if ($table->tagName === 'table' && $table->parentNode->isSameNode($foster_parent)) {
3614 $foster_parent->insertBefore($node, $table);
3615 } else {
3616 $foster_parent->appendChild($node);
3617 }
3618 }
3619
3620 /**
3621 * For debugging, prints the stack
3622 */
3623 private function printStack() {
3624 $names = array();
3625 foreach ($this->stack as $i => $element) {
3626 $names[] = $element->tagName;
3627 }
3628 echo " -> stack [" . implode(', ', $names) . "]\n";
3629 }
3630
3631 /**
3632 * For debugging, prints active formatting elements
3633 */
3634 private function printActiveFormattingElements() {
3635 if (!$this->a_formatting) return;
3636 $names = array();
3637 foreach ($this->a_formatting as $node) {
3638 if ($node === self::MARKER) $names[] = 'MARKER';
3639 else $names[] = $node->tagName;
3640 }
3641 echo " -> active formatting [" . implode(', ', $names) . "]\n";
3642 }
3643
3644 public function currentTableIsTainted() {
3645 return !empty($this->getCurrentTable()->tainted);
3646 }
3647
3648 /**
3649 * Sets up the tree constructor for building a fragment.
3650 */
3651 public function setupContext($context = null) {
3652 $this->fragment = true;
3653 if ($context) {
3654 $context = $this->dom->createElementNS(self::NS_HTML, $context);
3655 /* 4.1. Set the HTML parser's tokenization stage's content model
3656 * flag according to the context element, as follows: */
3657 switch ($context->tagName) {
3658 case 'title': case 'textarea':
3659 $this->content_model = HTML5_Tokenizer::RCDATA;
3660 break;
3661 case 'style': case 'script': case 'xmp': case 'iframe':
3662 case 'noembed': case 'noframes':
3663 $this->content_model = HTML5_Tokenizer::CDATA;
3664 break;
3665 case 'noscript':
3666 // XSCRIPT: assuming scripting is enabled
3667 $this->content_model = HTML5_Tokenizer::CDATA;
3668 break;
3669 case 'plaintext':
3670 $this->content_model = HTML5_Tokenizer::PLAINTEXT;
3671 break;
3672 }
3673 /* 4.2. Let root be a new html element with no attributes. */
3674 $root = $this->dom->createElementNS(self::NS_HTML, 'html');
3675 $this->root = $root;
3676 /* 4.3 Append the element root to the Document node created above. */
3677 $this->dom->appendChild($root);
3678 /* 4.4 Set up the parser's stack of open elements so that it
3679 * contains just the single element root. */
3680 $this->stack = array($root);
3681 /* 4.5 Reset the parser's insertion mode appropriately. */
3682 $this->resetInsertionMode($context);
3683 /* 4.6 Set the parser's form element pointer to the nearest node
3684 * to the context element that is a form element (going straight up
3685 * the ancestor chain, and including the element itself, if it is a
3686 * form element), or, if there is no such form element, to null. */
3687 $node = $context;
3688 do {
3689 if ($node->tagName === 'form') {
3690 $this->form_pointer = $node;
3691 break;
3692 }
3693 } while ($node = $node->parentNode);
3694 }
3695 }
3696
3697 public function adjustMathMLAttributes($token) {
3698 foreach ($token['attr'] as &$kp) {
3699 if ($kp['name'] === 'definitionurl') {
3700 $kp['name'] = 'definitionURL';
3701 }
3702 }
3703 return $token;
3704 }
3705
3706 public function adjustSVGAttributes($token) {
3707 static $lookup = array(
3708 'attributename' => 'attributeName',
3709 'attributetype' => 'attributeType',
3710 'basefrequency' => 'baseFrequency',
3711 'baseprofile' => 'baseProfile',
3712 'calcmode' => 'calcMode',
3713 'clippathunits' => 'clipPathUnits',
3714 'contentscripttype' => 'contentScriptType',
3715 'contentstyletype' => 'contentStyleType',
3716 'diffuseconstant' => 'diffuseConstant',
3717 'edgemode' => 'edgeMode',
3718 'externalresourcesrequired' => 'externalResourcesRequired',
3719 'filterres' => 'filterRes',
3720 'filterunits' => 'filterUnits',
3721 'glyphref' => 'glyphRef',
3722 'gradienttransform' => 'gradientTransform',
3723 'gradientunits' => 'gradientUnits',
3724 'kernelmatrix' => 'kernelMatrix',
3725 'kernelunitlength' => 'kernelUnitLength',
3726 'keypoints' => 'keyPoints',
3727 'keysplines' => 'keySplines',
3728 'keytimes' => 'keyTimes',
3729 'lengthadjust' => 'lengthAdjust',
3730 'limitingconeangle' => 'limitingConeAngle',
3731 'markerheight' => 'markerHeight',
3732 'markerunits' => 'markerUnits',
3733 'markerwidth' => 'markerWidth',
3734 'maskcontentunits' => 'maskContentUnits',
3735 'maskunits' => 'maskUnits',
3736 'numoctaves' => 'numOctaves',
3737 'pathlength' => 'pathLength',
3738 'patterncontentunits' => 'patternContentUnits',
3739 'patterntransform' => 'patternTransform',
3740 'patternunits' => 'patternUnits',
3741 'pointsatx' => 'pointsAtX',
3742 'pointsaty' => 'pointsAtY',
3743 'pointsatz' => 'pointsAtZ',
3744 'preservealpha' => 'preserveAlpha',
3745 'preserveaspectratio' => 'preserveAspectRatio',
3746 'primitiveunits' => 'primitiveUnits',
3747 'refx' => 'refX',
3748 'refy' => 'refY',
3749 'repeatcount' => 'repeatCount',
3750 'repeatdur' => 'repeatDur',
3751 'requiredextensions' => 'requiredExtensions',
3752 'requiredfeatures' => 'requiredFeatures',
3753 'specularconstant' => 'specularConstant',
3754 'specularexponent' => 'specularExponent',
3755 'spreadmethod' => 'spreadMethod',
3756 'startoffset' => 'startOffset',
3757 'stddeviation' => 'stdDeviation',
3758 'stitchtiles' => 'stitchTiles',
3759 'surfacescale' => 'surfaceScale',
3760 'systemlanguage' => 'systemLanguage',
3761 'tablevalues' => 'tableValues',
3762 'targetx' => 'targetX',
3763 'targety' => 'targetY',
3764 'textlength' => 'textLength',
3765 'viewbox' => 'viewBox',
3766 'viewtarget' => 'viewTarget',
3767 'xchannelselector' => 'xChannelSelector',
3768 'ychannelselector' => 'yChannelSelector',
3769 'zoomandpan' => 'zoomAndPan',
3770 );
3771 foreach ($token['attr'] as &$kp) {
3772 if (isset($lookup[$kp['name']])) {
3773 $kp['name'] = $lookup[$kp['name']];
3774 }
3775 }
3776 return $token;
3777 }
3778
3779 public function adjustForeignAttributes($token) {
3780 static $lookup = array(
3781 'xlink:actuate' => array('xlink', 'actuate', self::NS_XLINK),
3782 'xlink:arcrole' => array('xlink', 'arcrole', self::NS_XLINK),
3783 'xlink:href' => array('xlink', 'href', self::NS_XLINK),
3784 'xlink:role' => array('xlink', 'role', self::NS_XLINK),
3785 'xlink:show' => array('xlink', 'show', self::NS_XLINK),
3786 'xlink:title' => array('xlink', 'title', self::NS_XLINK),
3787 'xlink:type' => array('xlink', 'type', self::NS_XLINK),
3788 'xml:base' => array('xml', 'base', self::NS_XML),
3789 'xml:lang' => array('xml', 'lang', self::NS_XML),
3790 'xml:space' => array('xml', 'space', self::NS_XML),
3791 'xmlns' => array(null, 'xmlns', self::NS_XMLNS),
3792 'xmlns:xlink' => array('xmlns', 'xlink', self::NS_XMLNS),
3793 );
3794 foreach ($token['attr'] as &$kp) {
3795 if (isset($lookup[$kp['name']])) {
3796 $kp['name'] = $lookup[$kp['name']];
3797 }
3798 }
3799 return $token;
3800 }
3801
3802 public function insertForeignElement($token, $namespaceURI) {
3803 $el = $this->dom->createElementNS($namespaceURI, $token['name']);
3804 if (!empty($token['attr'])) {
3805 foreach ($token['attr'] as $kp) {
3806 $attr = $kp['name'];
3807 if (is_array($attr)) {
3808 $ns = $attr[2];
3809 $attr = $attr[1];
3810 } else {
3811 $ns = self::NS_HTML;
3812 }
3813 if (!$el->hasAttributeNS($ns, $attr)) {
3814 // XSKETCHY: work around godawful libxml bug
3815 if ($ns === self::NS_XLINK) {
3816 $el->setAttribute('xlink:'.$attr, $kp['value']);
3817 } elseif ($ns === self::NS_HTML) {
3818 // Another godawful libxml bug
3819 $el->setAttribute($attr, $kp['value']);
3820 } else {
3821 $el->setAttributeNS($ns, $attr, $kp['value']);
3822 }
3823 }
3824 }
3825 }
3826 $this->appendToRealParent($el);
3827 $this->stack[] = $el;
3828 // XERROR: see below
3829 /* If the newly created element has an xmlns attribute in the XMLNS
3830 * namespace whose value is not exactly the same as the element's
3831 * namespace, that is a parse error. Similarly, if the newly created
3832 * element has an xmlns:xlink attribute in the XMLNS namespace whose
3833 * value is not the XLink Namespace, that is a parse error. */
3834 }
3835
3836 public function save() {
3837 $this->dom->normalize();
3838 if (!$this->fragment) {
3839 return $this->dom;
3840 } else {
3841 if ($this->root) {
3842 return $this->root->childNodes;
3843 } else {
3844 return $this->dom->childNodes;
3845 }
3846 }
3847 }
3848}
3849
diff --git a/inc/3rdparty/libraries/html5/named-character-references.ser b/inc/3rdparty/libraries/html5/named-character-references.ser
deleted file mode 100644
index e3ae0502..00000000
--- a/inc/3rdparty/libraries/html5/named-character-references.ser
+++ /dev/null
@@ -1 +0,0 @@
1a:52:{s:1:"A";a:16:{s:1:"E";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:198;}s:9:"codepoint";i:198;}}}}s:1:"M";a:1:{s:1:"P";a:2:{s:1:";";a:1:{s:9:"codepoint";i:38;}s:9:"codepoint";i:38;}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:193;}s:9:"codepoint";i:193;}}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:258;}}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:194;}s:9:"codepoint";i:194;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1040;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120068;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:192;}s:9:"codepoint";i:192;}}}}}s:1:"l";a:1:{s:1:"p";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:913;}}}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:256;}}}}}s:1:"n";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10835;}}}s:1:"o";a:2:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:260;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120120;}}}}s:1:"p";a:1:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"y";a:1:{s:1:"F";a:1:{s:1:"u";a:1:{s:1:"n";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8289;}}}}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:197;}s:9:"codepoint";i:197;}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119964;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8788;}}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:195;}s:9:"codepoint";i:195;}}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:196;}s:9:"codepoint";i:196;}}}}s:1:"B";a:8:{s:1:"a";a:2:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"s";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8726;}}}}}}}}s:1:"r";a:2:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10983;}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8966;}}}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1041;}}}s:1:"e";a:3:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8757;}}}}}}s:1:"r";a:1:{s:1:"n";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8492;}}}}}}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:914;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120069;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120121;}}}}s:1:"r";a:1:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:728;}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8492;}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"p";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8782;}}}}}}}s:1:"C";a:14:{s:1:"H";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1063;}}}}s:1:"O";a:1:{s:1:"P";a:1:{s:1:"Y";a:2:{s:1:";";a:1:{s:9:"codepoint";i:169;}s:9:"codepoint";i:169;}}}s:1:"a";a:3:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:262;}}}}}s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8914;}s:1:"i";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"D";a:1:{s:1:"i";a:1:{s:1:"f";a:1:{s:1:"f";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"D";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8517;}}}}}}}}}}}}}}}}}}}s:1:"y";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"y";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8493;}}}}}}}s:1:"c";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:268;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:199;}s:9:"codepoint";i:199;}}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:264;}}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8752;}}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:266;}}}}s:1:"e";a:2:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:184;}}}}}}s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:183;}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8493;}}}s:1:"h";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:935;}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:"l";a:1:{s:1:"e";a:4:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8857;}}}}s:1:"M";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8854;}}}}}}s:1:"P";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8853;}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8855;}}}}}}}}}}}s:1:"l";a:1:{s:1:"o";a:2:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"w";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"C";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"I";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8754;}}}}}}}}}}}}}}}}}}}}}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"C";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"l";a:1:{s:1:"y";a:2:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"Q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8221;}}}}}}}}}}}}s:1:"Q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8217;}}}}}}}}}}}}}}}s:1:"o";a:4:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8759;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10868;}}}}}s:1:"n";a:3:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8801;}}}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8751;}}}}s:1:"t";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"I";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8750;}}}}}}}}}}}}}}s:1:"p";a:2:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8450;}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"d";a:1:{s:1:"u";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8720;}}}}}}}}s:1:"u";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"C";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"w";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"C";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"I";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8755;}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10799;}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119966;}}}}s:1:"u";a:1:{s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8915;}s:1:"C";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8781;}}}}}}}s:1:"D";a:11:{s:1:"D";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8517;}s:1:"o";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"h";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10513;}}}}}}}}s:1:"J";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1026;}}}}s:1:"S";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1029;}}}}s:1:"Z";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1039;}}}}s:1:"a";a:3:{s:1:"g";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8225;}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8609;}}}s:1:"s";a:1:{s:1:"h";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10980;}}}}}s:1:"c";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:270;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1044;}}}s:1:"e";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8711;}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:916;}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120071;}}}s:1:"i";a:2:{s:1:"a";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:4:{s:1:"A";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:180;}}}}}}s:1:"D";a:1:{s:1:"o";a:2:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:729;}}s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"A";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:733;}}}}}}}}}}}}s:1:"G";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:96;}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:732;}}}}}}}}}}}}}}s:1:"m";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8900;}}}}}}s:1:"f";a:1:{s:1:"f";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"D";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8518;}}}}}}}}}}}}}s:1:"o";a:4:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120123;}}}s:1:"t";a:3:{s:1:";";a:1:{s:9:"codepoint";i:168;}s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8412;}}}}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8784;}}}}}}}s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:6:{s:1:"C";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"I";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8751;}}}}}}}}}}}}}}}}s:1:"D";a:1:{s:1:"o";a:2:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:168;}}s:1:"w";a:1:{s:1:"n";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8659;}}}}}}}}}}s:1:"L";a:2:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:3:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8656;}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8660;}}}}}}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10980;}}}}}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"g";a:2:{s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10232;}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10234;}}}}}}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10233;}}}}}}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8658;}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8872;}}}}}}}}}s:1:"U";a:1:{s:1:"p";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8657;}}}}}}s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8661;}}}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8741;}}}}}}}}}}}}}}}}s:1:"w";a:1:{s:1:"n";a:6:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8595;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10515;}}}}s:1:"U";a:1:{s:1:"p";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8693;}}}}}}}}}}}}}s:1:"B";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:785;}}}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:3:{s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10576;}}}}}}}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10590;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8637;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10582;}}}}}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:2:{s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10591;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8641;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10583;}}}}}}}}}}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8868;}s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8615;}}}}}}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8659;}}}}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119967;}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:272;}}}}}}}s:1:"E";a:16:{s:1:"N";a:1:{s:1:"G";a:1:{s:1:";";a:1:{s:9:"codepoint";i:330;}}}s:1:"T";a:1:{s:1:"H";a:2:{s:1:";";a:1:{s:9:"codepoint";i:208;}s:9:"codepoint";i:208;}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:201;}s:9:"codepoint";i:201;}}}}}s:1:"c";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:282;}}}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:202;}s:9:"codepoint";i:202;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1069;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:278;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120072;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:200;}s:9:"codepoint";i:200;}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8712;}}}}}}}s:1:"m";a:2:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:274;}}}}s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:2:{s:1:"S";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"S";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9723;}}}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"y";a:1:{s:1:"S";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"S";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9643;}}}}}}}}}}}}}}}}}}}}s:1:"o";a:2:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:280;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120124;}}}}s:1:"p";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:917;}}}}}}}s:1:"q";a:1:{s:1:"u";a:2:{s:1:"a";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10869;}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8770;}}}}}}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"b";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8652;}}}}}}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8496;}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10867;}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:919;}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:203;}s:9:"codepoint";i:203;}}}s:1:"x";a:2:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8707;}}}}}s:1:"p";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8519;}}}}}}}}}}}}}s:1:"F";a:5:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1060;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120073;}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"d";a:2:{s:1:"S";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"S";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9724;}}}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"y";a:1:{s:1:"S";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"S";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9642;}}}}}}}}}}}}}}}}}}}}}s:1:"o";a:3:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120125;}}}s:1:"r";a:1:{s:1:"A";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8704;}}}}}s:1:"u";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8497;}}}}}}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8497;}}}}}s:1:"G";a:12:{s:1:"J";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1027;}}}}s:1:"T";a:2:{s:1:";";a:1:{s:9:"codepoint";i:62;}s:9:"codepoint";i:62;}s:1:"a";a:1:{s:1:"m";a:1:{s:1:"m";a:1:{s:1:"a";a:2:{s:1:";";a:1:{s:9:"codepoint";i:915;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:988;}}}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:286;}}}}}}s:1:"c";a:3:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:290;}}}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:284;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1043;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:288;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120074;}}}s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8921;}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120126;}}}}s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:6:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8805;}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8923;}}}}}}}}}}s:1:"F";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8807;}}}}}}}}}}s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10914;}}}}}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8823;}}}}}s:1:"S";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10878;}}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8819;}}}}}}}}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119970;}}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8811;}}}s:1:"H";a:8:{s:1:"A";a:1:{s:1:"R";a:1:{s:1:"D";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1066;}}}}}}s:1:"a";a:2:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:711;}}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:94;}}}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:292;}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8460;}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"b";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8459;}}}}}}}}}}}}s:1:"o";a:2:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8461;}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"z";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"L";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9472;}}}}}}}}}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8459;}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:294;}}}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"p";a:2:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"H";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8782;}}}}}}}}}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8783;}}}}}}}}}}s:1:"I";a:14:{s:1:"E";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1045;}}}}s:1:"J";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:306;}}}}}s:1:"O";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1025;}}}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:205;}s:9:"codepoint";i:205;}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:206;}s:9:"codepoint";i:206;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1048;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:304;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8465;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:204;}s:9:"codepoint";i:204;}}}}}s:1:"m";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8465;}s:1:"a";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:298;}}}s:1:"g";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"y";a:1:{s:1:"I";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8520;}}}}}}}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8658;}}}}}}}s:1:"n";a:2:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8748;}s:1:"e";a:2:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8747;}}}}}s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8898;}}}}}}}}}}}s:1:"v";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:2:{s:1:"C";a:1:{s:1:"o";a:1:{s:1:"m";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8291;}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8290;}}}}}}}}}}}}}}s:1:"o";a:3:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:302;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120128;}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:921;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8464;}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:296;}}}}}}s:1:"u";a:2:{s:1:"k";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1030;}}}}s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:207;}s:9:"codepoint";i:207;}}}}s:1:"J";a:5:{s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:308;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1049;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120077;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120129;}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119973;}}}s:1:"e";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1032;}}}}}}s:1:"u";a:1:{s:1:"k";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1028;}}}}}}s:1:"K";a:7:{s:1:"H";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1061;}}}}s:1:"J";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1036;}}}}s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:922;}}}}}s:1:"c";a:2:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:310;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1050;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120078;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120130;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119974;}}}}}s:1:"L";a:11:{s:1:"J";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1033;}}}}s:1:"T";a:2:{s:1:";";a:1:{s:9:"codepoint";i:60;}s:9:"codepoint";i:60;}s:1:"a";a:5:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:313;}}}}}s:1:"m";a:1:{s:1:"b";a:1:{s:1:"d";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:923;}}}}}s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10218;}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8466;}}}}}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8606;}}}}s:1:"c";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:317;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:315;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1051;}}}s:1:"e";a:2:{s:1:"f";a:1:{s:1:"t";a:10:{s:1:"A";a:2:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"B";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10216;}}}}}}}}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8592;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8676;}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8646;}}}}}}}}}}}}}}}}s:1:"C";a:1:{s:1:"e";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8968;}}}}}}}}s:1:"D";a:1:{s:1:"o";a:2:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"B";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10214;}}}}}}}}}}}}s:1:"w";a:1:{s:1:"n";a:2:{s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10593;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8643;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10585;}}}}}}}}}}}}}}s:1:"F";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8970;}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8596;}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10574;}}}}}}}}}}}}s:1:"T";a:2:{s:1:"e";a:1:{s:1:"e";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8867;}s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8612;}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10586;}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8882;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10703;}}}}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8884;}}}}}}}}}}}}}}s:1:"U";a:1:{s:1:"p";a:3:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10577;}}}}}}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10592;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8639;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10584;}}}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8636;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10578;}}}}}}}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8656;}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8660;}}}}}}}}}}}}}s:1:"s";a:1:{s:1:"s";a:6:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8922;}}}}}}}}}}}}}s:1:"F";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8806;}}}}}}}}}}s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8822;}}}}}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10913;}}}}}s:1:"S";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10877;}}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8818;}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120079;}}}s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8920;}s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8666;}}}}}}}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:319;}}}}}}s:1:"o";a:3:{s:1:"n";a:1:{s:1:"g";a:4:{s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10229;}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10231;}}}}}}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10230;}}}}}}}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10232;}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10234;}}}}}}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10233;}}}}}}}}}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120131;}}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"r";a:2:{s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8601;}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8600;}}}}}}}}}}}}}}}s:1:"s";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8466;}}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8624;}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:321;}}}}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8810;}}}s:1:"M";a:8:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10501;}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1052;}}}s:1:"e";a:2:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8287;}}}}}}}}}}s:1:"l";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8499;}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120080;}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:"P";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8723;}}}}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120132;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8499;}}}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:924;}}}s:1:"N";a:9:{s:1:"J";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1034;}}}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:323;}}}}}}s:1:"c";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:327;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:325;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1053;}}}s:1:"e";a:3:{s:1:"g";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"v";a:1:{s:1:"e";a:3:{s:1:"M";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8203;}}}}}}}}}}}}s:1:"T";a:1:{s:1:"h";a:1:{s:1:"i";a:2:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8203;}}}}}}}}s:1:"n";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8203;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"y";a:1:{s:1:"T";a:1:{s:1:"h";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8203;}}}}}}}}}}}}}}}}}}}}s:1:"s";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"d";a:2:{s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8811;}}}}}}}}}}}}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:"L";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8810;}}}}}}}}}}}}}s:1:"w";a:1:{s:1:"L";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10;}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120081;}}}s:1:"o";a:4:{s:1:"B";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8288;}}}}}}s:1:"n";a:1:{s:1:"B";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"k";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:160;}}}}}}}}}}}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8469;}}}s:1:"t";a:11:{s:1:";";a:1:{s:9:"codepoint";i:10988;}s:1:"C";a:2:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8802;}}}}}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:"C";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8813;}}}}}}}s:1:"D";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8742;}}}}}}}}}}}}}}}}}}s:1:"E";a:3:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8713;}}}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8800;}}}}}s:1:"x";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8708;}}}}}}}s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8815;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8817;}}}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8825;}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8821;}}}}}}}}}}}}}s:1:"L";a:1:{s:1:"e";a:2:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"T";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8938;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8940;}}}}}}}}}}}}}}}}s:1:"s";a:1:{s:1:"s";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8814;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8816;}}}}}}s:1:"G";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8824;}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8820;}}}}}}}}}}s:1:"P";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8832;}s:1:"S";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8928;}}}}}}}}}}}}}}}}}}}s:1:"R";a:2:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"E";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8716;}}}}}}}}}}}}}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"T";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8939;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8941;}}}}}}}}}}}}}}}}}}}s:1:"S";a:2:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"S";a:1:{s:1:"u";a:2:{s:1:"b";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8930;}}}}}}}}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8931;}}}}}}}}}}}}}}}}}}}s:1:"u";a:3:{s:1:"b";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8840;}}}}}}}}}}s:1:"c";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8833;}s:1:"S";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8929;}}}}}}}}}}}}}}}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8841;}}}}}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8769;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8772;}}}}}}s:1:"F";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8775;}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8777;}}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8740;}}}}}}}}}}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119977;}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:209;}s:9:"codepoint";i:209;}}}}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:925;}}}s:1:"O";a:14:{s:1:"E";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:338;}}}}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:211;}s:9:"codepoint";i:211;}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:212;}s:9:"codepoint";i:212;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1054;}}}s:1:"d";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:336;}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120082;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:210;}s:9:"codepoint";i:210;}}}}}s:1:"m";a:3:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:332;}}}}s:1:"e";a:1:{s:1:"g";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:937;}}}}s:1:"i";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:927;}}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120134;}}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"C";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"l";a:1:{s:1:"y";a:2:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"Q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8220;}}}}}}}}}}}}s:1:"Q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8216;}}}}}}}}}}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10836;}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119978;}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:2:{s:1:";";a:1:{s:9:"codepoint";i:216;}s:9:"codepoint";i:216;}}}}}s:1:"t";a:1:{s:1:"i";a:2:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:213;}s:9:"codepoint";i:213;}}}s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10807;}}}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:214;}s:9:"codepoint";i:214;}}}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"r";a:2:{s:1:"B";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:175;}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"c";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9182;}}s:1:"k";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9140;}}}}}}}}s:1:"P";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9180;}}}}}}}}}}}}}}}}s:1:"P";a:9:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"D";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8706;}}}}}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1055;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120083;}}}s:1:"h";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:934;}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:928;}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:"M";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:177;}}}}}}}}}s:1:"o";a:2:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8460;}}}}}}}}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8473;}}}}s:1:"r";a:4:{s:1:";";a:1:{s:9:"codepoint";i:10939;}s:1:"e";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:"s";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8826;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10927;}}}}}}s:1:"S";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8828;}}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8830;}}}}}}}}}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8243;}}}}s:1:"o";a:2:{s:1:"d";a:1:{s:1:"u";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8719;}}}}}s:1:"p";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8759;}s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8733;}}}}}}}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119979;}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:936;}}}}s:1:"Q";a:4:{s:1:"U";a:1:{s:1:"O";a:1:{s:1:"T";a:2:{s:1:";";a:1:{s:9:"codepoint";i:34;}s:9:"codepoint";i:34;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120084;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8474;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119980;}}}}}s:1:"R";a:12:{s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10512;}}}}}s:1:"E";a:1:{s:1:"G";a:2:{s:1:";";a:1:{s:9:"codepoint";i:174;}s:9:"codepoint";i:174;}}s:1:"a";a:3:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:340;}}}}}s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10219;}}}s:1:"r";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8608;}s:1:"t";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10518;}}}}}}s:1:"c";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:344;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:342;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1056;}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8476;}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:2:{s:1:"E";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8715;}}}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"b";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8651;}}}}}}}}}}}}s:1:"U";a:1:{s:1:"p";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"b";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10607;}}}}}}}}}}}}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8476;}}}s:1:"h";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:929;}}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:8:{s:1:"A";a:2:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"B";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10217;}}}}}}}}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8594;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8677;}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8644;}}}}}}}}}}}}}}}s:1:"C";a:1:{s:1:"e";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8969;}}}}}}}}s:1:"D";a:1:{s:1:"o";a:2:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"B";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10215;}}}}}}}}}}}}s:1:"w";a:1:{s:1:"n";a:2:{s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10589;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8642;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10581;}}}}}}}}}}}}}}s:1:"F";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8971;}}}}}}s:1:"T";a:2:{s:1:"e";a:1:{s:1:"e";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8866;}s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8614;}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10587;}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8883;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10704;}}}}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8885;}}}}}}}}}}}}}}s:1:"U";a:1:{s:1:"p";a:3:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10575;}}}}}}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10588;}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8638;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10580;}}}}}}}}}}}}s:1:"V";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8640;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10579;}}}}}}}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8658;}}}}}}}}}}s:1:"o";a:2:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8477;}}}s:1:"u";a:1:{s:1:"n";a:1:{s:1:"d";a:1:{s:1:"I";a:1:{s:1:"m";a:1:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10608;}}}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8667;}}}}}}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8475;}}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8625;}}}s:1:"u";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"D";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"y";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10740;}}}}}}}}}}}}s:1:"S";a:13:{s:1:"H";a:2:{s:1:"C";a:1:{s:1:"H";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1065;}}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1064;}}}}s:1:"O";a:1:{s:1:"F";a:1:{s:1:"T";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1068;}}}}}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:346;}}}}}}s:1:"c";a:5:{s:1:";";a:1:{s:9:"codepoint";i:10940;}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:352;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:350;}}}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:348;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1057;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120086;}}}s:1:"h";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"t";a:4:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8595;}}}}}}}}}}s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8592;}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8594;}}}}}}}}}}}s:1:"U";a:1:{s:1:"p";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8593;}}}}}}}}}}}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:931;}}}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"C";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8728;}}}}}}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120138;}}}}s:1:"q";a:2:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8730;}}}s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:4:{s:1:";";a:1:{s:9:"codepoint";i:9633;}s:1:"I";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8851;}}}}}}}}}}}}}s:1:"S";a:1:{s:1:"u";a:2:{s:1:"b";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8847;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8849;}}}}}}}}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8848;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8850;}}}}}}}}}}}}}}s:1:"U";a:1:{s:1:"n";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8852;}}}}}}}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119982;}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8902;}}}}s:1:"u";a:4:{s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8912;}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8912;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8838;}}}}}}}}}}s:1:"c";a:2:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"s";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8827;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10928;}}}}}}s:1:"S";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8829;}}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8831;}}}}}}}}}}}s:1:"h";a:1:{s:1:"T";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8715;}}}}}}}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8721;}}s:1:"p";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8913;}s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8835;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8839;}}}}}}}}}}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8913;}}}}}}}s:1:"T";a:11:{s:1:"H";a:1:{s:1:"O";a:1:{s:1:"R";a:1:{s:1:"N";a:2:{s:1:";";a:1:{s:9:"codepoint";i:222;}s:9:"codepoint";i:222;}}}}s:1:"R";a:1:{s:1:"A";a:1:{s:1:"D";a:1:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8482;}}}}}s:1:"S";a:2:{s:1:"H";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1035;}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1062;}}}}s:1:"a";a:2:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9;}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:932;}}}s:1:"c";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:356;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:354;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1058;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120087;}}}s:1:"h";a:2:{s:1:"e";a:2:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8756;}}}}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:920;}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8201;}}}}}}}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8764;}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8771;}}}}}}s:1:"F";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8773;}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8776;}}}}}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120139;}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8411;}}}}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119983;}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:358;}}}}}}}s:1:"U";a:14:{s:1:"a";a:2:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:218;}s:9:"codepoint";i:218;}}}}s:1:"r";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8607;}s:1:"o";a:1:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10569;}}}}}}}}s:1:"b";a:1:{s:1:"r";a:2:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1038;}}}s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:364;}}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:219;}s:9:"codepoint";i:219;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1059;}}}s:1:"d";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:368;}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120088;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:217;}s:9:"codepoint";i:217;}}}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:362;}}}}}s:1:"n";a:2:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:"r";a:2:{s:1:"B";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:818;}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"c";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9183;}}s:1:"k";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9141;}}}}}}}}s:1:"P";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9181;}}}}}}}}}}}}}}}s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8899;}s:1:"P";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8846;}}}}}}}}}s:1:"o";a:2:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:370;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120140;}}}}s:1:"p";a:8:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8593;}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10514;}}}}s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8645;}}}}}}}}}}}}}}}s:1:"D";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8597;}}}}}}}}}}s:1:"E";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"b";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10606;}}}}}}}}}}}}s:1:"T";a:1:{s:1:"e";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8869;}s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8613;}}}}}}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8657;}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8661;}}}}}}}}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"r";a:2:{s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8598;}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8599;}}}}}}}}}}}}}}s:1:"s";a:1:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:978;}s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:933;}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:366;}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119984;}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:360;}}}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:220;}s:9:"codepoint";i:220;}}}}s:1:"V";a:9:{s:1:"D";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8875;}}}}}s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10987;}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1042;}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8873;}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10982;}}}}}}s:1:"e";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8897;}}s:1:"r";a:3:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8214;}}}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8214;}s:1:"i";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:4:{s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8739;}}}}s:1:"L";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:124;}}}}}s:1:"S";a:1:{s:1:"e";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10072;}}}}}}}}}}s:1:"T";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8768;}}}}}}}}}}}s:1:"y";a:1:{s:1:"T";a:1:{s:1:"h";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8202;}}}}}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120089;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120141;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119985;}}}}s:1:"v";a:1:{s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8874;}}}}}}}s:1:"W";a:5:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:372;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8896;}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120090;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120142;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119986;}}}}}s:1:"X";a:4:{s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120091;}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:926;}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120143;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119987;}}}}}s:1:"Y";a:9:{s:1:"A";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1071;}}}}s:1:"I";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1031;}}}}s:1:"U";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1070;}}}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:221;}s:9:"codepoint";i:221;}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:374;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1067;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120092;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120144;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119988;}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:376;}}}}}s:1:"Z";a:8:{s:1:"H";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1046;}}}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:377;}}}}}}s:1:"c";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:381;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1047;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:379;}}}}s:1:"e";a:2:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"W";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:"S";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8203;}}}}}}}}}}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:918;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8488;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8484;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119989;}}}}}s:1:"a";a:16:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:225;}s:9:"codepoint";i:225;}}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:259;}}}}}}s:1:"c";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8766;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8767;}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:226;}s:9:"codepoint";i:226;}}}s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:180;}s:9:"codepoint";i:180;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1072;}}}s:1:"e";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:230;}s:9:"codepoint";i:230;}}}}s:1:"f";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8289;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120094;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:224;}s:9:"codepoint";i:224;}}}}}s:1:"l";a:2:{s:1:"e";a:2:{s:1:"f";a:1:{s:1:"s";a:1:{s:1:"y";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8501;}}}}}s:1:"p";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8501;}}}}s:1:"p";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:945;}}}}}s:1:"m";a:2:{s:1:"a";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:257;}}}s:1:"l";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10815;}}}}s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:38;}s:9:"codepoint";i:38;}}s:1:"n";a:2:{s:1:"d";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8743;}s:1:"a";a:1:{s:1:"n";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10837;}}}}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10844;}}s:1:"s";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10840;}}}}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10842;}}}s:1:"g";a:7:{s:1:";";a:1:{s:9:"codepoint";i:8736;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10660;}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8736;}}}s:1:"m";a:1:{s:1:"s";a:1:{s:1:"d";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8737;}s:1:"a";a:8:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10664;}}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10665;}}s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10666;}}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10667;}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10668;}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10669;}}s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10670;}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10671;}}}}}}s:1:"r";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8735;}s:1:"v";a:1:{s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8894;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10653;}}}}}}s:1:"s";a:2:{s:1:"p";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8738;}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8491;}}}s:1:"z";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9084;}}}}}}}s:1:"o";a:2:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:261;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120146;}}}}s:1:"p";a:7:{s:1:";";a:1:{s:9:"codepoint";i:8776;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10864;}}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10863;}}}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8778;}}s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8779;}}}s:1:"o";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:39;}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8776;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8778;}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:229;}s:9:"codepoint";i:229;}}}}s:1:"s";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119990;}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:42;}}s:1:"y";a:1:{s:1:"m";a:1:{s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8776;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8781;}}}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:227;}s:9:"codepoint";i:227;}}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:228;}s:9:"codepoint";i:228;}}}s:1:"w";a:2:{s:1:"c";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8755;}}}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10769;}}}}}}s:1:"b";a:16:{s:1:"N";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10989;}}}}s:1:"a";a:2:{s:1:"c";a:1:{s:1:"k";a:4:{s:1:"c";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8780;}}}}}s:1:"e";a:1:{s:1:"p";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1014;}}}}}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8245;}}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8765;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8909;}}}}}}}}s:1:"r";a:2:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8893;}}}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8965;}s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8965;}}}}}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9141;}s:1:"t";a:1:{s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9142;}}}}}}}}s:1:"c";a:2:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8780;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1073;}}}s:1:"d";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8222;}}}}}s:1:"e";a:5:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"u";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8757;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8757;}}}}}}s:1:"m";a:1:{s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10672;}}}}}}s:1:"p";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1014;}}}}s:1:"r";a:1:{s:1:"n";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8492;}}}}}s:1:"t";a:3:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:946;}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8502;}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8812;}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120095;}}}s:1:"i";a:1:{s:1:"g";a:7:{s:1:"c";a:3:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8898;}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9711;}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8899;}}}}s:1:"o";a:3:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10752;}}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10753;}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10754;}}}}}}}s:1:"s";a:2:{s:1:"q";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10758;}}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9733;}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:2:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9661;}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9651;}}}}}}}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10756;}}}}}}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8897;}}}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8896;}}}}}}}}s:1:"k";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10509;}}}}}}s:1:"l";a:3:{s:1:"a";a:2:{s:1:"c";a:1:{s:1:"k";a:3:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"z";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10731;}}}}}}}}s:1:"s";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9642;}}}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:4:{s:1:";";a:1:{s:9:"codepoint";i:9652;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9662;}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9666;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9656;}}}}}}}}}}}}}}}}s:1:"n";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9251;}}}}s:1:"k";a:2:{i:1;a:2:{i:2;a:1:{s:1:";";a:1:{s:9:"codepoint";i:9618;}}i:4;a:1:{s:1:";";a:1:{s:9:"codepoint";i:9617;}}}i:3;a:1:{i:4;a:1:{s:1:";";a:1:{s:9:"codepoint";i:9619;}}}}s:1:"o";a:1:{s:1:"c";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9608;}}}}}s:1:"n";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8976;}}}}s:1:"o";a:4:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120147;}}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8869;}s:1:"t";a:1:{s:1:"o";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8869;}}}}}s:1:"w";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8904;}}}}}s:1:"x";a:12:{s:1:"D";a:4:{s:1:"L";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9559;}}s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9556;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9558;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9555;}}}s:1:"H";a:5:{s:1:";";a:1:{s:9:"codepoint";i:9552;}s:1:"D";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9574;}}s:1:"U";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9577;}}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9572;}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9575;}}}s:1:"U";a:4:{s:1:"L";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9565;}}s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9562;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9564;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9561;}}}s:1:"V";a:7:{s:1:";";a:1:{s:9:"codepoint";i:9553;}s:1:"H";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9580;}}s:1:"L";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9571;}}s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9568;}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9579;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9570;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9567;}}}s:1:"b";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10697;}}}}s:1:"d";a:4:{s:1:"L";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9557;}}s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9554;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9488;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9484;}}}s:1:"h";a:5:{s:1:";";a:1:{s:9:"codepoint";i:9472;}s:1:"D";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9573;}}s:1:"U";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9576;}}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9516;}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9524;}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8863;}}}}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8862;}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8864;}}}}}}s:1:"u";a:4:{s:1:"L";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9563;}}s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9560;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9496;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9492;}}}s:1:"v";a:7:{s:1:";";a:1:{s:9:"codepoint";i:9474;}s:1:"H";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9578;}}s:1:"L";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9569;}}s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9566;}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9532;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9508;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9500;}}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8245;}}}}}}s:1:"r";a:2:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:728;}}}}s:1:"v";a:1:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:166;}s:9:"codepoint";i:166;}}}}}s:1:"s";a:4:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119991;}}}s:1:"e";a:1:{s:1:"m";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8271;}}}}s:1:"i";a:1:{s:1:"m";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8765;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8909;}}}}s:1:"o";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:92;}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10693;}}}}}s:1:"u";a:2:{s:1:"l";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8226;}s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8226;}}}}}s:1:"m";a:1:{s:1:"p";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8782;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10926;}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8783;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8783;}}}}}}}s:1:"c";a:15:{s:1:"a";a:3:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:263;}}}}}s:1:"p";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8745;}s:1:"a";a:1:{s:1:"n";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10820;}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10825;}}}}}}s:1:"c";a:2:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10827;}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10823;}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10816;}}}}}s:1:"r";a:2:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8257;}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:711;}}}}}s:1:"c";a:4:{s:1:"a";a:2:{s:1:"p";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10829;}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:269;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:231;}s:9:"codepoint";i:231;}}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:265;}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10828;}s:1:"s";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10832;}}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:267;}}}}s:1:"e";a:3:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:184;}s:9:"codepoint";i:184;}}}s:1:"m";a:1:{s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10674;}}}}}}s:1:"n";a:1:{s:1:"t";a:3:{s:1:";";a:1:{s:9:"codepoint";i:162;}s:9:"codepoint";i:162;s:1:"e";a:1:{s:1:"r";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:183;}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120096;}}}s:1:"h";a:3:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1095;}}}s:1:"e";a:1:{s:1:"c";a:1:{s:1:"k";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10003;}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10003;}}}}}}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:967;}}}s:1:"i";a:1:{s:1:"r";a:7:{s:1:";";a:1:{s:9:"codepoint";i:9675;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10691;}}s:1:"c";a:3:{s:1:";";a:1:{s:9:"codepoint";i:710;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8791;}}}s:1:"l";a:1:{s:1:"e";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8634;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8635;}}}}}}}}}}}s:1:"d";a:5:{s:1:"R";a:1:{s:1:";";a:1:{s:9:"codepoint";i:174;}}s:1:"S";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9416;}}s:1:"a";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8859;}}}}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8858;}}}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8861;}}}}}}}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8791;}}s:1:"f";a:1:{s:1:"n";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10768;}}}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10991;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10690;}}}}}}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9827;}s:1:"u";a:1:{s:1:"i";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9827;}}}}}}}}s:1:"o";a:4:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:58;}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8788;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8788;}}}}}}s:1:"m";a:2:{s:1:"m";a:1:{s:1:"a";a:2:{s:1:";";a:1:{s:9:"codepoint";i:44;}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:64;}}}}s:1:"p";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8705;}s:1:"f";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8728;}}}s:1:"l";a:1:{s:1:"e";a:2:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8705;}}}}}s:1:"x";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8450;}}}}}}}}s:1:"n";a:2:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8773;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10861;}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8750;}}}}}s:1:"p";a:3:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120148;}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8720;}}}}s:1:"y";a:3:{s:1:";";a:1:{s:9:"codepoint";i:169;}s:9:"codepoint";i:169;s:1:"s";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8471;}}}}}}s:1:"r";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8629;}}}}s:1:"o";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10007;}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119992;}}}s:1:"u";a:2:{s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10959;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10961;}}}s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10960;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10962;}}}}}s:1:"t";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8943;}}}}}s:1:"u";a:7:{s:1:"d";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:2:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10552;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10549;}}}}}}s:1:"e";a:2:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8926;}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8927;}}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8630;}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10557;}}}}}}s:1:"p";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8746;}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10824;}}}}}}s:1:"c";a:2:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10822;}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10826;}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8845;}}}}s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10821;}}}}s:1:"r";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8631;}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10556;}}}}}s:1:"l";a:1:{s:1:"y";a:3:{s:1:"e";a:1:{s:1:"q";a:2:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8926;}}}}}s:1:"s";a:1:{s:1:"u";a:1:{s:1:"c";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8927;}}}}}}}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8910;}}}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8911;}}}}}}}}s:1:"r";a:1:{s:1:"e";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:164;}s:9:"codepoint";i:164;}}}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8630;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8631;}}}}}}}}}}}}}}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8910;}}}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8911;}}}}}s:1:"w";a:2:{s:1:"c";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8754;}}}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8753;}}}}}s:1:"y";a:1:{s:1:"l";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9005;}}}}}}}s:1:"d";a:19:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8659;}}}}s:1:"H";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10597;}}}}s:1:"a";a:4:{s:1:"g";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8224;}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8504;}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8595;}}}s:1:"s";a:1:{s:1:"h";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8208;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8867;}}}}}s:1:"b";a:2:{s:1:"k";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10511;}}}}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:733;}}}}}s:1:"c";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:271;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1076;}}}s:1:"d";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8518;}s:1:"a";a:2:{s:1:"g";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8225;}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8650;}}}}s:1:"o";a:1:{s:1:"t";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10871;}}}}}}}s:1:"e";a:3:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:176;}s:9:"codepoint";i:176;}s:1:"l";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:948;}}}}s:1:"m";a:1:{s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10673;}}}}}}}s:1:"f";a:2:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10623;}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120097;}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8643;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8642;}}}}}s:1:"i";a:5:{s:1:"a";a:1:{s:1:"m";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8900;}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"d";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8900;}s:1:"s";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9830;}}}}}}}}s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9830;}}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:168;}}s:1:"g";a:1:{s:1:"a";a:1:{s:1:"m";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:989;}}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8946;}}}}s:1:"v";a:3:{s:1:";";a:1:{s:9:"codepoint";i:247;}s:1:"i";a:1:{s:1:"d";a:1:{s:1:"e";a:3:{s:1:";";a:1:{s:9:"codepoint";i:247;}s:9:"codepoint";i:247;s:1:"o";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8903;}}}}}}}}}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8903;}}}}}}s:1:"j";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1106;}}}}s:1:"l";a:1:{s:1:"c";a:2:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8990;}}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8973;}}}}}}s:1:"o";a:5:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:36;}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120149;}}}s:1:"t";a:5:{s:1:";";a:1:{s:9:"codepoint";i:729;}s:1:"e";a:1:{s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8784;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8785;}}}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8760;}}}}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8724;}}}}}s:1:"s";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8865;}}}}}}}}s:1:"u";a:1:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8966;}}}}}}}}}}}}}s:1:"w";a:1:{s:1:"n";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8595;}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8650;}}}}}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8643;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8642;}}}}}}}}}}}}}}}}s:1:"r";a:2:{s:1:"b";a:1:{s:1:"k";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10512;}}}}}}}s:1:"c";a:2:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8991;}}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8972;}}}}}}s:1:"s";a:3:{s:1:"c";a:2:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119993;}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1109;}}}s:1:"o";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10742;}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:273;}}}}}}s:1:"t";a:2:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8945;}}}}s:1:"r";a:1:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9663;}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9662;}}}}}s:1:"u";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8693;}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10607;}}}}}s:1:"w";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10662;}}}}}}}s:1:"z";a:2:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1119;}}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10239;}}}}}}}}}s:1:"e";a:18:{s:1:"D";a:2:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10871;}}}}s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8785;}}}}s:1:"a";a:2:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:233;}s:9:"codepoint";i:233;}}}}s:1:"s";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10862;}}}}}}s:1:"c";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:283;}}}}}s:1:"i";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8790;}s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:234;}s:9:"codepoint";i:234;}}}s:1:"o";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8789;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1101;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:279;}}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8519;}}s:1:"f";a:2:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8786;}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120098;}}}s:1:"g";a:3:{s:1:";";a:1:{s:9:"codepoint";i:10906;}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:232;}s:9:"codepoint";i:232;}}}}s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10902;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10904;}}}}}}s:1:"l";a:4:{s:1:";";a:1:{s:9:"codepoint";i:10905;}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9191;}}}}}}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8467;}}s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10901;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10903;}}}}}}s:1:"m";a:3:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:275;}}}}s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8709;}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8709;}}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8709;}}}}}s:1:"s";a:1:{s:1:"p";a:2:{i:1;a:2:{i:3;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8196;}}i:4;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8197;}}}s:1:";";a:1:{s:9:"codepoint";i:8195;}}}}s:1:"n";a:2:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:331;}}s:1:"s";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8194;}}}}s:1:"o";a:2:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:281;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120150;}}}}s:1:"p";a:3:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8917;}s:1:"s";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10723;}}}}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10865;}}}}s:1:"s";a:1:{s:1:"i";a:3:{s:1:";";a:1:{s:9:"codepoint";i:1013;}s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:949;}}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:949;}}}}}s:1:"q";a:4:{s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8790;}}}}s:1:"o";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8789;}}}}}}s:1:"s";a:2:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8770;}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:2:{s:1:"g";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10902;}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10901;}}}}}}}}}}s:1:"u";a:3:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:61;}}}}s:1:"e";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8799;}}}}s:1:"i";a:1:{s:1:"v";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8801;}s:1:"D";a:1:{s:1:"D";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10872;}}}}}}s:1:"v";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10725;}}}}}}}}s:1:"r";a:2:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8787;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10609;}}}}}s:1:"s";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8495;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8784;}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8770;}}}}s:1:"t";a:2:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:951;}}s:1:"h";a:2:{s:1:";";a:1:{s:9:"codepoint";i:240;}s:9:"codepoint";i:240;}}s:1:"u";a:2:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:235;}s:9:"codepoint";i:235;}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8364;}}}}s:1:"x";a:3:{s:1:"c";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:33;}}}s:1:"i";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8707;}}}}s:1:"p";a:2:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8496;}}}}}}}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8519;}}}}}}}}}}}}}s:1:"f";a:11:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8786;}}}}}}}}}}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1092;}}}s:1:"e";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9792;}}}}}}s:1:"f";a:3:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:64259;}}}}}s:1:"l";a:2:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:64256;}}}s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:64260;}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120099;}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:64257;}}}}}s:1:"l";a:3:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9837;}}}s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:64258;}}}}s:1:"t";a:1:{s:1:"n";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9649;}}}}}s:1:"n";a:1:{s:1:"o";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:402;}}}}s:1:"o";a:2:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120151;}}}s:1:"r";a:2:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8704;}}}}s:1:"k";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8916;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10969;}}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10765;}}}}}}}}s:1:"r";a:2:{s:1:"a";a:2:{s:1:"c";a:6:{i:1;a:6:{i:2;a:2:{s:1:";";a:1:{s:9:"codepoint";i:189;}s:9:"codepoint";i:189;}i:3;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8531;}}i:4;a:2:{s:1:";";a:1:{s:9:"codepoint";i:188;}s:9:"codepoint";i:188;}i:5;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8533;}}i:6;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8537;}}i:8;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8539;}}}i:2;a:2:{i:3;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8532;}}i:5;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8534;}}}i:3;a:3:{i:4;a:2:{s:1:";";a:1:{s:9:"codepoint";i:190;}s:9:"codepoint";i:190;}i:5;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8535;}}i:8;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8540;}}}i:4;a:1:{i:5;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8536;}}}i:5;a:2:{i:6;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8538;}}i:8;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8541;}}}i:7;a:1:{i:8;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8542;}}}}s:1:"s";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8260;}}}}s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8994;}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119995;}}}}}s:1:"g";a:16:{s:1:"E";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8807;}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10892;}}}s:1:"a";a:3:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:501;}}}}}s:1:"m";a:1:{s:1:"m";a:1:{s:1:"a";a:2:{s:1:";";a:1:{s:9:"codepoint";i:947;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:989;}}}}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10886;}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:287;}}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:285;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1075;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:289;}}}}s:1:"e";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8805;}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8923;}}s:1:"q";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8805;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8807;}}s:1:"s";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10878;}}}}}}}s:1:"s";a:4:{s:1:";";a:1:{s:9:"codepoint";i:10878;}s:1:"c";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10921;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10880;}s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10882;}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10884;}}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10900;}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120100;}}}s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8811;}s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8921;}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8503;}}}}}s:1:"j";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1107;}}}}s:1:"l";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8823;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10898;}}s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10917;}}s:1:"j";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10916;}}}s:1:"n";a:4:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8809;}}s:1:"a";a:1:{s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10890;}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10890;}}}}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10888;}s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10888;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8809;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8935;}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120152;}}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:96;}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8458;}}}s:1:"i";a:1:{s:1:"m";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8819;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10894;}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10896;}}}}}s:1:"t";a:7:{s:1:";";a:1:{s:9:"codepoint";i:62;}s:9:"codepoint";i:62;s:1:"c";a:2:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10919;}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10874;}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8919;}}}}s:1:"l";a:1:{s:1:"P";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10645;}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10876;}}}}}}s:1:"r";a:5:{s:1:"a";a:2:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10886;}}}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10616;}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8919;}}}}s:1:"e";a:1:{s:1:"q";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8923;}}}}}s:1:"q";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10892;}}}}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8823;}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8819;}}}}}}}s:1:"h";a:10:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8660;}}}}s:1:"a";a:4:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8202;}}}}}s:1:"l";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:189;}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8459;}}}}}s:1:"r";a:2:{s:1:"d";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1098;}}}}s:1:"r";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8596;}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10568;}}}}s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8621;}}}}}s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8463;}}}}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:293;}}}}}s:1:"e";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9829;}s:1:"u";a:1:{s:1:"i";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9829;}}}}}}}}s:1:"l";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8230;}}}}}s:1:"r";a:1:{s:1:"c";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8889;}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120101;}}}s:1:"k";a:1:{s:1:"s";a:2:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10533;}}}}}}s:1:"w";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10534;}}}}}}}}s:1:"o";a:5:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8703;}}}}s:1:"m";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8763;}}}}}s:1:"o";a:1:{s:1:"k";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8617;}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8618;}}}}}}}}}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120153;}}}s:1:"r";a:1:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8213;}}}}}}s:1:"s";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119997;}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8463;}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:295;}}}}}}s:1:"y";a:2:{s:1:"b";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8259;}}}}}s:1:"p";a:1:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8208;}}}}}}}s:1:"i";a:15:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:237;}s:9:"codepoint";i:237;}}}}}s:1:"c";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8291;}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:238;}s:9:"codepoint";i:238;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1080;}}}s:1:"e";a:2:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1077;}}}s:1:"x";a:1:{s:1:"c";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:161;}s:9:"codepoint";i:161;}}}}s:1:"f";a:2:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8660;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120102;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:236;}s:9:"codepoint";i:236;}}}}}s:1:"i";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8520;}s:1:"i";a:2:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10764;}}}}s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8749;}}}}s:1:"n";a:1:{s:1:"f";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10716;}}}}}s:1:"o";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8489;}}}}}s:1:"j";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:307;}}}}}s:1:"m";a:3:{s:1:"a";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:299;}}}s:1:"g";a:3:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8465;}}s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8464;}}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8465;}}}}}}s:1:"t";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:305;}}}}s:1:"o";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8887;}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:437;}}}}}s:1:"n";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8712;}s:1:"c";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8453;}}}}}s:1:"f";a:1:{s:1:"i";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8734;}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10717;}}}}}}}s:1:"o";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:305;}}}}}s:1:"t";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8747;}s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8890;}}}}s:1:"e";a:2:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8484;}}}}}s:1:"r";a:1:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8890;}}}}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10775;}}}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10812;}}}}}}}s:1:"o";a:4:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1105;}}}s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:303;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120154;}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:953;}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10812;}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:191;}s:9:"codepoint";i:191;}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119998;}}}s:1:"i";a:1:{s:1:"n";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8712;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8953;}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8949;}}}}s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8948;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8947;}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8712;}}}}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8290;}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:297;}}}}}}s:1:"u";a:2:{s:1:"k";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1110;}}}}s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:239;}s:9:"codepoint";i:239;}}}}s:1:"j";a:6:{s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:309;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1081;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120103;}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:567;}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120155;}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:119999;}}}s:1:"e";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1112;}}}}}}s:1:"u";a:1:{s:1:"k";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1108;}}}}}}s:1:"k";a:8:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"a";a:2:{s:1:";";a:1:{s:9:"codepoint";i:954;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1008;}}}}}}s:1:"c";a:2:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:311;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1082;}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120104;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:312;}}}}}}s:1:"h";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1093;}}}}s:1:"j";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1116;}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120156;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120000;}}}}}s:1:"l";a:22:{s:1:"A";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8666;}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8656;}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10523;}}}}}}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10510;}}}}}s:1:"E";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8806;}s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10891;}}}s:1:"H";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10594;}}}}s:1:"a";a:9:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:314;}}}}}s:1:"e";a:1:{s:1:"m";a:1:{s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10676;}}}}}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8466;}}}}}s:1:"m";a:1:{s:1:"b";a:1:{s:1:"d";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:955;}}}}}s:1:"n";a:1:{s:1:"g";a:3:{s:1:";";a:1:{s:9:"codepoint";i:10216;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10641;}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10216;}}}}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10885;}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:171;}s:9:"codepoint";i:171;}}}s:1:"r";a:1:{s:1:"r";a:8:{s:1:";";a:1:{s:9:"codepoint";i:8592;}s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8676;}s:1:"f";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10527;}}}}s:1:"f";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10525;}}}s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8617;}}}s:1:"l";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8619;}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10553;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10611;}}}}s:1:"t";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8610;}}}}}s:1:"t";a:3:{s:1:";";a:1:{s:9:"codepoint";i:10923;}s:1:"a";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10521;}}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10925;}}}}s:1:"b";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10508;}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10098;}}}}s:1:"r";a:2:{s:1:"a";a:1:{s:1:"c";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:123;}}s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:91;}}}}s:1:"k";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10635;}}s:1:"s";a:1:{s:1:"l";a:2:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10639;}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10637;}}}}}}}s:1:"c";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:318;}}}}}s:1:"e";a:2:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:316;}}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8968;}}}}s:1:"u";a:1:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:123;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1083;}}}s:1:"d";a:4:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10550;}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8220;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8222;}}}}}s:1:"r";a:2:{s:1:"d";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10599;}}}}}s:1:"u";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10571;}}}}}}}s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8626;}}}}s:1:"e";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8804;}s:1:"f";a:1:{s:1:"t";a:5:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8592;}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8610;}}}}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8637;}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8636;}}}}}}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8647;}}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8596;}s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8646;}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8651;}}}}}}}}}s:1:"s";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8621;}}}}}}}}}}}}}}}}s:1:"t";a:1:{s:1:"h";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8907;}}}}}}}}}}}}}s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8922;}}s:1:"q";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8804;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8806;}}s:1:"s";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10877;}}}}}}}s:1:"s";a:5:{s:1:";";a:1:{s:9:"codepoint";i:10877;}s:1:"c";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10920;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10879;}s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10881;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10883;}}}}}}s:1:"g";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10899;}}}}s:1:"s";a:5:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10885;}}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8918;}}}}s:1:"e";a:1:{s:1:"q";a:2:{s:1:"g";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8922;}}}}s:1:"q";a:1:{s:1:"g";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10891;}}}}}}}s:1:"g";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8822;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8818;}}}}}}}s:1:"f";a:3:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10620;}}}}}s:1:"l";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8970;}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120105;}}}s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8822;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10897;}}}s:1:"h";a:2:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8637;}}s:1:"u";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8636;}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10602;}}}}}s:1:"b";a:1:{s:1:"l";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9604;}}}}}s:1:"j";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1113;}}}}s:1:"l";a:5:{s:1:";";a:1:{s:9:"codepoint";i:8810;}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8647;}}}}s:1:"c";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8990;}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10603;}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9722;}}}}}s:1:"m";a:2:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:320;}}}}}s:1:"o";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9136;}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9136;}}}}}}}}}}s:1:"n";a:4:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8808;}}s:1:"a";a:1:{s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10889;}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10889;}}}}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10887;}s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10887;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8808;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8934;}}}}}s:1:"o";a:8:{s:1:"a";a:2:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10220;}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8701;}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10214;}}}}s:1:"n";a:1:{s:1:"g";a:3:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10229;}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10231;}}}}}}}}}}}}}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10236;}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10230;}}}}}}}}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8619;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8620;}}}}}}}}}}}}}s:1:"p";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10629;}}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120157;}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10797;}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10804;}}}}}}s:1:"w";a:2:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8727;}}}}s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:95;}}}}}s:1:"z";a:3:{s:1:";";a:1:{s:9:"codepoint";i:9674;}s:1:"e";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9674;}}}}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10731;}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:40;}s:1:"l";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10643;}}}}}}s:1:"r";a:5:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8646;}}}}s:1:"c";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8991;}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8651;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10605;}}}}}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8206;}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8895;}}}}}s:1:"s";a:6:{s:1:"a";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8249;}}}}}s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120001;}}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8624;}}s:1:"i";a:1:{s:1:"m";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8818;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10893;}}s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10895;}}}}s:1:"q";a:2:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:91;}}s:1:"u";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8216;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8218;}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:322;}}}}}}s:1:"t";a:9:{s:1:";";a:1:{s:9:"codepoint";i:60;}s:9:"codepoint";i:60;s:1:"c";a:2:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10918;}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10873;}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8918;}}}}s:1:"h";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8907;}}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8905;}}}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10614;}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10875;}}}}}}s:1:"r";a:2:{s:1:"P";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10646;}}}}s:1:"i";a:3:{s:1:";";a:1:{s:9:"codepoint";i:9667;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8884;}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9666;}}}}}s:1:"u";a:1:{s:1:"r";a:2:{s:1:"d";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10570;}}}}}}s:1:"u";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10598;}}}}}}}}s:1:"m";a:14:{s:1:"D";a:1:{s:1:"D";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8762;}}}}}s:1:"a";a:4:{s:1:"c";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:175;}s:9:"codepoint";i:175;}}s:1:"l";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9794;}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10016;}s:1:"e";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10016;}}}}}}s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8614;}s:1:"s";a:1:{s:1:"t";a:1:{s:1:"o";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8614;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8615;}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8612;}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8613;}}}}}}}s:1:"r";a:1:{s:1:"k";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9646;}}}}}}s:1:"c";a:2:{s:1:"o";a:1:{s:1:"m";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10793;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1084;}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8212;}}}}}s:1:"e";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8737;}}}}}}}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120106;}}}s:1:"h";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8487;}}}s:1:"i";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:181;}s:9:"codepoint";i:181;}}}s:1:"d";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8739;}s:1:"a";a:1:{s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:42;}}}}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10992;}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:183;}s:9:"codepoint";i:183;}}}}s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8722;}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8863;}}s:1:"d";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8760;}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10794;}}}}}}}s:1:"l";a:2:{s:1:"c";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10971;}}}s:1:"d";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8230;}}}}s:1:"n";a:1:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8723;}}}}}}s:1:"o";a:2:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8871;}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120158;}}}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8723;}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120002;}}}s:1:"t";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8766;}}}}}}s:1:"u";a:3:{s:1:";";a:1:{s:9:"codepoint";i:956;}s:1:"l";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8888;}}}}}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8888;}}}}}}s:1:"n";a:23:{s:1:"L";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8653;}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8654;}}}}}}}}}}}}}}}s:1:"R";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8655;}}}}}}}}}}}s:1:"V";a:2:{s:1:"D";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8879;}}}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8878;}}}}}}s:1:"a";a:4:{s:1:"b";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8711;}}}}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:324;}}}}}s:1:"p";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8777;}s:1:"o";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:329;}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8777;}}}}}}s:1:"t";a:1:{s:1:"u";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9838;}s:1:"a";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9838;}s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8469;}}}}}}}}s:1:"b";a:1:{s:1:"s";a:1:{s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:160;}s:9:"codepoint";i:160;}}}s:1:"c";a:5:{s:1:"a";a:2:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10819;}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:328;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:326;}}}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8775;}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10818;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1085;}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8211;}}}}}s:1:"e";a:6:{s:1:";";a:1:{s:9:"codepoint";i:8800;}s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8663;}}}}s:1:"a";a:1:{s:1:"r";a:2:{s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10532;}}}s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8599;}s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8599;}}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8802;}}}}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10536;}}}}}s:1:"x";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8708;}s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8708;}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120107;}}}s:1:"g";a:3:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8817;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8817;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8821;}}}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8815;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8815;}}}}s:1:"h";a:3:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8654;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8622;}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10994;}}}}}s:1:"i";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8715;}s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8956;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8954;}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8715;}}}s:1:"j";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1114;}}}}s:1:"l";a:6:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8653;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8602;}}}}s:1:"d";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8229;}}}s:1:"e";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8816;}s:1:"f";a:1:{s:1:"t";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8602;}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8622;}}}}}}}}}}}}}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8816;}}s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8814;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8820;}}}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8814;}s:1:"r";a:1:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8938;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8940;}}}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8740;}}}}s:1:"o";a:2:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120159;}}}s:1:"t";a:4:{s:1:";";a:1:{s:9:"codepoint";i:172;}s:9:"codepoint";i:172;s:1:"i";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8713;}s:1:"v";a:3:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8713;}}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8951;}}s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8950;}}}}}s:1:"n";a:1:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8716;}s:1:"v";a:3:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8716;}}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8958;}}s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8957;}}}}}}}s:1:"p";a:3:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8742;}s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8742;}}}}}}}}s:1:"o";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10772;}}}}}}s:1:"r";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8832;}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8928;}}}}s:1:"e";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8832;}}}}}s:1:"r";a:4:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8655;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8603;}}}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8603;}}}}}}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8939;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8941;}}}}}}s:1:"s";a:7:{s:1:"c";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8833;}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8929;}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120003;}}}s:1:"h";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"t";a:2:{s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8740;}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8742;}}}}}}}}}}}}}s:1:"i";a:1:{s:1:"m";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8769;}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8772;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8772;}}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8740;}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8742;}}}}s:1:"q";a:1:{s:1:"s";a:1:{s:1:"u";a:2:{s:1:"b";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8930;}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8931;}}}}}}s:1:"u";a:3:{s:1:"b";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8836;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8840;}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8840;}}}}}}}s:1:"c";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8833;}}}s:1:"p";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8837;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8841;}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8841;}}}}}}}}}s:1:"t";a:4:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8825;}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:241;}s:9:"codepoint";i:241;}}}}s:1:"l";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8824;}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8938;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8940;}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8939;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8941;}}}}}}}}}}}}}}}}s:1:"u";a:2:{s:1:";";a:1:{s:9:"codepoint";i:957;}s:1:"m";a:3:{s:1:";";a:1:{s:9:"codepoint";i:35;}s:1:"e";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8470;}}}}s:1:"s";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8199;}}}}}s:1:"v";a:6:{s:1:"D";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8877;}}}}}s:1:"H";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10500;}}}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8876;}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"f";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10718;}}}}}}s:1:"l";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10498;}}}}}s:1:"r";a:1:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10499;}}}}}}s:1:"w";a:3:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8662;}}}}s:1:"a";a:1:{s:1:"r";a:2:{s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10531;}}}s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8598;}s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8598;}}}}}}s:1:"n";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10535;}}}}}}}s:1:"o";a:18:{s:1:"S";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9416;}}s:1:"a";a:2:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:243;}s:9:"codepoint";i:243;}}}}s:1:"s";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8859;}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8858;}s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:244;}s:9:"codepoint";i:244;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1086;}}}s:1:"d";a:5:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8861;}}}}s:1:"b";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:337;}}}}}s:1:"i";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10808;}}}s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8857;}}}s:1:"s";a:1:{s:1:"o";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10684;}}}}}}s:1:"e";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:339;}}}}}s:1:"f";a:2:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10687;}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120108;}}}s:1:"g";a:3:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:731;}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:242;}s:9:"codepoint";i:242;}}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10689;}}}s:1:"h";a:2:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10677;}}}}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8486;}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8750;}}}}s:1:"l";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8634;}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10686;}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"s";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10683;}}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8254;}}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10688;}}}s:1:"m";a:3:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:333;}}}}s:1:"e";a:1:{s:1:"g";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:969;}}}}s:1:"i";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:959;}}}}}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10678;}}s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8854;}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120160;}}}}s:1:"p";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10679;}}}s:1:"e";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10681;}}}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8853;}}}}}s:1:"r";a:7:{s:1:";";a:1:{s:9:"codepoint";i:8744;}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8635;}}}}s:1:"d";a:4:{s:1:";";a:1:{s:9:"codepoint";i:10845;}s:1:"e";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8500;}s:1:"o";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8500;}}}}}s:1:"f";a:2:{s:1:";";a:1:{s:9:"codepoint";i:170;}s:9:"codepoint";i:170;}s:1:"m";a:2:{s:1:";";a:1:{s:9:"codepoint";i:186;}s:9:"codepoint";i:186;}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8886;}}}}}s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10838;}}}s:1:"s";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10839;}}}}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10843;}}}s:1:"s";a:3:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8500;}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:2:{s:1:";";a:1:{s:9:"codepoint";i:248;}s:9:"codepoint";i:248;}}}}s:1:"o";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8856;}}}}s:1:"t";a:1:{s:1:"i";a:2:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:245;}s:9:"codepoint";i:245;}}}s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8855;}s:1:"a";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10806;}}}}}}}}s:1:"u";a:1:{s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:246;}s:9:"codepoint";i:246;}}}s:1:"v";a:1:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9021;}}}}}}s:1:"p";a:12:{s:1:"a";a:1:{s:1:"r";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8741;}s:1:"a";a:3:{s:1:";";a:1:{s:9:"codepoint";i:182;}s:9:"codepoint";i:182;s:1:"l";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8741;}}}}}}s:1:"s";a:2:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10995;}}}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:11005;}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8706;}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1087;}}}s:1:"e";a:1:{s:1:"r";a:5:{s:1:"c";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:37;}}}}s:1:"i";a:1:{s:1:"o";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:46;}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8240;}}}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8869;}}s:1:"t";a:1:{s:1:"e";a:1:{s:1:"n";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8241;}}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120109;}}}s:1:"h";a:3:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:966;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:966;}}}s:1:"m";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8499;}}}}}s:1:"o";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9742;}}}}}s:1:"i";a:3:{s:1:";";a:1:{s:9:"codepoint";i:960;}s:1:"t";a:1:{s:1:"c";a:1:{s:1:"h";a:1:{s:1:"f";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8916;}}}}}}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:982;}}}s:1:"l";a:2:{s:1:"a";a:1:{s:1:"n";a:2:{s:1:"c";a:1:{s:1:"k";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8463;}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8462;}}}}s:1:"k";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8463;}}}}}s:1:"u";a:1:{s:1:"s";a:9:{s:1:";";a:1:{s:9:"codepoint";i:43;}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10787;}}}}}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8862;}}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10786;}}}}s:1:"d";a:2:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8724;}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10789;}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10866;}}s:1:"m";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:177;}s:9:"codepoint";i:177;}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10790;}}}}s:1:"t";a:1:{s:1:"w";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10791;}}}}}}}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:177;}}s:1:"o";a:3:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10773;}}}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120161;}}}s:1:"u";a:1:{s:1:"n";a:1:{s:1:"d";a:2:{s:1:";";a:1:{s:9:"codepoint";i:163;}s:9:"codepoint";i:163;}}}}s:1:"r";a:10:{s:1:";";a:1:{s:9:"codepoint";i:8826;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10931;}}s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10935;}}}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8828;}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10927;}s:1:"c";a:6:{s:1:";";a:1:{s:9:"codepoint";i:8826;}s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10935;}}}}}}}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"l";a:1:{s:1:"y";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8828;}}}}}}}}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10927;}}}s:1:"n";a:3:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10937;}}}}}}}s:1:"e";a:1:{s:1:"q";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10933;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8936;}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8830;}}}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8242;}s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8473;}}}}}s:1:"n";a:3:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10933;}}s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10937;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8936;}}}}}s:1:"o";a:3:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8719;}}s:1:"f";a:3:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9006;}}}}}s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8978;}}}}}s:1:"s";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8979;}}}}}}s:1:"p";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8733;}s:1:"t";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8733;}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8830;}}}}s:1:"u";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8880;}}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120005;}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:968;}}}s:1:"u";a:1:{s:1:"n";a:1:{s:1:"c";a:1:{s:1:"s";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8200;}}}}}}}s:1:"q";a:6:{s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120110;}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10764;}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120162;}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8279;}}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120006;}}}}s:1:"u";a:3:{s:1:"a";a:1:{s:1:"t";a:2:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"n";a:1:{s:1:"i";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8461;}}}}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10774;}}}}}}s:1:"e";a:1:{s:1:"s";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:63;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8799;}}}}}}s:1:"o";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:34;}s:9:"codepoint";i:34;}}}}s:1:"r";a:21:{s:1:"A";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8667;}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8658;}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10524;}}}}}}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10511;}}}}}s:1:"H";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10596;}}}}s:1:"a";a:7:{s:1:"c";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10714;}}s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:341;}}}}}s:1:"d";a:1:{s:1:"i";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8730;}}}}s:1:"e";a:1:{s:1:"m";a:1:{s:1:"p";a:1:{s:1:"t";a:1:{s:1:"y";a:1:{s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10675;}}}}}}}s:1:"n";a:1:{s:1:"g";a:4:{s:1:";";a:1:{s:9:"codepoint";i:10217;}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10642;}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10661;}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10217;}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:187;}s:9:"codepoint";i:187;}}}s:1:"r";a:1:{s:1:"r";a:11:{s:1:";";a:1:{s:9:"codepoint";i:8594;}s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10613;}}}s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8677;}s:1:"f";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10528;}}}}s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10547;}}s:1:"f";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10526;}}}s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8618;}}}s:1:"l";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8620;}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10565;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10612;}}}}s:1:"t";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8611;}}}s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8605;}}}}s:1:"t";a:2:{s:1:"a";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10522;}}}}s:1:"i";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8758;}s:1:"n";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8474;}}}}}}}}}s:1:"b";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10509;}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10099;}}}}s:1:"r";a:2:{s:1:"a";a:1:{s:1:"c";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:125;}}s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:93;}}}}s:1:"k";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10636;}}s:1:"s";a:1:{s:1:"l";a:2:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10638;}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10640;}}}}}}}s:1:"c";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:345;}}}}}s:1:"e";a:2:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:343;}}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8969;}}}}s:1:"u";a:1:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:125;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1088;}}}s:1:"d";a:4:{s:1:"c";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10551;}}}s:1:"l";a:1:{s:1:"d";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10601;}}}}}}s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8221;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8221;}}}}}s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8627;}}}}s:1:"e";a:3:{s:1:"a";a:1:{s:1:"l";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8476;}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8475;}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8476;}}}}}s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8477;}}}}s:1:"c";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9645;}}}s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:174;}s:9:"codepoint";i:174;}}s:1:"f";a:3:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10621;}}}}}s:1:"l";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8971;}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120111;}}}s:1:"h";a:2:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8641;}}s:1:"u";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8640;}s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10604;}}}}}s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:961;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1009;}}}}s:1:"i";a:3:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:6:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8594;}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8611;}}}}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8641;}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8640;}}}}}}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8644;}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8652;}}}}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8649;}}}}}}}}}}}}s:1:"s";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8605;}}}}}}}}}}}s:1:"t";a:1:{s:1:"h";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8908;}}}}}}}}}}}}}}s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:730;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8787;}}}}}}}}}}}}s:1:"l";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8644;}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8652;}}}}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8207;}}}s:1:"m";a:1:{s:1:"o";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9137;}s:1:"a";a:1:{s:1:"c";a:1:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9137;}}}}}}}}}}s:1:"n";a:1:{s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10990;}}}}}s:1:"o";a:4:{s:1:"a";a:2:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10221;}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8702;}}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10215;}}}}s:1:"p";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10630;}}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120163;}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10798;}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10805;}}}}}}}s:1:"p";a:2:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:41;}s:1:"g";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10644;}}}}}s:1:"p";a:1:{s:1:"o";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10770;}}}}}}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8649;}}}}}s:1:"s";a:4:{s:1:"a";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8250;}}}}}s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120007;}}}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8625;}}s:1:"q";a:2:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:93;}}s:1:"u";a:1:{s:1:"o";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8217;}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8217;}}}}}}s:1:"t";a:3:{s:1:"h";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8908;}}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8906;}}}}}s:1:"r";a:1:{s:1:"i";a:4:{s:1:";";a:1:{s:9:"codepoint";i:9657;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8885;}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9656;}}s:1:"l";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10702;}}}}}}}}s:1:"u";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10600;}}}}}}}s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8478;}}}s:1:"s";a:19:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:347;}}}}}}s:1:"b";a:1:{s:1:"q";a:1:{s:1:"u";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8218;}}}}}s:1:"c";a:10:{s:1:";";a:1:{s:9:"codepoint";i:8827;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10932;}}s:1:"a";a:2:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10936;}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:353;}}}}}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8829;}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10928;}s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:351;}}}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:349;}}}}s:1:"n";a:3:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10934;}}s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10938;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8937;}}}}}s:1:"p";a:1:{s:1:"o";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10771;}}}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8831;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1089;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8901;}s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8865;}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10854;}}}}}s:1:"e";a:7:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8664;}}}}s:1:"a";a:1:{s:1:"r";a:2:{s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10533;}}}s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8600;}s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8600;}}}}}}s:1:"c";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:167;}s:9:"codepoint";i:167;}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:59;}}}s:1:"s";a:1:{s:1:"w";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10537;}}}}}s:1:"t";a:1:{s:1:"m";a:2:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8726;}}}}}s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8726;}}}}s:1:"x";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10038;}}}}s:1:"f";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:120112;}s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8994;}}}}}}s:1:"h";a:4:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9839;}}}}s:1:"c";a:2:{s:1:"h";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1097;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1096;}}}s:1:"o";a:1:{s:1:"r";a:1:{s:1:"t";a:2:{s:1:"m";a:1:{s:1:"i";a:1:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8739;}}}}s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8741;}}}}}}}}}}}}s:1:"y";a:2:{s:1:";";a:1:{s:9:"codepoint";i:173;}s:9:"codepoint";i:173;}}s:1:"i";a:2:{s:1:"g";a:1:{s:1:"m";a:1:{s:1:"a";a:3:{s:1:";";a:1:{s:9:"codepoint";i:963;}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:962;}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:962;}}}}}s:1:"m";a:8:{s:1:";";a:1:{s:9:"codepoint";i:8764;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10858;}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8771;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8771;}}}s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10910;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10912;}}}s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10909;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10911;}}}s:1:"n";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8774;}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10788;}}}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10610;}}}}}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8592;}}}}}s:1:"m";a:4:{s:1:"a";a:2:{s:1:"l";a:1:{s:1:"l";a:1:{s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"m";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8726;}}}}}}}}}}}s:1:"s";a:1:{s:1:"h";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10803;}}}}}s:1:"e";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"s";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10724;}}}}}}}s:1:"i";a:2:{s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8739;}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8995;}}}}s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10922;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10924;}}}}s:1:"o";a:3:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1100;}}}}}s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:47;}s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10692;}s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9023;}}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120164;}}}}s:1:"p";a:1:{s:1:"a";a:2:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:"s";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9824;}s:1:"u";a:1:{s:1:"i";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9824;}}}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8741;}}}}s:1:"q";a:3:{s:1:"c";a:2:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8851;}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8852;}}}}s:1:"s";a:1:{s:1:"u";a:2:{s:1:"b";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8847;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8849;}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8847;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8849;}}}}}}}s:1:"p";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8848;}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8850;}}s:1:"s";a:1:{s:1:"e";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8848;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8850;}}}}}}}}}s:1:"u";a:3:{s:1:";";a:1:{s:9:"codepoint";i:9633;}s:1:"a";a:1:{s:1:"r";a:2:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9633;}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9642;}}}}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9642;}}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8594;}}}}}s:1:"s";a:4:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120008;}}}s:1:"e";a:1:{s:1:"t";a:1:{s:1:"m";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8726;}}}}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8995;}}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8902;}}}}}}s:1:"t";a:2:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9734;}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9733;}}}}s:1:"r";a:2:{s:1:"a";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:2:{s:1:"e";a:1:{s:1:"p";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1013;}}}}}}}}s:1:"p";a:1:{s:1:"h";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:981;}}}}}}}}}s:1:"n";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:175;}}}}}s:1:"u";a:5:{s:1:"b";a:9:{s:1:";";a:1:{s:9:"codepoint";i:8834;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10949;}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10941;}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8838;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10947;}}}}}s:1:"m";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10945;}}}}}s:1:"n";a:2:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10955;}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8842;}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10943;}}}}}s:1:"r";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10617;}}}}}s:1:"s";a:3:{s:1:"e";a:1:{s:1:"t";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8834;}s:1:"e";a:1:{s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8838;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10949;}}}}s:1:"n";a:1:{s:1:"e";a:1:{s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8842;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10955;}}}}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10951;}}}s:1:"u";a:2:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10965;}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10963;}}}}}s:1:"c";a:1:{s:1:"c";a:6:{s:1:";";a:1:{s:9:"codepoint";i:8827;}s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10936;}}}}}}}s:1:"c";a:1:{s:1:"u";a:1:{s:1:"r";a:1:{s:1:"l";a:1:{s:1:"y";a:1:{s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8829;}}}}}}}}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10928;}}}s:1:"n";a:3:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10938;}}}}}}}s:1:"e";a:1:{s:1:"q";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10934;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8937;}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8831;}}}}}}s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8721;}}s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9834;}}}s:1:"p";a:13:{i:1;a:2:{s:1:";";a:1:{s:9:"codepoint";i:185;}s:9:"codepoint";i:185;}i:2;a:2:{s:1:";";a:1:{s:9:"codepoint";i:178;}s:9:"codepoint";i:178;}i:3;a:2:{s:1:";";a:1:{s:9:"codepoint";i:179;}s:9:"codepoint";i:179;}s:1:";";a:1:{s:9:"codepoint";i:8835;}s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10950;}}s:1:"d";a:2:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10942;}}}s:1:"s";a:1:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10968;}}}}}s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8839;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10948;}}}}}s:1:"h";a:1:{s:1:"s";a:1:{s:1:"u";a:1:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10967;}}}}}s:1:"l";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10619;}}}}}s:1:"m";a:1:{s:1:"u";a:1:{s:1:"l";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10946;}}}}}s:1:"n";a:2:{s:1:"E";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10956;}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8843;}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10944;}}}}}s:1:"s";a:3:{s:1:"e";a:1:{s:1:"t";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8835;}s:1:"e";a:1:{s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8839;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10950;}}}}s:1:"n";a:1:{s:1:"e";a:1:{s:1:"q";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8843;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10956;}}}}}}}s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10952;}}}s:1:"u";a:2:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10964;}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10966;}}}}}}s:1:"w";a:3:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8665;}}}}s:1:"a";a:1:{s:1:"r";a:2:{s:1:"h";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10534;}}}s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8601;}s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8601;}}}}}}s:1:"n";a:1:{s:1:"w";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10538;}}}}}}s:1:"z";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"g";a:2:{s:1:";";a:1:{s:9:"codepoint";i:223;}s:9:"codepoint";i:223;}}}}}s:1:"t";a:13:{s:1:"a";a:2:{s:1:"r";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8982;}}}}}s:1:"u";a:1:{s:1:";";a:1:{s:9:"codepoint";i:964;}}}s:1:"b";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9140;}}}}s:1:"c";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:357;}}}}}s:1:"e";a:1:{s:1:"d";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:355;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1090;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8411;}}}}s:1:"e";a:1:{s:1:"l";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8981;}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120113;}}}s:1:"h";a:4:{s:1:"e";a:2:{s:1:"r";a:1:{s:1:"e";a:2:{i:4;a:1:{s:1:";";a:1:{s:9:"codepoint";i:8756;}}s:1:"f";a:1:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8756;}}}}}}}s:1:"t";a:1:{s:1:"a";a:3:{s:1:";";a:1:{s:9:"codepoint";i:952;}s:1:"s";a:1:{s:1:"y";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:977;}}}}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:977;}}}}}s:1:"i";a:2:{s:1:"c";a:1:{s:1:"k";a:2:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"x";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8776;}}}}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8764;}}}}}}s:1:"n";a:1:{s:1:"s";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8201;}}}}}s:1:"k";a:2:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8776;}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8764;}}}}}s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:254;}s:9:"codepoint";i:254;}}}}s:1:"i";a:3:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:732;}}}}s:1:"m";a:1:{s:1:"e";a:1:{s:1:"s";a:4:{s:1:";";a:1:{s:9:"codepoint";i:215;}s:9:"codepoint";i:215;s:1:"b";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8864;}s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10801;}}}}s:1:"d";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10800;}}}}}s:1:"n";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8749;}}}}s:1:"o";a:3:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10536;}}}s:1:"p";a:4:{s:1:";";a:1:{s:9:"codepoint";i:8868;}s:1:"b";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9014;}}}}s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10993;}}}}s:1:"f";a:2:{s:1:";";a:1:{s:9:"codepoint";i:120165;}s:1:"o";a:1:{s:1:"r";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10970;}}}}}}s:1:"s";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10537;}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8244;}}}}}}s:1:"r";a:3:{s:1:"a";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8482;}}}}s:1:"i";a:7:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:5:{s:1:";";a:1:{s:9:"codepoint";i:9653;}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9663;}}}}}s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9667;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8884;}}}}}}}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8796;}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9657;}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8885;}}}}}}}}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9708;}}}}s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8796;}}s:1:"m";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10810;}}}}}}s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10809;}}}}}s:1:"s";a:1:{s:1:"b";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10701;}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10811;}}}}}}s:1:"p";a:1:{s:1:"e";a:1:{s:1:"z";a:1:{s:1:"i";a:1:{s:1:"u";a:1:{s:1:"m";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9186;}}}}}}}}s:1:"s";a:3:{s:1:"c";a:2:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120009;}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1094;}}}s:1:"h";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1115;}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:359;}}}}}}s:1:"w";a:2:{s:1:"i";a:1:{s:1:"x";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8812;}}}}s:1:"o";a:1:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:"a";a:1:{s:1:"d";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8606;}}}}}}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8608;}}}}}}}}}}}}}}}}}}s:1:"u";a:18:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8657;}}}}s:1:"H";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10595;}}}}s:1:"a";a:2:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:250;}s:9:"codepoint";i:250;}}}}s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8593;}}}}s:1:"b";a:1:{s:1:"r";a:2:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1118;}}}s:1:"e";a:1:{s:1:"v";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:365;}}}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:2:{s:1:";";a:1:{s:9:"codepoint";i:251;}s:9:"codepoint";i:251;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1091;}}}s:1:"d";a:3:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8645;}}}}s:1:"b";a:1:{s:1:"l";a:1:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:369;}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10606;}}}}}s:1:"f";a:2:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10622;}}}}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120114;}}}s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"v";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:249;}s:9:"codepoint";i:249;}}}}}s:1:"h";a:2:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:"l";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8639;}}s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8638;}}}}s:1:"b";a:1:{s:1:"l";a:1:{s:1:"k";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9600;}}}}}s:1:"l";a:2:{s:1:"c";a:2:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8988;}s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8988;}}}}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8975;}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9720;}}}}}s:1:"m";a:2:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:363;}}}}s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:168;}s:9:"codepoint";i:168;}}s:1:"o";a:2:{s:1:"g";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:371;}}}}s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120166;}}}}s:1:"p";a:6:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8593;}}}}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"n";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8597;}}}}}}}}}}s:1:"h";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:"o";a:1:{s:1:"o";a:1:{s:1:"n";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8639;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8638;}}}}}}}}}}}}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8846;}}}}s:1:"s";a:1:{s:1:"i";a:3:{s:1:";";a:1:{s:9:"codepoint";i:965;}s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:978;}}s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:965;}}}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"w";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8648;}}}}}}}}}}s:1:"r";a:3:{s:1:"c";a:2:{s:1:"o";a:1:{s:1:"r";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8989;}s:1:"e";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8989;}}}}}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8974;}}}}}s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:367;}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9721;}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120010;}}}}s:1:"t";a:3:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8944;}}}}s:1:"i";a:1:{s:1:"l";a:1:{s:1:"d";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:361;}}}}}s:1:"r";a:1:{s:1:"i";a:2:{s:1:";";a:1:{s:9:"codepoint";i:9653;}s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9652;}}}}}s:1:"u";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8648;}}}}s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:252;}s:9:"codepoint";i:252;}}}s:1:"w";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10663;}}}}}}}}s:1:"v";a:14:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8661;}}}}s:1:"B";a:1:{s:1:"a";a:1:{s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:10984;}s:1:"v";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10985;}}}}}s:1:"D";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8872;}}}}}s:1:"a";a:2:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10652;}}}}}s:1:"r";a:7:{s:1:"e";a:1:{s:1:"p";a:1:{s:1:"s";a:1:{s:1:"i";a:1:{s:1:"l";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:949;}}}}}}}}s:1:"k";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:"p";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1008;}}}}}}s:1:"n";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:"i";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8709;}}}}}}}}s:1:"p";a:3:{s:1:"h";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:966;}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:982;}}s:1:"r";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:"t";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8733;}}}}}}}s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8597;}s:1:"h";a:1:{s:1:"o";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1009;}}}}s:1:"s";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"m";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:962;}}}}}}s:1:"t";a:2:{s:1:"h";a:1:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:977;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"a";a:1:{s:1:"n";a:1:{s:1:"g";a:1:{s:1:"l";a:1:{s:1:"e";a:2:{s:1:"l";a:1:{s:1:"e";a:1:{s:1:"f";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8882;}}}}}s:1:"r";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"h";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8883;}}}}}}}}}}}}}}}}s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1074;}}}s:1:"d";a:1:{s:1:"a";a:1:{s:1:"s";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8866;}}}}}s:1:"e";a:3:{s:1:"e";a:3:{s:1:";";a:1:{s:9:"codepoint";i:8744;}s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8891;}}}}s:1:"e";a:1:{s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8794;}}}}s:1:"l";a:1:{s:1:"l";a:1:{s:1:"i";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8942;}}}}}s:1:"r";a:2:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:124;}}}}s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:124;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120115;}}}s:1:"l";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8882;}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120167;}}}}s:1:"p";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8733;}}}}}s:1:"r";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8883;}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120011;}}}}s:1:"z";a:1:{s:1:"i";a:1:{s:1:"g";a:1:{s:1:"z";a:1:{s:1:"a";a:1:{s:1:"g";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10650;}}}}}}}}s:1:"w";a:7:{s:1:"c";a:1:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:373;}}}}}s:1:"e";a:2:{s:1:"d";a:2:{s:1:"b";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10847;}}}}s:1:"g";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8743;}s:1:"q";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8793;}}}}}s:1:"i";a:1:{s:1:"e";a:1:{s:1:"r";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8472;}}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120116;}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120168;}}}}s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8472;}}s:1:"r";a:2:{s:1:";";a:1:{s:9:"codepoint";i:8768;}s:1:"e";a:1:{s:1:"a";a:1:{s:1:"t";a:1:{s:1:"h";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8768;}}}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120012;}}}}}s:1:"x";a:14:{s:1:"c";a:3:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8898;}}}s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9711;}}}}s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8899;}}}}s:1:"d";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9661;}}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120117;}}}s:1:"h";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10234;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10231;}}}}}s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:958;}}s:1:"l";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10232;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10229;}}}}}s:1:"m";a:1:{s:1:"a";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10236;}}}}s:1:"n";a:1:{s:1:"i";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8955;}}}}s:1:"o";a:3:{s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10752;}}}}s:1:"p";a:2:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120169;}}s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10753;}}}}}s:1:"t";a:1:{s:1:"i";a:1:{s:1:"m";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10754;}}}}}}s:1:"r";a:2:{s:1:"A";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10233;}}}}s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10230;}}}}}s:1:"s";a:2:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120013;}}}s:1:"q";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"p";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10758;}}}}}}s:1:"u";a:2:{s:1:"p";a:1:{s:1:"l";a:1:{s:1:"u";a:1:{s:1:"s";a:1:{s:1:";";a:1:{s:9:"codepoint";i:10756;}}}}}s:1:"t";a:1:{s:1:"r";a:1:{s:1:"i";a:1:{s:1:";";a:1:{s:9:"codepoint";i:9651;}}}}}s:1:"v";a:1:{s:1:"e";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8897;}}}}s:1:"w";a:1:{s:1:"e";a:1:{s:1:"d";a:1:{s:1:"g";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8896;}}}}}}}s:1:"y";a:8:{s:1:"a";a:1:{s:1:"c";a:2:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:2:{s:1:";";a:1:{s:9:"codepoint";i:253;}s:9:"codepoint";i:253;}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1103;}}}}s:1:"c";a:2:{s:1:"i";a:1:{s:1:"r";a:1:{s:1:"c";a:1:{s:1:";";a:1:{s:9:"codepoint";i:375;}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1099;}}}s:1:"e";a:1:{s:1:"n";a:2:{s:1:";";a:1:{s:9:"codepoint";i:165;}s:9:"codepoint";i:165;}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120118;}}}s:1:"i";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1111;}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120170;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120014;}}}}s:1:"u";a:2:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1102;}}}s:1:"m";a:1:{s:1:"l";a:2:{s:1:";";a:1:{s:9:"codepoint";i:255;}s:9:"codepoint";i:255;}}}}s:1:"z";a:10:{s:1:"a";a:1:{s:1:"c";a:1:{s:1:"u";a:1:{s:1:"t";a:1:{s:1:"e";a:1:{s:1:";";a:1:{s:9:"codepoint";i:378;}}}}}}s:1:"c";a:2:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"o";a:1:{s:1:"n";a:1:{s:1:";";a:1:{s:9:"codepoint";i:382;}}}}}s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1079;}}}s:1:"d";a:1:{s:1:"o";a:1:{s:1:"t";a:1:{s:1:";";a:1:{s:9:"codepoint";i:380;}}}}s:1:"e";a:2:{s:1:"e";a:1:{s:1:"t";a:1:{s:1:"r";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8488;}}}}}s:1:"t";a:1:{s:1:"a";a:1:{s:1:";";a:1:{s:9:"codepoint";i:950;}}}}s:1:"f";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120119;}}}s:1:"h";a:1:{s:1:"c";a:1:{s:1:"y";a:1:{s:1:";";a:1:{s:9:"codepoint";i:1078;}}}}s:1:"i";a:1:{s:1:"g";a:1:{s:1:"r";a:1:{s:1:"a";a:1:{s:1:"r";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8669;}}}}}}}s:1:"o";a:1:{s:1:"p";a:1:{s:1:"f";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120171;}}}}s:1:"s";a:1:{s:1:"c";a:1:{s:1:"r";a:1:{s:1:";";a:1:{s:9:"codepoint";i:120015;}}}}s:1:"w";a:2:{s:1:"j";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8205;}}s:1:"n";a:1:{s:1:"j";a:1:{s:1:";";a:1:{s:9:"codepoint";i:8204;}}}}}} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/humble-http-agent/CookieJar.php b/inc/3rdparty/libraries/humble-http-agent/CookieJar.php
deleted file mode 100644
index e4d5f495..00000000
--- a/inc/3rdparty/libraries/humble-http-agent/CookieJar.php
+++ /dev/null
@@ -1,403 +0,0 @@
1<?php
2/**
3 * Cookie Jar
4 *
5 * PHP class for handling cookies, as defined by the Netscape spec:
6 * <http://curl.haxx.se/rfc/cookie_spec.html>
7 *
8 * This class should be used to handle cookies (storing cookies from HTTP response messages, and
9 * sending out cookies in HTTP request messages). This has been adapted for FiveFilters.org
10 * from the original version used in HTTP Navigator. See http://www.keyvan.net/code/http-navigator/
11 *
12 * This class is mainly based on Cookies.pm <http://search.cpan.org/author/GAAS/libwww-perl-5.65/
13 * lib/HTTP/Cookies.pm> from the libwww-perl collection <http://www.linpro.no/lwp/>.
14 * Unlike Cookies.pm, this class only supports the Netscape cookie spec, not RFC 2965.
15 *
16 * @version 0.5
17 * @date 2011-03-15
18 * @see http://php.net/HttpRequestPool
19 * @author Keyvan Minoukadeh
20 * @copyright 2011 Keyvan Minoukadeh
21 * @license http://www.gnu.org/licenses/agpl-3.0.html AGPL v3
22 */
23
24class CookieJar
25{
26 /**
27 * Cookies - array containing all cookies.
28 *
29 * <pre>
30 * Cookies are stored like this:
31 * [domain][path][name] = array
32 * where array is:
33 * 0 => value, 1 => secure, 2 => expires
34 * </pre>
35 * @var array
36 * @access private
37 */
38 public $cookies = array();
39 public $debug = false;
40
41 /**
42 * Constructor
43 */
44 function __construct() {
45 }
46
47 protected function debug($msg, $file=null, $line=null) {
48 if ($this->debug) {
49 $mem = round(memory_get_usage()/1024, 2);
50 $memPeak = round(memory_get_peak_usage()/1024, 2);
51 echo '* ',$msg;
52 if (isset($file, $line)) echo " ($file line $line)";
53 echo ' - mem used: ',$mem," (peak: $memPeak)\n";
54 ob_flush();
55 flush();
56 }
57 }
58
59 /**
60 * Get matching cookies
61 *
62 * Only use this method if you cannot use add_cookie_header(), for example, if you want to use
63 * this cookie jar class without using the request class.
64 *
65 * @param array $param associative array containing 'domain', 'path', 'secure' keys
66 * @return string
67 * @see add_cookie_header()
68 */
69 public function getMatchingCookies($url)
70 {
71 if (($parts = @parse_url($url)) && isset($parts['scheme'], $parts['host'], $parts['path'])) {
72 $param['domain'] = $parts['host'];
73 $param['path'] = $parts['path'];
74 $param['secure'] = (strtolower($parts['scheme']) == 'https');
75 unset($parts);
76 } else {
77 return false;
78 }
79 // RFC 2965 notes:
80 // If multiple cookies satisfy the criteria above, they are ordered in
81 // the Cookie header such that those with more specific Path attributes
82 // precede those with less specific. Ordering with respect to other
83 // attributes (e.g., Domain) is unspecified.
84 $domain = $param['domain'];
85 if (strpos($domain, '.') === false) $domain .= '.local';
86 $request_path = $param['path'];
87 if ($request_path == '') $request_path = '/';
88 $request_secure = $param['secure'];
89 $now = time();
90 $matched_cookies = array();
91 // domain - find matching domains
92 $this->debug('Finding matching domains for '.$domain, __FILE__, __LINE__);
93 while (strpos($domain, '.') !== false) {
94 if (isset($this->cookies[$domain])) {
95 $this->debug(' domain match found: '.$domain);
96 $cookies =& $this->cookies[$domain];
97 } else {
98 $domain = $this->_reduce_domain($domain);
99 continue;
100 }
101 // paths - find matching paths starting from most specific
102 $this->debug(' - Finding matching paths for '.$request_path);
103 $paths = array_keys($cookies);
104 usort($paths, array($this, '_cmp_length'));
105 foreach ($paths as $path) {
106 // continue to next cookie if request path does not path-match cookie path
107 if (!$this->_path_match($request_path, $path)) continue;
108 // loop through cookie names
109 $this->debug(' path match found: '.$path);
110 foreach ($cookies[$path] as $name => $values) {
111 // if this cookie is secure but request isn't, continue to next cookie
112 if ($values[1] && !$request_secure) continue;
113 // if cookie is not a session cookie and has expired, continue to next cookie
114 if (is_int($values[2]) && ($values[2] < $now)) continue;
115 // cookie matches request
116 $this->debug(' cookie match: '.$name.'='.$values[0]);
117 $matched_cookies[] = $name.'='.$values[0];
118 }
119 }
120 $domain = $this->_reduce_domain($domain);
121 }
122 // return cookies
123 return implode('; ', $matched_cookies);
124 }
125
126 /**
127 * Parse Set-Cookie values.
128 *
129 * Only use this method if you cannot use extract_cookies(), for example, if you want to use
130 * this cookie jar class without using the response class.
131 *
132 * @param array $set_cookies array holding 1 or more "Set-Cookie" header values
133 * @param array $param associative array containing 'host', 'path' keys
134 * @return void
135 * @see extract_cookies()
136 */
137 public function storeCookies($url, $set_cookies)
138 {
139 if (count($set_cookies) == 0) return;
140 $param = @parse_url($url);
141 if (!is_array($param) || !isset($param['host'])) return;
142 $request_host = $param['host'];
143 if (strpos($request_host, '.') === false) $request_host .= '.local';
144 $request_path = @$param['path'];
145 if ($request_path == '') $request_path = '/';
146 //
147 // loop through set-cookie headers
148 //
149 foreach ($set_cookies as $set_cookie) {
150 $this->debug('Parsing: '.$set_cookie);
151 // temporary cookie store (before adding to jar)
152 $tmp_cookie = array();
153 $param = explode(';', $set_cookie);
154 // loop through params
155 for ($x=0; $x<count($param); $x++) {
156 $key_val = explode('=', $param[$x], 2);
157 if (count($key_val) != 2) {
158 // if the first param isn't a name=value pair, continue to the next set-cookie
159 // header
160 if ($x == 0) continue 2;
161 // check for secure flag
162 if (strtolower(trim($key_val[0])) == 'secure') $tmp_cookie['secure'] = true;
163 // continue to next param
164 continue;
165 }
166 list($key, $val) = array_map('trim', $key_val);
167 // first name=value pair is the cookie name and value
168 // the name and value are stored under 'name' and 'value' to avoid conflicts
169 // with later parameters.
170 if ($x == 0) {
171 $tmp_cookie = array('name'=>$key, 'value'=>$val);
172 continue;
173 }
174 $key = strtolower($key);
175 if (in_array($key, array('expires', 'path', 'domain', 'secure'))) {
176 $tmp_cookie[$key] = $val;
177 }
178 }
179 //
180 // set cookie
181 //
182 // check domain
183 if (isset($tmp_cookie['domain']) && ($tmp_cookie['domain'] != $request_host) &&
184 ($tmp_cookie['domain'] != ".$request_host")) {
185 $domain = $tmp_cookie['domain'];
186 if ((strpos($domain, '.') === false) && ($domain != 'local')) {
187 $this->debug(' - domain "'.$domain.'" has no dot and is not a local domain');
188 continue;
189 }
190 if (preg_match('/\.[0-9]+$/', $domain)) {
191 $this->debug(' - domain "'.$domain.'" appears to be an ip address');
192 continue;
193 }
194 if (substr($domain, 0, 1) != '.') $domain = ".$domain";
195 if (!$this->_domain_match($request_host, $domain)) {
196 $this->debug(' - request host "'.$request_host.'" does not domain-match "'.$domain.'"');
197 continue;
198 }
199 } else {
200 // if domain is not specified in the set-cookie header, domain will default to
201 // the request host
202 $domain = $request_host;
203 }
204 // check path
205 if (isset($tmp_cookie['path']) && ($tmp_cookie['path'] != '')) {
206 $path = urldecode($tmp_cookie['path']);
207 if (!$this->_path_match($request_path, $path)) {
208 $this->debug(' - request path "'.$request_path.'" does not path-match "'.$path.'"');
209 continue;
210 }
211 } else {
212 $path = $request_path;
213 $path = substr($path, 0, strrpos($path, '/'));
214 if ($path == '') $path = '/';
215 }
216 // check if secure
217 $secure = (isset($tmp_cookie['secure'])) ? true : false;
218 // check expiry
219 if (isset($tmp_cookie['expires'])) {
220 if (($expires = strtotime($tmp_cookie['expires'])) < 0) {
221 $expires = null;
222 }
223 } else {
224 $expires = null;
225 }
226 // set cookie
227 $this->set_cookie($domain, $path, $tmp_cookie['name'], $tmp_cookie['value'], $secure, $expires);
228 }
229 }
230
231 // return array of set-cookie values extracted from HTTP response headers (string $h)
232 public function extractCookies($h) {
233 $x = 0;
234 $lines = 0;
235 $headers = array();
236 $last_match = false;
237 $h = explode("\n", $h);
238 foreach ($h as $line) {
239 $line = rtrim($line);
240 $lines++;
241
242 $trimmed_line = trim($line);
243 if (isset($line_last)) {
244 // check if we have \r\n\r\n (indicating the end of headers)
245 // some servers will not use CRLF (\r\n), so we make CR (\r) optional.
246 // if (preg_match('/\015?\012\015?\012/', $line_last.$line)) {
247 // break;
248 // }
249 // As an alternative, we can check if the current trimmed line is empty
250 if ($trimmed_line == '') {
251 break;
252 }
253
254 // check for continuation line...
255 // RFC 2616 Section 2.2 "Basic Rules":
256 // HTTP/1.1 header field values can be folded onto multiple lines if the
257 // continuation line begins with a space or horizontal tab. All linear
258 // white space, including folding, has the same semantics as SP. A
259 // recipient MAY replace any linear white space with a single SP before
260 // interpreting the field value or forwarding the message downstream.
261 if ($last_match && preg_match('/^\s+(.*)/', $line, $match)) {
262 // append to previous header value
263 $headers[$x-1] .= ' '.rtrim($match[1]);
264 continue;
265 }
266 }
267 $line_last = $line;
268
269 // split header name and value
270 if (preg_match('/^Set-Cookie\s*:\s*(.*)/i', $line, $match)) {
271 $headers[$x++] = rtrim($match[1]);
272 $last_match = true;
273 } else {
274 $last_match = false;
275 }
276 }
277 return $headers;
278 }
279
280 /**
281 * Set Cookie
282 * @param string $domain
283 * @param string $path
284 * @param string $name cookie name
285 * @param string $value cookie value
286 * @param bool $secure
287 * @param int $expires expiry time (null if session cookie, <= 0 will delete cookie)
288 * @return void
289 */
290 function set_cookie($domain, $path, $name, $value, $secure=false, $expires=null)
291 {
292 if ($domain == '') return;
293 if ($path == '') return;
294 if ($name == '') return;
295 // check if cookie needs to go
296 if (isset($expires) && ($expires <= 0)) {
297 if (isset($this->cookies[$domain][$path][$name])) unset($this->cookies[$domain][$path][$name]);
298 return;
299 }
300 if ($value == '') return;
301 $this->cookies[$domain][$path][$name] = array($value, $secure, $expires);
302 return;
303 }
304
305 /**
306 * Clear cookies - [domain [,path [,name]]] - call method with no arguments to clear all cookies.
307 * @param string $domain
308 * @param string $path
309 * @param string $name
310 * @return void
311 */
312 function clear($domain=null, $path=null, $name=null)
313 {
314 if (!isset($domain)) {
315 $this->cookies = array();
316 } elseif (!isset($path)) {
317 if (isset($this->cookies[$domain])) unset($this->cookies[$domain]);
318 } elseif (!isset($name)) {
319 if (isset($this->cookies[$domain][$path])) unset($this->cookies[$domain][$path]);
320 } elseif (isset($name)) {
321 if (isset($this->cookies[$domain][$path][$name])) unset($this->cookies[$domain][$path][$name]);
322 }
323 }
324
325 /**
326 * Compare string length - used for sorting
327 * @access private
328 * @return int
329 */
330 function _cmp_length($a, $b)
331 {
332 $la = strlen($a); $lb = strlen($b);
333 if ($la == $lb) return 0;
334 return ($la > $lb) ? -1 : 1;
335 }
336
337 /**
338 * Reduce domain
339 * @param string $domain
340 * @return string
341 * @access private
342 */
343 function _reduce_domain($domain)
344 {
345 if ($domain == '') return '';
346 if (substr($domain, 0, 1) == '.') return substr($domain, 1);
347 return substr($domain, strpos($domain, '.'));
348 }
349
350 /**
351 * Path match - check if path1 path-matches path2
352 *
353 * From RFC 2965:
354 * <i>For two strings that represent paths, P1 and P2, P1 path-matches P2
355 * if P2 is a prefix of P1 (including the case where P1 and P2 string-
356 * compare equal). Thus, the string /tec/waldo path-matches /tec.</i>
357 * @param string $path1
358 * @param string $path2
359 * @return bool
360 * @access private
361 */
362 function _path_match($path1, $path2)
363 {
364 return (substr($path1, 0, strlen($path2)) == $path2);
365 }
366
367 /**
368 * Domain match - check if domain1 domain-matches domain2
369 *
370 * A few extracts from RFC 2965:
371 * - A Set-Cookie2 from request-host y.x.foo.com for Domain=.foo.com
372 * would be rejected, because H is y.x and contains a dot.
373 *
374 * - A Set-Cookie2 from request-host x.foo.com for Domain=.foo.com
375 * would be accepted.
376 *
377 * - A Set-Cookie2 with Domain=.com or Domain=.com., will always be
378 * rejected, because there is no embedded dot.
379 *
380 * - A Set-Cookie2 from request-host example for Domain=.local will
381 * be accepted, because the effective host name for the request-
382 * host is example.local, and example.local domain-matches .local.
383 *
384 * I'm ignoring the first point for now (must check to see how other browsers handle
385 * this rule for Set-Cookie headers)
386 *
387 * @param string $domain1
388 * @param string $domain2
389 * @return bool
390 * @access private
391 */
392 function _domain_match($domain1, $domain2)
393 {
394 $domain1 = strtolower($domain1);
395 $domain2 = strtolower($domain2);
396 while (strpos($domain1, '.') !== false) {
397 if ($domain1 == $domain2) return true;
398 $domain1 = $this->_reduce_domain($domain1);
399 continue;
400 }
401 return false;
402 }
403} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/humble-http-agent/HumbleHttpAgent.php b/inc/3rdparty/libraries/humble-http-agent/HumbleHttpAgent.php
deleted file mode 100644
index 963f0c05..00000000
--- a/inc/3rdparty/libraries/humble-http-agent/HumbleHttpAgent.php
+++ /dev/null
@@ -1,810 +0,0 @@
1<?php
2/**
3 * Humble HTTP Agent
4 *
5 * This class is designed to take advantage of parallel HTTP requests
6 * offered by PHP's PECL HTTP extension or the curl_multi_* functions.
7 * For environments which do not have these options, it reverts to standard sequential
8 * requests (using file_get_contents())
9 *
10 * @version 1.4
11 * @date 2013-05-10
12 * @see http://php.net/HttpRequestPool
13 * @author Keyvan Minoukadeh
14 * @copyright 2011-2013 Keyvan Minoukadeh
15 * @license http://www.gnu.org/licenses/agpl-3.0.html AGPL v3
16 */
17
18class HumbleHttpAgent
19{
20 const METHOD_REQUEST_POOL = 1;
21 const METHOD_CURL_MULTI = 2;
22 const METHOD_FILE_GET_CONTENTS = 4;
23 //const UA_BROWSER = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1';
24 const UA_BROWSER = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.92 Safari/535.2';
25 const UA_PHP = 'PHP/5.4';
26 const REF_GOOGLE = 'http://www.google.co.uk/url?sa=t&source=web&cd=1';
27
28 protected $requests = array();
29 protected $redirectQueue = array();
30 protected $requestOptions;
31 protected $maxParallelRequests = 5;
32 protected $cache = null; //TODO
33 protected $httpContext;
34 protected $minimiseMemoryUse = false; //TODO
35 protected $method;
36 protected $cookieJar;
37 public $debug = false;
38 public $debugVerbose = false;
39 public $rewriteHashbangFragment = true; // see http://code.google.com/web/ajaxcrawling/docs/specification.html
40 public $maxRedirects = 5;
41 public $userAgentMap = array();
42 public $rewriteUrls = array();
43 public $userAgentDefault;
44 public $referer;
45 //public $userAgent = 'Mozilla/5.0';
46
47 // Prevent certain file/mime types
48 // HTTP responses which match these content types will
49 // be returned without body.
50 public $headerOnlyTypes = array();
51 // URLs ending with one of these extensions will
52 // prompt Humble HTTP Agent to send a HEAD request first
53 // to see if returned content type matches $headerOnlyTypes.
54 public $headerOnlyClues = array('pdf','mp3','zip','exe','gif','gzip','gz','jpeg','jpg','mpg','mpeg','png','ppt','mov');
55 // AJAX triggers to search for.
56 // for AJAX sites, e.g. Blogger with its dynamic views templates.
57 public $ajaxTriggers = array("<meta name='fragment' content='!'",'<meta name="fragment" content="!"',"<meta content='!' name='fragment'",'<meta content="!" name="fragment"');
58
59 //TODO: set max file size
60 //TODO: normalise headers
61
62 function __construct($requestOptions=null, $method=null) {
63 $this->userAgentDefault = self::UA_BROWSER;
64 $this->referer = self::REF_GOOGLE;
65 // set the request method
66 if (in_array($method, array(1,2,4))) {
67 $this->method = $method;
68 } else {
69 if (class_exists('HttpRequestPool')) {
70 $this->method = self::METHOD_REQUEST_POOL;
71 } elseif (function_exists('curl_multi_init')) {
72 $this->method = self::METHOD_CURL_MULTI;
73 } else {
74 $this->method = self::METHOD_FILE_GET_CONTENTS;
75 }
76 }
77 if ($this->method == self::METHOD_CURL_MULTI) {
78 require_once(dirname(__FILE__).'/RollingCurl.php');
79 }
80 // create cookie jar
81 $this->cookieJar = new CookieJar();
82 // set request options (redirect must be 0)
83 $this->requestOptions = array(
84 'timeout' => 15,
85 'connecttimeout' => 15,
86 'dns_cache_timeout' => 300,
87 'redirect' => 0 // we handle redirects manually so we can rewrite the new hashbang URLs that are creeping up over the web
88 // TODO: test onprogress?
89 );
90 if (is_array($requestOptions)) {
91 $this->requestOptions = array_merge($this->requestOptions, $requestOptions);
92 }
93 $this->httpContext = array(
94 'http' => array(
95 'ignore_errors' => true,
96 'timeout' => $this->requestOptions['timeout'],
97 'max_redirects' => $this->requestOptions['redirect'],
98 'header' => "Accept: */*\r\n"
99 )
100 );
101 }
102
103 protected function debug($msg) {
104 if ($this->debug) {
105 $mem = round(memory_get_usage()/1024, 2);
106 $memPeak = round(memory_get_peak_usage()/1024, 2);
107 echo '* ',$msg;
108 if ($this->debugVerbose) echo ' - mem used: ',$mem," (peak: $memPeak)";
109 echo "\n";
110 ob_flush();
111 flush();
112 }
113 }
114
115 protected function getUserAgent($url, $asArray=false) {
116 $host = @parse_url($url, PHP_URL_HOST);
117 if (strtolower(substr($host, 0, 4)) == 'www.') {
118 $host = substr($host, 4);
119 }
120 if ($host) {
121 $try = array($host);
122 $split = explode('.', $host);
123 if (count($split) > 1) {
124 array_shift($split);
125 $try[] = '.'.implode('.', $split);
126 }
127 foreach ($try as $h) {
128 if (isset($this->userAgentMap[$h])) {
129 $ua = $this->userAgentMap[$h];
130 break;
131 }
132 }
133 }
134 if (!isset($ua)) $ua = $this->userAgentDefault;
135 if ($asArray) {
136 return array('User-Agent' => $ua);
137 } else {
138 return 'User-Agent: '.$ua;
139 }
140 }
141
142 public function rewriteHashbangFragment($url) {
143 // return $url if there's no '#!'
144 if (strpos($url, '#!') === false) return $url;
145 // split $url and rewrite
146 // TODO: is SimplePie_IRI included?
147 $iri = new SimplePie_IRI($url);
148 $fragment = substr($iri->fragment, 1); // strip '!'
149 $iri->fragment = null;
150 if (isset($iri->query)) {
151 parse_str($iri->query, $query);
152 } else {
153 $query = array();
154 }
155 $query['_escaped_fragment_'] = (string)$fragment;
156 $iri->query = str_replace('%2F', '/', http_build_query($query)); // needed for some sites
157 return $iri->get_iri();
158 }
159
160 public function getRedirectURLfromHTML($url, $html) {
161 $redirect_url = $this->getMetaRefreshURL($url, $html);
162 if (!$redirect_url) {
163 $redirect_url = $this->getUglyURL($url, $html);
164 }
165 return $redirect_url;
166 }
167
168 public function getMetaRefreshURL($url, $html) {
169 if ($html == '') return false;
170 // <meta HTTP-EQUIV="REFRESH" content="0; url=http://www.bernama.com/bernama/v6/newsindex.php?id=943513">
171 if (!preg_match('!<meta http-equiv=["\']?refresh["\']? content=["\']?[0-9];\s*url=["\']?([^"\'>]+)["\']*>!i', $html, $match)) {
172 return false;
173 }
174 $redirect_url = $match[1];
175 if (preg_match('!^https?://!i', $redirect_url)) {
176 // already absolute
177 $this->debug('Meta refresh redirect found (http-equiv="refresh"), new URL: '.$redirect_url);
178 return $redirect_url;
179 }
180 // absolutize redirect URL
181 $base = new SimplePie_IRI($url);
182 // remove '//' in URL path (causes URLs not to resolve properly)
183 if (isset($base->path)) $base->path = preg_replace('!//+!', '/', $base->path);
184 if ($absolute = SimplePie_IRI::absolutize($base, $redirect_url)) {
185 $this->debug('Meta refresh redirect found (http-equiv="refresh"), new URL: '.$absolute);
186 return $absolute;
187 }
188 return false;
189 }
190
191 public function getUglyURL($url, $html) {
192 if ($html == '') return false;
193 $found = false;
194 foreach ($this->ajaxTriggers as $string) {
195 if (stripos($html, $string)) {
196 $found = true;
197 break;
198 }
199 }
200 if (!$found) return false;
201 $iri = new SimplePie_IRI($url);
202 if (isset($iri->query)) {
203 parse_str($iri->query, $query);
204 } else {
205 $query = array();
206 }
207 $query['_escaped_fragment_'] = '';
208 $iri->query = str_replace('%2F', '/', http_build_query($query)); // needed for some sites
209 $ugly_url = $iri->get_iri();
210 $this->debug('AJAX trigger (meta name="fragment" content="!") found, new URL: '.$ugly_url);
211 return $ugly_url;
212 }
213
214 public function removeFragment($url) {
215 $pos = strpos($url, '#');
216 if ($pos === false) {
217 return $url;
218 } else {
219 return substr($url, 0, $pos);
220 }
221 }
222
223 public function rewriteUrls($url) {
224 foreach ($this->rewriteUrls as $find => $action) {
225 if (strpos($url, $find) !== false) {
226 if (is_array($action)) {
227 return strtr($url, $action);
228 }
229 }
230 }
231 return $url;
232 }
233
234 public function enableDebug($bool=true) {
235 $this->debug = (bool)$bool;
236 }
237
238 public function minimiseMemoryUse($bool = true) {
239 $this->minimiseMemoryUse = $bool;
240 }
241
242 public function setMaxParallelRequests($max) {
243 $this->maxParallelRequests = $max;
244 }
245
246 public function validateUrl($url) {
247 $url = filter_var($url, FILTER_SANITIZE_URL);
248 $test = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
249 // deal with bug http://bugs.php.net/51192 (present in PHP 5.2.13 and PHP 5.3.2)
250 if ($test === false) {
251 $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
252 }
253 if ($test !== false && $test !== null && preg_match('!^https?://!', $url)) {
254 return $url;
255 } else {
256 return false;
257 }
258 }
259
260 public function fetchAll(array $urls) {
261 $this->fetchAllOnce($urls, $isRedirect=false);
262 $redirects = 0;
263 while (!empty($this->redirectQueue) && ++$redirects <= $this->maxRedirects) {
264 $this->debug("Following redirects #$redirects...");
265 $this->fetchAllOnce($this->redirectQueue, $isRedirect=true);
266 }
267 }
268
269 // fetch all URLs without following redirects
270 public function fetchAllOnce(array $urls, $isRedirect=false) {
271 if (!$isRedirect) $urls = array_unique($urls);
272 if (empty($urls)) return;
273
274 //////////////////////////////////////////////////////
275 // parallel (HttpRequestPool)
276 if ($this->method == self::METHOD_REQUEST_POOL) {
277 $this->debug('Starting parallel fetch (HttpRequestPool)');
278 try {
279 while (count($urls) > 0) {
280 $this->debug('Processing set of '.min($this->maxParallelRequests, count($urls)));
281 $subset = array_splice($urls, 0, $this->maxParallelRequests);
282 $pool = new HttpRequestPool();
283 foreach ($subset as $orig => $url) {
284 if (!$isRedirect) $orig = $url;
285 unset($this->redirectQueue[$orig]);
286 $this->debug("...$url");
287 if (!$isRedirect && isset($this->requests[$url])) {
288 $this->debug("......in memory");
289 /*
290 } elseif ($this->isCached($url)) {
291 $this->debug("......is cached");
292 if (!$this->minimiseMemoryUse) {
293 $this->requests[$url] = $this->getCached($url);
294 }
295 */
296 } else {
297 $this->debug("......adding to pool");
298 $req_url = $this->rewriteUrls($url);
299 $req_url = ($this->rewriteHashbangFragment) ? $this->rewriteHashbangFragment($req_url) : $req_url;
300 $req_url = $this->removeFragment($req_url);
301 if (!empty($this->headerOnlyTypes) && !isset($this->requests[$orig]['wrongGuess']) && $this->possibleUnsupportedType($req_url)) {
302 $_meth = HttpRequest::METH_HEAD;
303 } else {
304 $_meth = HttpRequest::METH_GET;
305 unset($this->requests[$orig]['wrongGuess']);
306 }
307 $httpRequest = new HttpRequest($req_url, $_meth, $this->requestOptions);
308 // send cookies, if we have any
309 if ($cookies = $this->cookieJar->getMatchingCookies($req_url)) {
310 $this->debug("......sending cookies: $cookies");
311 $httpRequest->addHeaders(array('Cookie' => $cookies));
312 }
313 //$httpRequest->addHeaders(array('User-Agent' => $this->userAgent));
314 $httpRequest->addHeaders($this->getUserAgent($req_url, true));
315 // add referer for picky sites
316 $httpRequest->addheaders(array('Referer' => $this->referer));
317 $this->requests[$orig] = array('headers'=>null, 'body'=>null, 'httpRequest'=>$httpRequest);
318 $this->requests[$orig]['original_url'] = $orig;
319 $pool->attach($httpRequest);
320 }
321 }
322 // did we get anything into the pool?
323 if (count($pool) > 0) {
324 $this->debug('Sending request...');
325 try {
326 $pool->send();
327 } catch (HttpRequestPoolException $e) {
328 // do nothing
329 }
330 $this->debug('Received responses');
331 foreach($subset as $orig => $url) {
332 if (!$isRedirect) $orig = $url;
333 $request = $this->requests[$orig]['httpRequest'];
334 //$this->requests[$orig]['headers'] = $this->headersToString($request->getResponseHeader());
335 // getResponseHeader() doesn't return status line, so, for consistency...
336 $this->requests[$orig]['headers'] = substr($request->getRawResponseMessage(), 0, $request->getResponseInfo('header_size'));
337 // check content type
338 // TODO: use getResponseHeader('content-type') or getResponseInfo()
339 if ($this->headerOnlyType($this->requests[$orig]['headers'])) {
340 $this->requests[$orig]['body'] = '';
341 $_header_only_type = true;
342 $this->debug('Header only type returned');
343 } else {
344 $this->requests[$orig]['body'] = $request->getResponseBody();
345 $_header_only_type = false;
346 }
347 $this->requests[$orig]['effective_url'] = $request->getResponseInfo('effective_url');
348 $this->requests[$orig]['status_code'] = $status_code = $request->getResponseCode();
349 // is redirect?
350 if ((in_array($status_code, array(300, 301, 302, 303, 307)) || $status_code > 307 && $status_code < 400) && $request->getResponseHeader('location')) {
351 $redirectURL = $request->getResponseHeader('location');
352 if (!preg_match('!^https?://!i', $redirectURL)) {
353 $redirectURL = SimplePie_Misc::absolutize_url($redirectURL, $url);
354 }
355 if ($this->validateURL($redirectURL)) {
356 $this->debug('Redirect detected. Valid URL: '.$redirectURL);
357 // store any cookies
358 $cookies = $request->getResponseHeader('set-cookie');
359 if ($cookies && !is_array($cookies)) $cookies = array($cookies);
360 if ($cookies) $this->cookieJar->storeCookies($url, $cookies);
361 $this->redirectQueue[$orig] = $redirectURL;
362 } else {
363 $this->debug('Redirect detected. Invalid URL: '.$redirectURL);
364 }
365 } elseif (!$_header_only_type && $request->getMethod() === HttpRequest::METH_HEAD) {
366 // the response content-type did not match our 'header only' types,
367 // but we'd issues a HEAD request because we assumed it would. So
368 // let's queue a proper GET request for this item...
369 $this->debug('Wrong guess at content-type, queing GET request');
370 $this->requests[$orig]['wrongGuess'] = true;
371 $this->redirectQueue[$orig] = $this->requests[$orig]['effective_url'];
372 } elseif (strpos($this->requests[$orig]['effective_url'], '_escaped_fragment_') === false) {
373 // check for <meta name='fragment' content='!'/>
374 // for AJAX sites, e.g. Blogger with its dynamic views templates.
375 // Based on Google's spec: https://developers.google.com/webmasters/ajax-crawling/docs/specification
376 if (isset($this->requests[$orig]['body'])) {
377 $redirectURL = $this->getRedirectURLfromHTML($this->requests[$orig]['effective_url'], substr($this->requests[$orig]['body'], 0, 4000));
378 if ($redirectURL) {
379 $this->redirectQueue[$orig] = $redirectURL;
380 }
381 }
382 }
383 //die($url.' -multi- '.$request->getResponseInfo('effective_url'));
384 $pool->detach($request);
385 unset($this->requests[$orig]['httpRequest'], $request);
386 /*
387 if ($this->minimiseMemoryUse) {
388 if ($this->cache($url)) {
389 unset($this->requests[$url]);
390 }
391 }
392 */
393 }
394 }
395 }
396 } catch (HttpException $e) {
397 $this->debug($e);
398 return false;
399 }
400 }
401
402 //////////////////////////////////////////////////////////
403 // parallel (curl_multi_*)
404 elseif ($this->method == self::METHOD_CURL_MULTI) {
405 $this->debug('Starting parallel fetch (curl_multi_*)');
406 while (count($urls) > 0) {
407 $this->debug('Processing set of '.min($this->maxParallelRequests, count($urls)));
408 $subset = array_splice($urls, 0, $this->maxParallelRequests);
409 $pool = new RollingCurl(array($this, 'handleCurlResponse'));
410 $pool->window_size = count($subset);
411
412 foreach ($subset as $orig => $url) {
413 if (!$isRedirect) $orig = $url;
414 unset($this->redirectQueue[$orig]);
415 $this->debug("...$url");
416 if (!$isRedirect && isset($this->requests[$url])) {
417 $this->debug("......in memory");
418 /*
419 } elseif ($this->isCached($url)) {
420 $this->debug("......is cached");
421 if (!$this->minimiseMemoryUse) {
422 $this->requests[$url] = $this->getCached($url);
423 }
424 */
425 } else {
426 $this->debug("......adding to pool");
427 $req_url = $this->rewriteUrls($url);
428 $req_url = ($this->rewriteHashbangFragment) ? $this->rewriteHashbangFragment($req_url) : $req_url;
429 $req_url = $this->removeFragment($req_url);
430 if (!empty($this->headerOnlyTypes) && !isset($this->requests[$orig]['wrongGuess']) && $this->possibleUnsupportedType($req_url)) {
431 $_meth = 'HEAD';
432 } else {
433 $_meth = 'GET';
434 unset($this->requests[$orig]['wrongGuess']);
435 }
436 $headers = array();
437 //$headers[] = 'User-Agent: '.$this->userAgent;
438 $headers[] = $this->getUserAgent($req_url);
439 // add referer for picky sites
440 $headers[] = 'Referer: '.$this->referer;
441 // send cookies, if we have any
442 if ($cookies = $this->cookieJar->getMatchingCookies($req_url)) {
443 $this->debug("......sending cookies: $cookies");
444 $headers[] = 'Cookie: '.$cookies;
445 }
446 $httpRequest = new RollingCurlRequest($req_url, $_meth, null, $headers, array(
447 CURLOPT_CONNECTTIMEOUT => $this->requestOptions['timeout'],
448 CURLOPT_TIMEOUT => $this->requestOptions['timeout']
449 ));
450 $httpRequest->set_original_url($orig);
451 $this->requests[$orig] = array('headers'=>null, 'body'=>null, 'httpRequest'=>$httpRequest);
452 $this->requests[$orig]['original_url'] = $orig; // TODO: is this needed anymore?
453 $pool->add($httpRequest);
454 }
455 }
456 // did we get anything into the pool?
457 if (count($pool) > 0) {
458 $this->debug('Sending request...');
459 $pool->execute(); // this will call handleCurlResponse() and populate $this->requests[$orig]
460 $this->debug('Received responses');
461 foreach($subset as $orig => $url) {
462 if (!$isRedirect) $orig = $url;
463 // $this->requests[$orig]['headers']
464 // $this->requests[$orig]['body']
465 // $this->requests[$orig]['effective_url']
466 // check content type
467 if ($this->headerOnlyType($this->requests[$orig]['headers'])) {
468 $this->requests[$orig]['body'] = '';
469 $_header_only_type = true;
470 $this->debug('Header only type returned');
471 } else {
472 $_header_only_type = false;
473 }
474 $status_code = $this->requests[$orig]['status_code'];
475 if ((in_array($status_code, array(300, 301, 302, 303, 307)) || $status_code > 307 && $status_code < 400) && isset($this->requests[$orig]['location'])) {
476 $redirectURL = $this->requests[$orig]['location'];
477 if (!preg_match('!^https?://!i', $redirectURL)) {
478 $redirectURL = SimplePie_Misc::absolutize_url($redirectURL, $url);
479 }
480 if ($this->validateURL($redirectURL)) {
481 $this->debug('Redirect detected. Valid URL: '.$redirectURL);
482 // store any cookies
483 $cookies = $this->cookieJar->extractCookies($this->requests[$orig]['headers']);
484 if (!empty($cookies)) $this->cookieJar->storeCookies($url, $cookies);
485 $this->redirectQueue[$orig] = $redirectURL;
486 } else {
487 $this->debug('Redirect detected. Invalid URL: '.$redirectURL);
488 }
489 } elseif (!$_header_only_type && $this->requests[$orig]['method'] == 'HEAD') {
490 // the response content-type did not match our 'header only' types,
491 // but we'd issues a HEAD request because we assumed it would. So
492 // let's queue a proper GET request for this item...
493 $this->debug('Wrong guess at content-type, queing GET request');
494 $this->requests[$orig]['wrongGuess'] = true;
495 $this->redirectQueue[$orig] = $this->requests[$orig]['effective_url'];
496 } elseif (strpos($this->requests[$orig]['effective_url'], '_escaped_fragment_') === false) {
497 // check for <meta name='fragment' content='!'/>
498 // for AJAX sites, e.g. Blogger with its dynamic views templates.
499 // Based on Google's spec: https://developers.google.com/webmasters/ajax-crawling/docs/specification
500 if (isset($this->requests[$orig]['body'])) {
501 $redirectURL = $this->getRedirectURLfromHTML($this->requests[$orig]['effective_url'], substr($this->requests[$orig]['body'], 0, 4000));
502 if ($redirectURL) {
503 $this->redirectQueue[$orig] = $redirectURL;
504 }
505 }
506 }
507 // die($url.' -multi- '.$request->getResponseInfo('effective_url'));
508 unset($this->requests[$orig]['httpRequest'], $this->requests[$orig]['method']);
509 }
510 }
511 }
512 }
513
514 //////////////////////////////////////////////////////
515 // sequential (file_get_contents)
516 else {
517 $this->debug('Starting sequential fetch (file_get_contents)');
518 $this->debug('Processing set of '.count($urls));
519 foreach ($urls as $orig => $url) {
520 if (!$isRedirect) $orig = $url;
521 unset($this->redirectQueue[$orig]);
522 $this->debug("...$url");
523 if (!$isRedirect && isset($this->requests[$url])) {
524 $this->debug("......in memory");
525 /*
526 } elseif ($this->isCached($url)) {
527 $this->debug("......is cached");
528 if (!$this->minimiseMemoryUse) {
529 $this->requests[$url] = $this->getCached($url);
530 }
531 */
532 } else {
533 $this->debug("Sending request for $url");
534 $this->requests[$orig]['original_url'] = $orig;
535 $req_url = $this->rewriteUrls($url);
536 $req_url = ($this->rewriteHashbangFragment) ? $this->rewriteHashbangFragment($req_url) : $req_url;
537 $req_url = $this->removeFragment($req_url);
538 // send cookies, if we have any
539 $httpContext = $this->httpContext;
540 $httpContext['http']['header'] .= $this->getUserAgent($req_url)."\r\n";
541 // add referer for picky sites
542 $httpContext['http']['header'] .= 'Referer: '.$this->referer."\r\n";
543 if ($cookies = $this->cookieJar->getMatchingCookies($req_url)) {
544 $this->debug("......sending cookies: $cookies");
545 $httpContext['http']['header'] .= 'Cookie: '.$cookies."\r\n";
546 }
547 if (false !== ($html = @file_get_contents($req_url, false, stream_context_create($httpContext)))) {
548 $this->debug('Received response');
549 // get status code
550 if (!isset($http_response_header[0]) || !preg_match('!^HTTP/\d+\.\d+\s+(\d+)!', trim($http_response_header[0]), $match)) {
551 $this->debug('Error: no status code found');
552 // TODO: handle error - no status code
553 } else {
554 $this->requests[$orig]['headers'] = $this->headersToString($http_response_header, false);
555 // check content type
556 if ($this->headerOnlyType($this->requests[$orig]['headers'])) {
557 $this->requests[$orig]['body'] = '';
558 } else {
559 $this->requests[$orig]['body'] = $html;
560 }
561 $this->requests[$orig]['effective_url'] = $req_url;
562 $this->requests[$orig]['status_code'] = $status_code = (int)$match[1];
563 unset($match);
564 // handle redirect
565 if (preg_match('/^Location:(.*?)$/mi', $this->requests[$orig]['headers'], $match)) {
566 $this->requests[$orig]['location'] = trim($match[1]);
567 }
568 if ((in_array($status_code, array(300, 301, 302, 303, 307)) || $status_code > 307 && $status_code < 400) && isset($this->requests[$orig]['location'])) {
569 $redirectURL = $this->requests[$orig]['location'];
570 if (!preg_match('!^https?://!i', $redirectURL)) {
571 $redirectURL = SimplePie_Misc::absolutize_url($redirectURL, $url);
572 }
573 if ($this->validateURL($redirectURL)) {
574 $this->debug('Redirect detected. Valid URL: '.$redirectURL);
575 // store any cookies
576 $cookies = $this->cookieJar->extractCookies($this->requests[$orig]['headers']);
577 if (!empty($cookies)) $this->cookieJar->storeCookies($url, $cookies);
578 $this->redirectQueue[$orig] = $redirectURL;
579 } else {
580 $this->debug('Redirect detected. Invalid URL: '.$redirectURL);
581 }
582 } elseif (strpos($this->requests[$orig]['effective_url'], '_escaped_fragment_') === false) {
583 // check for <meta name='fragment' content='!'/>
584 // for AJAX sites, e.g. Blogger with its dynamic views templates.
585 // Based on Google's spec: https://developers.google.com/webmasters/ajax-crawling/docs/specification
586 if (isset($this->requests[$orig]['body'])) {
587 $redirectURL = $this->getRedirectURLfromHTML($this->requests[$orig]['effective_url'], substr($this->requests[$orig]['body'], 0, 4000));
588 if ($redirectURL) {
589 $this->redirectQueue[$orig] = $redirectURL;
590 }
591 }
592 }
593 }
594 } else {
595 $this->debug('Error retrieving URL');
596 //print_r($req_url);
597 //print_r($http_response_header);
598 //print_r($html);
599
600 // TODO: handle error - failed to retrieve URL
601 }
602 }
603 }
604 }
605 }
606
607 public function handleCurlResponse($response, $info, $request) {
608 $orig = $request->url_original;
609 $this->requests[$orig]['headers'] = substr($response, 0, $info['header_size']);
610 $this->requests[$orig]['body'] = substr($response, $info['header_size']);
611 $this->requests[$orig]['method'] = $request->method;
612 $this->requests[$orig]['effective_url'] = $info['url'];
613 $this->requests[$orig]['status_code'] = (int)$info['http_code'];
614 if (preg_match('/^Location:(.*?)$/mi', $this->requests[$orig]['headers'], $match)) {
615 $this->requests[$orig]['location'] = trim($match[1]);
616 }
617 }
618
619 protected function headersToString(array $headers, $associative=true) {
620 if (!$associative) {
621 return implode("\n", $headers);
622 } else {
623 $str = '';
624 foreach ($headers as $key => $val) {
625 if (is_array($val)) {
626 foreach ($val as $v) $str .= "$key: $v\n";
627 } else {
628 $str .= "$key: $val\n";
629 }
630 }
631 return rtrim($str);
632 }
633 }
634
635 public function get($url, $remove=false, $gzdecode=true) {
636 $url = "$url";
637 if (isset($this->requests[$url]) && isset($this->requests[$url]['body'])) {
638 $this->debug("URL already fetched - in memory ($url, effective: {$this->requests[$url]['effective_url']})");
639 $response = $this->requests[$url];
640 /*
641 } elseif ($this->isCached($url)) {
642 $this->debug("URL already fetched - in disk cache ($url)");
643 $response = $this->getCached($url);
644 $this->requests[$url] = $response;
645 */
646 } else {
647 $this->debug("Fetching URL ($url)");
648 $this->fetchAll(array($url));
649 if (isset($this->requests[$url]) && isset($this->requests[$url]['body'])) {
650 $response = $this->requests[$url];
651 } else {
652 $this->debug("Request failed");
653 $response = false;
654 }
655 }
656 /*
657 if ($this->minimiseMemoryUse && $response) {
658 $this->cache($url);
659 unset($this->requests[$url]);
660 }
661 */
662 if ($remove && $response) unset($this->requests[$url]);
663 if ($gzdecode && stripos($response['headers'], 'Content-Encoding: gzip')) {
664 if ($html = gzdecode($response['body'])) {
665 $response['body'] = $html;
666 }
667 }
668 return $response;
669 }
670
671 public function parallelSupport() {
672 return class_exists('HttpRequestPool') || function_exists('curl_multi_init');
673 }
674
675 private function headerOnlyType($headers) {
676 if (preg_match('!^Content-Type:\s*(([a-z-]+)/([^;\r\n ]+))!im', $headers, $match)) {
677 // look for full mime type (e.g. image/jpeg) or just type (e.g. image)
678 $match[1] = strtolower(trim($match[1]));
679 $match[2] = strtolower(trim($match[2]));
680 foreach (array($match[1], $match[2]) as $mime) {
681 if (in_array($mime, $this->headerOnlyTypes)) return true;
682 }
683 }
684 return false;
685 }
686
687 private function possibleUnsupportedType($url) {
688 $path = @parse_url($url, PHP_URL_PATH);
689 if ($path && strpos($path, '.') !== false) {
690 $ext = strtolower(trim(pathinfo($path, PATHINFO_EXTENSION)));
691 return in_array($ext, $this->headerOnlyClues);
692 }
693 return false;
694 }
695}
696
697// gzdecode from http://www.php.net/manual/en/function.gzdecode.php#82930
698if (!function_exists('gzdecode')) {
699 function gzdecode($data,&$filename='',&$error='',$maxlength=null)
700 {
701 $len = strlen($data);
702 if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) {
703 $error = "Not in GZIP format.";
704 return null; // Not GZIP format (See RFC 1952)
705 }
706 $method = ord(substr($data,2,1)); // Compression method
707 $flags = ord(substr($data,3,1)); // Flags
708 if ($flags & 31 != $flags) {
709 $error = "Reserved bits not allowed.";
710 return null;
711 }
712 // NOTE: $mtime may be negative (PHP integer limitations)
713 $mtime = unpack("V", substr($data,4,4));
714 $mtime = $mtime[1];
715 $xfl = substr($data,8,1);
716 $os = substr($data,8,1);
717 $headerlen = 10;
718 $extralen = 0;
719 $extra = "";
720 if ($flags & 4) {
721 // 2-byte length prefixed EXTRA data in header
722 if ($len - $headerlen - 2 < 8) {
723 return false; // invalid
724 }
725 $extralen = unpack("v",substr($data,8,2));
726 $extralen = $extralen[1];
727 if ($len - $headerlen - 2 - $extralen < 8) {
728 return false; // invalid
729 }
730 $extra = substr($data,10,$extralen);
731 $headerlen += 2 + $extralen;
732 }
733 $filenamelen = 0;
734 $filename = "";
735 if ($flags & 8) {
736 // C-style string
737 if ($len - $headerlen - 1 < 8) {
738 return false; // invalid
739 }
740 $filenamelen = strpos(substr($data,$headerlen),chr(0));
741 if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) {
742 return false; // invalid
743 }
744 $filename = substr($data,$headerlen,$filenamelen);
745 $headerlen += $filenamelen + 1;
746 }
747 $commentlen = 0;
748 $comment = "";
749 if ($flags & 16) {
750 // C-style string COMMENT data in header
751 if ($len - $headerlen - 1 < 8) {
752 return false; // invalid
753 }
754 $commentlen = strpos(substr($data,$headerlen),chr(0));
755 if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) {
756 return false; // Invalid header format
757 }
758 $comment = substr($data,$headerlen,$commentlen);
759 $headerlen += $commentlen + 1;
760 }
761 $headercrc = "";
762 if ($flags & 2) {
763 // 2-bytes (lowest order) of CRC32 on header present
764 if ($len - $headerlen - 2 < 8) {
765 return false; // invalid
766 }
767 $calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
768 $headercrc = unpack("v", substr($data,$headerlen,2));
769 $headercrc = $headercrc[1];
770 if ($headercrc != $calccrc) {
771 $error = "Header checksum failed.";
772 return false; // Bad header CRC
773 }
774 $headerlen += 2;
775 }
776 // GZIP FOOTER
777 $datacrc = unpack("V",substr($data,-8,4));
778 $datacrc = sprintf('%u',$datacrc[1] & 0xFFFFFFFF);
779 $isize = unpack("V",substr($data,-4));
780 $isize = $isize[1];
781 // decompression:
782 $bodylen = $len-$headerlen-8;
783 if ($bodylen < 1) {
784 // IMPLEMENTATION BUG!
785 return null;
786 }
787 $body = substr($data,$headerlen,$bodylen);
788 $data = "";
789 if ($bodylen > 0) {
790 switch ($method) {
791 case 8:
792 // Currently the only supported compression method:
793 $data = gzinflate($body,$maxlength);
794 break;
795 default:
796 $error = "Unknown compression method.";
797 return false;
798 }
799 } // zero-byte body content is allowed
800 // Verifiy CRC32
801 $crc = sprintf("%u",crc32($data));
802 $crcOK = $crc == $datacrc;
803 $lenOK = $isize == strlen($data);
804 if (!$lenOK || !$crcOK) {
805 $error = ( $lenOK ? '' : 'Length check FAILED. ') . ( $crcOK ? '' : 'Checksum FAILED.');
806 return false;
807 }
808 return $data;
809 }
810} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/humble-http-agent/RollingCurl.php b/inc/3rdparty/libraries/humble-http-agent/RollingCurl.php
deleted file mode 100644
index d24dc690..00000000
--- a/inc/3rdparty/libraries/humble-http-agent/RollingCurl.php
+++ /dev/null
@@ -1,402 +0,0 @@
1<?php
2/*
3Authored by Josh Fraser (www.joshfraser.com)
4Released under Apache License 2.0
5
6Maintained by Alexander Makarov, http://rmcreative.ru/
7
8Modified by Keyvan Minoukadeh for the Five Filters project: http://fivefilters.org
9*/
10
11/**
12 * Class that represent a single curl request
13 */
14class RollingCurlRequest {
15 public $url = false;
16 public $url_original = false; // used for tracking redirects
17 public $method = 'GET';
18 public $post_data = null;
19 public $headers = null;
20 public $options = null;
21
22 /**
23 * @param string $url
24 * @param string $method
25 * @param $post_data
26 * @param $headers
27 * @param $options
28 * @return void
29 */
30 function __construct($url, $method = "GET", $post_data = null, $headers = null, $options = null) {
31 $this->url = $url;
32 $this->url_original = $url;
33 $this->method = $method;
34 $this->post_data = $post_data;
35 $this->headers = $headers;
36 $this->options = $options;
37 }
38
39 /**
40 * @param string $url
41 * @return void
42 */
43 public function set_original_url($url) {
44 $this->url_original = $url;
45 }
46 /**
47 * @return void
48 */
49 public function __destruct() {
50 unset($this->url, $this->url_original, $this->method, $this->post_data, $this->headers, $this->options);
51 }
52}
53
54/**
55 * RollingCurl custom exception
56 */
57class RollingCurlException extends Exception {
58}
59
60/**
61 * Class that holds a rolling queue of curl requests.
62 *
63 * @throws RollingCurlException
64 */
65class RollingCurl implements Countable {
66 /**
67 * @var int
68 *
69 * Window size is the max number of simultaneous connections allowed.
70 *
71 * REMEMBER TO RESPECT THE SERVERS:
72 * Sending too many requests at one time can easily be perceived
73 * as a DOS attack. Increase this window_size if you are making requests
74 * to multiple servers or have permission from the receving server admins.
75 */
76 private $window_size = 5;
77
78 /**
79 * @var float
80 *
81 * Timeout is the timeout used for curl_multi_select.
82 */
83 private $timeout = 10;
84
85 /**
86 * @var string|array
87 *
88 * Callback function to be applied to each result.
89 */
90 private $callback;
91
92 /**
93 * @var array
94 *
95 * Set your base options that you want to be used with EVERY request.
96 */
97 protected $options = array(
98 CURLOPT_SSL_VERIFYPEER => 0,
99 CURLOPT_RETURNTRANSFER => 1,
100 CURLOPT_CONNECTTIMEOUT => 30,
101 CURLOPT_TIMEOUT => 30
102 );
103
104 /**
105 * @var array
106 */
107 private $headers = array();
108
109 /**
110 * @var Request[]
111 *
112 * The request queue
113 */
114 private $requests = array();
115
116 /**
117 * @var RequestMap[]
118 *
119 * Maps handles to request indexes
120 */
121 private $requestMap = array();
122
123 /**
124 * @param $callback
125 * Callback function to be applied to each result.
126 *
127 * Can be specified as 'my_callback_function'
128 * or array($object, 'my_callback_method').
129 *
130 * Function should take three parameters: $response, $info, $request.
131 * $response is response body, $info is additional curl info.
132 * $request is the original request
133 *
134 * @return void
135 */
136 function __construct($callback = null) {
137 $this->callback = $callback;
138 }
139
140 /**
141 * @param string $name
142 * @return mixed
143 */
144 public function __get($name) {
145 return (isset($this->{$name})) ? $this->{$name} : null;
146 }
147
148 /**
149 * @param string $name
150 * @param mixed $value
151 * @return bool
152 */
153 public function __set($name, $value) {
154 // append the base options & headers
155 if ($name == "options" || $name == "headers") {
156 $this->{$name} = $value + $this->{$name};
157 } else {
158 $this->{$name} = $value;
159 }
160 return true;
161 }
162
163 /**
164 * Count number of requests added (Countable interface)
165 *
166 * @return int
167 */
168 public function count() {
169 return count($this->requests);
170 }
171
172 /**
173 * Add a request to the request queue
174 *
175 * @param Request $request
176 * @return bool
177 */
178 public function add($request) {
179 $this->requests[] = $request;
180 return true;
181 }
182
183 /**
184 * Create new Request and add it to the request queue
185 *
186 * @param string $url
187 * @param string $method
188 * @param $post_data
189 * @param $headers
190 * @param $options
191 * @return bool
192 */
193 public function request($url, $method = "GET", $post_data = null, $headers = null, $options = null) {
194 $this->requests[] = new RollingCurlRequest($url, $method, $post_data, $headers, $options);
195 return true;
196 }
197
198 /**
199 * Perform GET request
200 *
201 * @param string $url
202 * @param $headers
203 * @param $options
204 * @return bool
205 */
206 public function get($url, $headers = null, $options = null) {
207 return $this->request($url, "GET", null, $headers, $options);
208 }
209
210 /**
211 * Perform POST request
212 *
213 * @param string $url
214 * @param $post_data
215 * @param $headers
216 * @param $options
217 * @return bool
218 */
219 public function post($url, $post_data = null, $headers = null, $options = null) {
220 return $this->request($url, "POST", $post_data, $headers, $options);
221 }
222
223 /**
224 * Execute processing
225 *
226 * @param int $window_size Max number of simultaneous connections
227 * @return string|bool
228 */
229 public function execute($window_size = null) {
230 // rolling curl window must always be greater than 1
231 if (sizeof($this->requests) == 1) {
232 return $this->single_curl();
233 } else {
234 // start the rolling curl. window_size is the max number of simultaneous connections
235 return $this->rolling_curl($window_size);
236 }
237 }
238
239 /**
240 * Performs a single curl request
241 *
242 * @access private
243 * @return string
244 */
245 private function single_curl() {
246 $ch = curl_init();
247 $request = array_shift($this->requests);
248 $options = $this->get_options($request);
249 curl_setopt_array($ch, $options);
250 $output = curl_exec($ch);
251 $info = curl_getinfo($ch);
252
253 // it's not neccesary to set a callback for one-off requests
254 if ($this->callback) {
255 $callback = $this->callback;
256 if (is_callable($this->callback)) {
257 call_user_func($callback, $output, $info, $request);
258 }
259 }
260 else
261 return $output;
262 return true;
263 }
264
265 /**
266 * Performs multiple curl requests
267 *
268 * @access private
269 * @throws RollingCurlException
270 * @param int $window_size Max number of simultaneous connections
271 * @return bool
272 */
273 private function rolling_curl($window_size = null) {
274 if ($window_size)
275 $this->window_size = $window_size;
276
277 // make sure the rolling window isn't greater than the # of urls
278 if (sizeof($this->requests) < $this->window_size)
279 $this->window_size = sizeof($this->requests);
280
281 if ($this->window_size < 2) {
282 throw new RollingCurlException("Window size must be greater than 1");
283 }
284
285 $master = curl_multi_init();
286
287 // start the first batch of requests
288 for ($i = 0; $i < $this->window_size; $i++) {
289 $ch = curl_init();
290
291 $options = $this->get_options($this->requests[$i]);
292
293 curl_setopt_array($ch, $options);
294 curl_multi_add_handle($master, $ch);
295
296 // Add to our request Maps
297 $key = (string) $ch;
298 $this->requestMap[$key] = $i;
299 }
300
301 do {
302 while (($execrun = curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM) ;
303 if ($execrun != CURLM_OK)
304 break;
305 // a request was just completed -- find out which one
306 while ($done = curl_multi_info_read($master)) {
307
308 // get the info and content returned on the request
309 $info = curl_getinfo($done['handle']);
310 $output = curl_multi_getcontent($done['handle']);
311
312 // send the return values to the callback function.
313 $callback = $this->callback;
314 if (is_callable($callback)) {
315 $key = (string) $done['handle'];
316 $request = $this->requests[$this->requestMap[$key]];
317 unset($this->requestMap[$key]);
318 call_user_func($callback, $output, $info, $request);
319 }
320
321 // start a new request (it's important to do this before removing the old one)
322 if ($i < sizeof($this->requests) && isset($this->requests[$i]) && $i < count($this->requests)) {
323 $ch = curl_init();
324 $options = $this->get_options($this->requests[$i]);
325 curl_setopt_array($ch, $options);
326 curl_multi_add_handle($master, $ch);
327
328 // Add to our request Maps
329 $key = (string) $ch;
330 $this->requestMap[$key] = $i;
331 $i++;
332 }
333
334 // remove the curl handle that just completed
335 curl_multi_remove_handle($master, $done['handle']);
336
337 }
338
339 // Block for data in / output; error handling is done by curl_multi_exec
340 //if ($running) curl_multi_select($master, $this->timeout);
341 // removing timeout as it causes problems on Windows with PHP 5.3.5 and Curl 7.20.0
342 if ($running) curl_multi_select($master);
343
344 } while ($running);
345 curl_multi_close($master);
346 return true;
347 }
348
349
350 /**
351 * Helper function to set up a new request by setting the appropriate options
352 *
353 * @access private
354 * @param Request $request
355 * @return array
356 */
357 private function get_options($request) {
358 // options for this entire curl object
359 $options = $this->__get('options');
360 // We're managing reirects in PHP - allows us to intervene and rewrite/block URLs
361 // before the next request goes out.
362 $options[CURLOPT_FOLLOWLOCATION] = 0;
363 $options[CURLOPT_MAXREDIRS] = 0;
364 //if (ini_get('safe_mode') == 'Off' || !ini_get('safe_mode')) {
365 // $options[CURLOPT_FOLLOWLOCATION] = 1;
366 // $options[CURLOPT_MAXREDIRS] = 5;
367 //}
368 $headers = $this->__get('headers');
369 // append custom headers for this specific request
370 if ($request->headers) {
371 $headers = $headers + $request->headers;
372 }
373
374 // append custom options for this specific request
375 if ($request->options) {
376 $options = $request->options + $options;
377 }
378
379 // set the request URL
380 $options[CURLOPT_URL] = $request->url;
381
382 if ($headers) {
383 $options[CURLOPT_HTTPHEADER] = $headers;
384 }
385 // return response headers
386 $options[CURLOPT_HEADER] = 1;
387
388 // send HEAD request?
389 if ($request->method == 'HEAD') {
390 $options[CURLOPT_NOBODY] = 1;
391 }
392
393 return $options;
394 }
395
396 /**
397 * @return void
398 */
399 public function __destruct() {
400 unset($this->window_size, $this->callback, $this->options, $this->headers, $this->requests);
401 }
402} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/humble-http-agent/SimplePie_HumbleHttpAgent.php b/inc/3rdparty/libraries/humble-http-agent/SimplePie_HumbleHttpAgent.php
deleted file mode 100644
index c524a1ee..00000000
--- a/inc/3rdparty/libraries/humble-http-agent/SimplePie_HumbleHttpAgent.php
+++ /dev/null
@@ -1,78 +0,0 @@
1<?php
2/**
3 * Humble HTTP Agent extension for SimplePie_File
4 *
5 * This class is designed to extend and override SimplePie_File
6 * in order to prevent duplicate HTTP requests being sent out.
7 * The idea is to initialise an instance of Humble HTTP Agent
8 * and attach it, to a static class variable, of this class.
9 * SimplePie will then automatically initialise this class
10 *
11 * @date 2011-02-28
12 */
13
14class SimplePie_HumbleHttpAgent extends SimplePie_File
15{
16 protected static $agent;
17 var $url;
18 var $useragent;
19 var $success = true;
20 var $headers = array();
21 var $body;
22 var $status_code;
23 var $redirects = 0;
24 var $error;
25 var $method = SIMPLEPIE_FILE_SOURCE_NONE;
26
27 public static function set_agent(HumbleHttpAgent $agent) {
28 self::$agent = $agent;
29 }
30
31 public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) {
32 if (class_exists('idna_convert'))
33 {
34 $idn = new idna_convert();
35 $parsed = SimplePie_Misc::parse_url($url);
36 $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
37 }
38 $this->url = $url;
39 $this->useragent = $useragent;
40 if (preg_match('/^http(s)?:\/\//i', $url))
41 {
42 if (!is_array($headers))
43 {
44 $headers = array();
45 }
46 $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL;
47 $headers2 = array();
48 foreach ($headers as $key => $value) {
49 $headers2[] = "$key: $value";
50 }
51 //TODO: allow for HTTP headers
52 // curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
53
54 $response = self::$agent->get($url);
55
56 if ($response === false || !isset($response['status_code'])) {
57 $this->error = 'failed to fetch URL';
58 $this->success = false;
59 } else {
60 // The extra lines at the end are there to satisfy SimplePie's HTTP parser.
61 // The class expects a full HTTP message, whereas we're giving it only
62 // headers - the new lines indicate the start of the body.
63 $parser = new SimplePie_HTTP_Parser($response['headers']."\r\n\r\n");
64 if ($parser->parse()) {
65 $this->headers = $parser->headers;
66 //$this->body = $parser->body;
67 $this->body = $response['body'];
68 $this->status_code = $parser->status_code;
69 }
70 }
71 }
72 else
73 {
74 $this->error = 'invalid URL';
75 $this->success = false;
76 }
77 }
78} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/language-detect/LanguageDetect.php b/inc/3rdparty/libraries/language-detect/LanguageDetect.php
deleted file mode 100644
index 382d869c..00000000
--- a/inc/3rdparty/libraries/language-detect/LanguageDetect.php
+++ /dev/null
@@ -1,1693 +0,0 @@
1<?php
2
3/**
4 * Detects the language of a given piece of text.
5 *
6 * Attempts to detect the language of a sample of text by correlating ranked
7 * 3-gram frequencies to a table of 3-gram frequencies of known languages.
8 *
9 * Implements a version of a technique originally proposed by Cavnar & Trenkle
10 * (1994): "N-Gram-Based Text Categorization"
11 *
12 * PHP version 5
13 *
14 * @category Text
15 * @package Text_LanguageDetect
16 * @author Nicholas Pisarro <infinityminusnine+pear@gmail.com>
17 * @copyright 2005-2006 Nicholas Pisarro
18 * @license http://www.debian.org/misc/bsd.license BSD
19 * @version SVN: $Id: LanguageDetect.php 322353 2012-01-16 08:41:43Z cweiske $
20 * @link http://pear.php.net/package/Text_LanguageDetect/
21 * @link http://langdetect.blogspot.com/
22 */
23
24require_once 'LanguageDetect/Exception.php';
25require_once 'LanguageDetect/Parser.php';
26require_once 'LanguageDetect/ISO639.php';
27
28/**
29 * Language detection class
30 *
31 * Requires the langauge model database (lang.dat) that should have
32 * accompanied this class definition in order to be instantiated.
33 *
34 * Example usage:
35 *
36 * <code>
37 * require_once 'Text/LanguageDetect.php';
38 *
39 * $l = new Text_LanguageDetect;
40 *
41 * $stdin = fopen('php://stdin', 'r');
42 *
43 * echo "Supported languages:\n";
44 *
45 * try {
46 * $langs = $l->getLanguages();
47 * } catch (Text_LanguageDetect_Exception $e) {
48 * die($e->getMessage());
49 * }
50 *
51 * sort($langs);
52 * echo join(', ', $langs);
53 *
54 * while ($line = fgets($stdin)) {
55 * print_r($l->detect($line, 4));
56 * }
57 * </code>
58 *
59 * @category Text
60 * @package Text_LanguageDetect
61 * @author Nicholas Pisarro <infinityminusnine+pear@gmail.com>
62 * @copyright 2005 Nicholas Pisarro
63 * @license http://www.debian.org/misc/bsd.license BSD
64 * @version Release: @package_version@
65 * @link http://pear.php.net/package/Text_LanguageDetect/
66 * @todo allow users to generate their own language models
67 */
68class Text_LanguageDetect
69{
70 /**
71 * The filename that stores the trigram data for the detector
72 *
73 * If this value starts with a slash (/) or a dot (.) the value of
74 * $this->_data_dir will be ignored
75 *
76 * @var string
77 * @access private
78 */
79 var $_db_filename = 'lang.dat';
80
81 /**
82 * The filename that stores the unicode block definitions
83 *
84 * If this value starts with a slash (/) or a dot (.) the value of
85 * $this->_data_dir will be ignored
86 *
87 * @var string
88 * @access private
89 */
90 var $_unicode_db_filename = 'unicode_blocks.dat';
91
92 /**
93 * The data directory
94 *
95 * Should be set by PEAR installer
96 *
97 * @var string
98 * @access private
99 */
100 var $_data_dir = '@data_dir@';
101
102 /**
103 * The trigram data for comparison
104 *
105 * Will be loaded on start from $this->_db_filename
106 *
107 * @var array
108 * @access private
109 */
110 var $_lang_db = array();
111
112 /**
113 * stores the map of the trigram data to unicode characters
114 *
115 * @access private
116 * @var array
117 */
118 var $_unicode_map;
119
120 /**
121 * The size of the trigram data arrays
122 *
123 * @var int
124 * @access private
125 */
126 var $_threshold = 300;
127
128 /**
129 * the maximum possible score.
130 *
131 * needed for score normalization. Different depending on the
132 * perl compatibility setting
133 *
134 * @access private
135 * @var int
136 * @see setPerlCompatible()
137 */
138 var $_max_score = 0;
139
140 /**
141 * Whether or not to simulate perl's Language::Guess exactly
142 *
143 * @access private
144 * @var bool
145 * @see setPerlCompatible()
146 */
147 var $_perl_compatible = false;
148
149 /**
150 * Whether to use the unicode block detection to speed up processing
151 *
152 * @access private
153 * @var bool
154 */
155 var $_use_unicode_narrowing = true;
156
157 /**
158 * stores the result of the clustering operation
159 *
160 * @access private
161 * @var array
162 * @see clusterLanguages()
163 */
164 var $_clusters;
165
166 /**
167 * Which type of "language names" are accepted and returned:
168 *
169 * 0 - language name ("english")
170 * 2 - 2-letter ISO 639-1 code ("en")
171 * 3 - 3-letter ISO 639-2 code ("eng")
172 */
173 var $_name_mode = 0;
174
175 /**
176 * Constructor
177 *
178 * Will attempt to load the language database. If it fails, you will get
179 * an exception.
180 */
181 function __construct()
182 {
183 $data = $this->_readdb($this->_db_filename);
184 $this->_checkTrigram($data['trigram']);
185 $this->_lang_db = $data['trigram'];
186
187 if (isset($data['trigram-unicodemap'])) {
188 $this->_unicode_map = $data['trigram-unicodemap'];
189 }
190
191 // Not yet implemented:
192 if (isset($data['trigram-clusters'])) {
193 $this->_clusters = $data['trigram-clusters'];
194 }
195 }
196
197 /**
198 * Returns the path to the location of the database
199 *
200 * @param string $fname File name to load
201 *
202 * @return string expected path to the language model database
203 * @access private
204 */
205 function _get_data_loc($fname)
206 {
207 return dirname(__FILE__).'/'.$fname;
208 }
209
210 /**
211 * Loads the language trigram database from filename
212 *
213 * Trigram datbase should be a serialize()'d array
214 *
215 * @param string $fname the filename where the data is stored
216 *
217 * @return array the language model data
218 * @throws Text_LanguageDetect_Exception
219 * @access private
220 */
221 function _readdb($fname)
222 {
223 // finds the correct data dir
224 $fname = $this->_get_data_loc($fname);
225
226 // input check
227 if (!file_exists($fname)) {
228 throw new Text_LanguageDetect_Exception(
229 'Language database does not exist: ' . $fname,
230 Text_LanguageDetect_Exception::DB_NOT_FOUND
231 );
232 } elseif (!is_readable($fname)) {
233 throw new Text_LanguageDetect_Exception(
234 'Language database is not readable: ' . $fname,
235 Text_LanguageDetect_Exception::DB_NOT_READABLE
236 );
237 }
238
239 return unserialize(file_get_contents($fname));
240 }
241
242
243 /**
244 * Checks if this object is ready to detect languages
245 *
246 * @param array $trigram Trigram data from database
247 *
248 * @return void
249 * @access private
250 */
251 function _checkTrigram($trigram)
252 {
253 if (!is_array($trigram)) {
254 if (ini_get('magic_quotes_runtime')) {
255 throw new Text_LanguageDetect_Exception(
256 'Error loading database. Try turning magic_quotes_runtime off.',
257 Text_LanguageDetect_Exception::MAGIC_QUOTES
258 );
259 }
260 throw new Text_LanguageDetect_Exception(
261 'Language database is not an array.',
262 Text_LanguageDetect_Exception::DB_NOT_ARRAY
263 );
264 } elseif (empty($trigram)) {
265 throw new Text_LanguageDetect_Exception(
266 'Language database has no elements.',
267 Text_LanguageDetect_Exception::DB_EMPTY
268 );
269 }
270 }
271
272 /**
273 * Omits languages
274 *
275 * Pass this function the name of or an array of names of
276 * languages that you don't want considered
277 *
278 * If you're only expecting a limited set of languages, this can greatly
279 * speed up processing
280 *
281 * @param mixed $omit_list language name or array of names to omit
282 * @param bool $include_only if true will include (rather than
283 * exclude) only those in the list
284 *
285 * @return int number of languages successfully deleted
286 * @throws Text_LanguageDetect_Exception
287 */
288 public function omitLanguages($omit_list, $include_only = false)
289 {
290 $deleted = 0;
291
292 $omit_list = $this->_convertFromNameMode($omit_list);
293
294 if (!$include_only) {
295 // deleting the given languages
296 if (!is_array($omit_list)) {
297 $omit_list = strtolower($omit_list); // case desensitize
298 if (isset($this->_lang_db[$omit_list])) {
299 unset($this->_lang_db[$omit_list]);
300 $deleted++;
301 }
302 } else {
303 foreach ($omit_list as $omit_lang) {
304 if (isset($this->_lang_db[$omit_lang])) {
305 unset($this->_lang_db[$omit_lang]);
306 $deleted++;
307 }
308 }
309 }
310
311 } else {
312 // deleting all except the given languages
313 if (!is_array($omit_list)) {
314 $omit_list = array($omit_list);
315 }
316
317 // case desensitize
318 foreach ($omit_list as $key => $omit_lang) {
319 $omit_list[$key] = strtolower($omit_lang);
320 }
321
322 foreach (array_keys($this->_lang_db) as $lang) {
323 if (!in_array($lang, $omit_list)) {
324 unset($this->_lang_db[$lang]);
325 $deleted++;
326 }
327 }
328 }
329
330 // reset the cluster cache if the number of languages changes
331 // this will then have to be recalculated
332 if (isset($this->_clusters) && $deleted > 0) {
333 $this->_clusters = null;
334 }
335
336 return $deleted;
337 }
338
339
340 /**
341 * Returns the number of languages that this object can detect
342 *
343 * @access public
344 * @return int the number of languages
345 * @throws Text_LanguageDetect_Exception
346 */
347 function getLanguageCount()
348 {
349 return count($this->_lang_db);
350 }
351
352 /**
353 * Checks if the language with the given name exists in the database
354 *
355 * @param mixed $lang Language name or array of language names
356 *
357 * @return bool true if language model exists
358 */
359 public function languageExists($lang)
360 {
361 $lang = $this->_convertFromNameMode($lang);
362
363 if (is_string($lang)) {
364 return isset($this->_lang_db[strtolower($lang)]);
365
366 } elseif (is_array($lang)) {
367 foreach ($lang as $test_lang) {
368 if (!isset($this->_lang_db[strtolower($test_lang)])) {
369 return false;
370 }
371 }
372 return true;
373
374 } else {
375 throw new Text_LanguageDetect_Exception(
376 'Unsupported parameter type passed to languageExists()',
377 Text_LanguageDetect_Exception::PARAM_TYPE
378 );
379 }
380 }
381
382 /**
383 * Returns the list of detectable languages
384 *
385 * @access public
386 * @return array the names of the languages known to this object<<<<<<<
387 * @throws Text_LanguageDetect_Exception
388 */
389 function getLanguages()
390 {
391 return $this->_convertToNameMode(
392 array_keys($this->_lang_db)
393 );
394 }
395
396 /**
397 * Make this object behave like Language::Guess
398 *
399 * @param bool $setting false to turn off perl compatibility
400 *
401 * @return void
402 */
403 public function setPerlCompatible($setting = true)
404 {
405 if (is_bool($setting)) { // input check
406 $this->_perl_compatible = $setting;
407
408 if ($setting == true) {
409 $this->_max_score = $this->_threshold;
410 } else {
411 $this->_max_score = 0;
412 }
413 }
414
415 }
416
417 /**
418 * Sets the way how language names are accepted and returned.
419 *
420 * @param integer $name_mode One of the following modes:
421 * 0 - language name ("english")
422 * 2 - 2-letter ISO 639-1 code ("en")
423 * 3 - 3-letter ISO 639-2 code ("eng")
424 *
425 * @return void
426 */
427 function setNameMode($name_mode)
428 {
429 $this->_name_mode = $name_mode;
430 }
431
432 /**
433 * Whether to use unicode block ranges in detection
434 *
435 * Should speed up most detections if turned on (detault is on). In some
436 * circumstances it may be slower, such as for large text samples (> 10K)
437 * in languages that use latin scripts. In other cases it should speed up
438 * detection noticeably.
439 *
440 * @param bool $setting false to turn off
441 *
442 * @return void
443 */
444 public function useUnicodeBlocks($setting = true)
445 {
446 if (is_bool($setting)) {
447 $this->_use_unicode_narrowing = $setting;
448 }
449 }
450
451 /**
452 * Converts a piece of text into trigrams
453 *
454 * @param string $text text to convert
455 *
456 * @return array array of trigram frequencies
457 * @access private
458 * @deprecated Superceded by the Text_LanguageDetect_Parser class
459 */
460 function _trigram($text)
461 {
462 $s = new Text_LanguageDetect_Parser($text);
463 $s->prepareTrigram();
464 $s->prepareUnicode(false);
465 $s->setPadStart(!$this->_perl_compatible);
466 $s->analyze();
467 return $s->getTrigramFreqs();
468 }
469
470 /**
471 * Converts a set of trigrams from frequencies to ranks
472 *
473 * Thresholds (cuts off) the list at $this->_threshold
474 *
475 * @param array $arr array of trigram
476 *
477 * @return array ranks of trigrams
478 * @access protected
479 */
480 function _arr_rank($arr)
481 {
482
483 // sorts alphabetically first as a standard way of breaking rank ties
484 $this->_bub_sort($arr);
485
486 // below might also work, but seemed to introduce errors in testing
487 //ksort($arr);
488 //asort($arr);
489
490 $rank = array();
491
492 $i = 0;
493 foreach ($arr as $key => $value) {
494 $rank[$key] = $i++;
495
496 // cut off at a standard threshold
497 if ($i >= $this->_threshold) {
498 break;
499 }
500 }
501
502 return $rank;
503 }
504
505 /**
506 * Sorts an array by value breaking ties alphabetically
507 *
508 * @param array &$arr the array to sort
509 *
510 * @return void
511 * @access private
512 */
513 function _bub_sort(&$arr)
514 {
515 // should do the same as this perl statement:
516 // sort { $trigrams{$b} == $trigrams{$a}
517 // ? $a cmp $b : $trigrams{$b} <=> $trigrams{$a} }
518
519 // needs to sort by both key and value at once
520 // using the key to break ties for the value
521
522 // converts array into an array of arrays of each key and value
523 // may be a better way of doing this
524 $combined = array();
525
526 foreach ($arr as $key => $value) {
527 $combined[] = array($key, $value);
528 }
529
530 usort($combined, array($this, '_sort_func'));
531
532 $replacement = array();
533 foreach ($combined as $key => $value) {
534 list($new_key, $new_value) = $value;
535 $replacement[$new_key] = $new_value;
536 }
537
538 $arr = $replacement;
539 }
540
541 /**
542 * Sort function used by bubble sort
543 *
544 * Callback function for usort().
545 *
546 * @param array $a first param passed by usort()
547 * @param array $b second param passed by usort()
548 *
549 * @return int 1 if $a is greater, -1 if not
550 * @see _bub_sort()
551 * @access private
552 */
553 function _sort_func($a, $b)
554 {
555 // each is actually a key/value pair, so that it can compare using both
556 list($a_key, $a_value) = $a;
557 list($b_key, $b_value) = $b;
558
559 if ($a_value == $b_value) {
560 // if the values are the same, break ties using the key
561 return strcmp($a_key, $b_key);
562
563 } else {
564 // if not, just sort normally
565 if ($a_value > $b_value) {
566 return -1;
567 } else {
568 return 1;
569 }
570 }
571
572 // 0 should not be possible because keys must be unique
573 }
574
575 /**
576 * Calculates a linear rank-order distance statistic between two sets of
577 * ranked trigrams
578 *
579 * Sums the differences in rank for each trigram. If the trigram does not
580 * appear in both, consider it a difference of $this->_threshold.
581 *
582 * This distance measure was proposed by Cavnar & Trenkle (1994). Despite
583 * its simplicity it has been shown to be highly accurate for language
584 * identification tasks.
585 *
586 * @param array $arr1 the reference set of trigram ranks
587 * @param array $arr2 the target set of trigram ranks
588 *
589 * @return int the sum of the differences between the ranks of
590 * the two trigram sets
591 * @access private
592 */
593 function _distance($arr1, $arr2)
594 {
595 $sumdist = 0;
596
597 foreach ($arr2 as $key => $value) {
598 if (isset($arr1[$key])) {
599 $distance = abs($value - $arr1[$key]);
600 } else {
601 // $this->_threshold sets the maximum possible distance value
602 // for any one pair of trigrams
603 $distance = $this->_threshold;
604 }
605 $sumdist += $distance;
606 }
607
608 return $sumdist;
609
610 // todo: there are other distance statistics to try, e.g. relative
611 // entropy, but they're probably more costly to compute
612 }
613
614 /**
615 * Normalizes the score returned by _distance()
616 *
617 * Different if perl compatible or not
618 *
619 * @param int $score the score from _distance()
620 * @param int $base_count the number of trigrams being considered
621 *
622 * @return float the normalized score
623 * @see _distance()
624 * @access private
625 */
626 function _normalize_score($score, $base_count = null)
627 {
628 if ($base_count === null) {
629 $base_count = $this->_threshold;
630 }
631
632 if (!$this->_perl_compatible) {
633 return 1 - ($score / $base_count / $this->_threshold);
634 } else {
635 return floor($score / $base_count);
636 }
637 }
638
639
640 /**
641 * Detects the closeness of a sample of text to the known languages
642 *
643 * Calculates the statistical difference between the text and
644 * the trigrams for each language, normalizes the score then
645 * returns results for all languages in sorted order
646 *
647 * If perl compatible, the score is 300-0, 0 being most similar.
648 * Otherwise, it's 0-1 with 1 being most similar.
649 *
650 * The $sample text should be at least a few sentences in length;
651 * should be ascii-7 or utf8 encoded, if another and the mbstring extension
652 * is present it will try to detect and convert. However, experience has
653 * shown that mb_detect_encoding() *does not work very well* with at least
654 * some types of encoding.
655 *
656 * @param string $sample a sample of text to compare.
657 * @param int $limit if specified, return an array of the most likely
658 * $limit languages and their scores.
659 *
660 * @return mixed sorted array of language scores, blank array if no
661 * useable text was found
662 * @see _distance()
663 * @throws Text_LanguageDetect_Exception
664 */
665 public function detect($sample, $limit = 0)
666 {
667 // input check
668 if (!Text_LanguageDetect_Parser::validateString($sample)) {
669 return array();
670 }
671
672 // check char encoding
673 // (only if mbstring extension is compiled and PHP > 4.0.6)
674 if (function_exists('mb_detect_encoding')
675 && function_exists('mb_convert_encoding')
676 ) {
677 // mb_detect_encoding isn't very reliable, to say the least
678 // detection should still work with a sufficient sample
679 // of ascii characters
680 $encoding = mb_detect_encoding($sample);
681
682 // mb_detect_encoding() will return FALSE if detection fails
683 // don't attempt conversion if that's the case
684 if ($encoding != 'ASCII' && $encoding != 'UTF-8'
685 && $encoding !== false
686 ) {
687 // verify the encoding exists in mb_list_encodings
688 if (in_array($encoding, mb_list_encodings())) {
689 $sample = mb_convert_encoding($sample, 'UTF-8', $encoding);
690 }
691 }
692 }
693
694 $sample_obj = new Text_LanguageDetect_Parser($sample);
695 $sample_obj->prepareTrigram();
696 if ($this->_use_unicode_narrowing) {
697 $sample_obj->prepareUnicode();
698 }
699 $sample_obj->setPadStart(!$this->_perl_compatible);
700 $sample_obj->analyze();
701
702 $trigram_freqs =& $sample_obj->getTrigramRanks();
703 $trigram_count = count($trigram_freqs);
704
705 if ($trigram_count == 0) {
706 return array();
707 }
708
709 $scores = array();
710
711 // use unicode block detection to narrow down the possibilities
712 if ($this->_use_unicode_narrowing) {
713 $blocks =& $sample_obj->getUnicodeBlocks();
714
715 if (is_array($blocks)) {
716 $present_blocks = array_keys($blocks);
717 } else {
718 throw new Text_LanguageDetect_Exception(
719 'Error during block detection',
720 Text_LanguageDetect_Exception::BLOCK_DETECTION
721 );
722 }
723
724 $possible_langs = array();
725
726 foreach ($present_blocks as $blockname) {
727 if (isset($this->_unicode_map[$blockname])) {
728
729 $possible_langs = array_merge(
730 $possible_langs,
731 array_keys($this->_unicode_map[$blockname])
732 );
733
734 // todo: faster way to do this?
735 }
736 }
737
738 // could also try an intersect operation rather than a union
739 // in other words, choose languages whose trigrams contain
740 // ALL of the unicode blocks found in this sample
741 // would improve speed but would be completely thrown off by an
742 // unexpected character, like an umlaut appearing in english text
743
744 $possible_langs = array_intersect(
745 array_keys($this->_lang_db),
746 array_unique($possible_langs)
747 );
748
749 // needs to intersect it with the keys of _lang_db in case
750 // languages have been omitted
751
752 } else {
753 // or just try 'em all
754 $possible_langs = array_keys($this->_lang_db);
755 }
756
757
758 foreach ($possible_langs as $lang) {
759 $scores[$lang] = $this->_normalize_score(
760 $this->_distance($this->_lang_db[$lang], $trigram_freqs),
761 $trigram_count
762 );
763 }
764
765 unset($sample_obj);
766
767 if ($this->_perl_compatible) {
768 asort($scores);
769 } else {
770 arsort($scores);
771 }
772
773 // todo: drop languages with a score of $this->_max_score?
774
775 // limit the number of returned scores
776 if ($limit && is_numeric($limit)) {
777 $limited_scores = array();
778
779 $i = 0;
780 foreach ($scores as $key => $value) {
781 if ($i++ >= $limit) {
782 break;
783 }
784
785 $limited_scores[$key] = $value;
786 }
787
788 return $this->_convertToNameMode($limited_scores, true);
789 } else {
790 return $this->_convertToNameMode($scores, true);
791 }
792 }
793
794 /**
795 * Returns only the most similar language to the text sample
796 *
797 * Calls $this->detect() and returns only the top result
798 *
799 * @param string $sample text to detect the language of
800 *
801 * @return string the name of the most likely language
802 * or null if no language is similar
803 * @see detect()
804 * @throws Text_LanguageDetect_Exception
805 */
806 public function detectSimple($sample)
807 {
808 $scores = $this->detect($sample, 1);
809
810 // if top language has the maximum possible score,
811 // then the top score will have been picked at random
812 if (!is_array($scores) || empty($scores)
813 || current($scores) == $this->_max_score
814 ) {
815 return null;
816 } else {
817 return key($scores);
818 }
819 }
820
821 /**
822 * Returns an array containing the most similar language and a confidence
823 * rating
824 *
825 * Confidence is a simple measure calculated from the similarity score
826 * minus the similarity score from the next most similar language
827 * divided by the highest possible score. Languages that have closely
828 * related cousins (e.g. Norwegian and Danish) should generally have lower
829 * confidence scores.
830 *
831 * The similarity score answers the question "How likely is the text the
832 * returned language regardless of the other languages considered?" The
833 * confidence score is one way of answering the question "how likely is the
834 * text the detected language relative to the rest of the language model
835 * set?"
836 *
837 * To see how similar languages are a priori, see languageSimilarity()
838 *
839 * @param string $sample text for which language will be detected
840 *
841 * @return array most similar language, score and confidence rating
842 * or null if no language is similar
843 * @see detect()
844 * @throws Text_LanguageDetect_Exception
845 */
846 public function detectConfidence($sample)
847 {
848 $scores = $this->detect($sample, 2);
849
850 // if most similar language has the max score, it
851 // will have been picked at random
852 if (!is_array($scores) || empty($scores)
853 || current($scores) == $this->_max_score
854 ) {
855 return null;
856 }
857
858 $arr['language'] = key($scores);
859 $arr['similarity'] = current($scores);
860 if (next($scores) !== false) { // if false then no next element
861 // the goal is to return a higher value if the distance between
862 // the similarity of the first score and the second score is high
863
864 if ($this->_perl_compatible) {
865 $arr['confidence'] = (current($scores) - $arr['similarity'])
866 / $this->_max_score;
867
868 } else {
869 $arr['confidence'] = $arr['similarity'] - current($scores);
870
871 }
872
873 } else {
874 $arr['confidence'] = null;
875 }
876
877 return $arr;
878 }
879
880 /**
881 * Returns the distribution of unicode blocks in a given utf8 string
882 *
883 * For the block name of a single char, use unicodeBlockName()
884 *
885 * @param string $str input string. Must be ascii or utf8
886 * @param bool $skip_symbols if true, skip ascii digits, symbols and
887 * non-printing characters. Includes spaces,
888 * newlines and common punctutation characters.
889 *
890 * @return array
891 * @throws Text_LanguageDetect_Exception
892 */
893 public function detectUnicodeBlocks($str, $skip_symbols)
894 {
895 $skip_symbols = (bool)$skip_symbols;
896 $str = (string)$str;
897
898 $sample_obj = new Text_LanguageDetect_Parser($str);
899 $sample_obj->prepareUnicode();
900 $sample_obj->prepareTrigram(false);
901 $sample_obj->setUnicodeSkipSymbols($skip_symbols);
902 $sample_obj->analyze();
903 $blocks = $sample_obj->getUnicodeBlocks();
904 unset($sample_obj);
905 return $blocks;
906 }
907
908 /**
909 * Returns the block name for a given unicode value
910 *
911 * If passed a string, will assume it is being passed a UTF8-formatted
912 * character and will automatically convert. Otherwise it will assume it
913 * is being passed a numeric unicode value.
914 *
915 * Make sure input is of the correct type!
916 *
917 * @param mixed $unicode unicode value or utf8 char
918 *
919 * @return mixed the block name string or false if not found
920 * @throws Text_LanguageDetect_Exception
921 */
922 public function unicodeBlockName($unicode)
923 {
924 if (is_string($unicode)) {
925 // assume it is being passed a utf8 char, so convert it
926 if (self::utf8strlen($unicode) > 1) {
927 throw new Text_LanguageDetect_Exception(
928 'Pass a single char only to this method',
929 Text_LanguageDetect_Exception::PARAM_TYPE
930 );
931 }
932 $unicode = $this->_utf8char2unicode($unicode);
933
934 } elseif (!is_int($unicode)) {
935 throw new Text_LanguageDetect_Exception(
936 'Input must be of type string or int.',
937 Text_LanguageDetect_Exception::PARAM_TYPE
938 );
939 }
940
941 $blocks = $this->_read_unicode_block_db();
942
943 $result = $this->_unicode_block_name($unicode, $blocks);
944
945 if ($result == -1) {
946 return false;
947 } else {
948 return $result[2];
949 }
950 }
951
952 /**
953 * Searches the unicode block database
954 *
955 * Returns the block name for a given unicode value. unicodeBlockName() is
956 * the public interface for this function, which does input checks which
957 * this function omits for speed.
958 *
959 * @param int $unicode the unicode value
960 * @param array $blocks the block database
961 * @param int $block_count the number of defined blocks in the database
962 *
963 * @return mixed Block name, -1 if it failed
964 * @see unicodeBlockName()
965 * @access protected
966 */
967 function _unicode_block_name($unicode, $blocks, $block_count = -1)
968 {
969 // for a reference, see
970 // http://www.unicode.org/Public/UNIDATA/Blocks.txt
971
972 // assume that ascii characters are the most common
973 // so try it first for efficiency
974 if ($unicode <= $blocks[0][1]) {
975 return $blocks[0];
976 }
977
978 // the optional $block_count param is for efficiency
979 // so we this function doesn't have to run count() every time
980 if ($block_count != -1) {
981 $high = $block_count - 1;
982 } else {
983 $high = count($blocks) - 1;
984 }
985
986 $low = 1; // start with 1 because ascii was 0
987
988 // your average binary search algorithm
989 while ($low <= $high) {
990 $mid = floor(($low + $high) / 2);
991
992 if ($unicode < $blocks[$mid][0]) {
993 // if it's lower than the lower bound
994 $high = $mid - 1;
995
996 } elseif ($unicode > $blocks[$mid][1]) {
997 // if it's higher than the upper bound
998 $low = $mid + 1;
999
1000 } else {
1001 // found it
1002 return $blocks[$mid];
1003 }
1004 }
1005
1006 // failed to find the block
1007 return -1;
1008
1009 // todo: differentiate when it's out of range or when it falls
1010 // into an unassigned range?
1011 }
1012
1013 /**
1014 * Brings up the unicode block database
1015 *
1016 * @return array the database of unicode block definitions
1017 * @throws Text_LanguageDetect_Exception
1018 * @access protected
1019 */
1020 function _read_unicode_block_db()
1021 {
1022 // since the unicode definitions are always going to be the same,
1023 // might as well share the memory for the db with all other instances
1024 // of this class
1025 static $data;
1026
1027 if (!isset($data)) {
1028 $data = $this->_readdb($this->_unicode_db_filename);
1029 }
1030
1031 return $data;
1032 }
1033
1034 /**
1035 * Calculate the similarities between the language models
1036 *
1037 * Use this function to see how similar languages are to each other.
1038 *
1039 * If passed 2 language names, will return just those languages compared.
1040 * If passed 1 language name, will return that language compared to
1041 * all others.
1042 * If passed none, will return an array of every language model compared
1043 * to every other one.
1044 *
1045 * @param string $lang1 the name of the first language to be compared
1046 * @param string $lang2 the name of the second language to be compared
1047 *
1048 * @return array scores of every language compared
1049 * or the score of just the provided languages
1050 * or null if one of the supplied languages does not exist
1051 * @throws Text_LanguageDetect_Exception
1052 */
1053 public function languageSimilarity($lang1 = null, $lang2 = null)
1054 {
1055 $lang1 = $this->_convertFromNameMode($lang1);
1056 $lang2 = $this->_convertFromNameMode($lang2);
1057 if ($lang1 != null) {
1058 $lang1 = strtolower($lang1);
1059
1060 // check if language model exists
1061 if (!isset($this->_lang_db[$lang1])) {
1062 return null;
1063 }
1064
1065 if ($lang2 != null) {
1066 if (!isset($this->_lang_db[$lang2])) {
1067 // check if language model exists
1068 return null;
1069 }
1070
1071 $lang2 = strtolower($lang2);
1072
1073 // compare just these two languages
1074 return $this->_normalize_score(
1075 $this->_distance(
1076 $this->_lang_db[$lang1],
1077 $this->_lang_db[$lang2]
1078 )
1079 );
1080
1081 } else {
1082 // compare just $lang1 to all languages
1083 $return_arr = array();
1084 foreach ($this->_lang_db as $key => $value) {
1085 if ($key != $lang1) {
1086 // don't compare a language to itself
1087 $return_arr[$key] = $this->_normalize_score(
1088 $this->_distance($this->_lang_db[$lang1], $value)
1089 );
1090 }
1091 }
1092 asort($return_arr);
1093
1094 return $return_arr;
1095 }
1096
1097
1098 } else {
1099 // compare all languages to each other
1100 $return_arr = array();
1101 foreach (array_keys($this->_lang_db) as $lang1) {
1102 foreach (array_keys($this->_lang_db) as $lang2) {
1103 // skip comparing languages to themselves
1104 if ($lang1 != $lang2) {
1105
1106 if (isset($return_arr[$lang2][$lang1])) {
1107 // don't re-calculate what's already been done
1108 $return_arr[$lang1][$lang2]
1109 = $return_arr[$lang2][$lang1];
1110
1111 } else {
1112 // calculate
1113 $return_arr[$lang1][$lang2]
1114 = $this->_normalize_score(
1115 $this->_distance(
1116 $this->_lang_db[$lang1],
1117 $this->_lang_db[$lang2]
1118 )
1119 );
1120
1121 }
1122 }
1123 }
1124 }
1125 return $return_arr;
1126 }
1127 }
1128
1129 /**
1130 * Cluster known languages according to languageSimilarity()
1131 *
1132 * WARNING: this method is EXPERIMENTAL. It is not recommended for common
1133 * use, and it may disappear or its functionality may change in future
1134 * releases without notice.
1135 *
1136 * Uses a nearest neighbor technique to generate the maximum possible
1137 * number of dendograms from the similarity data.
1138 *
1139 * @access public
1140 * @return array language cluster data
1141 * @throws Text_LanguageDetect_Exception
1142 * @see languageSimilarity()
1143 * @deprecated this function will eventually be removed and placed into
1144 * the model generation class
1145 */
1146 function clusterLanguages()
1147 {
1148 // todo: set the maximum number of clusters
1149 // return cached result, if any
1150 if (isset($this->_clusters)) {
1151 return $this->_clusters;
1152 }
1153
1154 $langs = array_keys($this->_lang_db);
1155
1156 $arr = $this->languageSimilarity();
1157
1158 sort($langs);
1159
1160 foreach ($langs as $lang) {
1161 if (!isset($this->_lang_db[$lang])) {
1162 throw new Text_LanguageDetect_Exception(
1163 "missing $lang!",
1164 Text_LanguageDetect_Exception::UNKNOWN_LANGUAGE
1165 );
1166 }
1167 }
1168
1169 // http://www.psychstat.missouristate.edu/multibook/mlt04m.html
1170 foreach ($langs as $old_key => $lang1) {
1171 $langs[$lang1] = $lang1;
1172 unset($langs[$old_key]);
1173 }
1174
1175 $result_data = $really_map = array();
1176
1177 $i = 0;
1178 while (count($langs) > 2 && $i++ < 200) {
1179 $highest_score = -1;
1180 $highest_key1 = '';
1181 $highest_key2 = '';
1182 foreach ($langs as $lang1) {
1183 foreach ($langs as $lang2) {
1184 if ($lang1 != $lang2
1185 && $arr[$lang1][$lang2] > $highest_score
1186 ) {
1187 $highest_score = $arr[$lang1][$lang2];
1188 $highest_key1 = $lang1;
1189 $highest_key2 = $lang2;
1190 }
1191 }
1192 }
1193
1194 if (!$highest_key1) {
1195 // should not ever happen
1196 throw new Text_LanguageDetect_Exception(
1197 "no highest key? (step: $i)",
1198 Text_LanguageDetect_Exception::NO_HIGHEST_KEY
1199 );
1200 }
1201
1202 if ($highest_score == 0) {
1203 // languages are perfectly dissimilar
1204 break;
1205 }
1206
1207 // $highest_key1 and $highest_key2 are most similar
1208 $sum1 = array_sum($arr[$highest_key1]);
1209 $sum2 = array_sum($arr[$highest_key2]);
1210
1211 // use the score for the one that is most similar to the rest of
1212 // the field as the score for the group
1213 // todo: could try averaging or "centroid" method instead
1214 // seems like that might make more sense
1215 // actually nearest neighbor may be better for binary searching
1216
1217
1218 // for "Complete Linkage"/"furthest neighbor"
1219 // sign should be <
1220 // for "Single Linkage"/"nearest neighbor" method
1221 // should should be >
1222 // results seem to be pretty much the same with either method
1223
1224 // figure out which to delete and which to replace
1225 if ($sum1 > $sum2) {
1226 $replaceme = $highest_key1;
1227 $deleteme = $highest_key2;
1228 } else {
1229 $replaceme = $highest_key2;
1230 $deleteme = $highest_key1;
1231 }
1232
1233 $newkey = $replaceme . ':' . $deleteme;
1234
1235 // $replaceme is most similar to remaining languages
1236 // replace $replaceme with '$newkey', deleting $deleteme
1237
1238 // keep a record of which fork is really which language
1239 $really_lang = $replaceme;
1240 while (isset($really_map[$really_lang])) {
1241 $really_lang = $really_map[$really_lang];
1242 }
1243 $really_map[$newkey] = $really_lang;
1244
1245
1246 // replace the best fitting key, delete the other
1247 foreach ($arr as $key1 => $arr2) {
1248 foreach ($arr2 as $key2 => $value2) {
1249 if ($key2 == $replaceme) {
1250 $arr[$key1][$newkey] = $arr[$key1][$key2];
1251 unset($arr[$key1][$key2]);
1252 // replacing $arr[$key1][$key2] with $arr[$key1][$newkey]
1253 }
1254
1255 if ($key1 == $replaceme) {
1256 $arr[$newkey][$key2] = $arr[$key1][$key2];
1257 unset($arr[$key1][$key2]);
1258 // replacing $arr[$key1][$key2] with $arr[$newkey][$key2]
1259 }
1260
1261 if ($key1 == $deleteme || $key2 == $deleteme) {
1262 // deleting $arr[$key1][$key2]
1263 unset($arr[$key1][$key2]);
1264 }
1265 }
1266 }
1267
1268
1269 unset($langs[$highest_key1]);
1270 unset($langs[$highest_key2]);
1271 $langs[$newkey] = $newkey;
1272
1273
1274 // some of these may be overkill
1275 $result_data[$newkey] = array(
1276 'newkey' => $newkey,
1277 'count' => $i,
1278 'diff' => abs($sum1 - $sum2),
1279 'score' => $highest_score,
1280 'bestfit' => $replaceme,
1281 'otherfit' => $deleteme,
1282 'really' => $really_lang,
1283 );
1284 }
1285
1286 $return_val = array(
1287 'open_forks' => $langs,
1288 // the top level of clusters
1289 // clusters that are mutually exclusive
1290 // or specified by a specific maximum
1291
1292 'fork_data' => $result_data,
1293 // data for each split
1294
1295 'name_map' => $really_map,
1296 // which cluster is really which language
1297 // using the nearest neighbor technique, the cluster
1298 // inherits all of the properties of its most-similar member
1299 // this keeps track
1300 );
1301
1302
1303 // saves the result in the object
1304 $this->_clusters = $return_val;
1305
1306 return $return_val;
1307 }
1308
1309
1310 /**
1311 * Perform an intelligent detection based on clusterLanguages()
1312 *
1313 * WARNING: this method is EXPERIMENTAL. It is not recommended for common
1314 * use, and it may disappear or its functionality may change in future
1315 * releases without notice.
1316 *
1317 * This compares the sample text to top the top level of clusters. If the
1318 * sample is similar to the cluster it will drop down and compare it to the
1319 * languages in the cluster, and so on until it hits a leaf node.
1320 *
1321 * this should find the language in considerably fewer compares
1322 * (the equivalent of a binary search), however clusterLanguages() is costly
1323 * and the loss of accuracy from this technique is significant.
1324 *
1325 * This method may need to be 'fuzzier' in order to become more accurate.
1326 *
1327 * This function could be more useful if the universe of possible languages
1328 * was very large, however in such cases some method of Bayesian inference
1329 * might be more helpful.
1330 *
1331 * @param string $str input string
1332 *
1333 * @return array language scores (only those compared)
1334 * @throws Text_LanguageDetect_Exception
1335 * @see clusterLanguages()
1336 */
1337 public function clusteredSearch($str)
1338 {
1339 // input check
1340 if (!Text_LanguageDetect_Parser::validateString($str)) {
1341 return array();
1342 }
1343
1344 // clusterLanguages() will return a cached result if possible
1345 // so it's safe to call it every time
1346 $result = $this->clusterLanguages();
1347
1348 $dendogram_start = $result['open_forks'];
1349 $dendogram_data = $result['fork_data'];
1350 $dendogram_alias = $result['name_map'];
1351
1352 $sample_obj = new Text_LanguageDetect_Parser($str);
1353 $sample_obj->prepareTrigram();
1354 $sample_obj->setPadStart(!$this->_perl_compatible);
1355 $sample_obj->analyze();
1356 $sample_result = $sample_obj->getTrigramRanks();
1357 $sample_count = count($sample_result);
1358
1359 // input check
1360 if ($sample_count == 0) {
1361 return array();
1362 }
1363
1364 $i = 0; // counts the number of steps
1365
1366 foreach ($dendogram_start as $lang) {
1367 if (isset($dendogram_alias[$lang])) {
1368 $lang_key = $dendogram_alias[$lang];
1369 } else {
1370 $lang_key = $lang;
1371 }
1372
1373 $scores[$lang] = $this->_normalize_score(
1374 $this->_distance($this->_lang_db[$lang_key], $sample_result),
1375 $sample_count
1376 );
1377
1378 $i++;
1379 }
1380
1381 if ($this->_perl_compatible) {
1382 asort($scores);
1383 } else {
1384 arsort($scores);
1385 }
1386
1387 $top_score = current($scores);
1388 $top_key = key($scores);
1389
1390 // of starting forks, $top_key is the most similar to the sample
1391
1392 $cur_key = $top_key;
1393 while (isset($dendogram_data[$cur_key])) {
1394 $lang1 = $dendogram_data[$cur_key]['bestfit'];
1395 $lang2 = $dendogram_data[$cur_key]['otherfit'];
1396 foreach (array($lang1, $lang2) as $lang) {
1397 if (isset($dendogram_alias[$lang])) {
1398 $lang_key = $dendogram_alias[$lang];
1399 } else {
1400 $lang_key = $lang;
1401 }
1402
1403 $scores[$lang] = $this->_normalize_score(
1404 $this->_distance($this->_lang_db[$lang_key], $sample_result),
1405 $sample_count
1406 );
1407
1408 //todo: does not need to do same comparison again
1409 }
1410
1411 $i++;
1412
1413 if ($scores[$lang1] > $scores[$lang2]) {
1414 $cur_key = $lang1;
1415 $loser_key = $lang2;
1416 } else {
1417 $cur_key = $lang2;
1418 $loser_key = $lang1;
1419 }
1420
1421 $diff = $scores[$cur_key] - $scores[$loser_key];
1422
1423 // $cur_key ({$dendogram_alias[$cur_key]}) wins
1424 // over $loser_key ({$dendogram_alias[$loser_key]})
1425 // with a difference of $diff
1426 }
1427
1428 // found result in $i compares
1429
1430 // rather than sorting the result, preserve it so that you can see
1431 // which paths the algorithm decided to take along the tree
1432
1433 // but sometimes the last item is only the second highest
1434 if (($this->_perl_compatible && (end($scores) > prev($scores)))
1435 || (!$this->_perl_compatible && (end($scores) < prev($scores)))
1436 ) {
1437 $real_last_score = current($scores);
1438 $real_last_key = key($scores);
1439
1440 // swaps the 2nd-to-last item for the last item
1441 unset($scores[$real_last_key]);
1442 $scores[$real_last_key] = $real_last_score;
1443 }
1444
1445
1446 if (!$this->_perl_compatible) {
1447 $scores = array_reverse($scores, true);
1448 // second param requires php > 4.0.3
1449 }
1450
1451 return $scores;
1452 }
1453
1454 /**
1455 * ut8-safe strlen()
1456 *
1457 * Returns the numbers of characters (not bytes) in a utf8 string
1458 *
1459 * @param string $str string to get the length of
1460 *
1461 * @return int number of chars
1462 */
1463 public static function utf8strlen($str)
1464 {
1465 // utf8_decode() will convert unknown chars to '?', which is actually
1466 // ideal for counting.
1467
1468 return strlen(utf8_decode($str));
1469
1470 // idea stolen from dokuwiki
1471 }
1472
1473 /**
1474 * Returns the unicode value of a utf8 char
1475 *
1476 * @param string $char a utf8 (possibly multi-byte) char
1477 *
1478 * @return int unicode value
1479 * @access protected
1480 * @link http://en.wikipedia.org/wiki/UTF-8
1481 */
1482 function _utf8char2unicode($char)
1483 {
1484 // strlen() here will actually get the binary length of a single char
1485 switch (strlen($char)) {
1486 case 1:
1487 // normal ASCII-7 byte
1488 // 0xxxxxxx --> 0xxxxxxx
1489 return ord($char{0});
1490
1491 case 2:
1492 // 2 byte unicode
1493 // 110zzzzx 10xxxxxx --> 00000zzz zxxxxxxx
1494 $z = (ord($char{0}) & 0x000001F) << 6;
1495 $x = (ord($char{1}) & 0x0000003F);
1496 return ($z | $x);
1497
1498 case 3:
1499 // 3 byte unicode
1500 // 1110zzzz 10zxxxxx 10xxxxxx --> zzzzzxxx xxxxxxxx
1501 $z = (ord($char{0}) & 0x0000000F) << 12;
1502 $x1 = (ord($char{1}) & 0x0000003F) << 6;
1503 $x2 = (ord($char{2}) & 0x0000003F);
1504 return ($z | $x1 | $x2);
1505
1506 case 4:
1507 // 4 byte unicode
1508 // 11110zzz 10zzxxxx 10xxxxxx 10xxxxxx -->
1509 // 000zzzzz xxxxxxxx xxxxxxxx
1510 $z1 = (ord($char{0}) & 0x00000007) << 18;
1511 $z2 = (ord($char{1}) & 0x0000003F) << 12;
1512 $x1 = (ord($char{2}) & 0x0000003F) << 6;
1513 $x2 = (ord($char{3}) & 0x0000003F);
1514 return ($z1 | $z2 | $x1 | $x2);
1515 }
1516 }
1517
1518 /**
1519 * utf8-safe fast character iterator
1520 *
1521 * Will get the next character starting from $counter, which will then be
1522 * incremented. If a multi-byte char the bytes will be concatenated and
1523 * $counter will be incremeted by the number of bytes in the char.
1524 *
1525 * @param string $str the string being iterated over
1526 * @param int &$counter the iterator, will increment by reference
1527 * @param bool $special_convert whether to do special conversions
1528 *
1529 * @return char the next (possibly multi-byte) char from $counter
1530 * @access private
1531 */
1532 static function _next_char($str, &$counter, $special_convert = false)
1533 {
1534 $char = $str{$counter++};
1535 $ord = ord($char);
1536
1537 // for a description of the utf8 system see
1538 // http://www.phpclasses.org/browse/file/5131.html
1539
1540 // normal ascii one byte char
1541 if ($ord <= 127) {
1542 // special conversions needed for this package
1543 // (that only apply to regular ascii characters)
1544 // lower case, and convert all non-alphanumeric characters
1545 // other than "'" to space
1546 if ($special_convert && $char != ' ' && $char != "'") {
1547 if ($ord >= 65 && $ord <= 90) { // A-Z
1548 $char = chr($ord + 32); // lower case
1549 } elseif ($ord < 97 || $ord > 122) { // NOT a-z
1550 $char = ' '; // convert to space
1551 }
1552 }
1553
1554 return $char;
1555
1556 } elseif ($ord >> 5 == 6) { // two-byte char
1557 // multi-byte chars
1558 $nextchar = $str{$counter++}; // get next byte
1559
1560 // lower-casing of non-ascii characters is still incomplete
1561
1562 if ($special_convert) {
1563 // lower case latin accented characters
1564 if ($ord == 195) {
1565 $nextord = ord($nextchar);
1566 $nextord_adj = $nextord + 64;
1567 // for a reference, see
1568 // http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
1569
1570 // &Agrave; - &THORN; but not &times;
1571 if ($nextord_adj >= 192
1572 && $nextord_adj <= 222
1573 && $nextord_adj != 215
1574 ) {
1575 $nextchar = chr($nextord + 32);
1576 }
1577
1578 } elseif ($ord == 208) {
1579 // lower case cyrillic alphabet
1580 $nextord = ord($nextchar);
1581 // if A - Pe
1582 if ($nextord >= 144 && $nextord <= 159) {
1583 // lower case
1584 $nextchar = chr($nextord + 32);
1585
1586 } elseif ($nextord >= 160 && $nextord <= 175) {
1587 // if Er - Ya
1588 // lower case
1589 $char = chr(209); // == $ord++
1590 $nextchar = chr($nextord - 32);
1591 }
1592 }
1593 }
1594
1595 // tag on next byte
1596 return $char . $nextchar;
1597 } elseif ($ord >> 4 == 14) { // three-byte char
1598
1599 // tag on next 2 bytes
1600 return $char . $str{$counter++} . $str{$counter++};
1601
1602 } elseif ($ord >> 3 == 30) { // four-byte char
1603
1604 // tag on next 3 bytes
1605 return $char . $str{$counter++} . $str{$counter++} . $str{$counter++};
1606
1607 } else {
1608 // error?
1609 }
1610 }
1611
1612 /**
1613 * Converts an $language input parameter from the configured mode
1614 * to the language name that is used internally.
1615 *
1616 * Works for strings and arrays.
1617 *
1618 * @param string|array $lang A language description ("english"/"en"/"eng")
1619 * @param boolean $convertKey If $lang is an array, setting $key
1620 * converts the keys to the language name.
1621 *
1622 * @return string|array Language name
1623 */
1624 function _convertFromNameMode($lang, $convertKey = false)
1625 {
1626 if ($this->_name_mode == 0) {
1627 return $lang;
1628 }
1629
1630 if ($this->_name_mode == 2) {
1631 $method = 'code2ToName';
1632 } else {
1633 $method = 'code3ToName';
1634 }
1635
1636 if (is_string($lang)) {
1637 return (string)Text_LanguageDetect_ISO639::$method($lang);
1638 }
1639
1640 $newlang = array();
1641 foreach ($lang as $key => $val) {
1642 if ($convertKey) {
1643 $newkey = (string)Text_LanguageDetect_ISO639::$method($key);
1644 $newlang[$newkey] = $val;
1645 } else {
1646 $newlang[$key] = (string)Text_LanguageDetect_ISO639::$method($val);
1647 }
1648 }
1649 return $newlang;
1650 }
1651
1652 /**
1653 * Converts an $language output parameter from the language name that is
1654 * used internally to the configured mode.
1655 *
1656 * Works for strings and arrays.
1657 *
1658 * @param string|array $lang A language description ("english"/"en"/"eng")
1659 * @param boolean $convertKey If $lang is an array, setting $key
1660 * converts the keys to the language name.
1661 *
1662 * @return string|array Language name
1663 */
1664 function _convertToNameMode($lang, $convertKey = false)
1665 {
1666 if ($this->_name_mode == 0) {
1667 return $lang;
1668 }
1669
1670 if ($this->_name_mode == 2) {
1671 $method = 'nameToCode2';
1672 } else {
1673 $method = 'nameToCode3';
1674 }
1675
1676 if (is_string($lang)) {
1677 return Text_LanguageDetect_ISO639::$method($lang);
1678 }
1679
1680 $newlang = array();
1681 foreach ($lang as $key => $val) {
1682 if ($convertKey) {
1683 $newkey = Text_LanguageDetect_ISO639::$method($key);
1684 $newlang[$newkey] = $val;
1685 } else {
1686 $newlang[$key] = Text_LanguageDetect_ISO639::$method($val);
1687 }
1688 }
1689 return $newlang;
1690 }
1691}
1692
1693/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ \ No newline at end of file
diff --git a/inc/3rdparty/libraries/language-detect/LanguageDetect/Exception.php b/inc/3rdparty/libraries/language-detect/LanguageDetect/Exception.php
deleted file mode 100644
index 196d994f..00000000
--- a/inc/3rdparty/libraries/language-detect/LanguageDetect/Exception.php
+++ /dev/null
@@ -1,57 +0,0 @@
1<?php
2class Text_LanguageDetect_Exception extends Exception
3{
4 /**
5 * Database file could not be found
6 */
7 const DB_NOT_FOUND = 10;
8
9 /**
10 * Database file found, but not readable
11 */
12 const DB_NOT_READABLE = 11;
13
14 /**
15 * Database file is empty
16 */
17 const DB_EMPTY = 12;
18
19 /**
20 * Database contents is not a PHP array
21 */
22 const DB_NOT_ARRAY = 13;
23
24 /**
25 * Magic quotes are activated
26 */
27 const MAGIC_QUOTES = 14;
28
29
30 /**
31 * Parameter of invalid type passed to method
32 */
33 const PARAM_TYPE = 20;
34
35 /**
36 * Character in parameter is invalid
37 */
38 const INVALID_CHAR = 21;
39
40
41 /**
42 * Language is not in the database
43 */
44 const UNKNOWN_LANGUAGE = 30;
45
46
47 /**
48 * Error during block detection
49 */
50 const BLOCK_DETECTION = 40;
51
52
53 /**
54 * Error while clustering languages
55 */
56 const NO_HIGHEST_KEY = 50;
57}
diff --git a/inc/3rdparty/libraries/language-detect/LanguageDetect/ISO639.php b/inc/3rdparty/libraries/language-detect/LanguageDetect/ISO639.php
deleted file mode 100644
index 05b0590d..00000000
--- a/inc/3rdparty/libraries/language-detect/LanguageDetect/ISO639.php
+++ /dev/null
@@ -1,339 +0,0 @@
1<?php
2/**
3 * Part of Text_LanguageDetect
4 *
5 * PHP version 5
6 *
7 * @category Text
8 * @package Text_LanguageDetect
9 * @author Christian Weiske <cweiske@php.net>
10 * @copyright 2011 Christian Weiske <cweiske@php.net>
11 * @license http://www.debian.org/misc/bsd.license BSD
12 * @version SVN: $Id$
13 * @link http://pear.php.net/package/Text_LanguageDetect/
14 */
15
16/**
17 * Provides a mapping between the languages from lang.dat and the
18 * ISO 639-1 and ISO-639-2 codes.
19 *
20 * Note that this class contains only languages that exist in lang.dat.
21 *
22 * @category Text
23 * @package Text_LanguageDetect
24 * @author Christian Weiske <cweiske@php.net>
25 * @copyright 2011 Christian Weiske <cweiske@php.net>
26 * @license http://www.debian.org/misc/bsd.license BSD
27 * @link http://www.loc.gov/standards/iso639-2/php/code_list.php
28 */
29class Text_LanguageDetect_ISO639
30{
31 /**
32 * Maps all language names from the language database to the
33 * ISO 639-1 2-letter language code.
34 *
35 * NULL indicates that there is no 2-letter code.
36 *
37 * @var array
38 */
39 public static $nameToCode2 = array(
40 'albanian' => 'sq',
41 'arabic' => 'ar',
42 'azeri' => 'az',
43 'bengali' => 'bn',
44 'bulgarian' => 'bg',
45 'cebuano' => null,
46 'croatian' => 'hr',
47 'czech' => 'cs',
48 'danish' => 'da',
49 'dutch' => 'nl',
50 'english' => 'en',
51 'estonian' => 'et',
52 'farsi' => 'fa',
53 'finnish' => 'fi',
54 'french' => 'fr',
55 'german' => 'de',
56 'hausa' => 'ha',
57 'hawaiian' => null,
58 'hindi' => 'hi',
59 'hungarian' => 'hu',
60 'icelandic' => 'is',
61 'indonesian' => 'id',
62 'italian' => 'it',
63 'kazakh' => 'kk',
64 'kyrgyz' => 'ky',
65 'latin' => 'la',
66 'latvian' => 'lv',
67 'lithuanian' => 'lt',
68 'macedonian' => 'mk',
69 'mongolian' => 'mn',
70 'nepali' => 'ne',
71 'norwegian' => 'no',
72 'pashto' => 'ps',
73 'pidgin' => null,
74 'polish' => 'pl',
75 'portuguese' => 'pt',
76 'romanian' => 'ro',
77 'russian' => 'ru',
78 'serbian' => 'sr',
79 'slovak' => 'sk',
80 'slovene' => 'sl',
81 'somali' => 'so',
82 'spanish' => 'es',
83 'swahili' => 'sw',
84 'swedish' => 'sv',
85 'tagalog' => 'tl',
86 'turkish' => 'tr',
87 'ukrainian' => 'uk',
88 'urdu' => 'ur',
89 'uzbek' => 'uz',
90 'vietnamese' => 'vi',
91 'welsh' => 'cy',
92 );
93
94 /**
95 * Maps all language names from the language database to the
96 * ISO 639-2 3-letter language code.
97 *
98 * @var array
99 */
100 public static $nameToCode3 = array(
101 'albanian' => 'sqi',
102 'arabic' => 'ara',
103 'azeri' => 'aze',
104 'bengali' => 'ben',
105 'bulgarian' => 'bul',
106 'cebuano' => 'ceb',
107 'croatian' => 'hrv',
108 'czech' => 'ces',
109 'danish' => 'dan',
110 'dutch' => 'nld',
111 'english' => 'eng',
112 'estonian' => 'est',
113 'farsi' => 'fas',
114 'finnish' => 'fin',
115 'french' => 'fra',
116 'german' => 'deu',
117 'hausa' => 'hau',
118 'hawaiian' => 'haw',
119 'hindi' => 'hin',
120 'hungarian' => 'hun',
121 'icelandic' => 'isl',
122 'indonesian' => 'ind',
123 'italian' => 'ita',
124 'kazakh' => 'kaz',
125 'kyrgyz' => 'kir',
126 'latin' => 'lat',
127 'latvian' => 'lav',
128 'lithuanian' => 'lit',
129 'macedonian' => 'mkd',
130 'mongolian' => 'mon',
131 'nepali' => 'nep',
132 'norwegian' => 'nor',
133 'pashto' => 'pus',
134 'pidgin' => 'crp',
135 'polish' => 'pol',
136 'portuguese' => 'por',
137 'romanian' => 'ron',
138 'russian' => 'rus',
139 'serbian' => 'srp',
140 'slovak' => 'slk',
141 'slovene' => 'slv',
142 'somali' => 'som',
143 'spanish' => 'spa',
144 'swahili' => 'swa',
145 'swedish' => 'swe',
146 'tagalog' => 'tgl',
147 'turkish' => 'tur',
148 'ukrainian' => 'ukr',
149 'urdu' => 'urd',
150 'uzbek' => 'uzb',
151 'vietnamese' => 'vie',
152 'welsh' => 'cym',
153 );
154
155 /**
156 * Maps ISO 639-1 2-letter language codes to the language names
157 * in the language database
158 *
159 * Not all languages have a 2 letter code, so some are missing
160 *
161 * @var array
162 */
163 public static $code2ToName = array(
164 'ar' => 'arabic',
165 'az' => 'azeri',
166 'bg' => 'bulgarian',
167 'bn' => 'bengali',
168 'cs' => 'czech',
169 'cy' => 'welsh',
170 'da' => 'danish',
171 'de' => 'german',
172 'en' => 'english',
173 'es' => 'spanish',
174 'et' => 'estonian',
175 'fa' => 'farsi',
176 'fi' => 'finnish',
177 'fr' => 'french',
178 'ha' => 'hausa',
179 'hi' => 'hindi',
180 'hr' => 'croatian',
181 'hu' => 'hungarian',
182 'id' => 'indonesian',
183 'is' => 'icelandic',
184 'it' => 'italian',
185 'kk' => 'kazakh',
186 'ky' => 'kyrgyz',
187 'la' => 'latin',
188 'lt' => 'lithuanian',
189 'lv' => 'latvian',
190 'mk' => 'macedonian',
191 'mn' => 'mongolian',
192 'ne' => 'nepali',
193 'nl' => 'dutch',
194 'no' => 'norwegian',
195 'pl' => 'polish',
196 'ps' => 'pashto',
197 'pt' => 'portuguese',
198 'ro' => 'romanian',
199 'ru' => 'russian',
200 'sk' => 'slovak',
201 'sl' => 'slovene',
202 'so' => 'somali',
203 'sq' => 'albanian',
204 'sr' => 'serbian',
205 'sv' => 'swedish',
206 'sw' => 'swahili',
207 'tl' => 'tagalog',
208 'tr' => 'turkish',
209 'uk' => 'ukrainian',
210 'ur' => 'urdu',
211 'uz' => 'uzbek',
212 'vi' => 'vietnamese',
213 );
214
215 /**
216 * Maps ISO 639-2 3-letter language codes to the language names
217 * in the language database.
218 *
219 * @var array
220 */
221 public static $code3ToName = array(
222 'ara' => 'arabic',
223 'aze' => 'azeri',
224 'ben' => 'bengali',
225 'bul' => 'bulgarian',
226 'ceb' => 'cebuano',
227 'ces' => 'czech',
228 'crp' => 'pidgin',
229 'cym' => 'welsh',
230 'dan' => 'danish',
231 'deu' => 'german',
232 'eng' => 'english',
233 'est' => 'estonian',
234 'fas' => 'farsi',
235 'fin' => 'finnish',
236 'fra' => 'french',
237 'hau' => 'hausa',
238 'haw' => 'hawaiian',
239 'hin' => 'hindi',
240 'hrv' => 'croatian',
241 'hun' => 'hungarian',
242 'ind' => 'indonesian',
243 'isl' => 'icelandic',
244 'ita' => 'italian',
245 'kaz' => 'kazakh',
246 'kir' => 'kyrgyz',
247 'lat' => 'latin',
248 'lav' => 'latvian',
249 'lit' => 'lithuanian',
250 'mkd' => 'macedonian',
251 'mon' => 'mongolian',
252 'nep' => 'nepali',
253 'nld' => 'dutch',
254 'nor' => 'norwegian',
255 'pol' => 'polish',
256 'por' => 'portuguese',
257 'pus' => 'pashto',
258 'rom' => 'romanian',
259 'rus' => 'russian',
260 'slk' => 'slovak',
261 'slv' => 'slovene',
262 'som' => 'somali',
263 'spa' => 'spanish',
264 'sqi' => 'albanian',
265 'srp' => 'serbian',
266 'swa' => 'swahili',
267 'swe' => 'swedish',
268 'tgl' => 'tagalog',
269 'tur' => 'turkish',
270 'ukr' => 'ukrainian',
271 'urd' => 'urdu',
272 'uzb' => 'uzbek',
273 'vie' => 'vietnamese',
274 );
275
276 /**
277 * Returns the 2-letter ISO 639-1 code for the given language name.
278 *
279 * @param string $lang English language name like "swedish"
280 *
281 * @return string Two-letter language code (e.g. "sv") or NULL if not found
282 */
283 public static function nameToCode2($lang)
284 {
285 $lang = strtolower($lang);
286 if (!isset(self::$nameToCode2[$lang])) {
287 return null;
288 }
289 return self::$nameToCode2[$lang];
290 }
291
292 /**
293 * Returns the 3-letter ISO 639-2 code for the given language name.
294 *
295 * @param string $lang English language name like "swedish"
296 *
297 * @return string Three-letter language code (e.g. "swe") or NULL if not found
298 */
299 public static function nameToCode3($lang)
300 {
301 $lang = strtolower($lang);
302 if (!isset(self::$nameToCode3[$lang])) {
303 return null;
304 }
305 return self::$nameToCode3[$lang];
306 }
307
308 /**
309 * Returns the language name for the given 2-letter ISO 639-1 code.
310 *
311 * @param string $code Two-letter language code (e.g. "sv")
312 *
313 * @return string English language name like "swedish"
314 */
315 public static function code2ToName($code)
316 {
317 $lang = strtolower($code);
318 if (!isset(self::$code2ToName[$code])) {
319 return null;
320 }
321 return self::$code2ToName[$code];
322 }
323
324 /**
325 * Returns the language name for the given 3-letter ISO 639-2 code.
326 *
327 * @param string $code Three-letter language code (e.g. "swe")
328 *
329 * @return string English language name like "swedish"
330 */
331 public static function code3ToName($code)
332 {
333 $lang = strtolower($code);
334 if (!isset(self::$code3ToName[$code])) {
335 return null;
336 }
337 return self::$code3ToName[$code];
338 }
339} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/language-detect/LanguageDetect/Parser.php b/inc/3rdparty/libraries/language-detect/LanguageDetect/Parser.php
deleted file mode 100644
index fb0e1e20..00000000
--- a/inc/3rdparty/libraries/language-detect/LanguageDetect/Parser.php
+++ /dev/null
@@ -1,347 +0,0 @@
1<?php
2
3/**
4 * This class represents a text sample to be parsed.
5 *
6 * @category Text
7 * @package Text_LanguageDetect
8 * @author Nicholas Pisarro
9 * @copyright 2006
10 * @license BSD
11 * @version CVS: $Id: Parser.php 322327 2012-01-15 17:55:59Z cweiske $
12 * @link http://pear.php.net/package/Text_LanguageDetect/
13 * @link http://langdetect.blogspot.com/
14 */
15
16/**
17 * This class represents a text sample to be parsed.
18 *
19 * This separates the analysis of a text sample from the primary LanguageDetect
20 * class. After a new profile has been built, the data can be retrieved using
21 * the accessor functions.
22 *
23 * This class is intended to be used by the Text_LanguageDetect class, not
24 * end-users.
25 *
26 * @category Text
27 * @package Text_LanguageDetect
28 * @author Nicholas Pisarro
29 * @copyright 2006
30 * @license BSD
31 * @version release: 0.3.0
32 */
33class Text_LanguageDetect_Parser extends Text_LanguageDetect
34{
35 /**
36 * the piece of text being parsed
37 *
38 * @access private
39 * @var string
40 */
41 var $_string;
42
43 /**
44 * stores the trigram frequencies of the sample
45 *
46 * @access private
47 * @var string
48 */
49 var $_trigrams = array();
50
51 /**
52 * stores the trigram ranks of the sample
53 *
54 * @access private
55 * @var array
56 */
57 var $_trigram_ranks = array();
58
59 /**
60 * stores the unicode blocks of the sample
61 *
62 * @access private
63 * @var array
64 */
65 var $_unicode_blocks = array();
66
67 /**
68 * Whether the parser should compile the unicode ranges
69 *
70 * @access private
71 * @var bool
72 */
73 var $_compile_unicode = false;
74
75 /**
76 * Whether the parser should compile trigrams
77 *
78 * @access private
79 * @var bool
80 */
81 var $_compile_trigram = false;
82
83 /**
84 * Whether the trigram parser should pad the beginning of the string
85 *
86 * @access private
87 * @var bool
88 */
89 var $_trigram_pad_start = false;
90
91 /**
92 * Whether the unicode parser should skip non-alphabetical ascii chars
93 *
94 * @access private
95 * @var bool
96 */
97 var $_unicode_skip_symbols = true;
98
99 /**
100 * Constructor
101 *
102 * @access private
103 * @param string $string string to be parsed
104 */
105 function Text_LanguageDetect_Parser($string) {
106 $this->_string = $string;
107 }
108
109 /**
110 * Returns true if a string is suitable for parsing
111 *
112 * @param string $str input string to test
113 * @return bool true if acceptable, false if not
114 */
115 public static function validateString($str) {
116 if (!empty($str) && strlen($str) > 3 && preg_match('/\S/', $str)) {
117 return true;
118 } else {
119 return false;
120 }
121 }
122
123 /**
124 * turn on/off trigram counting
125 *
126 * @access public
127 * @param bool $bool true for on, false for off
128 */
129 function prepareTrigram($bool = true)
130 {
131 $this->_compile_trigram = $bool;
132 }
133
134 /**
135 * turn on/off unicode block counting
136 *
137 * @access public
138 * @param bool $bool true for on, false for off
139 */
140 function prepareUnicode($bool = true)
141 {
142 $this->_compile_unicode = $bool;
143 }
144
145 /**
146 * turn on/off padding the beginning of the sample string
147 *
148 * @access public
149 * @param bool $bool true for on, false for off
150 */
151 function setPadStart($bool = true)
152 {
153 $this->_trigram_pad_start = $bool;
154 }
155
156 /**
157 * Should the unicode block counter skip non-alphabetical ascii chars?
158 *
159 * @access public
160 * @param bool $bool true for on, false for off
161 */
162 function setUnicodeSkipSymbols($bool = true)
163 {
164 $this->_unicode_skip_symbols = $bool;
165 }
166
167 /**
168 * Returns the trigram ranks for the text sample
169 *
170 * @access public
171 * @return array trigram ranks in the text sample
172 */
173 function &getTrigramRanks()
174 {
175 return $this->_trigram_ranks;
176 }
177
178 /**
179 * Return the trigram freqency table
180 *
181 * only used in testing to make sure the parser is working
182 *
183 * @access public
184 * @return array trigram freqencies in the text sample
185 */
186 function &getTrigramFreqs()
187 {
188 return $this->_trigram;
189 }
190
191 /**
192 * returns the array of unicode blocks
193 *
194 * @access public
195 * @return array unicode blocks in the text sample
196 */
197 function &getUnicodeBlocks()
198 {
199 return $this->_unicode_blocks;
200 }
201
202 /**
203 * Executes the parsing operation
204 *
205 * Be sure to call the set*() functions to set options and the
206 * prepare*() functions first to tell it what kind of data to compute
207 *
208 * Afterwards the get*() functions can be used to access the compiled
209 * information.
210 *
211 * @access public
212 */
213 function analyze()
214 {
215 $len = strlen($this->_string);
216 $byte_counter = 0;
217
218
219 // unicode startup
220 if ($this->_compile_unicode) {
221 $blocks = $this->_read_unicode_block_db();
222 $block_count = count($blocks);
223
224 $skipped_count = 0;
225 $unicode_chars = array();
226 }
227
228 // trigram startup
229 if ($this->_compile_trigram) {
230 // initialize them as blank so the parser will skip the first two
231 // (since it skips trigrams with more than 2 contiguous spaces)
232 $a = ' ';
233 $b = ' ';
234
235 // kludge
236 // if it finds a valid trigram to start and the start pad option is
237 // off, then set a variable that will be used to reduce this
238 // trigram after parsing has finished
239 if (!$this->_trigram_pad_start) {
240 $a = $this->_next_char($this->_string, $byte_counter, true);
241
242 if ($a != ' ') {
243 $b = $this->_next_char($this->_string, $byte_counter, true);
244 $dropone = " $a$b";
245 }
246
247 $byte_counter = 0;
248 $a = ' ';
249 $b = ' ';
250 }
251 }
252
253 while ($byte_counter < $len) {
254 $char = $this->_next_char($this->_string, $byte_counter, true);
255
256
257 // language trigram detection
258 if ($this->_compile_trigram) {
259 if (!($b == ' ' && ($a == ' ' || $char == ' '))) {
260 if (!isset($this->_trigram[$a . $b . $char])) {
261 $this->_trigram[$a . $b . $char] = 1;
262 } else {
263 $this->_trigram[$a . $b . $char]++;
264 }
265 }
266
267 $a = $b;
268 $b = $char;
269 }
270
271 // unicode block detection
272 if ($this->_compile_unicode) {
273 if ($this->_unicode_skip_symbols
274 && strlen($char) == 1
275 && ($char < 'A' || $char > 'z'
276 || ($char > 'Z' && $char < 'a'))
277 && $char != "'") { // does not skip the apostrophe
278 // since it's included in the language
279 // models
280
281 $skipped_count++;
282 continue;
283 }
284
285 // build an array of all the characters
286 if (isset($unicode_chars[$char])) {
287 $unicode_chars[$char]++;
288 } else {
289 $unicode_chars[$char] = 1;
290 }
291 }
292
293 // todo: add byte detection here
294 }
295
296 // unicode cleanup
297 if ($this->_compile_unicode) {
298 foreach ($unicode_chars as $utf8_char => $count) {
299 $search_result = $this->_unicode_block_name(
300 $this->_utf8char2unicode($utf8_char), $blocks, $block_count);
301
302 if ($search_result != -1) {
303 $block_name = $search_result[2];
304 } else {
305 $block_name = '[Malformatted]';
306 }
307
308 if (isset($this->_unicode_blocks[$block_name])) {
309 $this->_unicode_blocks[$block_name] += $count;
310 } else {
311 $this->_unicode_blocks[$block_name] = $count;
312 }
313 }
314 }
315
316
317 // trigram cleanup
318 if ($this->_compile_trigram) {
319 // pad the end
320 if ($b != ' ') {
321 if (!isset($this->_trigram["$a$b "])) {
322 $this->_trigram["$a$b "] = 1;
323 } else {
324 $this->_trigram["$a$b "]++;
325 }
326 }
327
328 // perl compatibility; Language::Guess does not pad the beginning
329 // kludge
330 if (isset($dropone)) {
331 if ($this->_trigram[$dropone] == 1) {
332 unset($this->_trigram[$dropone]);
333 } else {
334 $this->_trigram[$dropone]--;
335 }
336 }
337
338 if (!empty($this->_trigram)) {
339 $this->_trigram_ranks = $this->_arr_rank($this->_trigram);
340 } else {
341 $this->_trigram_ranks = array();
342 }
343 }
344 }
345}
346
347/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ \ No newline at end of file
diff --git a/inc/3rdparty/libraries/language-detect/lang.dat b/inc/3rdparty/libraries/language-detect/lang.dat
deleted file mode 100644
index c2a44f56..00000000
--- a/inc/3rdparty/libraries/language-detect/lang.dat
+++ /dev/null
@@ -1 +0,0 @@
1a:2:{s:7:"trigram";a:52:{s:8:"albanian";a:300:{s:4:"të ";s:1:"0";s:4:" të";s:1:"1";s:4:"në ";s:1:"2";s:4:"për";s:1:"3";s:4:" pë";s:1:"4";s:3:" e ";s:1:"5";s:3:"sht";s:1:"6";s:4:" në";s:1:"7";s:3:" sh";s:1:"8";s:3:"se ";s:1:"9";s:3:"et ";s:2:"10";s:4:"ë s";s:2:"11";s:4:"ë t";s:2:"12";s:3:" se";s:2:"13";s:3:"he ";s:2:"14";s:4:"jë ";s:2:"15";s:4:"ër ";s:2:"16";s:3:"dhe";s:2:"17";s:3:" pa";s:2:"18";s:4:"ë n";s:2:"19";s:4:"ë p";s:2:"20";s:4:" që";s:2:"21";s:3:" dh";s:2:"22";s:4:"një";s:2:"23";s:4:"ë m";s:2:"24";s:3:" nj";s:2:"25";s:4:"ësh";s:2:"26";s:3:"in ";s:2:"27";s:3:" me";s:2:"28";s:4:"që ";s:2:"29";s:3:" po";s:2:"30";s:3:"e n";s:2:"31";s:3:"e t";s:2:"32";s:3:"ish";s:2:"33";s:4:"më ";s:2:"34";s:4:"së ";s:2:"35";s:3:"me ";s:2:"36";s:4:"htë";s:2:"37";s:3:" ka";s:2:"38";s:3:" si";s:2:"39";s:3:"e k";s:2:"40";s:3:"e p";s:2:"41";s:3:" i ";s:2:"42";s:4:"anë";s:2:"43";s:3:"ar ";s:2:"44";s:3:" nu";s:2:"45";s:3:"und";s:2:"46";s:3:"ve ";s:2:"47";s:4:" ës";s:2:"48";s:3:"e s";s:2:"49";s:4:" më";s:2:"50";s:3:"nuk";s:2:"51";s:3:"par";s:2:"52";s:3:"uar";s:2:"53";s:3:"uk ";s:2:"54";s:3:"jo ";s:2:"55";s:4:"rë ";s:2:"56";s:3:"ta ";s:2:"57";s:4:"ë f";s:2:"58";s:3:"en ";s:2:"59";s:3:"it ";s:2:"60";s:3:"min";s:2:"61";s:3:"het";s:2:"62";s:3:"n e";s:2:"63";s:3:"ri ";s:2:"64";s:3:"shq";s:2:"65";s:4:"ë d";s:2:"66";s:3:" do";s:2:"67";s:3:" nd";s:2:"68";s:3:"sh ";s:2:"69";s:4:"ën ";s:2:"70";s:4:"atë";s:2:"71";s:3:"hqi";s:2:"72";s:3:"ist";s:2:"73";s:4:"ë q";s:2:"74";s:3:" gj";s:2:"75";s:3:" ng";s:2:"76";s:3:" th";s:2:"77";s:3:"a n";s:2:"78";s:3:"do ";s:2:"79";s:3:"end";s:2:"80";s:3:"imi";s:2:"81";s:3:"ndi";s:2:"82";s:3:"r t";s:2:"83";s:3:"rat";s:2:"84";s:4:"ë b";s:2:"85";s:4:"ëri";s:2:"86";s:3:" mu";s:2:"87";s:3:"art";s:2:"88";s:3:"ash";s:2:"89";s:3:"qip";s:2:"90";s:3:" ko";s:2:"91";s:3:"e m";s:2:"92";s:3:"edh";s:2:"93";s:3:"eri";s:2:"94";s:3:"je ";s:2:"95";s:3:"ka ";s:2:"96";s:3:"nga";s:2:"97";s:3:"si ";s:2:"98";s:3:"te ";s:2:"99";s:4:"ë k";s:3:"100";s:4:"ësi";s:3:"101";s:3:" ma";s:3:"102";s:3:" ti";s:3:"103";s:3:"eve";s:3:"104";s:3:"hje";s:3:"105";s:3:"ira";s:3:"106";s:3:"mun";s:3:"107";s:3:"on ";s:3:"108";s:3:"po ";s:3:"109";s:3:"re ";s:3:"110";s:3:" pr";s:3:"111";s:3:"im ";s:3:"112";s:3:"lit";s:3:"113";s:3:"o t";s:3:"114";s:3:"ur ";s:3:"115";s:4:"ë e";s:3:"116";s:4:"ë v";s:3:"117";s:4:"ët ";s:3:"118";s:3:" ku";s:3:"119";s:4:" së";s:3:"120";s:3:"e d";s:3:"121";s:3:"es ";s:3:"122";s:3:"ga ";s:3:"123";s:3:"iti";s:3:"124";s:3:"jet";s:3:"125";s:4:"ndë";s:3:"126";s:3:"oli";s:3:"127";s:3:"shi";s:3:"128";s:3:"tje";s:3:"129";s:4:" bë";s:3:"130";s:3:" z ";s:3:"131";s:3:"gje";s:3:"132";s:3:"kan";s:3:"133";s:3:"shk";s:3:"134";s:4:"ënd";s:3:"135";s:4:"ës ";s:3:"136";s:3:" de";s:3:"137";s:3:" kj";s:3:"138";s:3:" ru";s:3:"139";s:3:" vi";s:3:"140";s:3:"ara";s:3:"141";s:3:"gov";s:3:"142";s:3:"kjo";s:3:"143";s:3:"or ";s:3:"144";s:3:"r p";s:3:"145";s:3:"rto";s:3:"146";s:3:"rug";s:3:"147";s:3:"tet";s:3:"148";s:3:"ugo";s:3:"149";s:3:"ali";s:3:"150";s:3:"arr";s:3:"151";s:3:"at ";s:3:"152";s:3:"d t";s:3:"153";s:3:"ht ";s:3:"154";s:3:"i p";s:3:"155";s:4:"ipë";s:3:"156";s:3:"izi";s:3:"157";s:4:"jnë";s:3:"158";s:3:"n n";s:3:"159";s:3:"ohe";s:3:"160";s:3:"shu";s:3:"161";s:4:"shë";s:3:"162";s:3:"t e";s:3:"163";s:3:"tik";s:3:"164";s:3:"a e";s:3:"165";s:4:"arë";s:3:"166";s:4:"etë";s:3:"167";s:3:"hum";s:3:"168";s:3:"nd ";s:3:"169";s:3:"ndr";s:3:"170";s:3:"osh";s:3:"171";s:3:"ova";s:3:"172";s:3:"rim";s:3:"173";s:3:"tos";s:3:"174";s:3:"va ";s:3:"175";s:3:" fa";s:3:"176";s:3:" fi";s:3:"177";s:3:"a s";s:3:"178";s:3:"hen";s:3:"179";s:3:"i n";s:3:"180";s:3:"mar";s:3:"181";s:3:"ndo";s:3:"182";s:3:"por";s:3:"183";s:3:"ris";s:3:"184";s:3:"sa ";s:3:"185";s:3:"sis";s:3:"186";s:4:"tës";s:3:"187";s:4:"umë";s:3:"188";s:3:"viz";s:3:"189";s:3:"zit";s:3:"190";s:3:" di";s:3:"191";s:3:" mb";s:3:"192";s:3:"aj ";s:3:"193";s:3:"ana";s:3:"194";s:3:"ata";s:3:"195";s:4:"dër";s:3:"196";s:3:"e a";s:3:"197";s:3:"esh";s:3:"198";s:3:"ime";s:3:"199";s:3:"jes";s:3:"200";s:3:"lar";s:3:"201";s:3:"n s";s:3:"202";s:3:"nte";s:3:"203";s:3:"pol";s:3:"204";s:3:"r n";s:3:"205";s:3:"ran";s:3:"206";s:3:"res";s:3:"207";s:4:"rrë";s:3:"208";s:3:"tar";s:3:"209";s:4:"ë a";s:3:"210";s:4:"ë i";s:3:"211";s:3:" at";s:3:"212";s:3:" jo";s:3:"213";s:4:" kë";s:3:"214";s:3:" re";s:3:"215";s:3:"a k";s:3:"216";s:3:"ai ";s:3:"217";s:3:"akt";s:3:"218";s:4:"hë ";s:3:"219";s:4:"hën";s:3:"220";s:3:"i i";s:3:"221";s:3:"i m";s:3:"222";s:3:"ia ";s:3:"223";s:3:"men";s:3:"224";s:3:"nis";s:3:"225";s:3:"shm";s:3:"226";s:3:"str";s:3:"227";s:3:"t k";s:3:"228";s:3:"t n";s:3:"229";s:3:"t s";s:3:"230";s:4:"ë g";s:3:"231";s:4:"ërk";s:3:"232";s:4:"ëve";s:3:"233";s:3:" ai";s:3:"234";s:3:" ci";s:3:"235";s:3:" ed";s:3:"236";s:3:" ja";s:3:"237";s:3:" kr";s:3:"238";s:3:" qe";s:3:"239";s:3:" ta";s:3:"240";s:3:" ve";s:3:"241";s:3:"a p";s:3:"242";s:3:"cil";s:3:"243";s:3:"el ";s:3:"244";s:4:"erë";s:3:"245";s:3:"gji";s:3:"246";s:3:"hte";s:3:"247";s:3:"i t";s:3:"248";s:3:"jen";s:3:"249";s:3:"jit";s:3:"250";s:3:"k d";s:3:"251";s:4:"mën";s:3:"252";s:3:"n t";s:3:"253";s:3:"nyr";s:3:"254";s:3:"ori";s:3:"255";s:3:"pas";s:3:"256";s:3:"ra ";s:3:"257";s:3:"rie";s:3:"258";s:4:"rës";s:3:"259";s:3:"tor";s:3:"260";s:3:"uaj";s:3:"261";s:3:"yre";s:3:"262";s:4:"ëm ";s:3:"263";s:4:"ëny";s:3:"264";s:3:" ar";s:3:"265";s:3:" du";s:3:"266";s:3:" ga";s:3:"267";s:3:" je";s:3:"268";s:4:"dës";s:3:"269";s:3:"e e";s:3:"270";s:3:"e z";s:3:"271";s:3:"ha ";s:3:"272";s:3:"hme";s:3:"273";s:3:"ika";s:3:"274";s:3:"ini";s:3:"275";s:3:"ite";s:3:"276";s:3:"ith";s:3:"277";s:3:"koh";s:3:"278";s:3:"kra";s:3:"279";s:3:"ku ";s:3:"280";s:3:"lim";s:3:"281";s:3:"lis";s:3:"282";s:4:"qën";s:3:"283";s:4:"rën";s:3:"284";s:3:"s s";s:3:"285";s:3:"t d";s:3:"286";s:3:"t t";s:3:"287";s:3:"tir";s:3:"288";s:4:"tën";s:3:"289";s:3:"ver";s:3:"290";s:4:"ë j";s:3:"291";s:3:" ba";s:3:"292";s:3:" in";s:3:"293";s:3:" tr";s:3:"294";s:3:" zg";s:3:"295";s:3:"a a";s:3:"296";s:3:"a m";s:3:"297";s:3:"a t";s:3:"298";s:3:"abr";s:3:"299";}s:6:"arabic";a:300:{s:5:" ال";s:1:"0";s:6:"الع";s:1:"1";s:6:"لعر";s:1:"2";s:6:"عرا";s:1:"3";s:6:"راق";s:1:"4";s:5:" في";s:1:"5";s:5:"في ";s:1:"6";s:5:"ين ";s:1:"7";s:5:"ية ";s:1:"8";s:5:"ن ا";s:1:"9";s:6:"الم";s:2:"10";s:5:"ات ";s:2:"11";s:5:"من ";s:2:"12";s:5:"ي ا";s:2:"13";s:5:" من";s:2:"14";s:6:"الأ";s:2:"15";s:5:"ة ا";s:2:"16";s:5:"اق ";s:2:"17";s:5:" وا";s:2:"18";s:5:"اء ";s:2:"19";s:6:"الإ";s:2:"20";s:5:" أن";s:2:"21";s:6:"وال";s:2:"22";s:5:"ما ";s:2:"23";s:5:" عل";s:2:"24";s:5:"لى ";s:2:"25";s:5:"ت ا";s:2:"26";s:5:"ون ";s:2:"27";s:5:"هم ";s:2:"28";s:6:"اقي";s:2:"29";s:5:"ام ";s:2:"30";s:5:"ل ا";s:2:"31";s:5:"أن ";s:2:"32";s:5:"م ا";s:2:"33";s:6:"الت";s:2:"34";s:5:"لا ";s:2:"35";s:6:"الا";s:2:"36";s:5:"ان ";s:2:"37";s:5:"ها ";s:2:"38";s:5:"ال ";s:2:"39";s:5:"ة و";s:2:"40";s:5:"ا ا";s:2:"41";s:6:"رها";s:2:"42";s:6:"لام";s:2:"43";s:6:"يين";s:2:"44";s:5:" ول";s:2:"45";s:6:"لأم";s:2:"46";s:5:"نا ";s:2:"47";s:6:"على";s:2:"48";s:5:"ن ي";s:2:"49";s:6:"الب";s:2:"50";s:5:"اد ";s:2:"51";s:6:"الق";s:2:"52";s:5:"د ا";s:2:"53";s:5:"ذا ";s:2:"54";s:5:"ه ا";s:2:"55";s:5:" با";s:2:"56";s:6:"الد";s:2:"57";s:5:"ب ا";s:2:"58";s:6:"مري";s:2:"59";s:5:"لم ";s:2:"60";s:5:" إن";s:2:"61";s:5:" لل";s:2:"62";s:6:"سلا";s:2:"63";s:6:"أمر";s:2:"64";s:6:"ريك";s:2:"65";s:5:"مة ";s:2:"66";s:5:"ى ا";s:2:"67";s:5:"ا ي";s:2:"68";s:5:" عن";s:2:"69";s:5:" هذ";s:2:"70";s:5:"ء ا";s:2:"71";s:5:"ر ا";s:2:"72";s:6:"كان";s:2:"73";s:6:"قتل";s:2:"74";s:6:"إسل";s:2:"75";s:6:"الح";s:2:"76";s:5:"وا ";s:2:"77";s:5:" إل";s:2:"78";s:5:"ا أ";s:2:"79";s:6:"بال";s:2:"80";s:5:"ن م";s:2:"81";s:6:"الس";s:2:"82";s:5:"رة ";s:2:"83";s:6:"لإس";s:2:"84";s:5:"ن و";s:2:"85";s:6:"هاب";s:2:"86";s:5:"ي و";s:2:"87";s:5:"ير ";s:2:"88";s:5:" كا";s:2:"89";s:5:"لة ";s:2:"90";s:6:"يات";s:2:"91";s:5:" لا";s:2:"92";s:6:"انت";s:2:"93";s:5:"ن أ";s:2:"94";s:6:"يكي";s:2:"95";s:6:"الر";s:2:"96";s:6:"الو";s:2:"97";s:5:"ة ف";s:2:"98";s:5:"دة ";s:2:"99";s:6:"الج";s:3:"100";s:5:"قي ";s:3:"101";s:5:"وي ";s:3:"102";s:6:"الذ";s:3:"103";s:6:"الش";s:3:"104";s:6:"امي";s:3:"105";s:6:"اني";s:3:"106";s:5:"ذه ";s:3:"107";s:5:"عن ";s:3:"108";s:6:"لما";s:3:"109";s:6:"هذه";s:3:"110";s:5:"ول ";s:3:"111";s:5:"اف ";s:3:"112";s:6:"اوي";s:3:"113";s:6:"بري";s:3:"114";s:5:"ة ل";s:3:"115";s:5:" أم";s:3:"116";s:5:" لم";s:3:"117";s:5:" ما";s:3:"118";s:5:"يد ";s:3:"119";s:5:" أي";s:3:"120";s:6:"إره";s:3:"121";s:5:"ع ا";s:3:"122";s:6:"عمل";s:3:"123";s:6:"ولا";s:3:"124";s:6:"إلى";s:3:"125";s:6:"ابي";s:3:"126";s:5:"ن ف";s:3:"127";s:6:"ختط";s:3:"128";s:5:"لك ";s:3:"129";s:5:"نه ";s:3:"130";s:5:"ني ";s:3:"131";s:5:"إن ";s:3:"132";s:6:"دين";s:3:"133";s:5:"ف ا";s:3:"134";s:6:"لذي";s:3:"135";s:5:"ي أ";s:3:"136";s:5:"ي ب";s:3:"137";s:5:" وأ";s:3:"138";s:5:"ا ع";s:3:"139";s:6:"الخ";s:3:"140";s:5:"تل ";s:3:"141";s:5:"تي ";s:3:"142";s:5:"قد ";s:3:"143";s:6:"لدي";s:3:"144";s:5:" كل";s:3:"145";s:5:" مع";s:3:"146";s:5:"اب ";s:3:"147";s:6:"اخت";s:3:"148";s:5:"ار ";s:3:"149";s:6:"الن";s:3:"150";s:6:"علا";s:3:"151";s:5:"م و";s:3:"152";s:5:"مع ";s:3:"153";s:5:"س ا";s:3:"154";s:5:"كل ";s:3:"155";s:6:"لاء";s:3:"156";s:5:"ن ب";s:3:"157";s:5:"ن ت";s:3:"158";s:5:"ي م";s:3:"159";s:6:"عرب";s:3:"160";s:5:"م ب";s:3:"161";s:5:" وق";s:3:"162";s:5:" يق";s:3:"163";s:5:"ا ل";s:3:"164";s:5:"ا م";s:3:"165";s:6:"الف";s:3:"166";s:6:"تطا";s:3:"167";s:6:"داد";s:3:"168";s:6:"لمس";s:3:"169";s:5:"له ";s:3:"170";s:6:"هذا";s:3:"171";s:5:" مح";s:3:"172";s:6:"ؤلا";s:3:"173";s:5:"بي ";s:3:"174";s:5:"ة م";s:3:"175";s:5:"ن ل";s:3:"176";s:6:"هؤل";s:3:"177";s:5:"كن ";s:3:"178";s:6:"لإر";s:3:"179";s:6:"لتي";s:3:"180";s:5:" أو";s:3:"181";s:5:" ان";s:3:"182";s:5:" عم";s:3:"183";s:5:"ا ف";s:3:"184";s:5:"ة أ";s:3:"185";s:6:"طاف";s:3:"186";s:5:"عب ";s:3:"187";s:5:"ل م";s:3:"188";s:5:"ن ع";s:3:"189";s:5:"ور ";s:3:"190";s:5:"يا ";s:3:"191";s:5:" يس";s:3:"192";s:5:"ا ت";s:3:"193";s:5:"ة ب";s:3:"194";s:6:"راء";s:3:"195";s:6:"عال";s:3:"196";s:6:"قوا";s:3:"197";s:6:"قية";s:3:"198";s:6:"لعا";s:3:"199";s:5:"م ي";s:3:"200";s:5:"مي ";s:3:"201";s:6:"مية";s:3:"202";s:6:"نية";s:3:"203";s:5:"أي ";s:3:"204";s:6:"ابا";s:3:"205";s:6:"بغد";s:3:"206";s:5:"بل ";s:3:"207";s:5:"رب ";s:3:"208";s:6:"عما";s:3:"209";s:6:"غدا";s:3:"210";s:6:"مال";s:3:"211";s:6:"ملي";s:3:"212";s:5:"يس ";s:3:"213";s:5:" بأ";s:3:"214";s:5:" بع";s:3:"215";s:5:" بغ";s:3:"216";s:5:" وم";s:3:"217";s:6:"بات";s:3:"218";s:6:"بية";s:3:"219";s:6:"ذلك";s:3:"220";s:5:"عة ";s:3:"221";s:6:"قاو";s:3:"222";s:6:"قيي";s:3:"223";s:5:"كي ";s:3:"224";s:5:"م م";s:3:"225";s:5:"ي ع";s:3:"226";s:5:" عر";s:3:"227";s:5:" قا";s:3:"228";s:5:"ا و";s:3:"229";s:5:"رى ";s:3:"230";s:5:"ق ا";s:3:"231";s:6:"وات";s:3:"232";s:5:"وم ";s:3:"233";s:5:" هؤ";s:3:"234";s:5:"ا ب";s:3:"235";s:6:"دام";s:3:"236";s:5:"دي ";s:3:"237";s:6:"رات";s:3:"238";s:6:"شعب";s:3:"239";s:6:"لان";s:3:"240";s:6:"لشع";s:3:"241";s:6:"لقو";s:3:"242";s:6:"ليا";s:3:"243";s:5:"ن ه";s:3:"244";s:5:"ي ت";s:3:"245";s:5:"ي ي";s:3:"246";s:5:" وه";s:3:"247";s:5:" يح";s:3:"248";s:6:"جرا";s:3:"249";s:6:"جما";s:3:"250";s:6:"حمد";s:3:"251";s:5:"دم ";s:3:"252";s:5:"كم ";s:3:"253";s:6:"لاو";s:3:"254";s:6:"لره";s:3:"255";s:6:"ماع";s:3:"256";s:5:"ن ق";s:3:"257";s:5:"نة ";s:3:"258";s:5:"هي ";s:3:"259";s:5:" بل";s:3:"260";s:5:" به";s:3:"261";s:5:" له";s:3:"262";s:5:" وي";s:3:"263";s:5:"ا ك";s:3:"264";s:6:"اذا";s:3:"265";s:5:"اع ";s:3:"266";s:5:"ت م";s:3:"267";s:6:"تخا";s:3:"268";s:6:"خاب";s:3:"269";s:5:"ر م";s:3:"270";s:6:"لمت";s:3:"271";s:6:"مسل";s:3:"272";s:5:"ى أ";s:3:"273";s:6:"يست";s:3:"274";s:6:"يطا";s:3:"275";s:5:" لأ";s:3:"276";s:5:" لي";s:3:"277";s:6:"أمن";s:3:"278";s:6:"است";s:3:"279";s:6:"بعض";s:3:"280";s:5:"ة ت";s:3:"281";s:5:"ري ";s:3:"282";s:6:"صدا";s:3:"283";s:5:"ق و";s:3:"284";s:6:"قول";s:3:"285";s:5:"مد ";s:3:"286";s:6:"نتخ";s:3:"287";s:6:"نفس";s:3:"288";s:6:"نها";s:3:"289";s:6:"هنا";s:3:"290";s:6:"أعم";s:3:"291";s:6:"أنه";s:3:"292";s:6:"ائن";s:3:"293";s:6:"الآ";s:3:"294";s:6:"الك";s:3:"295";s:5:"حة ";s:3:"296";s:5:"د م";s:3:"297";s:5:"ر ع";s:3:"298";s:6:"ربي";s:3:"299";}s:5:"azeri";a:300:{s:4:"lər";s:1:"0";s:3:"in ";s:1:"1";s:4:"ın ";s:1:"2";s:3:"lar";s:1:"3";s:3:"da ";s:1:"4";s:3:"an ";s:1:"5";s:3:"ir ";s:1:"6";s:4:"də ";s:1:"7";s:3:"ki ";s:1:"8";s:3:" bi";s:1:"9";s:4:"ən ";s:2:"10";s:4:"əri";s:2:"11";s:4:"arı";s:2:"12";s:4:"ər ";s:2:"13";s:3:"dir";s:2:"14";s:3:"nda";s:2:"15";s:3:" ki";s:2:"16";s:3:"rin";s:2:"17";s:4:"nın";s:2:"18";s:4:"əsi";s:2:"19";s:3:"ini";s:2:"20";s:3:" ed";s:2:"21";s:3:" qa";s:2:"22";s:4:" tə";s:2:"23";s:3:" ba";s:2:"24";s:3:" ol";s:2:"25";s:4:"ası";s:2:"26";s:4:"ilə";s:2:"27";s:4:"rın";s:2:"28";s:3:" ya";s:2:"29";s:4:"anı";s:2:"30";s:4:" və";s:2:"31";s:4:"ndə";s:2:"32";s:3:"ni ";s:2:"33";s:3:"ara";s:2:"34";s:5:"ını";s:2:"35";s:4:"ınd";s:2:"36";s:3:" bu";s:2:"37";s:3:"si ";s:2:"38";s:3:"ib ";s:2:"39";s:3:"aq ";s:2:"40";s:4:"dən";s:2:"41";s:3:"iya";s:2:"42";s:4:"nə ";s:2:"43";s:4:"rə ";s:2:"44";s:3:"n b";s:2:"45";s:4:"sın";s:2:"46";s:4:"və ";s:2:"47";s:3:"iri";s:2:"48";s:4:"lə ";s:2:"49";s:3:"nin";s:2:"50";s:4:"əli";s:2:"51";s:3:" de";s:2:"52";s:4:" mü";s:2:"53";s:3:"bir";s:2:"54";s:3:"n s";s:2:"55";s:3:"ri ";s:2:"56";s:4:"ək ";s:2:"57";s:3:" az";s:2:"58";s:4:" sə";s:2:"59";s:3:"ar ";s:2:"60";s:3:"bil";s:2:"61";s:4:"zər";s:2:"62";s:3:"bu ";s:2:"63";s:3:"dan";s:2:"64";s:3:"edi";s:2:"65";s:3:"ind";s:2:"66";s:3:"man";s:2:"67";s:3:"un ";s:2:"68";s:5:"ərə";s:2:"69";s:3:" ha";s:2:"70";s:3:"lan";s:2:"71";s:4:"yyə";s:2:"72";s:3:"iyy";s:2:"73";s:3:" il";s:2:"74";s:3:" ne";s:2:"75";s:3:"r k";s:2:"76";s:4:"ə b";s:2:"77";s:3:" is";s:2:"78";s:3:"na ";s:2:"79";s:3:"nun";s:2:"80";s:4:"ır ";s:2:"81";s:3:" da";s:2:"82";s:4:" hə";s:2:"83";s:3:"a b";s:2:"84";s:4:"inə";s:2:"85";s:3:"sin";s:2:"86";s:3:"yan";s:2:"87";s:4:"ərb";s:2:"88";s:4:" də";s:2:"89";s:4:" mə";s:2:"90";s:4:" qə";s:2:"91";s:4:"dır";s:2:"92";s:3:"li ";s:2:"93";s:3:"ola";s:2:"94";s:3:"rba";s:2:"95";s:4:"azə";s:2:"96";s:3:"can";s:2:"97";s:4:"lı ";s:2:"98";s:3:"nla";s:2:"99";s:3:" et";s:3:"100";s:4:" gö";s:3:"101";s:4:"alı";s:3:"102";s:3:"ayc";s:3:"103";s:3:"bay";s:3:"104";s:3:"eft";s:3:"105";s:3:"ist";s:3:"106";s:3:"n i";s:3:"107";s:3:"nef";s:3:"108";s:4:"tlə";s:3:"109";s:3:"yca";s:3:"110";s:4:"yət";s:3:"111";s:5:"əcə";s:3:"112";s:3:" la";s:3:"113";s:3:"ild";s:3:"114";s:4:"nı ";s:3:"115";s:3:"tin";s:3:"116";s:3:"ldi";s:3:"117";s:3:"lik";s:3:"118";s:3:"n h";s:3:"119";s:3:"n m";s:3:"120";s:3:"oyu";s:3:"121";s:3:"raq";s:3:"122";s:3:"ya ";s:3:"123";s:4:"əti";s:3:"124";s:3:" ar";s:3:"125";s:3:"ada";s:3:"126";s:4:"edə";s:3:"127";s:3:"mas";s:3:"128";s:4:"sı ";s:3:"129";s:4:"ına";s:3:"130";s:4:"ə d";s:3:"131";s:5:"ələ";s:3:"132";s:4:"ayı";s:3:"133";s:3:"iyi";s:3:"134";s:3:"lma";s:3:"135";s:4:"mək";s:3:"136";s:3:"n d";s:3:"137";s:3:"ti ";s:3:"138";s:3:"yin";s:3:"139";s:3:"yun";s:3:"140";s:4:"ət ";s:3:"141";s:4:"azı";s:3:"142";s:3:"ft ";s:3:"143";s:3:"i t";s:3:"144";s:3:"lli";s:3:"145";s:3:"n a";s:3:"146";s:3:"ra ";s:3:"147";s:4:" cə";s:3:"148";s:4:" gə";s:3:"149";s:3:" ko";s:3:"150";s:4:" nə";s:3:"151";s:3:" oy";s:3:"152";s:3:"a d";s:3:"153";s:3:"ana";s:3:"154";s:4:"cək";s:3:"155";s:3:"eyi";s:3:"156";s:3:"ilm";s:3:"157";s:3:"irl";s:3:"158";s:3:"lay";s:3:"159";s:3:"liy";s:3:"160";s:3:"lub";s:3:"161";s:4:"n ə";s:3:"162";s:3:"ril";s:3:"163";s:4:"rlə";s:3:"164";s:3:"unu";s:3:"165";s:3:"ver";s:3:"166";s:4:"ün ";s:3:"167";s:4:"ə o";s:3:"168";s:4:"əni";s:3:"169";s:3:" he";s:3:"170";s:3:" ma";s:3:"171";s:3:" on";s:3:"172";s:3:" pa";s:3:"173";s:3:"ala";s:3:"174";s:3:"dey";s:3:"175";s:3:"i m";s:3:"176";s:3:"ima";s:3:"177";s:4:"lmə";s:3:"178";s:4:"mət";s:3:"179";s:3:"par";s:3:"180";s:4:"yə ";s:3:"181";s:4:"ətl";s:3:"182";s:3:" al";s:3:"183";s:3:" mi";s:3:"184";s:3:" sa";s:3:"185";s:4:" əl";s:3:"186";s:4:"adı";s:3:"187";s:4:"akı";s:3:"188";s:3:"and";s:3:"189";s:3:"ard";s:3:"190";s:3:"art";s:3:"191";s:3:"ayi";s:3:"192";s:3:"i a";s:3:"193";s:3:"i q";s:3:"194";s:3:"i y";s:3:"195";s:3:"ili";s:3:"196";s:3:"ill";s:3:"197";s:4:"isə";s:3:"198";s:3:"n o";s:3:"199";s:3:"n q";s:3:"200";s:3:"olu";s:3:"201";s:3:"rla";s:3:"202";s:4:"stə";s:3:"203";s:4:"sə ";s:3:"204";s:3:"tan";s:3:"205";s:3:"tel";s:3:"206";s:3:"yar";s:3:"207";s:5:"ədə";s:3:"208";s:3:" me";s:3:"209";s:4:" rə";s:3:"210";s:3:" ve";s:3:"211";s:3:" ye";s:3:"212";s:3:"a k";s:3:"213";s:3:"at ";s:3:"214";s:4:"baş";s:3:"215";s:3:"diy";s:3:"216";s:3:"ent";s:3:"217";s:3:"eti";s:3:"218";s:4:"həs";s:3:"219";s:3:"i i";s:3:"220";s:3:"ik ";s:3:"221";s:3:"la ";s:3:"222";s:4:"miş";s:3:"223";s:3:"n n";s:3:"224";s:3:"nu ";s:3:"225";s:3:"qar";s:3:"226";s:3:"ran";s:3:"227";s:4:"tər";s:3:"228";s:3:"xan";s:3:"229";s:4:"ə a";s:3:"230";s:4:"ə g";s:3:"231";s:4:"ə t";s:3:"232";s:4:" dü";s:3:"233";s:3:"ama";s:3:"234";s:3:"b k";s:3:"235";s:3:"dil";s:3:"236";s:3:"era";s:3:"237";s:3:"etm";s:3:"238";s:3:"i b";s:3:"239";s:3:"kil";s:3:"240";s:3:"mil";s:3:"241";s:3:"n r";s:3:"242";s:3:"qla";s:3:"243";s:3:"r s";s:3:"244";s:3:"ras";s:3:"245";s:3:"siy";s:3:"246";s:3:"son";s:3:"247";s:3:"tim";s:3:"248";s:3:"yer";s:3:"249";s:4:"ə k";s:3:"250";s:4:" gü";s:3:"251";s:3:" so";s:3:"252";s:4:" sö";s:3:"253";s:3:" te";s:3:"254";s:3:" xa";s:3:"255";s:3:"ai ";s:3:"256";s:3:"bar";s:3:"257";s:3:"cti";s:3:"258";s:3:"di ";s:3:"259";s:3:"eri";s:3:"260";s:4:"gör";s:3:"261";s:4:"gün";s:3:"262";s:4:"gəl";s:3:"263";s:4:"hbə";s:3:"264";s:4:"ihə";s:3:"265";s:3:"iki";s:3:"266";s:3:"isi";s:3:"267";s:3:"lin";s:3:"268";s:3:"mai";s:3:"269";s:3:"maq";s:3:"270";s:3:"n k";s:3:"271";s:3:"n t";s:3:"272";s:3:"n v";s:3:"273";s:3:"onu";s:3:"274";s:3:"qan";s:3:"275";s:4:"qəz";s:3:"276";s:4:"tə ";s:3:"277";s:3:"xal";s:3:"278";s:3:"yib";s:3:"279";s:3:"yih";s:3:"280";s:3:"zet";s:3:"281";s:4:"zır";s:3:"282";s:4:"ıb ";s:3:"283";s:4:"ə m";s:3:"284";s:4:"əze";s:3:"285";s:3:" br";s:3:"286";s:3:" in";s:3:"287";s:4:" i̇";s:3:"288";s:3:" pr";s:3:"289";s:3:" ta";s:3:"290";s:3:" to";s:3:"291";s:5:" üç";s:3:"292";s:3:"a o";s:3:"293";s:3:"ali";s:3:"294";s:3:"ani";s:3:"295";s:3:"anl";s:3:"296";s:3:"aql";s:3:"297";s:3:"azi";s:3:"298";s:3:"bri";s:3:"299";}s:7:"bengali";a:300:{s:7:"ার ";s:1:"0";s:7:"য় ";s:1:"1";s:9:"েয়";s:1:"2";s:9:"য়া";s:1:"3";s:7:" কর";s:1:"4";s:7:"েত ";s:1:"5";s:7:" কা";s:1:"6";s:7:" পা";s:1:"7";s:7:" তা";s:1:"8";s:7:"না ";s:1:"9";s:9:"ায়";s:2:"10";s:7:"ের ";s:2:"11";s:9:"য়ে";s:2:"12";s:7:" বা";s:2:"13";s:7:"েব ";s:2:"14";s:7:" যা";s:2:"15";s:7:" হে";s:2:"16";s:7:" সা";s:2:"17";s:7:"ান ";s:2:"18";s:7:"েছ ";s:2:"19";s:7:" িন";s:2:"20";s:7:"েল ";s:2:"21";s:7:" িদ";s:2:"22";s:7:" না";s:2:"23";s:7:" িব";s:2:"24";s:7:"েক ";s:2:"25";s:7:"লা ";s:2:"26";s:7:"তা ";s:2:"27";s:7:" বઘ";s:2:"28";s:7:" িক";s:2:"29";s:9:"করে";s:2:"30";s:7:" পચ";s:2:"31";s:9:"াের";s:2:"32";s:9:"িনে";s:2:"33";s:7:"রা ";s:2:"34";s:7:" োব";s:2:"35";s:7:"কা ";s:2:"36";s:7:" কে";s:2:"37";s:7:" টা";s:2:"38";s:7:"র ক";s:2:"39";s:9:"েলা";s:2:"40";s:7:" োক";s:2:"41";s:7:" মা";s:2:"42";s:7:" োদ";s:2:"43";s:7:" োম";s:2:"44";s:7:"দর ";s:2:"45";s:7:"়া ";s:2:"46";s:9:"িদে";s:2:"47";s:9:"াকা";s:2:"48";s:9:"়েছ";s:2:"49";s:9:"েদর";s:2:"50";s:7:" আে";s:2:"51";s:5:" ও ";s:2:"52";s:7:"াল ";s:2:"53";s:7:"িট ";s:2:"54";s:7:" মু";s:2:"55";s:9:"কের";s:2:"56";s:9:"হয়";s:2:"57";s:9:"করা";s:2:"58";s:7:"পর ";s:2:"59";s:9:"পাে";s:2:"60";s:7:" এক";s:2:"61";s:7:" পদ";s:2:"62";s:9:"টাক";s:2:"63";s:7:"ড় ";s:2:"64";s:9:"কান";s:2:"65";s:7:"টা ";s:2:"66";s:9:"দગা";s:2:"67";s:9:"পদગ";s:2:"68";s:9:"াড়";s:2:"69";s:9:"োকা";s:2:"70";s:9:"ওয়";s:2:"71";s:9:"কাপ";s:2:"72";s:9:"হেয";s:2:"73";s:9:"েনর";s:2:"74";s:7:" হয";s:2:"75";s:9:"দেয";s:2:"76";s:7:"নর ";s:2:"77";s:9:"ানা";s:2:"78";s:9:"ােল";s:2:"79";s:7:" আর";s:2:"80";s:5:" ় ";s:2:"81";s:9:"বઘব";s:2:"82";s:9:"িয়";s:2:"83";s:7:" দা";s:2:"84";s:7:" সম";s:2:"85";s:9:"কার";s:2:"86";s:9:"হার";s:2:"87";s:7:"াই ";s:2:"88";s:9:"ড়া";s:2:"89";s:9:"িবি";s:2:"90";s:7:" রা";s:2:"91";s:7:" লা";s:2:"92";s:9:"নার";s:2:"93";s:9:"বহা";s:2:"94";s:7:"বা ";s:2:"95";s:9:"যায";s:2:"96";s:7:"েন ";s:2:"97";s:9:"ઘবহ";s:2:"98";s:7:" ভা";s:2:"99";s:7:" সে";s:3:"100";s:7:" োয";s:3:"101";s:7:"রর ";s:3:"102";s:9:"়ার";s:3:"103";s:9:"়াল";s:3:"104";s:7:"ગা ";s:3:"105";s:9:"থেক";s:3:"106";s:9:"ভাে";s:3:"107";s:7:"়ে ";s:3:"108";s:9:"েরর";s:3:"109";s:7:" ধর";s:3:"110";s:7:" হা";s:3:"111";s:7:"নઘ ";s:3:"112";s:9:"রেন";s:3:"113";s:9:"ােব";s:3:"114";s:9:"িড়";s:3:"115";s:7:"ির ";s:3:"116";s:7:" োথ";s:3:"117";s:9:"তার";s:3:"118";s:9:"বিভ";s:3:"119";s:9:"রেত";s:3:"120";s:9:"সাে";s:3:"121";s:9:"াকে";s:3:"122";s:9:"ােত";s:3:"123";s:9:"িভਭ";s:3:"124";s:7:"ে ব";s:3:"125";s:9:"োথে";s:3:"126";s:7:" োপ";s:3:"127";s:7:" োস";s:3:"128";s:9:"বার";s:3:"129";s:7:"ভਭ ";s:3:"130";s:7:"রন ";s:3:"131";s:7:"াম ";s:3:"132";s:7:" এখ";s:3:"133";s:7:"আর ";s:3:"134";s:9:"কাে";s:3:"135";s:7:"দন ";s:3:"136";s:9:"সাজ";s:3:"137";s:9:"ােক";s:3:"138";s:9:"ােন";s:3:"139";s:9:"েনা";s:3:"140";s:7:" ঘে";s:3:"141";s:7:" তে";s:3:"142";s:7:" রে";s:3:"143";s:9:"তেব";s:3:"144";s:7:"বন ";s:3:"145";s:9:"বઘা";s:3:"146";s:9:"েড়";s:3:"147";s:9:"েবন";s:3:"148";s:7:" খু";s:3:"149";s:7:" চা";s:3:"150";s:7:" সু";s:3:"151";s:7:"কে ";s:3:"152";s:9:"ধরে";s:3:"153";s:7:"র ো";s:3:"154";s:7:"় ি";s:3:"155";s:7:"া ি";s:3:"156";s:9:"ােথ";s:3:"157";s:9:"াਠা";s:3:"158";s:7:"িদ ";s:3:"159";s:7:"িন ";s:3:"160";s:7:" অন";s:3:"161";s:7:" আপ";s:3:"162";s:7:" আম";s:3:"163";s:7:" থা";s:3:"164";s:7:" বચ";s:3:"165";s:7:" োফ";s:3:"166";s:7:" ৌত";s:3:"167";s:9:"ঘের";s:3:"168";s:7:"তে ";s:3:"169";s:9:"ময়";s:3:"170";s:9:"যাਠ";s:3:"171";s:7:"র স";s:3:"172";s:9:"রাখ";s:3:"173";s:7:"া ব";s:3:"174";s:7:"া ো";s:3:"175";s:9:"ালা";s:3:"176";s:7:"িক ";s:3:"177";s:7:"িশ ";s:3:"178";s:7:"েখ ";s:3:"179";s:7:" এর";s:3:"180";s:7:" চઓ";s:3:"181";s:7:" িড";s:3:"182";s:7:"খন ";s:3:"183";s:9:"ড়ে";s:3:"184";s:7:"র ব";s:3:"185";s:7:"়র ";s:3:"186";s:9:"াইে";s:3:"187";s:9:"ােদ";s:3:"188";s:9:"িদন";s:3:"189";s:9:"েরন";s:3:"190";s:7:" তੴ";s:3:"191";s:9:"ছাড";s:3:"192";s:9:"জনઘ";s:3:"193";s:9:"তাই";s:3:"194";s:7:"মা ";s:3:"195";s:9:"মাে";s:3:"196";s:9:"লার";s:3:"197";s:7:"াজ ";s:3:"198";s:9:"াতা";s:3:"199";s:9:"ামা";s:3:"200";s:9:"ਊেল";s:3:"201";s:9:"ગার";s:3:"202";s:7:" সব";s:3:"203";s:9:"আপন";s:3:"204";s:9:"একট";s:3:"205";s:9:"কাি";s:3:"206";s:9:"জাই";s:3:"207";s:7:"টর ";s:3:"208";s:9:"ডজা";s:3:"209";s:9:"দেখ";s:3:"210";s:9:"পনা";s:3:"211";s:7:"রও ";s:3:"212";s:7:"লে ";s:3:"213";s:9:"হেব";s:3:"214";s:9:"াজা";s:3:"215";s:9:"ািট";s:3:"216";s:9:"িডজ";s:3:"217";s:7:"েথ ";s:3:"218";s:7:" এব";s:3:"219";s:7:" জন";s:3:"220";s:7:" জা";s:3:"221";s:9:"আমা";s:3:"222";s:9:"গেল";s:3:"223";s:9:"জান";s:3:"224";s:9:"নেত";s:3:"225";s:9:"বিশ";s:3:"226";s:9:"মুে";s:3:"227";s:9:"মেয";s:3:"228";s:7:"র প";s:3:"229";s:7:"সে ";s:3:"230";s:9:"হেল";s:3:"231";s:7:"় ো";s:3:"232";s:7:"া হ";s:3:"233";s:9:"াওয";s:3:"234";s:9:"োমক";s:3:"235";s:9:"ઘাি";s:3:"236";s:7:" অে";s:3:"237";s:5:" ট ";s:3:"238";s:7:" োগ";s:3:"239";s:7:" োন";s:3:"240";s:7:"জর ";s:3:"241";s:9:"তির";s:3:"242";s:9:"দাম";s:3:"243";s:9:"পড়";s:3:"244";s:9:"পার";s:3:"245";s:9:"বাঘ";s:3:"246";s:9:"মকা";s:3:"247";s:9:"মাম";s:3:"248";s:9:"য়র";s:3:"249";s:9:"যাে";s:3:"250";s:7:"র ম";s:3:"251";s:7:"রে ";s:3:"252";s:7:"লর ";s:3:"253";s:7:"া ক";s:3:"254";s:7:"াগ ";s:3:"255";s:9:"াবা";s:3:"256";s:9:"ারা";s:3:"257";s:9:"ািন";s:3:"258";s:7:"ে গ";s:3:"259";s:7:"েগ ";s:3:"260";s:9:"েলর";s:3:"261";s:9:"োদখ";s:3:"262";s:9:"োবি";s:3:"263";s:7:"ઓল ";s:3:"264";s:7:" দে";s:3:"265";s:7:" পু";s:3:"266";s:7:" বে";s:3:"267";s:9:"অেন";s:3:"268";s:9:"এখন";s:3:"269";s:9:"কছু";s:3:"270";s:9:"কাল";s:3:"271";s:9:"গেয";s:3:"272";s:7:"ছন ";s:3:"273";s:7:"ত প";s:3:"274";s:9:"নেয";s:3:"275";s:9:"পাি";s:3:"276";s:7:"মন ";s:3:"277";s:7:"র আ";s:3:"278";s:9:"রার";s:3:"279";s:7:"াও ";s:3:"280";s:7:"াপ ";s:3:"281";s:9:"িকছ";s:3:"282";s:9:"িগে";s:3:"283";s:9:"েছন";s:3:"284";s:9:"েজর";s:3:"285";s:9:"োমা";s:3:"286";s:9:"োমে";s:3:"287";s:9:"ৌতি";s:3:"288";s:9:"ઘাে";s:3:"289";s:3:" ' ";s:3:"290";s:7:" এছ";s:3:"291";s:7:" ছা";s:3:"292";s:7:" বল";s:3:"293";s:7:" যি";s:3:"294";s:7:" শি";s:3:"295";s:7:" িম";s:3:"296";s:7:" োল";s:3:"297";s:9:"এছা";s:3:"298";s:7:"খা ";s:3:"299";}s:9:"bulgarian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"то ";s:1:"2";s:5:" пр";s:1:"3";s:5:" за";s:1:"4";s:5:"та ";s:1:"5";s:5:" по";s:1:"6";s:6:"ите";s:1:"7";s:5:"те ";s:1:"8";s:5:"а п";s:1:"9";s:5:"а с";s:2:"10";s:5:" от";s:2:"11";s:5:"за ";s:2:"12";s:6:"ата";s:2:"13";s:5:"ия ";s:2:"14";s:4:" в ";s:2:"15";s:5:"е н";s:2:"16";s:5:" да";s:2:"17";s:5:"а н";s:2:"18";s:5:" се";s:2:"19";s:5:" ко";s:2:"20";s:5:"да ";s:2:"21";s:5:"от ";s:2:"22";s:6:"ани";s:2:"23";s:6:"пре";s:2:"24";s:5:"не ";s:2:"25";s:6:"ени";s:2:"26";s:5:"о н";s:2:"27";s:5:"ни ";s:2:"28";s:5:"се ";s:2:"29";s:4:" и ";s:2:"30";s:5:"но ";s:2:"31";s:6:"ане";s:2:"32";s:6:"ето";s:2:"33";s:5:"а в";s:2:"34";s:5:"ва ";s:2:"35";s:6:"ван";s:2:"36";s:5:"е п";s:2:"37";s:5:"а о";s:2:"38";s:6:"ото";s:2:"39";s:6:"ран";s:2:"40";s:5:"ат ";s:2:"41";s:6:"ред";s:2:"42";s:5:" не";s:2:"43";s:5:"а д";s:2:"44";s:5:"и п";s:2:"45";s:5:" до";s:2:"46";s:6:"про";s:2:"47";s:5:" съ";s:2:"48";s:5:"ли ";s:2:"49";s:6:"при";s:2:"50";s:6:"ния";s:2:"51";s:6:"ски";s:2:"52";s:6:"тел";s:2:"53";s:5:"а и";s:2:"54";s:5:"по ";s:2:"55";s:5:"ри ";s:2:"56";s:4:" е ";s:2:"57";s:5:" ка";s:2:"58";s:6:"ира";s:2:"59";s:6:"кат";s:2:"60";s:6:"ние";s:2:"61";s:6:"нит";s:2:"62";s:5:"е з";s:2:"63";s:5:"и с";s:2:"64";s:5:"о с";s:2:"65";s:6:"ост";s:2:"66";s:5:"че ";s:2:"67";s:5:" ра";s:2:"68";s:6:"ист";s:2:"69";s:5:"о п";s:2:"70";s:5:" из";s:2:"71";s:5:" са";s:2:"72";s:5:"е д";s:2:"73";s:6:"ини";s:2:"74";s:5:"ки ";s:2:"75";s:6:"мин";s:2:"76";s:5:" ми";s:2:"77";s:5:"а б";s:2:"78";s:6:"ава";s:2:"79";s:5:"е в";s:2:"80";s:5:"ие ";s:2:"81";s:6:"пол";s:2:"82";s:6:"ств";s:2:"83";s:5:"т н";s:2:"84";s:5:" въ";s:2:"85";s:5:" ст";s:2:"86";s:5:" то";s:2:"87";s:6:"аза";s:2:"88";s:5:"е о";s:2:"89";s:5:"ов ";s:2:"90";s:5:"ст ";s:2:"91";s:5:"ът ";s:2:"92";s:5:"и н";s:2:"93";s:6:"ият";s:2:"94";s:6:"нат";s:2:"95";s:5:"ра ";s:2:"96";s:5:" бъ";s:2:"97";s:5:" че";s:2:"98";s:6:"алн";s:2:"99";s:5:"е с";s:3:"100";s:5:"ен ";s:3:"101";s:6:"ест";s:3:"102";s:5:"и д";s:3:"103";s:6:"лен";s:3:"104";s:6:"нис";s:3:"105";s:5:"о о";s:3:"106";s:6:"ови";s:3:"107";s:5:" об";s:3:"108";s:5:" сл";s:3:"109";s:5:"а р";s:3:"110";s:6:"ато";s:3:"111";s:6:"кон";s:3:"112";s:6:"нос";s:3:"113";s:6:"ров";s:3:"114";s:5:"ще ";s:3:"115";s:5:" ре";s:3:"116";s:4:" с ";s:3:"117";s:5:" сп";s:3:"118";s:6:"ват";s:3:"119";s:6:"еше";s:3:"120";s:5:"и в";s:3:"121";s:6:"иет";s:3:"122";s:5:"о в";s:3:"123";s:6:"ове";s:3:"124";s:6:"ста";s:3:"125";s:5:"а к";s:3:"126";s:5:"а т";s:3:"127";s:6:"дат";s:3:"128";s:6:"ент";s:3:"129";s:5:"ка ";s:3:"130";s:6:"лед";s:3:"131";s:6:"нет";s:3:"132";s:6:"ори";s:3:"133";s:6:"стр";s:3:"134";s:6:"стъ";s:3:"135";s:5:"ти ";s:3:"136";s:6:"тър";s:3:"137";s:5:" те";s:3:"138";s:5:"а з";s:3:"139";s:5:"а м";s:3:"140";s:5:"ад ";s:3:"141";s:6:"ана";s:3:"142";s:6:"ено";s:3:"143";s:5:"и о";s:3:"144";s:6:"ина";s:3:"145";s:6:"ити";s:3:"146";s:5:"ма ";s:3:"147";s:6:"ска";s:3:"148";s:6:"сле";s:3:"149";s:6:"тво";s:3:"150";s:6:"тер";s:3:"151";s:6:"ция";s:3:"152";s:5:"ят ";s:3:"153";s:5:" бе";s:3:"154";s:5:" де";s:3:"155";s:5:" па";s:3:"156";s:6:"ате";s:3:"157";s:6:"вен";s:3:"158";s:5:"ви ";s:3:"159";s:6:"вит";s:3:"160";s:5:"и з";s:3:"161";s:5:"и и";s:3:"162";s:6:"нар";s:3:"163";s:6:"нов";s:3:"164";s:6:"ова";s:3:"165";s:6:"пов";s:3:"166";s:6:"рез";s:3:"167";s:6:"рит";s:3:"168";s:5:"са ";s:3:"169";s:6:"ята";s:3:"170";s:5:" го";s:3:"171";s:5:" ще";s:3:"172";s:6:"али";s:3:"173";s:5:"в п";s:3:"174";s:6:"гра";s:3:"175";s:5:"е и";s:3:"176";s:6:"еди";s:3:"177";s:6:"ели";s:3:"178";s:6:"или";s:3:"179";s:6:"каз";s:3:"180";s:6:"кит";s:3:"181";s:6:"лно";s:3:"182";s:6:"мен";s:3:"183";s:6:"оли";s:3:"184";s:6:"раз";s:3:"185";s:5:" ве";s:3:"186";s:5:" гр";s:3:"187";s:5:" им";s:3:"188";s:5:" ме";s:3:"189";s:5:" пъ";s:3:"190";s:6:"ави";s:3:"191";s:6:"ако";s:3:"192";s:6:"ача";s:3:"193";s:6:"вин";s:3:"194";s:5:"во ";s:3:"195";s:6:"гов";s:3:"196";s:6:"дан";s:3:"197";s:5:"ди ";s:3:"198";s:5:"до ";s:3:"199";s:5:"ед ";s:3:"200";s:6:"ери";s:3:"201";s:6:"еро";s:3:"202";s:6:"жда";s:3:"203";s:6:"ито";s:3:"204";s:6:"ков";s:3:"205";s:6:"кол";s:3:"206";s:6:"лни";s:3:"207";s:6:"мер";s:3:"208";s:6:"нач";s:3:"209";s:5:"о з";s:3:"210";s:6:"ола";s:3:"211";s:5:"он ";s:3:"212";s:6:"она";s:3:"213";s:6:"пра";s:3:"214";s:6:"рав";s:3:"215";s:6:"рем";s:3:"216";s:6:"сия";s:3:"217";s:6:"сти";s:3:"218";s:5:"т п";s:3:"219";s:6:"тан";s:3:"220";s:5:"ха ";s:3:"221";s:5:"ше ";s:3:"222";s:6:"шен";s:3:"223";s:6:"ълг";s:3:"224";s:5:" ба";s:3:"225";s:5:" си";s:3:"226";s:6:"аро";s:3:"227";s:6:"бъл";s:3:"228";s:5:"в р";s:3:"229";s:6:"гар";s:3:"230";s:5:"е е";s:3:"231";s:6:"елн";s:3:"232";s:6:"еме";s:3:"233";s:6:"ико";s:3:"234";s:6:"има";s:3:"235";s:5:"ко ";s:3:"236";s:6:"кои";s:3:"237";s:5:"ла ";s:3:"238";s:6:"лга";s:3:"239";s:5:"о д";s:3:"240";s:6:"ози";s:3:"241";s:6:"оит";s:3:"242";s:6:"под";s:3:"243";s:6:"рес";s:3:"244";s:6:"рие";s:3:"245";s:6:"сто";s:3:"246";s:5:"т к";s:3:"247";s:5:"т м";s:3:"248";s:5:"т с";s:3:"249";s:6:"уст";s:3:"250";s:5:" би";s:3:"251";s:5:" дв";s:3:"252";s:5:" дъ";s:3:"253";s:5:" ма";s:3:"254";s:5:" мо";s:3:"255";s:5:" ни";s:3:"256";s:5:" ос";s:3:"257";s:6:"ала";s:3:"258";s:6:"анс";s:3:"259";s:6:"ара";s:3:"260";s:6:"ати";s:3:"261";s:6:"аци";s:3:"262";s:6:"беш";s:3:"263";s:6:"вър";s:3:"264";s:5:"е р";s:3:"265";s:6:"едв";s:3:"266";s:6:"ема";s:3:"267";s:6:"жав";s:3:"268";s:5:"и к";s:3:"269";s:6:"иал";s:3:"270";s:6:"ица";s:3:"271";s:6:"иче";s:3:"272";s:6:"кия";s:3:"273";s:6:"лит";s:3:"274";s:5:"о б";s:3:"275";s:6:"ово";s:3:"276";s:6:"оди";s:3:"277";s:6:"ока";s:3:"278";s:6:"пос";s:3:"279";s:6:"род";s:3:"280";s:6:"сед";s:3:"281";s:6:"слу";s:3:"282";s:5:"т и";s:3:"283";s:6:"тов";s:3:"284";s:6:"ува";s:3:"285";s:6:"циа";s:3:"286";s:6:"чес";s:3:"287";s:5:"я з";s:3:"288";s:5:" во";s:3:"289";s:5:" ил";s:3:"290";s:5:" ск";s:3:"291";s:5:" тр";s:3:"292";s:5:" це";s:3:"293";s:6:"ами";s:3:"294";s:6:"ари";s:3:"295";s:6:"бат";s:3:"296";s:5:"би ";s:3:"297";s:6:"бра";s:3:"298";s:6:"бъд";s:3:"299";}s:7:"cebuano";a:300:{s:3:"ng ";s:1:"0";s:3:"sa ";s:1:"1";s:3:" sa";s:1:"2";s:3:"ang";s:1:"3";s:3:"ga ";s:1:"4";s:3:"nga";s:1:"5";s:3:" ka";s:1:"6";s:3:" ng";s:1:"7";s:3:"an ";s:1:"8";s:3:" an";s:1:"9";s:3:" na";s:2:"10";s:3:" ma";s:2:"11";s:3:" ni";s:2:"12";s:3:"a s";s:2:"13";s:3:"a n";s:2:"14";s:3:"on ";s:2:"15";s:3:" pa";s:2:"16";s:3:" si";s:2:"17";s:3:"a k";s:2:"18";s:3:"a m";s:2:"19";s:3:" ba";s:2:"20";s:3:"ong";s:2:"21";s:3:"a i";s:2:"22";s:3:"ila";s:2:"23";s:3:" mg";s:2:"24";s:3:"mga";s:2:"25";s:3:"a p";s:2:"26";s:3:"iya";s:2:"27";s:3:"a a";s:2:"28";s:3:"ay ";s:2:"29";s:3:"ka ";s:2:"30";s:3:"ala";s:2:"31";s:3:"ing";s:2:"32";s:3:"g m";s:2:"33";s:3:"n s";s:2:"34";s:3:"g n";s:2:"35";s:3:"lan";s:2:"36";s:3:" gi";s:2:"37";s:3:"na ";s:2:"38";s:3:"ni ";s:2:"39";s:3:"o s";s:2:"40";s:3:"g p";s:2:"41";s:3:"n n";s:2:"42";s:3:" da";s:2:"43";s:3:"ag ";s:2:"44";s:3:"pag";s:2:"45";s:3:"g s";s:2:"46";s:3:"yan";s:2:"47";s:3:"ayo";s:2:"48";s:3:"o n";s:2:"49";s:3:"si ";s:2:"50";s:3:" mo";s:2:"51";s:3:"a b";s:2:"52";s:3:"g a";s:2:"53";s:3:"ail";s:2:"54";s:3:"g b";s:2:"55";s:3:"han";s:2:"56";s:3:"a d";s:2:"57";s:3:"asu";s:2:"58";s:3:"nag";s:2:"59";s:3:"ya ";s:2:"60";s:3:"man";s:2:"61";s:3:"ne ";s:2:"62";s:3:"pan";s:2:"63";s:3:"kon";s:2:"64";s:3:" il";s:2:"65";s:3:" la";s:2:"66";s:3:"aka";s:2:"67";s:3:"ako";s:2:"68";s:3:"ana";s:2:"69";s:3:"bas";s:2:"70";s:3:"ko ";s:2:"71";s:3:"od ";s:2:"72";s:3:"yo ";s:2:"73";s:3:" di";s:2:"74";s:3:" ko";s:2:"75";s:3:" ug";s:2:"76";s:3:"a u";s:2:"77";s:3:"g k";s:2:"78";s:3:"kan";s:2:"79";s:3:"la ";s:2:"80";s:3:"len";s:2:"81";s:3:"sur";s:2:"82";s:3:"ug ";s:2:"83";s:3:" ai";s:2:"84";s:3:"apa";s:2:"85";s:3:"aw ";s:2:"86";s:3:"d s";s:2:"87";s:3:"g d";s:2:"88";s:3:"g g";s:2:"89";s:3:"ile";s:2:"90";s:3:"nin";s:2:"91";s:3:" iy";s:2:"92";s:3:" su";s:2:"93";s:3:"ene";s:2:"94";s:3:"og ";s:2:"95";s:3:"ot ";s:2:"96";s:3:"aba";s:2:"97";s:3:"aha";s:2:"98";s:3:"as ";s:2:"99";s:3:"imo";s:3:"100";s:3:" ki";s:3:"101";s:3:"a t";s:3:"102";s:3:"aga";s:3:"103";s:3:"ban";s:3:"104";s:3:"ero";s:3:"105";s:3:"nan";s:3:"106";s:3:"o k";s:3:"107";s:3:"ran";s:3:"108";s:3:"ron";s:3:"109";s:3:"sil";s:3:"110";s:3:"una";s:3:"111";s:3:"usa";s:3:"112";s:3:" us";s:3:"113";s:3:"a g";s:3:"114";s:3:"ahi";s:3:"115";s:3:"ani";s:3:"116";s:3:"er ";s:3:"117";s:3:"ha ";s:3:"118";s:3:"i a";s:3:"119";s:3:"rer";s:3:"120";s:3:"yon";s:3:"121";s:3:" pu";s:3:"122";s:3:"ini";s:3:"123";s:3:"nak";s:3:"124";s:3:"ro ";s:3:"125";s:3:"to ";s:3:"126";s:3:"ure";s:3:"127";s:3:" ed";s:3:"128";s:3:" og";s:3:"129";s:3:" wa";s:3:"130";s:3:"ili";s:3:"131";s:3:"mo ";s:3:"132";s:3:"n a";s:3:"133";s:3:"nd ";s:3:"134";s:3:"o a";s:3:"135";s:3:" ad";s:3:"136";s:3:" du";s:3:"137";s:3:" pr";s:3:"138";s:3:"aro";s:3:"139";s:3:"i s";s:3:"140";s:3:"ma ";s:3:"141";s:3:"n m";s:3:"142";s:3:"ulo";s:3:"143";s:3:"und";s:3:"144";s:3:" ta";s:3:"145";s:3:"ara";s:3:"146";s:3:"asa";s:3:"147";s:3:"ato";s:3:"148";s:3:"awa";s:3:"149";s:3:"dmu";s:3:"150";s:3:"e n";s:3:"151";s:3:"edm";s:3:"152";s:3:"ina";s:3:"153";s:3:"mak";s:3:"154";s:3:"mun";s:3:"155";s:3:"niy";s:3:"156";s:3:"san";s:3:"157";s:3:"wa ";s:3:"158";s:3:" tu";s:3:"159";s:3:" un";s:3:"160";s:3:"a l";s:3:"161";s:3:"bay";s:3:"162";s:3:"iga";s:3:"163";s:3:"ika";s:3:"164";s:3:"ita";s:3:"165";s:3:"kin";s:3:"166";s:3:"lis";s:3:"167";s:3:"may";s:3:"168";s:3:"os ";s:3:"169";s:3:" ar";s:3:"170";s:3:"ad ";s:3:"171";s:3:"ali";s:3:"172";s:3:"ama";s:3:"173";s:3:"ers";s:3:"174";s:3:"ipa";s:3:"175";s:3:"isa";s:3:"176";s:3:"mao";s:3:"177";s:3:"nim";s:3:"178";s:3:"t s";s:3:"179";s:3:"tin";s:3:"180";s:3:" ak";s:3:"181";s:3:" ap";s:3:"182";s:3:" hi";s:3:"183";s:3:"abo";s:3:"184";s:3:"agp";s:3:"185";s:3:"ano";s:3:"186";s:3:"ata";s:3:"187";s:3:"g i";s:3:"188";s:3:"gan";s:3:"189";s:3:"gka";s:3:"190";s:3:"gpa";s:3:"191";s:3:"i m";s:3:"192";s:3:"iha";s:3:"193";s:3:"k s";s:3:"194";s:3:"law";s:3:"195";s:3:"or ";s:3:"196";s:3:"rs ";s:3:"197";s:3:"siy";s:3:"198";s:3:"tag";s:3:"199";s:3:" al";s:3:"200";s:3:" at";s:3:"201";s:3:" ha";s:3:"202";s:3:" hu";s:3:"203";s:3:" im";s:3:"204";s:3:"a h";s:3:"205";s:3:"bu ";s:3:"206";s:3:"e s";s:3:"207";s:3:"gma";s:3:"208";s:3:"kas";s:3:"209";s:3:"lag";s:3:"210";s:3:"mon";s:3:"211";s:3:"nah";s:3:"212";s:3:"ngo";s:3:"213";s:3:"r s";s:3:"214";s:3:"ra ";s:3:"215";s:3:"sab";s:3:"216";s:3:"sam";s:3:"217";s:3:"sul";s:3:"218";s:3:"uba";s:3:"219";s:3:"uha";s:3:"220";s:3:" lo";s:3:"221";s:3:" re";s:3:"222";s:3:"ada";s:3:"223";s:3:"aki";s:3:"224";s:3:"aya";s:3:"225";s:3:"bah";s:3:"226";s:3:"ce ";s:3:"227";s:3:"d n";s:3:"228";s:3:"lab";s:3:"229";s:3:"pa ";s:3:"230";s:3:"pak";s:3:"231";s:3:"s n";s:3:"232";s:3:"s s";s:3:"233";s:3:"tan";s:3:"234";s:3:"taw";s:3:"235";s:3:"te ";s:3:"236";s:3:"uma";s:3:"237";s:3:"ura";s:3:"238";s:3:" in";s:3:"239";s:3:" lu";s:3:"240";s:3:"a c";s:3:"241";s:3:"abi";s:3:"242";s:3:"at ";s:3:"243";s:3:"awo";s:3:"244";s:3:"bat";s:3:"245";s:3:"dal";s:3:"246";s:3:"dla";s:3:"247";s:3:"ele";s:3:"248";s:3:"g t";s:3:"249";s:3:"g u";s:3:"250";s:3:"gay";s:3:"251";s:3:"go ";s:3:"252";s:3:"hab";s:3:"253";s:3:"hin";s:3:"254";s:3:"i e";s:3:"255";s:3:"i n";s:3:"256";s:3:"kab";s:3:"257";s:3:"kap";s:3:"258";s:3:"lay";s:3:"259";s:3:"lin";s:3:"260";s:3:"nil";s:3:"261";s:3:"pam";s:3:"262";s:3:"pas";s:3:"263";s:3:"pro";s:3:"264";s:3:"pul";s:3:"265";s:3:"ta ";s:3:"266";s:3:"ton";s:3:"267";s:3:"uga";s:3:"268";s:3:"ugm";s:3:"269";s:3:"unt";s:3:"270";s:3:" co";s:3:"271";s:3:" gu";s:3:"272";s:3:" mi";s:3:"273";s:3:" pi";s:3:"274";s:3:" ti";s:3:"275";s:3:"a o";s:3:"276";s:3:"abu";s:3:"277";s:3:"adl";s:3:"278";s:3:"ado";s:3:"279";s:3:"agh";s:3:"280";s:3:"agk";s:3:"281";s:3:"ao ";s:3:"282";s:3:"art";s:3:"283";s:3:"bal";s:3:"284";s:3:"cit";s:3:"285";s:3:"di ";s:3:"286";s:3:"dto";s:3:"287";s:3:"dun";s:3:"288";s:3:"ent";s:3:"289";s:3:"g e";s:3:"290";s:3:"gon";s:3:"291";s:3:"gug";s:3:"292";s:3:"ia ";s:3:"293";s:3:"iba";s:3:"294";s:3:"ice";s:3:"295";s:3:"in ";s:3:"296";s:3:"inu";s:3:"297";s:3:"it ";s:3:"298";s:3:"kaa";s:3:"299";}s:8:"croatian";a:300:{s:3:"je ";s:1:"0";s:3:" na";s:1:"1";s:3:" pr";s:1:"2";s:3:" po";s:1:"3";s:3:"na ";s:1:"4";s:3:" je";s:1:"5";s:3:" za";s:1:"6";s:3:"ije";s:1:"7";s:3:"ne ";s:1:"8";s:3:" i ";s:1:"9";s:3:"ti ";s:2:"10";s:3:"da ";s:2:"11";s:3:" ko";s:2:"12";s:3:" ne";s:2:"13";s:3:"li ";s:2:"14";s:3:" bi";s:2:"15";s:3:" da";s:2:"16";s:3:" u ";s:2:"17";s:3:"ma ";s:2:"18";s:3:"mo ";s:2:"19";s:3:"a n";s:2:"20";s:3:"ih ";s:2:"21";s:3:"za ";s:2:"22";s:3:"a s";s:2:"23";s:3:"ko ";s:2:"24";s:3:"i s";s:2:"25";s:3:"a p";s:2:"26";s:3:"koj";s:2:"27";s:3:"pro";s:2:"28";s:3:"ju ";s:2:"29";s:3:"se ";s:2:"30";s:3:" go";s:2:"31";s:3:"ost";s:2:"32";s:3:"to ";s:2:"33";s:3:"va ";s:2:"34";s:3:" do";s:2:"35";s:3:" to";s:2:"36";s:3:"e n";s:2:"37";s:3:"i p";s:2:"38";s:3:" od";s:2:"39";s:3:" ra";s:2:"40";s:3:"no ";s:2:"41";s:3:"ako";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ni ";s:2:"44";s:3:" ka";s:2:"45";s:3:" se";s:2:"46";s:3:" mo";s:2:"47";s:3:" st";s:2:"48";s:3:"i n";s:2:"49";s:3:"ima";s:2:"50";s:3:"ja ";s:2:"51";s:3:"pri";s:2:"52";s:3:"vat";s:2:"53";s:3:"sta";s:2:"54";s:3:" su";s:2:"55";s:3:"ati";s:2:"56";s:3:"e p";s:2:"57";s:3:"ta ";s:2:"58";s:3:"tsk";s:2:"59";s:3:"e i";s:2:"60";s:3:"nij";s:2:"61";s:3:" tr";s:2:"62";s:3:"cij";s:2:"63";s:3:"jen";s:2:"64";s:3:"nos";s:2:"65";s:3:"o s";s:2:"66";s:3:" iz";s:2:"67";s:3:"om ";s:2:"68";s:3:"tro";s:2:"69";s:3:"ili";s:2:"70";s:3:"iti";s:2:"71";s:3:"pos";s:2:"72";s:3:" al";s:2:"73";s:3:"a i";s:2:"74";s:3:"a o";s:2:"75";s:3:"e s";s:2:"76";s:3:"ija";s:2:"77";s:3:"ini";s:2:"78";s:3:"pre";s:2:"79";s:3:"str";s:2:"80";s:3:"la ";s:2:"81";s:3:"og ";s:2:"82";s:3:"ovo";s:2:"83";s:3:" sv";s:2:"84";s:3:"ekt";s:2:"85";s:3:"nje";s:2:"86";s:3:"o p";s:2:"87";s:3:"odi";s:2:"88";s:3:"rva";s:2:"89";s:3:" ni";s:2:"90";s:3:"ali";s:2:"91";s:3:"min";s:2:"92";s:3:"rij";s:2:"93";s:3:"a t";s:2:"94";s:3:"a z";s:2:"95";s:3:"ats";s:2:"96";s:3:"iva";s:2:"97";s:3:"o t";s:2:"98";s:3:"od ";s:2:"99";s:3:"oje";s:3:"100";s:3:"ra ";s:3:"101";s:3:" hr";s:3:"102";s:3:"a m";s:3:"103";s:3:"a u";s:3:"104";s:3:"hrv";s:3:"105";s:3:"im ";s:3:"106";s:3:"ke ";s:3:"107";s:3:"o i";s:3:"108";s:3:"ovi";s:3:"109";s:3:"red";s:3:"110";s:3:"riv";s:3:"111";s:3:"te ";s:3:"112";s:3:"bi ";s:3:"113";s:3:"e o";s:3:"114";s:3:"god";s:3:"115";s:3:"i d";s:3:"116";s:3:"lek";s:3:"117";s:3:"umi";s:3:"118";s:3:"zvo";s:3:"119";s:3:"din";s:3:"120";s:3:"e u";s:3:"121";s:3:"ene";s:3:"122";s:3:"jed";s:3:"123";s:3:"ji ";s:3:"124";s:3:"lje";s:3:"125";s:3:"nog";s:3:"126";s:3:"su ";s:3:"127";s:3:" a ";s:3:"128";s:3:" el";s:3:"129";s:3:" mi";s:3:"130";s:3:" o ";s:3:"131";s:3:"a d";s:3:"132";s:3:"alu";s:3:"133";s:3:"ele";s:3:"134";s:3:"i u";s:3:"135";s:3:"izv";s:3:"136";s:3:"ktr";s:3:"137";s:3:"lum";s:3:"138";s:3:"o d";s:3:"139";s:3:"ori";s:3:"140";s:3:"rad";s:3:"141";s:3:"sto";s:3:"142";s:3:"a k";s:3:"143";s:3:"anj";s:3:"144";s:3:"ava";s:3:"145";s:3:"e k";s:3:"146";s:3:"men";s:3:"147";s:3:"nic";s:3:"148";s:3:"o j";s:3:"149";s:3:"oj ";s:3:"150";s:3:"ove";s:3:"151";s:3:"ski";s:3:"152";s:3:"tvr";s:3:"153";s:3:"una";s:3:"154";s:3:"vor";s:3:"155";s:3:" di";s:3:"156";s:3:" no";s:3:"157";s:3:" s ";s:3:"158";s:3:" ta";s:3:"159";s:3:" tv";s:3:"160";s:3:"i i";s:3:"161";s:3:"i o";s:3:"162";s:3:"kak";s:3:"163";s:4:"roš";s:3:"164";s:3:"sko";s:3:"165";s:3:"vod";s:3:"166";s:3:" sa";s:3:"167";s:4:" će";s:3:"168";s:3:"a b";s:3:"169";s:3:"adi";s:3:"170";s:3:"amo";s:3:"171";s:3:"eni";s:3:"172";s:3:"gov";s:3:"173";s:3:"iju";s:3:"174";s:3:"ku ";s:3:"175";s:3:"o n";s:3:"176";s:3:"ora";s:3:"177";s:3:"rav";s:3:"178";s:3:"ruj";s:3:"179";s:3:"smo";s:3:"180";s:3:"tav";s:3:"181";s:3:"tru";s:3:"182";s:3:"u p";s:3:"183";s:3:"ve ";s:3:"184";s:3:" in";s:3:"185";s:3:" pl";s:3:"186";s:3:"aci";s:3:"187";s:3:"bit";s:3:"188";s:3:"de ";s:3:"189";s:4:"diš";s:3:"190";s:3:"ema";s:3:"191";s:3:"i m";s:3:"192";s:3:"ika";s:3:"193";s:4:"išt";s:3:"194";s:3:"jer";s:3:"195";s:3:"ki ";s:3:"196";s:3:"mog";s:3:"197";s:3:"nik";s:3:"198";s:3:"nov";s:3:"199";s:3:"nu ";s:3:"200";s:3:"oji";s:3:"201";s:3:"oli";s:3:"202";s:3:"pla";s:3:"203";s:3:"pod";s:3:"204";s:3:"st ";s:3:"205";s:3:"sti";s:3:"206";s:3:"tra";s:3:"207";s:3:"tre";s:3:"208";s:3:"vo ";s:3:"209";s:3:" sm";s:3:"210";s:4:" št";s:3:"211";s:3:"dan";s:3:"212";s:3:"e z";s:3:"213";s:3:"i t";s:3:"214";s:3:"io ";s:3:"215";s:3:"ist";s:3:"216";s:3:"kon";s:3:"217";s:3:"lo ";s:3:"218";s:3:"stv";s:3:"219";s:3:"u s";s:3:"220";s:3:"uje";s:3:"221";s:3:"ust";s:3:"222";s:4:"će ";s:3:"223";s:4:"ći ";s:3:"224";s:4:"što";s:3:"225";s:3:" dr";s:3:"226";s:3:" im";s:3:"227";s:3:" li";s:3:"228";s:3:"ada";s:3:"229";s:3:"aft";s:3:"230";s:3:"ani";s:3:"231";s:3:"ao ";s:3:"232";s:3:"ars";s:3:"233";s:3:"ata";s:3:"234";s:3:"e t";s:3:"235";s:3:"emo";s:3:"236";s:3:"i k";s:3:"237";s:3:"ine";s:3:"238";s:3:"jem";s:3:"239";s:3:"kov";s:3:"240";s:3:"lik";s:3:"241";s:3:"lji";s:3:"242";s:3:"mje";s:3:"243";s:3:"naf";s:3:"244";s:3:"ner";s:3:"245";s:3:"nih";s:3:"246";s:3:"nja";s:3:"247";s:3:"ogo";s:3:"248";s:3:"oiz";s:3:"249";s:3:"ome";s:3:"250";s:3:"pot";s:3:"251";s:3:"ran";s:3:"252";s:3:"ri ";s:3:"253";s:3:"roi";s:3:"254";s:3:"rtk";s:3:"255";s:3:"ska";s:3:"256";s:3:"ter";s:3:"257";s:3:"u i";s:3:"258";s:3:"u o";s:3:"259";s:3:"vi ";s:3:"260";s:3:"vrt";s:3:"261";s:3:" me";s:3:"262";s:3:" ug";s:3:"263";s:3:"ak ";s:3:"264";s:3:"ama";s:3:"265";s:4:"drž";s:3:"266";s:3:"e e";s:3:"267";s:3:"e g";s:3:"268";s:3:"e m";s:3:"269";s:3:"em ";s:3:"270";s:3:"eme";s:3:"271";s:3:"enj";s:3:"272";s:3:"ent";s:3:"273";s:3:"er ";s:3:"274";s:3:"ere";s:3:"275";s:3:"erg";s:3:"276";s:3:"eur";s:3:"277";s:3:"go ";s:3:"278";s:3:"i b";s:3:"279";s:3:"i z";s:3:"280";s:3:"jet";s:3:"281";s:3:"ksi";s:3:"282";s:3:"o u";s:3:"283";s:3:"oda";s:3:"284";s:3:"ona";s:3:"285";s:3:"pra";s:3:"286";s:3:"reb";s:3:"287";s:3:"rem";s:3:"288";s:3:"rop";s:3:"289";s:3:"tri";s:3:"290";s:4:"žav";s:3:"291";s:3:" ci";s:3:"292";s:3:" eu";s:3:"293";s:3:" re";s:3:"294";s:3:" te";s:3:"295";s:3:" uv";s:3:"296";s:3:" ve";s:3:"297";s:3:"aju";s:3:"298";s:3:"an ";s:3:"299";}s:5:"czech";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:4:"ní ";s:1:"2";s:3:"pro";s:1:"3";s:3:" na";s:1:"4";s:3:"na ";s:1:"5";s:4:" př";s:1:"6";s:3:"ch ";s:1:"7";s:3:" je";s:1:"8";s:3:" ne";s:1:"9";s:4:"že ";s:2:"10";s:4:" že";s:2:"11";s:3:" se";s:2:"12";s:3:" do";s:2:"13";s:3:" ro";s:2:"14";s:3:" st";s:2:"15";s:3:" v ";s:2:"16";s:3:" ve";s:2:"17";s:4:"pře";s:2:"18";s:3:"se ";s:2:"19";s:3:"ho ";s:2:"20";s:3:"sta";s:2:"21";s:3:" to";s:2:"22";s:3:" vy";s:2:"23";s:3:" za";s:2:"24";s:3:"ou ";s:2:"25";s:3:" a ";s:2:"26";s:3:"to ";s:2:"27";s:3:" by";s:2:"28";s:3:"la ";s:2:"29";s:3:"ce ";s:2:"30";s:3:"e v";s:2:"31";s:3:"ist";s:2:"32";s:3:"le ";s:2:"33";s:3:"pod";s:2:"34";s:4:"í p";s:2:"35";s:3:" vl";s:2:"36";s:3:"e n";s:2:"37";s:3:"e s";s:2:"38";s:3:"je ";s:2:"39";s:4:"ké ";s:2:"40";s:3:"by ";s:2:"41";s:3:"em ";s:2:"42";s:4:"ých";s:2:"43";s:3:" od";s:2:"44";s:3:"ova";s:2:"45";s:4:"řed";s:2:"46";s:3:"dy ";s:2:"47";s:4:"ení";s:2:"48";s:3:"kon";s:2:"49";s:3:"li ";s:2:"50";s:4:"ně ";s:2:"51";s:3:"str";s:2:"52";s:4:" zá";s:2:"53";s:3:"ve ";s:2:"54";s:3:" ka";s:2:"55";s:3:" sv";s:2:"56";s:3:"e p";s:2:"57";s:3:"it ";s:2:"58";s:4:"lád";s:2:"59";s:3:"oho";s:2:"60";s:3:"rov";s:2:"61";s:3:"roz";s:2:"62";s:3:"ter";s:2:"63";s:4:"vlá";s:2:"64";s:4:"ím ";s:2:"65";s:3:" ko";s:2:"66";s:3:"hod";s:2:"67";s:3:"nis";s:2:"68";s:5:"pří";s:2:"69";s:4:"ský";s:2:"70";s:3:" mi";s:2:"71";s:3:" ob";s:2:"72";s:3:" so";s:2:"73";s:3:"a p";s:2:"74";s:3:"ali";s:2:"75";s:3:"bud";s:2:"76";s:3:"edn";s:2:"77";s:3:"ick";s:2:"78";s:3:"kte";s:2:"79";s:3:"ku ";s:2:"80";s:3:"o s";s:2:"81";s:3:"al ";s:2:"82";s:3:"ci ";s:2:"83";s:3:"e t";s:2:"84";s:3:"il ";s:2:"85";s:3:"ny ";s:2:"86";s:4:"né ";s:2:"87";s:3:"odl";s:2:"88";s:4:"ová";s:2:"89";s:3:"rot";s:2:"90";s:3:"sou";s:2:"91";s:5:"ání";s:2:"92";s:3:" bu";s:2:"93";s:3:" mo";s:2:"94";s:3:" o ";s:2:"95";s:3:"ast";s:2:"96";s:3:"byl";s:2:"97";s:3:"de ";s:2:"98";s:3:"ek ";s:2:"99";s:3:"ost";s:3:"100";s:4:" mí";s:3:"101";s:3:" ta";s:3:"102";s:3:"es ";s:3:"103";s:3:"jed";s:3:"104";s:3:"ky ";s:3:"105";s:3:"las";s:3:"106";s:3:"m p";s:3:"107";s:3:"nes";s:3:"108";s:4:"ním";s:3:"109";s:3:"ran";s:3:"110";s:3:"rem";s:3:"111";s:3:"ros";s:3:"112";s:4:"ého";s:3:"113";s:3:" de";s:3:"114";s:3:" kt";s:3:"115";s:3:" ni";s:3:"116";s:3:" si";s:3:"117";s:4:" vý";s:3:"118";s:3:"at ";s:3:"119";s:4:"jí ";s:3:"120";s:4:"ký ";s:3:"121";s:3:"mi ";s:3:"122";s:3:"pre";s:3:"123";s:3:"tak";s:3:"124";s:3:"tan";s:3:"125";s:3:"y v";s:3:"126";s:4:"řek";s:3:"127";s:3:" ch";s:3:"128";s:3:" li";s:3:"129";s:4:" ná";s:3:"130";s:3:" pa";s:3:"131";s:4:" ře";s:3:"132";s:3:"da ";s:3:"133";s:3:"dle";s:3:"134";s:3:"dne";s:3:"135";s:3:"i p";s:3:"136";s:3:"i v";s:3:"137";s:3:"ly ";s:3:"138";s:3:"min";s:3:"139";s:3:"o n";s:3:"140";s:3:"o v";s:3:"141";s:3:"pol";s:3:"142";s:3:"tra";s:3:"143";s:3:"val";s:3:"144";s:4:"vní";s:3:"145";s:4:"ích";s:3:"146";s:4:"ý p";s:3:"147";s:4:"řej";s:3:"148";s:3:" ce";s:3:"149";s:3:" kd";s:3:"150";s:3:" le";s:3:"151";s:3:"a s";s:3:"152";s:3:"a z";s:3:"153";s:3:"cen";s:3:"154";s:3:"e k";s:3:"155";s:3:"eds";s:3:"156";s:3:"ekl";s:3:"157";s:3:"emi";s:3:"158";s:3:"kl ";s:3:"159";s:3:"lat";s:3:"160";s:3:"lo ";s:3:"161";s:4:"mié";s:3:"162";s:3:"nov";s:3:"163";s:3:"pra";s:3:"164";s:3:"sku";s:3:"165";s:4:"ské";s:3:"166";s:3:"sti";s:3:"167";s:3:"tav";s:3:"168";s:3:"ti ";s:3:"169";s:3:"ty ";s:3:"170";s:4:"ván";s:3:"171";s:4:"vé ";s:3:"172";s:3:"y n";s:3:"173";s:3:"y s";s:3:"174";s:4:"í s";s:3:"175";s:4:"í v";s:3:"176";s:4:"ě p";s:3:"177";s:3:" dn";s:3:"178";s:4:" ně";s:3:"179";s:3:" sp";s:3:"180";s:4:" čs";s:3:"181";s:3:"a n";s:3:"182";s:3:"a t";s:3:"183";s:3:"ak ";s:3:"184";s:4:"dní";s:3:"185";s:3:"doh";s:3:"186";s:3:"e b";s:3:"187";s:3:"e m";s:3:"188";s:3:"ejn";s:3:"189";s:3:"ena";s:3:"190";s:3:"est";s:3:"191";s:3:"ini";s:3:"192";s:3:"m z";s:3:"193";s:3:"nal";s:3:"194";s:3:"nou";s:3:"195";s:4:"ná ";s:3:"196";s:3:"ovi";s:3:"197";s:4:"ové";s:3:"198";s:4:"ový";s:3:"199";s:3:"rsk";s:3:"200";s:4:"stá";s:3:"201";s:4:"tí ";s:3:"202";s:4:"tře";s:3:"203";s:4:"tů ";s:3:"204";s:3:"ude";s:3:"205";s:3:"za ";s:3:"206";s:4:"é p";s:3:"207";s:4:"ém ";s:3:"208";s:4:"í d";s:3:"209";s:3:" ir";s:3:"210";s:3:" zv";s:3:"211";s:3:"ale";s:3:"212";s:4:"aně";s:3:"213";s:3:"ave";s:3:"214";s:4:"cké";s:3:"215";s:3:"den";s:3:"216";s:3:"e z";s:3:"217";s:3:"ech";s:3:"218";s:3:"en ";s:3:"219";s:4:"erý";s:3:"220";s:3:"hla";s:3:"221";s:3:"i s";s:3:"222";s:4:"iér";s:3:"223";s:3:"lov";s:3:"224";s:3:"mu ";s:3:"225";s:3:"neb";s:3:"226";s:3:"nic";s:3:"227";s:3:"o b";s:3:"228";s:3:"o m";s:3:"229";s:3:"pad";s:3:"230";s:3:"pot";s:3:"231";s:3:"rav";s:3:"232";s:3:"rop";s:3:"233";s:4:"rý ";s:3:"234";s:3:"sed";s:3:"235";s:3:"si ";s:3:"236";s:3:"t p";s:3:"237";s:3:"tic";s:3:"238";s:3:"tu ";s:3:"239";s:4:"tě ";s:3:"240";s:3:"u p";s:3:"241";s:3:"u v";s:3:"242";s:4:"vá ";s:3:"243";s:5:"výš";s:3:"244";s:4:"zvý";s:3:"245";s:5:"ční";s:3:"246";s:5:"ří ";s:3:"247";s:4:"ům ";s:3:"248";s:3:" bl";s:3:"249";s:3:" br";s:3:"250";s:3:" ho";s:3:"251";s:3:" ja";s:3:"252";s:3:" re";s:3:"253";s:3:" s ";s:3:"254";s:3:" z ";s:3:"255";s:3:" zd";s:3:"256";s:3:"a v";s:3:"257";s:3:"ani";s:3:"258";s:3:"ato";s:3:"259";s:3:"bla";s:3:"260";s:3:"bri";s:3:"261";s:4:"ečn";s:3:"262";s:4:"eře";s:3:"263";s:3:"h v";s:3:"264";s:3:"i n";s:3:"265";s:3:"ie ";s:3:"266";s:3:"ila";s:3:"267";s:3:"irs";s:3:"268";s:3:"ite";s:3:"269";s:3:"kov";s:3:"270";s:3:"nos";s:3:"271";s:3:"o o";s:3:"272";s:3:"o p";s:3:"273";s:3:"oce";s:3:"274";s:3:"ody";s:3:"275";s:3:"ohl";s:3:"276";s:3:"oli";s:3:"277";s:3:"ovo";s:3:"278";s:3:"pla";s:3:"279";s:4:"poč";s:3:"280";s:4:"prá";s:3:"281";s:3:"ra ";s:3:"282";s:3:"rit";s:3:"283";s:3:"rod";s:3:"284";s:3:"ry ";s:3:"285";s:3:"sd ";s:3:"286";s:3:"sko";s:3:"287";s:3:"ssd";s:3:"288";s:3:"tel";s:3:"289";s:3:"u s";s:3:"290";s:3:"vat";s:3:"291";s:4:"veř";s:3:"292";s:3:"vit";s:3:"293";s:3:"vla";s:3:"294";s:3:"y p";s:3:"295";s:4:"áln";s:3:"296";s:4:"čss";s:3:"297";s:4:"šen";s:3:"298";s:3:" al";s:3:"299";}s:6:"danish";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"der";s:1:"4";s:3:"de ";s:1:"5";s:3:"for";s:1:"6";s:3:" fo";s:1:"7";s:3:" i ";s:1:"8";s:3:"at ";s:1:"9";s:3:" at";s:2:"10";s:3:"re ";s:2:"11";s:3:"det";s:2:"12";s:3:" ha";s:2:"13";s:3:"nde";s:2:"14";s:3:"ere";s:2:"15";s:3:"ing";s:2:"16";s:3:"den";s:2:"17";s:3:" me";s:2:"18";s:3:" og";s:2:"19";s:3:"ger";s:2:"20";s:3:"ter";s:2:"21";s:3:" er";s:2:"22";s:3:" si";s:2:"23";s:3:"and";s:2:"24";s:3:" af";s:2:"25";s:3:"or ";s:2:"26";s:3:" st";s:2:"27";s:3:" ti";s:2:"28";s:3:" en";s:2:"29";s:3:"og ";s:2:"30";s:3:"ar ";s:2:"31";s:3:"il ";s:2:"32";s:3:"r s";s:2:"33";s:3:"ige";s:2:"34";s:3:"til";s:2:"35";s:3:"ke ";s:2:"36";s:3:"r e";s:2:"37";s:3:"af ";s:2:"38";s:3:"kke";s:2:"39";s:3:" ma";s:2:"40";s:4:" på";s:2:"41";s:3:"om ";s:2:"42";s:4:"på ";s:2:"43";s:3:"ed ";s:2:"44";s:3:"ge ";s:2:"45";s:3:"end";s:2:"46";s:3:"nge";s:2:"47";s:3:"t s";s:2:"48";s:3:"e s";s:2:"49";s:3:"ler";s:2:"50";s:3:" sk";s:2:"51";s:3:"els";s:2:"52";s:3:"ern";s:2:"53";s:3:"sig";s:2:"54";s:3:"ne ";s:2:"55";s:3:"lig";s:2:"56";s:3:"r d";s:2:"57";s:3:"ska";s:2:"58";s:3:" vi";s:2:"59";s:3:"har";s:2:"60";s:3:" be";s:2:"61";s:3:" se";s:2:"62";s:3:"an ";s:2:"63";s:3:"ikk";s:2:"64";s:3:"lle";s:2:"65";s:3:"gen";s:2:"66";s:3:"n f";s:2:"67";s:3:"ste";s:2:"68";s:3:"t a";s:2:"69";s:3:"t d";s:2:"70";s:3:"rin";s:2:"71";s:3:" ik";s:2:"72";s:3:"es ";s:2:"73";s:3:"ng ";s:2:"74";s:3:"ver";s:2:"75";s:3:"r b";s:2:"76";s:3:"sen";s:2:"77";s:3:"ede";s:2:"78";s:3:"men";s:2:"79";s:3:"r i";s:2:"80";s:3:" he";s:2:"81";s:3:" et";s:2:"82";s:3:"ig ";s:2:"83";s:3:"lan";s:2:"84";s:3:"med";s:2:"85";s:3:"nd ";s:2:"86";s:3:"rne";s:2:"87";s:3:" da";s:2:"88";s:3:" in";s:2:"89";s:3:"e t";s:2:"90";s:3:"mme";s:2:"91";s:3:"und";s:2:"92";s:3:" om";s:2:"93";s:3:"e e";s:2:"94";s:3:"e m";s:2:"95";s:3:"her";s:2:"96";s:3:"le ";s:2:"97";s:3:"r f";s:2:"98";s:3:"t f";s:2:"99";s:4:"så ";s:3:"100";s:3:"te ";s:3:"101";s:3:" so";s:3:"102";s:3:"ele";s:3:"103";s:3:"t e";s:3:"104";s:3:" ko";s:3:"105";s:3:"est";s:3:"106";s:3:"ske";s:3:"107";s:3:" bl";s:3:"108";s:3:"e f";s:3:"109";s:3:"ekt";s:3:"110";s:3:"mar";s:3:"111";s:3:"bru";s:3:"112";s:3:"e a";s:3:"113";s:3:"el ";s:3:"114";s:3:"ers";s:3:"115";s:3:"ret";s:3:"116";s:3:"som";s:3:"117";s:3:"tte";s:3:"118";s:3:"ve ";s:3:"119";s:3:" la";s:3:"120";s:3:" ud";s:3:"121";s:3:" ve";s:3:"122";s:3:"age";s:3:"123";s:3:"e d";s:3:"124";s:3:"e h";s:3:"125";s:3:"lse";s:3:"126";s:3:"man";s:3:"127";s:3:"rug";s:3:"128";s:3:"sel";s:3:"129";s:3:"ser";s:3:"130";s:3:" fi";s:3:"131";s:3:" op";s:3:"132";s:3:" pr";s:3:"133";s:3:"dt ";s:3:"134";s:3:"e i";s:3:"135";s:3:"n m";s:3:"136";s:3:"r m";s:3:"137";s:3:" an";s:3:"138";s:3:" re";s:3:"139";s:3:" sa";s:3:"140";s:3:"ion";s:3:"141";s:3:"ner";s:3:"142";s:3:"res";s:3:"143";s:3:"t i";s:3:"144";s:3:"get";s:3:"145";s:3:"n s";s:3:"146";s:3:"one";s:3:"147";s:3:"orb";s:3:"148";s:3:"t h";s:3:"149";s:3:"vis";s:3:"150";s:4:"år ";s:3:"151";s:3:" fr";s:3:"152";s:3:"bil";s:3:"153";s:3:"e k";s:3:"154";s:3:"ens";s:3:"155";s:3:"ind";s:3:"156";s:3:"omm";s:3:"157";s:3:"t m";s:3:"158";s:3:" hv";s:3:"159";s:3:" je";s:3:"160";s:3:"dan";s:3:"161";s:3:"ent";s:3:"162";s:3:"fte";s:3:"163";s:3:"nin";s:3:"164";s:3:" mi";s:3:"165";s:3:"e o";s:3:"166";s:3:"e p";s:3:"167";s:3:"n o";s:3:"168";s:3:"nte";s:3:"169";s:3:" ku";s:3:"170";s:3:"ell";s:3:"171";s:3:"nas";s:3:"172";s:3:"ore";s:3:"173";s:3:"r h";s:3:"174";s:3:"r k";s:3:"175";s:3:"sta";s:3:"176";s:3:"sto";s:3:"177";s:3:"dag";s:3:"178";s:3:"eri";s:3:"179";s:3:"kun";s:3:"180";s:3:"lde";s:3:"181";s:3:"mer";s:3:"182";s:3:"r a";s:3:"183";s:3:"r v";s:3:"184";s:3:"rek";s:3:"185";s:3:"rer";s:3:"186";s:3:"t o";s:3:"187";s:3:"tor";s:3:"188";s:4:"tør";s:3:"189";s:4:" få";s:3:"190";s:4:" må";s:3:"191";s:3:" to";s:3:"192";s:3:"boe";s:3:"193";s:3:"che";s:3:"194";s:3:"e v";s:3:"195";s:3:"i d";s:3:"196";s:3:"ive";s:3:"197";s:3:"kab";s:3:"198";s:3:"ns ";s:3:"199";s:3:"oel";s:3:"200";s:3:"se ";s:3:"201";s:3:"t v";s:3:"202";s:3:" al";s:3:"203";s:3:" bo";s:3:"204";s:3:" un";s:3:"205";s:3:"ans";s:3:"206";s:3:"dre";s:3:"207";s:3:"ire";s:3:"208";s:4:"køb";s:3:"209";s:3:"ors";s:3:"210";s:3:"ove";s:3:"211";s:3:"ren";s:3:"212";s:3:"t b";s:3:"213";s:4:"ør ";s:3:"214";s:3:" ka";s:3:"215";s:3:"ald";s:3:"216";s:3:"bet";s:3:"217";s:3:"gt ";s:3:"218";s:3:"isk";s:3:"219";s:3:"kal";s:3:"220";s:3:"kom";s:3:"221";s:3:"lev";s:3:"222";s:3:"n d";s:3:"223";s:3:"n i";s:3:"224";s:3:"pri";s:3:"225";s:3:"r p";s:3:"226";s:3:"rbr";s:3:"227";s:4:"søg";s:3:"228";s:3:"tel";s:3:"229";s:4:" så";s:3:"230";s:3:" te";s:3:"231";s:3:" va";s:3:"232";s:3:"al ";s:3:"233";s:3:"dir";s:3:"234";s:3:"eje";s:3:"235";s:3:"fis";s:3:"236";s:4:"gså";s:3:"237";s:3:"isc";s:3:"238";s:3:"jer";s:3:"239";s:3:"ker";s:3:"240";s:3:"ogs";s:3:"241";s:3:"sch";s:3:"242";s:3:"st ";s:3:"243";s:3:"t k";s:3:"244";s:3:"uge";s:3:"245";s:3:" di";s:3:"246";s:3:"ag ";s:3:"247";s:3:"d a";s:3:"248";s:3:"g i";s:3:"249";s:3:"ill";s:3:"250";s:3:"l a";s:3:"251";s:3:"lsk";s:3:"252";s:3:"n a";s:3:"253";s:3:"on ";s:3:"254";s:3:"sam";s:3:"255";s:3:"str";s:3:"256";s:3:"tet";s:3:"257";s:3:"var";s:3:"258";s:3:" mo";s:3:"259";s:3:"art";s:3:"260";s:3:"ash";s:3:"261";s:3:"att";s:3:"262";s:3:"e b";s:3:"263";s:3:"han";s:3:"264";s:3:"hav";s:3:"265";s:3:"kla";s:3:"266";s:3:"kon";s:3:"267";s:3:"n t";s:3:"268";s:3:"ned";s:3:"269";s:3:"r o";s:3:"270";s:3:"ra ";s:3:"271";s:3:"rre";s:3:"272";s:3:"ves";s:3:"273";s:3:"vil";s:3:"274";s:3:" el";s:3:"275";s:3:" kr";s:3:"276";s:3:" ov";s:3:"277";s:3:"ann";s:3:"278";s:3:"e u";s:3:"279";s:3:"ess";s:3:"280";s:3:"fra";s:3:"281";s:3:"g a";s:3:"282";s:3:"g d";s:3:"283";s:3:"int";s:3:"284";s:3:"ngs";s:3:"285";s:3:"rde";s:3:"286";s:3:"tra";s:3:"287";s:4:" år";s:3:"288";s:3:"akt";s:3:"289";s:3:"asi";s:3:"290";s:3:"em ";s:3:"291";s:3:"gel";s:3:"292";s:3:"gym";s:3:"293";s:3:"hol";s:3:"294";s:3:"kan";s:3:"295";s:3:"mna";s:3:"296";s:3:"n h";s:3:"297";s:3:"nsk";s:3:"298";s:3:"old";s:3:"299";}s:5:"dutch";a:300:{s:3:"en ";s:1:"0";s:3:"de ";s:1:"1";s:3:" de";s:1:"2";s:3:"et ";s:1:"3";s:3:"an ";s:1:"4";s:3:" he";s:1:"5";s:3:"er ";s:1:"6";s:3:" va";s:1:"7";s:3:"n d";s:1:"8";s:3:"van";s:1:"9";s:3:"een";s:2:"10";s:3:"het";s:2:"11";s:3:" ge";s:2:"12";s:3:"oor";s:2:"13";s:3:" ee";s:2:"14";s:3:"der";s:2:"15";s:3:" en";s:2:"16";s:3:"ij ";s:2:"17";s:3:"aar";s:2:"18";s:3:"gen";s:2:"19";s:3:"te ";s:2:"20";s:3:"ver";s:2:"21";s:3:" in";s:2:"22";s:3:" me";s:2:"23";s:3:"aan";s:2:"24";s:3:"den";s:2:"25";s:3:" we";s:2:"26";s:3:"at ";s:2:"27";s:3:"in ";s:2:"28";s:3:" da";s:2:"29";s:3:" te";s:2:"30";s:3:"eer";s:2:"31";s:3:"nde";s:2:"32";s:3:"ter";s:2:"33";s:3:"ste";s:2:"34";s:3:"n v";s:2:"35";s:3:" vo";s:2:"36";s:3:" zi";s:2:"37";s:3:"ing";s:2:"38";s:3:"n h";s:2:"39";s:3:"voo";s:2:"40";s:3:"is ";s:2:"41";s:3:" op";s:2:"42";s:3:"tie";s:2:"43";s:3:" aa";s:2:"44";s:3:"ede";s:2:"45";s:3:"erd";s:2:"46";s:3:"ers";s:2:"47";s:3:" be";s:2:"48";s:3:"eme";s:2:"49";s:3:"ten";s:2:"50";s:3:"ken";s:2:"51";s:3:"n e";s:2:"52";s:3:" ni";s:2:"53";s:3:" ve";s:2:"54";s:3:"ent";s:2:"55";s:3:"ijn";s:2:"56";s:3:"jn ";s:2:"57";s:3:"mee";s:2:"58";s:3:"iet";s:2:"59";s:3:"n w";s:2:"60";s:3:"ng ";s:2:"61";s:3:"nie";s:2:"62";s:3:" is";s:2:"63";s:3:"cht";s:2:"64";s:3:"dat";s:2:"65";s:3:"ere";s:2:"66";s:3:"ie ";s:2:"67";s:3:"ijk";s:2:"68";s:3:"n b";s:2:"69";s:3:"rde";s:2:"70";s:3:"ar ";s:2:"71";s:3:"e b";s:2:"72";s:3:"e a";s:2:"73";s:3:"met";s:2:"74";s:3:"t d";s:2:"75";s:3:"el ";s:2:"76";s:3:"ond";s:2:"77";s:3:"t h";s:2:"78";s:3:" al";s:2:"79";s:3:"e w";s:2:"80";s:3:"op ";s:2:"81";s:3:"ren";s:2:"82";s:3:" di";s:2:"83";s:3:" on";s:2:"84";s:3:"al ";s:2:"85";s:3:"and";s:2:"86";s:3:"bij";s:2:"87";s:3:"zij";s:2:"88";s:3:" bi";s:2:"89";s:3:" hi";s:2:"90";s:3:" wi";s:2:"91";s:3:"or ";s:2:"92";s:3:"r d";s:2:"93";s:3:"t v";s:2:"94";s:3:" wa";s:2:"95";s:3:"e h";s:2:"96";s:3:"lle";s:2:"97";s:3:"rt ";s:2:"98";s:3:"ang";s:2:"99";s:3:"hij";s:3:"100";s:3:"men";s:3:"101";s:3:"n a";s:3:"102";s:3:"n z";s:3:"103";s:3:"rs ";s:3:"104";s:3:" om";s:3:"105";s:3:"e o";s:3:"106";s:3:"e v";s:3:"107";s:3:"end";s:3:"108";s:3:"est";s:3:"109";s:3:"n t";s:3:"110";s:3:"par";s:3:"111";s:3:" pa";s:3:"112";s:3:" pr";s:3:"113";s:3:" ze";s:3:"114";s:3:"e g";s:3:"115";s:3:"e p";s:3:"116";s:3:"n p";s:3:"117";s:3:"ord";s:3:"118";s:3:"oud";s:3:"119";s:3:"raa";s:3:"120";s:3:"sch";s:3:"121";s:3:"t e";s:3:"122";s:3:"ege";s:3:"123";s:3:"ich";s:3:"124";s:3:"ien";s:3:"125";s:3:"aat";s:3:"126";s:3:"ek ";s:3:"127";s:3:"len";s:3:"128";s:3:"n m";s:3:"129";s:3:"nge";s:3:"130";s:3:"nt ";s:3:"131";s:3:"ove";s:3:"132";s:3:"rd ";s:3:"133";s:3:"wer";s:3:"134";s:3:" ma";s:3:"135";s:3:" mi";s:3:"136";s:3:"daa";s:3:"137";s:3:"e k";s:3:"138";s:3:"lij";s:3:"139";s:3:"mer";s:3:"140";s:3:"n g";s:3:"141";s:3:"n o";s:3:"142";s:3:"om ";s:3:"143";s:3:"sen";s:3:"144";s:3:"t b";s:3:"145";s:3:"wij";s:3:"146";s:3:" ho";s:3:"147";s:3:"e m";s:3:"148";s:3:"ele";s:3:"149";s:3:"gem";s:3:"150";s:3:"heb";s:3:"151";s:3:"pen";s:3:"152";s:3:"ude";s:3:"153";s:3:" bo";s:3:"154";s:3:" ja";s:3:"155";s:3:"die";s:3:"156";s:3:"e e";s:3:"157";s:3:"eli";s:3:"158";s:3:"erk";s:3:"159";s:3:"le ";s:3:"160";s:3:"pro";s:3:"161";s:3:"rij";s:3:"162";s:3:" er";s:3:"163";s:3:" za";s:3:"164";s:3:"e d";s:3:"165";s:3:"ens";s:3:"166";s:3:"ind";s:3:"167";s:3:"ke ";s:3:"168";s:3:"n k";s:3:"169";s:3:"nd ";s:3:"170";s:3:"nen";s:3:"171";s:3:"nte";s:3:"172";s:3:"r h";s:3:"173";s:3:"s d";s:3:"174";s:3:"s e";s:3:"175";s:3:"t z";s:3:"176";s:3:" b ";s:3:"177";s:3:" co";s:3:"178";s:3:" ik";s:3:"179";s:3:" ko";s:3:"180";s:3:" ov";s:3:"181";s:3:"eke";s:3:"182";s:3:"hou";s:3:"183";s:3:"ik ";s:3:"184";s:3:"iti";s:3:"185";s:3:"lan";s:3:"186";s:3:"ns ";s:3:"187";s:3:"t g";s:3:"188";s:3:"t m";s:3:"189";s:3:" do";s:3:"190";s:3:" le";s:3:"191";s:3:" zo";s:3:"192";s:3:"ams";s:3:"193";s:3:"e z";s:3:"194";s:3:"g v";s:3:"195";s:3:"it ";s:3:"196";s:3:"je ";s:3:"197";s:3:"ls ";s:3:"198";s:3:"maa";s:3:"199";s:3:"n i";s:3:"200";s:3:"nke";s:3:"201";s:3:"rke";s:3:"202";s:3:"uit";s:3:"203";s:3:" ha";s:3:"204";s:3:" ka";s:3:"205";s:3:" mo";s:3:"206";s:3:" re";s:3:"207";s:3:" st";s:3:"208";s:3:" to";s:3:"209";s:3:"age";s:3:"210";s:3:"als";s:3:"211";s:3:"ark";s:3:"212";s:3:"art";s:3:"213";s:3:"ben";s:3:"214";s:3:"e r";s:3:"215";s:3:"e s";s:3:"216";s:3:"ert";s:3:"217";s:3:"eze";s:3:"218";s:3:"ht ";s:3:"219";s:3:"ijd";s:3:"220";s:3:"lem";s:3:"221";s:3:"r v";s:3:"222";s:3:"rte";s:3:"223";s:3:"t p";s:3:"224";s:3:"zeg";s:3:"225";s:3:"zic";s:3:"226";s:3:"aak";s:3:"227";s:3:"aal";s:3:"228";s:3:"ag ";s:3:"229";s:3:"ale";s:3:"230";s:3:"bbe";s:3:"231";s:3:"ch ";s:3:"232";s:3:"e t";s:3:"233";s:3:"ebb";s:3:"234";s:3:"erz";s:3:"235";s:3:"ft ";s:3:"236";s:3:"ge ";s:3:"237";s:3:"led";s:3:"238";s:3:"mst";s:3:"239";s:3:"n n";s:3:"240";s:3:"oek";s:3:"241";s:3:"r i";s:3:"242";s:3:"t o";s:3:"243";s:3:"t w";s:3:"244";s:3:"tel";s:3:"245";s:3:"tte";s:3:"246";s:3:"uur";s:3:"247";s:3:"we ";s:3:"248";s:3:"zit";s:3:"249";s:3:" af";s:3:"250";s:3:" li";s:3:"251";s:3:" ui";s:3:"252";s:3:"ak ";s:3:"253";s:3:"all";s:3:"254";s:3:"aut";s:3:"255";s:3:"doo";s:3:"256";s:3:"e i";s:3:"257";s:3:"ene";s:3:"258";s:3:"erg";s:3:"259";s:3:"ete";s:3:"260";s:3:"ges";s:3:"261";s:3:"hee";s:3:"262";s:3:"jaa";s:3:"263";s:3:"jke";s:3:"264";s:3:"kee";s:3:"265";s:3:"kel";s:3:"266";s:3:"kom";s:3:"267";s:3:"lee";s:3:"268";s:3:"moe";s:3:"269";s:3:"n s";s:3:"270";s:3:"ort";s:3:"271";s:3:"rec";s:3:"272";s:3:"s o";s:3:"273";s:3:"s v";s:3:"274";s:3:"teg";s:3:"275";s:3:"tij";s:3:"276";s:3:"ven";s:3:"277";s:3:"waa";s:3:"278";s:3:"wel";s:3:"279";s:3:" an";s:3:"280";s:3:" au";s:3:"281";s:3:" bu";s:3:"282";s:3:" gr";s:3:"283";s:3:" pl";s:3:"284";s:3:" ti";s:3:"285";s:3:"'' ";s:3:"286";s:3:"ade";s:3:"287";s:3:"dag";s:3:"288";s:3:"e l";s:3:"289";s:3:"ech";s:3:"290";s:3:"eel";s:3:"291";s:3:"eft";s:3:"292";s:3:"ger";s:3:"293";s:3:"gt ";s:3:"294";s:3:"ig ";s:3:"295";s:3:"itt";s:3:"296";s:3:"j d";s:3:"297";s:3:"ppe";s:3:"298";s:3:"rda";s:3:"299";}s:7:"english";a:300:{s:3:" th";s:1:"0";s:3:"the";s:1:"1";s:3:"he ";s:1:"2";s:3:"ed ";s:1:"3";s:3:" to";s:1:"4";s:3:" in";s:1:"5";s:3:"er ";s:1:"6";s:3:"ing";s:1:"7";s:3:"ng ";s:1:"8";s:3:" an";s:1:"9";s:3:"nd ";s:2:"10";s:3:" of";s:2:"11";s:3:"and";s:2:"12";s:3:"to ";s:2:"13";s:3:"of ";s:2:"14";s:3:" co";s:2:"15";s:3:"at ";s:2:"16";s:3:"on ";s:2:"17";s:3:"in ";s:2:"18";s:3:" a ";s:2:"19";s:3:"d t";s:2:"20";s:3:" he";s:2:"21";s:3:"e t";s:2:"22";s:3:"ion";s:2:"23";s:3:"es ";s:2:"24";s:3:" re";s:2:"25";s:3:"re ";s:2:"26";s:3:"hat";s:2:"27";s:3:" sa";s:2:"28";s:3:" st";s:2:"29";s:3:" ha";s:2:"30";s:3:"her";s:2:"31";s:3:"tha";s:2:"32";s:3:"tio";s:2:"33";s:3:"or ";s:2:"34";s:3:" ''";s:2:"35";s:3:"en ";s:2:"36";s:3:" wh";s:2:"37";s:3:"e s";s:2:"38";s:3:"ent";s:2:"39";s:3:"n t";s:2:"40";s:3:"s a";s:2:"41";s:3:"as ";s:2:"42";s:3:"for";s:2:"43";s:3:"is ";s:2:"44";s:3:"t t";s:2:"45";s:3:" be";s:2:"46";s:3:"ld ";s:2:"47";s:3:"e a";s:2:"48";s:3:"rs ";s:2:"49";s:3:" wa";s:2:"50";s:3:"ut ";s:2:"51";s:3:"ve ";s:2:"52";s:3:"ll ";s:2:"53";s:3:"al ";s:2:"54";s:3:" ma";s:2:"55";s:3:"e i";s:2:"56";s:3:" fo";s:2:"57";s:3:"'s ";s:2:"58";s:3:"an ";s:2:"59";s:3:"est";s:2:"60";s:3:" hi";s:2:"61";s:3:" mo";s:2:"62";s:3:" se";s:2:"63";s:3:" pr";s:2:"64";s:3:"s t";s:2:"65";s:3:"ate";s:2:"66";s:3:"st ";s:2:"67";s:3:"ter";s:2:"68";s:3:"ere";s:2:"69";s:3:"ted";s:2:"70";s:3:"nt ";s:2:"71";s:3:"ver";s:2:"72";s:3:"d a";s:2:"73";s:3:" wi";s:2:"74";s:3:"se ";s:2:"75";s:3:"e c";s:2:"76";s:3:"ect";s:2:"77";s:3:"ns ";s:2:"78";s:3:" on";s:2:"79";s:3:"ly ";s:2:"80";s:3:"tol";s:2:"81";s:3:"ey ";s:2:"82";s:3:"r t";s:2:"83";s:3:" ca";s:2:"84";s:3:"ati";s:2:"85";s:3:"ts ";s:2:"86";s:3:"all";s:2:"87";s:3:" no";s:2:"88";s:3:"his";s:2:"89";s:3:"s o";s:2:"90";s:3:"ers";s:2:"91";s:3:"con";s:2:"92";s:3:"e o";s:2:"93";s:3:"ear";s:2:"94";s:3:"f t";s:2:"95";s:3:"e w";s:2:"96";s:3:"was";s:2:"97";s:3:"ons";s:2:"98";s:3:"sta";s:2:"99";s:3:"'' ";s:3:"100";s:3:"sti";s:3:"101";s:3:"n a";s:3:"102";s:3:"sto";s:3:"103";s:3:"t h";s:3:"104";s:3:" we";s:3:"105";s:3:"id ";s:3:"106";s:3:"th ";s:3:"107";s:3:" it";s:3:"108";s:3:"ce ";s:3:"109";s:3:" di";s:3:"110";s:3:"ave";s:3:"111";s:3:"d h";s:3:"112";s:3:"cou";s:3:"113";s:3:"pro";s:3:"114";s:3:"ad ";s:3:"115";s:3:"oll";s:3:"116";s:3:"ry ";s:3:"117";s:3:"d s";s:3:"118";s:3:"e m";s:3:"119";s:3:" so";s:3:"120";s:3:"ill";s:3:"121";s:3:"cti";s:3:"122";s:3:"te ";s:3:"123";s:3:"tor";s:3:"124";s:3:"eve";s:3:"125";s:3:"g t";s:3:"126";s:3:"it ";s:3:"127";s:3:" ch";s:3:"128";s:3:" de";s:3:"129";s:3:"hav";s:3:"130";s:3:"oul";s:3:"131";s:3:"ty ";s:3:"132";s:3:"uld";s:3:"133";s:3:"use";s:3:"134";s:3:" al";s:3:"135";s:3:"are";s:3:"136";s:3:"ch ";s:3:"137";s:3:"me ";s:3:"138";s:3:"out";s:3:"139";s:3:"ove";s:3:"140";s:3:"wit";s:3:"141";s:3:"ys ";s:3:"142";s:3:"chi";s:3:"143";s:3:"t a";s:3:"144";s:3:"ith";s:3:"145";s:3:"oth";s:3:"146";s:3:" ab";s:3:"147";s:3:" te";s:3:"148";s:3:" wo";s:3:"149";s:3:"s s";s:3:"150";s:3:"res";s:3:"151";s:3:"t w";s:3:"152";s:3:"tin";s:3:"153";s:3:"e b";s:3:"154";s:3:"e h";s:3:"155";s:3:"nce";s:3:"156";s:3:"t s";s:3:"157";s:3:"y t";s:3:"158";s:3:"e p";s:3:"159";s:3:"ele";s:3:"160";s:3:"hin";s:3:"161";s:3:"s i";s:3:"162";s:3:"nte";s:3:"163";s:3:" li";s:3:"164";s:3:"le ";s:3:"165";s:3:" do";s:3:"166";s:3:"aid";s:3:"167";s:3:"hey";s:3:"168";s:3:"ne ";s:3:"169";s:3:"s w";s:3:"170";s:3:" as";s:3:"171";s:3:" fr";s:3:"172";s:3:" tr";s:3:"173";s:3:"end";s:3:"174";s:3:"sai";s:3:"175";s:3:" el";s:3:"176";s:3:" ne";s:3:"177";s:3:" su";s:3:"178";s:3:"'t ";s:3:"179";s:3:"ay ";s:3:"180";s:3:"hou";s:3:"181";s:3:"ive";s:3:"182";s:3:"lec";s:3:"183";s:3:"n't";s:3:"184";s:3:" ye";s:3:"185";s:3:"but";s:3:"186";s:3:"d o";s:3:"187";s:3:"o t";s:3:"188";s:3:"y o";s:3:"189";s:3:" ho";s:3:"190";s:3:" me";s:3:"191";s:3:"be ";s:3:"192";s:3:"cal";s:3:"193";s:3:"e e";s:3:"194";s:3:"had";s:3:"195";s:3:"ple";s:3:"196";s:3:" at";s:3:"197";s:3:" bu";s:3:"198";s:3:" la";s:3:"199";s:3:"d b";s:3:"200";s:3:"s h";s:3:"201";s:3:"say";s:3:"202";s:3:"t i";s:3:"203";s:3:" ar";s:3:"204";s:3:"e f";s:3:"205";s:3:"ght";s:3:"206";s:3:"hil";s:3:"207";s:3:"igh";s:3:"208";s:3:"int";s:3:"209";s:3:"not";s:3:"210";s:3:"ren";s:3:"211";s:3:" is";s:3:"212";s:3:" pa";s:3:"213";s:3:" sh";s:3:"214";s:3:"ays";s:3:"215";s:3:"com";s:3:"216";s:3:"n s";s:3:"217";s:3:"r a";s:3:"218";s:3:"rin";s:3:"219";s:3:"y a";s:3:"220";s:3:" un";s:3:"221";s:3:"n c";s:3:"222";s:3:"om ";s:3:"223";s:3:"thi";s:3:"224";s:3:" mi";s:3:"225";s:3:"by ";s:3:"226";s:3:"d i";s:3:"227";s:3:"e d";s:3:"228";s:3:"e n";s:3:"229";s:3:"t o";s:3:"230";s:3:" by";s:3:"231";s:3:"e r";s:3:"232";s:3:"eri";s:3:"233";s:3:"old";s:3:"234";s:3:"ome";s:3:"235";s:3:"whe";s:3:"236";s:3:"yea";s:3:"237";s:3:" gr";s:3:"238";s:3:"ar ";s:3:"239";s:3:"ity";s:3:"240";s:3:"mpl";s:3:"241";s:3:"oun";s:3:"242";s:3:"one";s:3:"243";s:3:"ow ";s:3:"244";s:3:"r s";s:3:"245";s:3:"s f";s:3:"246";s:3:"tat";s:3:"247";s:3:" ba";s:3:"248";s:3:" vo";s:3:"249";s:3:"bou";s:3:"250";s:3:"sam";s:3:"251";s:3:"tim";s:3:"252";s:3:"vot";s:3:"253";s:3:"abo";s:3:"254";s:3:"ant";s:3:"255";s:3:"ds ";s:3:"256";s:3:"ial";s:3:"257";s:3:"ine";s:3:"258";s:3:"man";s:3:"259";s:3:"men";s:3:"260";s:3:" or";s:3:"261";s:3:" po";s:3:"262";s:3:"amp";s:3:"263";s:3:"can";s:3:"264";s:3:"der";s:3:"265";s:3:"e l";s:3:"266";s:3:"les";s:3:"267";s:3:"ny ";s:3:"268";s:3:"ot ";s:3:"269";s:3:"rec";s:3:"270";s:3:"tes";s:3:"271";s:3:"tho";s:3:"272";s:3:"ica";s:3:"273";s:3:"ild";s:3:"274";s:3:"ir ";s:3:"275";s:3:"nde";s:3:"276";s:3:"ose";s:3:"277";s:3:"ous";s:3:"278";s:3:"pre";s:3:"279";s:3:"ste";s:3:"280";s:3:"era";s:3:"281";s:3:"per";s:3:"282";s:3:"r o";s:3:"283";s:3:"red";s:3:"284";s:3:"rie";s:3:"285";s:3:" bo";s:3:"286";s:3:" le";s:3:"287";s:3:"ali";s:3:"288";s:3:"ars";s:3:"289";s:3:"ore";s:3:"290";s:3:"ric";s:3:"291";s:3:"s m";s:3:"292";s:3:"str";s:3:"293";s:3:" fa";s:3:"294";s:3:"ess";s:3:"295";s:3:"ie ";s:3:"296";s:3:"ist";s:3:"297";s:3:"lat";s:3:"298";s:3:"uri";s:3:"299";}s:8:"estonian";a:300:{s:3:"st ";s:1:"0";s:3:" ka";s:1:"1";s:3:"on ";s:1:"2";s:3:"ja ";s:1:"3";s:3:" va";s:1:"4";s:3:" on";s:1:"5";s:3:" ja";s:1:"6";s:3:" ko";s:1:"7";s:3:"se ";s:1:"8";s:3:"ast";s:1:"9";s:3:"le ";s:2:"10";s:3:"es ";s:2:"11";s:3:"as ";s:2:"12";s:3:"is ";s:2:"13";s:3:"ud ";s:2:"14";s:3:" sa";s:2:"15";s:3:"da ";s:2:"16";s:3:"ga ";s:2:"17";s:3:" ta";s:2:"18";s:3:"aja";s:2:"19";s:3:"sta";s:2:"20";s:3:" ku";s:2:"21";s:3:" pe";s:2:"22";s:3:"a k";s:2:"23";s:3:"est";s:2:"24";s:3:"ist";s:2:"25";s:3:"ks ";s:2:"26";s:3:"ta ";s:2:"27";s:3:"al ";s:2:"28";s:3:"ava";s:2:"29";s:3:"id ";s:2:"30";s:3:"saa";s:2:"31";s:3:"mis";s:2:"32";s:3:"te ";s:2:"33";s:3:"val";s:2:"34";s:3:" et";s:2:"35";s:3:"nud";s:2:"36";s:3:" te";s:2:"37";s:3:"inn";s:2:"38";s:3:" se";s:2:"39";s:3:" tu";s:2:"40";s:3:"a v";s:2:"41";s:3:"alu";s:2:"42";s:3:"e k";s:2:"43";s:3:"ise";s:2:"44";s:3:"lu ";s:2:"45";s:3:"ma ";s:2:"46";s:3:"mes";s:2:"47";s:3:" mi";s:2:"48";s:3:"et ";s:2:"49";s:3:"iku";s:2:"50";s:3:"lin";s:2:"51";s:3:"ad ";s:2:"52";s:3:"el ";s:2:"53";s:3:"ime";s:2:"54";s:3:"ne ";s:2:"55";s:3:"nna";s:2:"56";s:3:" ha";s:2:"57";s:3:" in";s:2:"58";s:3:" ke";s:2:"59";s:4:" võ";s:2:"60";s:3:"a s";s:2:"61";s:3:"a t";s:2:"62";s:3:"ab ";s:2:"63";s:3:"e s";s:2:"64";s:3:"esi";s:2:"65";s:3:" la";s:2:"66";s:3:" li";s:2:"67";s:3:"e v";s:2:"68";s:3:"eks";s:2:"69";s:3:"ema";s:2:"70";s:3:"las";s:2:"71";s:3:"les";s:2:"72";s:3:"rju";s:2:"73";s:3:"tle";s:2:"74";s:3:"tsi";s:2:"75";s:3:"tus";s:2:"76";s:3:"upa";s:2:"77";s:3:"use";s:2:"78";s:3:"ust";s:2:"79";s:3:"var";s:2:"80";s:4:" lä";s:2:"81";s:3:"ali";s:2:"82";s:3:"arj";s:2:"83";s:3:"de ";s:2:"84";s:3:"ete";s:2:"85";s:3:"i t";s:2:"86";s:3:"iga";s:2:"87";s:3:"ilm";s:2:"88";s:3:"kui";s:2:"89";s:3:"li ";s:2:"90";s:3:"tul";s:2:"91";s:3:" ei";s:2:"92";s:3:" me";s:2:"93";s:4:" sõ";s:2:"94";s:3:"aal";s:2:"95";s:3:"ata";s:2:"96";s:3:"dus";s:2:"97";s:3:"ei ";s:2:"98";s:3:"nik";s:2:"99";s:3:"pea";s:3:"100";s:3:"s k";s:3:"101";s:3:"s o";s:3:"102";s:3:"sal";s:3:"103";s:4:"sõn";s:3:"104";s:3:"ter";s:3:"105";s:3:"ul ";s:3:"106";s:4:"või";s:3:"107";s:3:" el";s:3:"108";s:3:" ne";s:3:"109";s:3:"a j";s:3:"110";s:3:"ate";s:3:"111";s:3:"end";s:3:"112";s:3:"i k";s:3:"113";s:3:"ita";s:3:"114";s:3:"kar";s:3:"115";s:3:"kor";s:3:"116";s:3:"l o";s:3:"117";s:3:"lt ";s:3:"118";s:3:"maa";s:3:"119";s:3:"oli";s:3:"120";s:3:"sti";s:3:"121";s:3:"vad";s:3:"122";s:5:"ään";s:3:"123";s:3:" ju";s:3:"124";s:4:" jä";s:3:"125";s:4:" kü";s:3:"126";s:3:" ma";s:3:"127";s:3:" po";s:3:"128";s:4:" üt";s:3:"129";s:3:"aas";s:3:"130";s:3:"aks";s:3:"131";s:3:"at ";s:3:"132";s:3:"ed ";s:3:"133";s:3:"eri";s:3:"134";s:3:"hoi";s:3:"135";s:3:"i s";s:3:"136";s:3:"ka ";s:3:"137";s:3:"la ";s:3:"138";s:3:"nni";s:3:"139";s:3:"oid";s:3:"140";s:3:"pai";s:3:"141";s:3:"rit";s:3:"142";s:3:"us ";s:3:"143";s:4:"ütl";s:3:"144";s:3:" aa";s:3:"145";s:3:" lo";s:3:"146";s:3:" to";s:3:"147";s:3:" ve";s:3:"148";s:3:"a e";s:3:"149";s:3:"ada";s:3:"150";s:3:"aid";s:3:"151";s:3:"ami";s:3:"152";s:3:"and";s:3:"153";s:3:"dla";s:3:"154";s:3:"e j";s:3:"155";s:3:"ega";s:3:"156";s:3:"gi ";s:3:"157";s:3:"gu ";s:3:"158";s:3:"i p";s:3:"159";s:3:"idl";s:3:"160";s:3:"ik ";s:3:"161";s:3:"ini";s:3:"162";s:3:"jup";s:3:"163";s:3:"kal";s:3:"164";s:3:"kas";s:3:"165";s:3:"kes";s:3:"166";s:3:"koh";s:3:"167";s:3:"s e";s:3:"168";s:3:"s p";s:3:"169";s:3:"sel";s:3:"170";s:3:"sse";s:3:"171";s:3:"ui ";s:3:"172";s:3:" pi";s:3:"173";s:3:" si";s:3:"174";s:3:"aru";s:3:"175";s:3:"eda";s:3:"176";s:3:"eva";s:3:"177";s:3:"fil";s:3:"178";s:3:"i v";s:3:"179";s:3:"ida";s:3:"180";s:3:"ing";s:3:"181";s:5:"lää";s:3:"182";s:3:"me ";s:3:"183";s:3:"na ";s:3:"184";s:3:"nda";s:3:"185";s:3:"nim";s:3:"186";s:3:"ole";s:3:"187";s:3:"ots";s:3:"188";s:3:"ris";s:3:"189";s:3:"s l";s:3:"190";s:3:"sia";s:3:"191";s:3:"t p";s:3:"192";s:3:" en";s:3:"193";s:3:" mu";s:3:"194";s:3:" ol";s:3:"195";s:4:" põ";s:3:"196";s:3:" su";s:3:"197";s:4:" vä";s:3:"198";s:4:" üh";s:3:"199";s:3:"a l";s:3:"200";s:3:"a p";s:3:"201";s:3:"aga";s:3:"202";s:3:"ale";s:3:"203";s:3:"aps";s:3:"204";s:3:"arv";s:3:"205";s:3:"e a";s:3:"206";s:3:"ela";s:3:"207";s:3:"ika";s:3:"208";s:3:"lle";s:3:"209";s:3:"loo";s:3:"210";s:3:"mal";s:3:"211";s:3:"pet";s:3:"212";s:3:"t k";s:3:"213";s:3:"tee";s:3:"214";s:3:"tis";s:3:"215";s:3:"vat";s:3:"216";s:4:"äne";s:3:"217";s:4:"õnn";s:3:"218";s:3:" es";s:3:"219";s:3:" fi";s:3:"220";s:3:" vi";s:3:"221";s:3:"a i";s:3:"222";s:3:"a o";s:3:"223";s:3:"aab";s:3:"224";s:3:"aap";s:3:"225";s:3:"ala";s:3:"226";s:3:"alt";s:3:"227";s:3:"ama";s:3:"228";s:3:"anu";s:3:"229";s:3:"e p";s:3:"230";s:3:"e t";s:3:"231";s:3:"eal";s:3:"232";s:3:"eli";s:3:"233";s:3:"haa";s:3:"234";s:3:"hin";s:3:"235";s:3:"iva";s:3:"236";s:3:"kon";s:3:"237";s:3:"ku ";s:3:"238";s:3:"lik";s:3:"239";s:3:"lm ";s:3:"240";s:3:"min";s:3:"241";s:3:"n t";s:3:"242";s:3:"odu";s:3:"243";s:3:"oon";s:3:"244";s:3:"psa";s:3:"245";s:3:"ri ";s:3:"246";s:3:"si ";s:3:"247";s:3:"stu";s:3:"248";s:3:"t e";s:3:"249";s:3:"t s";s:3:"250";s:3:"ti ";s:3:"251";s:3:"ule";s:3:"252";s:3:"uur";s:3:"253";s:3:"vas";s:3:"254";s:3:"vee";s:3:"255";s:3:" ki";s:3:"256";s:3:" ni";s:3:"257";s:4:" nä";s:3:"258";s:3:" ra";s:3:"259";s:3:"aig";s:3:"260";s:3:"aka";s:3:"261";s:3:"all";s:3:"262";s:3:"atu";s:3:"263";s:3:"e e";s:3:"264";s:3:"eis";s:3:"265";s:3:"ers";s:3:"266";s:3:"i e";s:3:"267";s:3:"ii ";s:3:"268";s:3:"iis";s:3:"269";s:3:"il ";s:3:"270";s:3:"ima";s:3:"271";s:3:"its";s:3:"272";s:3:"kka";s:3:"273";s:3:"kuh";s:3:"274";s:3:"l k";s:3:"275";s:3:"lat";s:3:"276";s:3:"maj";s:3:"277";s:3:"ndu";s:3:"278";s:3:"ni ";s:3:"279";s:3:"nii";s:3:"280";s:3:"oma";s:3:"281";s:3:"ool";s:3:"282";s:3:"rso";s:3:"283";s:3:"ru ";s:3:"284";s:3:"rva";s:3:"285";s:3:"s t";s:3:"286";s:3:"sek";s:3:"287";s:3:"son";s:3:"288";s:3:"ste";s:3:"289";s:3:"t m";s:3:"290";s:3:"taj";s:3:"291";s:3:"tam";s:3:"292";s:3:"ude";s:3:"293";s:3:"uho";s:3:"294";s:3:"vai";s:3:"295";s:3:" ag";s:3:"296";s:3:" os";s:3:"297";s:3:" pa";s:3:"298";s:3:" re";s:3:"299";}s:5:"farsi";a:300:{s:5:"ان ";s:1:"0";s:5:"ای ";s:1:"1";s:5:"ه ا";s:1:"2";s:5:" اي";s:1:"3";s:5:" در";s:1:"4";s:5:"به ";s:1:"5";s:5:" بر";s:1:"6";s:5:"در ";s:1:"7";s:6:"ران";s:1:"8";s:5:" به";s:1:"9";s:5:"ی ا";s:2:"10";s:5:"از ";s:2:"11";s:5:"ين ";s:2:"12";s:5:"می ";s:2:"13";s:5:" از";s:2:"14";s:5:"ده ";s:2:"15";s:5:"ست ";s:2:"16";s:6:"است";s:2:"17";s:5:" اس";s:2:"18";s:5:" که";s:2:"19";s:5:"که ";s:2:"20";s:6:"اير";s:2:"21";s:5:"ند ";s:2:"22";s:6:"اين";s:2:"23";s:5:" ها";s:2:"24";s:6:"يرا";s:2:"25";s:5:"ود ";s:2:"26";s:5:" را";s:2:"27";s:6:"های";s:2:"28";s:5:" خو";s:2:"29";s:5:"ته ";s:2:"30";s:5:"را ";s:2:"31";s:6:"رای";s:2:"32";s:5:"رد ";s:2:"33";s:5:"ن ب";s:2:"34";s:6:"کرد";s:2:"35";s:4:" و ";s:2:"36";s:5:" کر";s:2:"37";s:5:"ات ";s:2:"38";s:6:"برا";s:2:"39";s:5:"د ک";s:2:"40";s:6:"مان";s:2:"41";s:5:"ی د";s:2:"42";s:5:" ان";s:2:"43";s:6:"خوا";s:2:"44";s:6:"شور";s:2:"45";s:5:" با";s:2:"46";s:5:"ن ا";s:2:"47";s:5:" سا";s:2:"48";s:6:"تمی";s:2:"49";s:5:"ری ";s:2:"50";s:6:"اتم";s:2:"51";s:5:"ا ا";s:2:"52";s:6:"واه";s:2:"53";s:5:" ات";s:2:"54";s:5:" عر";s:2:"55";s:5:"اق ";s:2:"56";s:5:"ر م";s:2:"57";s:6:"راق";s:2:"58";s:6:"عرا";s:2:"59";s:5:"ی ب";s:2:"60";s:5:" تا";s:2:"61";s:5:" تو";s:2:"62";s:5:"ار ";s:2:"63";s:5:"ر ا";s:2:"64";s:5:"ن م";s:2:"65";s:5:"ه ب";s:2:"66";s:5:"ور ";s:2:"67";s:5:"يد ";s:2:"68";s:5:"ی ک";s:2:"69";s:5:" ام";s:2:"70";s:5:" دا";s:2:"71";s:5:" کن";s:2:"72";s:6:"اهد";s:2:"73";s:5:"هد ";s:2:"74";s:5:" آن";s:2:"75";s:5:" می";s:2:"76";s:5:" ني";s:2:"77";s:5:" گف";s:2:"78";s:5:"د ا";s:2:"79";s:6:"گفت";s:2:"80";s:5:" کش";s:2:"81";s:5:"ا ب";s:2:"82";s:5:"نی ";s:2:"83";s:5:"ها ";s:2:"84";s:6:"کشو";s:2:"85";s:5:" رو";s:2:"86";s:5:"ت ک";s:2:"87";s:6:"نيو";s:2:"88";s:5:"ه م";s:2:"89";s:5:"وی ";s:2:"90";s:5:"ی ت";s:2:"91";s:5:" شو";s:2:"92";s:5:"ال ";s:2:"93";s:6:"دار";s:2:"94";s:5:"مه ";s:2:"95";s:5:"ن ک";s:2:"96";s:5:"ه د";s:2:"97";s:5:"يه ";s:2:"98";s:5:" ما";s:2:"99";s:6:"امه";s:3:"100";s:5:"د ب";s:3:"101";s:6:"زار";s:3:"102";s:6:"ورا";s:3:"103";s:6:"گزا";s:3:"104";s:5:" پي";s:3:"105";s:5:"آن ";s:3:"106";s:6:"انت";s:3:"107";s:5:"ت ا";s:3:"108";s:5:"فت ";s:3:"109";s:5:"ه ن";s:3:"110";s:5:"ی خ";s:3:"111";s:6:"اما";s:3:"112";s:6:"بات";s:3:"113";s:5:"ما ";s:3:"114";s:6:"ملل";s:3:"115";s:6:"نام";s:3:"116";s:5:"ير ";s:3:"117";s:5:"ی م";s:3:"118";s:5:"ی ه";s:3:"119";s:5:" آم";s:3:"120";s:5:" ای";s:3:"121";s:5:" من";s:3:"122";s:6:"انس";s:3:"123";s:6:"اني";s:3:"124";s:5:"ت د";s:3:"125";s:6:"رده";s:3:"126";s:6:"ساز";s:3:"127";s:5:"ن د";s:3:"128";s:5:"نه ";s:3:"129";s:6:"ورد";s:3:"130";s:5:" او";s:3:"131";s:5:" بي";s:3:"132";s:5:" سو";s:3:"133";s:5:" شد";s:3:"134";s:6:"اده";s:3:"135";s:6:"اند";s:3:"136";s:5:"با ";s:3:"137";s:5:"ت ب";s:3:"138";s:5:"ر ب";s:3:"139";s:5:"ز ا";s:3:"140";s:6:"زما";s:3:"141";s:6:"سته";s:3:"142";s:5:"ن ر";s:3:"143";s:5:"ه س";s:3:"144";s:6:"وان";s:3:"145";s:5:"وز ";s:3:"146";s:5:"ی ر";s:3:"147";s:5:"ی س";s:3:"148";s:5:" هس";s:3:"149";s:6:"ابا";s:3:"150";s:5:"ام ";s:3:"151";s:6:"اور";s:3:"152";s:6:"تخا";s:3:"153";s:6:"خاب";s:3:"154";s:6:"خود";s:3:"155";s:5:"د د";s:3:"156";s:5:"دن ";s:3:"157";s:6:"رها";s:3:"158";s:6:"روز";s:3:"159";s:6:"رگز";s:3:"160";s:6:"نتخ";s:3:"161";s:5:"ه ش";s:3:"162";s:5:"ه ه";s:3:"163";s:6:"هست";s:3:"164";s:5:"يت ";s:3:"165";s:5:"يم ";s:3:"166";s:5:" دو";s:3:"167";s:5:" دي";s:3:"168";s:5:" مو";s:3:"169";s:5:" نو";s:3:"170";s:5:" هم";s:3:"171";s:5:" کا";s:3:"172";s:5:"اد ";s:3:"173";s:6:"اری";s:3:"174";s:6:"انی";s:3:"175";s:5:"بر ";s:3:"176";s:6:"بود";s:3:"177";s:5:"ت ه";s:3:"178";s:5:"ح ه";s:3:"179";s:6:"حال";s:3:"180";s:5:"رش ";s:3:"181";s:5:"عه ";s:3:"182";s:5:"لی ";s:3:"183";s:5:"وم ";s:3:"184";s:6:"ژان";s:3:"185";s:5:" سل";s:3:"186";s:6:"آمر";s:3:"187";s:5:"اح ";s:3:"188";s:6:"توس";s:3:"189";s:6:"داد";s:3:"190";s:6:"دام";s:3:"191";s:5:"ر د";s:3:"192";s:5:"ره ";s:3:"193";s:6:"ريک";s:3:"194";s:5:"زی ";s:3:"195";s:6:"سلا";s:3:"196";s:6:"شود";s:3:"197";s:6:"لاح";s:3:"198";s:6:"مري";s:3:"199";s:6:"نند";s:3:"200";s:5:"ه ع";s:3:"201";s:6:"يما";s:3:"202";s:6:"يکا";s:3:"203";s:6:"پيم";s:3:"204";s:5:"گر ";s:3:"205";s:5:" آژ";s:3:"206";s:5:" ال";s:3:"207";s:5:" بو";s:3:"208";s:5:" مق";s:3:"209";s:5:" مل";s:3:"210";s:5:" وی";s:3:"211";s:6:"آژا";s:3:"212";s:6:"ازم";s:3:"213";s:6:"ازی";s:3:"214";s:6:"بار";s:3:"215";s:6:"برن";s:3:"216";s:5:"ر آ";s:3:"217";s:5:"ز س";s:3:"218";s:6:"سعه";s:3:"219";s:6:"شته";s:3:"220";s:6:"مات";s:3:"221";s:5:"ن آ";s:3:"222";s:5:"ن پ";s:3:"223";s:5:"نس ";s:3:"224";s:5:"ه گ";s:3:"225";s:6:"وسع";s:3:"226";s:6:"يان";s:3:"227";s:6:"يوم";s:3:"228";s:5:"کا ";s:3:"229";s:6:"کام";s:3:"230";s:6:"کند";s:3:"231";s:5:" خا";s:3:"232";s:5:" سر";s:3:"233";s:6:"آور";s:3:"234";s:6:"ارد";s:3:"235";s:6:"اقد";s:3:"236";s:6:"ايم";s:3:"237";s:6:"ايی";s:3:"238";s:6:"برگ";s:3:"239";s:5:"ت ع";s:3:"240";s:5:"تن ";s:3:"241";s:5:"خت ";s:3:"242";s:5:"د و";s:3:"243";s:5:"ر خ";s:3:"244";s:5:"رک ";s:3:"245";s:6:"زير";s:3:"246";s:6:"فته";s:3:"247";s:6:"قدا";s:3:"248";s:5:"ل ت";s:3:"249";s:6:"مين";s:3:"250";s:5:"ن گ";s:3:"251";s:5:"ه آ";s:3:"252";s:5:"ه خ";s:3:"253";s:5:"ه ک";s:3:"254";s:6:"ورک";s:3:"255";s:6:"ويو";s:3:"256";s:6:"يور";s:3:"257";s:6:"يوي";s:3:"258";s:5:"يی ";s:3:"259";s:5:"ک ت";s:3:"260";s:5:"ی ش";s:3:"261";s:5:" اق";s:3:"262";s:5:" حا";s:3:"263";s:5:" حق";s:3:"264";s:5:" دس";s:3:"265";s:5:" شک";s:3:"266";s:5:" عم";s:3:"267";s:5:" يک";s:3:"268";s:5:"ا ت";s:3:"269";s:5:"ا د";s:3:"270";s:6:"ارج";s:3:"271";s:6:"بين";s:3:"272";s:5:"ت م";s:3:"273";s:5:"ت و";s:3:"274";s:6:"تاي";s:3:"275";s:6:"دست";s:3:"276";s:5:"ر ح";s:3:"277";s:5:"ر س";s:3:"278";s:6:"رنا";s:3:"279";s:5:"ز ب";s:3:"280";s:6:"شکا";s:3:"281";s:5:"لل ";s:3:"282";s:5:"م ک";s:3:"283";s:5:"مز ";s:3:"284";s:6:"ندا";s:3:"285";s:6:"نوا";s:3:"286";s:5:"و ا";s:3:"287";s:6:"وره";s:3:"288";s:5:"ون ";s:3:"289";s:6:"وند";s:3:"290";s:6:"يمز";s:3:"291";s:5:" آو";s:3:"292";s:5:" اع";s:3:"293";s:5:" فر";s:3:"294";s:5:" مت";s:3:"295";s:5:" نه";s:3:"296";s:5:" هر";s:3:"297";s:5:" وز";s:3:"298";s:5:" گز";s:3:"299";}s:7:"finnish";a:300:{s:3:"en ";s:1:"0";s:3:"in ";s:1:"1";s:3:"an ";s:1:"2";s:3:"on ";s:1:"3";s:3:"ist";s:1:"4";s:3:"ta ";s:1:"5";s:3:"ja ";s:1:"6";s:3:"n t";s:1:"7";s:3:"sa ";s:1:"8";s:3:"sta";s:1:"9";s:3:"aan";s:2:"10";s:3:"n p";s:2:"11";s:3:" on";s:2:"12";s:3:"ssa";s:2:"13";s:3:"tta";s:2:"14";s:4:"tä ";s:2:"15";s:3:" ka";s:2:"16";s:3:" pa";s:2:"17";s:3:"si ";s:2:"18";s:3:" ja";s:2:"19";s:3:"n k";s:2:"20";s:3:"lla";s:2:"21";s:4:"än ";s:2:"22";s:3:"een";s:2:"23";s:3:"n v";s:2:"24";s:3:"ksi";s:2:"25";s:3:"ett";s:2:"26";s:3:"nen";s:2:"27";s:3:"taa";s:2:"28";s:4:"ttä";s:2:"29";s:3:" va";s:2:"30";s:3:"ill";s:2:"31";s:3:"itt";s:2:"32";s:3:" jo";s:2:"33";s:3:" ko";s:2:"34";s:3:"n s";s:2:"35";s:3:" tu";s:2:"36";s:3:"ia ";s:2:"37";s:3:" su";s:2:"38";s:3:"a p";s:2:"39";s:3:"aa ";s:2:"40";s:3:"la ";s:2:"41";s:3:"lle";s:2:"42";s:3:"n m";s:2:"43";s:3:"le ";s:2:"44";s:3:"tte";s:2:"45";s:3:"na ";s:2:"46";s:3:" ta";s:2:"47";s:3:" ve";s:2:"48";s:3:"at ";s:2:"49";s:3:" vi";s:2:"50";s:3:"utt";s:2:"51";s:3:" sa";s:2:"52";s:3:"ise";s:2:"53";s:3:"sen";s:2:"54";s:3:" ku";s:2:"55";s:4:" nä";s:2:"56";s:4:" pä";s:2:"57";s:3:"ste";s:2:"58";s:3:" ol";s:2:"59";s:3:"a t";s:2:"60";s:3:"ais";s:2:"61";s:3:"maa";s:2:"62";s:3:"ti ";s:2:"63";s:3:"a o";s:2:"64";s:3:"oit";s:2:"65";s:5:"pää";s:2:"66";s:3:" pi";s:2:"67";s:3:"a v";s:2:"68";s:3:"ala";s:2:"69";s:3:"ine";s:2:"70";s:3:"isi";s:2:"71";s:3:"tel";s:2:"72";s:3:"tti";s:2:"73";s:3:" si";s:2:"74";s:3:"a k";s:2:"75";s:3:"all";s:2:"76";s:3:"iin";s:2:"77";s:3:"kin";s:2:"78";s:4:"stä";s:2:"79";s:3:"uom";s:2:"80";s:3:"vii";s:2:"81";s:3:" ma";s:2:"82";s:3:" se";s:2:"83";s:4:"enä";s:2:"84";s:3:" mu";s:2:"85";s:3:"a s";s:2:"86";s:3:"est";s:2:"87";s:3:"iss";s:2:"88";s:4:"llä";s:2:"89";s:3:"lok";s:2:"90";s:4:"lä ";s:2:"91";s:3:"n j";s:2:"92";s:3:"n o";s:2:"93";s:3:"toi";s:2:"94";s:3:"ven";s:2:"95";s:3:"ytt";s:2:"96";s:3:" li";s:2:"97";s:3:"ain";s:2:"98";s:3:"et ";s:2:"99";s:3:"ina";s:3:"100";s:3:"n a";s:3:"101";s:3:"n n";s:3:"102";s:3:"oll";s:3:"103";s:3:"plo";s:3:"104";s:3:"ten";s:3:"105";s:3:"ust";s:3:"106";s:4:"äll";s:3:"107";s:5:"ään";s:3:"108";s:3:" to";s:3:"109";s:3:"den";s:3:"110";s:3:"men";s:3:"111";s:3:"oki";s:3:"112";s:3:"suo";s:3:"113";s:4:"sä ";s:3:"114";s:5:"tää";s:3:"115";s:3:"uks";s:3:"116";s:3:"vat";s:3:"117";s:3:" al";s:3:"118";s:3:" ke";s:3:"119";s:3:" te";s:3:"120";s:3:"a e";s:3:"121";s:3:"lii";s:3:"122";s:3:"tai";s:3:"123";s:3:"tei";s:3:"124";s:4:"äis";s:3:"125";s:5:"ää ";s:3:"126";s:3:" pl";s:3:"127";s:3:"ell";s:3:"128";s:3:"i t";s:3:"129";s:3:"ide";s:3:"130";s:3:"ikk";s:3:"131";s:3:"ki ";s:3:"132";s:3:"nta";s:3:"133";s:3:"ova";s:3:"134";s:3:"yst";s:3:"135";s:3:"yt ";s:3:"136";s:4:"ä p";s:3:"137";s:4:"äyt";s:3:"138";s:3:" ha";s:3:"139";s:3:" pe";s:3:"140";s:4:" tä";s:3:"141";s:3:"a n";s:3:"142";s:3:"aik";s:3:"143";s:3:"i p";s:3:"144";s:3:"i v";s:3:"145";s:3:"nyt";s:3:"146";s:4:"näy";s:3:"147";s:3:"pal";s:3:"148";s:3:"tee";s:3:"149";s:3:"un ";s:3:"150";s:3:" me";s:3:"151";s:3:"a m";s:3:"152";s:3:"ess";s:3:"153";s:3:"kau";s:3:"154";s:3:"pai";s:3:"155";s:3:"stu";s:3:"156";s:3:"ut ";s:3:"157";s:3:"voi";s:3:"158";s:3:" et";s:3:"159";s:3:"a h";s:3:"160";s:3:"eis";s:3:"161";s:3:"hte";s:3:"162";s:3:"i o";s:3:"163";s:3:"iik";s:3:"164";s:3:"ita";s:3:"165";s:3:"jou";s:3:"166";s:3:"mis";s:3:"167";s:3:"nin";s:3:"168";s:3:"nut";s:3:"169";s:3:"sia";s:3:"170";s:4:"ssä";s:3:"171";s:3:"van";s:3:"172";s:3:" ty";s:3:"173";s:3:" yh";s:3:"174";s:3:"aks";s:3:"175";s:3:"ime";s:3:"176";s:3:"loi";s:3:"177";s:3:"me ";s:3:"178";s:3:"n e";s:3:"179";s:3:"n h";s:3:"180";s:3:"n l";s:3:"181";s:3:"oin";s:3:"182";s:3:"ome";s:3:"183";s:3:"ott";s:3:"184";s:3:"ouk";s:3:"185";s:3:"sit";s:3:"186";s:3:"sti";s:3:"187";s:3:"tet";s:3:"188";s:3:"tie";s:3:"189";s:3:"ukk";s:3:"190";s:4:"ä k";s:3:"191";s:3:" ra";s:3:"192";s:3:" ti";s:3:"193";s:3:"aja";s:3:"194";s:3:"asi";s:3:"195";s:3:"ent";s:3:"196";s:3:"iga";s:3:"197";s:3:"iig";s:3:"198";s:3:"ite";s:3:"199";s:3:"jan";s:3:"200";s:3:"kaa";s:3:"201";s:3:"kse";s:3:"202";s:3:"laa";s:3:"203";s:3:"lan";s:3:"204";s:3:"li ";s:3:"205";s:4:"näj";s:3:"206";s:3:"ole";s:3:"207";s:3:"tii";s:3:"208";s:3:"usi";s:3:"209";s:5:"äjä";s:3:"210";s:3:" ov";s:3:"211";s:3:"a a";s:3:"212";s:3:"ant";s:3:"213";s:3:"ava";s:3:"214";s:3:"ei ";s:3:"215";s:3:"eri";s:3:"216";s:3:"kan";s:3:"217";s:3:"kku";s:3:"218";s:3:"lai";s:3:"219";s:3:"lis";s:3:"220";s:4:"läi";s:3:"221";s:3:"mat";s:3:"222";s:3:"ois";s:3:"223";s:3:"pel";s:3:"224";s:3:"sil";s:3:"225";s:3:"sty";s:3:"226";s:3:"taj";s:3:"227";s:3:"tav";s:3:"228";s:3:"ttu";s:3:"229";s:4:"työ";s:3:"230";s:4:"yös";s:3:"231";s:4:"ä o";s:3:"232";s:3:" ai";s:3:"233";s:3:" pu";s:3:"234";s:3:"a j";s:3:"235";s:3:"a l";s:3:"236";s:3:"aal";s:3:"237";s:3:"arv";s:3:"238";s:3:"ass";s:3:"239";s:3:"ien";s:3:"240";s:3:"imi";s:3:"241";s:3:"imm";s:3:"242";s:4:"itä";s:3:"243";s:3:"ka ";s:3:"244";s:3:"kes";s:3:"245";s:3:"kue";s:3:"246";s:3:"lee";s:3:"247";s:3:"lin";s:3:"248";s:3:"llo";s:3:"249";s:3:"one";s:3:"250";s:3:"ri ";s:3:"251";s:3:"t o";s:3:"252";s:3:"t p";s:3:"253";s:3:"tu ";s:3:"254";s:3:"val";s:3:"255";s:3:"vuo";s:3:"256";s:3:" ei";s:3:"257";s:3:" he";s:3:"258";s:3:" hy";s:3:"259";s:3:" my";s:3:"260";s:3:" vo";s:3:"261";s:3:"ali";s:3:"262";s:3:"alo";s:3:"263";s:3:"ano";s:3:"264";s:3:"ast";s:3:"265";s:3:"att";s:3:"266";s:3:"auk";s:3:"267";s:3:"eli";s:3:"268";s:3:"ely";s:3:"269";s:3:"hti";s:3:"270";s:3:"ika";s:3:"271";s:3:"ken";s:3:"272";s:3:"kki";s:3:"273";s:3:"lys";s:3:"274";s:3:"min";s:3:"275";s:4:"myö";s:3:"276";s:3:"oht";s:3:"277";s:3:"oma";s:3:"278";s:3:"tus";s:3:"279";s:3:"umi";s:3:"280";s:3:"yks";s:3:"281";s:4:"ät ";s:3:"282";s:5:"ääl";s:3:"283";s:4:"ös ";s:3:"284";s:3:" ar";s:3:"285";s:3:" eu";s:3:"286";s:3:" hu";s:3:"287";s:3:" na";s:3:"288";s:3:"aat";s:3:"289";s:3:"alk";s:3:"290";s:3:"alu";s:3:"291";s:3:"ans";s:3:"292";s:3:"arj";s:3:"293";s:3:"enn";s:3:"294";s:3:"han";s:3:"295";s:3:"kuu";s:3:"296";s:3:"n y";s:3:"297";s:3:"set";s:3:"298";s:3:"sim";s:3:"299";}s:6:"french";a:300:{s:3:"es ";s:1:"0";s:3:" de";s:1:"1";s:3:"de ";s:1:"2";s:3:" le";s:1:"3";s:3:"ent";s:1:"4";s:3:"le ";s:1:"5";s:3:"nt ";s:1:"6";s:3:"la ";s:1:"7";s:3:"s d";s:1:"8";s:3:" la";s:1:"9";s:3:"ion";s:2:"10";s:3:"on ";s:2:"11";s:3:"re ";s:2:"12";s:3:" pa";s:2:"13";s:3:"e l";s:2:"14";s:3:"e d";s:2:"15";s:3:" l'";s:2:"16";s:3:"e p";s:2:"17";s:3:" co";s:2:"18";s:3:" pr";s:2:"19";s:3:"tio";s:2:"20";s:3:"ns ";s:2:"21";s:3:" en";s:2:"22";s:3:"ne ";s:2:"23";s:3:"que";s:2:"24";s:3:"r l";s:2:"25";s:3:"les";s:2:"26";s:3:"ur ";s:2:"27";s:3:"en ";s:2:"28";s:3:"ati";s:2:"29";s:3:"ue ";s:2:"30";s:3:" po";s:2:"31";s:3:" d'";s:2:"32";s:3:"par";s:2:"33";s:3:" a ";s:2:"34";s:3:"et ";s:2:"35";s:3:"it ";s:2:"36";s:3:" qu";s:2:"37";s:3:"men";s:2:"38";s:3:"ons";s:2:"39";s:3:"te ";s:2:"40";s:3:" et";s:2:"41";s:3:"t d";s:2:"42";s:3:" re";s:2:"43";s:3:"des";s:2:"44";s:3:" un";s:2:"45";s:3:"ie ";s:2:"46";s:3:"s l";s:2:"47";s:3:" su";s:2:"48";s:3:"pou";s:2:"49";s:3:" au";s:2:"50";s:4:" à ";s:2:"51";s:3:"con";s:2:"52";s:3:"er ";s:2:"53";s:3:" no";s:2:"54";s:3:"ait";s:2:"55";s:3:"e c";s:2:"56";s:3:"se ";s:2:"57";s:4:"té ";s:2:"58";s:3:"du ";s:2:"59";s:3:" du";s:2:"60";s:4:" dé";s:2:"61";s:3:"ce ";s:2:"62";s:3:"e e";s:2:"63";s:3:"is ";s:2:"64";s:3:"n d";s:2:"65";s:3:"s a";s:2:"66";s:3:" so";s:2:"67";s:3:"e r";s:2:"68";s:3:"e s";s:2:"69";s:3:"our";s:2:"70";s:3:"res";s:2:"71";s:3:"ssi";s:2:"72";s:3:"eur";s:2:"73";s:3:" se";s:2:"74";s:3:"eme";s:2:"75";s:3:"est";s:2:"76";s:3:"us ";s:2:"77";s:3:"sur";s:2:"78";s:3:"ant";s:2:"79";s:3:"iqu";s:2:"80";s:3:"s p";s:2:"81";s:3:"une";s:2:"82";s:3:"uss";s:2:"83";s:3:"l'a";s:2:"84";s:3:"pro";s:2:"85";s:3:"ter";s:2:"86";s:3:"tre";s:2:"87";s:3:"end";s:2:"88";s:3:"rs ";s:2:"89";s:3:" ce";s:2:"90";s:3:"e a";s:2:"91";s:3:"t p";s:2:"92";s:3:"un ";s:2:"93";s:3:" ma";s:2:"94";s:3:" ru";s:2:"95";s:4:" ré";s:2:"96";s:3:"ous";s:2:"97";s:3:"ris";s:2:"98";s:3:"rus";s:2:"99";s:3:"sse";s:3:"100";s:3:"ans";s:3:"101";s:3:"ar ";s:3:"102";s:3:"com";s:3:"103";s:3:"e m";s:3:"104";s:3:"ire";s:3:"105";s:3:"nce";s:3:"106";s:3:"nte";s:3:"107";s:3:"t l";s:3:"108";s:3:" av";s:3:"109";s:3:" mo";s:3:"110";s:3:" te";s:3:"111";s:3:"il ";s:3:"112";s:3:"me ";s:3:"113";s:3:"ont";s:3:"114";s:3:"ten";s:3:"115";s:3:"a p";s:3:"116";s:3:"dan";s:3:"117";s:3:"pas";s:3:"118";s:3:"qui";s:3:"119";s:3:"s e";s:3:"120";s:3:"s s";s:3:"121";s:3:" in";s:3:"122";s:3:"ist";s:3:"123";s:3:"lle";s:3:"124";s:3:"nou";s:3:"125";s:4:"pré";s:3:"126";s:3:"'un";s:3:"127";s:3:"air";s:3:"128";s:3:"d'a";s:3:"129";s:3:"ir ";s:3:"130";s:3:"n e";s:3:"131";s:3:"rop";s:3:"132";s:3:"ts ";s:3:"133";s:3:" da";s:3:"134";s:3:"a s";s:3:"135";s:3:"as ";s:3:"136";s:3:"au ";s:3:"137";s:3:"den";s:3:"138";s:3:"mai";s:3:"139";s:3:"mis";s:3:"140";s:3:"ori";s:3:"141";s:3:"out";s:3:"142";s:3:"rme";s:3:"143";s:3:"sio";s:3:"144";s:3:"tte";s:3:"145";s:3:"ux ";s:3:"146";s:3:"a d";s:3:"147";s:3:"ien";s:3:"148";s:3:"n a";s:3:"149";s:3:"ntr";s:3:"150";s:3:"omm";s:3:"151";s:3:"ort";s:3:"152";s:3:"ouv";s:3:"153";s:3:"s c";s:3:"154";s:3:"son";s:3:"155";s:3:"tes";s:3:"156";s:3:"ver";s:3:"157";s:4:"ère";s:3:"158";s:3:" il";s:3:"159";s:3:" m ";s:3:"160";s:3:" sa";s:3:"161";s:3:" ve";s:3:"162";s:3:"a r";s:3:"163";s:3:"ais";s:3:"164";s:3:"ava";s:3:"165";s:3:"di ";s:3:"166";s:3:"n p";s:3:"167";s:3:"sti";s:3:"168";s:3:"ven";s:3:"169";s:3:" mi";s:3:"170";s:3:"ain";s:3:"171";s:3:"enc";s:3:"172";s:3:"for";s:3:"173";s:4:"ité";s:3:"174";s:3:"lar";s:3:"175";s:3:"oir";s:3:"176";s:3:"rem";s:3:"177";s:3:"ren";s:3:"178";s:3:"rro";s:3:"179";s:4:"rés";s:3:"180";s:3:"sie";s:3:"181";s:3:"t a";s:3:"182";s:3:"tur";s:3:"183";s:3:" pe";s:3:"184";s:3:" to";s:3:"185";s:3:"d'u";s:3:"186";s:3:"ell";s:3:"187";s:3:"err";s:3:"188";s:3:"ers";s:3:"189";s:3:"ide";s:3:"190";s:3:"ine";s:3:"191";s:3:"iss";s:3:"192";s:3:"mes";s:3:"193";s:3:"por";s:3:"194";s:3:"ran";s:3:"195";s:3:"sit";s:3:"196";s:3:"st ";s:3:"197";s:3:"t r";s:3:"198";s:3:"uti";s:3:"199";s:3:"vai";s:3:"200";s:4:"é l";s:3:"201";s:4:"ési";s:3:"202";s:3:" di";s:3:"203";s:3:" n'";s:3:"204";s:4:" ét";s:3:"205";s:3:"a c";s:3:"206";s:3:"ass";s:3:"207";s:3:"e t";s:3:"208";s:3:"in ";s:3:"209";s:3:"nde";s:3:"210";s:3:"pre";s:3:"211";s:3:"rat";s:3:"212";s:3:"s m";s:3:"213";s:3:"ste";s:3:"214";s:3:"tai";s:3:"215";s:3:"tch";s:3:"216";s:3:"ui ";s:3:"217";s:3:"uro";s:3:"218";s:4:"ès ";s:3:"219";s:3:" es";s:3:"220";s:3:" fo";s:3:"221";s:3:" tr";s:3:"222";s:3:"'ad";s:3:"223";s:3:"app";s:3:"224";s:3:"aux";s:3:"225";s:4:"e à";s:3:"226";s:3:"ett";s:3:"227";s:3:"iti";s:3:"228";s:3:"lit";s:3:"229";s:3:"nal";s:3:"230";s:4:"opé";s:3:"231";s:3:"r d";s:3:"232";s:3:"ra ";s:3:"233";s:3:"rai";s:3:"234";s:3:"ror";s:3:"235";s:3:"s r";s:3:"236";s:3:"tat";s:3:"237";s:4:"uté";s:3:"238";s:4:"à l";s:3:"239";s:3:" af";s:3:"240";s:3:"anc";s:3:"241";s:3:"ara";s:3:"242";s:3:"art";s:3:"243";s:3:"bre";s:3:"244";s:4:"ché";s:3:"245";s:3:"dre";s:3:"246";s:3:"e f";s:3:"247";s:3:"ens";s:3:"248";s:3:"lem";s:3:"249";s:3:"n r";s:3:"250";s:3:"n t";s:3:"251";s:3:"ndr";s:3:"252";s:3:"nne";s:3:"253";s:3:"onn";s:3:"254";s:3:"pos";s:3:"255";s:3:"s t";s:3:"256";s:3:"tiq";s:3:"257";s:3:"ure";s:3:"258";s:3:" tu";s:3:"259";s:3:"ale";s:3:"260";s:3:"and";s:3:"261";s:3:"ave";s:3:"262";s:3:"cla";s:3:"263";s:3:"cou";s:3:"264";s:3:"e n";s:3:"265";s:3:"emb";s:3:"266";s:3:"ins";s:3:"267";s:3:"jou";s:3:"268";s:3:"mme";s:3:"269";s:3:"rie";s:3:"270";s:4:"rès";s:3:"271";s:3:"sem";s:3:"272";s:3:"str";s:3:"273";s:3:"t i";s:3:"274";s:3:"ues";s:3:"275";s:3:"uni";s:3:"276";s:3:"uve";s:3:"277";s:4:"é d";s:3:"278";s:4:"ée ";s:3:"279";s:3:" ch";s:3:"280";s:3:" do";s:3:"281";s:3:" eu";s:3:"282";s:3:" fa";s:3:"283";s:3:" lo";s:3:"284";s:3:" ne";s:3:"285";s:3:" ra";s:3:"286";s:3:"arl";s:3:"287";s:3:"att";s:3:"288";s:3:"ec ";s:3:"289";s:3:"ica";s:3:"290";s:3:"l a";s:3:"291";s:3:"l'o";s:3:"292";s:4:"l'é";s:3:"293";s:3:"mmi";s:3:"294";s:3:"nta";s:3:"295";s:3:"orm";s:3:"296";s:3:"ou ";s:3:"297";s:3:"r u";s:3:"298";s:3:"rle";s:3:"299";}s:6:"german";a:300:{s:3:"en ";s:1:"0";s:3:"er ";s:1:"1";s:3:" de";s:1:"2";s:3:"der";s:1:"3";s:3:"ie ";s:1:"4";s:3:" di";s:1:"5";s:3:"die";s:1:"6";s:3:"sch";s:1:"7";s:3:"ein";s:1:"8";s:3:"che";s:1:"9";s:3:"ich";s:2:"10";s:3:"den";s:2:"11";s:3:"in ";s:2:"12";s:3:"te ";s:2:"13";s:3:"ch ";s:2:"14";s:3:" ei";s:2:"15";s:3:"ung";s:2:"16";s:3:"n d";s:2:"17";s:3:"nd ";s:2:"18";s:3:" be";s:2:"19";s:3:"ver";s:2:"20";s:3:"es ";s:2:"21";s:3:" zu";s:2:"22";s:3:"eit";s:2:"23";s:3:"gen";s:2:"24";s:3:"und";s:2:"25";s:3:" un";s:2:"26";s:3:" au";s:2:"27";s:3:" in";s:2:"28";s:3:"cht";s:2:"29";s:3:"it ";s:2:"30";s:3:"ten";s:2:"31";s:3:" da";s:2:"32";s:3:"ent";s:2:"33";s:3:" ve";s:2:"34";s:3:"and";s:2:"35";s:3:" ge";s:2:"36";s:3:"ine";s:2:"37";s:3:" mi";s:2:"38";s:3:"r d";s:2:"39";s:3:"hen";s:2:"40";s:3:"ng ";s:2:"41";s:3:"nde";s:2:"42";s:3:" vo";s:2:"43";s:3:"e d";s:2:"44";s:3:"ber";s:2:"45";s:3:"men";s:2:"46";s:3:"ei ";s:2:"47";s:3:"mit";s:2:"48";s:3:" st";s:2:"49";s:3:"ter";s:2:"50";s:3:"ren";s:2:"51";s:3:"t d";s:2:"52";s:3:" er";s:2:"53";s:3:"ere";s:2:"54";s:3:"n s";s:2:"55";s:3:"ste";s:2:"56";s:3:" se";s:2:"57";s:3:"e s";s:2:"58";s:3:"ht ";s:2:"59";s:3:"des";s:2:"60";s:3:"ist";s:2:"61";s:3:"ne ";s:2:"62";s:3:"auf";s:2:"63";s:3:"e a";s:2:"64";s:3:"isc";s:2:"65";s:3:"on ";s:2:"66";s:3:"rte";s:2:"67";s:3:" re";s:2:"68";s:3:" we";s:2:"69";s:3:"ges";s:2:"70";s:3:"uch";s:2:"71";s:4:" fü";s:2:"72";s:3:" so";s:2:"73";s:3:"bei";s:2:"74";s:3:"e e";s:2:"75";s:3:"nen";s:2:"76";s:3:"r s";s:2:"77";s:3:"ach";s:2:"78";s:4:"für";s:2:"79";s:3:"ier";s:2:"80";s:3:"par";s:2:"81";s:4:"ür ";s:2:"82";s:3:" ha";s:2:"83";s:3:"as ";s:2:"84";s:3:"ert";s:2:"85";s:3:" an";s:2:"86";s:3:" pa";s:2:"87";s:3:" sa";s:2:"88";s:3:" sp";s:2:"89";s:3:" wi";s:2:"90";s:3:"for";s:2:"91";s:3:"tag";s:2:"92";s:3:"zu ";s:2:"93";s:3:"das";s:2:"94";s:3:"rei";s:2:"95";s:3:"he ";s:2:"96";s:3:"hre";s:2:"97";s:3:"nte";s:2:"98";s:3:"sen";s:2:"99";s:3:"vor";s:3:"100";s:3:" sc";s:3:"101";s:3:"ech";s:3:"102";s:3:"etz";s:3:"103";s:3:"hei";s:3:"104";s:3:"lan";s:3:"105";s:3:"n a";s:3:"106";s:3:"pd ";s:3:"107";s:3:"st ";s:3:"108";s:3:"sta";s:3:"109";s:3:"ese";s:3:"110";s:3:"lic";s:3:"111";s:3:" ab";s:3:"112";s:3:" si";s:3:"113";s:3:"gte";s:3:"114";s:3:" wa";s:3:"115";s:3:"iti";s:3:"116";s:3:"kei";s:3:"117";s:3:"n e";s:3:"118";s:3:"nge";s:3:"119";s:3:"sei";s:3:"120";s:3:"tra";s:3:"121";s:3:"zen";s:3:"122";s:3:" im";s:3:"123";s:3:" la";s:3:"124";s:3:"art";s:3:"125";s:3:"im ";s:3:"126";s:3:"lle";s:3:"127";s:3:"n w";s:3:"128";s:3:"rde";s:3:"129";s:3:"rec";s:3:"130";s:3:"set";s:3:"131";s:3:"str";s:3:"132";s:3:"tei";s:3:"133";s:3:"tte";s:3:"134";s:3:" ni";s:3:"135";s:3:"e p";s:3:"136";s:3:"ehe";s:3:"137";s:3:"ers";s:3:"138";s:3:"g d";s:3:"139";s:3:"nic";s:3:"140";s:3:"von";s:3:"141";s:3:" al";s:3:"142";s:3:" pr";s:3:"143";s:3:"an ";s:3:"144";s:3:"aus";s:3:"145";s:3:"erf";s:3:"146";s:3:"r e";s:3:"147";s:3:"tze";s:3:"148";s:4:"tür";s:3:"149";s:3:"uf ";s:3:"150";s:3:"ag ";s:3:"151";s:3:"als";s:3:"152";s:3:"ar ";s:3:"153";s:3:"chs";s:3:"154";s:3:"end";s:3:"155";s:3:"ge ";s:3:"156";s:3:"ige";s:3:"157";s:3:"ion";s:3:"158";s:3:"ls ";s:3:"159";s:3:"n m";s:3:"160";s:3:"ngs";s:3:"161";s:3:"nis";s:3:"162";s:3:"nt ";s:3:"163";s:3:"ord";s:3:"164";s:3:"s s";s:3:"165";s:3:"sse";s:3:"166";s:4:" tü";s:3:"167";s:3:"ahl";s:3:"168";s:3:"e b";s:3:"169";s:3:"ede";s:3:"170";s:3:"em ";s:3:"171";s:3:"len";s:3:"172";s:3:"n i";s:3:"173";s:3:"orm";s:3:"174";s:3:"pro";s:3:"175";s:3:"rke";s:3:"176";s:3:"run";s:3:"177";s:3:"s d";s:3:"178";s:3:"wah";s:3:"179";s:3:"wer";s:3:"180";s:4:"ürk";s:3:"181";s:3:" me";s:3:"182";s:3:"age";s:3:"183";s:3:"att";s:3:"184";s:3:"ell";s:3:"185";s:3:"est";s:3:"186";s:3:"hat";s:3:"187";s:3:"n b";s:3:"188";s:3:"oll";s:3:"189";s:3:"raf";s:3:"190";s:3:"s a";s:3:"191";s:3:"tsc";s:3:"192";s:3:" es";s:3:"193";s:3:" fo";s:3:"194";s:3:" gr";s:3:"195";s:3:" ja";s:3:"196";s:3:"abe";s:3:"197";s:3:"auc";s:3:"198";s:3:"ben";s:3:"199";s:3:"e n";s:3:"200";s:3:"ege";s:3:"201";s:3:"lie";s:3:"202";s:3:"n u";s:3:"203";s:3:"r v";s:3:"204";s:3:"re ";s:3:"205";s:3:"rit";s:3:"206";s:3:"sag";s:3:"207";s:3:" am";s:3:"208";s:3:"agt";s:3:"209";s:3:"ahr";s:3:"210";s:3:"bra";s:3:"211";s:3:"de ";s:3:"212";s:3:"erd";s:3:"213";s:3:"her";s:3:"214";s:3:"ite";s:3:"215";s:3:"le ";s:3:"216";s:3:"n p";s:3:"217";s:3:"n v";s:3:"218";s:3:"or ";s:3:"219";s:3:"rbe";s:3:"220";s:3:"rt ";s:3:"221";s:3:"sic";s:3:"222";s:3:"wie";s:3:"223";s:4:"übe";s:3:"224";s:3:" is";s:3:"225";s:4:" üb";s:3:"226";s:3:"cha";s:3:"227";s:3:"chi";s:3:"228";s:3:"e f";s:3:"229";s:3:"e m";s:3:"230";s:3:"eri";s:3:"231";s:3:"ied";s:3:"232";s:3:"mme";s:3:"233";s:3:"ner";s:3:"234";s:3:"r a";s:3:"235";s:3:"sti";s:3:"236";s:3:"t a";s:3:"237";s:3:"t s";s:3:"238";s:3:"tis";s:3:"239";s:3:" ko";s:3:"240";s:3:"arb";s:3:"241";s:3:"ds ";s:3:"242";s:3:"gan";s:3:"243";s:3:"n z";s:3:"244";s:3:"r f";s:3:"245";s:3:"r w";s:3:"246";s:3:"ran";s:3:"247";s:3:"se ";s:3:"248";s:3:"t i";s:3:"249";s:3:"wei";s:3:"250";s:3:"wir";s:3:"251";s:3:" br";s:3:"252";s:3:" np";s:3:"253";s:3:"am ";s:3:"254";s:3:"bes";s:3:"255";s:3:"d d";s:3:"256";s:3:"deu";s:3:"257";s:3:"e g";s:3:"258";s:3:"e k";s:3:"259";s:3:"efo";s:3:"260";s:3:"et ";s:3:"261";s:3:"eut";s:3:"262";s:3:"fen";s:3:"263";s:3:"hse";s:3:"264";s:3:"lte";s:3:"265";s:3:"n r";s:3:"266";s:3:"npd";s:3:"267";s:3:"r b";s:3:"268";s:3:"rhe";s:3:"269";s:3:"t w";s:3:"270";s:3:"tz ";s:3:"271";s:3:" fr";s:3:"272";s:3:" ih";s:3:"273";s:3:" ke";s:3:"274";s:3:" ma";s:3:"275";s:3:"ame";s:3:"276";s:3:"ang";s:3:"277";s:3:"d s";s:3:"278";s:3:"eil";s:3:"279";s:3:"el ";s:3:"280";s:3:"era";s:3:"281";s:3:"erh";s:3:"282";s:3:"h d";s:3:"283";s:3:"i d";s:3:"284";s:3:"kan";s:3:"285";s:3:"n f";s:3:"286";s:3:"n l";s:3:"287";s:3:"nts";s:3:"288";s:3:"och";s:3:"289";s:3:"rag";s:3:"290";s:3:"rd ";s:3:"291";s:3:"spd";s:3:"292";s:3:"spr";s:3:"293";s:3:"tio";s:3:"294";s:3:" ar";s:3:"295";s:3:" en";s:3:"296";s:3:" ka";s:3:"297";s:3:"ark";s:3:"298";s:3:"ass";s:3:"299";}s:5:"hausa";a:300:{s:3:" da";s:1:"0";s:3:"da ";s:1:"1";s:3:"in ";s:1:"2";s:3:"an ";s:1:"3";s:3:"ya ";s:1:"4";s:3:" wa";s:1:"5";s:3:" ya";s:1:"6";s:3:"na ";s:1:"7";s:3:"ar ";s:1:"8";s:3:"a d";s:1:"9";s:3:" ma";s:2:"10";s:3:"wa ";s:2:"11";s:3:"a a";s:2:"12";s:3:"a k";s:2:"13";s:3:"a s";s:2:"14";s:3:" ta";s:2:"15";s:3:"wan";s:2:"16";s:3:" a ";s:2:"17";s:3:" ba";s:2:"18";s:3:" ka";s:2:"19";s:3:"ta ";s:2:"20";s:3:"a y";s:2:"21";s:3:"n d";s:2:"22";s:3:" ha";s:2:"23";s:3:" na";s:2:"24";s:3:" su";s:2:"25";s:3:" sa";s:2:"26";s:3:"kin";s:2:"27";s:3:"sa ";s:2:"28";s:3:"ata";s:2:"29";s:3:" ko";s:2:"30";s:3:"a t";s:2:"31";s:3:"su ";s:2:"32";s:3:" ga";s:2:"33";s:3:"ai ";s:2:"34";s:3:" sh";s:2:"35";s:3:"a m";s:2:"36";s:3:"uwa";s:2:"37";s:3:"iya";s:2:"38";s:3:"ma ";s:2:"39";s:3:"a w";s:2:"40";s:3:"asa";s:2:"41";s:3:"yan";s:2:"42";s:3:"ka ";s:2:"43";s:3:"ani";s:2:"44";s:3:"shi";s:2:"45";s:3:"a b";s:2:"46";s:3:"a h";s:2:"47";s:3:"a c";s:2:"48";s:3:"ama";s:2:"49";s:3:"ba ";s:2:"50";s:3:"nan";s:2:"51";s:3:"n a";s:2:"52";s:3:" mu";s:2:"53";s:3:"ana";s:2:"54";s:3:" yi";s:2:"55";s:3:"a g";s:2:"56";s:3:" za";s:2:"57";s:3:"i d";s:2:"58";s:3:" ku";s:2:"59";s:3:"aka";s:2:"60";s:3:"yi ";s:2:"61";s:3:"n k";s:2:"62";s:3:"ann";s:2:"63";s:3:"ke ";s:2:"64";s:3:"tar";s:2:"65";s:3:" ci";s:2:"66";s:3:"iki";s:2:"67";s:3:"n s";s:2:"68";s:3:"ko ";s:2:"69";s:3:" ra";s:2:"70";s:3:"ki ";s:2:"71";s:3:"ne ";s:2:"72";s:3:"a z";s:2:"73";s:3:"mat";s:2:"74";s:3:"hak";s:2:"75";s:3:"nin";s:2:"76";s:3:"e d";s:2:"77";s:3:"nna";s:2:"78";s:3:"uma";s:2:"79";s:3:"nda";s:2:"80";s:3:"a n";s:2:"81";s:3:"ada";s:2:"82";s:3:"cik";s:2:"83";s:3:"ni ";s:2:"84";s:3:"rin";s:2:"85";s:3:"una";s:2:"86";s:3:"ara";s:2:"87";s:3:"kum";s:2:"88";s:3:"akk";s:2:"89";s:3:" ce";s:2:"90";s:3:" du";s:2:"91";s:3:"man";s:2:"92";s:3:"n y";s:2:"93";s:3:"nci";s:2:"94";s:3:"sar";s:2:"95";s:3:"aki";s:2:"96";s:3:"awa";s:2:"97";s:3:"ci ";s:2:"98";s:3:"kan";s:2:"99";s:3:"kar";s:3:"100";s:3:"ari";s:3:"101";s:3:"n m";s:3:"102";s:3:"and";s:3:"103";s:3:"hi ";s:3:"104";s:3:"n t";s:3:"105";s:3:"ga ";s:3:"106";s:3:"owa";s:3:"107";s:3:"ash";s:3:"108";s:3:"kam";s:3:"109";s:3:"dan";s:3:"110";s:3:"ewa";s:3:"111";s:3:"nsa";s:3:"112";s:3:"ali";s:3:"113";s:3:"ami";s:3:"114";s:3:" ab";s:3:"115";s:3:" do";s:3:"116";s:3:"anc";s:3:"117";s:3:"n r";s:3:"118";s:3:"aya";s:3:"119";s:3:"i n";s:3:"120";s:3:"sun";s:3:"121";s:3:"uka";s:3:"122";s:3:" al";s:3:"123";s:3:" ne";s:3:"124";s:3:"a'a";s:3:"125";s:3:"cew";s:3:"126";s:3:"cin";s:3:"127";s:3:"mas";s:3:"128";s:3:"tak";s:3:"129";s:3:"un ";s:3:"130";s:3:"aba";s:3:"131";s:3:"kow";s:3:"132";s:3:"a r";s:3:"133";s:3:"ra ";s:3:"134";s:3:" ja";s:3:"135";s:4:" ƙa";s:3:"136";s:3:"en ";s:3:"137";s:3:"r d";s:3:"138";s:3:"sam";s:3:"139";s:3:"tsa";s:3:"140";s:3:" ru";s:3:"141";s:3:"ce ";s:3:"142";s:3:"i a";s:3:"143";s:3:"abi";s:3:"144";s:3:"ida";s:3:"145";s:3:"mut";s:3:"146";s:3:"n g";s:3:"147";s:3:"n j";s:3:"148";s:3:"san";s:3:"149";s:4:"a ƙ";s:3:"150";s:3:"har";s:3:"151";s:3:"on ";s:3:"152";s:3:"i m";s:3:"153";s:3:"suk";s:3:"154";s:3:" ak";s:3:"155";s:3:" ji";s:3:"156";s:3:"yar";s:3:"157";s:3:"'ya";s:3:"158";s:3:"kwa";s:3:"159";s:3:"min";s:3:"160";s:3:" 'y";s:3:"161";s:3:"ane";s:3:"162";s:3:"ban";s:3:"163";s:3:"ins";s:3:"164";s:3:"ruw";s:3:"165";s:3:"i k";s:3:"166";s:3:"n h";s:3:"167";s:3:" ad";s:3:"168";s:3:"ake";s:3:"169";s:3:"n w";s:3:"170";s:3:"sha";s:3:"171";s:3:"utu";s:3:"172";s:4:" ƴa";s:3:"173";s:3:"bay";s:3:"174";s:3:"tan";s:3:"175";s:4:"ƴan";s:3:"176";s:3:"bin";s:3:"177";s:3:"duk";s:3:"178";s:3:"e m";s:3:"179";s:3:"n n";s:3:"180";s:3:"oka";s:3:"181";s:3:"yin";s:3:"182";s:4:"ɗan";s:3:"183";s:3:" fa";s:3:"184";s:3:"a i";s:3:"185";s:3:"kki";s:3:"186";s:3:"re ";s:3:"187";s:3:"za ";s:3:"188";s:3:"ala";s:3:"189";s:3:"asu";s:3:"190";s:3:"han";s:3:"191";s:3:"i y";s:3:"192";s:3:"mar";s:3:"193";s:3:"ran";s:3:"194";s:4:"ƙas";s:3:"195";s:3:"add";s:3:"196";s:3:"ars";s:3:"197";s:3:"gab";s:3:"198";s:3:"ira";s:3:"199";s:3:"mma";s:3:"200";s:3:"u d";s:3:"201";s:3:" ts";s:3:"202";s:3:"abb";s:3:"203";s:3:"abu";s:3:"204";s:3:"aga";s:3:"205";s:3:"gar";s:3:"206";s:3:"n b";s:3:"207";s:4:" ɗa";s:3:"208";s:3:"aci";s:3:"209";s:3:"aik";s:3:"210";s:3:"am ";s:3:"211";s:3:"dun";s:3:"212";s:3:"e s";s:3:"213";s:3:"i b";s:3:"214";s:3:"i w";s:3:"215";s:3:"kas";s:3:"216";s:3:"kok";s:3:"217";s:3:"wam";s:3:"218";s:3:" am";s:3:"219";s:3:"amf";s:3:"220";s:3:"bba";s:3:"221";s:3:"din";s:3:"222";s:3:"fan";s:3:"223";s:3:"gwa";s:3:"224";s:3:"i s";s:3:"225";s:3:"wat";s:3:"226";s:3:"ano";s:3:"227";s:3:"are";s:3:"228";s:3:"dai";s:3:"229";s:3:"iri";s:3:"230";s:3:"ma'";s:3:"231";s:3:" la";s:3:"232";s:3:"all";s:3:"233";s:3:"dam";s:3:"234";s:3:"ika";s:3:"235";s:3:"mi ";s:3:"236";s:3:"she";s:3:"237";s:3:"tum";s:3:"238";s:3:"uni";s:3:"239";s:3:" an";s:3:"240";s:3:" ai";s:3:"241";s:3:" ke";s:3:"242";s:3:" ki";s:3:"243";s:3:"dag";s:3:"244";s:3:"mai";s:3:"245";s:3:"mfa";s:3:"246";s:3:"no ";s:3:"247";s:3:"nsu";s:3:"248";s:3:"o d";s:3:"249";s:3:"sak";s:3:"250";s:3:"um ";s:3:"251";s:3:" bi";s:3:"252";s:3:" gw";s:3:"253";s:3:" kw";s:3:"254";s:3:"jam";s:3:"255";s:3:"yya";s:3:"256";s:3:"a j";s:3:"257";s:3:"fa ";s:3:"258";s:3:"uta";s:3:"259";s:3:" hu";s:3:"260";s:3:"'a ";s:3:"261";s:3:"ans";s:3:"262";s:4:"aɗa";s:3:"263";s:3:"dda";s:3:"264";s:3:"hin";s:3:"265";s:3:"niy";s:3:"266";s:3:"r s";s:3:"267";s:3:"bat";s:3:"268";s:3:"dar";s:3:"269";s:3:"gan";s:3:"270";s:3:"i t";s:3:"271";s:3:"nta";s:3:"272";s:3:"oki";s:3:"273";s:3:"omi";s:3:"274";s:3:"sal";s:3:"275";s:3:"a l";s:3:"276";s:3:"kac";s:3:"277";s:3:"lla";s:3:"278";s:3:"wad";s:3:"279";s:3:"war";s:3:"280";s:3:"amm";s:3:"281";s:3:"dom";s:3:"282";s:3:"r m";s:3:"283";s:3:"ras";s:3:"284";s:3:"sai";s:3:"285";s:3:" lo";s:3:"286";s:3:"ats";s:3:"287";s:3:"hal";s:3:"288";s:3:"kat";s:3:"289";s:3:"li ";s:3:"290";s:3:"lok";s:3:"291";s:3:"n c";s:3:"292";s:3:"nar";s:3:"293";s:3:"tin";s:3:"294";s:3:"afa";s:3:"295";s:3:"bub";s:3:"296";s:3:"i g";s:3:"297";s:3:"isa";s:3:"298";s:3:"mak";s:3:"299";}s:8:"hawaiian";a:300:{s:3:" ka";s:1:"0";s:3:"na ";s:1:"1";s:3:" o ";s:1:"2";s:3:"ka ";s:1:"3";s:3:" ma";s:1:"4";s:3:" a ";s:1:"5";s:3:" la";s:1:"6";s:3:"a i";s:1:"7";s:3:"a m";s:1:"8";s:3:" i ";s:1:"9";s:3:"la ";s:2:"10";s:3:"ana";s:2:"11";s:3:"ai ";s:2:"12";s:3:"ia ";s:2:"13";s:3:"a o";s:2:"14";s:3:"a k";s:2:"15";s:3:"a h";s:2:"16";s:3:"o k";s:2:"17";s:3:" ke";s:2:"18";s:3:"a a";s:2:"19";s:3:"i k";s:2:"20";s:3:" ho";s:2:"21";s:3:" ia";s:2:"22";s:3:"ua ";s:2:"23";s:3:" na";s:2:"24";s:3:" me";s:2:"25";s:3:"e k";s:2:"26";s:3:"e a";s:2:"27";s:3:"au ";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ma ";s:2:"30";s:3:"mai";s:2:"31";s:3:"aku";s:2:"32";s:3:" ak";s:2:"33";s:3:"ahi";s:2:"34";s:3:" ha";s:2:"35";s:3:" ko";s:2:"36";s:3:" e ";s:2:"37";s:3:"a l";s:2:"38";s:3:" no";s:2:"39";s:3:"me ";s:2:"40";s:3:"ku ";s:2:"41";s:3:"aka";s:2:"42";s:3:"kan";s:2:"43";s:3:"no ";s:2:"44";s:3:"i a";s:2:"45";s:3:"ho ";s:2:"46";s:3:"ou ";s:2:"47";s:3:" ai";s:2:"48";s:3:"i o";s:2:"49";s:3:"a p";s:2:"50";s:3:"o l";s:2:"51";s:3:"o a";s:2:"52";s:3:"ama";s:2:"53";s:3:"a n";s:2:"54";s:3:" an";s:2:"55";s:3:"i m";s:2:"56";s:3:"han";s:2:"57";s:3:"i i";s:2:"58";s:3:"iho";s:2:"59";s:3:"kou";s:2:"60";s:3:"ne ";s:2:"61";s:3:" ih";s:2:"62";s:3:"o i";s:2:"63";s:3:"iki";s:2:"64";s:3:"ona";s:2:"65";s:3:"hoo";s:2:"66";s:3:"le ";s:2:"67";s:3:"e h";s:2:"68";s:3:" he";s:2:"69";s:3:"ina";s:2:"70";s:3:" wa";s:2:"71";s:3:"ea ";s:2:"72";s:3:"ako";s:2:"73";s:3:"u i";s:2:"74";s:3:"kah";s:2:"75";s:3:"oe ";s:2:"76";s:3:"i l";s:2:"77";s:3:"u a";s:2:"78";s:3:" pa";s:2:"79";s:3:"hoi";s:2:"80";s:3:"e i";s:2:"81";s:3:"era";s:2:"82";s:3:"ko ";s:2:"83";s:3:"u m";s:2:"84";s:3:"kua";s:2:"85";s:3:"mak";s:2:"86";s:3:"oi ";s:2:"87";s:3:"kai";s:2:"88";s:3:"i n";s:2:"89";s:3:"a e";s:2:"90";s:3:"hin";s:2:"91";s:3:"ane";s:2:"92";s:3:" ol";s:2:"93";s:3:"i h";s:2:"94";s:3:"mea";s:2:"95";s:3:"wah";s:2:"96";s:3:"lak";s:2:"97";s:3:"e m";s:2:"98";s:3:"o n";s:2:"99";s:3:"u l";s:3:"100";s:3:"ika";s:3:"101";s:3:"ki ";s:3:"102";s:3:"a w";s:3:"103";s:3:"mal";s:3:"104";s:3:"hi ";s:3:"105";s:3:"e n";s:3:"106";s:3:"u o";s:3:"107";s:3:"hik";s:3:"108";s:3:" ku";s:3:"109";s:3:"e l";s:3:"110";s:3:"ele";s:3:"111";s:3:"ra ";s:3:"112";s:3:"ber";s:3:"113";s:3:"ine";s:3:"114";s:3:"abe";s:3:"115";s:3:"ain";s:3:"116";s:3:"ala";s:3:"117";s:3:"lo ";s:3:"118";s:3:" po";s:3:"119";s:3:"kon";s:3:"120";s:3:" ab";s:3:"121";s:3:"ole";s:3:"122";s:3:"he ";s:3:"123";s:3:"pau";s:3:"124";s:3:"mah";s:3:"125";s:3:"va ";s:3:"126";s:3:"ela";s:3:"127";s:3:"kau";s:3:"128";s:3:"nak";s:3:"129";s:3:" oe";s:3:"130";s:3:"kei";s:3:"131";s:3:"oia";s:3:"132";s:3:" ie";s:3:"133";s:3:"ram";s:3:"134";s:3:" oi";s:3:"135";s:3:"oa ";s:3:"136";s:3:"eho";s:3:"137";s:3:"hov";s:3:"138";s:3:"ieh";s:3:"139";s:3:"ova";s:3:"140";s:3:" ua";s:3:"141";s:3:"una";s:3:"142";s:3:"ara";s:3:"143";s:3:"o s";s:3:"144";s:3:"awa";s:3:"145";s:3:"o o";s:3:"146";s:3:"nau";s:3:"147";s:3:"u n";s:3:"148";s:3:"wa ";s:3:"149";s:3:"wai";s:3:"150";s:3:"hel";s:3:"151";s:3:" ae";s:3:"152";s:3:" al";s:3:"153";s:3:"ae ";s:3:"154";s:3:"ta ";s:3:"155";s:3:"aik";s:3:"156";s:3:" hi";s:3:"157";s:3:"ale";s:3:"158";s:3:"ila";s:3:"159";s:3:"lel";s:3:"160";s:3:"ali";s:3:"161";s:3:"eik";s:3:"162";s:3:"olo";s:3:"163";s:3:"onu";s:3:"164";s:3:" lo";s:3:"165";s:3:"aua";s:3:"166";s:3:"e o";s:3:"167";s:3:"ola";s:3:"168";s:3:"hon";s:3:"169";s:3:"mam";s:3:"170";s:3:"nan";s:3:"171";s:3:" au";s:3:"172";s:3:"aha";s:3:"173";s:3:"lau";s:3:"174";s:3:"nua";s:3:"175";s:3:"oho";s:3:"176";s:3:"oma";s:3:"177";s:3:" ao";s:3:"178";s:3:"ii ";s:3:"179";s:3:"alu";s:3:"180";s:3:"ima";s:3:"181";s:3:"mau";s:3:"182";s:3:"ike";s:3:"183";s:3:"apa";s:3:"184";s:3:"elo";s:3:"185";s:3:"lii";s:3:"186";s:3:"poe";s:3:"187";s:3:"aia";s:3:"188";s:3:"noa";s:3:"189";s:3:" in";s:3:"190";s:3:"o m";s:3:"191";s:3:"oka";s:3:"192";s:3:"'u ";s:3:"193";s:3:"aho";s:3:"194";s:3:"ei ";s:3:"195";s:3:"eka";s:3:"196";s:3:"ha ";s:3:"197";s:3:"lu ";s:3:"198";s:3:"nei";s:3:"199";s:3:"hol";s:3:"200";s:3:"ino";s:3:"201";s:3:"o e";s:3:"202";s:3:"ema";s:3:"203";s:3:"iwa";s:3:"204";s:3:"olu";s:3:"205";s:3:"ada";s:3:"206";s:3:"naa";s:3:"207";s:3:"pa ";s:3:"208";s:3:"u k";s:3:"209";s:3:"ewa";s:3:"210";s:3:"hua";s:3:"211";s:3:"lam";s:3:"212";s:3:"lua";s:3:"213";s:3:"o h";s:3:"214";s:3:"ook";s:3:"215";s:3:"u h";s:3:"216";s:3:" li";s:3:"217";s:3:"ahu";s:3:"218";s:3:"amu";s:3:"219";s:3:"ui ";s:3:"220";s:3:" il";s:3:"221";s:3:" mo";s:3:"222";s:3:" se";s:3:"223";s:3:"eia";s:3:"224";s:3:"law";s:3:"225";s:3:" hu";s:3:"226";s:3:" ik";s:3:"227";s:3:"ail";s:3:"228";s:3:"e p";s:3:"229";s:3:"li ";s:3:"230";s:3:"lun";s:3:"231";s:3:"uli";s:3:"232";s:3:"io ";s:3:"233";s:3:"kik";s:3:"234";s:3:"noh";s:3:"235";s:3:"u e";s:3:"236";s:3:" sa";s:3:"237";s:3:"aaw";s:3:"238";s:3:"awe";s:3:"239";s:3:"ena";s:3:"240";s:3:"hal";s:3:"241";s:3:"kol";s:3:"242";s:3:"lan";s:3:"243";s:3:" le";s:3:"244";s:3:" ne";s:3:"245";s:3:"a'u";s:3:"246";s:3:"ilo";s:3:"247";s:3:"kap";s:3:"248";s:3:"oko";s:3:"249";s:3:"sa ";s:3:"250";s:3:" pe";s:3:"251";s:3:"hop";s:3:"252";s:3:"loa";s:3:"253";s:3:"ope";s:3:"254";s:3:"pe ";s:3:"255";s:3:" ad";s:3:"256";s:3:" pu";s:3:"257";s:3:"ahe";s:3:"258";s:3:"aol";s:3:"259";s:3:"ia'";s:3:"260";s:3:"lai";s:3:"261";s:3:"loh";s:3:"262";s:3:"na'";s:3:"263";s:3:"oom";s:3:"264";s:3:"aau";s:3:"265";s:3:"eri";s:3:"266";s:3:"kul";s:3:"267";s:3:"we ";s:3:"268";s:3:"ake";s:3:"269";s:3:"kek";s:3:"270";s:3:"laa";s:3:"271";s:3:"ri ";s:3:"272";s:3:"iku";s:3:"273";s:3:"kak";s:3:"274";s:3:"lim";s:3:"275";s:3:"nah";s:3:"276";s:3:"ner";s:3:"277";s:3:"nui";s:3:"278";s:3:"ono";s:3:"279";s:3:"a u";s:3:"280";s:3:"dam";s:3:"281";s:3:"kum";s:3:"282";s:3:"lok";s:3:"283";s:3:"mua";s:3:"284";s:3:"uma";s:3:"285";s:3:"wal";s:3:"286";s:3:"wi ";s:3:"287";s:3:"'i ";s:3:"288";s:3:"a'i";s:3:"289";s:3:"aan";s:3:"290";s:3:"alo";s:3:"291";s:3:"eta";s:3:"292";s:3:"mu ";s:3:"293";s:3:"ohe";s:3:"294";s:3:"u p";s:3:"295";s:3:"ula";s:3:"296";s:3:"uwa";s:3:"297";s:3:" nu";s:3:"298";s:3:"amo";s:3:"299";}s:5:"hindi";a:300:{s:7:"ें ";s:1:"0";s:7:" है";s:1:"1";s:9:"में";s:1:"2";s:7:" मे";s:1:"3";s:7:"ने ";s:1:"4";s:7:"की ";s:1:"5";s:7:"के ";s:1:"6";s:7:"है ";s:1:"7";s:7:" के";s:1:"8";s:7:" की";s:1:"9";s:7:" को";s:2:"10";s:7:"ों ";s:2:"11";s:7:"को ";s:2:"12";s:7:"ा ह";s:2:"13";s:7:" का";s:2:"14";s:7:"से ";s:2:"15";s:7:"ा क";s:2:"16";s:7:"े क";s:2:"17";s:7:"ं क";s:2:"18";s:7:"या ";s:2:"19";s:7:" कि";s:2:"20";s:7:" से";s:2:"21";s:7:"का ";s:2:"22";s:7:"ी क";s:2:"23";s:7:" ने";s:2:"24";s:7:" और";s:2:"25";s:7:"और ";s:2:"26";s:7:"ना ";s:2:"27";s:7:"कि ";s:2:"28";s:7:"भी ";s:2:"29";s:7:"ी स";s:2:"30";s:7:" जा";s:2:"31";s:7:" पर";s:2:"32";s:7:"ार ";s:2:"33";s:7:" कर";s:2:"34";s:7:"ी ह";s:2:"35";s:7:" हो";s:2:"36";s:7:"ही ";s:2:"37";s:9:"िया";s:2:"38";s:7:" इस";s:2:"39";s:7:" रह";s:2:"40";s:7:"र क";s:2:"41";s:9:"ुना";s:2:"42";s:7:"ता ";s:2:"43";s:7:"ान ";s:2:"44";s:7:"े स";s:2:"45";s:7:" भी";s:2:"46";s:7:" रा";s:2:"47";s:7:"े ह";s:2:"48";s:7:" चु";s:2:"49";s:7:" पा";s:2:"50";s:7:"पर ";s:2:"51";s:9:"चुन";s:2:"52";s:9:"नाव";s:2:"53";s:7:" कह";s:2:"54";s:9:"प्र";s:2:"55";s:7:" भा";s:2:"56";s:9:"राज";s:2:"57";s:9:"हैं";s:2:"58";s:7:"ा स";s:2:"59";s:7:"ै क";s:2:"60";s:7:"ैं ";s:2:"61";s:7:"नी ";s:2:"62";s:7:"ल क";s:2:"63";s:7:"ीं ";s:2:"64";s:7:"़ी ";s:2:"65";s:7:"था ";s:2:"66";s:7:"री ";s:2:"67";s:7:"ाव ";s:2:"68";s:7:"े ब";s:2:"69";s:7:" प्";s:2:"70";s:9:"क्ष";s:2:"71";s:7:"पा ";s:2:"72";s:7:"ले ";s:2:"73";s:7:" दे";s:2:"74";s:7:"ला ";s:2:"75";s:7:"हा ";s:2:"76";s:9:"ाजप";s:2:"77";s:7:" था";s:2:"78";s:7:" नह";s:2:"79";s:7:"इस ";s:2:"80";s:7:"कर ";s:2:"81";s:9:"जपा";s:2:"82";s:9:"नही";s:2:"83";s:9:"भाज";s:2:"84";s:9:"यों";s:2:"85";s:7:"र स";s:2:"86";s:9:"हीं";s:2:"87";s:7:" अम";s:2:"88";s:7:" बा";s:2:"89";s:7:" मा";s:2:"90";s:7:" वि";s:2:"91";s:9:"रीक";s:2:"92";s:7:"िए ";s:2:"93";s:7:"े प";s:2:"94";s:9:"्या";s:2:"95";s:7:" ही";s:2:"96";s:7:"ं म";s:2:"97";s:9:"कार";s:2:"98";s:7:"ा ज";s:2:"99";s:7:"े ल";s:3:"100";s:7:" ता";s:3:"101";s:7:" दि";s:3:"102";s:7:" सा";s:3:"103";s:7:" हम";s:3:"104";s:7:"ा न";s:3:"105";s:7:"ा म";s:3:"106";s:9:"ाक़";s:3:"107";s:9:"्ता";s:3:"108";s:7:" एक";s:3:"109";s:7:" सं";s:3:"110";s:7:" स्";s:3:"111";s:9:"अमर";s:3:"112";s:9:"क़ी";s:3:"113";s:9:"ताज";s:3:"114";s:9:"मरी";s:3:"115";s:9:"स्थ";s:3:"116";s:7:"ा थ";s:3:"117";s:9:"ार्";s:3:"118";s:7:" हु";s:3:"119";s:9:"इरा";s:3:"120";s:7:"एक ";s:3:"121";s:7:"न क";s:3:"122";s:7:"र म";s:3:"123";s:9:"राक";s:3:"124";s:7:"ी ज";s:3:"125";s:7:"ी न";s:3:"126";s:7:" इर";s:3:"127";s:7:" उन";s:3:"128";s:7:" पह";s:3:"129";s:9:"कहा";s:3:"130";s:7:"ते ";s:3:"131";s:7:"े अ";s:3:"132";s:7:" तो";s:3:"133";s:7:" सु";s:3:"134";s:7:"ति ";s:3:"135";s:7:"ती ";s:3:"136";s:7:"तो ";s:3:"137";s:9:"मिल";s:3:"138";s:7:"िक ";s:3:"139";s:9:"ियो";s:3:"140";s:9:"्रे";s:3:"141";s:7:" अप";s:3:"142";s:7:" फ़";s:3:"143";s:7:" लि";s:3:"144";s:7:" लो";s:3:"145";s:7:" सम";s:3:"146";s:7:"म क";s:3:"147";s:9:"र्ट";s:3:"148";s:7:"हो ";s:3:"149";s:7:"ा च";s:3:"150";s:7:"ाई ";s:3:"151";s:9:"ाने";s:3:"152";s:7:"िन ";s:3:"153";s:7:"्य ";s:3:"154";s:7:" उस";s:3:"155";s:7:" क़";s:3:"156";s:7:" सक";s:3:"157";s:7:" सै";s:3:"158";s:7:"ं प";s:3:"159";s:7:"ं ह";s:3:"160";s:7:"गी ";s:3:"161";s:7:"त क";s:3:"162";s:9:"मान";s:3:"163";s:7:"र न";s:3:"164";s:9:"ष्ट";s:3:"165";s:7:"स क";s:3:"166";s:9:"स्त";s:3:"167";s:7:"ाँ ";s:3:"168";s:7:"ी ब";s:3:"169";s:7:"ी म";s:3:"170";s:9:"्री";s:3:"171";s:7:" दो";s:3:"172";s:7:" मि";s:3:"173";s:7:" मु";s:3:"174";s:7:" ले";s:3:"175";s:7:" शा";s:3:"176";s:7:"ं स";s:3:"177";s:9:"ज़ा";s:3:"178";s:9:"त्र";s:3:"179";s:7:"थी ";s:3:"180";s:9:"लिए";s:3:"181";s:7:"सी ";s:3:"182";s:7:"़ा ";s:3:"183";s:9:"़ार";s:3:"184";s:9:"ांग";s:3:"185";s:7:"े द";s:3:"186";s:7:"े म";s:3:"187";s:7:"्व ";s:3:"188";s:7:" ना";s:3:"189";s:7:" बन";s:3:"190";s:9:"ंग्";s:3:"191";s:9:"कां";s:3:"192";s:7:"गा ";s:3:"193";s:9:"ग्र";s:3:"194";s:7:"जा ";s:3:"195";s:9:"ज्य";s:3:"196";s:7:"दी ";s:3:"197";s:7:"न म";s:3:"198";s:9:"पार";s:3:"199";s:7:"भा ";s:3:"200";s:9:"रही";s:3:"201";s:7:"रे ";s:3:"202";s:9:"रेस";s:3:"203";s:7:"ली ";s:3:"204";s:9:"सभा";s:3:"205";s:7:"ा र";s:3:"206";s:7:"ाल ";s:3:"207";s:7:"ी अ";s:3:"208";s:9:"ीकी";s:3:"209";s:7:"े त";s:3:"210";s:7:"ेश ";s:3:"211";s:7:" अं";s:3:"212";s:7:" तक";s:3:"213";s:7:" या";s:3:"214";s:7:"ई ह";s:3:"215";s:9:"करन";s:3:"216";s:7:"तक ";s:3:"217";s:9:"देश";s:3:"218";s:9:"वर्";s:3:"219";s:9:"ाया";s:3:"220";s:7:"ी भ";s:3:"221";s:7:"ेस ";s:3:"222";s:7:"्ष ";s:3:"223";s:7:" गय";s:3:"224";s:7:" जि";s:3:"225";s:7:" थी";s:3:"226";s:7:" बड";s:3:"227";s:7:" यह";s:3:"228";s:7:" वा";s:3:"229";s:9:"ंतर";s:3:"230";s:9:"अंत";s:3:"231";s:7:"क़ ";s:3:"232";s:9:"गया";s:3:"233";s:7:"टी ";s:3:"234";s:9:"निक";s:3:"235";s:9:"न्ह";s:3:"236";s:9:"पहल";s:3:"237";s:9:"बड़";s:3:"238";s:9:"मार";s:3:"239";s:7:"र प";s:3:"240";s:9:"रने";s:3:"241";s:9:"ाज़";s:3:"242";s:7:"ि इ";s:3:"243";s:7:"ी र";s:3:"244";s:7:"े ज";s:3:"245";s:7:"े व";s:3:"246";s:7:"्ट ";s:3:"247";s:9:"्टी";s:3:"248";s:7:" अब";s:3:"249";s:7:" लग";s:3:"250";s:7:" वर";s:3:"251";s:7:" सी";s:3:"252";s:7:"ं भ";s:3:"253";s:9:"उन्";s:3:"254";s:7:"क क";s:3:"255";s:9:"किय";s:3:"256";s:9:"देख";s:3:"257";s:9:"पूर";s:3:"258";s:9:"फ़्";s:3:"259";s:7:"यह ";s:3:"260";s:9:"यान";s:3:"261";s:9:"रिक";s:3:"262";s:9:"रिय";s:3:"263";s:9:"र्ड";s:3:"264";s:9:"लेक";s:3:"265";s:9:"सकत";s:3:"266";s:9:"हों";s:3:"267";s:9:"होग";s:3:"268";s:7:"ा अ";s:3:"269";s:7:"ा द";s:3:"270";s:7:"ा प";s:3:"271";s:7:"ाद ";s:3:"272";s:9:"ारा";s:3:"273";s:7:"ित ";s:3:"274";s:7:"ी त";s:3:"275";s:7:"ी प";s:3:"276";s:7:"ो क";s:3:"277";s:7:"ो द";s:3:"278";s:7:" ते";s:3:"279";s:7:" नि";s:3:"280";s:7:" सर";s:3:"281";s:7:" हा";s:3:"282";s:7:"ं द";s:3:"283";s:9:"अपन";s:3:"284";s:9:"जान";s:3:"285";s:7:"त म";s:3:"286";s:9:"थित";s:3:"287";s:9:"पनी";s:3:"288";s:9:"महल";s:3:"289";s:7:"र ह";s:3:"290";s:9:"लोग";s:3:"291";s:7:"व क";s:3:"292";s:9:"हना";s:3:"293";s:7:"हल ";s:3:"294";s:9:"हाँ";s:3:"295";s:9:"ाज्";s:3:"296";s:9:"ाना";s:3:"297";s:9:"िक्";s:3:"298";s:9:"िस्";s:3:"299";}s:9:"hungarian";a:300:{s:3:" a ";s:1:"0";s:3:" az";s:1:"1";s:3:" sz";s:1:"2";s:3:"az ";s:1:"3";s:3:" me";s:1:"4";s:3:"en ";s:1:"5";s:3:" el";s:1:"6";s:3:" ho";s:1:"7";s:3:"ek ";s:1:"8";s:3:"gy ";s:1:"9";s:3:"tt ";s:2:"10";s:3:"ett";s:2:"11";s:3:"sze";s:2:"12";s:3:" fe";s:2:"13";s:4:"és ";s:2:"14";s:3:" ki";s:2:"15";s:3:"tet";s:2:"16";s:3:" be";s:2:"17";s:3:"et ";s:2:"18";s:3:"ter";s:2:"19";s:4:" kö";s:2:"20";s:4:" és";s:2:"21";s:3:"hog";s:2:"22";s:3:"meg";s:2:"23";s:3:"ogy";s:2:"24";s:3:"szt";s:2:"25";s:3:"te ";s:2:"26";s:3:"t a";s:2:"27";s:3:"zet";s:2:"28";s:3:"a m";s:2:"29";s:3:"nek";s:2:"30";s:3:"nt ";s:2:"31";s:4:"ség";s:2:"32";s:4:"szá";s:2:"33";s:3:"ak ";s:2:"34";s:3:" va";s:2:"35";s:3:"an ";s:2:"36";s:3:"eze";s:2:"37";s:3:"ra ";s:2:"38";s:3:"ta ";s:2:"39";s:3:" mi";s:2:"40";s:3:"int";s:2:"41";s:4:"köz";s:2:"42";s:3:" is";s:2:"43";s:3:"esz";s:2:"44";s:3:"fel";s:2:"45";s:3:"min";s:2:"46";s:3:"nak";s:2:"47";s:3:"ors";s:2:"48";s:3:"zer";s:2:"49";s:3:" te";s:2:"50";s:3:"a a";s:2:"51";s:3:"a k";s:2:"52";s:3:"is ";s:2:"53";s:3:" cs";s:2:"54";s:3:"ele";s:2:"55";s:3:"er ";s:2:"56";s:3:"men";s:2:"57";s:3:"si ";s:2:"58";s:3:"tek";s:2:"59";s:3:"ti ";s:2:"60";s:3:" ne";s:2:"61";s:3:"csa";s:2:"62";s:3:"ent";s:2:"63";s:3:"z e";s:2:"64";s:3:"a t";s:2:"65";s:3:"ala";s:2:"66";s:3:"ere";s:2:"67";s:3:"es ";s:2:"68";s:3:"lom";s:2:"69";s:3:"lte";s:2:"70";s:3:"mon";s:2:"71";s:3:"ond";s:2:"72";s:3:"rsz";s:2:"73";s:3:"sza";s:2:"74";s:3:"tte";s:2:"75";s:4:"zág";s:2:"76";s:4:"ány";s:2:"77";s:3:" fo";s:2:"78";s:3:" ma";s:2:"79";s:3:"ai ";s:2:"80";s:3:"ben";s:2:"81";s:3:"el ";s:2:"82";s:3:"ene";s:2:"83";s:3:"ik ";s:2:"84";s:3:"jel";s:2:"85";s:4:"tás";s:2:"86";s:4:"áll";s:2:"87";s:3:" ha";s:2:"88";s:3:" le";s:2:"89";s:4:" ál";s:2:"90";s:3:"agy";s:2:"91";s:4:"alá";s:2:"92";s:3:"isz";s:2:"93";s:3:"y a";s:2:"94";s:3:"zte";s:2:"95";s:4:"ás ";s:2:"96";s:3:" al";s:2:"97";s:3:"e a";s:2:"98";s:3:"egy";s:2:"99";s:3:"ely";s:3:"100";s:3:"for";s:3:"101";s:3:"lat";s:3:"102";s:3:"lt ";s:3:"103";s:3:"n a";s:3:"104";s:3:"oga";s:3:"105";s:3:"on ";s:3:"106";s:3:"re ";s:3:"107";s:3:"st ";s:3:"108";s:4:"ság";s:3:"109";s:3:"t m";s:3:"110";s:4:"án ";s:3:"111";s:4:"ét ";s:3:"112";s:4:"ült";s:3:"113";s:3:" je";s:3:"114";s:3:"gi ";s:3:"115";s:3:"k a";s:3:"116";s:4:"kül";s:3:"117";s:3:"lam";s:3:"118";s:3:"len";s:3:"119";s:4:"lás";s:3:"120";s:4:"más";s:3:"121";s:3:"s k";s:3:"122";s:3:"vez";s:3:"123";s:4:"áso";s:3:"124";s:5:"özö";s:3:"125";s:3:" ta";s:3:"126";s:3:"a s";s:3:"127";s:3:"a v";s:3:"128";s:3:"asz";s:3:"129";s:4:"atá";s:3:"130";s:4:"ető";s:3:"131";s:3:"kez";s:3:"132";s:3:"let";s:3:"133";s:3:"mag";s:3:"134";s:3:"nem";s:3:"135";s:4:"szé";s:3:"136";s:3:"z m";s:3:"137";s:4:"át ";s:3:"138";s:4:"éte";s:3:"139";s:4:"ölt";s:3:"140";s:3:" de";s:3:"141";s:3:" gy";s:3:"142";s:4:" ké";s:3:"143";s:3:" mo";s:3:"144";s:4:" vá";s:3:"145";s:4:" ér";s:3:"146";s:3:"a b";s:3:"147";s:3:"a f";s:3:"148";s:3:"ami";s:3:"149";s:3:"at ";s:3:"150";s:3:"ato";s:3:"151";s:3:"att";s:3:"152";s:3:"bef";s:3:"153";s:3:"dta";s:3:"154";s:3:"gya";s:3:"155";s:3:"hat";s:3:"156";s:3:"i s";s:3:"157";s:3:"las";s:3:"158";s:3:"ndt";s:3:"159";s:3:"rt ";s:3:"160";s:3:"szo";s:3:"161";s:3:"t k";s:3:"162";s:4:"tár";s:3:"163";s:4:"tés";s:3:"164";s:3:"van";s:3:"165";s:5:"ásá";s:3:"166";s:4:"ól ";s:3:"167";s:4:" bé";s:3:"168";s:3:" eg";s:3:"169";s:3:" or";s:3:"170";s:4:" pá";s:3:"171";s:4:" pé";s:3:"172";s:3:" ve";s:3:"173";s:3:"ban";s:3:"174";s:3:"eke";s:3:"175";s:4:"ekü";s:3:"176";s:4:"elő";s:3:"177";s:3:"erv";s:3:"178";s:3:"ete";s:3:"179";s:3:"fog";s:3:"180";s:3:"i a";s:3:"181";s:3:"kis";s:3:"182";s:4:"lád";s:3:"183";s:3:"nte";s:3:"184";s:3:"nye";s:3:"185";s:3:"nyi";s:3:"186";s:3:"ok ";s:3:"187";s:4:"omá";s:3:"188";s:3:"os ";s:3:"189";s:4:"rán";s:3:"190";s:4:"rás";s:3:"191";s:3:"sal";s:3:"192";s:3:"t e";s:3:"193";s:4:"vál";s:3:"194";s:3:"yar";s:3:"195";s:4:"ágo";s:3:"196";s:4:"ála";s:3:"197";s:4:"ége";s:3:"198";s:4:"ény";s:3:"199";s:4:"ött";s:3:"200";s:4:" tá";s:3:"201";s:4:"adó";s:3:"202";s:3:"elh";s:3:"203";s:3:"fej";s:3:"204";s:3:"het";s:3:"205";s:3:"hoz";s:3:"206";s:3:"ill";s:3:"207";s:4:"jár";s:3:"208";s:4:"kés";s:3:"209";s:3:"llo";s:3:"210";s:3:"mi ";s:3:"211";s:3:"ny ";s:3:"212";s:3:"ont";s:3:"213";s:3:"ren";s:3:"214";s:3:"res";s:3:"215";s:3:"rin";s:3:"216";s:3:"s a";s:3:"217";s:3:"s e";s:3:"218";s:3:"ssz";s:3:"219";s:3:"zt ";s:3:"220";s:3:" ez";s:3:"221";s:3:" ka";s:3:"222";s:3:" ke";s:3:"223";s:3:" ko";s:3:"224";s:3:" re";s:3:"225";s:3:"a h";s:3:"226";s:3:"a n";s:3:"227";s:3:"den";s:3:"228";s:4:"dó ";s:3:"229";s:3:"efo";s:3:"230";s:3:"gad";s:3:"231";s:3:"gat";s:3:"232";s:3:"gye";s:3:"233";s:3:"hel";s:3:"234";s:3:"k e";s:3:"235";s:3:"ket";s:3:"236";s:3:"les";s:3:"237";s:4:"mán";s:3:"238";s:3:"nde";s:3:"239";s:3:"nis";s:3:"240";s:3:"ozz";s:3:"241";s:3:"t b";s:3:"242";s:3:"t i";s:3:"243";s:4:"t é";s:3:"244";s:3:"tat";s:3:"245";s:3:"tos";s:3:"246";s:3:"val";s:3:"247";s:3:"z o";s:3:"248";s:3:"zak";s:3:"249";s:4:"ád ";s:3:"250";s:4:"ály";s:3:"251";s:4:"ára";s:3:"252";s:4:"ési";s:3:"253";s:4:"ész";s:3:"254";s:3:" ak";s:3:"255";s:3:" am";s:3:"256";s:3:" es";s:3:"257";s:4:" há";s:3:"258";s:3:" ny";s:3:"259";s:4:" tö";s:3:"260";s:3:"aka";s:3:"261";s:3:"art";s:3:"262";s:4:"ató";s:3:"263";s:3:"azt";s:3:"264";s:3:"bbe";s:3:"265";s:3:"ber";s:3:"266";s:4:"ció";s:3:"267";s:3:"cso";s:3:"268";s:3:"em ";s:3:"269";s:3:"eti";s:3:"270";s:4:"eté";s:3:"271";s:3:"gal";s:3:"272";s:3:"i t";s:3:"273";s:3:"ini";s:3:"274";s:3:"ist";s:3:"275";s:3:"ja ";s:3:"276";s:3:"ker";s:3:"277";s:3:"ki ";s:3:"278";s:3:"kor";s:3:"279";s:3:"koz";s:3:"280";s:4:"l é";s:3:"281";s:4:"ljá";s:3:"282";s:3:"lye";s:3:"283";s:3:"n v";s:3:"284";s:3:"ni ";s:3:"285";s:4:"pál";s:3:"286";s:3:"ror";s:3:"287";s:4:"ról";s:3:"288";s:4:"rül";s:3:"289";s:3:"s c";s:3:"290";s:3:"s p";s:3:"291";s:3:"s s";s:3:"292";s:3:"s v";s:3:"293";s:3:"sok";s:3:"294";s:3:"t j";s:3:"295";s:3:"t t";s:3:"296";s:3:"tar";s:3:"297";s:3:"tel";s:3:"298";s:3:"vat";s:3:"299";}s:9:"icelandic";a:300:{s:4:"að ";s:1:"0";s:3:"um ";s:1:"1";s:4:" að";s:1:"2";s:3:"ir ";s:1:"3";s:4:"ið ";s:1:"4";s:3:"ur ";s:1:"5";s:3:" ve";s:1:"6";s:4:" í ";s:1:"7";s:3:"na ";s:1:"8";s:4:" á ";s:1:"9";s:3:" se";s:2:"10";s:3:" er";s:2:"11";s:3:" og";s:2:"12";s:3:"ar ";s:2:"13";s:3:"og ";s:2:"14";s:3:"ver";s:2:"15";s:3:" mi";s:2:"16";s:3:"inn";s:2:"17";s:3:"nn ";s:2:"18";s:3:" fy";s:2:"19";s:3:"er ";s:2:"20";s:3:"fyr";s:2:"21";s:3:" ek";s:2:"22";s:3:" en";s:2:"23";s:3:" ha";s:2:"24";s:3:" he";s:2:"25";s:3:"ekk";s:2:"26";s:3:" st";s:2:"27";s:3:"ki ";s:2:"28";s:3:"st ";s:2:"29";s:4:"ði ";s:2:"30";s:3:" ba";s:2:"31";s:3:" me";s:2:"32";s:3:" vi";s:2:"33";s:3:"ig ";s:2:"34";s:3:"rir";s:2:"35";s:3:"yri";s:2:"36";s:3:" um";s:2:"37";s:3:"g f";s:2:"38";s:3:"leg";s:2:"39";s:3:"lei";s:2:"40";s:3:"ns ";s:2:"41";s:4:"ð s";s:2:"42";s:3:" ei";s:2:"43";s:4:" þa";s:2:"44";s:3:"in ";s:2:"45";s:3:"kki";s:2:"46";s:3:"r h";s:2:"47";s:3:"r s";s:2:"48";s:3:"egi";s:2:"49";s:3:"ein";s:2:"50";s:3:"ga ";s:2:"51";s:3:"ing";s:2:"52";s:3:"ra ";s:2:"53";s:3:"sta";s:2:"54";s:3:" va";s:2:"55";s:4:" þe";s:2:"56";s:3:"ann";s:2:"57";s:3:"en ";s:2:"58";s:3:"mil";s:2:"59";s:3:"sem";s:2:"60";s:4:"tjó";s:2:"61";s:4:"arð";s:2:"62";s:3:"di ";s:2:"63";s:3:"eit";s:2:"64";s:3:"haf";s:2:"65";s:3:"ill";s:2:"66";s:3:"ins";s:2:"67";s:3:"ist";s:2:"68";s:3:"llj";s:2:"69";s:3:"ndi";s:2:"70";s:3:"r a";s:2:"71";s:3:"r e";s:2:"72";s:3:"seg";s:2:"73";s:3:"un ";s:2:"74";s:3:"var";s:2:"75";s:3:" bi";s:2:"76";s:3:" el";s:2:"77";s:3:" fo";s:2:"78";s:3:" ge";s:2:"79";s:3:" yf";s:2:"80";s:3:"and";s:2:"81";s:3:"aug";s:2:"82";s:3:"bau";s:2:"83";s:3:"big";s:2:"84";s:3:"ega";s:2:"85";s:3:"eld";s:2:"86";s:4:"erð";s:2:"87";s:3:"fir";s:2:"88";s:3:"foo";s:2:"89";s:3:"gin";s:2:"90";s:3:"itt";s:2:"91";s:3:"n s";s:2:"92";s:3:"ngi";s:2:"93";s:3:"num";s:2:"94";s:3:"od ";s:2:"95";s:3:"ood";s:2:"96";s:3:"sin";s:2:"97";s:3:"ta ";s:2:"98";s:3:"tt ";s:2:"99";s:4:"við";s:3:"100";s:3:"yfi";s:3:"101";s:4:"ð e";s:3:"102";s:4:"ð f";s:3:"103";s:3:" hr";s:3:"104";s:4:" sé";s:3:"105";s:4:" þv";s:3:"106";s:3:"a e";s:3:"107";s:4:"a á";s:3:"108";s:3:"em ";s:3:"109";s:3:"gi ";s:3:"110";s:3:"i f";s:3:"111";s:3:"jar";s:3:"112";s:4:"jór";s:3:"113";s:3:"lja";s:3:"114";s:3:"m e";s:3:"115";s:4:"r á";s:3:"116";s:3:"rei";s:3:"117";s:3:"rst";s:3:"118";s:4:"rða";s:3:"119";s:4:"rði";s:3:"120";s:4:"rðu";s:3:"121";s:3:"stj";s:3:"122";s:3:"und";s:3:"123";s:3:"veg";s:3:"124";s:4:"ví ";s:3:"125";s:4:"ð v";s:3:"126";s:5:"það";s:3:"127";s:5:"því";s:3:"128";s:3:" fj";s:3:"129";s:3:" ko";s:3:"130";s:3:" sl";s:3:"131";s:3:"eik";s:3:"132";s:3:"end";s:3:"133";s:3:"ert";s:3:"134";s:3:"ess";s:3:"135";s:4:"fjá";s:3:"136";s:3:"fur";s:3:"137";s:3:"gir";s:3:"138";s:4:"hús";s:3:"139";s:4:"jár";s:3:"140";s:3:"n e";s:3:"141";s:3:"ri ";s:3:"142";s:3:"tar";s:3:"143";s:5:"ð þ";s:3:"144";s:4:"ðar";s:3:"145";s:4:"ður";s:3:"146";s:4:"þes";s:3:"147";s:3:" br";s:3:"148";s:4:" hú";s:3:"149";s:3:" kr";s:3:"150";s:3:" le";s:3:"151";s:3:" up";s:3:"152";s:3:"a s";s:3:"153";s:3:"egg";s:3:"154";s:3:"i s";s:3:"155";s:3:"irt";s:3:"156";s:3:"ja ";s:3:"157";s:4:"kið";s:3:"158";s:3:"len";s:3:"159";s:4:"með";s:3:"160";s:3:"mik";s:3:"161";s:3:"n b";s:3:"162";s:3:"nar";s:3:"163";s:3:"nir";s:3:"164";s:3:"nun";s:3:"165";s:3:"r f";s:3:"166";s:3:"r v";s:3:"167";s:4:"rið";s:3:"168";s:3:"rt ";s:3:"169";s:3:"sti";s:3:"170";s:3:"t v";s:3:"171";s:3:"ti ";s:3:"172";s:3:"una";s:3:"173";s:3:"upp";s:3:"174";s:4:"ða ";s:3:"175";s:4:"óna";s:3:"176";s:3:" al";s:3:"177";s:3:" fr";s:3:"178";s:3:" gr";s:3:"179";s:3:"a v";s:3:"180";s:3:"all";s:3:"181";s:3:"an ";s:3:"182";s:3:"da ";s:3:"183";s:4:"eið";s:3:"184";s:4:"eð ";s:3:"185";s:3:"fa ";s:3:"186";s:3:"fra";s:3:"187";s:3:"g e";s:3:"188";s:3:"ger";s:3:"189";s:4:"gið";s:3:"190";s:3:"gt ";s:3:"191";s:3:"han";s:3:"192";s:3:"hef";s:3:"193";s:3:"hel";s:3:"194";s:3:"her";s:3:"195";s:3:"hra";s:3:"196";s:3:"i a";s:3:"197";s:3:"i e";s:3:"198";s:3:"i v";s:3:"199";s:4:"i þ";s:3:"200";s:3:"iki";s:3:"201";s:4:"jón";s:3:"202";s:4:"jör";s:3:"203";s:3:"ka ";s:3:"204";s:4:"kró";s:3:"205";s:4:"lík";s:3:"206";s:3:"m h";s:3:"207";s:3:"n a";s:3:"208";s:3:"nga";s:3:"209";s:3:"r l";s:3:"210";s:3:"ram";s:3:"211";s:3:"ru ";s:3:"212";s:5:"ráð";s:3:"213";s:4:"rón";s:3:"214";s:3:"svo";s:3:"215";s:3:"vin";s:3:"216";s:4:"í b";s:3:"217";s:4:"í h";s:3:"218";s:4:"ð h";s:3:"219";s:4:"ð k";s:3:"220";s:4:"ð m";s:3:"221";s:5:"örð";s:3:"222";s:3:" af";s:3:"223";s:3:" fa";s:3:"224";s:4:" lí";s:3:"225";s:4:" rá";s:3:"226";s:3:" sk";s:3:"227";s:3:" sv";s:3:"228";s:3:" te";s:3:"229";s:3:"a b";s:3:"230";s:3:"a f";s:3:"231";s:3:"a h";s:3:"232";s:3:"a k";s:3:"233";s:3:"a u";s:3:"234";s:3:"afi";s:3:"235";s:3:"agn";s:3:"236";s:3:"arn";s:3:"237";s:3:"ast";s:3:"238";s:3:"ber";s:3:"239";s:3:"efu";s:3:"240";s:3:"enn";s:3:"241";s:3:"erb";s:3:"242";s:3:"erg";s:3:"243";s:3:"fi ";s:3:"244";s:3:"g a";s:3:"245";s:3:"gar";s:3:"246";s:4:"iðs";s:3:"247";s:3:"ker";s:3:"248";s:3:"kke";s:3:"249";s:3:"lan";s:3:"250";s:4:"ljó";s:3:"251";s:3:"llt";s:3:"252";s:3:"ma ";s:3:"253";s:4:"mið";s:3:"254";s:3:"n v";s:3:"255";s:4:"n í";s:3:"256";s:3:"nan";s:3:"257";s:3:"nda";s:3:"258";s:3:"ndu";s:3:"259";s:4:"nið";s:3:"260";s:3:"nna";s:3:"261";s:3:"nnu";s:3:"262";s:3:"nu ";s:3:"263";s:3:"r o";s:3:"264";s:3:"rbe";s:3:"265";s:3:"rgi";s:3:"266";s:4:"slö";s:3:"267";s:4:"sé ";s:3:"268";s:3:"t a";s:3:"269";s:3:"t h";s:3:"270";s:3:"til";s:3:"271";s:3:"tin";s:3:"272";s:3:"ugu";s:3:"273";s:3:"vil";s:3:"274";s:3:"ygg";s:3:"275";s:4:"á s";s:3:"276";s:4:"ð a";s:3:"277";s:4:"ð b";s:3:"278";s:4:"órn";s:3:"279";s:4:"ögn";s:3:"280";s:4:"öku";s:3:"281";s:3:" at";s:3:"282";s:3:" fi";s:3:"283";s:4:" fé";s:3:"284";s:3:" ka";s:3:"285";s:3:" ma";s:3:"286";s:3:" no";s:3:"287";s:3:" sa";s:3:"288";s:3:" si";s:3:"289";s:3:" ti";s:3:"290";s:4:" ák";s:3:"291";s:3:"a m";s:3:"292";s:3:"a t";s:3:"293";s:4:"a í";s:3:"294";s:4:"a þ";s:3:"295";s:3:"afa";s:3:"296";s:3:"afs";s:3:"297";s:3:"ald";s:3:"298";s:3:"arf";s:3:"299";}s:10:"indonesian";a:300:{s:3:"an ";s:1:"0";s:3:" me";s:1:"1";s:3:"kan";s:1:"2";s:3:"ang";s:1:"3";s:3:"ng ";s:1:"4";s:3:" pe";s:1:"5";s:3:"men";s:1:"6";s:3:" di";s:1:"7";s:3:" ke";s:1:"8";s:3:" da";s:1:"9";s:3:" se";s:2:"10";s:3:"eng";s:2:"11";s:3:" be";s:2:"12";s:3:"nga";s:2:"13";s:3:"nya";s:2:"14";s:3:" te";s:2:"15";s:3:"ah ";s:2:"16";s:3:"ber";s:2:"17";s:3:"aka";s:2:"18";s:3:" ya";s:2:"19";s:3:"dan";s:2:"20";s:3:"di ";s:2:"21";s:3:"yan";s:2:"22";s:3:"n p";s:2:"23";s:3:"per";s:2:"24";s:3:"a m";s:2:"25";s:3:"ita";s:2:"26";s:3:" pa";s:2:"27";s:3:"da ";s:2:"28";s:3:"ata";s:2:"29";s:3:"ada";s:2:"30";s:3:"ya ";s:2:"31";s:3:"ta ";s:2:"32";s:3:" in";s:2:"33";s:3:"ala";s:2:"34";s:3:"eri";s:2:"35";s:3:"ia ";s:2:"36";s:3:"a d";s:2:"37";s:3:"n k";s:2:"38";s:3:"am ";s:2:"39";s:3:"ga ";s:2:"40";s:3:"at ";s:2:"41";s:3:"era";s:2:"42";s:3:"n d";s:2:"43";s:3:"ter";s:2:"44";s:3:" ka";s:2:"45";s:3:"a p";s:2:"46";s:3:"ari";s:2:"47";s:3:"emb";s:2:"48";s:3:"n m";s:2:"49";s:3:"ri ";s:2:"50";s:3:" ba";s:2:"51";s:3:"aan";s:2:"52";s:3:"ak ";s:2:"53";s:3:"ra ";s:2:"54";s:3:" it";s:2:"55";s:3:"ara";s:2:"56";s:3:"ela";s:2:"57";s:3:"ni ";s:2:"58";s:3:"ali";s:2:"59";s:3:"ran";s:2:"60";s:3:"ar ";s:2:"61";s:3:"eru";s:2:"62";s:3:"lah";s:2:"63";s:3:"a b";s:2:"64";s:3:"asi";s:2:"65";s:3:"awa";s:2:"66";s:3:"eba";s:2:"67";s:3:"gan";s:2:"68";s:3:"n b";s:2:"69";s:3:" ha";s:2:"70";s:3:"ini";s:2:"71";s:3:"mer";s:2:"72";s:3:" la";s:2:"73";s:3:" mi";s:2:"74";s:3:"and";s:2:"75";s:3:"ena";s:2:"76";s:3:"wan";s:2:"77";s:3:" sa";s:2:"78";s:3:"aha";s:2:"79";s:3:"lam";s:2:"80";s:3:"n i";s:2:"81";s:3:"nda";s:2:"82";s:3:" wa";s:2:"83";s:3:"a i";s:2:"84";s:3:"dua";s:2:"85";s:3:"g m";s:2:"86";s:3:"mi ";s:2:"87";s:3:"n a";s:2:"88";s:3:"rus";s:2:"89";s:3:"tel";s:2:"90";s:3:"yak";s:2:"91";s:3:" an";s:2:"92";s:3:"dal";s:2:"93";s:3:"h d";s:2:"94";s:3:"i s";s:2:"95";s:3:"ing";s:2:"96";s:3:"min";s:2:"97";s:3:"ngg";s:2:"98";s:3:"tak";s:2:"99";s:3:"ami";s:3:"100";s:3:"beb";s:3:"101";s:3:"den";s:3:"102";s:3:"gat";s:3:"103";s:3:"ian";s:3:"104";s:3:"ih ";s:3:"105";s:3:"pad";s:3:"106";s:3:"rga";s:3:"107";s:3:"san";s:3:"108";s:3:"ua ";s:3:"109";s:3:" de";s:3:"110";s:3:"a t";s:3:"111";s:3:"arg";s:3:"112";s:3:"dar";s:3:"113";s:3:"elu";s:3:"114";s:3:"har";s:3:"115";s:3:"i k";s:3:"116";s:3:"i m";s:3:"117";s:3:"i p";s:3:"118";s:3:"ika";s:3:"119";s:3:"in ";s:3:"120";s:3:"iny";s:3:"121";s:3:"itu";s:3:"122";s:3:"mba";s:3:"123";s:3:"n t";s:3:"124";s:3:"ntu";s:3:"125";s:3:"pan";s:3:"126";s:3:"pen";s:3:"127";s:3:"sah";s:3:"128";s:3:"tan";s:3:"129";s:3:"tu ";s:3:"130";s:3:"a k";s:3:"131";s:3:"ban";s:3:"132";s:3:"edu";s:3:"133";s:3:"eka";s:3:"134";s:3:"g d";s:3:"135";s:3:"ka ";s:3:"136";s:3:"ker";s:3:"137";s:3:"nde";s:3:"138";s:3:"nta";s:3:"139";s:3:"ora";s:3:"140";s:3:"usa";s:3:"141";s:3:" du";s:3:"142";s:3:" ma";s:3:"143";s:3:"a s";s:3:"144";s:3:"ai ";s:3:"145";s:3:"ant";s:3:"146";s:3:"bas";s:3:"147";s:3:"end";s:3:"148";s:3:"i d";s:3:"149";s:3:"ira";s:3:"150";s:3:"kam";s:3:"151";s:3:"lan";s:3:"152";s:3:"n s";s:3:"153";s:3:"uli";s:3:"154";s:3:"al ";s:3:"155";s:3:"apa";s:3:"156";s:3:"ere";s:3:"157";s:3:"ert";s:3:"158";s:3:"lia";s:3:"159";s:3:"mem";s:3:"160";s:3:"rka";s:3:"161";s:3:"si ";s:3:"162";s:3:"tal";s:3:"163";s:3:"ung";s:3:"164";s:3:" ak";s:3:"165";s:3:"a a";s:3:"166";s:3:"a w";s:3:"167";s:3:"ani";s:3:"168";s:3:"ask";s:3:"169";s:3:"ent";s:3:"170";s:3:"gar";s:3:"171";s:3:"haa";s:3:"172";s:3:"i i";s:3:"173";s:3:"isa";s:3:"174";s:3:"ked";s:3:"175";s:3:"mbe";s:3:"176";s:3:"ska";s:3:"177";s:3:"tor";s:3:"178";s:3:"uan";s:3:"179";s:3:"uk ";s:3:"180";s:3:"uka";s:3:"181";s:3:" ad";s:3:"182";s:3:" to";s:3:"183";s:3:"asa";s:3:"184";s:3:"aya";s:3:"185";s:3:"bag";s:3:"186";s:3:"dia";s:3:"187";s:3:"dun";s:3:"188";s:3:"erj";s:3:"189";s:3:"mas";s:3:"190";s:3:"na ";s:3:"191";s:3:"rek";s:3:"192";s:3:"rit";s:3:"193";s:3:"sih";s:3:"194";s:3:"us ";s:3:"195";s:3:" bi";s:3:"196";s:3:"a h";s:3:"197";s:3:"ama";s:3:"198";s:3:"dib";s:3:"199";s:3:"ers";s:3:"200";s:3:"g s";s:3:"201";s:3:"han";s:3:"202";s:3:"ik ";s:3:"203";s:3:"kem";s:3:"204";s:3:"ma ";s:3:"205";s:3:"n l";s:3:"206";s:3:"nit";s:3:"207";s:3:"r b";s:3:"208";s:3:"rja";s:3:"209";s:3:"sa ";s:3:"210";s:3:" ju";s:3:"211";s:3:" or";s:3:"212";s:3:" si";s:3:"213";s:3:" ti";s:3:"214";s:3:"a y";s:3:"215";s:3:"aga";s:3:"216";s:3:"any";s:3:"217";s:3:"as ";s:3:"218";s:3:"cul";s:3:"219";s:3:"eme";s:3:"220";s:3:"emu";s:3:"221";s:3:"eny";s:3:"222";s:3:"epa";s:3:"223";s:3:"erb";s:3:"224";s:3:"erl";s:3:"225";s:3:"gi ";s:3:"226";s:3:"h m";s:3:"227";s:3:"i a";s:3:"228";s:3:"kel";s:3:"229";s:3:"li ";s:3:"230";s:3:"mel";s:3:"231";s:3:"nia";s:3:"232";s:3:"opa";s:3:"233";s:3:"rta";s:3:"234";s:3:"sia";s:3:"235";s:3:"tah";s:3:"236";s:3:"ula";s:3:"237";s:3:"un ";s:3:"238";s:3:"unt";s:3:"239";s:3:" at";s:3:"240";s:3:" bu";s:3:"241";s:3:" pu";s:3:"242";s:3:" ta";s:3:"243";s:3:"agi";s:3:"244";s:3:"alu";s:3:"245";s:3:"amb";s:3:"246";s:3:"bah";s:3:"247";s:3:"bis";s:3:"248";s:3:"er ";s:3:"249";s:3:"i t";s:3:"250";s:3:"ibe";s:3:"251";s:3:"ir ";s:3:"252";s:3:"ja ";s:3:"253";s:3:"k m";s:3:"254";s:3:"kar";s:3:"255";s:3:"lai";s:3:"256";s:3:"lal";s:3:"257";s:3:"lu ";s:3:"258";s:3:"mpa";s:3:"259";s:3:"ngk";s:3:"260";s:3:"nja";s:3:"261";s:3:"or ";s:3:"262";s:3:"pa ";s:3:"263";s:3:"pas";s:3:"264";s:3:"pem";s:3:"265";s:3:"rak";s:3:"266";s:3:"rik";s:3:"267";s:3:"seb";s:3:"268";s:3:"tam";s:3:"269";s:3:"tem";s:3:"270";s:3:"top";s:3:"271";s:3:"tuk";s:3:"272";s:3:"uni";s:3:"273";s:3:"war";s:3:"274";s:3:" al";s:3:"275";s:3:" ga";s:3:"276";s:3:" ge";s:3:"277";s:3:" ir";s:3:"278";s:3:" ja";s:3:"279";s:3:" mu";s:3:"280";s:3:" na";s:3:"281";s:3:" pr";s:3:"282";s:3:" su";s:3:"283";s:3:" un";s:3:"284";s:3:"ad ";s:3:"285";s:3:"adi";s:3:"286";s:3:"akt";s:3:"287";s:3:"ann";s:3:"288";s:3:"apo";s:3:"289";s:3:"bel";s:3:"290";s:3:"bul";s:3:"291";s:3:"der";s:3:"292";s:3:"ega";s:3:"293";s:3:"eke";s:3:"294";s:3:"ema";s:3:"295";s:3:"emp";s:3:"296";s:3:"ene";s:3:"297";s:3:"enj";s:3:"298";s:3:"esa";s:3:"299";}s:7:"italian";a:300:{s:3:" di";s:1:"0";s:3:"to ";s:1:"1";s:3:"la ";s:1:"2";s:3:" de";s:1:"3";s:3:"di ";s:1:"4";s:3:"no ";s:1:"5";s:3:" co";s:1:"6";s:3:"re ";s:1:"7";s:3:"ion";s:1:"8";s:3:"e d";s:1:"9";s:3:" e ";s:2:"10";s:3:"le ";s:2:"11";s:3:"del";s:2:"12";s:3:"ne ";s:2:"13";s:3:"ti ";s:2:"14";s:3:"ell";s:2:"15";s:3:" la";s:2:"16";s:3:" un";s:2:"17";s:3:"ni ";s:2:"18";s:3:"i d";s:2:"19";s:3:"per";s:2:"20";s:3:" pe";s:2:"21";s:3:"ent";s:2:"22";s:3:" in";s:2:"23";s:3:"one";s:2:"24";s:3:"he ";s:2:"25";s:3:"ta ";s:2:"26";s:3:"zio";s:2:"27";s:3:"che";s:2:"28";s:3:"o d";s:2:"29";s:3:"a d";s:2:"30";s:3:"na ";s:2:"31";s:3:"ato";s:2:"32";s:3:"e s";s:2:"33";s:3:" so";s:2:"34";s:3:"i s";s:2:"35";s:3:"lla";s:2:"36";s:3:"a p";s:2:"37";s:3:"li ";s:2:"38";s:3:"te ";s:2:"39";s:3:" al";s:2:"40";s:3:" ch";s:2:"41";s:3:"er ";s:2:"42";s:3:" pa";s:2:"43";s:3:" si";s:2:"44";s:3:"con";s:2:"45";s:3:"sta";s:2:"46";s:3:" pr";s:2:"47";s:3:"a c";s:2:"48";s:3:" se";s:2:"49";s:3:"el ";s:2:"50";s:3:"ia ";s:2:"51";s:3:"si ";s:2:"52";s:3:"e p";s:2:"53";s:3:" da";s:2:"54";s:3:"e i";s:2:"55";s:3:"i p";s:2:"56";s:3:"ont";s:2:"57";s:3:"ano";s:2:"58";s:3:"i c";s:2:"59";s:3:"all";s:2:"60";s:3:"azi";s:2:"61";s:3:"nte";s:2:"62";s:3:"on ";s:2:"63";s:3:"nti";s:2:"64";s:3:"o s";s:2:"65";s:3:" ri";s:2:"66";s:3:"i a";s:2:"67";s:3:"o a";s:2:"68";s:3:"un ";s:2:"69";s:3:" an";s:2:"70";s:3:"are";s:2:"71";s:3:"ari";s:2:"72";s:3:"e a";s:2:"73";s:3:"i e";s:2:"74";s:3:"ita";s:2:"75";s:3:"men";s:2:"76";s:3:"ri ";s:2:"77";s:3:" ca";s:2:"78";s:3:" il";s:2:"79";s:3:" no";s:2:"80";s:3:" po";s:2:"81";s:3:"a s";s:2:"82";s:3:"ant";s:2:"83";s:3:"il ";s:2:"84";s:3:"in ";s:2:"85";s:3:"a l";s:2:"86";s:3:"ati";s:2:"87";s:3:"cia";s:2:"88";s:3:"e c";s:2:"89";s:3:"ro ";s:2:"90";s:3:"ann";s:2:"91";s:3:"est";s:2:"92";s:3:"gli";s:2:"93";s:4:"tà ";s:2:"94";s:3:" qu";s:2:"95";s:3:"e l";s:2:"96";s:3:"nta";s:2:"97";s:3:" a ";s:2:"98";s:3:"com";s:2:"99";s:3:"o c";s:3:"100";s:3:"ra ";s:3:"101";s:3:" le";s:3:"102";s:3:" ne";s:3:"103";s:3:"ali";s:3:"104";s:3:"ere";s:3:"105";s:3:"ist";s:3:"106";s:3:" ma";s:3:"107";s:4:" è ";s:3:"108";s:3:"io ";s:3:"109";s:3:"lle";s:3:"110";s:3:"me ";s:3:"111";s:3:"era";s:3:"112";s:3:"ica";s:3:"113";s:3:"ost";s:3:"114";s:3:"pro";s:3:"115";s:3:"tar";s:3:"116";s:3:"una";s:3:"117";s:3:" pi";s:3:"118";s:3:"da ";s:3:"119";s:3:"tat";s:3:"120";s:3:" mi";s:3:"121";s:3:"att";s:3:"122";s:3:"ca ";s:3:"123";s:3:"mo ";s:3:"124";s:3:"non";s:3:"125";s:3:"par";s:3:"126";s:3:"sti";s:3:"127";s:3:" fa";s:3:"128";s:3:" i ";s:3:"129";s:3:" re";s:3:"130";s:3:" su";s:3:"131";s:3:"ess";s:3:"132";s:3:"ini";s:3:"133";s:3:"nto";s:3:"134";s:3:"o l";s:3:"135";s:3:"ssi";s:3:"136";s:3:"tto";s:3:"137";s:3:"a e";s:3:"138";s:3:"ame";s:3:"139";s:3:"col";s:3:"140";s:3:"ei ";s:3:"141";s:3:"ma ";s:3:"142";s:3:"o i";s:3:"143";s:3:"za ";s:3:"144";s:3:" st";s:3:"145";s:3:"a a";s:3:"146";s:3:"ale";s:3:"147";s:3:"anc";s:3:"148";s:3:"ani";s:3:"149";s:3:"i m";s:3:"150";s:3:"ian";s:3:"151";s:3:"o p";s:3:"152";s:3:"oni";s:3:"153";s:3:"sio";s:3:"154";s:3:"tan";s:3:"155";s:3:"tti";s:3:"156";s:3:" lo";s:3:"157";s:3:"i r";s:3:"158";s:3:"oci";s:3:"159";s:3:"oli";s:3:"160";s:3:"ona";s:3:"161";s:3:"ono";s:3:"162";s:3:"tra";s:3:"163";s:3:" l ";s:3:"164";s:3:"a r";s:3:"165";s:3:"eri";s:3:"166";s:3:"ett";s:3:"167";s:3:"lo ";s:3:"168";s:3:"nza";s:3:"169";s:3:"que";s:3:"170";s:3:"str";s:3:"171";s:3:"ter";s:3:"172";s:3:"tta";s:3:"173";s:3:" ba";s:3:"174";s:3:" li";s:3:"175";s:3:" te";s:3:"176";s:3:"ass";s:3:"177";s:3:"e f";s:3:"178";s:3:"enz";s:3:"179";s:3:"for";s:3:"180";s:3:"nno";s:3:"181";s:3:"olo";s:3:"182";s:3:"ori";s:3:"183";s:3:"res";s:3:"184";s:3:"tor";s:3:"185";s:3:" ci";s:3:"186";s:3:" vo";s:3:"187";s:3:"a i";s:3:"188";s:3:"al ";s:3:"189";s:3:"chi";s:3:"190";s:3:"e n";s:3:"191";s:3:"lia";s:3:"192";s:3:"pre";s:3:"193";s:3:"ria";s:3:"194";s:3:"uni";s:3:"195";s:3:"ver";s:3:"196";s:3:" sp";s:3:"197";s:3:"imo";s:3:"198";s:3:"l a";s:3:"199";s:3:"l c";s:3:"200";s:3:"ran";s:3:"201";s:3:"sen";s:3:"202";s:3:"soc";s:3:"203";s:3:"tic";s:3:"204";s:3:" fi";s:3:"205";s:3:" mo";s:3:"206";s:3:"a n";s:3:"207";s:3:"ce ";s:3:"208";s:3:"dei";s:3:"209";s:3:"ggi";s:3:"210";s:3:"gio";s:3:"211";s:3:"iti";s:3:"212";s:3:"l s";s:3:"213";s:3:"lit";s:3:"214";s:3:"ll ";s:3:"215";s:3:"mon";s:3:"216";s:3:"ola";s:3:"217";s:3:"pac";s:3:"218";s:3:"sim";s:3:"219";s:3:"tit";s:3:"220";s:3:"utt";s:3:"221";s:3:"vol";s:3:"222";s:3:" ar";s:3:"223";s:3:" fo";s:3:"224";s:3:" ha";s:3:"225";s:3:" sa";s:3:"226";s:3:"acc";s:3:"227";s:3:"e r";s:3:"228";s:3:"ire";s:3:"229";s:3:"man";s:3:"230";s:3:"ntr";s:3:"231";s:3:"rat";s:3:"232";s:3:"sco";s:3:"233";s:3:"tro";s:3:"234";s:3:"tut";s:3:"235";s:3:"va ";s:3:"236";s:3:" do";s:3:"237";s:3:" gi";s:3:"238";s:3:" me";s:3:"239";s:3:" sc";s:3:"240";s:3:" tu";s:3:"241";s:3:" ve";s:3:"242";s:3:" vi";s:3:"243";s:3:"a m";s:3:"244";s:3:"ber";s:3:"245";s:3:"can";s:3:"246";s:3:"cit";s:3:"247";s:3:"i l";s:3:"248";s:3:"ier";s:3:"249";s:4:"ità";s:3:"250";s:3:"lli";s:3:"251";s:3:"min";s:3:"252";s:3:"n p";s:3:"253";s:3:"nat";s:3:"254";s:3:"nda";s:3:"255";s:3:"o e";s:3:"256";s:3:"o f";s:3:"257";s:3:"o u";s:3:"258";s:3:"ore";s:3:"259";s:3:"oro";s:3:"260";s:3:"ort";s:3:"261";s:3:"sto";s:3:"262";s:3:"ten";s:3:"263";s:3:"tiv";s:3:"264";s:3:"van";s:3:"265";s:3:"art";s:3:"266";s:3:"cco";s:3:"267";s:3:"ci ";s:3:"268";s:3:"cos";s:3:"269";s:3:"dal";s:3:"270";s:3:"e v";s:3:"271";s:3:"i i";s:3:"272";s:3:"ila";s:3:"273";s:3:"ino";s:3:"274";s:3:"l p";s:3:"275";s:3:"n c";s:3:"276";s:3:"nit";s:3:"277";s:3:"ole";s:3:"278";s:3:"ome";s:3:"279";s:3:"po ";s:3:"280";s:3:"rio";s:3:"281";s:3:"sa ";s:3:"282";s:3:" ce";s:3:"283";s:3:" es";s:3:"284";s:3:" tr";s:3:"285";s:3:"a b";s:3:"286";s:3:"and";s:3:"287";s:3:"ata";s:3:"288";s:3:"der";s:3:"289";s:3:"ens";s:3:"290";s:3:"ers";s:3:"291";s:3:"gi ";s:3:"292";s:3:"ial";s:3:"293";s:3:"ina";s:3:"294";s:3:"itt";s:3:"295";s:3:"izi";s:3:"296";s:3:"lan";s:3:"297";s:3:"lor";s:3:"298";s:3:"mil";s:3:"299";}s:6:"kazakh";a:300:{s:5:"ан ";s:1:"0";s:5:"ен ";s:1:"1";s:5:"ың ";s:1:"2";s:5:" қа";s:1:"3";s:5:" ба";s:1:"4";s:5:"ай ";s:1:"5";s:6:"нда";s:1:"6";s:5:"ын ";s:1:"7";s:5:" са";s:1:"8";s:5:" ал";s:1:"9";s:5:"ді ";s:2:"10";s:6:"ары";s:2:"11";s:5:"ды ";s:2:"12";s:5:"ып ";s:2:"13";s:5:" мұ";s:2:"14";s:5:" бі";s:2:"15";s:6:"асы";s:2:"16";s:5:"да ";s:2:"17";s:6:"най";s:2:"18";s:5:" жа";s:2:"19";s:6:"мұн";s:2:"20";s:6:"ста";s:2:"21";s:6:"ған";s:2:"22";s:5:"н б";s:2:"23";s:6:"ұна";s:2:"24";s:5:" бо";s:2:"25";s:6:"ның";s:2:"26";s:5:"ін ";s:2:"27";s:6:"лар";s:2:"28";s:6:"сын";s:2:"29";s:5:" де";s:2:"30";s:6:"аға";s:2:"31";s:6:"тан";s:2:"32";s:5:" кө";s:2:"33";s:6:"бір";s:2:"34";s:5:"ер ";s:2:"35";s:6:"мен";s:2:"36";s:6:"аза";s:2:"37";s:6:"ынд";s:2:"38";s:6:"ыны";s:2:"39";s:5:" ме";s:2:"40";s:6:"анд";s:2:"41";s:6:"ері";s:2:"42";s:6:"бол";s:2:"43";s:6:"дың";s:2:"44";s:6:"қаз";s:2:"45";s:6:"аты";s:2:"46";s:5:"сы ";s:2:"47";s:6:"тын";s:2:"48";s:5:"ғы ";s:2:"49";s:5:" ке";s:2:"50";s:5:"ар ";s:2:"51";s:6:"зақ";s:2:"52";s:5:"ық ";s:2:"53";s:6:"ала";s:2:"54";s:6:"алы";s:2:"55";s:6:"аны";s:2:"56";s:6:"ара";s:2:"57";s:6:"ағы";s:2:"58";s:6:"ген";s:2:"59";s:6:"тар";s:2:"60";s:6:"тер";s:2:"61";s:6:"тыр";s:2:"62";s:6:"айд";s:2:"63";s:6:"ард";s:2:"64";s:5:"де ";s:2:"65";s:5:"ға ";s:2:"66";s:5:" қо";s:2:"67";s:6:"бар";s:2:"68";s:5:"ің ";s:2:"69";s:6:"қан";s:2:"70";s:5:" бе";s:2:"71";s:5:" қы";s:2:"72";s:6:"ақс";s:2:"73";s:6:"гер";s:2:"74";s:6:"дан";s:2:"75";s:6:"дар";s:2:"76";s:6:"лық";s:2:"77";s:6:"лға";s:2:"78";s:6:"ына";s:2:"79";s:5:"ір ";s:2:"80";s:6:"ірі";s:2:"81";s:6:"ғас";s:2:"82";s:5:" та";s:2:"83";s:5:"а б";s:2:"84";s:5:"гі ";s:2:"85";s:6:"еді";s:2:"86";s:6:"еле";s:2:"87";s:6:"йды";s:2:"88";s:5:"н к";s:2:"89";s:5:"н т";s:2:"90";s:6:"ола";s:2:"91";s:6:"рын";s:2:"92";s:5:"іп ";s:2:"93";s:6:"қст";s:2:"94";s:6:"қта";s:2:"95";s:5:"ң б";s:2:"96";s:5:" ай";s:2:"97";s:5:" ол";s:2:"98";s:5:" со";s:2:"99";s:6:"айт";s:3:"100";s:6:"дағ";s:3:"101";s:6:"иге";s:3:"102";s:6:"лер";s:3:"103";s:6:"лып";s:3:"104";s:5:"н а";s:3:"105";s:5:"ік ";s:3:"106";s:6:"ақт";s:3:"107";s:6:"бағ";s:3:"108";s:6:"кен";s:3:"109";s:5:"н қ";s:3:"110";s:5:"ны ";s:3:"111";s:6:"рге";s:3:"112";s:6:"рға";s:3:"113";s:5:"ыр ";s:3:"114";s:5:" ар";s:3:"115";s:6:"алғ";s:3:"116";s:6:"аса";s:3:"117";s:6:"бас";s:3:"118";s:6:"бер";s:3:"119";s:5:"ге ";s:3:"120";s:6:"еті";s:3:"121";s:5:"на ";s:3:"122";s:6:"нде";s:3:"123";s:5:"не ";s:3:"124";s:6:"ниг";s:3:"125";s:6:"рды";s:3:"126";s:5:"ры ";s:3:"127";s:6:"сай";s:3:"128";s:5:" ау";s:3:"129";s:5:" кү";s:3:"130";s:5:" ни";s:3:"131";s:5:" от";s:3:"132";s:5:" өз";s:3:"133";s:6:"ауд";s:3:"134";s:5:"еп ";s:3:"135";s:6:"иял";s:3:"136";s:6:"лты";s:3:"137";s:5:"н ж";s:3:"138";s:5:"н о";s:3:"139";s:6:"осы";s:3:"140";s:6:"оты";s:3:"141";s:6:"рып";s:3:"142";s:5:"рі ";s:3:"143";s:6:"тке";s:3:"144";s:5:"ты ";s:3:"145";s:5:"ы б";s:3:"146";s:5:"ы ж";s:3:"147";s:6:"ылы";s:3:"148";s:6:"ысы";s:3:"149";s:5:"і с";s:3:"150";s:6:"қар";s:3:"151";s:5:" бұ";s:3:"152";s:5:" да";s:3:"153";s:5:" же";s:3:"154";s:5:" тұ";s:3:"155";s:5:" құ";s:3:"156";s:6:"ады";s:3:"157";s:6:"айл";s:3:"158";s:5:"ап ";s:3:"159";s:6:"ата";s:3:"160";s:6:"ені";s:3:"161";s:6:"йла";s:3:"162";s:5:"н м";s:3:"163";s:5:"н с";s:3:"164";s:6:"нды";s:3:"165";s:6:"нді";s:3:"166";s:5:"р м";s:3:"167";s:6:"тай";s:3:"168";s:6:"тін";s:3:"169";s:5:"ы т";s:3:"170";s:5:"ыс ";s:3:"171";s:6:"інд";s:3:"172";s:5:" би";s:3:"173";s:5:"а ж";s:3:"174";s:6:"ауы";s:3:"175";s:6:"деп";s:3:"176";s:6:"дің";s:3:"177";s:6:"еке";s:3:"178";s:6:"ери";s:3:"179";s:6:"йын";s:3:"180";s:6:"кел";s:3:"181";s:6:"лды";s:3:"182";s:5:"ма ";s:3:"183";s:6:"нан";s:3:"184";s:6:"оны";s:3:"185";s:5:"п ж";s:3:"186";s:5:"п о";s:3:"187";s:5:"р б";s:3:"188";s:6:"рия";s:3:"189";s:6:"рла";s:3:"190";s:6:"уда";s:3:"191";s:6:"шыл";s:3:"192";s:5:"ы а";s:3:"193";s:6:"ықт";s:3:"194";s:5:"і а";s:3:"195";s:5:"і б";s:3:"196";s:5:"із ";s:3:"197";s:6:"ілі";s:3:"198";s:5:"ң қ";s:3:"199";s:5:" ас";s:3:"200";s:5:" ек";s:3:"201";s:5:" жо";s:3:"202";s:5:" мә";s:3:"203";s:5:" ос";s:3:"204";s:5:" ре";s:3:"205";s:5:" се";s:3:"206";s:6:"алд";s:3:"207";s:6:"дал";s:3:"208";s:6:"дег";s:3:"209";s:6:"дей";s:3:"210";s:5:"е б";s:3:"211";s:5:"ет ";s:3:"212";s:6:"жас";s:3:"213";s:5:"й б";s:3:"214";s:6:"лау";s:3:"215";s:6:"лда";s:3:"216";s:6:"мет";s:3:"217";s:6:"нын";s:3:"218";s:6:"сар";s:3:"219";s:5:"сі ";s:3:"220";s:5:"ті ";s:3:"221";s:6:"ыры";s:3:"222";s:6:"ыта";s:3:"223";s:6:"ісі";s:3:"224";s:5:"ң а";s:3:"225";s:6:"өте";s:3:"226";s:5:" ат";s:3:"227";s:5:" ел";s:3:"228";s:5:" жү";s:3:"229";s:5:" ма";s:3:"230";s:5:" то";s:3:"231";s:5:" шы";s:3:"232";s:5:"а а";s:3:"233";s:6:"алт";s:3:"234";s:6:"ама";s:3:"235";s:6:"арл";s:3:"236";s:6:"аст";s:3:"237";s:6:"бұл";s:3:"238";s:6:"дай";s:3:"239";s:6:"дық";s:3:"240";s:5:"ек ";s:3:"241";s:6:"ель";s:3:"242";s:6:"есі";s:3:"243";s:6:"зді";s:3:"244";s:6:"көт";s:3:"245";s:6:"лем";s:3:"246";s:5:"ль ";s:3:"247";s:5:"н е";s:3:"248";s:5:"п а";s:3:"249";s:5:"р а";s:3:"250";s:6:"рес";s:3:"251";s:5:"са ";s:3:"252";s:5:"та ";s:3:"253";s:6:"тте";s:3:"254";s:6:"тұр";s:3:"255";s:5:"шы ";s:3:"256";s:5:"ы д";s:3:"257";s:5:"ы қ";s:3:"258";s:5:"ыз ";s:3:"259";s:6:"қыт";s:3:"260";s:5:" ко";s:3:"261";s:5:" не";s:3:"262";s:5:" ой";s:3:"263";s:5:" ор";s:3:"264";s:5:" сұ";s:3:"265";s:5:" тү";s:3:"266";s:6:"аль";s:3:"267";s:6:"аре";s:3:"268";s:6:"атт";s:3:"269";s:6:"дір";s:3:"270";s:5:"ев ";s:3:"271";s:6:"егі";s:3:"272";s:6:"еда";s:3:"273";s:6:"екі";s:3:"274";s:6:"елд";s:3:"275";s:6:"ерг";s:3:"276";s:6:"ерд";s:3:"277";s:6:"ияд";s:3:"278";s:6:"кер";s:3:"279";s:6:"кет";s:3:"280";s:6:"лыс";s:3:"281";s:6:"ліс";s:3:"282";s:6:"мед";s:3:"283";s:6:"мпи";s:3:"284";s:5:"н д";s:3:"285";s:5:"ні ";s:3:"286";s:6:"нін";s:3:"287";s:5:"п т";s:3:"288";s:6:"пек";s:3:"289";s:6:"рел";s:3:"290";s:6:"рта";s:3:"291";s:6:"ріл";s:3:"292";s:6:"рін";s:3:"293";s:6:"сен";s:3:"294";s:6:"тал";s:3:"295";s:6:"шіл";s:3:"296";s:5:"ы к";s:3:"297";s:5:"ы м";s:3:"298";s:6:"ыст";s:3:"299";}s:6:"kyrgyz";a:300:{s:5:"ын ";s:1:"0";s:5:"ан ";s:1:"1";s:5:" жа";s:1:"2";s:5:"ен ";s:1:"3";s:5:"да ";s:1:"4";s:5:" та";s:1:"5";s:5:"ар ";s:1:"6";s:5:"ин ";s:1:"7";s:5:" ка";s:1:"8";s:6:"ары";s:1:"9";s:5:" ал";s:2:"10";s:5:" ба";s:2:"11";s:5:" би";s:2:"12";s:6:"лар";s:2:"13";s:5:" бо";s:2:"14";s:5:" кы";s:2:"15";s:6:"ала";s:2:"16";s:5:"н к";s:2:"17";s:5:" са";s:2:"18";s:6:"нда";s:2:"19";s:6:"ган";s:2:"20";s:6:"тар";s:2:"21";s:5:" де";s:2:"22";s:6:"анд";s:2:"23";s:5:"н б";s:2:"24";s:5:" ке";s:2:"25";s:6:"ард";s:2:"26";s:6:"мен";s:2:"27";s:5:"н т";s:2:"28";s:6:"ара";s:2:"29";s:6:"нын";s:2:"30";s:5:" да";s:2:"31";s:5:" ме";s:2:"32";s:6:"кыр";s:2:"33";s:5:" че";s:2:"34";s:5:"н а";s:2:"35";s:5:"ры ";s:2:"36";s:5:" ко";s:2:"37";s:6:"ген";s:2:"38";s:6:"дар";s:2:"39";s:6:"кен";s:2:"40";s:6:"кта";s:2:"41";s:5:"уу ";s:2:"42";s:6:"ене";s:2:"43";s:6:"ери";s:2:"44";s:5:" ша";s:2:"45";s:6:"алы";s:2:"46";s:5:"ат ";s:2:"47";s:5:"на ";s:2:"48";s:5:" кө";s:2:"49";s:5:" эм";s:2:"50";s:6:"аты";s:2:"51";s:6:"дан";s:2:"52";s:6:"деп";s:2:"53";s:6:"дын";s:2:"54";s:5:"еп ";s:2:"55";s:6:"нен";s:2:"56";s:6:"рын";s:2:"57";s:5:" бе";s:2:"58";s:6:"кан";s:2:"59";s:6:"луу";s:2:"60";s:6:"ргы";s:2:"61";s:6:"тан";s:2:"62";s:6:"шай";s:2:"63";s:6:"ырг";s:2:"64";s:5:"үн ";s:2:"65";s:5:" ар";s:2:"66";s:5:" ма";s:2:"67";s:6:"агы";s:2:"68";s:6:"акт";s:2:"69";s:6:"аны";s:2:"70";s:5:"гы ";s:2:"71";s:6:"гыз";s:2:"72";s:5:"ды ";s:2:"73";s:6:"рда";s:2:"74";s:5:"ай ";s:2:"75";s:6:"бир";s:2:"76";s:6:"бол";s:2:"77";s:5:"ер ";s:2:"78";s:5:"н с";s:2:"79";s:6:"нды";s:2:"80";s:5:"ун ";s:2:"81";s:5:"ча ";s:2:"82";s:6:"ынд";s:2:"83";s:5:"а к";s:2:"84";s:6:"ага";s:2:"85";s:6:"айл";s:2:"86";s:6:"ана";s:2:"87";s:5:"ап ";s:2:"88";s:5:"га ";s:2:"89";s:6:"лге";s:2:"90";s:6:"нча";s:2:"91";s:5:"п к";s:2:"92";s:6:"рды";s:2:"93";s:6:"туу";s:2:"94";s:6:"ыны";s:2:"95";s:5:" ан";s:2:"96";s:5:" өз";s:2:"97";s:6:"ама";s:2:"98";s:6:"ата";s:2:"99";s:6:"дин";s:3:"100";s:5:"йт ";s:3:"101";s:6:"лга";s:3:"102";s:6:"лоо";s:3:"103";s:5:"оо ";s:3:"104";s:5:"ри ";s:3:"105";s:6:"тин";s:3:"106";s:5:"ыз ";s:3:"107";s:5:"ып ";s:3:"108";s:6:"өрү";s:3:"109";s:5:" па";s:3:"110";s:5:" эк";s:3:"111";s:5:"а б";s:3:"112";s:6:"алг";s:3:"113";s:6:"асы";s:3:"114";s:6:"ашт";s:3:"115";s:6:"биз";s:3:"116";s:6:"кел";s:3:"117";s:6:"кте";s:3:"118";s:6:"тал";s:3:"119";s:5:" не";s:3:"120";s:5:" су";s:3:"121";s:6:"акы";s:3:"122";s:6:"ент";s:3:"123";s:6:"инд";s:3:"124";s:5:"ир ";s:3:"125";s:6:"кал";s:3:"126";s:5:"н д";s:3:"127";s:6:"нде";s:3:"128";s:6:"ого";s:3:"129";s:6:"онд";s:3:"130";s:6:"оюн";s:3:"131";s:5:"р б";s:3:"132";s:5:"р м";s:3:"133";s:6:"ран";s:3:"134";s:6:"сал";s:3:"135";s:6:"ста";s:3:"136";s:5:"сы ";s:3:"137";s:6:"ура";s:3:"138";s:6:"ыгы";s:3:"139";s:5:" аш";s:3:"140";s:5:" ми";s:3:"141";s:5:" сы";s:3:"142";s:5:" ту";s:3:"143";s:5:"ал ";s:3:"144";s:6:"арт";s:3:"145";s:6:"бор";s:3:"146";s:6:"елг";s:3:"147";s:6:"ени";s:3:"148";s:5:"ет ";s:3:"149";s:6:"жат";s:3:"150";s:6:"йло";s:3:"151";s:6:"кар";s:3:"152";s:5:"н м";s:3:"153";s:6:"огу";s:3:"154";s:5:"п а";s:3:"155";s:5:"п ж";s:3:"156";s:5:"р э";s:3:"157";s:6:"сын";s:3:"158";s:5:"ык ";s:3:"159";s:6:"юнч";s:3:"160";s:5:" бу";s:3:"161";s:5:" ур";s:3:"162";s:5:"а а";s:3:"163";s:5:"ак ";s:3:"164";s:6:"алд";s:3:"165";s:6:"алу";s:3:"166";s:6:"бар";s:3:"167";s:6:"бер";s:3:"168";s:6:"бою";s:3:"169";s:5:"ге ";s:3:"170";s:6:"дон";s:3:"171";s:6:"еги";s:3:"172";s:6:"ект";s:3:"173";s:6:"ефт";s:3:"174";s:5:"из ";s:3:"175";s:6:"кат";s:3:"176";s:6:"лды";s:3:"177";s:5:"н ч";s:3:"178";s:5:"н э";s:3:"179";s:5:"н ө";s:3:"180";s:6:"ндо";s:3:"181";s:6:"неф";s:3:"182";s:5:"он ";s:3:"183";s:6:"сат";s:3:"184";s:6:"тор";s:3:"185";s:5:"ты ";s:3:"186";s:6:"уда";s:3:"187";s:5:"ул ";s:3:"188";s:6:"ула";s:3:"189";s:6:"ууд";s:3:"190";s:5:"ы б";s:3:"191";s:5:"ы ж";s:3:"192";s:5:"ы к";s:3:"193";s:5:"ыл ";s:3:"194";s:6:"ына";s:3:"195";s:6:"эке";s:3:"196";s:6:"ясы";s:3:"197";s:5:" ат";s:3:"198";s:5:" до";s:3:"199";s:5:" жы";s:3:"200";s:5:" со";s:3:"201";s:5:" чы";s:3:"202";s:6:"аас";s:3:"203";s:6:"айт";s:3:"204";s:6:"аст";s:3:"205";s:6:"баа";s:3:"206";s:6:"баш";s:3:"207";s:6:"гар";s:3:"208";s:6:"гын";s:3:"209";s:5:"дө ";s:3:"210";s:5:"е б";s:3:"211";s:5:"ек ";s:3:"212";s:6:"жыл";s:3:"213";s:5:"и б";s:3:"214";s:5:"ик ";s:3:"215";s:6:"ияс";s:3:"216";s:6:"кыз";s:3:"217";s:6:"лда";s:3:"218";s:6:"лык";s:3:"219";s:6:"мда";s:3:"220";s:5:"н ж";s:3:"221";s:6:"нди";s:3:"222";s:5:"ни ";s:3:"223";s:6:"нин";s:3:"224";s:6:"орд";s:3:"225";s:6:"рдо";s:3:"226";s:6:"сто";s:3:"227";s:5:"та ";s:3:"228";s:6:"тер";s:3:"229";s:6:"тти";s:3:"230";s:6:"тур";s:3:"231";s:6:"тын";s:3:"232";s:5:"уп ";s:3:"233";s:6:"ушу";s:3:"234";s:6:"фти";s:3:"235";s:6:"ыкт";s:3:"236";s:5:"үп ";s:3:"237";s:5:"өн ";s:3:"238";s:5:" ай";s:3:"239";s:5:" бү";s:3:"240";s:5:" ич";s:3:"241";s:5:" иш";s:3:"242";s:5:" мо";s:3:"243";s:5:" пр";s:3:"244";s:5:" ре";s:3:"245";s:5:" өк";s:3:"246";s:5:" өт";s:3:"247";s:5:"а д";s:3:"248";s:5:"а у";s:3:"249";s:5:"а э";s:3:"250";s:6:"айм";s:3:"251";s:6:"амд";s:3:"252";s:6:"атт";s:3:"253";s:6:"бек";s:3:"254";s:6:"бул";s:3:"255";s:6:"гол";s:3:"256";s:6:"дег";s:3:"257";s:6:"еге";s:3:"258";s:6:"ейт";s:3:"259";s:6:"еле";s:3:"260";s:6:"енд";s:3:"261";s:6:"жак";s:3:"262";s:5:"и к";s:3:"263";s:6:"ини";s:3:"264";s:6:"ири";s:3:"265";s:6:"йма";s:3:"266";s:6:"кто";s:3:"267";s:6:"лик";s:3:"268";s:6:"мак";s:3:"269";s:6:"мес";s:3:"270";s:5:"н у";s:3:"271";s:5:"н ш";s:3:"272";s:6:"нтт";s:3:"273";s:5:"ол ";s:3:"274";s:6:"оло";s:3:"275";s:6:"пар";s:3:"276";s:6:"рак";s:3:"277";s:6:"рүү";s:3:"278";s:6:"сыр";s:3:"279";s:5:"ти ";s:3:"280";s:6:"тик";s:3:"281";s:6:"тта";s:3:"282";s:6:"төр";s:3:"283";s:5:"у ж";s:3:"284";s:5:"у с";s:3:"285";s:6:"шка";s:3:"286";s:5:"ы м";s:3:"287";s:6:"ызы";s:3:"288";s:6:"ылд";s:3:"289";s:6:"эме";s:3:"290";s:6:"үрү";s:3:"291";s:6:"өлү";s:3:"292";s:6:"өтө";s:3:"293";s:5:" же";s:3:"294";s:5:" тү";s:3:"295";s:5:" эл";s:3:"296";s:5:" өн";s:3:"297";s:5:"а ж";s:3:"298";s:6:"ады";s:3:"299";}s:5:"latin";a:300:{s:3:"um ";s:1:"0";s:3:"us ";s:1:"1";s:3:"ut ";s:1:"2";s:3:"et ";s:1:"3";s:3:"is ";s:1:"4";s:3:" et";s:1:"5";s:3:" in";s:1:"6";s:3:" qu";s:1:"7";s:3:"tur";s:1:"8";s:3:" pr";s:1:"9";s:3:"est";s:2:"10";s:3:"tio";s:2:"11";s:3:" au";s:2:"12";s:3:"am ";s:2:"13";s:3:"em ";s:2:"14";s:3:"aut";s:2:"15";s:3:" di";s:2:"16";s:3:"ent";s:2:"17";s:3:"in ";s:2:"18";s:3:"dic";s:2:"19";s:3:"t e";s:2:"20";s:3:" es";s:2:"21";s:3:"ur ";s:2:"22";s:3:"ati";s:2:"23";s:3:"ion";s:2:"24";s:3:"st ";s:2:"25";s:3:" ut";s:2:"26";s:3:"ae ";s:2:"27";s:3:"qua";s:2:"28";s:3:" de";s:2:"29";s:3:"nt ";s:2:"30";s:3:" su";s:2:"31";s:3:" si";s:2:"32";s:3:"itu";s:2:"33";s:3:"unt";s:2:"34";s:3:"rum";s:2:"35";s:3:"ia ";s:2:"36";s:3:"es ";s:2:"37";s:3:"ter";s:2:"38";s:3:" re";s:2:"39";s:3:"nti";s:2:"40";s:3:"rae";s:2:"41";s:3:"s e";s:2:"42";s:3:"qui";s:2:"43";s:3:"io ";s:2:"44";s:3:"pro";s:2:"45";s:3:"it ";s:2:"46";s:3:"per";s:2:"47";s:3:"ita";s:2:"48";s:3:"one";s:2:"49";s:3:"ici";s:2:"50";s:3:"ius";s:2:"51";s:3:" co";s:2:"52";s:3:"t d";s:2:"53";s:3:"bus";s:2:"54";s:3:"pra";s:2:"55";s:3:"m e";s:2:"56";s:3:" no";s:2:"57";s:3:"edi";s:2:"58";s:3:"tia";s:2:"59";s:3:"ue ";s:2:"60";s:3:"ibu";s:2:"61";s:3:" se";s:2:"62";s:3:" ad";s:2:"63";s:3:"er ";s:2:"64";s:3:" fi";s:2:"65";s:3:"ili";s:2:"66";s:3:"que";s:2:"67";s:3:"t i";s:2:"68";s:3:"de ";s:2:"69";s:3:"oru";s:2:"70";s:3:" te";s:2:"71";s:3:"ali";s:2:"72";s:3:" pe";s:2:"73";s:3:"aed";s:2:"74";s:3:"cit";s:2:"75";s:3:"m d";s:2:"76";s:3:"t s";s:2:"77";s:3:"tat";s:2:"78";s:3:"tem";s:2:"79";s:3:"tis";s:2:"80";s:3:"t p";s:2:"81";s:3:"sti";s:2:"82";s:3:"te ";s:2:"83";s:3:"cum";s:2:"84";s:3:"ere";s:2:"85";s:3:"ium";s:2:"86";s:3:" ex";s:2:"87";s:3:"rat";s:2:"88";s:3:"ta ";s:2:"89";s:3:"con";s:2:"90";s:3:"cti";s:2:"91";s:3:"oni";s:2:"92";s:3:"ra ";s:2:"93";s:3:"s i";s:2:"94";s:3:" cu";s:2:"95";s:3:" sa";s:2:"96";s:3:"eni";s:2:"97";s:3:"nis";s:2:"98";s:3:"nte";s:2:"99";s:3:"eri";s:3:"100";s:3:"omi";s:3:"101";s:3:"re ";s:3:"102";s:3:"s a";s:3:"103";s:3:"min";s:3:"104";s:3:"os ";s:3:"105";s:3:"ti ";s:3:"106";s:3:"uer";s:3:"107";s:3:" ma";s:3:"108";s:3:" ue";s:3:"109";s:3:"m s";s:3:"110";s:3:"nem";s:3:"111";s:3:"t m";s:3:"112";s:3:" mo";s:3:"113";s:3:" po";s:3:"114";s:3:" ui";s:3:"115";s:3:"gen";s:3:"116";s:3:"ict";s:3:"117";s:3:"m i";s:3:"118";s:3:"ris";s:3:"119";s:3:"s s";s:3:"120";s:3:"t a";s:3:"121";s:3:"uae";s:3:"122";s:3:" do";s:3:"123";s:3:"m a";s:3:"124";s:3:"t c";s:3:"125";s:3:" ge";s:3:"126";s:3:"as ";s:3:"127";s:3:"e i";s:3:"128";s:3:"e p";s:3:"129";s:3:"ne ";s:3:"130";s:3:" ca";s:3:"131";s:3:"ine";s:3:"132";s:3:"quo";s:3:"133";s:3:"s p";s:3:"134";s:3:" al";s:3:"135";s:3:"e e";s:3:"136";s:3:"ntu";s:3:"137";s:3:"ro ";s:3:"138";s:3:"tri";s:3:"139";s:3:"tus";s:3:"140";s:3:"uit";s:3:"141";s:3:"atu";s:3:"142";s:3:"ini";s:3:"143";s:3:"iqu";s:3:"144";s:3:"m p";s:3:"145";s:3:"ost";s:3:"146";s:3:"res";s:3:"147";s:3:"ura";s:3:"148";s:3:" ac";s:3:"149";s:3:" fu";s:3:"150";s:3:"a e";s:3:"151";s:3:"ant";s:3:"152";s:3:"nes";s:3:"153";s:3:"nim";s:3:"154";s:3:"sun";s:3:"155";s:3:"tra";s:3:"156";s:3:"e a";s:3:"157";s:3:"s d";s:3:"158";s:3:" pa";s:3:"159";s:3:" uo";s:3:"160";s:3:"ecu";s:3:"161";s:3:" om";s:3:"162";s:3:" tu";s:3:"163";s:3:"ad ";s:3:"164";s:3:"cut";s:3:"165";s:3:"omn";s:3:"166";s:3:"s q";s:3:"167";s:3:" ei";s:3:"168";s:3:"ex ";s:3:"169";s:3:"icu";s:3:"170";s:3:"tor";s:3:"171";s:3:"uid";s:3:"172";s:3:" ip";s:3:"173";s:3:" me";s:3:"174";s:3:"e s";s:3:"175";s:3:"era";s:3:"176";s:3:"eru";s:3:"177";s:3:"iam";s:3:"178";s:3:"ide";s:3:"179";s:3:"ips";s:3:"180";s:3:" iu";s:3:"181";s:3:"a s";s:3:"182";s:3:"do ";s:3:"183";s:3:"e d";s:3:"184";s:3:"eiu";s:3:"185";s:3:"ica";s:3:"186";s:3:"im ";s:3:"187";s:3:"m c";s:3:"188";s:3:"m u";s:3:"189";s:3:"tiu";s:3:"190";s:3:" ho";s:3:"191";s:3:"cat";s:3:"192";s:3:"ist";s:3:"193";s:3:"nat";s:3:"194";s:3:"on ";s:3:"195";s:3:"pti";s:3:"196";s:3:"reg";s:3:"197";s:3:"rit";s:3:"198";s:3:"s t";s:3:"199";s:3:"sic";s:3:"200";s:3:"spe";s:3:"201";s:3:" en";s:3:"202";s:3:" sp";s:3:"203";s:3:"dis";s:3:"204";s:3:"eli";s:3:"205";s:3:"liq";s:3:"206";s:3:"lis";s:3:"207";s:3:"men";s:3:"208";s:3:"mus";s:3:"209";s:3:"num";s:3:"210";s:3:"pos";s:3:"211";s:3:"sio";s:3:"212";s:3:" an";s:3:"213";s:3:" gr";s:3:"214";s:3:"abi";s:3:"215";s:3:"acc";s:3:"216";s:3:"ect";s:3:"217";s:3:"ri ";s:3:"218";s:3:"uan";s:3:"219";s:3:" le";s:3:"220";s:3:"ecc";s:3:"221";s:3:"ete";s:3:"222";s:3:"gra";s:3:"223";s:3:"non";s:3:"224";s:3:"se ";s:3:"225";s:3:"uen";s:3:"226";s:3:"uis";s:3:"227";s:3:" fa";s:3:"228";s:3:" tr";s:3:"229";s:3:"ate";s:3:"230";s:3:"e c";s:3:"231";s:3:"fil";s:3:"232";s:3:"na ";s:3:"233";s:3:"ni ";s:3:"234";s:3:"pul";s:3:"235";s:3:"s f";s:3:"236";s:3:"ui ";s:3:"237";s:3:"at ";s:3:"238";s:3:"cce";s:3:"239";s:3:"dam";s:3:"240";s:3:"i e";s:3:"241";s:3:"ina";s:3:"242";s:3:"leg";s:3:"243";s:3:"nos";s:3:"244";s:3:"ori";s:3:"245";s:3:"pec";s:3:"246";s:3:"rop";s:3:"247";s:3:"sta";s:3:"248";s:3:"uia";s:3:"249";s:3:"ene";s:3:"250";s:3:"iue";s:3:"251";s:3:"iui";s:3:"252";s:3:"siu";s:3:"253";s:3:"t t";s:3:"254";s:3:"t u";s:3:"255";s:3:"tib";s:3:"256";s:3:"tit";s:3:"257";s:3:" da";s:3:"258";s:3:" ne";s:3:"259";s:3:"a d";s:3:"260";s:3:"and";s:3:"261";s:3:"ege";s:3:"262";s:3:"equ";s:3:"263";s:3:"hom";s:3:"264";s:3:"imu";s:3:"265";s:3:"lor";s:3:"266";s:3:"m m";s:3:"267";s:3:"mni";s:3:"268";s:3:"ndo";s:3:"269";s:3:"ner";s:3:"270";s:3:"o e";s:3:"271";s:3:"r e";s:3:"272";s:3:"sit";s:3:"273";s:3:"tum";s:3:"274";s:3:"utu";s:3:"275";s:3:"a p";s:3:"276";s:3:"bis";s:3:"277";s:3:"bit";s:3:"278";s:3:"cer";s:3:"279";s:3:"cta";s:3:"280";s:3:"dom";s:3:"281";s:3:"fut";s:3:"282";s:3:"i s";s:3:"283";s:3:"ign";s:3:"284";s:3:"int";s:3:"285";s:3:"mod";s:3:"286";s:3:"ndu";s:3:"287";s:3:"nit";s:3:"288";s:3:"rib";s:3:"289";s:3:"rti";s:3:"290";s:3:"tas";s:3:"291";s:3:"und";s:3:"292";s:3:" ab";s:3:"293";s:3:"err";s:3:"294";s:3:"ers";s:3:"295";s:3:"ite";s:3:"296";s:3:"iti";s:3:"297";s:3:"m t";s:3:"298";s:3:"o p";s:3:"299";}s:7:"latvian";a:300:{s:3:"as ";s:1:"0";s:3:" la";s:1:"1";s:3:" pa";s:1:"2";s:3:" ne";s:1:"3";s:3:"es ";s:1:"4";s:3:" un";s:1:"5";s:3:"un ";s:1:"6";s:3:" ka";s:1:"7";s:3:" va";s:1:"8";s:3:"ar ";s:1:"9";s:3:"s p";s:2:"10";s:3:" ar";s:2:"11";s:3:" vi";s:2:"12";s:3:"is ";s:2:"13";s:3:"ai ";s:2:"14";s:3:" no";s:2:"15";s:3:"ja ";s:2:"16";s:3:"ija";s:2:"17";s:3:"iem";s:2:"18";s:3:"em ";s:2:"19";s:3:"tu ";s:2:"20";s:3:"tie";s:2:"21";s:3:"vie";s:2:"22";s:3:"lat";s:2:"23";s:3:"aks";s:2:"24";s:3:"ien";s:2:"25";s:3:"kst";s:2:"26";s:3:"ies";s:2:"27";s:3:"s a";s:2:"28";s:3:"rak";s:2:"29";s:3:"atv";s:2:"30";s:3:"tvi";s:2:"31";s:3:" ja";s:2:"32";s:3:" pi";s:2:"33";s:3:"ka ";s:2:"34";s:3:" ir";s:2:"35";s:3:"ir ";s:2:"36";s:3:"ta ";s:2:"37";s:3:" sa";s:2:"38";s:3:"ts ";s:2:"39";s:4:" kā";s:2:"40";s:4:"ās ";s:2:"41";s:3:" ti";s:2:"42";s:3:"ot ";s:2:"43";s:3:"s n";s:2:"44";s:3:" ie";s:2:"45";s:3:" ta";s:2:"46";s:4:"arī";s:2:"47";s:3:"par";s:2:"48";s:3:"pie";s:2:"49";s:3:" pr";s:2:"50";s:4:"kā ";s:2:"51";s:3:" at";s:2:"52";s:3:" ra";s:2:"53";s:3:"am ";s:2:"54";s:4:"inā";s:2:"55";s:4:"tā ";s:2:"56";s:3:" iz";s:2:"57";s:3:"jas";s:2:"58";s:3:"lai";s:2:"59";s:3:" na";s:2:"60";s:3:"aut";s:2:"61";s:4:"ieš";s:2:"62";s:3:"s s";s:2:"63";s:3:" ap";s:2:"64";s:3:" ko";s:2:"65";s:3:" st";s:2:"66";s:3:"iek";s:2:"67";s:3:"iet";s:2:"68";s:3:"jau";s:2:"69";s:3:"us ";s:2:"70";s:4:"rī ";s:2:"71";s:3:"tik";s:2:"72";s:4:"ība";s:2:"73";s:3:"na ";s:2:"74";s:3:" ga";s:2:"75";s:3:"cij";s:2:"76";s:3:"s i";s:2:"77";s:3:" uz";s:2:"78";s:3:"jum";s:2:"79";s:3:"s v";s:2:"80";s:3:"ms ";s:2:"81";s:3:"var";s:2:"82";s:3:" ku";s:2:"83";s:3:" ma";s:2:"84";s:4:"jā ";s:2:"85";s:3:"sta";s:2:"86";s:3:"s u";s:2:"87";s:4:" tā";s:2:"88";s:3:"die";s:2:"89";s:3:"kai";s:2:"90";s:3:"kas";s:2:"91";s:3:"ska";s:2:"92";s:3:" ci";s:2:"93";s:3:" da";s:2:"94";s:3:"kur";s:2:"95";s:3:"lie";s:2:"96";s:3:"tas";s:2:"97";s:3:"a p";s:2:"98";s:3:"est";s:2:"99";s:4:"stā";s:3:"100";s:4:"šan";s:3:"101";s:3:"nes";s:3:"102";s:3:"nie";s:3:"103";s:3:"s d";s:3:"104";s:3:"s m";s:3:"105";s:3:"val";s:3:"106";s:3:" di";s:3:"107";s:3:" es";s:3:"108";s:3:" re";s:3:"109";s:3:"no ";s:3:"110";s:3:"to ";s:3:"111";s:3:"umu";s:3:"112";s:3:"vai";s:3:"113";s:4:"ši ";s:3:"114";s:4:" vē";s:3:"115";s:3:"kum";s:3:"116";s:3:"nu ";s:3:"117";s:3:"rie";s:3:"118";s:3:"s t";s:3:"119";s:4:"ām ";s:3:"120";s:3:"ad ";s:3:"121";s:3:"et ";s:3:"122";s:3:"mu ";s:3:"123";s:3:"s l";s:3:"124";s:3:" be";s:3:"125";s:3:"aud";s:3:"126";s:3:"tur";s:3:"127";s:3:"vij";s:3:"128";s:4:"viņ";s:3:"129";s:4:"āju";s:3:"130";s:3:"bas";s:3:"131";s:3:"gad";s:3:"132";s:3:"i n";s:3:"133";s:3:"ika";s:3:"134";s:3:"os ";s:3:"135";s:3:"a v";s:3:"136";s:3:"not";s:3:"137";s:3:"oti";s:3:"138";s:3:"sts";s:3:"139";s:3:"aik";s:3:"140";s:3:"u a";s:3:"141";s:4:"ā a";s:3:"142";s:4:"āk ";s:3:"143";s:3:" to";s:3:"144";s:3:"ied";s:3:"145";s:3:"stu";s:3:"146";s:3:"ti ";s:3:"147";s:3:"u p";s:3:"148";s:4:"vēl";s:3:"149";s:4:"āci";s:3:"150";s:4:" šo";s:3:"151";s:3:"gi ";s:3:"152";s:3:"ko ";s:3:"153";s:3:"pro";s:3:"154";s:3:"s r";s:3:"155";s:4:"tāj";s:3:"156";s:3:"u s";s:3:"157";s:3:"u v";s:3:"158";s:3:"vis";s:3:"159";s:3:"aun";s:3:"160";s:3:"ks ";s:3:"161";s:3:"str";s:3:"162";s:3:"zin";s:3:"163";s:3:"a a";s:3:"164";s:4:"adī";s:3:"165";s:3:"da ";s:3:"166";s:3:"dar";s:3:"167";s:3:"ena";s:3:"168";s:3:"ici";s:3:"169";s:3:"kra";s:3:"170";s:3:"nas";s:3:"171";s:4:"stī";s:3:"172";s:4:"šu ";s:3:"173";s:4:" mē";s:3:"174";s:3:"a n";s:3:"175";s:3:"eci";s:3:"176";s:3:"i s";s:3:"177";s:3:"ie ";s:3:"178";s:4:"iņa";s:3:"179";s:3:"ju ";s:3:"180";s:3:"las";s:3:"181";s:3:"r t";s:3:"182";s:3:"ums";s:3:"183";s:4:"šie";s:3:"184";s:3:"bu ";s:3:"185";s:3:"cit";s:3:"186";s:3:"i a";s:3:"187";s:3:"ina";s:3:"188";s:3:"ma ";s:3:"189";s:3:"pus";s:3:"190";s:3:"ra ";s:3:"191";s:3:" au";s:3:"192";s:3:" se";s:3:"193";s:3:" sl";s:3:"194";s:3:"a s";s:3:"195";s:3:"ais";s:3:"196";s:4:"eši";s:3:"197";s:3:"iec";s:3:"198";s:3:"iku";s:3:"199";s:4:"pār";s:3:"200";s:3:"s b";s:3:"201";s:3:"s k";s:3:"202";s:3:"sot";s:3:"203";s:5:"ādā";s:3:"204";s:3:" in";s:3:"205";s:3:" li";s:3:"206";s:3:" tr";s:3:"207";s:3:"ana";s:3:"208";s:3:"eso";s:3:"209";s:3:"ikr";s:3:"210";s:3:"man";s:3:"211";s:3:"ne ";s:3:"212";s:3:"u k";s:3:"213";s:3:" tu";s:3:"214";s:3:"an ";s:3:"215";s:3:"av ";s:3:"216";s:3:"bet";s:3:"217";s:4:"būt";s:3:"218";s:3:"im ";s:3:"219";s:3:"isk";s:3:"220";s:4:"līd";s:3:"221";s:3:"nav";s:3:"222";s:3:"ras";s:3:"223";s:3:"ri ";s:3:"224";s:3:"s g";s:3:"225";s:3:"sti";s:3:"226";s:4:"īdz";s:3:"227";s:3:" ai";s:3:"228";s:3:"arb";s:3:"229";s:3:"cin";s:3:"230";s:3:"das";s:3:"231";s:3:"ent";s:3:"232";s:3:"gal";s:3:"233";s:3:"i p";s:3:"234";s:3:"lik";s:3:"235";s:4:"mā ";s:3:"236";s:3:"nek";s:3:"237";s:3:"pat";s:3:"238";s:4:"rēt";s:3:"239";s:3:"si ";s:3:"240";s:3:"tra";s:3:"241";s:4:"uši";s:3:"242";s:3:"vei";s:3:"243";s:3:" br";s:3:"244";s:3:" pu";s:3:"245";s:3:" sk";s:3:"246";s:3:"als";s:3:"247";s:3:"ama";s:3:"248";s:3:"edz";s:3:"249";s:3:"eka";s:3:"250";s:4:"ešu";s:3:"251";s:3:"ieg";s:3:"252";s:3:"jis";s:3:"253";s:3:"kam";s:3:"254";s:3:"lst";s:3:"255";s:4:"nāk";s:3:"256";s:3:"oli";s:3:"257";s:3:"pre";s:3:"258";s:4:"pēc";s:3:"259";s:3:"rot";s:3:"260";s:4:"tās";s:3:"261";s:3:"usi";s:3:"262";s:4:"ēl ";s:3:"263";s:4:"ēs ";s:3:"264";s:3:" bi";s:3:"265";s:3:" de";s:3:"266";s:3:" me";s:3:"267";s:4:" pā";s:3:"268";s:3:"a i";s:3:"269";s:3:"aid";s:3:"270";s:4:"ajā";s:3:"271";s:3:"ikt";s:3:"272";s:3:"kat";s:3:"273";s:3:"lic";s:3:"274";s:3:"lod";s:3:"275";s:3:"mi ";s:3:"276";s:3:"ni ";s:3:"277";s:3:"pri";s:3:"278";s:4:"rād";s:3:"279";s:4:"rīg";s:3:"280";s:3:"sim";s:3:"281";s:4:"trā";s:3:"282";s:3:"u l";s:3:"283";s:3:"uto";s:3:"284";s:3:"uz ";s:3:"285";s:4:"ēc ";s:3:"286";s:5:"ītā";s:3:"287";s:3:" ce";s:3:"288";s:4:" jā";s:3:"289";s:3:" sv";s:3:"290";s:3:"a t";s:3:"291";s:3:"aga";s:3:"292";s:3:"aiz";s:3:"293";s:3:"atu";s:3:"294";s:3:"ba ";s:3:"295";s:3:"cie";s:3:"296";s:3:"du ";s:3:"297";s:3:"dzi";s:3:"298";s:4:"dzī";s:3:"299";}s:10:"lithuanian";a:300:{s:3:"as ";s:1:"0";s:3:" pa";s:1:"1";s:3:" ka";s:1:"2";s:3:"ai ";s:1:"3";s:3:"us ";s:1:"4";s:3:"os ";s:1:"5";s:3:"is ";s:1:"6";s:3:" ne";s:1:"7";s:3:" ir";s:1:"8";s:3:"ir ";s:1:"9";s:3:"ti ";s:2:"10";s:3:" pr";s:2:"11";s:3:"aus";s:2:"12";s:3:"ini";s:2:"13";s:3:"s p";s:2:"14";s:3:"pas";s:2:"15";s:4:"ių ";s:2:"16";s:3:" ta";s:2:"17";s:3:" vi";s:2:"18";s:3:"iau";s:2:"19";s:3:" ko";s:2:"20";s:3:" su";s:2:"21";s:3:"kai";s:2:"22";s:3:"o p";s:2:"23";s:3:"usi";s:2:"24";s:3:" sa";s:2:"25";s:3:"vo ";s:2:"26";s:3:"tai";s:2:"27";s:3:"ali";s:2:"28";s:4:"tų ";s:2:"29";s:3:"io ";s:2:"30";s:3:"jo ";s:2:"31";s:3:"s k";s:2:"32";s:3:"sta";s:2:"33";s:3:"iai";s:2:"34";s:3:" bu";s:2:"35";s:3:" nu";s:2:"36";s:3:"ius";s:2:"37";s:3:"mo ";s:2:"38";s:3:" po";s:2:"39";s:3:"ien";s:2:"40";s:3:"s s";s:2:"41";s:3:"tas";s:2:"42";s:3:" me";s:2:"43";s:3:"uvo";s:2:"44";s:3:"kad";s:2:"45";s:4:" iš";s:2:"46";s:3:" la";s:2:"47";s:3:"to ";s:2:"48";s:3:"ais";s:2:"49";s:3:"ie ";s:2:"50";s:3:"kur";s:2:"51";s:3:"uri";s:2:"52";s:3:" ku";s:2:"53";s:3:"ijo";s:2:"54";s:4:"čia";s:2:"55";s:3:"au ";s:2:"56";s:3:"met";s:2:"57";s:3:"je ";s:2:"58";s:3:" va";s:2:"59";s:3:"ad ";s:2:"60";s:3:" ap";s:2:"61";s:3:"and";s:2:"62";s:3:" gr";s:2:"63";s:3:" ti";s:2:"64";s:3:"kal";s:2:"65";s:3:"asi";s:2:"66";s:3:"i p";s:2:"67";s:4:"iči";s:2:"68";s:3:"s i";s:2:"69";s:3:"s v";s:2:"70";s:3:"ink";s:2:"71";s:3:"o n";s:2:"72";s:4:"ės ";s:2:"73";s:3:"buv";s:2:"74";s:3:"s a";s:2:"75";s:3:" ga";s:2:"76";s:3:"aip";s:2:"77";s:3:"avi";s:2:"78";s:3:"mas";s:2:"79";s:3:"pri";s:2:"80";s:3:"tik";s:2:"81";s:3:" re";s:2:"82";s:3:"etu";s:2:"83";s:3:"jos";s:2:"84";s:3:" da";s:2:"85";s:3:"ent";s:2:"86";s:3:"oli";s:2:"87";s:3:"par";s:2:"88";s:3:"ant";s:2:"89";s:3:"ara";s:2:"90";s:3:"tar";s:2:"91";s:3:"ama";s:2:"92";s:3:"gal";s:2:"93";s:3:"imo";s:2:"94";s:4:"išk";s:2:"95";s:3:"o s";s:2:"96";s:3:" at";s:2:"97";s:3:" be";s:2:"98";s:4:" į ";s:2:"99";s:3:"min";s:3:"100";s:3:"tin";s:3:"101";s:3:" tu";s:3:"102";s:3:"s n";s:3:"103";s:3:" jo";s:3:"104";s:3:"dar";s:3:"105";s:3:"ip ";s:3:"106";s:3:"rei";s:3:"107";s:3:" te";s:3:"108";s:4:"dži";s:3:"109";s:3:"kas";s:3:"110";s:3:"nin";s:3:"111";s:3:"tei";s:3:"112";s:3:"vie";s:3:"113";s:3:" li";s:3:"114";s:3:" se";s:3:"115";s:3:"cij";s:3:"116";s:3:"gar";s:3:"117";s:3:"lai";s:3:"118";s:3:"art";s:3:"119";s:3:"lau";s:3:"120";s:3:"ras";s:3:"121";s:3:"no ";s:3:"122";s:3:"o k";s:3:"123";s:4:"tą ";s:3:"124";s:3:" ar";s:3:"125";s:4:"ėjo";s:3:"126";s:4:"vič";s:3:"127";s:3:"iga";s:3:"128";s:3:"pra";s:3:"129";s:3:"vis";s:3:"130";s:3:" na";s:3:"131";s:3:"men";s:3:"132";s:3:"oki";s:3:"133";s:4:"raš";s:3:"134";s:3:"s t";s:3:"135";s:3:"iet";s:3:"136";s:3:"ika";s:3:"137";s:3:"int";s:3:"138";s:3:"kom";s:3:"139";s:3:"tam";s:3:"140";s:3:"aug";s:3:"141";s:3:"avo";s:3:"142";s:3:"rie";s:3:"143";s:3:"s b";s:3:"144";s:3:" st";s:3:"145";s:3:"eim";s:3:"146";s:3:"ko ";s:3:"147";s:3:"nus";s:3:"148";s:3:"pol";s:3:"149";s:3:"ria";s:3:"150";s:3:"sau";s:3:"151";s:3:"api";s:3:"152";s:3:"me ";s:3:"153";s:3:"ne ";s:3:"154";s:3:"sik";s:3:"155";s:4:" ši";s:3:"156";s:3:"i n";s:3:"157";s:3:"ia ";s:3:"158";s:3:"ici";s:3:"159";s:3:"oja";s:3:"160";s:3:"sak";s:3:"161";s:3:"sti";s:3:"162";s:3:"ui ";s:3:"163";s:3:"ame";s:3:"164";s:3:"lie";s:3:"165";s:3:"o t";s:3:"166";s:3:"pie";s:3:"167";s:4:"čiu";s:3:"168";s:3:" di";s:3:"169";s:3:" pe";s:3:"170";s:3:"gri";s:3:"171";s:3:"ios";s:3:"172";s:3:"lia";s:3:"173";s:3:"lin";s:3:"174";s:3:"s d";s:3:"175";s:3:"s g";s:3:"176";s:3:"ta ";s:3:"177";s:3:"uot";s:3:"178";s:3:" ja";s:3:"179";s:4:" už";s:3:"180";s:3:"aut";s:3:"181";s:3:"i s";s:3:"182";s:3:"ino";s:3:"183";s:4:"mą ";s:3:"184";s:3:"oje";s:3:"185";s:3:"rav";s:3:"186";s:4:"dėl";s:3:"187";s:3:"nti";s:3:"188";s:3:"o a";s:3:"189";s:3:"toj";s:3:"190";s:4:"ėl ";s:3:"191";s:3:" to";s:3:"192";s:3:" vy";s:3:"193";s:3:"ar ";s:3:"194";s:3:"ina";s:3:"195";s:3:"lic";s:3:"196";s:3:"o v";s:3:"197";s:3:"sei";s:3:"198";s:3:"su ";s:3:"199";s:3:" mi";s:3:"200";s:3:" pi";s:3:"201";s:3:"din";s:3:"202";s:4:"iš ";s:3:"203";s:3:"lan";s:3:"204";s:3:"si ";s:3:"205";s:3:"tus";s:3:"206";s:3:" ba";s:3:"207";s:3:"asa";s:3:"208";s:3:"ata";s:3:"209";s:3:"kla";s:3:"210";s:3:"omi";s:3:"211";s:3:"tat";s:3:"212";s:3:" an";s:3:"213";s:3:" ji";s:3:"214";s:3:"als";s:3:"215";s:3:"ena";s:3:"216";s:4:"jų ";s:3:"217";s:3:"nuo";s:3:"218";s:3:"per";s:3:"219";s:3:"rig";s:3:"220";s:3:"s m";s:3:"221";s:3:"val";s:3:"222";s:3:"yta";s:3:"223";s:4:"čio";s:3:"224";s:3:" ra";s:3:"225";s:3:"i k";s:3:"226";s:3:"lik";s:3:"227";s:3:"net";s:3:"228";s:4:"nė ";s:3:"229";s:3:"tis";s:3:"230";s:3:"tuo";s:3:"231";s:3:"yti";s:3:"232";s:4:"ęs ";s:3:"233";s:4:"ų s";s:3:"234";s:3:"ada";s:3:"235";s:3:"ari";s:3:"236";s:3:"do ";s:3:"237";s:3:"eik";s:3:"238";s:3:"eis";s:3:"239";s:3:"ist";s:3:"240";s:3:"lst";s:3:"241";s:3:"ma ";s:3:"242";s:3:"nes";s:3:"243";s:3:"sav";s:3:"244";s:3:"sio";s:3:"245";s:3:"tau";s:3:"246";s:3:" ki";s:3:"247";s:3:"aik";s:3:"248";s:3:"aud";s:3:"249";s:3:"ies";s:3:"250";s:3:"ori";s:3:"251";s:3:"s r";s:3:"252";s:3:"ska";s:3:"253";s:3:" ge";s:3:"254";s:3:"ast";s:3:"255";s:3:"eig";s:3:"256";s:3:"et ";s:3:"257";s:3:"iam";s:3:"258";s:3:"isa";s:3:"259";s:3:"mis";s:3:"260";s:3:"nam";s:3:"261";s:3:"ome";s:3:"262";s:4:"žia";s:3:"263";s:3:"aba";s:3:"264";s:3:"aul";s:3:"265";s:3:"ikr";s:3:"266";s:4:"ką ";s:3:"267";s:3:"nta";s:3:"268";s:3:"ra ";s:3:"269";s:3:"tur";s:3:"270";s:3:" ma";s:3:"271";s:3:"die";s:3:"272";s:3:"ei ";s:3:"273";s:3:"i t";s:3:"274";s:3:"nas";s:3:"275";s:3:"rin";s:3:"276";s:3:"sto";s:3:"277";s:3:"tie";s:3:"278";s:3:"tuv";s:3:"279";s:3:"vos";s:3:"280";s:4:"ų p";s:3:"281";s:4:" dė";s:3:"282";s:3:"are";s:3:"283";s:3:"ats";s:3:"284";s:4:"enė";s:3:"285";s:3:"ili";s:3:"286";s:3:"ima";s:3:"287";s:3:"kar";s:3:"288";s:3:"ms ";s:3:"289";s:3:"nia";s:3:"290";s:3:"r p";s:3:"291";s:3:"rod";s:3:"292";s:3:"s l";s:3:"293";s:3:" o ";s:3:"294";s:3:"e p";s:3:"295";s:3:"es ";s:3:"296";s:3:"ide";s:3:"297";s:3:"ik ";s:3:"298";s:3:"ja ";s:3:"299";}s:10:"macedonian";a:300:{s:5:"на ";s:1:"0";s:5:" на";s:1:"1";s:5:"та ";s:1:"2";s:6:"ата";s:1:"3";s:6:"ија";s:1:"4";s:5:" пр";s:1:"5";s:5:"то ";s:1:"6";s:5:"ја ";s:1:"7";s:5:" за";s:1:"8";s:5:"а н";s:1:"9";s:4:" и ";s:2:"10";s:5:"а с";s:2:"11";s:5:"те ";s:2:"12";s:6:"ите";s:2:"13";s:5:" ко";s:2:"14";s:5:"от ";s:2:"15";s:5:" де";s:2:"16";s:5:" по";s:2:"17";s:5:"а д";s:2:"18";s:5:"во ";s:2:"19";s:5:"за ";s:2:"20";s:5:" во";s:2:"21";s:5:" од";s:2:"22";s:5:" се";s:2:"23";s:5:" не";s:2:"24";s:5:"се ";s:2:"25";s:5:" до";s:2:"26";s:5:"а в";s:2:"27";s:5:"ка ";s:2:"28";s:6:"ање";s:2:"29";s:5:"а п";s:2:"30";s:5:"о п";s:2:"31";s:6:"ува";s:2:"32";s:6:"циј";s:2:"33";s:5:"а о";s:2:"34";s:6:"ици";s:2:"35";s:6:"ето";s:2:"36";s:5:"о н";s:2:"37";s:6:"ани";s:2:"38";s:5:"ни ";s:2:"39";s:5:" вл";s:2:"40";s:6:"дек";s:2:"41";s:6:"ека";s:2:"42";s:6:"њет";s:2:"43";s:5:"ќе ";s:2:"44";s:4:" е ";s:2:"45";s:5:"а з";s:2:"46";s:5:"а и";s:2:"47";s:5:"ат ";s:2:"48";s:6:"вла";s:2:"49";s:5:"го ";s:2:"50";s:5:"е н";s:2:"51";s:5:"од ";s:2:"52";s:6:"пре";s:2:"53";s:5:" го";s:2:"54";s:5:" да";s:2:"55";s:5:" ма";s:2:"56";s:5:" ре";s:2:"57";s:5:" ќе";s:2:"58";s:6:"али";s:2:"59";s:5:"и д";s:2:"60";s:5:"и н";s:2:"61";s:6:"иот";s:2:"62";s:6:"нат";s:2:"63";s:6:"ово";s:2:"64";s:5:" па";s:2:"65";s:5:" ра";s:2:"66";s:5:" со";s:2:"67";s:6:"ове";s:2:"68";s:6:"пра";s:2:"69";s:6:"што";s:2:"70";s:5:"ње ";s:2:"71";s:5:"а е";s:2:"72";s:5:"да ";s:2:"73";s:6:"дат";s:2:"74";s:6:"дон";s:2:"75";s:5:"е в";s:2:"76";s:5:"е д";s:2:"77";s:5:"е з";s:2:"78";s:5:"е с";s:2:"79";s:6:"кон";s:2:"80";s:6:"нит";s:2:"81";s:5:"но ";s:2:"82";s:6:"они";s:2:"83";s:6:"ото";s:2:"84";s:6:"пар";s:2:"85";s:6:"при";s:2:"86";s:6:"ста";s:2:"87";s:5:"т н";s:2:"88";s:5:" шт";s:2:"89";s:5:"а к";s:2:"90";s:6:"аци";s:2:"91";s:5:"ва ";s:2:"92";s:6:"вањ";s:2:"93";s:5:"е п";s:2:"94";s:6:"ени";s:2:"95";s:5:"ла ";s:2:"96";s:6:"лад";s:2:"97";s:6:"мак";s:2:"98";s:6:"нес";s:2:"99";s:6:"нос";s:3:"100";s:6:"про";s:3:"101";s:6:"рен";s:3:"102";s:6:"јат";s:3:"103";s:5:" ин";s:3:"104";s:5:" ме";s:3:"105";s:5:" то";s:3:"106";s:5:"а г";s:3:"107";s:5:"а м";s:3:"108";s:5:"а р";s:3:"109";s:6:"аке";s:3:"110";s:6:"ако";s:3:"111";s:6:"вор";s:3:"112";s:6:"гов";s:3:"113";s:6:"едо";s:3:"114";s:6:"ена";s:3:"115";s:5:"и и";s:3:"116";s:6:"ира";s:3:"117";s:6:"кед";s:3:"118";s:5:"не ";s:3:"119";s:6:"ниц";s:3:"120";s:6:"ниј";s:3:"121";s:6:"ост";s:3:"122";s:5:"ра ";s:3:"123";s:6:"рат";s:3:"124";s:6:"ред";s:3:"125";s:6:"ска";s:3:"126";s:6:"тен";s:3:"127";s:5:" ка";s:3:"128";s:5:" сп";s:3:"129";s:5:" ја";s:3:"130";s:5:"а т";s:3:"131";s:6:"аде";s:3:"132";s:6:"арт";s:3:"133";s:5:"е г";s:3:"134";s:5:"е и";s:3:"135";s:6:"кат";s:3:"136";s:6:"лас";s:3:"137";s:6:"нио";s:3:"138";s:5:"о с";s:3:"139";s:5:"ри ";s:3:"140";s:5:" ба";s:3:"141";s:5:" би";s:3:"142";s:6:"ава";s:3:"143";s:6:"ате";s:3:"144";s:6:"вни";s:3:"145";s:5:"д н";s:3:"146";s:6:"ден";s:3:"147";s:6:"дов";s:3:"148";s:6:"држ";s:3:"149";s:6:"дув";s:3:"150";s:5:"е о";s:3:"151";s:5:"ен ";s:3:"152";s:6:"ере";s:3:"153";s:6:"ери";s:3:"154";s:5:"и п";s:3:"155";s:5:"и с";s:3:"156";s:6:"ина";s:3:"157";s:6:"кој";s:3:"158";s:6:"нци";s:3:"159";s:5:"о м";s:3:"160";s:5:"о о";s:3:"161";s:6:"одн";s:3:"162";s:6:"пор";s:3:"163";s:6:"ски";s:3:"164";s:6:"спо";s:3:"165";s:6:"ств";s:3:"166";s:6:"сти";s:3:"167";s:6:"тво";s:3:"168";s:5:"ти ";s:3:"169";s:5:" об";s:3:"170";s:5:" ов";s:3:"171";s:5:"а б";s:3:"172";s:6:"алн";s:3:"173";s:6:"ара";s:3:"174";s:6:"бар";s:3:"175";s:5:"е к";s:3:"176";s:5:"ед ";s:3:"177";s:6:"ент";s:3:"178";s:6:"еѓу";s:3:"179";s:5:"и о";s:3:"180";s:5:"ии ";s:3:"181";s:6:"меѓ";s:3:"182";s:5:"о д";s:3:"183";s:6:"оја";s:3:"184";s:6:"пот";s:3:"185";s:6:"раз";s:3:"186";s:6:"раш";s:3:"187";s:6:"спр";s:3:"188";s:6:"сто";s:3:"189";s:5:"т д";s:3:"190";s:5:"ци ";s:3:"191";s:5:" бе";s:3:"192";s:5:" гр";s:3:"193";s:5:" др";s:3:"194";s:5:" из";s:3:"195";s:5:" ст";s:3:"196";s:5:"аа ";s:3:"197";s:6:"бид";s:3:"198";s:6:"вед";s:3:"199";s:6:"гла";s:3:"200";s:6:"еко";s:3:"201";s:6:"енд";s:3:"202";s:6:"есе";s:3:"203";s:6:"етс";s:3:"204";s:6:"зац";s:3:"205";s:5:"и т";s:3:"206";s:6:"иза";s:3:"207";s:6:"инс";s:3:"208";s:6:"ист";s:3:"209";s:5:"ки ";s:3:"210";s:6:"ков";s:3:"211";s:6:"кол";s:3:"212";s:5:"ку ";s:3:"213";s:6:"лиц";s:3:"214";s:5:"о з";s:3:"215";s:5:"о и";s:3:"216";s:6:"ова";s:3:"217";s:6:"олк";s:3:"218";s:6:"оре";s:3:"219";s:6:"ори";s:3:"220";s:6:"под";s:3:"221";s:6:"рањ";s:3:"222";s:6:"реф";s:3:"223";s:6:"ржа";s:3:"224";s:6:"ров";s:3:"225";s:6:"рти";s:3:"226";s:5:"со ";s:3:"227";s:6:"тор";s:3:"228";s:6:"фер";s:3:"229";s:6:"цен";s:3:"230";s:6:"цит";s:3:"231";s:4:" а ";s:3:"232";s:5:" вр";s:3:"233";s:5:" гл";s:3:"234";s:5:" дп";s:3:"235";s:5:" мо";s:3:"236";s:5:" ни";s:3:"237";s:5:" но";s:3:"238";s:5:" оп";s:3:"239";s:5:" от";s:3:"240";s:5:"а ќ";s:3:"241";s:6:"або";s:3:"242";s:6:"ада";s:3:"243";s:6:"аса";s:3:"244";s:6:"аша";s:3:"245";s:5:"ба ";s:3:"246";s:6:"бот";s:3:"247";s:6:"ваа";s:3:"248";s:6:"ват";s:3:"249";s:6:"вот";s:3:"250";s:5:"ги ";s:3:"251";s:6:"гра";s:3:"252";s:5:"де ";s:3:"253";s:6:"дин";s:3:"254";s:6:"дум";s:3:"255";s:6:"евр";s:3:"256";s:6:"еду";s:3:"257";s:6:"ено";s:3:"258";s:6:"ера";s:3:"259";s:5:"ес ";s:3:"260";s:6:"ење";s:3:"261";s:5:"же ";s:3:"262";s:6:"зак";s:3:"263";s:5:"и в";s:3:"264";s:6:"ила";s:3:"265";s:6:"иту";s:3:"266";s:6:"коа";s:3:"267";s:6:"кои";s:3:"268";s:6:"лан";s:3:"269";s:6:"лку";s:3:"270";s:6:"лож";s:3:"271";s:6:"мот";s:3:"272";s:6:"нду";s:3:"273";s:6:"нст";s:3:"274";s:5:"о в";s:3:"275";s:5:"оа ";s:3:"276";s:6:"оал";s:3:"277";s:6:"обр";s:3:"278";s:5:"ов ";s:3:"279";s:6:"ови";s:3:"280";s:6:"овн";s:3:"281";s:5:"ои ";s:3:"282";s:5:"ор ";s:3:"283";s:6:"орм";s:3:"284";s:5:"ој ";s:3:"285";s:6:"рет";s:3:"286";s:6:"сед";s:3:"287";s:5:"ст ";s:3:"288";s:6:"тер";s:3:"289";s:6:"тиј";s:3:"290";s:6:"тоа";s:3:"291";s:6:"фор";s:3:"292";s:6:"ции";s:3:"293";s:5:"ѓу ";s:3:"294";s:5:" ал";s:3:"295";s:5:" ве";s:3:"296";s:5:" вм";s:3:"297";s:5:" ги";s:3:"298";s:5:" ду";s:3:"299";}s:9:"mongolian";a:300:{s:5:"ын ";s:1:"0";s:5:" ба";s:1:"1";s:5:"йн ";s:1:"2";s:6:"бай";s:1:"3";s:6:"ийн";s:1:"4";s:6:"уул";s:1:"5";s:5:" ул";s:1:"6";s:6:"улс";s:1:"7";s:5:"ан ";s:1:"8";s:5:" ха";s:1:"9";s:6:"ний";s:2:"10";s:5:"н х";s:2:"11";s:6:"гаа";s:2:"12";s:6:"сын";s:2:"13";s:5:"ий ";s:2:"14";s:6:"лсы";s:2:"15";s:5:" бо";s:2:"16";s:5:"й б";s:2:"17";s:5:"эн ";s:2:"18";s:5:"ах ";s:2:"19";s:6:"бол";s:2:"20";s:5:"ол ";s:2:"21";s:5:"н б";s:2:"22";s:6:"оло";s:2:"23";s:5:" хэ";s:2:"24";s:6:"онг";s:2:"25";s:6:"гол";s:2:"26";s:6:"гуу";s:2:"27";s:6:"нго";s:2:"28";s:5:"ыг ";s:2:"29";s:6:"жил";s:2:"30";s:5:" мо";s:2:"31";s:6:"лаг";s:2:"32";s:6:"лла";s:2:"33";s:6:"мон";s:2:"34";s:5:" тє";s:2:"35";s:5:" ху";s:2:"36";s:6:"айд";s:2:"37";s:5:"ны ";s:2:"38";s:5:"он ";s:2:"39";s:6:"сан";s:2:"40";s:6:"хий";s:2:"41";s:5:" аж";s:2:"42";s:5:" ор";s:2:"43";s:5:"л у";s:2:"44";s:5:"н т";s:2:"45";s:6:"улг";s:2:"46";s:6:"айг";s:2:"47";s:6:"длы";s:2:"48";s:5:"йг ";s:2:"49";s:5:" за";s:2:"50";s:6:"дэс";s:2:"51";s:5:"н а";s:2:"52";s:6:"ндэ";s:2:"53";s:6:"ула";s:2:"54";s:5:"ээ ";s:2:"55";s:6:"ага";s:2:"56";s:6:"ийг";s:2:"57";s:4:"vй ";s:2:"58";s:5:"аа ";s:2:"59";s:5:"й а";s:2:"60";s:6:"лын";s:2:"61";s:5:"н з";s:2:"62";s:5:" аю";s:2:"63";s:5:" зє";s:2:"64";s:6:"аар";s:2:"65";s:5:"ад ";s:2:"66";s:5:"ар ";s:2:"67";s:5:"гvй";s:2:"68";s:6:"зєв";s:2:"69";s:6:"ажи";s:2:"70";s:5:"ал ";s:2:"71";s:6:"аюу";s:2:"72";s:5:"г х";s:2:"73";s:5:"лгv";s:2:"74";s:5:"лж ";s:2:"75";s:6:"сни";s:2:"76";s:6:"эсн";s:2:"77";s:6:"юул";s:2:"78";s:6:"йдл";s:2:"79";s:6:"лыг";s:2:"80";s:6:"нхи";s:2:"81";s:6:"ууд";s:2:"82";s:6:"хам";s:2:"83";s:5:" нэ";s:2:"84";s:5:" са";s:2:"85";s:6:"гий";s:2:"86";s:6:"лах";s:2:"87";s:6:"лєл";s:2:"88";s:6:"рєн";s:2:"89";s:6:"єгч";s:2:"90";s:5:" та";s:2:"91";s:6:"илл";s:2:"92";s:6:"лий";s:2:"93";s:6:"лэх";s:2:"94";s:6:"рий";s:2:"95";s:5:"эх ";s:2:"96";s:5:" ер";s:2:"97";s:5:" эр";s:2:"98";s:6:"влє";s:2:"99";s:6:"ерє";s:3:"100";s:6:"ийл";s:3:"101";s:6:"лон";s:3:"102";s:6:"лєг";s:3:"103";s:6:"євл";s:3:"104";s:6:"єнх";s:3:"105";s:5:" хо";s:3:"106";s:6:"ари";s:3:"107";s:5:"их ";s:3:"108";s:6:"хан";s:3:"109";s:5:"эр ";s:3:"110";s:5:"єн ";s:3:"111";s:4:"vvл";s:3:"112";s:5:"ж б";s:3:"113";s:6:"тэй";s:3:"114";s:5:"х х";s:3:"115";s:6:"эрх";s:3:"116";s:4:" vн";s:3:"117";s:5:" нь";s:3:"118";s:5:"vнд";s:3:"119";s:6:"алт";s:3:"120";s:6:"йлє";s:3:"121";s:5:"нь ";s:3:"122";s:6:"тєр";s:3:"123";s:5:" га";s:3:"124";s:5:" су";s:3:"125";s:6:"аан";s:3:"126";s:6:"даа";s:3:"127";s:6:"илц";s:3:"128";s:6:"йгу";s:3:"129";s:5:"л а";s:3:"130";s:6:"лаа";s:3:"131";s:5:"н н";s:3:"132";s:6:"руу";s:3:"133";s:5:"эй ";s:3:"134";s:5:" то";s:3:"135";s:5:"н с";s:3:"136";s:6:"рил";s:3:"137";s:6:"єри";s:3:"138";s:6:"ааг";s:3:"139";s:5:"гч ";s:3:"140";s:6:"лээ";s:3:"141";s:5:"н о";s:3:"142";s:6:"рэг";s:3:"143";s:6:"суу";s:3:"144";s:6:"эрэ";s:3:"145";s:6:"їїл";s:3:"146";s:4:" yн";s:3:"147";s:5:" бу";s:3:"148";s:5:" дэ";s:3:"149";s:5:" ол";s:3:"150";s:5:" ту";s:3:"151";s:5:" ши";s:3:"152";s:5:"yнд";s:3:"153";s:6:"аши";s:3:"154";s:5:"г т";s:3:"155";s:5:"иг ";s:3:"156";s:5:"йл ";s:3:"157";s:6:"хар";s:3:"158";s:6:"шин";s:3:"159";s:5:"эг ";s:3:"160";s:5:"єр ";s:3:"161";s:5:" их";s:3:"162";s:5:" хє";s:3:"163";s:5:" хї";s:3:"164";s:5:"ам ";s:3:"165";s:6:"анг";s:3:"166";s:5:"ин ";s:3:"167";s:6:"йга";s:3:"168";s:6:"лса";s:3:"169";s:4:"н v";s:3:"170";s:5:"н е";s:3:"171";s:6:"нал";s:3:"172";s:5:"нд ";s:3:"173";s:6:"хуу";s:3:"174";s:6:"цаа";s:3:"175";s:5:"эд ";s:3:"176";s:6:"ээр";s:3:"177";s:5:"єл ";s:3:"178";s:5:"vйл";s:3:"179";s:6:"ада";s:3:"180";s:6:"айн";s:3:"181";s:6:"ала";s:3:"182";s:6:"амт";s:3:"183";s:6:"гах";s:3:"184";s:5:"д х";s:3:"185";s:6:"дал";s:3:"186";s:6:"зар";s:3:"187";s:5:"л б";s:3:"188";s:6:"лан";s:3:"189";s:5:"н д";s:3:"190";s:6:"сэн";s:3:"191";s:6:"улл";s:3:"192";s:5:"х б";s:3:"193";s:6:"хэр";s:3:"194";s:4:" бv";s:3:"195";s:5:" да";s:3:"196";s:5:" зо";s:3:"197";s:5:"vрэ";s:3:"198";s:6:"аад";s:3:"199";s:6:"гээ";s:3:"200";s:6:"лэн";s:3:"201";s:5:"н и";s:3:"202";s:5:"н э";s:3:"203";s:6:"нга";s:3:"204";s:5:"нэ ";s:3:"205";s:6:"тал";s:3:"206";s:6:"тын";s:3:"207";s:6:"хур";s:3:"208";s:5:"эл ";s:3:"209";s:5:" на";s:3:"210";s:5:" ни";s:3:"211";s:5:" он";s:3:"212";s:5:"vлэ";s:3:"213";s:5:"аг ";s:3:"214";s:5:"аж ";s:3:"215";s:5:"ай ";s:3:"216";s:6:"ата";s:3:"217";s:6:"бар";s:3:"218";s:5:"г б";s:3:"219";s:6:"гад";s:3:"220";s:6:"гїй";s:3:"221";s:5:"й х";s:3:"222";s:5:"лт ";s:3:"223";s:5:"н м";s:3:"224";s:5:"на ";s:3:"225";s:6:"оро";s:3:"226";s:6:"уль";s:3:"227";s:6:"чин";s:3:"228";s:5:"эж ";s:3:"229";s:6:"энэ";s:3:"230";s:6:"ээд";s:3:"231";s:5:"їй ";s:3:"232";s:6:"їлэ";s:3:"233";s:5:" би";s:3:"234";s:5:" тэ";s:3:"235";s:5:" эн";s:3:"236";s:6:"аны";s:3:"237";s:6:"дий";s:3:"238";s:6:"дээ";s:3:"239";s:6:"лал";s:3:"240";s:6:"лга";s:3:"241";s:5:"лд ";s:3:"242";s:6:"лог";s:3:"243";s:5:"ль ";s:3:"244";s:5:"н у";s:3:"245";s:5:"н ї";s:3:"246";s:5:"р б";s:3:"247";s:6:"рал";s:3:"248";s:6:"сон";s:3:"249";s:6:"тай";s:3:"250";s:6:"удл";s:3:"251";s:6:"элт";s:3:"252";s:6:"эрг";s:3:"253";s:6:"єлє";s:3:"254";s:4:" vй";s:3:"255";s:4:" в ";s:3:"256";s:5:" гэ";s:3:"257";s:4:" хv";s:3:"258";s:6:"ара";s:3:"259";s:5:"бvр";s:3:"260";s:5:"д н";s:3:"261";s:5:"д о";s:3:"262";s:5:"л х";s:3:"263";s:5:"лс ";s:3:"264";s:6:"лты";s:3:"265";s:5:"н г";s:3:"266";s:6:"нэг";s:3:"267";s:6:"огт";s:3:"268";s:6:"олы";s:3:"269";s:6:"оёр";s:3:"270";s:5:"р т";s:3:"271";s:6:"рээ";s:3:"272";s:6:"тав";s:3:"273";s:6:"тог";s:3:"274";s:6:"уур";s:3:"275";s:6:"хоё";s:3:"276";s:6:"хэл";s:3:"277";s:6:"хээ";s:3:"278";s:6:"элэ";s:3:"279";s:5:"ёр ";s:3:"280";s:5:" ав";s:3:"281";s:5:" ас";s:3:"282";s:5:" аш";s:3:"283";s:5:" ду";s:3:"284";s:5:" со";s:3:"285";s:5:" чи";s:3:"286";s:5:" эв";s:3:"287";s:5:" єр";s:3:"288";s:6:"аал";s:3:"289";s:6:"алд";s:3:"290";s:6:"амж";s:3:"291";s:6:"анд";s:3:"292";s:6:"асу";s:3:"293";s:6:"вэр";s:3:"294";s:5:"г у";s:3:"295";s:6:"двэ";s:3:"296";s:4:"жvv";s:3:"297";s:6:"лца";s:3:"298";s:6:"лэл";s:3:"299";}s:6:"nepali";a:300:{s:7:"को ";s:1:"0";s:7:"का ";s:1:"1";s:7:"मा ";s:1:"2";s:9:"हरु";s:1:"3";s:7:" ने";s:1:"4";s:9:"नेप";s:1:"5";s:9:"पाल";s:1:"6";s:9:"ेपा";s:1:"7";s:7:" सम";s:1:"8";s:7:"ले ";s:1:"9";s:7:" प्";s:2:"10";s:9:"प्र";s:2:"11";s:9:"कार";s:2:"12";s:7:"ा स";s:2:"13";s:9:"एको";s:2:"14";s:7:" भए";s:2:"15";s:5:" छ ";s:2:"16";s:7:" भा";s:2:"17";s:9:"्रम";s:2:"18";s:7:" गर";s:2:"19";s:9:"रुक";s:2:"20";s:5:" र ";s:2:"21";s:9:"भार";s:2:"22";s:9:"ारत";s:2:"23";s:7:" का";s:2:"24";s:7:" वि";s:2:"25";s:9:"भएक";s:2:"26";s:9:"ाली";s:2:"27";s:7:"ली ";s:2:"28";s:7:"ा प";s:2:"29";s:9:"ीहर";s:2:"30";s:9:"ार्";s:2:"31";s:7:"ो छ";s:2:"32";s:7:"ना ";s:2:"33";s:7:"रु ";s:2:"34";s:9:"ालक";s:2:"35";s:9:"्या";s:2:"36";s:7:" बा";s:2:"37";s:9:"एका";s:2:"38";s:7:"ने ";s:2:"39";s:9:"न्त";s:2:"40";s:7:"ा ब";s:2:"41";s:9:"ाको";s:2:"42";s:7:"ार ";s:2:"43";s:7:"ा भ";s:2:"44";s:9:"ाहर";s:2:"45";s:9:"्रो";s:2:"46";s:9:"क्ष";s:2:"47";s:7:"न् ";s:2:"48";s:9:"ारी";s:2:"49";s:7:" नि";s:2:"50";s:7:"ा न";s:2:"51";s:7:"ी स";s:2:"52";s:7:" डु";s:2:"53";s:9:"क्र";s:2:"54";s:9:"जना";s:2:"55";s:7:"यो ";s:2:"56";s:7:"ा छ";s:2:"57";s:9:"ेवा";s:2:"58";s:9:"्ता";s:2:"59";s:7:" रा";s:2:"60";s:9:"त्य";s:2:"61";s:9:"न्द";s:2:"62";s:9:"हुन";s:2:"63";s:7:"ा क";s:2:"64";s:9:"ामा";s:2:"65";s:7:"ी न";s:2:"66";s:9:"्दा";s:2:"67";s:7:" से";s:2:"68";s:9:"छन्";s:2:"69";s:9:"म्ब";s:2:"70";s:9:"रोत";s:2:"71";s:9:"सेव";s:2:"72";s:9:"स्त";s:2:"73";s:9:"स्र";s:2:"74";s:9:"ेका";s:2:"75";s:7:"्त ";s:2:"76";s:7:" बी";s:2:"77";s:7:" हु";s:2:"78";s:9:"क्त";s:2:"79";s:9:"त्र";s:2:"80";s:7:"रत ";s:2:"81";s:9:"र्न";s:2:"82";s:9:"र्य";s:2:"83";s:7:"ा र";s:2:"84";s:9:"ाका";s:2:"85";s:9:"ुको";s:2:"86";s:7:" एक";s:2:"87";s:7:" सं";s:2:"88";s:7:" सु";s:2:"89";s:9:"बीब";s:2:"90";s:9:"बीस";s:2:"91";s:9:"लको";s:2:"92";s:9:"स्य";s:2:"93";s:9:"ीबी";s:2:"94";s:9:"ीसी";s:2:"95";s:9:"ेको";s:2:"96";s:7:"ो स";s:2:"97";s:9:"्यक";s:2:"98";s:7:" छन";s:2:"99";s:7:" जन";s:3:"100";s:7:" बि";s:3:"101";s:7:" मु";s:3:"102";s:7:" स्";s:3:"103";s:9:"गर्";s:3:"104";s:9:"ताह";s:3:"105";s:9:"न्ध";s:3:"106";s:9:"बार";s:3:"107";s:9:"मन्";s:3:"108";s:9:"मस्";s:3:"109";s:9:"रुल";s:3:"110";s:9:"लाई";s:3:"111";s:7:"ा व";s:3:"112";s:7:"ाई ";s:3:"113";s:7:"ाल ";s:3:"114";s:9:"िका";s:3:"115";s:7:" त्";s:3:"116";s:7:" मा";s:3:"117";s:7:" यस";s:3:"118";s:7:" रु";s:3:"119";s:9:"ताक";s:3:"120";s:9:"बन्";s:3:"121";s:7:"र ब";s:3:"122";s:7:"रण ";s:3:"123";s:9:"रुप";s:3:"124";s:9:"रेक";s:3:"125";s:9:"ष्ट";s:3:"126";s:9:"सम्";s:3:"127";s:7:"सी ";s:3:"128";s:9:"ाएक";s:3:"129";s:9:"ुका";s:3:"130";s:9:"ुक्";s:3:"131";s:7:" अध";s:3:"132";s:7:" अन";s:3:"133";s:7:" तथ";s:3:"134";s:7:" थि";s:3:"135";s:7:" दे";s:3:"136";s:7:" पर";s:3:"137";s:7:" बै";s:3:"138";s:9:"तथा";s:3:"139";s:7:"ता ";s:3:"140";s:7:"दा ";s:3:"141";s:9:"द्द";s:3:"142";s:7:"नी ";s:3:"143";s:9:"बाट";s:3:"144";s:9:"यक्";s:3:"145";s:7:"री ";s:3:"146";s:9:"रीह";s:3:"147";s:9:"र्म";s:3:"148";s:9:"लका";s:3:"149";s:9:"समस";s:3:"150";s:7:"ा अ";s:3:"151";s:7:"ा ए";s:3:"152";s:7:"ाट ";s:3:"153";s:7:"िय ";s:3:"154";s:7:"ो प";s:3:"155";s:7:"ो म";s:3:"156";s:7:"्न ";s:3:"157";s:9:"्ने";s:3:"158";s:9:"्षा";s:3:"159";s:7:" पा";s:3:"160";s:7:" यो";s:3:"161";s:7:" हा";s:3:"162";s:9:"अधि";s:3:"163";s:9:"डुव";s:3:"164";s:7:"त भ";s:3:"165";s:7:"त स";s:3:"166";s:7:"था ";s:3:"167";s:9:"धिक";s:3:"168";s:9:"पमा";s:3:"169";s:9:"बैठ";s:3:"170";s:9:"मुद";s:3:"171";s:7:"या ";s:3:"172";s:9:"युक";s:3:"173";s:7:"र न";s:3:"174";s:9:"रति";s:3:"175";s:9:"वान";s:3:"176";s:9:"सार";s:3:"177";s:7:"ा आ";s:3:"178";s:7:"ा ज";s:3:"179";s:7:"ा ह";s:3:"180";s:9:"ुद्";s:3:"181";s:9:"ुपम";s:3:"182";s:9:"ुले";s:3:"183";s:9:"ुवा";s:3:"184";s:9:"ैठक";s:3:"185";s:7:"ो ब";s:3:"186";s:9:"्तर";s:3:"187";s:7:"्य ";s:3:"188";s:9:"्यस";s:3:"189";s:7:" क्";s:3:"190";s:7:" मन";s:3:"191";s:7:" रह";s:3:"192";s:9:"चार";s:3:"193";s:9:"तिय";s:3:"194";s:7:"दै ";s:3:"195";s:9:"निर";s:3:"196";s:7:"नु ";s:3:"197";s:9:"पर्";s:3:"198";s:9:"रक्";s:3:"199";s:9:"र्द";s:3:"200";s:9:"समा";s:3:"201";s:9:"सुर";s:3:"202";s:9:"ाउन";s:3:"203";s:7:"ान ";s:3:"204";s:9:"ानम";s:3:"205";s:9:"ारण";s:3:"206";s:9:"ाले";s:3:"207";s:7:"ि ब";s:3:"208";s:9:"ियो";s:3:"209";s:9:"ुन्";s:3:"210";s:9:"ुरक";s:3:"211";s:9:"्त्";s:3:"212";s:9:"्बन";s:3:"213";s:9:"्रा";s:3:"214";s:7:"्ष ";s:3:"215";s:7:" आर";s:3:"216";s:7:" जल";s:3:"217";s:7:" बे";s:3:"218";s:7:" या";s:3:"219";s:7:" सा";s:3:"220";s:9:"आएक";s:3:"221";s:7:"एक ";s:3:"222";s:9:"कर्";s:3:"223";s:9:"जलस";s:3:"224";s:9:"णका";s:3:"225";s:7:"त र";s:3:"226";s:9:"द्र";s:3:"227";s:9:"धान";s:3:"228";s:7:"धि ";s:3:"229";s:9:"नका";s:3:"230";s:9:"नमा";s:3:"231";s:7:"नि ";s:3:"232";s:9:"ममा";s:3:"233";s:7:"रम ";s:3:"234";s:9:"रहे";s:3:"235";s:9:"राज";s:3:"236";s:9:"लस्";s:3:"237";s:7:"ला ";s:3:"238";s:9:"वार";s:3:"239";s:9:"सका";s:3:"240";s:9:"हिल";s:3:"241";s:9:"हेक";s:3:"242";s:7:"ा त";s:3:"243";s:9:"ारे";s:3:"244";s:9:"िन्";s:3:"245";s:9:"िस्";s:3:"246";s:7:"े स";s:3:"247";s:7:"ो न";s:3:"248";s:7:"ो र";s:3:"249";s:7:"ोत ";s:3:"250";s:9:"्धि";s:3:"251";s:9:"्मी";s:3:"252";s:9:"्रस";s:3:"253";s:7:" दु";s:3:"254";s:7:" पन";s:3:"255";s:7:" बत";s:3:"256";s:7:" बन";s:3:"257";s:7:" भन";s:3:"258";s:9:"ंयु";s:3:"259";s:9:"आरम";s:3:"260";s:7:"खि ";s:3:"261";s:9:"ण्ड";s:3:"262";s:9:"तका";s:3:"263";s:9:"ताल";s:3:"264";s:7:"दी ";s:3:"265";s:9:"देख";s:3:"266";s:9:"निय";s:3:"267";s:9:"पनि";s:3:"268";s:9:"प्त";s:3:"269";s:9:"बता";s:3:"270";s:7:"मी ";s:3:"271";s:9:"म्भ";s:3:"272";s:7:"र स";s:3:"273";s:9:"रम्";s:3:"274";s:9:"लमा";s:3:"275";s:9:"विश";s:3:"276";s:9:"षाक";s:3:"277";s:9:"संय";s:3:"278";s:7:"ा ड";s:3:"279";s:7:"ा म";s:3:"280";s:9:"ानक";s:3:"281";s:9:"ालम";s:3:"282";s:7:"ि भ";s:3:"283";s:7:"ित ";s:3:"284";s:7:"ी प";s:3:"285";s:7:"ी र";s:3:"286";s:7:"ु भ";s:3:"287";s:9:"ुने";s:3:"288";s:7:"े ग";s:3:"289";s:9:"ेखि";s:3:"290";s:7:"ेर ";s:3:"291";s:7:"ो भ";s:3:"292";s:7:"ो व";s:3:"293";s:7:"ो ह";s:3:"294";s:7:"्भ ";s:3:"295";s:7:"्र ";s:3:"296";s:7:" ता";s:3:"297";s:7:" नम";s:3:"298";s:7:" ना";s:3:"299";}s:9:"norwegian";a:300:{s:3:"er ";s:1:"0";s:3:"en ";s:1:"1";s:3:"et ";s:1:"2";s:3:" de";s:1:"3";s:3:"det";s:1:"4";s:3:" i ";s:1:"5";s:3:"for";s:1:"6";s:3:"il ";s:1:"7";s:3:" fo";s:1:"8";s:3:" me";s:1:"9";s:3:"ing";s:2:"10";s:3:"om ";s:2:"11";s:3:" ha";s:2:"12";s:3:" og";s:2:"13";s:3:"ter";s:2:"14";s:3:" er";s:2:"15";s:3:" ti";s:2:"16";s:3:" st";s:2:"17";s:3:"og ";s:2:"18";s:3:"til";s:2:"19";s:3:"ne ";s:2:"20";s:3:" vi";s:2:"21";s:3:"re ";s:2:"22";s:3:" en";s:2:"23";s:3:" se";s:2:"24";s:3:"te ";s:2:"25";s:3:"or ";s:2:"26";s:3:"de ";s:2:"27";s:3:"kke";s:2:"28";s:3:"ke ";s:2:"29";s:3:"ar ";s:2:"30";s:3:"ng ";s:2:"31";s:3:"r s";s:2:"32";s:3:"ene";s:2:"33";s:3:" so";s:2:"34";s:3:"e s";s:2:"35";s:3:"der";s:2:"36";s:3:"an ";s:2:"37";s:3:"som";s:2:"38";s:3:"ste";s:2:"39";s:3:"at ";s:2:"40";s:3:"ed ";s:2:"41";s:3:"r i";s:2:"42";s:3:" av";s:2:"43";s:3:" in";s:2:"44";s:3:"men";s:2:"45";s:3:" at";s:2:"46";s:3:" ko";s:2:"47";s:4:" på";s:2:"48";s:3:"har";s:2:"49";s:3:" si";s:2:"50";s:3:"ere";s:2:"51";s:4:"på ";s:2:"52";s:3:"nde";s:2:"53";s:3:"and";s:2:"54";s:3:"els";s:2:"55";s:3:"ett";s:2:"56";s:3:"tte";s:2:"57";s:3:"lig";s:2:"58";s:3:"t s";s:2:"59";s:3:"den";s:2:"60";s:3:"t i";s:2:"61";s:3:"ikk";s:2:"62";s:3:"med";s:2:"63";s:3:"n s";s:2:"64";s:3:"rt ";s:2:"65";s:3:"ser";s:2:"66";s:3:"ska";s:2:"67";s:3:"t e";s:2:"68";s:3:"ker";s:2:"69";s:3:"sen";s:2:"70";s:3:"av ";s:2:"71";s:3:"ler";s:2:"72";s:3:"r a";s:2:"73";s:3:"ten";s:2:"74";s:3:"e f";s:2:"75";s:3:"r e";s:2:"76";s:3:"r t";s:2:"77";s:3:"ede";s:2:"78";s:3:"ig ";s:2:"79";s:3:" re";s:2:"80";s:3:"han";s:2:"81";s:3:"lle";s:2:"82";s:3:"ner";s:2:"83";s:3:" bl";s:2:"84";s:3:" fr";s:2:"85";s:3:"le ";s:2:"86";s:3:" ve";s:2:"87";s:3:"e t";s:2:"88";s:3:"lan";s:2:"89";s:3:"mme";s:2:"90";s:3:"nge";s:2:"91";s:3:" be";s:2:"92";s:3:" ik";s:2:"93";s:3:" om";s:2:"94";s:4:" å ";s:2:"95";s:3:"ell";s:2:"96";s:3:"sel";s:2:"97";s:3:"sta";s:2:"98";s:3:"ver";s:2:"99";s:3:" et";s:3:"100";s:3:" sk";s:3:"101";s:3:"nte";s:3:"102";s:3:"one";s:3:"103";s:3:"ore";s:3:"104";s:3:"r d";s:3:"105";s:3:"ske";s:3:"106";s:3:" an";s:3:"107";s:3:" la";s:3:"108";s:3:"del";s:3:"109";s:3:"gen";s:3:"110";s:3:"nin";s:3:"111";s:3:"r f";s:3:"112";s:3:"r v";s:3:"113";s:3:"se ";s:3:"114";s:3:" po";s:3:"115";s:3:"ir ";s:3:"116";s:3:"jon";s:3:"117";s:3:"mer";s:3:"118";s:3:"nen";s:3:"119";s:3:"omm";s:3:"120";s:3:"sjo";s:3:"121";s:3:" fl";s:3:"122";s:3:" sa";s:3:"123";s:3:"ern";s:3:"124";s:3:"kom";s:3:"125";s:3:"r m";s:3:"126";s:3:"r o";s:3:"127";s:3:"ren";s:3:"128";s:3:"vil";s:3:"129";s:3:"ale";s:3:"130";s:3:"es ";s:3:"131";s:3:"n a";s:3:"132";s:3:"t f";s:3:"133";s:3:" le";s:3:"134";s:3:"bli";s:3:"135";s:3:"e e";s:3:"136";s:3:"e i";s:3:"137";s:3:"e v";s:3:"138";s:3:"het";s:3:"139";s:3:"ye ";s:3:"140";s:3:" ir";s:3:"141";s:3:"al ";s:3:"142";s:3:"e o";s:3:"143";s:3:"ide";s:3:"144";s:3:"iti";s:3:"145";s:3:"lit";s:3:"146";s:3:"nne";s:3:"147";s:3:"ran";s:3:"148";s:3:"t o";s:3:"149";s:3:"tal";s:3:"150";s:3:"tat";s:3:"151";s:3:"tt ";s:3:"152";s:3:" ka";s:3:"153";s:3:"ans";s:3:"154";s:3:"asj";s:3:"155";s:3:"ge ";s:3:"156";s:3:"inn";s:3:"157";s:3:"kon";s:3:"158";s:3:"lse";s:3:"159";s:3:"pet";s:3:"160";s:3:"t d";s:3:"161";s:3:"vi ";s:3:"162";s:3:" ut";s:3:"163";s:3:"ent";s:3:"164";s:3:"eri";s:3:"165";s:3:"oli";s:3:"166";s:3:"r p";s:3:"167";s:3:"ret";s:3:"168";s:3:"ris";s:3:"169";s:3:"sto";s:3:"170";s:3:"str";s:3:"171";s:3:"t a";s:3:"172";s:3:" ga";s:3:"173";s:3:"all";s:3:"174";s:3:"ape";s:3:"175";s:3:"g s";s:3:"176";s:3:"ill";s:3:"177";s:3:"ira";s:3:"178";s:3:"kap";s:3:"179";s:3:"nn ";s:3:"180";s:3:"opp";s:3:"181";s:3:"r h";s:3:"182";s:3:"rin";s:3:"183";s:3:" br";s:3:"184";s:3:" op";s:3:"185";s:3:"e m";s:3:"186";s:3:"ert";s:3:"187";s:3:"ger";s:3:"188";s:3:"ion";s:3:"189";s:3:"kal";s:3:"190";s:3:"lsk";s:3:"191";s:3:"nes";s:3:"192";s:3:" gj";s:3:"193";s:3:" mi";s:3:"194";s:3:" pr";s:3:"195";s:3:"ang";s:3:"196";s:3:"e h";s:3:"197";s:3:"e r";s:3:"198";s:3:"elt";s:3:"199";s:3:"enn";s:3:"200";s:3:"i s";s:3:"201";s:3:"ist";s:3:"202";s:3:"jen";s:3:"203";s:3:"kan";s:3:"204";s:3:"lt ";s:3:"205";s:3:"nal";s:3:"206";s:3:"res";s:3:"207";s:3:"tor";s:3:"208";s:3:"ass";s:3:"209";s:3:"dre";s:3:"210";s:3:"e b";s:3:"211";s:3:"e p";s:3:"212";s:3:"mel";s:3:"213";s:3:"n t";s:3:"214";s:3:"nse";s:3:"215";s:3:"ort";s:3:"216";s:3:"per";s:3:"217";s:3:"reg";s:3:"218";s:3:"sje";s:3:"219";s:3:"t p";s:3:"220";s:3:"t v";s:3:"221";s:3:" hv";s:3:"222";s:4:" nå";s:3:"223";s:3:" va";s:3:"224";s:3:"ann";s:3:"225";s:3:"ato";s:3:"226";s:3:"e a";s:3:"227";s:3:"est";s:3:"228";s:3:"ise";s:3:"229";s:3:"isk";s:3:"230";s:3:"oil";s:3:"231";s:3:"ord";s:3:"232";s:3:"pol";s:3:"233";s:3:"ra ";s:3:"234";s:3:"rak";s:3:"235";s:3:"sse";s:3:"236";s:3:"toi";s:3:"237";s:3:" gr";s:3:"238";s:3:"ak ";s:3:"239";s:3:"eg ";s:3:"240";s:3:"ele";s:3:"241";s:3:"g a";s:3:"242";s:3:"ige";s:3:"243";s:3:"igh";s:3:"244";s:3:"m e";s:3:"245";s:3:"n f";s:3:"246";s:3:"n v";s:3:"247";s:3:"ndr";s:3:"248";s:3:"nsk";s:3:"249";s:3:"rer";s:3:"250";s:3:"t m";s:3:"251";s:3:"und";s:3:"252";s:3:"var";s:3:"253";s:4:"år ";s:3:"254";s:3:" he";s:3:"255";s:3:" no";s:3:"256";s:3:" ny";s:3:"257";s:3:"end";s:3:"258";s:3:"ete";s:3:"259";s:3:"fly";s:3:"260";s:3:"g i";s:3:"261";s:3:"ghe";s:3:"262";s:3:"ier";s:3:"263";s:3:"ind";s:3:"264";s:3:"int";s:3:"265";s:3:"lin";s:3:"266";s:3:"n d";s:3:"267";s:3:"n p";s:3:"268";s:3:"rne";s:3:"269";s:3:"sak";s:3:"270";s:3:"sie";s:3:"271";s:3:"t b";s:3:"272";s:3:"tid";s:3:"273";s:3:" al";s:3:"274";s:3:" pa";s:3:"275";s:3:" tr";s:3:"276";s:3:"ag ";s:3:"277";s:3:"dig";s:3:"278";s:3:"e d";s:3:"279";s:3:"e k";s:3:"280";s:3:"ess";s:3:"281";s:3:"hol";s:3:"282";s:3:"i d";s:3:"283";s:3:"lag";s:3:"284";s:3:"led";s:3:"285";s:3:"n e";s:3:"286";s:3:"n i";s:3:"287";s:3:"n o";s:3:"288";s:3:"pri";s:3:"289";s:3:"r b";s:3:"290";s:3:"st ";s:3:"291";s:3:" fe";s:3:"292";s:3:" li";s:3:"293";s:3:" ry";s:3:"294";s:3:"air";s:3:"295";s:3:"ake";s:3:"296";s:3:"d s";s:3:"297";s:3:"eas";s:3:"298";s:3:"egi";s:3:"299";}s:6:"pashto";a:300:{s:4:" د ";s:1:"0";s:5:"اؤ ";s:1:"1";s:5:" اؤ";s:1:"2";s:5:"نو ";s:1:"3";s:5:"ې د";s:1:"4";s:5:"ره ";s:1:"5";s:5:" په";s:1:"6";s:5:"نه ";s:1:"7";s:5:"چې ";s:1:"8";s:5:" چې";s:1:"9";s:5:"په ";s:2:"10";s:5:"ه د";s:2:"11";s:5:"ته ";s:2:"12";s:5:"و ا";s:2:"13";s:6:"ونو";s:2:"14";s:5:"و د";s:2:"15";s:5:" او";s:2:"16";s:6:"انو";s:2:"17";s:6:"ونه";s:2:"18";s:5:"ه ک";s:2:"19";s:5:" دا";s:2:"20";s:5:"ه ا";s:2:"21";s:5:"دې ";s:2:"22";s:5:"ښې ";s:2:"23";s:5:" کې";s:2:"24";s:5:"ان ";s:2:"25";s:5:"لو ";s:2:"26";s:5:"هم ";s:2:"27";s:5:"و م";s:2:"28";s:6:"کښې";s:2:"29";s:5:"ه م";s:2:"30";s:5:"ى ا";s:2:"31";s:5:" نو";s:2:"32";s:5:" ته";s:2:"33";s:5:" کښ";s:2:"34";s:6:"رون";s:2:"35";s:5:"کې ";s:2:"36";s:5:"ده ";s:2:"37";s:5:"له ";s:2:"38";s:5:"به ";s:2:"39";s:5:"رو ";s:2:"40";s:5:" هم";s:2:"41";s:5:"ه و";s:2:"42";s:5:"وى ";s:2:"43";s:5:"او ";s:2:"44";s:6:"تون";s:2:"45";s:5:"دا ";s:2:"46";s:5:" کو";s:2:"47";s:5:" کړ";s:2:"48";s:6:"قام";s:2:"49";s:5:" تر";s:2:"50";s:6:"ران";s:2:"51";s:5:"ه پ";s:2:"52";s:5:"ې و";s:2:"53";s:5:"ې پ";s:2:"54";s:5:" به";s:2:"55";s:5:" خو";s:2:"56";s:5:"تو ";s:2:"57";s:5:"د د";s:2:"58";s:5:"د ا";s:2:"59";s:5:"ه ت";s:2:"60";s:5:"و پ";s:2:"61";s:5:"يا ";s:2:"62";s:5:" خپ";s:2:"63";s:5:" دو";s:2:"64";s:5:" را";s:2:"65";s:5:" مش";s:2:"66";s:5:" پر";s:2:"67";s:6:"ارو";s:2:"68";s:5:"رې ";s:2:"69";s:5:"م د";s:2:"70";s:6:"مشر";s:2:"71";s:5:" شو";s:2:"72";s:5:" ور";s:2:"73";s:5:"ار ";s:2:"74";s:5:"دى ";s:2:"75";s:5:" اد";s:2:"76";s:5:" دى";s:2:"77";s:5:" مو";s:2:"78";s:5:"د پ";s:2:"79";s:5:"لي ";s:2:"80";s:5:"و ک";s:2:"81";s:5:" مق";s:2:"82";s:5:" يو";s:2:"83";s:5:"ؤ د";s:2:"84";s:6:"خپل";s:2:"85";s:6:"سره";s:2:"86";s:5:"ه چ";s:2:"87";s:5:"ور ";s:2:"88";s:5:" تا";s:2:"89";s:5:" دې";s:2:"90";s:5:" رو";s:2:"91";s:5:" سر";s:2:"92";s:5:" مل";s:2:"93";s:5:" کا";s:2:"94";s:5:"ؤ ا";s:2:"95";s:6:"اره";s:2:"96";s:6:"برو";s:2:"97";s:5:"مه ";s:2:"98";s:5:"ه ب";s:2:"99";s:5:"و ت";s:3:"100";s:6:"پښت";s:3:"101";s:5:" با";s:3:"102";s:5:" دغ";s:3:"103";s:5:" قب";s:3:"104";s:5:" له";s:3:"105";s:5:" وا";s:3:"106";s:5:" پا";s:3:"107";s:5:" پښ";s:3:"108";s:5:"د م";s:3:"109";s:5:"د ه";s:3:"110";s:5:"لې ";s:3:"111";s:6:"مات";s:3:"112";s:5:"مو ";s:3:"113";s:5:"ه ه";s:3:"114";s:5:"وي ";s:3:"115";s:5:"ې ب";s:3:"116";s:5:"ې ک";s:3:"117";s:5:" ده";s:3:"118";s:5:" قا";s:3:"119";s:5:"ال ";s:3:"120";s:6:"اما";s:3:"121";s:5:"د ن";s:3:"122";s:6:"قبر";s:3:"123";s:5:"ه ن";s:3:"124";s:6:"پار";s:3:"125";s:5:" اث";s:3:"126";s:5:" بي";s:3:"127";s:5:" لا";s:3:"128";s:5:" لر";s:3:"129";s:6:"اثا";s:3:"130";s:5:"د خ";s:3:"131";s:6:"دار";s:3:"132";s:6:"ريخ";s:3:"133";s:6:"شرا";s:3:"134";s:6:"مقا";s:3:"135";s:5:"نۍ ";s:3:"136";s:5:"ه ر";s:3:"137";s:5:"ه ل";s:3:"138";s:6:"ولو";s:3:"139";s:5:"يو ";s:3:"140";s:6:"کوم";s:3:"141";s:5:" دد";s:3:"142";s:5:" لو";s:3:"143";s:5:" مح";s:3:"144";s:5:" مر";s:3:"145";s:5:" وو";s:3:"146";s:6:"اتو";s:3:"147";s:6:"اري";s:3:"148";s:6:"الو";s:3:"149";s:6:"اند";s:3:"150";s:6:"خان";s:3:"151";s:5:"د ت";s:3:"152";s:5:"سې ";s:3:"153";s:5:"لى ";s:3:"154";s:6:"نور";s:3:"155";s:5:"و ل";s:3:"156";s:5:"ي چ";s:3:"157";s:5:"ړي ";s:3:"158";s:6:"ښتو";s:3:"159";s:5:"ې ل";s:3:"160";s:5:" جو";s:3:"161";s:5:" سي";s:3:"162";s:5:"ام ";s:3:"163";s:6:"بان";s:3:"164";s:6:"تار";s:3:"165";s:5:"تر ";s:3:"166";s:6:"ثار";s:3:"167";s:5:"خو ";s:3:"168";s:5:"دو ";s:3:"169";s:5:"ر ک";s:3:"170";s:5:"ل د";s:3:"171";s:6:"مون";s:3:"172";s:6:"ندې";s:3:"173";s:5:"و ن";s:3:"174";s:5:"ول ";s:3:"175";s:5:"وه ";s:3:"176";s:5:"ى و";s:3:"177";s:5:"ي د";s:3:"178";s:5:"ې ا";s:3:"179";s:5:"ې ت";s:3:"180";s:5:"ې ي";s:3:"181";s:5:" حک";s:3:"182";s:5:" خب";s:3:"183";s:5:" نه";s:3:"184";s:5:" پو";s:3:"185";s:5:"ا د";s:3:"186";s:5:"تې ";s:3:"187";s:6:"جوړ";s:3:"188";s:6:"حکم";s:3:"189";s:6:"حکو";s:3:"190";s:6:"خبر";s:3:"191";s:6:"دان";s:3:"192";s:5:"ر د";s:3:"193";s:5:"غه ";s:3:"194";s:6:"قاف";s:3:"195";s:6:"محک";s:3:"196";s:6:"وال";s:3:"197";s:6:"ومت";s:3:"198";s:6:"ويل";s:3:"199";s:5:"ى د";s:3:"200";s:5:"ى م";s:3:"201";s:6:"يره";s:3:"202";s:5:"پر ";s:3:"203";s:6:"کول";s:3:"204";s:5:"ې ه";s:3:"205";s:5:" تي";s:3:"206";s:5:" خا";s:3:"207";s:5:" وک";s:3:"208";s:5:" يا";s:3:"209";s:5:" ځا";s:3:"210";s:5:"ؤ ق";s:3:"211";s:6:"انۍ";s:3:"212";s:5:"بى ";s:3:"213";s:5:"غو ";s:3:"214";s:5:"ه خ";s:3:"215";s:5:"و ب";s:3:"216";s:6:"ودا";s:3:"217";s:6:"يدو";s:3:"218";s:5:"ړې ";s:3:"219";s:6:"کال";s:3:"220";s:5:" بر";s:3:"221";s:5:" قد";s:3:"222";s:5:" مي";s:3:"223";s:5:" وي";s:3:"224";s:5:" کر";s:3:"225";s:5:"ؤ م";s:3:"226";s:5:"ات ";s:3:"227";s:6:"ايي";s:3:"228";s:5:"تى ";s:3:"229";s:6:"تيا";s:3:"230";s:6:"تير";s:3:"231";s:6:"خوا";s:3:"232";s:6:"دغو";s:3:"233";s:5:"دم ";s:3:"234";s:6:"ديم";s:3:"235";s:5:"ر و";s:3:"236";s:6:"قدي";s:3:"237";s:5:"م خ";s:3:"238";s:6:"مان";s:3:"239";s:5:"مې ";s:3:"240";s:6:"نيو";s:3:"241";s:5:"نږ ";s:3:"242";s:5:"ه ي";s:3:"243";s:5:"و س";s:3:"244";s:5:"و چ";s:3:"245";s:6:"وان";s:3:"246";s:6:"ورو";s:3:"247";s:6:"ونږ";s:3:"248";s:6:"پور";s:3:"249";s:5:"ړه ";s:3:"250";s:5:"ړو ";s:3:"251";s:5:"ۍ د";s:3:"252";s:5:"ې ن";s:3:"253";s:5:" اه";s:3:"254";s:5:" زي";s:3:"255";s:5:" سو";s:3:"256";s:5:" شي";s:3:"257";s:5:" هر";s:3:"258";s:5:" هغ";s:3:"259";s:5:" ښا";s:3:"260";s:6:"اتل";s:3:"261";s:5:"اق ";s:3:"262";s:6:"اني";s:3:"263";s:6:"بري";s:3:"264";s:5:"بې ";s:3:"265";s:5:"ت ا";s:3:"266";s:5:"د ب";s:3:"267";s:5:"د س";s:3:"268";s:5:"ر م";s:3:"269";s:5:"رى ";s:3:"270";s:6:"عرا";s:3:"271";s:6:"لان";s:3:"272";s:5:"مى ";s:3:"273";s:5:"نى ";s:3:"274";s:5:"و خ";s:3:"275";s:5:"وئ ";s:3:"276";s:6:"ورک";s:3:"277";s:6:"ورې";s:3:"278";s:5:"ون ";s:3:"279";s:6:"وکړ";s:3:"280";s:5:"ى چ";s:3:"281";s:6:"يمه";s:3:"282";s:5:"يې ";s:3:"283";s:6:"ښتن";s:3:"284";s:5:"که ";s:3:"285";s:6:"کړي";s:3:"286";s:5:"ې خ";s:3:"287";s:5:"ے ش";s:3:"288";s:5:" تح";s:3:"289";s:5:" تو";s:3:"290";s:5:" در";s:3:"291";s:5:" دپ";s:3:"292";s:5:" صو";s:3:"293";s:5:" عر";s:3:"294";s:5:" ول";s:3:"295";s:5:" يؤ";s:3:"296";s:5:" پۀ";s:3:"297";s:5:" څو";s:3:"298";s:5:"ا ا";s:3:"299";}s:6:"pidgin";a:300:{s:3:" de";s:1:"0";s:3:" we";s:1:"1";s:3:" di";s:1:"2";s:3:"di ";s:1:"3";s:3:"dem";s:1:"4";s:3:"em ";s:1:"5";s:3:"ay ";s:1:"6";s:3:" sa";s:1:"7";s:3:"or ";s:1:"8";s:3:"say";s:1:"9";s:3:"ke ";s:2:"10";s:3:"ey ";s:2:"11";s:3:" an";s:2:"12";s:3:" go";s:2:"13";s:3:" e ";s:2:"14";s:3:" to";s:2:"15";s:3:" ma";s:2:"16";s:3:"e d";s:2:"17";s:3:"wey";s:2:"18";s:3:"for";s:2:"19";s:3:"nd ";s:2:"20";s:3:"to ";s:2:"21";s:3:" be";s:2:"22";s:3:" fo";s:2:"23";s:3:"ake";s:2:"24";s:3:"im ";s:2:"25";s:3:" pe";s:2:"26";s:3:"le ";s:2:"27";s:3:"go ";s:2:"28";s:3:"ll ";s:2:"29";s:3:"de ";s:2:"30";s:3:"e s";s:2:"31";s:3:"on ";s:2:"32";s:3:"get";s:2:"33";s:3:"ght";s:2:"34";s:3:"igh";s:2:"35";s:3:" ri";s:2:"36";s:3:"et ";s:2:"37";s:3:"rig";s:2:"38";s:3:" ge";s:2:"39";s:3:"y d";s:2:"40";s:3:" na";s:2:"41";s:3:"mak";s:2:"42";s:3:"t t";s:2:"43";s:3:" no";s:2:"44";s:3:"and";s:2:"45";s:3:"tin";s:2:"46";s:3:"ing";s:2:"47";s:3:"eve";s:2:"48";s:3:"ri ";s:2:"49";s:3:" im";s:2:"50";s:3:" am";s:2:"51";s:3:" or";s:2:"52";s:3:"am ";s:2:"53";s:3:"be ";s:2:"54";s:3:" ev";s:2:"55";s:3:" ta";s:2:"56";s:3:"ht ";s:2:"57";s:3:"e w";s:2:"58";s:3:" li";s:2:"59";s:3:"eri";s:2:"60";s:3:"ng ";s:2:"61";s:3:"ver";s:2:"62";s:3:"all";s:2:"63";s:3:"e f";s:2:"64";s:3:"ers";s:2:"65";s:3:"ntr";s:2:"66";s:3:"ont";s:2:"67";s:3:" do";s:2:"68";s:3:"r d";s:2:"69";s:3:" ko";s:2:"70";s:3:" ti";s:2:"71";s:3:"an ";s:2:"72";s:3:"kon";s:2:"73";s:3:"per";s:2:"74";s:3:"tri";s:2:"75";s:3:"y e";s:2:"76";s:3:"rso";s:2:"77";s:3:"son";s:2:"78";s:3:"no ";s:2:"79";s:3:"ome";s:2:"80";s:3:"is ";s:2:"81";s:3:"do ";s:2:"82";s:3:"ne ";s:2:"83";s:3:"one";s:2:"84";s:3:"ion";s:2:"85";s:3:"m g";s:2:"86";s:3:"i k";s:2:"87";s:3:" al";s:2:"88";s:3:"bod";s:2:"89";s:3:"i w";s:2:"90";s:3:"odi";s:2:"91";s:3:" so";s:2:"92";s:3:" wo";s:2:"93";s:3:"o d";s:2:"94";s:3:"st ";s:2:"95";s:3:"t r";s:2:"96";s:3:" of";s:2:"97";s:3:"aim";s:2:"98";s:3:"e g";s:2:"99";s:3:"nai";s:3:"100";s:3:" co";s:3:"101";s:3:"dis";s:3:"102";s:3:"me ";s:3:"103";s:3:"of ";s:3:"104";s:3:" wa";s:3:"105";s:3:"e t";s:3:"106";s:3:" ar";s:3:"107";s:3:"e l";s:3:"108";s:3:"ike";s:3:"109";s:3:"lik";s:3:"110";s:3:"t a";s:3:"111";s:3:"wor";s:3:"112";s:3:"alk";s:3:"113";s:3:"ell";s:3:"114";s:3:"eop";s:3:"115";s:3:"lk ";s:3:"116";s:3:"opl";s:3:"117";s:3:"peo";s:3:"118";s:3:"ple";s:3:"119";s:3:"re ";s:3:"120";s:3:"tal";s:3:"121";s:3:"any";s:3:"122";s:3:"e a";s:3:"123";s:3:"o g";s:3:"124";s:3:"art";s:3:"125";s:3:"cle";s:3:"126";s:3:"i p";s:3:"127";s:3:"icl";s:3:"128";s:3:"rti";s:3:"129";s:3:"the";s:3:"130";s:3:"tic";s:3:"131";s:3:"we ";s:3:"132";s:3:"f d";s:3:"133";s:3:"in ";s:3:"134";s:3:" mu";s:3:"135";s:3:"e n";s:3:"136";s:3:"e o";s:3:"137";s:3:"mus";s:3:"138";s:3:"n d";s:3:"139";s:3:"na ";s:3:"140";s:3:"o m";s:3:"141";s:3:"ust";s:3:"142";s:3:"wel";s:3:"143";s:3:"e e";s:3:"144";s:3:"her";s:3:"145";s:3:"m d";s:3:"146";s:3:"nt ";s:3:"147";s:3:" fi";s:3:"148";s:3:"at ";s:3:"149";s:3:"e b";s:3:"150";s:3:"it ";s:3:"151";s:3:"m w";s:3:"152";s:3:"o t";s:3:"153";s:3:"wan";s:3:"154";s:3:"com";s:3:"155";s:3:"da ";s:3:"156";s:3:"fit";s:3:"157";s:3:"m b";s:3:"158";s:3:"so ";s:3:"159";s:3:" fr";s:3:"160";s:3:"ce ";s:3:"161";s:3:"er ";s:3:"162";s:3:"o a";s:3:"163";s:3:" if";s:3:"164";s:3:" on";s:3:"165";s:3:"ent";s:3:"166";s:3:"if ";s:3:"167";s:3:"ind";s:3:"168";s:3:"kin";s:3:"169";s:3:"l d";s:3:"170";s:3:"man";s:3:"171";s:3:"o s";s:3:"172";s:3:" se";s:3:"173";s:3:"y a";s:3:"174";s:3:"y m";s:3:"175";s:3:" re";s:3:"176";s:3:"ee ";s:3:"177";s:3:"k a";s:3:"178";s:3:"t s";s:3:"179";s:3:"ve ";s:3:"180";s:3:"y w";s:3:"181";s:3:" ki";s:3:"182";s:3:"eti";s:3:"183";s:3:"men";s:3:"184";s:3:"ta ";s:3:"185";s:3:"y n";s:3:"186";s:3:"d t";s:3:"187";s:3:"dey";s:3:"188";s:3:"e c";s:3:"189";s:3:"i o";s:3:"190";s:3:"ibo";s:3:"191";s:3:"ld ";s:3:"192";s:3:"m t";s:3:"193";s:3:"n b";s:3:"194";s:3:"o b";s:3:"195";s:3:"ow ";s:3:"196";s:3:"ree";s:3:"197";s:3:"rio";s:3:"198";s:3:"t d";s:3:"199";s:3:" hu";s:3:"200";s:3:" su";s:3:"201";s:3:"en ";s:3:"202";s:3:"hts";s:3:"203";s:3:"ive";s:3:"204";s:3:"m n";s:3:"205";s:3:"n g";s:3:"206";s:3:"ny ";s:3:"207";s:3:"oth";s:3:"208";s:3:"ts ";s:3:"209";s:3:" as";s:3:"210";s:3:" wh";s:3:"211";s:3:"as ";s:3:"212";s:3:"gom";s:3:"213";s:3:"hum";s:3:"214";s:3:"k s";s:3:"215";s:3:"oda";s:3:"216";s:3:"ork";s:3:"217";s:3:"se ";s:3:"218";s:3:"uma";s:3:"219";s:3:"ut ";s:3:"220";s:3:" ba";s:3:"221";s:3:" ot";s:3:"222";s:3:"ano";s:3:"223";s:3:"m a";s:3:"224";s:3:"m s";s:3:"225";s:3:"nod";s:3:"226";s:3:"om ";s:3:"227";s:3:"r a";s:3:"228";s:3:"r i";s:3:"229";s:3:"rk ";s:3:"230";s:3:" fa";s:3:"231";s:3:" si";s:3:"232";s:3:" th";s:3:"233";s:3:"ad ";s:3:"234";s:3:"e m";s:3:"235";s:3:"eac";s:3:"236";s:3:"m m";s:3:"237";s:3:"n w";s:3:"238";s:3:"nob";s:3:"239";s:3:"orl";s:3:"240";s:3:"out";s:3:"241";s:3:"own";s:3:"242";s:3:"r s";s:3:"243";s:3:"r w";s:3:"244";s:3:"rib";s:3:"245";s:3:"rld";s:3:"246";s:3:"s w";s:3:"247";s:3:"ure";s:3:"248";s:3:"wn ";s:3:"249";s:3:" ow";s:3:"250";s:3:"a d";s:3:"251";s:3:"bad";s:3:"252";s:3:"ch ";s:3:"253";s:3:"fre";s:3:"254";s:3:"gs ";s:3:"255";s:3:"m k";s:3:"256";s:3:"nce";s:3:"257";s:3:"ngs";s:3:"258";s:3:"o f";s:3:"259";s:3:"obo";s:3:"260";s:3:"rea";s:3:"261";s:3:"sur";s:3:"262";s:3:"y o";s:3:"263";s:3:" ab";s:3:"264";s:3:" un";s:3:"265";s:3:"abo";s:3:"266";s:3:"ach";s:3:"267";s:3:"bou";s:3:"268";s:3:"d m";s:3:"269";s:3:"dat";s:3:"270";s:3:"e p";s:3:"271";s:3:"g w";s:3:"272";s:3:"hol";s:3:"273";s:3:"i m";s:3:"274";s:3:"i r";s:3:"275";s:3:"m f";s:3:"276";s:3:"m o";s:3:"277";s:3:"n o";s:3:"278";s:3:"now";s:3:"279";s:3:"ry ";s:3:"280";s:3:"s a";s:3:"281";s:3:"t o";s:3:"282";s:3:"tay";s:3:"283";s:3:"wet";s:3:"284";s:3:" ag";s:3:"285";s:3:" bo";s:3:"286";s:3:" da";s:3:"287";s:3:" pr";s:3:"288";s:3:"arr";s:3:"289";s:3:"ati";s:3:"290";s:3:"d d";s:3:"291";s:3:"d p";s:3:"292";s:3:"i g";s:3:"293";s:3:"i t";s:3:"294";s:3:"liv";s:3:"295";s:3:"ly ";s:3:"296";s:3:"n a";s:3:"297";s:3:"od ";s:3:"298";s:3:"ok ";s:3:"299";}s:6:"polish";a:300:{s:3:"ie ";s:1:"0";s:3:"nie";s:1:"1";s:3:"em ";s:1:"2";s:3:" ni";s:1:"3";s:3:" po";s:1:"4";s:3:" pr";s:1:"5";s:3:"dzi";s:1:"6";s:3:" na";s:1:"7";s:4:"że ";s:1:"8";s:3:"rze";s:1:"9";s:3:"na ";s:2:"10";s:4:"łem";s:2:"11";s:3:"wie";s:2:"12";s:3:" w ";s:2:"13";s:4:" że";s:2:"14";s:3:"go ";s:2:"15";s:3:" by";s:2:"16";s:3:"prz";s:2:"17";s:3:"owa";s:2:"18";s:4:"ię ";s:2:"19";s:3:" do";s:2:"20";s:3:" si";s:2:"21";s:3:"owi";s:2:"22";s:3:" pa";s:2:"23";s:3:" za";s:2:"24";s:3:"ch ";s:2:"25";s:3:"ego";s:2:"26";s:4:"ał ";s:2:"27";s:4:"się";s:2:"28";s:3:"ej ";s:2:"29";s:4:"wał";s:2:"30";s:3:"ym ";s:2:"31";s:3:"ani";s:2:"32";s:4:"ałe";s:2:"33";s:3:"to ";s:2:"34";s:3:" i ";s:2:"35";s:3:" to";s:2:"36";s:3:" te";s:2:"37";s:3:"e p";s:2:"38";s:3:" je";s:2:"39";s:3:" z ";s:2:"40";s:3:"czy";s:2:"41";s:4:"był";s:2:"42";s:3:"pan";s:2:"43";s:3:"sta";s:2:"44";s:3:"kie";s:2:"45";s:3:" ja";s:2:"46";s:3:"do ";s:2:"47";s:3:" ch";s:2:"48";s:3:" cz";s:2:"49";s:3:" wi";s:2:"50";s:4:"iał";s:2:"51";s:3:"a p";s:2:"52";s:3:"pow";s:2:"53";s:3:" mi";s:2:"54";s:3:"li ";s:2:"55";s:3:"eni";s:2:"56";s:3:"zie";s:2:"57";s:3:" ta";s:2:"58";s:3:" wa";s:2:"59";s:4:"ło ";s:2:"60";s:4:"ać ";s:2:"61";s:3:"dy ";s:2:"62";s:3:"ak ";s:2:"63";s:3:"e w";s:2:"64";s:3:" a ";s:2:"65";s:3:" od";s:2:"66";s:3:" st";s:2:"67";s:3:"nia";s:2:"68";s:3:"rzy";s:2:"69";s:3:"ied";s:2:"70";s:3:" kt";s:2:"71";s:3:"odz";s:2:"72";s:3:"cie";s:2:"73";s:3:"cze";s:2:"74";s:3:"ia ";s:2:"75";s:3:"iel";s:2:"76";s:4:"któ";s:2:"77";s:3:"o p";s:2:"78";s:4:"tór";s:2:"79";s:4:"ści";s:2:"80";s:3:" sp";s:2:"81";s:3:" wy";s:2:"82";s:3:"jak";s:2:"83";s:3:"tak";s:2:"84";s:3:"zy ";s:2:"85";s:3:" mo";s:2:"86";s:5:"ałę";s:2:"87";s:3:"pro";s:2:"88";s:3:"ski";s:2:"89";s:3:"tem";s:2:"90";s:5:"łęs";s:2:"91";s:3:" tr";s:2:"92";s:3:"e m";s:2:"93";s:3:"jes";s:2:"94";s:3:"my ";s:2:"95";s:3:" ro";s:2:"96";s:3:"edz";s:2:"97";s:3:"eli";s:2:"98";s:3:"iej";s:2:"99";s:3:" rz";s:3:"100";s:3:"a n";s:3:"101";s:3:"ale";s:3:"102";s:3:"an ";s:3:"103";s:3:"e s";s:3:"104";s:3:"est";s:3:"105";s:3:"le ";s:3:"106";s:3:"o s";s:3:"107";s:3:"i p";s:3:"108";s:3:"ki ";s:3:"109";s:3:" co";s:3:"110";s:3:"ada";s:3:"111";s:3:"czn";s:3:"112";s:3:"e t";s:3:"113";s:3:"e z";s:3:"114";s:3:"ent";s:3:"115";s:3:"ny ";s:3:"116";s:3:"pre";s:3:"117";s:4:"rzą";s:3:"118";s:3:"y s";s:3:"119";s:3:" ko";s:3:"120";s:3:" o ";s:3:"121";s:3:"ach";s:3:"122";s:3:"am ";s:3:"123";s:3:"e n";s:3:"124";s:3:"o t";s:3:"125";s:3:"oli";s:3:"126";s:3:"pod";s:3:"127";s:3:"zia";s:3:"128";s:3:" go";s:3:"129";s:3:" ka";s:3:"130";s:3:"by ";s:3:"131";s:3:"ieg";s:3:"132";s:3:"ier";s:3:"133";s:4:"noś";s:3:"134";s:3:"roz";s:3:"135";s:3:"spo";s:3:"136";s:3:"ych";s:3:"137";s:4:"ząd";s:3:"138";s:3:" mn";s:3:"139";s:3:"acz";s:3:"140";s:3:"adz";s:3:"141";s:3:"bie";s:3:"142";s:3:"cho";s:3:"143";s:3:"mni";s:3:"144";s:3:"o n";s:3:"145";s:3:"ost";s:3:"146";s:3:"pra";s:3:"147";s:3:"ze ";s:3:"148";s:4:"ła ";s:3:"149";s:3:" so";s:3:"150";s:3:"a m";s:3:"151";s:3:"cza";s:3:"152";s:3:"iem";s:3:"153";s:4:"ić ";s:3:"154";s:3:"obi";s:3:"155";s:4:"ył ";s:3:"156";s:4:"yło";s:3:"157";s:3:" mu";s:3:"158";s:4:" mó";s:3:"159";s:3:"a t";s:3:"160";s:3:"acj";s:3:"161";s:3:"ci ";s:3:"162";s:3:"e b";s:3:"163";s:3:"ich";s:3:"164";s:3:"kan";s:3:"165";s:3:"mi ";s:3:"166";s:3:"mie";s:3:"167";s:4:"ośc";s:3:"168";s:3:"row";s:3:"169";s:3:"zen";s:3:"170";s:3:"zyd";s:3:"171";s:3:" al";s:3:"172";s:3:" re";s:3:"173";s:3:"a w";s:3:"174";s:3:"den";s:3:"175";s:3:"edy";s:3:"176";s:4:"ił ";s:3:"177";s:3:"ko ";s:3:"178";s:3:"o w";s:3:"179";s:3:"rac";s:3:"180";s:4:"śmy";s:3:"181";s:3:" ma";s:3:"182";s:3:" ra";s:3:"183";s:3:" sz";s:3:"184";s:3:" ty";s:3:"185";s:3:"e j";s:3:"186";s:3:"isk";s:3:"187";s:3:"ji ";s:3:"188";s:3:"ka ";s:3:"189";s:3:"m s";s:3:"190";s:3:"no ";s:3:"191";s:3:"o z";s:3:"192";s:3:"rez";s:3:"193";s:3:"wa ";s:3:"194";s:4:"ów ";s:3:"195";s:4:"łow";s:3:"196";s:5:"ść ";s:3:"197";s:3:" ob";s:3:"198";s:3:"ech";s:3:"199";s:3:"ecz";s:3:"200";s:3:"ezy";s:3:"201";s:3:"i w";s:3:"202";s:3:"ja ";s:3:"203";s:3:"kon";s:3:"204";s:4:"mów";s:3:"205";s:3:"ne ";s:3:"206";s:3:"ni ";s:3:"207";s:3:"now";s:3:"208";s:3:"nym";s:3:"209";s:3:"pol";s:3:"210";s:3:"pot";s:3:"211";s:3:"yde";s:3:"212";s:3:" dl";s:3:"213";s:3:" sy";s:3:"214";s:3:"a s";s:3:"215";s:3:"aki";s:3:"216";s:3:"ali";s:3:"217";s:3:"dla";s:3:"218";s:3:"icz";s:3:"219";s:3:"ku ";s:3:"220";s:3:"ocz";s:3:"221";s:3:"st ";s:3:"222";s:3:"str";s:3:"223";s:3:"szy";s:3:"224";s:3:"trz";s:3:"225";s:3:"wia";s:3:"226";s:3:"y p";s:3:"227";s:3:"za ";s:3:"228";s:3:" wt";s:3:"229";s:3:"chc";s:3:"230";s:3:"esz";s:3:"231";s:3:"iec";s:3:"232";s:3:"im ";s:3:"233";s:3:"la ";s:3:"234";s:3:"o m";s:3:"235";s:3:"sa ";s:3:"236";s:4:"wać";s:3:"237";s:3:"y n";s:3:"238";s:3:"zac";s:3:"239";s:3:"zec";s:3:"240";s:3:" gd";s:3:"241";s:3:"a z";s:3:"242";s:3:"ard";s:3:"243";s:3:"co ";s:3:"244";s:3:"dar";s:3:"245";s:3:"e r";s:3:"246";s:3:"ien";s:3:"247";s:3:"m n";s:3:"248";s:3:"m w";s:3:"249";s:3:"mia";s:3:"250";s:4:"moż";s:3:"251";s:3:"raw";s:3:"252";s:3:"rdz";s:3:"253";s:3:"tan";s:3:"254";s:3:"ted";s:3:"255";s:3:"teg";s:3:"256";s:4:"wił";s:3:"257";s:3:"wte";s:3:"258";s:3:"y z";s:3:"259";s:3:"zna";s:3:"260";s:4:"zło";s:3:"261";s:3:"a r";s:3:"262";s:3:"awi";s:3:"263";s:3:"bar";s:3:"264";s:3:"cji";s:3:"265";s:4:"czą";s:3:"266";s:3:"dow";s:3:"267";s:4:"eż ";s:3:"268";s:3:"gdy";s:3:"269";s:3:"iek";s:3:"270";s:3:"je ";s:3:"271";s:3:"o d";s:3:"272";s:4:"tał";s:3:"273";s:3:"wal";s:3:"274";s:3:"wsz";s:3:"275";s:3:"zed";s:3:"276";s:4:"ówi";s:3:"277";s:4:"ęsa";s:3:"278";s:3:" ba";s:3:"279";s:3:" lu";s:3:"280";s:3:" wo";s:3:"281";s:3:"aln";s:3:"282";s:3:"arn";s:3:"283";s:3:"ba ";s:3:"284";s:3:"dzo";s:3:"285";s:3:"e c";s:3:"286";s:3:"hod";s:3:"287";s:3:"igi";s:3:"288";s:3:"lig";s:3:"289";s:3:"m p";s:3:"290";s:4:"myś";s:3:"291";s:3:"o c";s:3:"292";s:3:"oni";s:3:"293";s:3:"rel";s:3:"294";s:3:"sku";s:3:"295";s:3:"ste";s:3:"296";s:3:"y w";s:3:"297";s:3:"yst";s:3:"298";s:3:"z w";s:3:"299";}s:10:"portuguese";a:300:{s:3:"de ";s:1:"0";s:3:" de";s:1:"1";s:3:"os ";s:1:"2";s:3:"as ";s:1:"3";s:3:"que";s:1:"4";s:3:" co";s:1:"5";s:4:"ão ";s:1:"6";s:3:"o d";s:1:"7";s:3:" qu";s:1:"8";s:3:"ue ";s:1:"9";s:3:" a ";s:2:"10";s:3:"do ";s:2:"11";s:3:"ent";s:2:"12";s:3:" se";s:2:"13";s:3:"a d";s:2:"14";s:3:"s d";s:2:"15";s:3:"e a";s:2:"16";s:3:"es ";s:2:"17";s:3:" pr";s:2:"18";s:3:"ra ";s:2:"19";s:3:"da ";s:2:"20";s:3:" es";s:2:"21";s:3:" pa";s:2:"22";s:3:"to ";s:2:"23";s:3:" o ";s:2:"24";s:3:"em ";s:2:"25";s:3:"con";s:2:"26";s:3:"o p";s:2:"27";s:3:" do";s:2:"28";s:3:"est";s:2:"29";s:3:"nte";s:2:"30";s:5:"ção";s:2:"31";s:3:" da";s:2:"32";s:3:" re";s:2:"33";s:3:"ma ";s:2:"34";s:3:"par";s:2:"35";s:3:" te";s:2:"36";s:3:"ara";s:2:"37";s:3:"ida";s:2:"38";s:3:" e ";s:2:"39";s:3:"ade";s:2:"40";s:3:"is ";s:2:"41";s:3:" um";s:2:"42";s:3:" po";s:2:"43";s:3:"a a";s:2:"44";s:3:"a p";s:2:"45";s:3:"dad";s:2:"46";s:3:"no ";s:2:"47";s:3:"te ";s:2:"48";s:3:" no";s:2:"49";s:5:"açã";s:2:"50";s:3:"pro";s:2:"51";s:3:"al ";s:2:"52";s:3:"com";s:2:"53";s:3:"e d";s:2:"54";s:3:"s a";s:2:"55";s:3:" as";s:2:"56";s:3:"a c";s:2:"57";s:3:"er ";s:2:"58";s:3:"men";s:2:"59";s:3:"s e";s:2:"60";s:3:"ais";s:2:"61";s:3:"nto";s:2:"62";s:3:"res";s:2:"63";s:3:"a s";s:2:"64";s:3:"ado";s:2:"65";s:3:"ist";s:2:"66";s:3:"s p";s:2:"67";s:3:"tem";s:2:"68";s:3:"e c";s:2:"69";s:3:"e s";s:2:"70";s:3:"ia ";s:2:"71";s:3:"o s";s:2:"72";s:3:"o a";s:2:"73";s:3:"o c";s:2:"74";s:3:"e p";s:2:"75";s:3:"sta";s:2:"76";s:3:"ta ";s:2:"77";s:3:"tra";s:2:"78";s:3:"ura";s:2:"79";s:3:" di";s:2:"80";s:3:" pe";s:2:"81";s:3:"ar ";s:2:"82";s:3:"e e";s:2:"83";s:3:"ser";s:2:"84";s:3:"uma";s:2:"85";s:3:"mos";s:2:"86";s:3:"se ";s:2:"87";s:3:" ca";s:2:"88";s:3:"o e";s:2:"89";s:3:" na";s:2:"90";s:3:"a e";s:2:"91";s:3:"des";s:2:"92";s:3:"ont";s:2:"93";s:3:"por";s:2:"94";s:3:" in";s:2:"95";s:3:" ma";s:2:"96";s:3:"ect";s:2:"97";s:3:"o q";s:2:"98";s:3:"ria";s:2:"99";s:3:"s c";s:3:"100";s:3:"ste";s:3:"101";s:3:"ver";s:3:"102";s:3:"cia";s:3:"103";s:3:"dos";s:3:"104";s:3:"ica";s:3:"105";s:3:"str";s:3:"106";s:3:" ao";s:3:"107";s:3:" em";s:3:"108";s:3:"das";s:3:"109";s:3:"e t";s:3:"110";s:3:"ito";s:3:"111";s:3:"iza";s:3:"112";s:3:"pre";s:3:"113";s:3:"tos";s:3:"114";s:4:" nã";s:3:"115";s:3:"ada";s:3:"116";s:4:"não";s:3:"117";s:3:"ess";s:3:"118";s:3:"eve";s:3:"119";s:3:"or ";s:3:"120";s:3:"ran";s:3:"121";s:3:"s n";s:3:"122";s:3:"s t";s:3:"123";s:3:"tur";s:3:"124";s:3:" ac";s:3:"125";s:3:" fa";s:3:"126";s:3:"a r";s:3:"127";s:3:"ens";s:3:"128";s:3:"eri";s:3:"129";s:3:"na ";s:3:"130";s:3:"sso";s:3:"131";s:3:" si";s:3:"132";s:4:" é ";s:3:"133";s:3:"bra";s:3:"134";s:3:"esp";s:3:"135";s:3:"mo ";s:3:"136";s:3:"nos";s:3:"137";s:3:"ro ";s:3:"138";s:3:"um ";s:3:"139";s:3:"a n";s:3:"140";s:3:"ao ";s:3:"141";s:3:"ico";s:3:"142";s:3:"liz";s:3:"143";s:3:"min";s:3:"144";s:3:"o n";s:3:"145";s:3:"ons";s:3:"146";s:3:"pri";s:3:"147";s:3:"ten";s:3:"148";s:3:"tic";s:3:"149";s:4:"ões";s:3:"150";s:3:" tr";s:3:"151";s:3:"a m";s:3:"152";s:3:"aga";s:3:"153";s:3:"e n";s:3:"154";s:3:"ili";s:3:"155";s:3:"ime";s:3:"156";s:3:"m a";s:3:"157";s:3:"nci";s:3:"158";s:3:"nha";s:3:"159";s:3:"nta";s:3:"160";s:3:"spe";s:3:"161";s:3:"tiv";s:3:"162";s:3:"am ";s:3:"163";s:3:"ano";s:3:"164";s:3:"arc";s:3:"165";s:3:"ass";s:3:"166";s:3:"cer";s:3:"167";s:3:"e o";s:3:"168";s:3:"ece";s:3:"169";s:3:"emo";s:3:"170";s:3:"ga ";s:3:"171";s:3:"o m";s:3:"172";s:3:"rag";s:3:"173";s:3:"so ";s:3:"174";s:4:"são";s:3:"175";s:3:" au";s:3:"176";s:3:" os";s:3:"177";s:3:" sa";s:3:"178";s:3:"ali";s:3:"179";s:3:"ca ";s:3:"180";s:3:"ema";s:3:"181";s:3:"emp";s:3:"182";s:3:"ici";s:3:"183";s:3:"ido";s:3:"184";s:3:"inh";s:3:"185";s:3:"iss";s:3:"186";s:3:"l d";s:3:"187";s:3:"la ";s:3:"188";s:3:"lic";s:3:"189";s:3:"m c";s:3:"190";s:3:"mai";s:3:"191";s:3:"onc";s:3:"192";s:3:"pec";s:3:"193";s:3:"ram";s:3:"194";s:3:"s q";s:3:"195";s:3:" ci";s:3:"196";s:3:" en";s:3:"197";s:3:" fo";s:3:"198";s:3:"a o";s:3:"199";s:3:"ame";s:3:"200";s:3:"car";s:3:"201";s:3:"co ";s:3:"202";s:3:"der";s:3:"203";s:3:"eir";s:3:"204";s:3:"ho ";s:3:"205";s:3:"io ";s:3:"206";s:3:"om ";s:3:"207";s:3:"ora";s:3:"208";s:3:"r a";s:3:"209";s:3:"sen";s:3:"210";s:3:"ter";s:3:"211";s:3:" br";s:3:"212";s:3:" ex";s:3:"213";s:3:"a u";s:3:"214";s:3:"cul";s:3:"215";s:3:"dev";s:3:"216";s:3:"e u";s:3:"217";s:3:"ha ";s:3:"218";s:3:"mpr";s:3:"219";s:3:"nce";s:3:"220";s:3:"oca";s:3:"221";s:3:"ove";s:3:"222";s:3:"rio";s:3:"223";s:3:"s o";s:3:"224";s:3:"sa ";s:3:"225";s:3:"sem";s:3:"226";s:3:"tes";s:3:"227";s:3:"uni";s:3:"228";s:3:"ven";s:3:"229";s:4:"zaç";s:3:"230";s:5:"çõe";s:3:"231";s:3:" ad";s:3:"232";s:3:" al";s:3:"233";s:3:" an";s:3:"234";s:3:" mi";s:3:"235";s:3:" mo";s:3:"236";s:3:" ve";s:3:"237";s:4:" à ";s:3:"238";s:3:"a i";s:3:"239";s:3:"a q";s:3:"240";s:3:"ala";s:3:"241";s:3:"amo";s:3:"242";s:3:"bli";s:3:"243";s:3:"cen";s:3:"244";s:3:"col";s:3:"245";s:3:"cos";s:3:"246";s:3:"cto";s:3:"247";s:3:"e m";s:3:"248";s:3:"e v";s:3:"249";s:3:"ede";s:3:"250";s:4:"gás";s:3:"251";s:3:"ias";s:3:"252";s:3:"ita";s:3:"253";s:3:"iva";s:3:"254";s:3:"ndo";s:3:"255";s:3:"o t";s:3:"256";s:3:"ore";s:3:"257";s:3:"r d";s:3:"258";s:3:"ral";s:3:"259";s:3:"rea";s:3:"260";s:3:"s f";s:3:"261";s:3:"sid";s:3:"262";s:3:"tro";s:3:"263";s:3:"vel";s:3:"264";s:3:"vid";s:3:"265";s:4:"ás ";s:3:"266";s:3:" ap";s:3:"267";s:3:" ar";s:3:"268";s:3:" ce";s:3:"269";s:3:" ou";s:3:"270";s:4:" pú";s:3:"271";s:3:" so";s:3:"272";s:3:" vi";s:3:"273";s:3:"a f";s:3:"274";s:3:"act";s:3:"275";s:3:"arr";s:3:"276";s:3:"bil";s:3:"277";s:3:"cam";s:3:"278";s:3:"e f";s:3:"279";s:3:"e i";s:3:"280";s:3:"el ";s:3:"281";s:3:"for";s:3:"282";s:3:"lem";s:3:"283";s:3:"lid";s:3:"284";s:3:"lo ";s:3:"285";s:3:"m d";s:3:"286";s:3:"mar";s:3:"287";s:3:"nde";s:3:"288";s:3:"o o";s:3:"289";s:3:"omo";s:3:"290";s:3:"ort";s:3:"291";s:3:"per";s:3:"292";s:4:"púb";s:3:"293";s:3:"r u";s:3:"294";s:3:"rei";s:3:"295";s:3:"rem";s:3:"296";s:3:"ros";s:3:"297";s:3:"rre";s:3:"298";s:3:"ssi";s:3:"299";}s:8:"romanian";a:300:{s:3:" de";s:1:"0";s:4:" în";s:1:"1";s:3:"de ";s:1:"2";s:3:" a ";s:1:"3";s:3:"ul ";s:1:"4";s:3:" co";s:1:"5";s:4:"în ";s:1:"6";s:3:"re ";s:1:"7";s:3:"e d";s:1:"8";s:3:"ea ";s:1:"9";s:3:" di";s:2:"10";s:3:" pr";s:2:"11";s:3:"le ";s:2:"12";s:4:"şi ";s:2:"13";s:3:"are";s:2:"14";s:3:"at ";s:2:"15";s:3:"con";s:2:"16";s:3:"ui ";s:2:"17";s:4:" şi";s:2:"18";s:3:"i d";s:2:"19";s:3:"ii ";s:2:"20";s:3:" cu";s:2:"21";s:3:"e a";s:2:"22";s:3:"lui";s:2:"23";s:3:"ern";s:2:"24";s:3:"te ";s:2:"25";s:3:"cu ";s:2:"26";s:3:" la";s:2:"27";s:3:"a c";s:2:"28";s:4:"că ";s:2:"29";s:3:"din";s:2:"30";s:3:"e c";s:2:"31";s:3:"or ";s:2:"32";s:3:"ulu";s:2:"33";s:3:"ne ";s:2:"34";s:3:"ter";s:2:"35";s:3:"la ";s:2:"36";s:4:"să ";s:2:"37";s:3:"tat";s:2:"38";s:3:"tre";s:2:"39";s:3:" ac";s:2:"40";s:4:" să";s:2:"41";s:3:"est";s:2:"42";s:3:"st ";s:2:"43";s:4:"tă ";s:2:"44";s:3:" ca";s:2:"45";s:3:" ma";s:2:"46";s:3:" pe";s:2:"47";s:3:"cur";s:2:"48";s:3:"ist";s:2:"49";s:4:"mân";s:2:"50";s:3:"a d";s:2:"51";s:3:"i c";s:2:"52";s:3:"nat";s:2:"53";s:3:" ce";s:2:"54";s:3:"i a";s:2:"55";s:3:"ia ";s:2:"56";s:3:"in ";s:2:"57";s:3:"scu";s:2:"58";s:3:" mi";s:2:"59";s:3:"ato";s:2:"60";s:4:"aţi";s:2:"61";s:3:"ie ";s:2:"62";s:3:" re";s:2:"63";s:3:" se";s:2:"64";s:3:"a a";s:2:"65";s:3:"int";s:2:"66";s:3:"ntr";s:2:"67";s:3:"tru";s:2:"68";s:3:"uri";s:2:"69";s:4:"ă a";s:2:"70";s:3:" fo";s:2:"71";s:3:" pa";s:2:"72";s:3:"ate";s:2:"73";s:3:"ini";s:2:"74";s:3:"tul";s:2:"75";s:3:"ent";s:2:"76";s:3:"min";s:2:"77";s:3:"pre";s:2:"78";s:3:"pro";s:2:"79";s:3:"a p";s:2:"80";s:3:"e p";s:2:"81";s:3:"e s";s:2:"82";s:3:"ei ";s:2:"83";s:4:"nă ";s:2:"84";s:3:"par";s:2:"85";s:3:"rna";s:2:"86";s:3:"rul";s:2:"87";s:3:"tor";s:2:"88";s:3:" in";s:2:"89";s:3:" ro";s:2:"90";s:3:" tr";s:2:"91";s:3:" un";s:2:"92";s:3:"al ";s:2:"93";s:3:"ale";s:2:"94";s:3:"art";s:2:"95";s:3:"ce ";s:2:"96";s:3:"e e";s:2:"97";s:4:"e î";s:2:"98";s:3:"fos";s:2:"99";s:3:"ita";s:3:"100";s:3:"nte";s:3:"101";s:4:"omâ";s:3:"102";s:3:"ost";s:3:"103";s:3:"rom";s:3:"104";s:3:"ru ";s:3:"105";s:3:"str";s:3:"106";s:3:"ver";s:3:"107";s:3:" ex";s:3:"108";s:3:" na";s:3:"109";s:3:"a f";s:3:"110";s:3:"lor";s:3:"111";s:3:"nis";s:3:"112";s:3:"rea";s:3:"113";s:3:"rit";s:3:"114";s:3:" al";s:3:"115";s:3:" eu";s:3:"116";s:3:" no";s:3:"117";s:3:"ace";s:3:"118";s:3:"cer";s:3:"119";s:3:"ile";s:3:"120";s:3:"nal";s:3:"121";s:3:"pri";s:3:"122";s:3:"ri ";s:3:"123";s:3:"sta";s:3:"124";s:3:"ste";s:3:"125";s:4:"ţie";s:3:"126";s:3:" au";s:3:"127";s:3:" da";s:3:"128";s:3:" ju";s:3:"129";s:3:" po";s:3:"130";s:3:"ar ";s:3:"131";s:3:"au ";s:3:"132";s:3:"ele";s:3:"133";s:3:"ere";s:3:"134";s:3:"eri";s:3:"135";s:3:"ina";s:3:"136";s:3:"n a";s:3:"137";s:3:"n c";s:3:"138";s:3:"res";s:3:"139";s:3:"se ";s:3:"140";s:3:"t a";s:3:"141";s:3:"tea";s:3:"142";s:4:" că";s:3:"143";s:3:" do";s:3:"144";s:3:" fi";s:3:"145";s:3:"a s";s:3:"146";s:4:"ată";s:3:"147";s:3:"com";s:3:"148";s:4:"e ş";s:3:"149";s:3:"eur";s:3:"150";s:3:"guv";s:3:"151";s:3:"i s";s:3:"152";s:3:"ice";s:3:"153";s:3:"ili";s:3:"154";s:3:"na ";s:3:"155";s:3:"rec";s:3:"156";s:3:"rep";s:3:"157";s:3:"ril";s:3:"158";s:3:"rne";s:3:"159";s:3:"rti";s:3:"160";s:3:"uro";s:3:"161";s:3:"uve";s:3:"162";s:4:"ă p";s:3:"163";s:3:" ar";s:3:"164";s:3:" o ";s:3:"165";s:3:" su";s:3:"166";s:3:" vi";s:3:"167";s:3:"dec";s:3:"168";s:3:"dre";s:3:"169";s:3:"oar";s:3:"170";s:3:"ons";s:3:"171";s:3:"pe ";s:3:"172";s:3:"rii";s:3:"173";s:3:" ad";s:3:"174";s:3:" ge";s:3:"175";s:3:"a m";s:3:"176";s:3:"a r";s:3:"177";s:3:"ain";s:3:"178";s:3:"ali";s:3:"179";s:3:"car";s:3:"180";s:3:"cat";s:3:"181";s:3:"ecu";s:3:"182";s:3:"ene";s:3:"183";s:3:"ept";s:3:"184";s:3:"ext";s:3:"185";s:3:"ilo";s:3:"186";s:3:"iu ";s:3:"187";s:3:"n p";s:3:"188";s:3:"ori";s:3:"189";s:3:"sec";s:3:"190";s:3:"u p";s:3:"191";s:3:"une";s:3:"192";s:4:"ă c";s:3:"193";s:4:"şti";s:3:"194";s:4:"ţia";s:3:"195";s:3:" ch";s:3:"196";s:3:" gu";s:3:"197";s:3:"ai ";s:3:"198";s:3:"ani";s:3:"199";s:3:"cea";s:3:"200";s:3:"e f";s:3:"201";s:3:"isc";s:3:"202";s:3:"l a";s:3:"203";s:3:"lic";s:3:"204";s:3:"liu";s:3:"205";s:3:"mar";s:3:"206";s:3:"nic";s:3:"207";s:3:"nt ";s:3:"208";s:3:"nul";s:3:"209";s:3:"ris";s:3:"210";s:3:"t c";s:3:"211";s:3:"t p";s:3:"212";s:3:"tic";s:3:"213";s:3:"tid";s:3:"214";s:3:"u a";s:3:"215";s:3:"ucr";s:3:"216";s:3:" as";s:3:"217";s:3:" dr";s:3:"218";s:3:" fa";s:3:"219";s:3:" nu";s:3:"220";s:3:" pu";s:3:"221";s:3:" to";s:3:"222";s:3:"cra";s:3:"223";s:3:"dis";s:3:"224";s:4:"enţ";s:3:"225";s:3:"esc";s:3:"226";s:3:"gen";s:3:"227";s:3:"it ";s:3:"228";s:3:"ivi";s:3:"229";s:3:"l d";s:3:"230";s:3:"n d";s:3:"231";s:3:"nd ";s:3:"232";s:3:"nu ";s:3:"233";s:3:"ond";s:3:"234";s:3:"pen";s:3:"235";s:3:"ral";s:3:"236";s:3:"riv";s:3:"237";s:3:"rte";s:3:"238";s:3:"sti";s:3:"239";s:3:"t d";s:3:"240";s:3:"ta ";s:3:"241";s:3:"to ";s:3:"242";s:3:"uni";s:3:"243";s:3:"xte";s:3:"244";s:4:"ând";s:3:"245";s:4:"îns";s:3:"246";s:4:"ă s";s:3:"247";s:3:" bl";s:3:"248";s:3:" st";s:3:"249";s:3:" uc";s:3:"250";s:3:"a b";s:3:"251";s:3:"a i";s:3:"252";s:3:"a l";s:3:"253";s:3:"air";s:3:"254";s:3:"ast";s:3:"255";s:3:"bla";s:3:"256";s:3:"bri";s:3:"257";s:3:"che";s:3:"258";s:3:"duc";s:3:"259";s:3:"dul";s:3:"260";s:3:"e m";s:3:"261";s:3:"eas";s:3:"262";s:3:"edi";s:3:"263";s:3:"esp";s:3:"264";s:3:"i l";s:3:"265";s:3:"i p";s:3:"266";s:3:"ica";s:3:"267";s:4:"ică";s:3:"268";s:3:"ir ";s:3:"269";s:3:"iun";s:3:"270";s:3:"jud";s:3:"271";s:3:"lai";s:3:"272";s:3:"lul";s:3:"273";s:3:"mai";s:3:"274";s:3:"men";s:3:"275";s:3:"ni ";s:3:"276";s:3:"pus";s:3:"277";s:3:"put";s:3:"278";s:3:"ra ";s:3:"279";s:3:"rai";s:3:"280";s:3:"rop";s:3:"281";s:3:"sil";s:3:"282";s:3:"ti ";s:3:"283";s:3:"tra";s:3:"284";s:3:"u s";s:3:"285";s:3:"ua ";s:3:"286";s:3:"ude";s:3:"287";s:3:"urs";s:3:"288";s:4:"ân ";s:3:"289";s:4:"înt";s:3:"290";s:5:"ţă ";s:3:"291";s:3:" lu";s:3:"292";s:3:" mo";s:3:"293";s:3:" s ";s:3:"294";s:3:" sa";s:3:"295";s:3:" sc";s:3:"296";s:3:"a u";s:3:"297";s:3:"an ";s:3:"298";s:3:"atu";s:3:"299";}s:7:"russian";a:300:{s:5:" на";s:1:"0";s:5:" пр";s:1:"1";s:5:"то ";s:1:"2";s:5:" не";s:1:"3";s:5:"ли ";s:1:"4";s:5:" по";s:1:"5";s:5:"но ";s:1:"6";s:4:" в ";s:1:"7";s:5:"на ";s:1:"8";s:5:"ть ";s:1:"9";s:5:"не ";s:2:"10";s:4:" и ";s:2:"11";s:5:" ко";s:2:"12";s:5:"ом ";s:2:"13";s:6:"про";s:2:"14";s:5:" то";s:2:"15";s:5:"их ";s:2:"16";s:5:" ка";s:2:"17";s:6:"ать";s:2:"18";s:6:"ото";s:2:"19";s:5:" за";s:2:"20";s:5:"ие ";s:2:"21";s:6:"ова";s:2:"22";s:6:"тел";s:2:"23";s:6:"тор";s:2:"24";s:5:" де";s:2:"25";s:5:"ой ";s:2:"26";s:6:"сти";s:2:"27";s:5:" от";s:2:"28";s:5:"ах ";s:2:"29";s:5:"ми ";s:2:"30";s:6:"стр";s:2:"31";s:5:" бе";s:2:"32";s:5:" во";s:2:"33";s:5:" ра";s:2:"34";s:5:"ая ";s:2:"35";s:6:"ват";s:2:"36";s:5:"ей ";s:2:"37";s:5:"ет ";s:2:"38";s:5:"же ";s:2:"39";s:6:"иче";s:2:"40";s:5:"ия ";s:2:"41";s:5:"ов ";s:2:"42";s:6:"сто";s:2:"43";s:5:" об";s:2:"44";s:6:"вер";s:2:"45";s:5:"го ";s:2:"46";s:5:"и в";s:2:"47";s:5:"и п";s:2:"48";s:5:"и с";s:2:"49";s:5:"ии ";s:2:"50";s:6:"ист";s:2:"51";s:5:"о в";s:2:"52";s:6:"ост";s:2:"53";s:6:"тра";s:2:"54";s:5:" те";s:2:"55";s:6:"ели";s:2:"56";s:6:"ере";s:2:"57";s:6:"кот";s:2:"58";s:6:"льн";s:2:"59";s:6:"ник";s:2:"60";s:6:"нти";s:2:"61";s:5:"о с";s:2:"62";s:6:"рор";s:2:"63";s:6:"ств";s:2:"64";s:6:"чес";s:2:"65";s:5:" бо";s:2:"66";s:5:" ве";s:2:"67";s:5:" да";s:2:"68";s:5:" ин";s:2:"69";s:5:" но";s:2:"70";s:4:" с ";s:2:"71";s:5:" со";s:2:"72";s:5:" сп";s:2:"73";s:5:" ст";s:2:"74";s:5:" чт";s:2:"75";s:6:"али";s:2:"76";s:6:"ами";s:2:"77";s:6:"вид";s:2:"78";s:6:"дет";s:2:"79";s:5:"е н";s:2:"80";s:6:"ель";s:2:"81";s:6:"еск";s:2:"82";s:6:"ест";s:2:"83";s:6:"зал";s:2:"84";s:5:"и н";s:2:"85";s:6:"ива";s:2:"86";s:6:"кон";s:2:"87";s:6:"ого";s:2:"88";s:6:"одн";s:2:"89";s:6:"ожн";s:2:"90";s:6:"оль";s:2:"91";s:6:"ори";s:2:"92";s:6:"ров";s:2:"93";s:6:"ско";s:2:"94";s:5:"ся ";s:2:"95";s:6:"тер";s:2:"96";s:6:"что";s:2:"97";s:5:" мо";s:2:"98";s:5:" са";s:2:"99";s:5:" эт";s:3:"100";s:6:"ант";s:3:"101";s:6:"все";s:3:"102";s:6:"ерр";s:3:"103";s:6:"есл";s:3:"104";s:6:"иде";s:3:"105";s:6:"ина";s:3:"106";s:6:"ино";s:3:"107";s:6:"иро";s:3:"108";s:6:"ите";s:3:"109";s:5:"ка ";s:3:"110";s:5:"ко ";s:3:"111";s:6:"кол";s:3:"112";s:6:"ком";s:3:"113";s:5:"ла ";s:3:"114";s:6:"ния";s:3:"115";s:5:"о т";s:3:"116";s:6:"оло";s:3:"117";s:6:"ран";s:3:"118";s:6:"ред";s:3:"119";s:5:"сь ";s:3:"120";s:6:"тив";s:3:"121";s:6:"тич";s:3:"122";s:5:"ых ";s:3:"123";s:5:" ви";s:3:"124";s:5:" вс";s:3:"125";s:5:" го";s:3:"126";s:5:" ма";s:3:"127";s:5:" сл";s:3:"128";s:6:"ако";s:3:"129";s:6:"ани";s:3:"130";s:6:"аст";s:3:"131";s:6:"без";s:3:"132";s:6:"дел";s:3:"133";s:5:"е д";s:3:"134";s:5:"е п";s:3:"135";s:5:"ем ";s:3:"136";s:6:"жно";s:3:"137";s:5:"и д";s:3:"138";s:6:"ика";s:3:"139";s:6:"каз";s:3:"140";s:6:"как";s:3:"141";s:5:"ки ";s:3:"142";s:6:"нос";s:3:"143";s:5:"о н";s:3:"144";s:6:"опа";s:3:"145";s:6:"при";s:3:"146";s:6:"рро";s:3:"147";s:6:"ски";s:3:"148";s:5:"ти ";s:3:"149";s:6:"тов";s:3:"150";s:5:"ые ";s:3:"151";s:5:" вы";s:3:"152";s:5:" до";s:3:"153";s:5:" ме";s:3:"154";s:5:" ни";s:3:"155";s:5:" од";s:3:"156";s:5:" ро";s:3:"157";s:5:" св";s:3:"158";s:5:" чи";s:3:"159";s:5:"а н";s:3:"160";s:6:"ает";s:3:"161";s:6:"аза";s:3:"162";s:6:"ате";s:3:"163";s:6:"бес";s:3:"164";s:5:"в п";s:3:"165";s:5:"ва ";s:3:"166";s:5:"е в";s:3:"167";s:5:"е м";s:3:"168";s:5:"е с";s:3:"169";s:5:"ез ";s:3:"170";s:6:"ени";s:3:"171";s:5:"за ";s:3:"172";s:6:"зна";s:3:"173";s:6:"ини";s:3:"174";s:6:"кам";s:3:"175";s:6:"ках";s:3:"176";s:6:"кто";s:3:"177";s:6:"лов";s:3:"178";s:6:"мер";s:3:"179";s:6:"мож";s:3:"180";s:6:"нал";s:3:"181";s:6:"ниц";s:3:"182";s:5:"ны ";s:3:"183";s:6:"ным";s:3:"184";s:6:"ора";s:3:"185";s:6:"оро";s:3:"186";s:5:"от ";s:3:"187";s:6:"пор";s:3:"188";s:6:"рав";s:3:"189";s:6:"рес";s:3:"190";s:6:"рис";s:3:"191";s:6:"рос";s:3:"192";s:6:"ска";s:3:"193";s:5:"т н";s:3:"194";s:6:"том";s:3:"195";s:6:"чит";s:3:"196";s:6:"шко";s:3:"197";s:5:" бы";s:3:"198";s:4:" о ";s:3:"199";s:5:" тр";s:3:"200";s:5:" уж";s:3:"201";s:5:" чу";s:3:"202";s:5:" шк";s:3:"203";s:5:"а б";s:3:"204";s:5:"а в";s:3:"205";s:5:"а р";s:3:"206";s:6:"аби";s:3:"207";s:6:"ала";s:3:"208";s:6:"ало";s:3:"209";s:6:"аль";s:3:"210";s:6:"анн";s:3:"211";s:6:"ати";s:3:"212";s:6:"бин";s:3:"213";s:6:"вес";s:3:"214";s:6:"вно";s:3:"215";s:5:"во ";s:3:"216";s:6:"вши";s:3:"217";s:6:"дал";s:3:"218";s:6:"дат";s:3:"219";s:6:"дно";s:3:"220";s:5:"е з";s:3:"221";s:6:"его";s:3:"222";s:6:"еле";s:3:"223";s:6:"енн";s:3:"224";s:6:"ент";s:3:"225";s:6:"ете";s:3:"226";s:5:"и о";s:3:"227";s:6:"или";s:3:"228";s:6:"ись";s:3:"229";s:5:"ит ";s:3:"230";s:6:"ици";s:3:"231";s:6:"ков";s:3:"232";s:6:"лен";s:3:"233";s:6:"льк";s:3:"234";s:6:"мен";s:3:"235";s:5:"мы ";s:3:"236";s:6:"нет";s:3:"237";s:5:"ни ";s:3:"238";s:6:"нны";s:3:"239";s:6:"ног";s:3:"240";s:6:"ной";s:3:"241";s:6:"ном";s:3:"242";s:5:"о п";s:3:"243";s:6:"обн";s:3:"244";s:6:"ове";s:3:"245";s:6:"овн";s:3:"246";s:6:"оры";s:3:"247";s:6:"пер";s:3:"248";s:5:"по ";s:3:"249";s:6:"пра";s:3:"250";s:6:"пре";s:3:"251";s:6:"раз";s:3:"252";s:6:"роп";s:3:"253";s:5:"ры ";s:3:"254";s:5:"се ";s:3:"255";s:6:"сли";s:3:"256";s:6:"сов";s:3:"257";s:6:"тре";s:3:"258";s:6:"тся";s:3:"259";s:6:"уро";s:3:"260";s:6:"цел";s:3:"261";s:6:"чно";s:3:"262";s:5:"ь в";s:3:"263";s:6:"ько";s:3:"264";s:6:"ьно";s:3:"265";s:6:"это";s:3:"266";s:5:"ют ";s:3:"267";s:5:"я н";s:3:"268";s:5:" ан";s:3:"269";s:5:" ес";s:3:"270";s:5:" же";s:3:"271";s:5:" из";s:3:"272";s:5:" кт";s:3:"273";s:5:" ми";s:3:"274";s:5:" мы";s:3:"275";s:5:" пе";s:3:"276";s:5:" се";s:3:"277";s:5:" це";s:3:"278";s:5:"а м";s:3:"279";s:5:"а п";s:3:"280";s:5:"а т";s:3:"281";s:6:"авш";s:3:"282";s:6:"аже";s:3:"283";s:5:"ак ";s:3:"284";s:5:"ал ";s:3:"285";s:6:"але";s:3:"286";s:6:"ане";s:3:"287";s:6:"ачи";s:3:"288";s:6:"ают";s:3:"289";s:6:"бна";s:3:"290";s:6:"бол";s:3:"291";s:5:"бы ";s:3:"292";s:5:"в и";s:3:"293";s:5:"в с";s:3:"294";s:6:"ван";s:3:"295";s:6:"гра";s:3:"296";s:6:"даж";s:3:"297";s:6:"ден";s:3:"298";s:5:"е к";s:3:"299";}s:7:"serbian";a:300:{s:5:" на";s:1:"0";s:5:" је";s:1:"1";s:5:" по";s:1:"2";s:5:"је ";s:1:"3";s:4:" и ";s:1:"4";s:5:" не";s:1:"5";s:5:" пр";s:1:"6";s:5:"га ";s:1:"7";s:5:" св";s:1:"8";s:5:"ог ";s:1:"9";s:5:"а с";s:2:"10";s:5:"их ";s:2:"11";s:5:"на ";s:2:"12";s:6:"кој";s:2:"13";s:6:"ога";s:2:"14";s:4:" у ";s:2:"15";s:5:"а п";s:2:"16";s:5:"не ";s:2:"17";s:5:"ни ";s:2:"18";s:5:"ти ";s:2:"19";s:5:" да";s:2:"20";s:5:"ом ";s:2:"21";s:5:" ве";s:2:"22";s:5:" ср";s:2:"23";s:5:"и с";s:2:"24";s:6:"ско";s:2:"25";s:5:" об";s:2:"26";s:5:"а н";s:2:"27";s:5:"да ";s:2:"28";s:5:"е н";s:2:"29";s:5:"но ";s:2:"30";s:6:"ног";s:2:"31";s:5:"о ј";s:2:"32";s:5:"ој ";s:2:"33";s:5:" за";s:2:"34";s:5:"ва ";s:2:"35";s:5:"е с";s:2:"36";s:5:"и п";s:2:"37";s:5:"ма ";s:2:"38";s:6:"ник";s:2:"39";s:6:"обр";s:2:"40";s:6:"ова";s:2:"41";s:5:" ко";s:2:"42";s:5:"а и";s:2:"43";s:6:"диј";s:2:"44";s:5:"е п";s:2:"45";s:5:"ка ";s:2:"46";s:5:"ко ";s:2:"47";s:6:"ког";s:2:"48";s:6:"ост";s:2:"49";s:6:"све";s:2:"50";s:6:"ств";s:2:"51";s:6:"сти";s:2:"52";s:6:"тра";s:2:"53";s:6:"еди";s:2:"54";s:6:"има";s:2:"55";s:6:"пок";s:2:"56";s:6:"пра";s:2:"57";s:6:"раз";s:2:"58";s:5:"те ";s:2:"59";s:5:" бо";s:2:"60";s:5:" ви";s:2:"61";s:5:" са";s:2:"62";s:6:"аво";s:2:"63";s:6:"бра";s:2:"64";s:6:"гос";s:2:"65";s:5:"е и";s:2:"66";s:6:"ели";s:2:"67";s:6:"ени";s:2:"68";s:5:"за ";s:2:"69";s:6:"ики";s:2:"70";s:5:"ио ";s:2:"71";s:6:"пре";s:2:"72";s:6:"рав";s:2:"73";s:6:"рад";s:2:"74";s:5:"у с";s:2:"75";s:5:"ју ";s:2:"76";s:5:"ња ";s:2:"77";s:5:" би";s:2:"78";s:5:" до";s:2:"79";s:5:" ст";s:2:"80";s:6:"аст";s:2:"81";s:6:"бој";s:2:"82";s:6:"ебо";s:2:"83";s:5:"и н";s:2:"84";s:5:"им ";s:2:"85";s:5:"ку ";s:2:"86";s:6:"лан";s:2:"87";s:6:"неб";s:2:"88";s:6:"ово";s:2:"89";s:6:"ого";s:2:"90";s:6:"осл";s:2:"91";s:6:"ојш";s:2:"92";s:6:"пед";s:2:"93";s:6:"стр";s:2:"94";s:6:"час";s:2:"95";s:5:" го";s:2:"96";s:5:" кр";s:2:"97";s:5:" мо";s:2:"98";s:5:" чл";s:2:"99";s:5:"а м";s:3:"100";s:5:"а о";s:3:"101";s:6:"ако";s:3:"102";s:6:"ача";s:3:"103";s:6:"вел";s:3:"104";s:6:"вет";s:3:"105";s:6:"вог";s:3:"106";s:6:"еда";s:3:"107";s:6:"ист";s:3:"108";s:6:"ити";s:3:"109";s:6:"ије";s:3:"110";s:6:"око";s:3:"111";s:6:"сло";s:3:"112";s:6:"срб";s:3:"113";s:6:"чла";s:3:"114";s:5:" бе";s:3:"115";s:5:" ос";s:3:"116";s:5:" от";s:3:"117";s:5:" ре";s:3:"118";s:5:" се";s:3:"119";s:5:"а в";s:3:"120";s:5:"ан ";s:3:"121";s:6:"бог";s:3:"122";s:6:"бро";s:3:"123";s:6:"вен";s:3:"124";s:6:"гра";s:3:"125";s:5:"е о";s:3:"126";s:6:"ика";s:3:"127";s:6:"ија";s:3:"128";s:6:"ких";s:3:"129";s:6:"ком";s:3:"130";s:5:"ли ";s:3:"131";s:5:"ну ";s:3:"132";s:6:"ота";s:3:"133";s:6:"ојн";s:3:"134";s:6:"под";s:3:"135";s:6:"рбс";s:3:"136";s:6:"ред";s:3:"137";s:6:"рој";s:3:"138";s:5:"са ";s:3:"139";s:6:"сни";s:3:"140";s:6:"тач";s:3:"141";s:6:"тва";s:3:"142";s:5:"ја ";s:3:"143";s:5:"ји ";s:3:"144";s:5:" ка";s:3:"145";s:5:" ов";s:3:"146";s:5:" тр";s:3:"147";s:5:"а ј";s:3:"148";s:6:"ави";s:3:"149";s:5:"аз ";s:3:"150";s:6:"ано";s:3:"151";s:6:"био";s:3:"152";s:6:"вик";s:3:"153";s:5:"во ";s:3:"154";s:6:"гов";s:3:"155";s:6:"дни";s:3:"156";s:5:"е ч";s:3:"157";s:6:"его";s:3:"158";s:5:"и о";s:3:"159";s:6:"ива";s:3:"160";s:6:"иво";s:3:"161";s:5:"ик ";s:3:"162";s:6:"ине";s:3:"163";s:6:"ини";s:3:"164";s:6:"ипе";s:3:"165";s:6:"кип";s:3:"166";s:6:"лик";s:3:"167";s:5:"ло ";s:3:"168";s:6:"наш";s:3:"169";s:6:"нос";s:3:"170";s:5:"о т";s:3:"171";s:5:"од ";s:3:"172";s:6:"оди";s:3:"173";s:6:"она";s:3:"174";s:6:"оји";s:3:"175";s:6:"поч";s:3:"176";s:6:"про";s:3:"177";s:5:"ра ";s:3:"178";s:6:"рис";s:3:"179";s:6:"род";s:3:"180";s:6:"рст";s:3:"181";s:5:"се ";s:3:"182";s:6:"спо";s:3:"183";s:6:"ста";s:3:"184";s:6:"тић";s:3:"185";s:5:"у д";s:3:"186";s:5:"у н";s:3:"187";s:5:"у о";s:3:"188";s:6:"чин";s:3:"189";s:5:"ша ";s:3:"190";s:6:"јед";s:3:"191";s:6:"јни";s:3:"192";s:5:"ће ";s:3:"193";s:4:" м ";s:3:"194";s:5:" ме";s:3:"195";s:5:" ни";s:3:"196";s:5:" он";s:3:"197";s:5:" па";s:3:"198";s:5:" сл";s:3:"199";s:5:" те";s:3:"200";s:5:"а у";s:3:"201";s:6:"ава";s:3:"202";s:6:"аве";s:3:"203";s:6:"авн";s:3:"204";s:6:"ана";s:3:"205";s:5:"ао ";s:3:"206";s:6:"ати";s:3:"207";s:6:"аци";s:3:"208";s:6:"ају";s:3:"209";s:6:"ања";s:3:"210";s:6:"бск";s:3:"211";s:6:"вор";s:3:"212";s:6:"вос";s:3:"213";s:6:"вск";s:3:"214";s:6:"дин";s:3:"215";s:5:"е у";s:3:"216";s:6:"едн";s:3:"217";s:6:"ези";s:3:"218";s:6:"ека";s:3:"219";s:6:"ено";s:3:"220";s:6:"ето";s:3:"221";s:6:"ења";s:3:"222";s:6:"жив";s:3:"223";s:5:"и г";s:3:"224";s:5:"и и";s:3:"225";s:5:"и к";s:3:"226";s:5:"и т";s:3:"227";s:6:"ику";s:3:"228";s:6:"ичк";s:3:"229";s:5:"ки ";s:3:"230";s:6:"крс";s:3:"231";s:5:"ла ";s:3:"232";s:6:"лав";s:3:"233";s:6:"лит";s:3:"234";s:5:"ме ";s:3:"235";s:6:"мен";s:3:"236";s:6:"нац";s:3:"237";s:5:"о н";s:3:"238";s:5:"о п";s:3:"239";s:5:"о у";s:3:"240";s:6:"одн";s:3:"241";s:6:"оли";s:3:"242";s:6:"орн";s:3:"243";s:6:"осн";s:3:"244";s:6:"осп";s:3:"245";s:6:"оче";s:3:"246";s:6:"пск";s:3:"247";s:6:"реч";s:3:"248";s:6:"рпс";s:3:"249";s:6:"сво";s:3:"250";s:6:"ски";s:3:"251";s:6:"сла";s:3:"252";s:6:"срп";s:3:"253";s:5:"су ";s:3:"254";s:5:"та ";s:3:"255";s:6:"тав";s:3:"256";s:6:"тве";s:3:"257";s:5:"у б";s:3:"258";s:6:"јез";s:3:"259";s:5:"ћи ";s:3:"260";s:5:" ен";s:3:"261";s:5:" жи";s:3:"262";s:5:" им";s:3:"263";s:5:" му";s:3:"264";s:5:" од";s:3:"265";s:5:" су";s:3:"266";s:5:" та";s:3:"267";s:5:" хр";s:3:"268";s:5:" ча";s:3:"269";s:5:" шт";s:3:"270";s:5:" ње";s:3:"271";s:5:"а д";s:3:"272";s:5:"а з";s:3:"273";s:5:"а к";s:3:"274";s:5:"а т";s:3:"275";s:6:"аду";s:3:"276";s:6:"ало";s:3:"277";s:6:"ани";s:3:"278";s:6:"асо";s:3:"279";s:6:"ван";s:3:"280";s:6:"вач";s:3:"281";s:6:"вањ";s:3:"282";s:6:"вед";s:3:"283";s:5:"ви ";s:3:"284";s:6:"вно";s:3:"285";s:6:"вот";s:3:"286";s:6:"вој";s:3:"287";s:5:"ву ";s:3:"288";s:6:"доб";s:3:"289";s:6:"дру";s:3:"290";s:6:"дсе";s:3:"291";s:5:"ду ";s:3:"292";s:5:"е б";s:3:"293";s:5:"е д";s:3:"294";s:5:"е м";s:3:"295";s:5:"ем ";s:3:"296";s:6:"ема";s:3:"297";s:6:"ент";s:3:"298";s:6:"енц";s:3:"299";}s:6:"slovak";a:300:{s:3:" pr";s:1:"0";s:3:" po";s:1:"1";s:3:" ne";s:1:"2";s:3:" a ";s:1:"3";s:3:"ch ";s:1:"4";s:3:" na";s:1:"5";s:3:" je";s:1:"6";s:4:"ní ";s:1:"7";s:3:"je ";s:1:"8";s:3:" do";s:1:"9";s:3:"na ";s:2:"10";s:3:"ova";s:2:"11";s:3:" v ";s:2:"12";s:3:"to ";s:2:"13";s:3:"ho ";s:2:"14";s:3:"ou ";s:2:"15";s:3:" to";s:2:"16";s:3:"ick";s:2:"17";s:3:"ter";s:2:"18";s:4:"že ";s:2:"19";s:3:" st";s:2:"20";s:3:" za";s:2:"21";s:3:"ost";s:2:"22";s:4:"ých";s:2:"23";s:3:" se";s:2:"24";s:3:"pro";s:2:"25";s:3:" te";s:2:"26";s:3:"e s";s:2:"27";s:4:" že";s:2:"28";s:3:"a p";s:2:"29";s:3:" kt";s:2:"30";s:3:"pre";s:2:"31";s:3:" by";s:2:"32";s:3:" o ";s:2:"33";s:3:"se ";s:2:"34";s:3:"kon";s:2:"35";s:4:" př";s:2:"36";s:3:"a s";s:2:"37";s:4:"né ";s:2:"38";s:4:"ně ";s:2:"39";s:3:"sti";s:2:"40";s:3:"ako";s:2:"41";s:3:"ist";s:2:"42";s:3:"mu ";s:2:"43";s:3:"ame";s:2:"44";s:3:"ent";s:2:"45";s:3:"ky ";s:2:"46";s:3:"la ";s:2:"47";s:3:"pod";s:2:"48";s:3:" ve";s:2:"49";s:3:" ob";s:2:"50";s:3:"om ";s:2:"51";s:3:"vat";s:2:"52";s:3:" ko";s:2:"53";s:3:"sta";s:2:"54";s:3:"em ";s:2:"55";s:3:"le ";s:2:"56";s:3:"a v";s:2:"57";s:3:"by ";s:2:"58";s:3:"e p";s:2:"59";s:3:"ko ";s:2:"60";s:3:"eri";s:2:"61";s:3:"kte";s:2:"62";s:3:"sa ";s:2:"63";s:4:"ého";s:2:"64";s:3:"e v";s:2:"65";s:3:"mer";s:2:"66";s:3:"tel";s:2:"67";s:3:" ak";s:2:"68";s:3:" sv";s:2:"69";s:4:" zá";s:2:"70";s:3:"hla";s:2:"71";s:3:"las";s:2:"72";s:3:"lo ";s:2:"73";s:3:" ta";s:2:"74";s:3:"a n";s:2:"75";s:3:"ej ";s:2:"76";s:3:"li ";s:2:"77";s:3:"ne ";s:2:"78";s:3:" sa";s:2:"79";s:3:"ak ";s:2:"80";s:3:"ani";s:2:"81";s:3:"ate";s:2:"82";s:3:"ia ";s:2:"83";s:3:"sou";s:2:"84";s:3:" so";s:2:"85";s:4:"ení";s:2:"86";s:3:"ie ";s:2:"87";s:3:" re";s:2:"88";s:3:"ce ";s:2:"89";s:3:"e n";s:2:"90";s:3:"ori";s:2:"91";s:3:"tic";s:2:"92";s:3:" vy";s:2:"93";s:3:"a t";s:2:"94";s:4:"ké ";s:2:"95";s:3:"nos";s:2:"96";s:3:"o s";s:2:"97";s:3:"str";s:2:"98";s:3:"ti ";s:2:"99";s:3:"uje";s:3:"100";s:3:" sp";s:3:"101";s:3:"lov";s:3:"102";s:3:"o p";s:3:"103";s:3:"oli";s:3:"104";s:4:"ová";s:3:"105";s:4:" ná";s:3:"106";s:3:"ale";s:3:"107";s:3:"den";s:3:"108";s:3:"e o";s:3:"109";s:3:"ku ";s:3:"110";s:3:"val";s:3:"111";s:3:" am";s:3:"112";s:3:" ro";s:3:"113";s:3:" si";s:3:"114";s:3:"nie";s:3:"115";s:3:"pol";s:3:"116";s:3:"tra";s:3:"117";s:3:" al";s:3:"118";s:3:"ali";s:3:"119";s:3:"o v";s:3:"120";s:3:"tor";s:3:"121";s:3:" mo";s:3:"122";s:3:" ni";s:3:"123";s:3:"ci ";s:3:"124";s:3:"o n";s:3:"125";s:4:"ím ";s:3:"126";s:3:" le";s:3:"127";s:3:" pa";s:3:"128";s:3:" s ";s:3:"129";s:3:"al ";s:3:"130";s:3:"ati";s:3:"131";s:3:"ero";s:3:"132";s:3:"ove";s:3:"133";s:3:"rov";s:3:"134";s:4:"ván";s:3:"135";s:4:"ích";s:3:"136";s:3:" ja";s:3:"137";s:3:" z ";s:3:"138";s:4:"cké";s:3:"139";s:3:"e z";s:3:"140";s:3:" od";s:3:"141";s:3:"byl";s:3:"142";s:3:"de ";s:3:"143";s:3:"dob";s:3:"144";s:3:"nep";s:3:"145";s:3:"pra";s:3:"146";s:3:"ric";s:3:"147";s:3:"spo";s:3:"148";s:3:"tak";s:3:"149";s:4:" vš";s:3:"150";s:3:"a a";s:3:"151";s:3:"e t";s:3:"152";s:3:"lit";s:3:"153";s:3:"me ";s:3:"154";s:3:"nej";s:3:"155";s:3:"no ";s:3:"156";s:4:"nýc";s:3:"157";s:3:"o t";s:3:"158";s:3:"a j";s:3:"159";s:3:"e a";s:3:"160";s:3:"en ";s:3:"161";s:3:"est";s:3:"162";s:4:"jí ";s:3:"163";s:3:"mi ";s:3:"164";s:3:"slo";s:3:"165";s:4:"stá";s:3:"166";s:3:"u v";s:3:"167";s:3:"for";s:3:"168";s:3:"nou";s:3:"169";s:3:"pos";s:3:"170";s:4:"pře";s:3:"171";s:3:"si ";s:3:"172";s:3:"tom";s:3:"173";s:3:" vl";s:3:"174";s:3:"a z";s:3:"175";s:3:"ly ";s:3:"176";s:3:"orm";s:3:"177";s:3:"ris";s:3:"178";s:3:"za ";s:3:"179";s:4:"zák";s:3:"180";s:3:" k ";s:3:"181";s:3:"at ";s:3:"182";s:4:"cký";s:3:"183";s:3:"dno";s:3:"184";s:3:"dos";s:3:"185";s:3:"dy ";s:3:"186";s:3:"jak";s:3:"187";s:3:"kov";s:3:"188";s:3:"ny ";s:3:"189";s:3:"res";s:3:"190";s:3:"ror";s:3:"191";s:3:"sto";s:3:"192";s:3:"van";s:3:"193";s:3:" op";s:3:"194";s:3:"da ";s:3:"195";s:3:"do ";s:3:"196";s:3:"e j";s:3:"197";s:3:"hod";s:3:"198";s:3:"len";s:3:"199";s:4:"ný ";s:3:"200";s:3:"o z";s:3:"201";s:3:"poz";s:3:"202";s:3:"pri";s:3:"203";s:3:"ran";s:3:"204";s:3:"u s";s:3:"205";s:3:" ab";s:3:"206";s:3:"aj ";s:3:"207";s:3:"ast";s:3:"208";s:3:"it ";s:3:"209";s:3:"kto";s:3:"210";s:3:"o o";s:3:"211";s:3:"oby";s:3:"212";s:3:"odo";s:3:"213";s:3:"u p";s:3:"214";s:3:"va ";s:3:"215";s:5:"ání";s:3:"216";s:4:"í p";s:3:"217";s:4:"ým ";s:3:"218";s:3:" in";s:3:"219";s:3:" mi";s:3:"220";s:4:"ať ";s:3:"221";s:3:"dov";s:3:"222";s:3:"ka ";s:3:"223";s:3:"nsk";s:3:"224";s:4:"áln";s:3:"225";s:3:" an";s:3:"226";s:3:" bu";s:3:"227";s:3:" sl";s:3:"228";s:3:" tr";s:3:"229";s:3:"e m";s:3:"230";s:3:"ech";s:3:"231";s:3:"edn";s:3:"232";s:3:"i n";s:3:"233";s:4:"kýc";s:3:"234";s:4:"níc";s:3:"235";s:3:"ov ";s:3:"236";s:5:"pří";s:3:"237";s:4:"í a";s:3:"238";s:3:" aj";s:3:"239";s:3:" bo";s:3:"240";s:3:"a d";s:3:"241";s:3:"ide";s:3:"242";s:3:"o a";s:3:"243";s:3:"o d";s:3:"244";s:3:"och";s:3:"245";s:3:"pov";s:3:"246";s:3:"svo";s:3:"247";s:4:"é s";s:3:"248";s:3:" kd";s:3:"249";s:3:" vo";s:3:"250";s:4:" vý";s:3:"251";s:3:"bud";s:3:"252";s:3:"ich";s:3:"253";s:3:"il ";s:3:"254";s:3:"ili";s:3:"255";s:3:"ni ";s:3:"256";s:4:"ním";s:3:"257";s:3:"od ";s:3:"258";s:3:"osl";s:3:"259";s:3:"ouh";s:3:"260";s:3:"rav";s:3:"261";s:3:"roz";s:3:"262";s:3:"st ";s:3:"263";s:3:"stv";s:3:"264";s:3:"tu ";s:3:"265";s:3:"u a";s:3:"266";s:4:"vál";s:3:"267";s:3:"y s";s:3:"268";s:4:"í s";s:3:"269";s:4:"í v";s:3:"270";s:3:" hl";s:3:"271";s:3:" li";s:3:"272";s:3:" me";s:3:"273";s:3:"a m";s:3:"274";s:3:"e b";s:3:"275";s:3:"h s";s:3:"276";s:3:"i p";s:3:"277";s:3:"i s";s:3:"278";s:3:"iti";s:3:"279";s:4:"lád";s:3:"280";s:3:"nem";s:3:"281";s:3:"nov";s:3:"282";s:3:"opo";s:3:"283";s:3:"uhl";s:3:"284";s:3:"eno";s:3:"285";s:3:"ens";s:3:"286";s:3:"men";s:3:"287";s:3:"nes";s:3:"288";s:3:"obo";s:3:"289";s:3:"te ";s:3:"290";s:3:"ved";s:3:"291";s:4:"vlá";s:3:"292";s:3:"y n";s:3:"293";s:3:" ma";s:3:"294";s:3:" mu";s:3:"295";s:4:" vá";s:3:"296";s:3:"bez";s:3:"297";s:3:"byv";s:3:"298";s:3:"cho";s:3:"299";}s:7:"slovene";a:300:{s:3:"je ";s:1:"0";s:3:" pr";s:1:"1";s:3:" po";s:1:"2";s:3:" je";s:1:"3";s:3:" v ";s:1:"4";s:3:" za";s:1:"5";s:3:" na";s:1:"6";s:3:"pre";s:1:"7";s:3:"da ";s:1:"8";s:3:" da";s:1:"9";s:3:"ki ";s:2:"10";s:3:"ti ";s:2:"11";s:3:"ja ";s:2:"12";s:3:"ne ";s:2:"13";s:3:" in";s:2:"14";s:3:"in ";s:2:"15";s:3:"li ";s:2:"16";s:3:"no ";s:2:"17";s:3:"na ";s:2:"18";s:3:"ni ";s:2:"19";s:3:" bi";s:2:"20";s:3:"jo ";s:2:"21";s:3:" ne";s:2:"22";s:3:"nje";s:2:"23";s:3:"e p";s:2:"24";s:3:"i p";s:2:"25";s:3:"pri";s:2:"26";s:3:"o p";s:2:"27";s:3:"red";s:2:"28";s:3:" do";s:2:"29";s:3:"anj";s:2:"30";s:3:"em ";s:2:"31";s:3:"ih ";s:2:"32";s:3:" bo";s:2:"33";s:3:" ki";s:2:"34";s:3:" iz";s:2:"35";s:3:" se";s:2:"36";s:3:" so";s:2:"37";s:3:"al ";s:2:"38";s:3:" de";s:2:"39";s:3:"e v";s:2:"40";s:3:"i s";s:2:"41";s:3:"ko ";s:2:"42";s:3:"bil";s:2:"43";s:3:"ira";s:2:"44";s:3:"ove";s:2:"45";s:3:" br";s:2:"46";s:3:" ob";s:2:"47";s:3:"e b";s:2:"48";s:3:"i n";s:2:"49";s:3:"ova";s:2:"50";s:3:"se ";s:2:"51";s:3:"za ";s:2:"52";s:3:"la ";s:2:"53";s:3:" ja";s:2:"54";s:3:"ati";s:2:"55";s:3:"so ";s:2:"56";s:3:"ter";s:2:"57";s:3:" ta";s:2:"58";s:3:"a s";s:2:"59";s:3:"del";s:2:"60";s:3:"e d";s:2:"61";s:3:" dr";s:2:"62";s:3:" od";s:2:"63";s:3:"a n";s:2:"64";s:3:"ar ";s:2:"65";s:3:"jal";s:2:"66";s:3:"ji ";s:2:"67";s:3:"rit";s:2:"68";s:3:" ka";s:2:"69";s:3:" ko";s:2:"70";s:3:" pa";s:2:"71";s:3:"a b";s:2:"72";s:3:"ani";s:2:"73";s:3:"e s";s:2:"74";s:3:"er ";s:2:"75";s:3:"ili";s:2:"76";s:3:"lov";s:2:"77";s:3:"o v";s:2:"78";s:3:"tov";s:2:"79";s:3:" ir";s:2:"80";s:3:" ni";s:2:"81";s:3:" vo";s:2:"82";s:3:"a j";s:2:"83";s:3:"bi ";s:2:"84";s:3:"bri";s:2:"85";s:3:"iti";s:2:"86";s:3:"let";s:2:"87";s:3:"o n";s:2:"88";s:3:"tan";s:2:"89";s:4:"še ";s:2:"90";s:3:" le";s:2:"91";s:3:" te";s:2:"92";s:3:"eni";s:2:"93";s:3:"eri";s:2:"94";s:3:"ita";s:2:"95";s:3:"kat";s:2:"96";s:3:"por";s:2:"97";s:3:"pro";s:2:"98";s:3:"ali";s:2:"99";s:3:"ke ";s:3:"100";s:3:"oli";s:3:"101";s:3:"ov ";s:3:"102";s:3:"pra";s:3:"103";s:3:"ri ";s:3:"104";s:3:"uar";s:3:"105";s:3:"ve ";s:3:"106";s:3:" to";s:3:"107";s:3:"a i";s:3:"108";s:3:"a v";s:3:"109";s:3:"ako";s:3:"110";s:3:"arj";s:3:"111";s:3:"ate";s:3:"112";s:3:"di ";s:3:"113";s:3:"do ";s:3:"114";s:3:"ga ";s:3:"115";s:3:"le ";s:3:"116";s:3:"lo ";s:3:"117";s:3:"mer";s:3:"118";s:3:"o s";s:3:"119";s:3:"oda";s:3:"120";s:3:"oro";s:3:"121";s:3:"pod";s:3:"122";s:3:" ma";s:3:"123";s:3:" mo";s:3:"124";s:3:" si";s:3:"125";s:3:"a p";s:3:"126";s:3:"bod";s:3:"127";s:3:"e n";s:3:"128";s:3:"ega";s:3:"129";s:3:"ju ";s:3:"130";s:3:"ka ";s:3:"131";s:3:"lje";s:3:"132";s:3:"rav";s:3:"133";s:3:"ta ";s:3:"134";s:3:"a o";s:3:"135";s:3:"e t";s:3:"136";s:3:"e z";s:3:"137";s:3:"i d";s:3:"138";s:3:"i v";s:3:"139";s:3:"ila";s:3:"140";s:3:"lit";s:3:"141";s:3:"nih";s:3:"142";s:3:"odo";s:3:"143";s:3:"sti";s:3:"144";s:3:"to ";s:3:"145";s:3:"var";s:3:"146";s:3:"ved";s:3:"147";s:3:"vol";s:3:"148";s:3:" la";s:3:"149";s:3:" no";s:3:"150";s:3:" vs";s:3:"151";s:3:"a d";s:3:"152";s:3:"agu";s:3:"153";s:3:"aja";s:3:"154";s:3:"dej";s:3:"155";s:3:"dnj";s:3:"156";s:3:"eda";s:3:"157";s:3:"gov";s:3:"158";s:3:"gua";s:3:"159";s:3:"jag";s:3:"160";s:3:"jem";s:3:"161";s:3:"kon";s:3:"162";s:3:"ku ";s:3:"163";s:3:"nij";s:3:"164";s:3:"omo";s:3:"165";s:4:"oči";s:3:"166";s:3:"pov";s:3:"167";s:3:"rak";s:3:"168";s:3:"rja";s:3:"169";s:3:"sta";s:3:"170";s:3:"tev";s:3:"171";s:3:"a t";s:3:"172";s:3:"aj ";s:3:"173";s:3:"ed ";s:3:"174";s:3:"eja";s:3:"175";s:3:"ent";s:3:"176";s:3:"ev ";s:3:"177";s:3:"i i";s:3:"178";s:3:"i o";s:3:"179";s:3:"ijo";s:3:"180";s:3:"ist";s:3:"181";s:3:"ost";s:3:"182";s:3:"ske";s:3:"183";s:3:"str";s:3:"184";s:3:" ra";s:3:"185";s:3:" s ";s:3:"186";s:3:" tr";s:3:"187";s:4:" še";s:3:"188";s:3:"arn";s:3:"189";s:3:"bo ";s:3:"190";s:4:"drž";s:3:"191";s:3:"i j";s:3:"192";s:3:"ilo";s:3:"193";s:3:"izv";s:3:"194";s:3:"jen";s:3:"195";s:3:"lja";s:3:"196";s:3:"nsk";s:3:"197";s:3:"o d";s:3:"198";s:3:"o i";s:3:"199";s:3:"om ";s:3:"200";s:3:"ora";s:3:"201";s:3:"ovo";s:3:"202";s:3:"raz";s:3:"203";s:4:"rža";s:3:"204";s:3:"tak";s:3:"205";s:3:"va ";s:3:"206";s:3:"ven";s:3:"207";s:4:"žav";s:3:"208";s:3:" me";s:3:"209";s:4:" če";s:3:"210";s:3:"ame";s:3:"211";s:3:"avi";s:3:"212";s:3:"e i";s:3:"213";s:3:"e o";s:3:"214";s:3:"eka";s:3:"215";s:3:"gre";s:3:"216";s:3:"i t";s:3:"217";s:3:"ija";s:3:"218";s:3:"il ";s:3:"219";s:3:"ite";s:3:"220";s:3:"kra";s:3:"221";s:3:"lju";s:3:"222";s:3:"mor";s:3:"223";s:3:"nik";s:3:"224";s:3:"o t";s:3:"225";s:3:"obi";s:3:"226";s:3:"odn";s:3:"227";s:3:"ran";s:3:"228";s:3:"re ";s:3:"229";s:3:"sto";s:3:"230";s:3:"stv";s:3:"231";s:3:"udi";s:3:"232";s:3:"v i";s:3:"233";s:3:"van";s:3:"234";s:3:" am";s:3:"235";s:3:" sp";s:3:"236";s:3:" st";s:3:"237";s:3:" tu";s:3:"238";s:3:" ve";s:3:"239";s:4:" že";s:3:"240";s:3:"ajo";s:3:"241";s:3:"ale";s:3:"242";s:3:"apo";s:3:"243";s:3:"dal";s:3:"244";s:3:"dru";s:3:"245";s:3:"e j";s:3:"246";s:3:"edn";s:3:"247";s:3:"ejo";s:3:"248";s:3:"elo";s:3:"249";s:3:"est";s:3:"250";s:3:"etj";s:3:"251";s:3:"eva";s:3:"252";s:3:"iji";s:3:"253";s:3:"ik ";s:3:"254";s:3:"im ";s:3:"255";s:3:"itv";s:3:"256";s:3:"mob";s:3:"257";s:3:"nap";s:3:"258";s:3:"nek";s:3:"259";s:3:"pol";s:3:"260";s:3:"pos";s:3:"261";s:3:"rat";s:3:"262";s:3:"ski";s:3:"263";s:4:"tič";s:3:"264";s:3:"tom";s:3:"265";s:3:"ton";s:3:"266";s:3:"tra";s:3:"267";s:3:"tud";s:3:"268";s:3:"tve";s:3:"269";s:3:"v b";s:3:"270";s:3:"vil";s:3:"271";s:3:"vse";s:3:"272";s:4:"čit";s:3:"273";s:3:" av";s:3:"274";s:3:" gr";s:3:"275";s:3:"a z";s:3:"276";s:3:"ans";s:3:"277";s:3:"ast";s:3:"278";s:3:"avt";s:3:"279";s:3:"dan";s:3:"280";s:3:"e m";s:3:"281";s:3:"eds";s:3:"282";s:3:"for";s:3:"283";s:3:"i z";s:3:"284";s:3:"kot";s:3:"285";s:3:"mi ";s:3:"286";s:3:"nim";s:3:"287";s:3:"o b";s:3:"288";s:3:"o o";s:3:"289";s:3:"od ";s:3:"290";s:3:"odl";s:3:"291";s:3:"oiz";s:3:"292";s:3:"ot ";s:3:"293";s:3:"par";s:3:"294";s:3:"pot";s:3:"295";s:3:"rje";s:3:"296";s:3:"roi";s:3:"297";s:3:"tem";s:3:"298";s:3:"val";s:3:"299";}s:6:"somali";a:300:{s:3:"ka ";s:1:"0";s:3:"ay ";s:1:"1";s:3:"da ";s:1:"2";s:3:" ay";s:1:"3";s:3:"aal";s:1:"4";s:3:"oo ";s:1:"5";s:3:"aan";s:1:"6";s:3:" ka";s:1:"7";s:3:"an ";s:1:"8";s:3:"in ";s:1:"9";s:3:" in";s:2:"10";s:3:"ada";s:2:"11";s:3:"maa";s:2:"12";s:3:"aba";s:2:"13";s:3:" so";s:2:"14";s:3:"ali";s:2:"15";s:3:"bad";s:2:"16";s:3:"add";s:2:"17";s:3:"soo";s:2:"18";s:3:" na";s:2:"19";s:3:"aha";s:2:"20";s:3:"ku ";s:2:"21";s:3:"ta ";s:2:"22";s:3:" wa";s:2:"23";s:3:"yo ";s:2:"24";s:3:"a s";s:2:"25";s:3:"oma";s:2:"26";s:3:"yaa";s:2:"27";s:3:" ba";s:2:"28";s:3:" ku";s:2:"29";s:3:" la";s:2:"30";s:3:" oo";s:2:"31";s:3:"iya";s:2:"32";s:3:"sha";s:2:"33";s:3:"a a";s:2:"34";s:3:"dda";s:2:"35";s:3:"nab";s:2:"36";s:3:"nta";s:2:"37";s:3:" da";s:2:"38";s:3:" ma";s:2:"39";s:3:"nka";s:2:"40";s:3:"uu ";s:2:"41";s:3:"y i";s:2:"42";s:3:"aya";s:2:"43";s:3:"ha ";s:2:"44";s:3:"raa";s:2:"45";s:3:" dh";s:2:"46";s:3:" qa";s:2:"47";s:3:"a k";s:2:"48";s:3:"ala";s:2:"49";s:3:"baa";s:2:"50";s:3:"doo";s:2:"51";s:3:"had";s:2:"52";s:3:"liy";s:2:"53";s:3:"oom";s:2:"54";s:3:" ha";s:2:"55";s:3:" sh";s:2:"56";s:3:"a d";s:2:"57";s:3:"a i";s:2:"58";s:3:"a n";s:2:"59";s:3:"aar";s:2:"60";s:3:"ee ";s:2:"61";s:3:"ey ";s:2:"62";s:3:"y k";s:2:"63";s:3:"ya ";s:2:"64";s:3:" ee";s:2:"65";s:3:" iy";s:2:"66";s:3:"aa ";s:2:"67";s:3:"aaq";s:2:"68";s:3:"gaa";s:2:"69";s:3:"lam";s:2:"70";s:3:" bu";s:2:"71";s:3:"a b";s:2:"72";s:3:"a m";s:2:"73";s:3:"ad ";s:2:"74";s:3:"aga";s:2:"75";s:3:"ama";s:2:"76";s:3:"iyo";s:2:"77";s:3:"la ";s:2:"78";s:3:"a c";s:2:"79";s:3:"a l";s:2:"80";s:3:"een";s:2:"81";s:3:"int";s:2:"82";s:3:"she";s:2:"83";s:3:"wax";s:2:"84";s:3:"yee";s:2:"85";s:3:" si";s:2:"86";s:3:" uu";s:2:"87";s:3:"a h";s:2:"88";s:3:"aas";s:2:"89";s:3:"alk";s:2:"90";s:3:"dha";s:2:"91";s:3:"gu ";s:2:"92";s:3:"hee";s:2:"93";s:3:"ii ";s:2:"94";s:3:"ira";s:2:"95";s:3:"mad";s:2:"96";s:3:"o a";s:2:"97";s:3:"o k";s:2:"98";s:3:"qay";s:2:"99";s:3:" ah";s:3:"100";s:3:" ca";s:3:"101";s:3:" wu";s:3:"102";s:3:"ank";s:3:"103";s:3:"ash";s:3:"104";s:3:"axa";s:3:"105";s:3:"eed";s:3:"106";s:3:"en ";s:3:"107";s:3:"ga ";s:3:"108";s:3:"haa";s:3:"109";s:3:"n a";s:3:"110";s:3:"n s";s:3:"111";s:3:"naa";s:3:"112";s:3:"nay";s:3:"113";s:3:"o d";s:3:"114";s:3:"taa";s:3:"115";s:3:"u b";s:3:"116";s:3:"uxu";s:3:"117";s:3:"wux";s:3:"118";s:3:"xuu";s:3:"119";s:3:" ci";s:3:"120";s:3:" do";s:3:"121";s:3:" ho";s:3:"122";s:3:" ta";s:3:"123";s:3:"a g";s:3:"124";s:3:"a u";s:3:"125";s:3:"ana";s:3:"126";s:3:"ayo";s:3:"127";s:3:"dhi";s:3:"128";s:3:"iin";s:3:"129";s:3:"lag";s:3:"130";s:3:"lin";s:3:"131";s:3:"lka";s:3:"132";s:3:"o i";s:3:"133";s:3:"san";s:3:"134";s:3:"u s";s:3:"135";s:3:"una";s:3:"136";s:3:"uun";s:3:"137";s:3:" ga";s:3:"138";s:3:" xa";s:3:"139";s:3:" xu";s:3:"140";s:3:"aab";s:3:"141";s:3:"abt";s:3:"142";s:3:"aq ";s:3:"143";s:3:"aqa";s:3:"144";s:3:"ara";s:3:"145";s:3:"arl";s:3:"146";s:3:"caa";s:3:"147";s:3:"cir";s:3:"148";s:3:"eeg";s:3:"149";s:3:"eel";s:3:"150";s:3:"isa";s:3:"151";s:3:"kal";s:3:"152";s:3:"lah";s:3:"153";s:3:"ney";s:3:"154";s:3:"qaa";s:3:"155";s:3:"rla";s:3:"156";s:3:"sad";s:3:"157";s:3:"sii";s:3:"158";s:3:"u d";s:3:"159";s:3:"wad";s:3:"160";s:3:" ad";s:3:"161";s:3:" ar";s:3:"162";s:3:" di";s:3:"163";s:3:" jo";s:3:"164";s:3:" ra";s:3:"165";s:3:" sa";s:3:"166";s:3:" u ";s:3:"167";s:3:" yi";s:3:"168";s:3:"a j";s:3:"169";s:3:"a q";s:3:"170";s:3:"aad";s:3:"171";s:3:"aat";s:3:"172";s:3:"aay";s:3:"173";s:3:"ah ";s:3:"174";s:3:"ale";s:3:"175";s:3:"amk";s:3:"176";s:3:"ari";s:3:"177";s:3:"as ";s:3:"178";s:3:"aye";s:3:"179";s:3:"bus";s:3:"180";s:3:"dal";s:3:"181";s:3:"ddu";s:3:"182";s:3:"dii";s:3:"183";s:3:"du ";s:3:"184";s:3:"duu";s:3:"185";s:3:"ed ";s:3:"186";s:3:"ege";s:3:"187";s:3:"gey";s:3:"188";s:3:"hay";s:3:"189";s:3:"hii";s:3:"190";s:3:"ida";s:3:"191";s:3:"ine";s:3:"192";s:3:"joo";s:3:"193";s:3:"laa";s:3:"194";s:3:"lay";s:3:"195";s:3:"mar";s:3:"196";s:3:"mee";s:3:"197";s:3:"n b";s:3:"198";s:3:"n d";s:3:"199";s:3:"n m";s:3:"200";s:3:"no ";s:3:"201";s:3:"o b";s:3:"202";s:3:"o l";s:3:"203";s:3:"oog";s:3:"204";s:3:"oon";s:3:"205";s:3:"rga";s:3:"206";s:3:"sh ";s:3:"207";s:3:"sid";s:3:"208";s:3:"u q";s:3:"209";s:3:"unk";s:3:"210";s:3:"ush";s:3:"211";s:3:"xa ";s:3:"212";s:3:"y d";s:3:"213";s:3:" bi";s:3:"214";s:3:" gu";s:3:"215";s:3:" is";s:3:"216";s:3:" ke";s:3:"217";s:3:" lo";s:3:"218";s:3:" me";s:3:"219";s:3:" mu";s:3:"220";s:3:" qo";s:3:"221";s:3:" ug";s:3:"222";s:3:"a e";s:3:"223";s:3:"a o";s:3:"224";s:3:"a w";s:3:"225";s:3:"adi";s:3:"226";s:3:"ado";s:3:"227";s:3:"agu";s:3:"228";s:3:"al ";s:3:"229";s:3:"ant";s:3:"230";s:3:"ark";s:3:"231";s:3:"asa";s:3:"232";s:3:"awi";s:3:"233";s:3:"bta";s:3:"234";s:3:"bul";s:3:"235";s:3:"d a";s:3:"236";s:3:"dag";s:3:"237";s:3:"dan";s:3:"238";s:3:"do ";s:3:"239";s:3:"e s";s:3:"240";s:3:"gal";s:3:"241";s:3:"gay";s:3:"242";s:3:"guu";s:3:"243";s:3:"h e";s:3:"244";s:3:"hal";s:3:"245";s:3:"iga";s:3:"246";s:3:"ihi";s:3:"247";s:3:"iri";s:3:"248";s:3:"iye";s:3:"249";s:3:"ken";s:3:"250";s:3:"lad";s:3:"251";s:3:"lid";s:3:"252";s:3:"lsh";s:3:"253";s:3:"mag";s:3:"254";s:3:"mun";s:3:"255";s:3:"n h";s:3:"256";s:3:"n i";s:3:"257";s:3:"na ";s:3:"258";s:3:"o n";s:3:"259";s:3:"o w";s:3:"260";s:3:"ood";s:3:"261";s:3:"oor";s:3:"262";s:3:"ora";s:3:"263";s:3:"qab";s:3:"264";s:3:"qor";s:3:"265";s:3:"rab";s:3:"266";s:3:"rit";s:3:"267";s:3:"rta";s:3:"268";s:3:"s o";s:3:"269";s:3:"sab";s:3:"270";s:3:"ska";s:3:"271";s:3:"to ";s:3:"272";s:3:"u a";s:3:"273";s:3:"u h";s:3:"274";s:3:"u u";s:3:"275";s:3:"ud ";s:3:"276";s:3:"ugu";s:3:"277";s:3:"uls";s:3:"278";s:3:"uud";s:3:"279";s:3:"waa";s:3:"280";s:3:"xus";s:3:"281";s:3:"y b";s:3:"282";s:3:"y q";s:3:"283";s:3:"y s";s:3:"284";s:3:"yad";s:3:"285";s:3:"yay";s:3:"286";s:3:"yih";s:3:"287";s:3:" aa";s:3:"288";s:3:" bo";s:3:"289";s:3:" br";s:3:"290";s:3:" go";s:3:"291";s:3:" ji";s:3:"292";s:3:" mi";s:3:"293";s:3:" of";s:3:"294";s:3:" ti";s:3:"295";s:3:" um";s:3:"296";s:3:" wi";s:3:"297";s:3:" xo";s:3:"298";s:3:"a x";s:3:"299";}s:7:"spanish";a:300:{s:3:" de";s:1:"0";s:3:"de ";s:1:"1";s:3:" la";s:1:"2";s:3:"os ";s:1:"3";s:3:"la ";s:1:"4";s:3:"el ";s:1:"5";s:3:"es ";s:1:"6";s:3:" qu";s:1:"7";s:3:" co";s:1:"8";s:3:"e l";s:1:"9";s:3:"as ";s:2:"10";s:3:"que";s:2:"11";s:3:" el";s:2:"12";s:3:"ue ";s:2:"13";s:3:"en ";s:2:"14";s:3:"ent";s:2:"15";s:3:" en";s:2:"16";s:3:" se";s:2:"17";s:3:"nte";s:2:"18";s:3:"res";s:2:"19";s:3:"con";s:2:"20";s:3:"est";s:2:"21";s:3:" es";s:2:"22";s:3:"s d";s:2:"23";s:3:" lo";s:2:"24";s:3:" pr";s:2:"25";s:3:"los";s:2:"26";s:3:" y ";s:2:"27";s:3:"do ";s:2:"28";s:4:"ón ";s:2:"29";s:4:"ión";s:2:"30";s:3:" un";s:2:"31";s:4:"ció";s:2:"32";s:3:"del";s:2:"33";s:3:"o d";s:2:"34";s:3:" po";s:2:"35";s:3:"a d";s:2:"36";s:3:"aci";s:2:"37";s:3:"sta";s:2:"38";s:3:"te ";s:2:"39";s:3:"ado";s:2:"40";s:3:"pre";s:2:"41";s:3:"to ";s:2:"42";s:3:"par";s:2:"43";s:3:"a e";s:2:"44";s:3:"a l";s:2:"45";s:3:"ra ";s:2:"46";s:3:"al ";s:2:"47";s:3:"e e";s:2:"48";s:3:"se ";s:2:"49";s:3:"pro";s:2:"50";s:3:"ar ";s:2:"51";s:3:"ia ";s:2:"52";s:3:"o e";s:2:"53";s:3:" re";s:2:"54";s:3:"ida";s:2:"55";s:3:"dad";s:2:"56";s:3:"tra";s:2:"57";s:3:"por";s:2:"58";s:3:"s p";s:2:"59";s:3:" a ";s:2:"60";s:3:"a p";s:2:"61";s:3:"ara";s:2:"62";s:3:"cia";s:2:"63";s:3:" pa";s:2:"64";s:3:"com";s:2:"65";s:3:"no ";s:2:"66";s:3:" di";s:2:"67";s:3:" in";s:2:"68";s:3:"ien";s:2:"69";s:3:"n l";s:2:"70";s:3:"ad ";s:2:"71";s:3:"ant";s:2:"72";s:3:"e s";s:2:"73";s:3:"men";s:2:"74";s:3:"a c";s:2:"75";s:3:"on ";s:2:"76";s:3:"un ";s:2:"77";s:3:"las";s:2:"78";s:3:"nci";s:2:"79";s:3:" tr";s:2:"80";s:3:"cio";s:2:"81";s:3:"ier";s:2:"82";s:3:"nto";s:2:"83";s:3:"tiv";s:2:"84";s:3:"n d";s:2:"85";s:3:"n e";s:2:"86";s:3:"or ";s:2:"87";s:3:"s c";s:2:"88";s:3:"enc";s:2:"89";s:3:"ern";s:2:"90";s:3:"io ";s:2:"91";s:3:"a s";s:2:"92";s:3:"ici";s:2:"93";s:3:"s e";s:2:"94";s:3:" ma";s:2:"95";s:3:"dos";s:2:"96";s:3:"e a";s:2:"97";s:3:"e c";s:2:"98";s:3:"emp";s:2:"99";s:3:"ica";s:3:"100";s:3:"ivo";s:3:"101";s:3:"l p";s:3:"102";s:3:"n c";s:3:"103";s:3:"r e";s:3:"104";s:3:"ta ";s:3:"105";s:3:"ter";s:3:"106";s:3:"e d";s:3:"107";s:3:"esa";s:3:"108";s:3:"ez ";s:3:"109";s:3:"mpr";s:3:"110";s:3:"o a";s:3:"111";s:3:"s a";s:3:"112";s:3:" ca";s:3:"113";s:3:" su";s:3:"114";s:3:"ion";s:3:"115";s:3:" cu";s:3:"116";s:3:" ju";s:3:"117";s:3:"an ";s:3:"118";s:3:"da ";s:3:"119";s:3:"ene";s:3:"120";s:3:"ero";s:3:"121";s:3:"na ";s:3:"122";s:3:"rec";s:3:"123";s:3:"ro ";s:3:"124";s:3:"tar";s:3:"125";s:3:" al";s:3:"126";s:3:" an";s:3:"127";s:3:"bie";s:3:"128";s:3:"e p";s:3:"129";s:3:"er ";s:3:"130";s:3:"l c";s:3:"131";s:3:"n p";s:3:"132";s:3:"omp";s:3:"133";s:3:"ten";s:3:"134";s:3:" em";s:3:"135";s:3:"ist";s:3:"136";s:3:"nes";s:3:"137";s:3:"nta";s:3:"138";s:3:"o c";s:3:"139";s:3:"so ";s:3:"140";s:3:"tes";s:3:"141";s:3:"era";s:3:"142";s:3:"l d";s:3:"143";s:3:"l m";s:3:"144";s:3:"les";s:3:"145";s:3:"ntr";s:3:"146";s:3:"o s";s:3:"147";s:3:"ore";s:3:"148";s:4:"rá ";s:3:"149";s:3:"s q";s:3:"150";s:3:"s y";s:3:"151";s:3:"sto";s:3:"152";s:3:"a a";s:3:"153";s:3:"a r";s:3:"154";s:3:"ari";s:3:"155";s:3:"des";s:3:"156";s:3:"e q";s:3:"157";s:3:"ivi";s:3:"158";s:3:"lic";s:3:"159";s:3:"lo ";s:3:"160";s:3:"n a";s:3:"161";s:3:"one";s:3:"162";s:3:"ora";s:3:"163";s:3:"per";s:3:"164";s:3:"pue";s:3:"165";s:3:"r l";s:3:"166";s:3:"re ";s:3:"167";s:3:"ren";s:3:"168";s:3:"una";s:3:"169";s:4:"ía ";s:3:"170";s:3:"ada";s:3:"171";s:3:"cas";s:3:"172";s:3:"ere";s:3:"173";s:3:"ide";s:3:"174";s:3:"min";s:3:"175";s:3:"n s";s:3:"176";s:3:"ndo";s:3:"177";s:3:"ran";s:3:"178";s:3:"rno";s:3:"179";s:3:" ac";s:3:"180";s:3:" ex";s:3:"181";s:3:" go";s:3:"182";s:3:" no";s:3:"183";s:3:"a t";s:3:"184";s:3:"aba";s:3:"185";s:3:"ble";s:3:"186";s:3:"ece";s:3:"187";s:3:"ect";s:3:"188";s:3:"l a";s:3:"189";s:3:"l g";s:3:"190";s:3:"lid";s:3:"191";s:3:"nsi";s:3:"192";s:3:"ons";s:3:"193";s:3:"rac";s:3:"194";s:3:"rio";s:3:"195";s:3:"str";s:3:"196";s:3:"uer";s:3:"197";s:3:"ust";s:3:"198";s:3:" ha";s:3:"199";s:3:" le";s:3:"200";s:3:" mi";s:3:"201";s:3:" mu";s:3:"202";s:3:" ob";s:3:"203";s:3:" pe";s:3:"204";s:3:" pu";s:3:"205";s:3:" so";s:3:"206";s:3:"a i";s:3:"207";s:3:"ale";s:3:"208";s:3:"ca ";s:3:"209";s:3:"cto";s:3:"210";s:3:"e i";s:3:"211";s:3:"e u";s:3:"212";s:3:"eso";s:3:"213";s:3:"fer";s:3:"214";s:3:"fic";s:3:"215";s:3:"gob";s:3:"216";s:3:"jo ";s:3:"217";s:3:"ma ";s:3:"218";s:3:"mpl";s:3:"219";s:3:"o p";s:3:"220";s:3:"obi";s:3:"221";s:3:"s m";s:3:"222";s:3:"sa ";s:3:"223";s:3:"sep";s:3:"224";s:3:"ste";s:3:"225";s:3:"sti";s:3:"226";s:3:"tad";s:3:"227";s:3:"tod";s:3:"228";s:3:"y s";s:3:"229";s:3:" ci";s:3:"230";s:3:"and";s:3:"231";s:3:"ces";s:3:"232";s:4:"có ";s:3:"233";s:3:"dor";s:3:"234";s:3:"e m";s:3:"235";s:3:"eci";s:3:"236";s:3:"eco";s:3:"237";s:3:"esi";s:3:"238";s:3:"int";s:3:"239";s:3:"iza";s:3:"240";s:3:"l e";s:3:"241";s:3:"lar";s:3:"242";s:3:"mie";s:3:"243";s:3:"ner";s:3:"244";s:3:"orc";s:3:"245";s:3:"rci";s:3:"246";s:3:"ria";s:3:"247";s:3:"tic";s:3:"248";s:3:"tor";s:3:"249";s:3:" as";s:3:"250";s:3:" si";s:3:"251";s:3:"ce ";s:3:"252";s:3:"den";s:3:"253";s:3:"e r";s:3:"254";s:3:"e t";s:3:"255";s:3:"end";s:3:"256";s:3:"eri";s:3:"257";s:3:"esp";s:3:"258";s:3:"ial";s:3:"259";s:3:"ido";s:3:"260";s:3:"ina";s:3:"261";s:3:"inc";s:3:"262";s:3:"mit";s:3:"263";s:3:"o l";s:3:"264";s:3:"ome";s:3:"265";s:3:"pli";s:3:"266";s:3:"ras";s:3:"267";s:3:"s t";s:3:"268";s:3:"sid";s:3:"269";s:3:"sup";s:3:"270";s:3:"tab";s:3:"271";s:3:"uen";s:3:"272";s:3:"ues";s:3:"273";s:3:"ura";s:3:"274";s:3:"vo ";s:3:"275";s:3:"vor";s:3:"276";s:3:" sa";s:3:"277";s:3:" ti";s:3:"278";s:3:"abl";s:3:"279";s:3:"ali";s:3:"280";s:3:"aso";s:3:"281";s:3:"ast";s:3:"282";s:3:"cor";s:3:"283";s:3:"cti";s:3:"284";s:3:"cue";s:3:"285";s:3:"div";s:3:"286";s:3:"duc";s:3:"287";s:3:"ens";s:3:"288";s:3:"eti";s:3:"289";s:3:"imi";s:3:"290";s:3:"ini";s:3:"291";s:3:"lec";s:3:"292";s:3:"o q";s:3:"293";s:3:"oce";s:3:"294";s:3:"ort";s:3:"295";s:3:"ral";s:3:"296";s:3:"rma";s:3:"297";s:3:"roc";s:3:"298";s:3:"rod";s:3:"299";}s:7:"swahili";a:300:{s:3:" wa";s:1:"0";s:3:"wa ";s:1:"1";s:3:"a k";s:1:"2";s:3:"a m";s:1:"3";s:3:" ku";s:1:"4";s:3:" ya";s:1:"5";s:3:"a w";s:1:"6";s:3:"ya ";s:1:"7";s:3:"ni ";s:1:"8";s:3:" ma";s:1:"9";s:3:"ka ";s:2:"10";s:3:"a u";s:2:"11";s:3:"na ";s:2:"12";s:3:"za ";s:2:"13";s:3:"ia ";s:2:"14";s:3:" na";s:2:"15";s:3:"ika";s:2:"16";s:3:"ma ";s:2:"17";s:3:"ali";s:2:"18";s:3:"a n";s:2:"19";s:3:" am";s:2:"20";s:3:"ili";s:2:"21";s:3:"kwa";s:2:"22";s:3:" kw";s:2:"23";s:3:"ini";s:2:"24";s:3:" ha";s:2:"25";s:3:"ame";s:2:"26";s:3:"ana";s:2:"27";s:3:"i n";s:2:"28";s:3:" za";s:2:"29";s:3:"a h";s:2:"30";s:3:"ema";s:2:"31";s:3:"i m";s:2:"32";s:3:"i y";s:2:"33";s:3:"kuw";s:2:"34";s:3:"la ";s:2:"35";s:3:"o w";s:2:"36";s:3:"a y";s:2:"37";s:3:"ata";s:2:"38";s:3:"sem";s:2:"39";s:3:" la";s:2:"40";s:3:"ati";s:2:"41";s:3:"chi";s:2:"42";s:3:"i w";s:2:"43";s:3:"uwa";s:2:"44";s:3:"aki";s:2:"45";s:3:"li ";s:2:"46";s:3:"eka";s:2:"47";s:3:"ira";s:2:"48";s:3:" nc";s:2:"49";s:3:"a s";s:2:"50";s:3:"iki";s:2:"51";s:3:"kat";s:2:"52";s:3:"nch";s:2:"53";s:3:" ka";s:2:"54";s:3:" ki";s:2:"55";s:3:"a b";s:2:"56";s:3:"aji";s:2:"57";s:3:"amb";s:2:"58";s:3:"ra ";s:2:"59";s:3:"ri ";s:2:"60";s:3:"rik";s:2:"61";s:3:"ada";s:2:"62";s:3:"mat";s:2:"63";s:3:"mba";s:2:"64";s:3:"mes";s:2:"65";s:3:"yo ";s:2:"66";s:3:"zi ";s:2:"67";s:3:"da ";s:2:"68";s:3:"hi ";s:2:"69";s:3:"i k";s:2:"70";s:3:"ja ";s:2:"71";s:3:"kut";s:2:"72";s:3:"tek";s:2:"73";s:3:"wan";s:2:"74";s:3:" bi";s:2:"75";s:3:"a a";s:2:"76";s:3:"aka";s:2:"77";s:3:"ao ";s:2:"78";s:3:"asi";s:2:"79";s:3:"cha";s:2:"80";s:3:"ese";s:2:"81";s:3:"eza";s:2:"82";s:3:"ke ";s:2:"83";s:3:"moj";s:2:"84";s:3:"oja";s:2:"85";s:3:" hi";s:2:"86";s:3:"a z";s:2:"87";s:3:"end";s:2:"88";s:3:"ha ";s:2:"89";s:3:"ji ";s:2:"90";s:3:"mu ";s:2:"91";s:3:"shi";s:2:"92";s:3:"wat";s:2:"93";s:3:" bw";s:2:"94";s:3:"ake";s:2:"95";s:3:"ara";s:2:"96";s:3:"bw ";s:2:"97";s:3:"i h";s:2:"98";s:3:"imb";s:2:"99";s:3:"tik";s:3:"100";s:3:"wak";s:3:"101";s:3:"wal";s:3:"102";s:3:" hu";s:3:"103";s:3:" mi";s:3:"104";s:3:" mk";s:3:"105";s:3:" ni";s:3:"106";s:3:" ra";s:3:"107";s:3:" um";s:3:"108";s:3:"a l";s:3:"109";s:3:"ate";s:3:"110";s:3:"esh";s:3:"111";s:3:"ina";s:3:"112";s:3:"ish";s:3:"113";s:3:"kim";s:3:"114";s:3:"o k";s:3:"115";s:3:" ir";s:3:"116";s:3:"a i";s:3:"117";s:3:"ala";s:3:"118";s:3:"ani";s:3:"119";s:3:"aq ";s:3:"120";s:3:"azi";s:3:"121";s:3:"hin";s:3:"122";s:3:"i a";s:3:"123";s:3:"idi";s:3:"124";s:3:"ima";s:3:"125";s:3:"ita";s:3:"126";s:3:"rai";s:3:"127";s:3:"raq";s:3:"128";s:3:"sha";s:3:"129";s:3:" ms";s:3:"130";s:3:" se";s:3:"131";s:3:"afr";s:3:"132";s:3:"ama";s:3:"133";s:3:"ano";s:3:"134";s:3:"ea ";s:3:"135";s:3:"ele";s:3:"136";s:3:"fri";s:3:"137";s:3:"go ";s:3:"138";s:3:"i i";s:3:"139";s:3:"ifa";s:3:"140";s:3:"iwa";s:3:"141";s:3:"iyo";s:3:"142";s:3:"kus";s:3:"143";s:3:"lia";s:3:"144";s:3:"lio";s:3:"145";s:3:"maj";s:3:"146";s:3:"mku";s:3:"147";s:3:"no ";s:3:"148";s:3:"tan";s:3:"149";s:3:"uli";s:3:"150";s:3:"uta";s:3:"151";s:3:"wen";s:3:"152";s:3:" al";s:3:"153";s:3:"a j";s:3:"154";s:3:"aad";s:3:"155";s:3:"aid";s:3:"156";s:3:"ari";s:3:"157";s:3:"awa";s:3:"158";s:3:"ba ";s:3:"159";s:3:"fa ";s:3:"160";s:3:"nde";s:3:"161";s:3:"nge";s:3:"162";s:3:"nya";s:3:"163";s:3:"o y";s:3:"164";s:3:"u w";s:3:"165";s:3:"ua ";s:3:"166";s:3:"umo";s:3:"167";s:3:"waz";s:3:"168";s:3:"ye ";s:3:"169";s:3:" ut";s:3:"170";s:3:" vi";s:3:"171";s:3:"a d";s:3:"172";s:3:"a t";s:3:"173";s:3:"aif";s:3:"174";s:3:"di ";s:3:"175";s:3:"ere";s:3:"176";s:3:"ing";s:3:"177";s:3:"kin";s:3:"178";s:3:"nda";s:3:"179";s:3:"o n";s:3:"180";s:3:"oa ";s:3:"181";s:3:"tai";s:3:"182";s:3:"toa";s:3:"183";s:3:"usa";s:3:"184";s:3:"uto";s:3:"185";s:3:"was";s:3:"186";s:3:"yak";s:3:"187";s:3:"zo ";s:3:"188";s:3:" ji";s:3:"189";s:3:" mw";s:3:"190";s:3:"a p";s:3:"191";s:3:"aia";s:3:"192";s:3:"amu";s:3:"193";s:3:"ang";s:3:"194";s:3:"bik";s:3:"195";s:3:"bo ";s:3:"196";s:3:"del";s:3:"197";s:3:"e w";s:3:"198";s:3:"ene";s:3:"199";s:3:"eng";s:3:"200";s:3:"ich";s:3:"201";s:3:"iri";s:3:"202";s:3:"iti";s:3:"203";s:3:"ito";s:3:"204";s:3:"ki ";s:3:"205";s:3:"kir";s:3:"206";s:3:"ko ";s:3:"207";s:3:"kuu";s:3:"208";s:3:"mar";s:3:"209";s:3:"mbo";s:3:"210";s:3:"mil";s:3:"211";s:3:"ngi";s:3:"212";s:3:"ngo";s:3:"213";s:3:"o l";s:3:"214";s:3:"ong";s:3:"215";s:3:"si ";s:3:"216";s:3:"ta ";s:3:"217";s:3:"tak";s:3:"218";s:3:"u y";s:3:"219";s:3:"umu";s:3:"220";s:3:"usi";s:3:"221";s:3:"uu ";s:3:"222";s:3:"wam";s:3:"223";s:3:" af";s:3:"224";s:3:" ba";s:3:"225";s:3:" li";s:3:"226";s:3:" si";s:3:"227";s:3:" zi";s:3:"228";s:3:"a v";s:3:"229";s:3:"ami";s:3:"230";s:3:"atu";s:3:"231";s:3:"awi";s:3:"232";s:3:"eri";s:3:"233";s:3:"fan";s:3:"234";s:3:"fur";s:3:"235";s:3:"ger";s:3:"236";s:3:"i z";s:3:"237";s:3:"isi";s:3:"238";s:3:"izo";s:3:"239";s:3:"lea";s:3:"240";s:3:"mbi";s:3:"241";s:3:"mwa";s:3:"242";s:3:"nye";s:3:"243";s:3:"o h";s:3:"244";s:3:"o m";s:3:"245";s:3:"oni";s:3:"246";s:3:"rez";s:3:"247";s:3:"saa";s:3:"248";s:3:"ser";s:3:"249";s:3:"sin";s:3:"250";s:3:"tat";s:3:"251";s:3:"tis";s:3:"252";s:3:"tu ";s:3:"253";s:3:"uin";s:3:"254";s:3:"uki";s:3:"255";s:3:"ur ";s:3:"256";s:3:"wi ";s:3:"257";s:3:"yar";s:3:"258";s:3:" da";s:3:"259";s:3:" en";s:3:"260";s:3:" mp";s:3:"261";s:3:" ny";s:3:"262";s:3:" ta";s:3:"263";s:3:" ul";s:3:"264";s:3:" we";s:3:"265";s:3:"a c";s:3:"266";s:3:"a f";s:3:"267";s:3:"ais";s:3:"268";s:3:"apo";s:3:"269";s:3:"ayo";s:3:"270";s:3:"bar";s:3:"271";s:3:"dhi";s:3:"272";s:3:"e a";s:3:"273";s:3:"eke";s:3:"274";s:3:"eny";s:3:"275";s:3:"eon";s:3:"276";s:3:"hai";s:3:"277";s:3:"han";s:3:"278";s:3:"hiy";s:3:"279";s:3:"hur";s:3:"280";s:3:"i s";s:3:"281";s:3:"imw";s:3:"282";s:3:"kal";s:3:"283";s:3:"kwe";s:3:"284";s:3:"lak";s:3:"285";s:3:"lam";s:3:"286";s:3:"mak";s:3:"287";s:3:"msa";s:3:"288";s:3:"ne ";s:3:"289";s:3:"ngu";s:3:"290";s:3:"ru ";s:3:"291";s:3:"sal";s:3:"292";s:3:"swa";s:3:"293";s:3:"te ";s:3:"294";s:3:"ti ";s:3:"295";s:3:"uku";s:3:"296";s:3:"uma";s:3:"297";s:3:"una";s:3:"298";s:3:"uru";s:3:"299";}s:7:"swedish";a:300:{s:3:"en ";s:1:"0";s:3:" de";s:1:"1";s:3:"et ";s:1:"2";s:3:"er ";s:1:"3";s:3:"tt ";s:1:"4";s:3:"om ";s:1:"5";s:4:"för";s:1:"6";s:3:"ar ";s:1:"7";s:3:"de ";s:1:"8";s:3:"att";s:1:"9";s:4:" fö";s:2:"10";s:3:"ing";s:2:"11";s:3:" in";s:2:"12";s:3:" at";s:2:"13";s:3:" i ";s:2:"14";s:3:"det";s:2:"15";s:3:"ch ";s:2:"16";s:3:"an ";s:2:"17";s:3:"gen";s:2:"18";s:3:" an";s:2:"19";s:3:"t s";s:2:"20";s:3:"som";s:2:"21";s:3:"te ";s:2:"22";s:3:" oc";s:2:"23";s:3:"ter";s:2:"24";s:3:" ha";s:2:"25";s:3:"lle";s:2:"26";s:3:"och";s:2:"27";s:3:" sk";s:2:"28";s:3:" so";s:2:"29";s:3:"ra ";s:2:"30";s:3:"r a";s:2:"31";s:3:" me";s:2:"32";s:3:"var";s:2:"33";s:3:"nde";s:2:"34";s:4:"är ";s:2:"35";s:3:" ko";s:2:"36";s:3:"on ";s:2:"37";s:3:"ans";s:2:"38";s:3:"int";s:2:"39";s:3:"n s";s:2:"40";s:3:"na ";s:2:"41";s:3:" en";s:2:"42";s:3:" fr";s:2:"43";s:4:" på";s:2:"44";s:3:" st";s:2:"45";s:3:" va";s:2:"46";s:3:"and";s:2:"47";s:3:"nte";s:2:"48";s:4:"på ";s:2:"49";s:3:"ska";s:2:"50";s:3:"ta ";s:2:"51";s:3:" vi";s:2:"52";s:3:"der";s:2:"53";s:4:"äll";s:2:"54";s:4:"örs";s:2:"55";s:3:" om";s:2:"56";s:3:"da ";s:2:"57";s:3:"kri";s:2:"58";s:3:"ka ";s:2:"59";s:3:"nst";s:2:"60";s:3:" ho";s:2:"61";s:3:"as ";s:2:"62";s:4:"stä";s:2:"63";s:3:"r d";s:2:"64";s:3:"t f";s:2:"65";s:3:"upp";s:2:"66";s:3:" be";s:2:"67";s:3:"nge";s:2:"68";s:3:"r s";s:2:"69";s:3:"tal";s:2:"70";s:4:"täl";s:2:"71";s:4:"ör ";s:2:"72";s:3:" av";s:2:"73";s:3:"ger";s:2:"74";s:3:"ill";s:2:"75";s:3:"ng ";s:2:"76";s:3:"e s";s:2:"77";s:3:"ekt";s:2:"78";s:3:"ade";s:2:"79";s:3:"era";s:2:"80";s:3:"ers";s:2:"81";s:3:"har";s:2:"82";s:3:"ll ";s:2:"83";s:3:"lld";s:2:"84";s:3:"rin";s:2:"85";s:3:"rna";s:2:"86";s:4:"säk";s:2:"87";s:3:"und";s:2:"88";s:3:"inn";s:2:"89";s:3:"lig";s:2:"90";s:3:"ns ";s:2:"91";s:3:" ma";s:2:"92";s:3:" pr";s:2:"93";s:3:" up";s:2:"94";s:3:"age";s:2:"95";s:3:"av ";s:2:"96";s:3:"iva";s:2:"97";s:3:"kti";s:2:"98";s:3:"lda";s:2:"99";s:3:"orn";s:3:"100";s:3:"son";s:3:"101";s:3:"ts ";s:3:"102";s:3:"tta";s:3:"103";s:4:"äkr";s:3:"104";s:3:" sj";s:3:"105";s:3:" ti";s:3:"106";s:3:"avt";s:3:"107";s:3:"ber";s:3:"108";s:3:"els";s:3:"109";s:3:"eta";s:3:"110";s:3:"kol";s:3:"111";s:3:"men";s:3:"112";s:3:"n d";s:3:"113";s:3:"t k";s:3:"114";s:3:"vta";s:3:"115";s:4:"år ";s:3:"116";s:3:"juk";s:3:"117";s:3:"man";s:3:"118";s:3:"n f";s:3:"119";s:3:"nin";s:3:"120";s:3:"r i";s:3:"121";s:4:"rsä";s:3:"122";s:3:"sju";s:3:"123";s:3:"sso";s:3:"124";s:4:" är";s:3:"125";s:3:"a s";s:3:"126";s:3:"ach";s:3:"127";s:3:"ag ";s:3:"128";s:3:"bac";s:3:"129";s:3:"den";s:3:"130";s:3:"ett";s:3:"131";s:3:"fte";s:3:"132";s:3:"hor";s:3:"133";s:3:"nba";s:3:"134";s:3:"oll";s:3:"135";s:3:"rnb";s:3:"136";s:3:"ste";s:3:"137";s:3:"til";s:3:"138";s:3:" ef";s:3:"139";s:3:" si";s:3:"140";s:3:"a a";s:3:"141";s:3:"e h";s:3:"142";s:3:"ed ";s:3:"143";s:3:"eft";s:3:"144";s:3:"ga ";s:3:"145";s:3:"ig ";s:3:"146";s:3:"it ";s:3:"147";s:3:"ler";s:3:"148";s:3:"med";s:3:"149";s:3:"n i";s:3:"150";s:3:"nd ";s:3:"151";s:4:"så ";s:3:"152";s:3:"tiv";s:3:"153";s:3:" bl";s:3:"154";s:3:" et";s:3:"155";s:3:" fi";s:3:"156";s:4:" sä";s:3:"157";s:3:"at ";s:3:"158";s:3:"des";s:3:"159";s:3:"e a";s:3:"160";s:3:"gar";s:3:"161";s:3:"get";s:3:"162";s:3:"lan";s:3:"163";s:3:"lss";s:3:"164";s:3:"ost";s:3:"165";s:3:"r b";s:3:"166";s:3:"r e";s:3:"167";s:3:"re ";s:3:"168";s:3:"ret";s:3:"169";s:3:"sta";s:3:"170";s:3:"t i";s:3:"171";s:3:" ge";s:3:"172";s:3:" he";s:3:"173";s:3:" re";s:3:"174";s:3:"a f";s:3:"175";s:3:"all";s:3:"176";s:3:"bos";s:3:"177";s:3:"ets";s:3:"178";s:3:"lek";s:3:"179";s:3:"let";s:3:"180";s:3:"ner";s:3:"181";s:3:"nna";s:3:"182";s:3:"nne";s:3:"183";s:3:"r f";s:3:"184";s:3:"rit";s:3:"185";s:3:"s s";s:3:"186";s:3:"sen";s:3:"187";s:3:"sto";s:3:"188";s:3:"tor";s:3:"189";s:3:"vav";s:3:"190";s:3:"ygg";s:3:"191";s:3:" ka";s:3:"192";s:4:" så";s:3:"193";s:3:" tr";s:3:"194";s:3:" ut";s:3:"195";s:3:"ad ";s:3:"196";s:3:"al ";s:3:"197";s:3:"are";s:3:"198";s:3:"e o";s:3:"199";s:3:"gon";s:3:"200";s:3:"kom";s:3:"201";s:3:"n a";s:3:"202";s:3:"n h";s:3:"203";s:3:"nga";s:3:"204";s:3:"r h";s:3:"205";s:3:"ren";s:3:"206";s:3:"t d";s:3:"207";s:3:"tag";s:3:"208";s:3:"tar";s:3:"209";s:3:"tre";s:3:"210";s:4:"ätt";s:3:"211";s:4:" få";s:3:"212";s:4:" hä";s:3:"213";s:3:" se";s:3:"214";s:3:"a d";s:3:"215";s:3:"a i";s:3:"216";s:3:"a p";s:3:"217";s:3:"ale";s:3:"218";s:3:"ann";s:3:"219";s:3:"ara";s:3:"220";s:3:"byg";s:3:"221";s:3:"gt ";s:3:"222";s:3:"han";s:3:"223";s:3:"igt";s:3:"224";s:3:"kan";s:3:"225";s:3:"la ";s:3:"226";s:3:"n o";s:3:"227";s:3:"nom";s:3:"228";s:3:"nsk";s:3:"229";s:3:"omm";s:3:"230";s:3:"r k";s:3:"231";s:3:"r p";s:3:"232";s:3:"r v";s:3:"233";s:3:"s f";s:3:"234";s:3:"s k";s:3:"235";s:3:"t a";s:3:"236";s:3:"t p";s:3:"237";s:3:"ver";s:3:"238";s:3:" bo";s:3:"239";s:3:" br";s:3:"240";s:3:" ku";s:3:"241";s:4:" nå";s:3:"242";s:3:"a b";s:3:"243";s:3:"a e";s:3:"244";s:3:"del";s:3:"245";s:3:"ens";s:3:"246";s:3:"es ";s:3:"247";s:3:"fin";s:3:"248";s:3:"ige";s:3:"249";s:3:"m s";s:3:"250";s:3:"n p";s:3:"251";s:4:"någ";s:3:"252";s:3:"or ";s:3:"253";s:3:"r o";s:3:"254";s:3:"rbe";s:3:"255";s:3:"rs ";s:3:"256";s:3:"rt ";s:3:"257";s:3:"s a";s:3:"258";s:3:"s n";s:3:"259";s:3:"skr";s:3:"260";s:3:"t o";s:3:"261";s:3:"ten";s:3:"262";s:3:"tio";s:3:"263";s:3:"ven";s:3:"264";s:3:" al";s:3:"265";s:3:" ja";s:3:"266";s:3:" p ";s:3:"267";s:3:" r ";s:3:"268";s:3:" sa";s:3:"269";s:3:"a h";s:3:"270";s:3:"bet";s:3:"271";s:3:"cke";s:3:"272";s:3:"dra";s:3:"273";s:3:"e f";s:3:"274";s:3:"e i";s:3:"275";s:3:"eda";s:3:"276";s:3:"eno";s:3:"277";s:4:"erä";s:3:"278";s:3:"ess";s:3:"279";s:3:"ion";s:3:"280";s:3:"jag";s:3:"281";s:3:"m f";s:3:"282";s:3:"ne ";s:3:"283";s:3:"nns";s:3:"284";s:3:"pro";s:3:"285";s:3:"r t";s:3:"286";s:3:"rar";s:3:"287";s:3:"riv";s:3:"288";s:4:"rät";s:3:"289";s:3:"t e";s:3:"290";s:3:"t t";s:3:"291";s:3:"ust";s:3:"292";s:3:"vad";s:3:"293";s:4:"öre";s:3:"294";s:3:" ar";s:3:"295";s:3:" by";s:3:"296";s:3:" kr";s:3:"297";s:3:" mi";s:3:"298";s:3:"arb";s:3:"299";}s:7:"tagalog";a:300:{s:3:"ng ";s:1:"0";s:3:"ang";s:1:"1";s:3:" na";s:1:"2";s:3:" sa";s:1:"3";s:3:"an ";s:1:"4";s:3:"nan";s:1:"5";s:3:"sa ";s:1:"6";s:3:"na ";s:1:"7";s:3:" ma";s:1:"8";s:3:" ca";s:1:"9";s:3:"ay ";s:2:"10";s:3:"n g";s:2:"11";s:3:" an";s:2:"12";s:3:"ong";s:2:"13";s:3:" ga";s:2:"14";s:3:"at ";s:2:"15";s:3:" pa";s:2:"16";s:3:"ala";s:2:"17";s:3:" si";s:2:"18";s:3:"a n";s:2:"19";s:3:"ga ";s:2:"20";s:3:"g n";s:2:"21";s:3:"g m";s:2:"22";s:3:"ito";s:2:"23";s:3:"g c";s:2:"24";s:3:"man";s:2:"25";s:3:"san";s:2:"26";s:3:"g s";s:2:"27";s:3:"ing";s:2:"28";s:3:"to ";s:2:"29";s:3:"ila";s:2:"30";s:3:"ina";s:2:"31";s:3:" di";s:2:"32";s:3:" ta";s:2:"33";s:3:"aga";s:2:"34";s:3:"iya";s:2:"35";s:3:"aca";s:2:"36";s:3:"g t";s:2:"37";s:3:" at";s:2:"38";s:3:"aya";s:2:"39";s:3:"ama";s:2:"40";s:3:"lan";s:2:"41";s:3:"a a";s:2:"42";s:3:"qui";s:2:"43";s:3:"a c";s:2:"44";s:3:"a s";s:2:"45";s:3:"nag";s:2:"46";s:3:" ba";s:2:"47";s:3:"g i";s:2:"48";s:3:"tan";s:2:"49";s:3:"'t ";s:2:"50";s:3:" cu";s:2:"51";s:3:"aua";s:2:"52";s:3:"g p";s:2:"53";s:3:" ni";s:2:"54";s:3:"os ";s:2:"55";s:3:"'y ";s:2:"56";s:3:"a m";s:2:"57";s:3:" n ";s:2:"58";s:3:"la ";s:2:"59";s:3:" la";s:2:"60";s:3:"o n";s:2:"61";s:3:"yan";s:2:"62";s:3:" ay";s:2:"63";s:3:"usa";s:2:"64";s:3:"cay";s:2:"65";s:3:"on ";s:2:"66";s:3:"ya ";s:2:"67";s:3:" it";s:2:"68";s:3:"al ";s:2:"69";s:3:"apa";s:2:"70";s:3:"ata";s:2:"71";s:3:"t n";s:2:"72";s:3:"uan";s:2:"73";s:3:"aha";s:2:"74";s:3:"asa";s:2:"75";s:3:"pag";s:2:"76";s:3:" gu";s:2:"77";s:3:"g l";s:2:"78";s:3:"di ";s:2:"79";s:3:"mag";s:2:"80";s:3:"aba";s:2:"81";s:3:"g a";s:2:"82";s:3:"ara";s:2:"83";s:3:"a p";s:2:"84";s:3:"in ";s:2:"85";s:3:"ana";s:2:"86";s:3:"it ";s:2:"87";s:3:"si ";s:2:"88";s:3:"cus";s:2:"89";s:3:"g b";s:2:"90";s:3:"uin";s:2:"91";s:3:"a t";s:2:"92";s:3:"as ";s:2:"93";s:3:"n n";s:2:"94";s:3:"hin";s:2:"95";s:3:" hi";s:2:"96";s:3:"a't";s:2:"97";s:3:"ali";s:2:"98";s:3:" bu";s:2:"99";s:3:"gan";s:3:"100";s:3:"uma";s:3:"101";s:3:"a d";s:3:"102";s:3:"agc";s:3:"103";s:3:"aqu";s:3:"104";s:3:"g d";s:3:"105";s:3:" tu";s:3:"106";s:3:"aon";s:3:"107";s:3:"ari";s:3:"108";s:3:"cas";s:3:"109";s:3:"i n";s:3:"110";s:3:"niy";s:3:"111";s:3:"pin";s:3:"112";s:3:"a i";s:3:"113";s:3:"gca";s:3:"114";s:3:"siy";s:3:"115";s:3:"a'y";s:3:"116";s:3:"yao";s:3:"117";s:3:"ag ";s:3:"118";s:3:"ca ";s:3:"119";s:3:"han";s:3:"120";s:3:"ili";s:3:"121";s:3:"pan";s:3:"122";s:3:"sin";s:3:"123";s:3:"ual";s:3:"124";s:3:"n s";s:3:"125";s:3:"nam";s:3:"126";s:3:" lu";s:3:"127";s:3:"can";s:3:"128";s:3:"dit";s:3:"129";s:3:"gui";s:3:"130";s:3:"y n";s:3:"131";s:3:"gal";s:3:"132";s:3:"hat";s:3:"133";s:3:"nal";s:3:"134";s:3:" is";s:3:"135";s:3:"bag";s:3:"136";s:3:"fra";s:3:"137";s:3:" fr";s:3:"138";s:3:" su";s:3:"139";s:3:"a l";s:3:"140";s:3:" co";s:3:"141";s:3:"ani";s:3:"142";s:3:" bi";s:3:"143";s:3:" da";s:3:"144";s:3:"alo";s:3:"145";s:3:"isa";s:3:"146";s:3:"ita";s:3:"147";s:3:"may";s:3:"148";s:3:"o s";s:3:"149";s:3:"sil";s:3:"150";s:3:"una";s:3:"151";s:3:" in";s:3:"152";s:3:" pi";s:3:"153";s:3:"l n";s:3:"154";s:3:"nil";s:3:"155";s:3:"o a";s:3:"156";s:3:"pat";s:3:"157";s:3:"sac";s:3:"158";s:3:"t s";s:3:"159";s:3:" ua";s:3:"160";s:3:"agu";s:3:"161";s:3:"ail";s:3:"162";s:3:"bin";s:3:"163";s:3:"dal";s:3:"164";s:3:"g h";s:3:"165";s:3:"ndi";s:3:"166";s:3:"oon";s:3:"167";s:3:"ua ";s:3:"168";s:3:" ha";s:3:"169";s:3:"ind";s:3:"170";s:3:"ran";s:3:"171";s:3:"s n";s:3:"172";s:3:"tin";s:3:"173";s:3:"ulo";s:3:"174";s:3:"eng";s:3:"175";s:3:"g f";s:3:"176";s:3:"ini";s:3:"177";s:3:"lah";s:3:"178";s:3:"lo ";s:3:"179";s:3:"rai";s:3:"180";s:3:"rin";s:3:"181";s:3:"ton";s:3:"182";s:3:"g u";s:3:"183";s:3:"inu";s:3:"184";s:3:"lon";s:3:"185";s:3:"o'y";s:3:"186";s:3:"t a";s:3:"187";s:3:" ar";s:3:"188";s:3:"a b";s:3:"189";s:3:"ad ";s:3:"190";s:3:"bay";s:3:"191";s:3:"cal";s:3:"192";s:3:"gya";s:3:"193";s:3:"ile";s:3:"194";s:3:"mat";s:3:"195";s:3:"n a";s:3:"196";s:3:"pau";s:3:"197";s:3:"ra ";s:3:"198";s:3:"tay";s:3:"199";s:3:"y m";s:3:"200";s:3:"ant";s:3:"201";s:3:"ban";s:3:"202";s:3:"i m";s:3:"203";s:3:"nas";s:3:"204";s:3:"nay";s:3:"205";s:3:"no ";s:3:"206";s:3:"sti";s:3:"207";s:3:" ti";s:3:"208";s:3:"ags";s:3:"209";s:3:"g g";s:3:"210";s:3:"ta ";s:3:"211";s:3:"uit";s:3:"212";s:3:"uno";s:3:"213";s:3:" ib";s:3:"214";s:3:" ya";s:3:"215";s:3:"a u";s:3:"216";s:3:"abi";s:3:"217";s:3:"ati";s:3:"218";s:3:"cap";s:3:"219";s:3:"ig ";s:3:"220";s:3:"is ";s:3:"221";s:3:"la'";s:3:"222";s:3:" do";s:3:"223";s:3:" pu";s:3:"224";s:3:"api";s:3:"225";s:3:"ayo";s:3:"226";s:3:"gos";s:3:"227";s:3:"gul";s:3:"228";s:3:"lal";s:3:"229";s:3:"tag";s:3:"230";s:3:"til";s:3:"231";s:3:"tun";s:3:"232";s:3:"y c";s:3:"233";s:3:"y s";s:3:"234";s:3:"yon";s:3:"235";s:3:"ano";s:3:"236";s:3:"bur";s:3:"237";s:3:"iba";s:3:"238";s:3:"isi";s:3:"239";s:3:"lam";s:3:"240";s:3:"nac";s:3:"241";s:3:"nat";s:3:"242";s:3:"ni ";s:3:"243";s:3:"nto";s:3:"244";s:3:"od ";s:3:"245";s:3:"pa ";s:3:"246";s:3:"rgo";s:3:"247";s:3:"urg";s:3:"248";s:3:" m ";s:3:"249";s:3:"adr";s:3:"250";s:3:"ast";s:3:"251";s:3:"cag";s:3:"252";s:3:"gay";s:3:"253";s:3:"gsi";s:3:"254";s:3:"i p";s:3:"255";s:3:"ino";s:3:"256";s:3:"len";s:3:"257";s:3:"lin";s:3:"258";s:3:"m g";s:3:"259";s:3:"mar";s:3:"260";s:3:"nah";s:3:"261";s:3:"to'";s:3:"262";s:3:" de";s:3:"263";s:3:"a h";s:3:"264";s:3:"cat";s:3:"265";s:3:"cau";s:3:"266";s:3:"con";s:3:"267";s:3:"iqu";s:3:"268";s:3:"lac";s:3:"269";s:3:"mab";s:3:"270";s:3:"min";s:3:"271";s:3:"og ";s:3:"272";s:3:"par";s:3:"273";s:3:"sal";s:3:"274";s:3:" za";s:3:"275";s:3:"ao ";s:3:"276";s:3:"doo";s:3:"277";s:3:"ipi";s:3:"278";s:3:"nod";s:3:"279";s:3:"nte";s:3:"280";s:3:"uha";s:3:"281";s:3:"ula";s:3:"282";s:3:" re";s:3:"283";s:3:"ill";s:3:"284";s:3:"lit";s:3:"285";s:3:"mac";s:3:"286";s:3:"nit";s:3:"287";s:3:"o't";s:3:"288";s:3:"or ";s:3:"289";s:3:"ora";s:3:"290";s:3:"sum";s:3:"291";s:3:"y p";s:3:"292";s:3:" al";s:3:"293";s:3:" mi";s:3:"294";s:3:" um";s:3:"295";s:3:"aco";s:3:"296";s:3:"ada";s:3:"297";s:3:"agd";s:3:"298";s:3:"cab";s:3:"299";}s:7:"turkish";a:300:{s:3:"lar";s:1:"0";s:3:"en ";s:1:"1";s:3:"ler";s:1:"2";s:3:"an ";s:1:"3";s:3:"in ";s:1:"4";s:3:" bi";s:1:"5";s:3:" ya";s:1:"6";s:3:"eri";s:1:"7";s:3:"de ";s:1:"8";s:3:" ka";s:1:"9";s:3:"ir ";s:2:"10";s:4:"arı";s:2:"11";s:3:" ba";s:2:"12";s:3:" de";s:2:"13";s:3:" ha";s:2:"14";s:4:"ın ";s:2:"15";s:3:"ara";s:2:"16";s:3:"bir";s:2:"17";s:3:" ve";s:2:"18";s:3:" sa";s:2:"19";s:3:"ile";s:2:"20";s:3:"le ";s:2:"21";s:3:"nde";s:2:"22";s:3:"da ";s:2:"23";s:3:" bu";s:2:"24";s:3:"ana";s:2:"25";s:3:"ini";s:2:"26";s:5:"ını";s:2:"27";s:3:"er ";s:2:"28";s:3:"ve ";s:2:"29";s:4:" yı";s:2:"30";s:3:"lma";s:2:"31";s:4:"yıl";s:2:"32";s:3:" ol";s:2:"33";s:3:"ar ";s:2:"34";s:3:"n b";s:2:"35";s:3:"nda";s:2:"36";s:3:"aya";s:2:"37";s:3:"li ";s:2:"38";s:4:"ası";s:2:"39";s:3:" ge";s:2:"40";s:3:"ind";s:2:"41";s:3:"n k";s:2:"42";s:3:"esi";s:2:"43";s:3:"lan";s:2:"44";s:3:"nla";s:2:"45";s:3:"ak ";s:2:"46";s:4:"anı";s:2:"47";s:3:"eni";s:2:"48";s:3:"ni ";s:2:"49";s:4:"nı ";s:2:"50";s:4:"rın";s:2:"51";s:3:"san";s:2:"52";s:3:" ko";s:2:"53";s:3:" ye";s:2:"54";s:3:"maz";s:2:"55";s:4:"baş";s:2:"56";s:3:"ili";s:2:"57";s:3:"rin";s:2:"58";s:4:"alı";s:2:"59";s:3:"az ";s:2:"60";s:3:"hal";s:2:"61";s:4:"ınd";s:2:"62";s:3:" da";s:2:"63";s:4:" gü";s:2:"64";s:3:"ele";s:2:"65";s:4:"ılm";s:2:"66";s:6:"ığı";s:2:"67";s:3:"eki";s:2:"68";s:4:"gün";s:2:"69";s:3:"i b";s:2:"70";s:4:"içi";s:2:"71";s:3:"den";s:2:"72";s:3:"kar";s:2:"73";s:3:"si ";s:2:"74";s:3:" il";s:2:"75";s:3:"e y";s:2:"76";s:3:"na ";s:2:"77";s:3:"yor";s:2:"78";s:3:"ek ";s:2:"79";s:3:"n s";s:2:"80";s:4:" iç";s:2:"81";s:3:"bu ";s:2:"82";s:3:"e b";s:2:"83";s:3:"im ";s:2:"84";s:3:"ki ";s:2:"85";s:3:"len";s:2:"86";s:3:"ri ";s:2:"87";s:4:"sın";s:2:"88";s:3:" so";s:2:"89";s:4:"ün ";s:2:"90";s:3:" ta";s:2:"91";s:3:"nin";s:2:"92";s:4:"iği";s:2:"93";s:3:"tan";s:2:"94";s:3:"yan";s:2:"95";s:3:" si";s:2:"96";s:3:"nat";s:2:"97";s:4:"nın";s:2:"98";s:3:"kan";s:2:"99";s:4:"rı ";s:3:"100";s:4:"çin";s:3:"101";s:5:"ğı ";s:3:"102";s:3:"eli";s:3:"103";s:3:"n a";s:3:"104";s:4:"ır ";s:3:"105";s:3:" an";s:3:"106";s:3:"ine";s:3:"107";s:3:"n y";s:3:"108";s:3:"ola";s:3:"109";s:3:" ar";s:3:"110";s:3:"al ";s:3:"111";s:3:"e s";s:3:"112";s:3:"lik";s:3:"113";s:3:"n d";s:3:"114";s:3:"sin";s:3:"115";s:3:" al";s:3:"116";s:4:" dü";s:3:"117";s:3:"anl";s:3:"118";s:3:"ne ";s:3:"119";s:3:"ya ";s:3:"120";s:4:"ım ";s:3:"121";s:4:"ına";s:3:"122";s:3:" be";s:3:"123";s:3:"ada";s:3:"124";s:3:"ala";s:3:"125";s:3:"ama";s:3:"126";s:3:"ilm";s:3:"127";s:3:"or ";s:3:"128";s:4:"sı ";s:3:"129";s:3:"yen";s:3:"130";s:3:" me";s:3:"131";s:4:"atı";s:3:"132";s:3:"di ";s:3:"133";s:3:"eti";s:3:"134";s:3:"ken";s:3:"135";s:3:"la ";s:3:"136";s:4:"lı ";s:3:"137";s:3:"oru";s:3:"138";s:4:" gö";s:3:"139";s:3:" in";s:3:"140";s:3:"and";s:3:"141";s:3:"e d";s:3:"142";s:3:"men";s:3:"143";s:3:"un ";s:3:"144";s:4:"öne";s:3:"145";s:3:"a d";s:3:"146";s:3:"at ";s:3:"147";s:3:"e a";s:3:"148";s:3:"e g";s:3:"149";s:3:"yar";s:3:"150";s:3:" ku";s:3:"151";s:4:"ayı";s:3:"152";s:3:"dan";s:3:"153";s:3:"edi";s:3:"154";s:3:"iri";s:3:"155";s:5:"ünü";s:3:"156";s:4:"ği ";s:3:"157";s:5:"ılı";s:3:"158";s:3:"eme";s:3:"159";s:4:"eği";s:3:"160";s:3:"i k";s:3:"161";s:3:"i y";s:3:"162";s:4:"ıla";s:3:"163";s:4:" ça";s:3:"164";s:3:"a y";s:3:"165";s:3:"alk";s:3:"166";s:4:"dı ";s:3:"167";s:3:"ede";s:3:"168";s:3:"el ";s:3:"169";s:4:"ndı";s:3:"170";s:3:"ra ";s:3:"171";s:4:"üne";s:3:"172";s:4:" sü";s:3:"173";s:4:"dır";s:3:"174";s:3:"e k";s:3:"175";s:3:"ere";s:3:"176";s:3:"ik ";s:3:"177";s:3:"imi";s:3:"178";s:4:"işi";s:3:"179";s:3:"mas";s:3:"180";s:3:"n h";s:3:"181";s:4:"sür";s:3:"182";s:3:"yle";s:3:"183";s:3:" ad";s:3:"184";s:3:" fi";s:3:"185";s:3:" gi";s:3:"186";s:3:" se";s:3:"187";s:3:"a k";s:3:"188";s:3:"arl";s:3:"189";s:5:"aşı";s:3:"190";s:3:"iyo";s:3:"191";s:3:"kla";s:3:"192";s:5:"lığ";s:3:"193";s:3:"nem";s:3:"194";s:3:"ney";s:3:"195";s:3:"rme";s:3:"196";s:3:"ste";s:3:"197";s:4:"tı ";s:3:"198";s:3:"unl";s:3:"199";s:3:"ver";s:3:"200";s:4:" sı";s:3:"201";s:3:" te";s:3:"202";s:3:" to";s:3:"203";s:3:"a s";s:3:"204";s:4:"aşk";s:3:"205";s:3:"ekl";s:3:"206";s:3:"end";s:3:"207";s:3:"kal";s:3:"208";s:4:"liğ";s:3:"209";s:3:"min";s:3:"210";s:4:"tır";s:3:"211";s:3:"ulu";s:3:"212";s:3:"unu";s:3:"213";s:3:"yap";s:3:"214";s:3:"ye ";s:3:"215";s:4:"ı i";s:3:"216";s:4:"şka";s:3:"217";s:5:"ştı";s:3:"218";s:4:" bü";s:3:"219";s:3:" ke";s:3:"220";s:3:" ki";s:3:"221";s:3:"ard";s:3:"222";s:3:"art";s:3:"223";s:4:"aşa";s:3:"224";s:3:"n i";s:3:"225";s:3:"ndi";s:3:"226";s:3:"ti ";s:3:"227";s:3:"top";s:3:"228";s:4:"ı b";s:3:"229";s:3:" va";s:3:"230";s:4:" ön";s:3:"231";s:3:"aki";s:3:"232";s:3:"cak";s:3:"233";s:3:"ey ";s:3:"234";s:3:"fil";s:3:"235";s:3:"isi";s:3:"236";s:3:"kle";s:3:"237";s:3:"kur";s:3:"238";s:3:"man";s:3:"239";s:3:"nce";s:3:"240";s:3:"nle";s:3:"241";s:3:"nun";s:3:"242";s:3:"rak";s:3:"243";s:4:"ık ";s:3:"244";s:3:" en";s:3:"245";s:3:" yo";s:3:"246";s:3:"a g";s:3:"247";s:3:"lis";s:3:"248";s:3:"mak";s:3:"249";s:3:"n g";s:3:"250";s:3:"tir";s:3:"251";s:3:"yas";s:3:"252";s:4:" iş";s:3:"253";s:4:" yö";s:3:"254";s:3:"ale";s:3:"255";s:3:"bil";s:3:"256";s:3:"bul";s:3:"257";s:3:"et ";s:3:"258";s:3:"i d";s:3:"259";s:3:"iye";s:3:"260";s:3:"kil";s:3:"261";s:3:"ma ";s:3:"262";s:3:"n e";s:3:"263";s:3:"n t";s:3:"264";s:3:"nu ";s:3:"265";s:3:"olu";s:3:"266";s:3:"rla";s:3:"267";s:3:"te ";s:3:"268";s:4:"yön";s:3:"269";s:5:"çık";s:3:"270";s:3:" ay";s:3:"271";s:4:" mü";s:3:"272";s:4:" ço";s:3:"273";s:5:" çı";s:3:"274";s:3:"a a";s:3:"275";s:3:"a b";s:3:"276";s:3:"ata";s:3:"277";s:3:"der";s:3:"278";s:3:"gel";s:3:"279";s:3:"i g";s:3:"280";s:3:"i i";s:3:"281";s:3:"ill";s:3:"282";s:3:"ist";s:3:"283";s:4:"ldı";s:3:"284";s:3:"lu ";s:3:"285";s:3:"mek";s:3:"286";s:3:"mle";s:3:"287";s:4:"n ç";s:3:"288";s:3:"onu";s:3:"289";s:3:"opl";s:3:"290";s:3:"ran";s:3:"291";s:3:"rat";s:3:"292";s:4:"rdı";s:3:"293";s:3:"rke";s:3:"294";s:3:"siy";s:3:"295";s:3:"son";s:3:"296";s:3:"ta ";s:3:"297";s:5:"tçı";s:3:"298";s:4:"tın";s:3:"299";}s:9:"ukrainian";a:300:{s:5:" на";s:1:"0";s:5:" за";s:1:"1";s:6:"ння";s:1:"2";s:5:"ня ";s:1:"3";s:5:"на ";s:1:"4";s:5:" пр";s:1:"5";s:6:"ого";s:1:"6";s:5:"го ";s:1:"7";s:6:"ськ";s:1:"8";s:5:" по";s:1:"9";s:4:" у ";s:2:"10";s:6:"від";s:2:"11";s:6:"ере";s:2:"12";s:5:" мі";s:2:"13";s:5:" не";s:2:"14";s:5:"их ";s:2:"15";s:5:"ть ";s:2:"16";s:6:"пер";s:2:"17";s:5:" ві";s:2:"18";s:5:"ів ";s:2:"19";s:5:" пе";s:2:"20";s:5:" що";s:2:"21";s:6:"льн";s:2:"22";s:5:"ми ";s:2:"23";s:5:"ні ";s:2:"24";s:5:"не ";s:2:"25";s:5:"ти ";s:2:"26";s:6:"ати";s:2:"27";s:6:"енн";s:2:"28";s:6:"міс";s:2:"29";s:6:"пра";s:2:"30";s:6:"ува";s:2:"31";s:6:"ник";s:2:"32";s:6:"про";s:2:"33";s:6:"рав";s:2:"34";s:6:"івн";s:2:"35";s:5:" та";s:2:"36";s:6:"буд";s:2:"37";s:6:"влі";s:2:"38";s:6:"рів";s:2:"39";s:5:" ко";s:2:"40";s:5:" рі";s:2:"41";s:6:"аль";s:2:"42";s:5:"но ";s:2:"43";s:6:"ому";s:2:"44";s:5:"що ";s:2:"45";s:5:" ви";s:2:"46";s:5:"му ";s:2:"47";s:6:"рев";s:2:"48";s:5:"ся ";s:2:"49";s:6:"інн";s:2:"50";s:5:" до";s:2:"51";s:5:" уп";s:2:"52";s:6:"авл";s:2:"53";s:6:"анн";s:2:"54";s:6:"ком";s:2:"55";s:5:"ли ";s:2:"56";s:6:"лін";s:2:"57";s:6:"ног";s:2:"58";s:6:"упр";s:2:"59";s:5:" бу";s:2:"60";s:4:" з ";s:2:"61";s:5:" ро";s:2:"62";s:5:"за ";s:2:"63";s:5:"и н";s:2:"64";s:6:"нов";s:2:"65";s:6:"оро";s:2:"66";s:6:"ост";s:2:"67";s:6:"ста";s:2:"68";s:5:"ті ";s:2:"69";s:6:"ють";s:2:"70";s:5:" мо";s:2:"71";s:5:" ні";s:2:"72";s:5:" як";s:2:"73";s:6:"бор";s:2:"74";s:5:"ва ";s:2:"75";s:6:"ван";s:2:"76";s:6:"ень";s:2:"77";s:5:"и п";s:2:"78";s:5:"нь ";s:2:"79";s:6:"ові";s:2:"80";s:6:"рон";s:2:"81";s:6:"сті";s:2:"82";s:5:"та ";s:2:"83";s:5:"у в";s:2:"84";s:6:"ько";s:2:"85";s:6:"іст";s:2:"86";s:4:" в ";s:2:"87";s:5:" ре";s:2:"88";s:5:"до ";s:2:"89";s:5:"е п";s:2:"90";s:6:"заб";s:2:"91";s:5:"ий ";s:2:"92";s:6:"нсь";s:2:"93";s:5:"о в";s:2:"94";s:5:"о п";s:2:"95";s:6:"при";s:2:"96";s:5:"і п";s:2:"97";s:5:" ку";s:2:"98";s:5:" пі";s:2:"99";s:5:" сп";s:3:"100";s:5:"а п";s:3:"101";s:6:"або";s:3:"102";s:6:"анс";s:3:"103";s:6:"аці";s:3:"104";s:6:"ват";s:3:"105";s:6:"вни";s:3:"106";s:5:"и в";s:3:"107";s:6:"ими";s:3:"108";s:5:"ка ";s:3:"109";s:6:"нен";s:3:"110";s:6:"ніч";s:3:"111";s:6:"она";s:3:"112";s:5:"ої ";s:3:"113";s:6:"пов";s:3:"114";s:6:"ьки";s:3:"115";s:6:"ьно";s:3:"116";s:6:"ізн";s:3:"117";s:6:"ічн";s:3:"118";s:5:" ав";s:3:"119";s:5:" ма";s:3:"120";s:5:" ор";s:3:"121";s:5:" су";s:3:"122";s:5:" чи";s:3:"123";s:5:" ін";s:3:"124";s:5:"а з";s:3:"125";s:5:"ам ";s:3:"126";s:5:"ає ";s:3:"127";s:6:"вне";s:3:"128";s:6:"вто";s:3:"129";s:6:"дом";s:3:"130";s:6:"ент";s:3:"131";s:6:"жит";s:3:"132";s:6:"зни";s:3:"133";s:5:"им ";s:3:"134";s:6:"итл";s:3:"135";s:5:"ла ";s:3:"136";s:6:"них";s:3:"137";s:6:"ниц";s:3:"138";s:6:"ова";s:3:"139";s:6:"ови";s:3:"140";s:5:"ом ";s:3:"141";s:6:"пор";s:3:"142";s:6:"тьс";s:3:"143";s:5:"у р";s:3:"144";s:6:"ься";s:3:"145";s:6:"ідо";s:3:"146";s:6:"іль";s:3:"147";s:6:"ісь";s:3:"148";s:5:" ва";s:3:"149";s:5:" ді";s:3:"150";s:5:" жи";s:3:"151";s:5:" че";s:3:"152";s:4:" і ";s:3:"153";s:5:"а в";s:3:"154";s:5:"а н";s:3:"155";s:6:"али";s:3:"156";s:6:"вез";s:3:"157";s:6:"вно";s:3:"158";s:6:"еве";s:3:"159";s:6:"езе";s:3:"160";s:6:"зен";s:3:"161";s:6:"ицт";s:3:"162";s:5:"ки ";s:3:"163";s:6:"ких";s:3:"164";s:6:"кон";s:3:"165";s:5:"ку ";s:3:"166";s:6:"лас";s:3:"167";s:5:"ля ";s:3:"168";s:6:"мож";s:3:"169";s:6:"нач";s:3:"170";s:6:"ним";s:3:"171";s:6:"ної";s:3:"172";s:5:"о б";s:3:"173";s:6:"ову";s:3:"174";s:6:"оди";s:3:"175";s:5:"ою ";s:3:"176";s:5:"ро ";s:3:"177";s:6:"рок";s:3:"178";s:6:"сно";s:3:"179";s:6:"спо";s:3:"180";s:6:"так";s:3:"181";s:6:"тва";s:3:"182";s:5:"ту ";s:3:"183";s:5:"у п";s:3:"184";s:6:"цтв";s:3:"185";s:6:"ьни";s:3:"186";s:5:"я з";s:3:"187";s:5:"і м";s:3:"188";s:5:"ії ";s:3:"189";s:5:" вс";s:3:"190";s:5:" гр";s:3:"191";s:5:" де";s:3:"192";s:5:" но";s:3:"193";s:5:" па";s:3:"194";s:5:" се";s:3:"195";s:5:" ук";s:3:"196";s:5:" їх";s:3:"197";s:5:"а о";s:3:"198";s:6:"авт";s:3:"199";s:6:"аст";s:3:"200";s:6:"ают";s:3:"201";s:6:"вар";s:3:"202";s:6:"ден";s:3:"203";s:5:"ди ";s:3:"204";s:5:"ду ";s:3:"205";s:6:"зна";s:3:"206";s:5:"и з";s:3:"207";s:6:"ико";s:3:"208";s:6:"ися";s:3:"209";s:6:"ити";s:3:"210";s:6:"ког";s:3:"211";s:6:"мен";s:3:"212";s:6:"ном";s:3:"213";s:5:"ну ";s:3:"214";s:5:"о н";s:3:"215";s:5:"о с";s:3:"216";s:6:"обу";s:3:"217";s:6:"ово";s:3:"218";s:6:"пла";s:3:"219";s:6:"ран";s:3:"220";s:6:"рив";s:3:"221";s:6:"роб";s:3:"222";s:6:"ска";s:3:"223";s:6:"тан";s:3:"224";s:6:"тим";s:3:"225";s:6:"тис";s:3:"226";s:5:"то ";s:3:"227";s:6:"тра";s:3:"228";s:6:"удо";s:3:"229";s:6:"чин";s:3:"230";s:6:"чни";s:3:"231";s:5:"і в";s:3:"232";s:5:"ію ";s:3:"233";s:4:" а ";s:3:"234";s:5:" во";s:3:"235";s:5:" да";s:3:"236";s:5:" кв";s:3:"237";s:5:" ме";s:3:"238";s:5:" об";s:3:"239";s:5:" ск";s:3:"240";s:5:" ти";s:3:"241";s:5:" фі";s:3:"242";s:4:" є ";s:3:"243";s:5:"а р";s:3:"244";s:5:"а с";s:3:"245";s:5:"а у";s:3:"246";s:5:"ак ";s:3:"247";s:6:"ані";s:3:"248";s:6:"арт";s:3:"249";s:6:"асн";s:3:"250";s:5:"в у";s:3:"251";s:6:"вик";s:3:"252";s:6:"віз";s:3:"253";s:6:"дов";s:3:"254";s:6:"дпо";s:3:"255";s:6:"дів";s:3:"256";s:6:"еві";s:3:"257";s:6:"енс";s:3:"258";s:5:"же ";s:3:"259";s:5:"и м";s:3:"260";s:5:"и с";s:3:"261";s:6:"ика";s:3:"262";s:6:"ичн";s:3:"263";s:5:"кі ";s:3:"264";s:6:"ків";s:3:"265";s:6:"між";s:3:"266";s:6:"нан";s:3:"267";s:6:"нос";s:3:"268";s:5:"о у";s:3:"269";s:6:"обл";s:3:"270";s:6:"одн";s:3:"271";s:5:"ок ";s:3:"272";s:6:"оло";s:3:"273";s:6:"отр";s:3:"274";s:6:"рен";s:3:"275";s:6:"рим";s:3:"276";s:6:"роз";s:3:"277";s:5:"сь ";s:3:"278";s:5:"сі ";s:3:"279";s:6:"тла";s:3:"280";s:6:"тів";s:3:"281";s:5:"у з";s:3:"282";s:6:"уго";s:3:"283";s:6:"уді";s:3:"284";s:5:"чи ";s:3:"285";s:5:"ше ";s:3:"286";s:5:"я н";s:3:"287";s:5:"я у";s:3:"288";s:6:"ідп";s:3:"289";s:5:"ій ";s:3:"290";s:6:"іна";s:3:"291";s:5:"ія ";s:3:"292";s:5:" ка";s:3:"293";s:5:" ни";s:3:"294";s:5:" ос";s:3:"295";s:5:" си";s:3:"296";s:5:" то";s:3:"297";s:5:" тр";s:3:"298";s:5:" уг";s:3:"299";}s:4:"urdu";a:300:{s:5:"یں ";s:1:"0";s:5:" کی";s:1:"1";s:5:"کے ";s:1:"2";s:5:" کے";s:1:"3";s:5:"نے ";s:1:"4";s:5:" کہ";s:1:"5";s:5:"ے ک";s:1:"6";s:5:"کی ";s:1:"7";s:6:"میں";s:1:"8";s:5:" می";s:1:"9";s:5:"ہے ";s:2:"10";s:5:"وں ";s:2:"11";s:5:"کہ ";s:2:"12";s:5:" ہے";s:2:"13";s:5:"ان ";s:2:"14";s:6:"ہیں";s:2:"15";s:5:"ور ";s:2:"16";s:5:" کو";s:2:"17";s:5:"یا ";s:2:"18";s:5:" ان";s:2:"19";s:5:" نے";s:2:"20";s:5:"سے ";s:2:"21";s:5:" سے";s:2:"22";s:5:" کر";s:2:"23";s:6:"ستا";s:2:"24";s:5:" او";s:2:"25";s:6:"اور";s:2:"26";s:6:"تان";s:2:"27";s:5:"ر ک";s:2:"28";s:5:"ی ک";s:2:"29";s:5:" اس";s:2:"30";s:5:"ے ا";s:2:"31";s:5:" پا";s:2:"32";s:5:" ہو";s:2:"33";s:5:" پر";s:2:"34";s:5:"رف ";s:2:"35";s:5:" کا";s:2:"36";s:5:"ا ک";s:2:"37";s:5:"ی ا";s:2:"38";s:5:" ہی";s:2:"39";s:5:"در ";s:2:"40";s:5:"کو ";s:2:"41";s:5:" ای";s:2:"42";s:5:"ں ک";s:2:"43";s:5:" مش";s:2:"44";s:5:" مل";s:2:"45";s:5:"ات ";s:2:"46";s:6:"صدر";s:2:"47";s:6:"اکس";s:2:"48";s:6:"شرف";s:2:"49";s:6:"مشر";s:2:"50";s:6:"پاک";s:2:"51";s:6:"کست";s:2:"52";s:5:"ی م";s:2:"53";s:5:" دی";s:2:"54";s:5:" صد";s:2:"55";s:5:" یہ";s:2:"56";s:5:"ا ہ";s:2:"57";s:5:"ن ک";s:2:"58";s:6:"وال";s:2:"59";s:5:"یہ ";s:2:"60";s:5:"ے و";s:2:"61";s:5:" بھ";s:2:"62";s:5:" دو";s:2:"63";s:5:"اس ";s:2:"64";s:5:"ر ا";s:2:"65";s:6:"نہی";s:2:"66";s:5:"کا ";s:2:"67";s:5:"ے س";s:2:"68";s:5:"ئی ";s:2:"69";s:5:"ہ ا";s:2:"70";s:5:"یت ";s:2:"71";s:5:"ے ہ";s:2:"72";s:5:"ت ک";s:2:"73";s:5:" سا";s:2:"74";s:5:"لے ";s:2:"75";s:5:"ہا ";s:2:"76";s:5:"ے ب";s:2:"77";s:5:" وا";s:2:"78";s:5:"ار ";s:2:"79";s:5:"نی ";s:2:"80";s:6:"کہا";s:2:"81";s:5:"ی ہ";s:2:"82";s:5:"ے م";s:2:"83";s:5:" سی";s:2:"84";s:5:" لی";s:2:"85";s:6:"انہ";s:2:"86";s:6:"انی";s:2:"87";s:5:"ر م";s:2:"88";s:5:"ر پ";s:2:"89";s:6:"ریت";s:2:"90";s:5:"ن م";s:2:"91";s:5:"ھا ";s:2:"92";s:5:"یر ";s:2:"93";s:5:" جا";s:2:"94";s:5:" جن";s:2:"95";s:5:"ئے ";s:2:"96";s:5:"پر ";s:2:"97";s:5:"ں ن";s:2:"98";s:5:"ہ ک";s:2:"99";s:5:"ی و";s:3:"100";s:5:"ے د";s:3:"101";s:5:" تو";s:3:"102";s:5:" تھ";s:3:"103";s:5:" گی";s:3:"104";s:6:"ایک";s:3:"105";s:5:"ل ک";s:3:"106";s:5:"نا ";s:3:"107";s:5:"کر ";s:3:"108";s:5:"ں م";s:3:"109";s:5:"یک ";s:3:"110";s:5:" با";s:3:"111";s:5:"ا ت";s:3:"112";s:5:"دی ";s:3:"113";s:5:"ن س";s:3:"114";s:6:"کیا";s:3:"115";s:6:"یوں";s:3:"116";s:5:"ے ج";s:3:"117";s:5:"ال ";s:3:"118";s:5:"تو ";s:3:"119";s:5:"ں ا";s:3:"120";s:5:"ے پ";s:3:"121";s:5:" چا";s:3:"122";s:5:"ام ";s:3:"123";s:6:"بھی";s:3:"124";s:5:"تی ";s:3:"125";s:5:"تے ";s:3:"126";s:6:"دوس";s:3:"127";s:5:"س ک";s:3:"128";s:6:"ملک";s:3:"129";s:5:"ن ا";s:3:"130";s:6:"ہور";s:3:"131";s:5:"یے ";s:3:"132";s:5:" مو";s:3:"133";s:5:" وک";s:3:"134";s:6:"ائی";s:3:"135";s:6:"ارت";s:3:"136";s:6:"الے";s:3:"137";s:6:"بھا";s:3:"138";s:6:"ردی";s:3:"139";s:5:"ری ";s:3:"140";s:5:"وہ ";s:3:"141";s:6:"ویز";s:3:"142";s:5:"ں د";s:3:"143";s:5:"ھی ";s:3:"144";s:5:"ی س";s:3:"145";s:5:" رہ";s:3:"146";s:5:" من";s:3:"147";s:5:" نہ";s:3:"148";s:5:" ور";s:3:"149";s:5:" وہ";s:3:"150";s:5:" ہن";s:3:"151";s:5:"ا ا";s:3:"152";s:6:"است";s:3:"153";s:5:"ت ا";s:3:"154";s:5:"ت پ";s:3:"155";s:5:"د ک";s:3:"156";s:5:"ز م";s:3:"157";s:5:"ند ";s:3:"158";s:6:"ورد";s:3:"159";s:6:"وکل";s:3:"160";s:5:"گی ";s:3:"161";s:6:"گیا";s:3:"162";s:5:"ہ پ";s:3:"163";s:5:"یز ";s:3:"164";s:5:"ے ت";s:3:"165";s:5:" اع";s:3:"166";s:5:" اپ";s:3:"167";s:5:" جس";s:3:"168";s:5:" جم";s:3:"169";s:5:" جو";s:3:"170";s:5:" سر";s:3:"171";s:6:"اپن";s:3:"172";s:6:"اکث";s:3:"173";s:6:"تھا";s:3:"174";s:6:"ثری";s:3:"175";s:6:"دیا";s:3:"176";s:5:"ر د";s:3:"177";s:5:"رت ";s:3:"178";s:6:"روی";s:3:"179";s:5:"سی ";s:3:"180";s:6:"ملا";s:3:"181";s:6:"ندو";s:3:"182";s:6:"وست";s:3:"183";s:6:"پرو";s:3:"184";s:6:"چاہ";s:3:"185";s:6:"کثر";s:3:"186";s:6:"کلا";s:3:"187";s:5:"ہ ہ";s:3:"188";s:6:"ہند";s:3:"189";s:5:"ہو ";s:3:"190";s:5:"ے ل";s:3:"191";s:5:" اک";s:3:"192";s:5:" دا";s:3:"193";s:5:" سن";s:3:"194";s:5:" وز";s:3:"195";s:5:" پی";s:3:"196";s:5:"ا چ";s:3:"197";s:5:"اء ";s:3:"198";s:6:"اتھ";s:3:"199";s:6:"اقا";s:3:"200";s:5:"اہ ";s:3:"201";s:5:"تھ ";s:3:"202";s:5:"دو ";s:3:"203";s:5:"ر ب";s:3:"204";s:6:"روا";s:3:"205";s:5:"رے ";s:3:"206";s:6:"سات";s:3:"207";s:5:"ف ک";s:3:"208";s:6:"قات";s:3:"209";s:5:"لا ";s:3:"210";s:6:"لاء";s:3:"211";s:5:"م م";s:3:"212";s:5:"م ک";s:3:"213";s:5:"من ";s:3:"214";s:6:"نوں";s:3:"215";s:5:"و ا";s:3:"216";s:6:"کرن";s:3:"217";s:5:"ں ہ";s:3:"218";s:6:"ھار";s:3:"219";s:6:"ہوئ";s:3:"220";s:5:"ہی ";s:3:"221";s:5:"یش ";s:3:"222";s:5:" ام";s:3:"223";s:5:" لا";s:3:"224";s:5:" مس";s:3:"225";s:5:" پو";s:3:"226";s:5:" پہ";s:3:"227";s:6:"انے";s:3:"228";s:5:"ت م";s:3:"229";s:5:"ت ہ";s:3:"230";s:5:"ج ک";s:3:"231";s:6:"دون";s:3:"232";s:6:"زیر";s:3:"233";s:5:"س س";s:3:"234";s:5:"ش ک";s:3:"235";s:5:"ف ن";s:3:"236";s:5:"ل ہ";s:3:"237";s:6:"لاق";s:3:"238";s:5:"لی ";s:3:"239";s:6:"وری";s:3:"240";s:6:"وزی";s:3:"241";s:6:"ونو";s:3:"242";s:6:"کھن";s:3:"243";s:5:"گا ";s:3:"244";s:5:"ں س";s:3:"245";s:5:"ں گ";s:3:"246";s:6:"ھنے";s:3:"247";s:5:"ھے ";s:3:"248";s:5:"ہ ب";s:3:"249";s:5:"ہ ج";s:3:"250";s:5:"ہر ";s:3:"251";s:5:"ی آ";s:3:"252";s:5:"ی پ";s:3:"253";s:5:" حا";s:3:"254";s:5:" وف";s:3:"255";s:5:" گا";s:3:"256";s:5:"ا ج";s:3:"257";s:5:"ا گ";s:3:"258";s:5:"اد ";s:3:"259";s:6:"ادی";s:3:"260";s:6:"اعظ";s:3:"261";s:6:"اہت";s:3:"262";s:5:"جس ";s:3:"263";s:6:"جمہ";s:3:"264";s:5:"جو ";s:3:"265";s:5:"ر س";s:3:"266";s:5:"ر ہ";s:3:"267";s:6:"رنے";s:3:"268";s:5:"س م";s:3:"269";s:5:"سا ";s:3:"270";s:6:"سند";s:3:"271";s:6:"سنگ";s:3:"272";s:5:"ظم ";s:3:"273";s:6:"عظم";s:3:"274";s:5:"ل م";s:3:"275";s:6:"لیے";s:3:"276";s:5:"مل ";s:3:"277";s:6:"موہ";s:3:"278";s:6:"مہو";s:3:"279";s:6:"نگھ";s:3:"280";s:5:"و ص";s:3:"281";s:6:"ورٹ";s:3:"282";s:6:"وہن";s:3:"283";s:5:"کن ";s:3:"284";s:5:"گھ ";s:3:"285";s:5:"گے ";s:3:"286";s:5:"ں ج";s:3:"287";s:5:"ں و";s:3:"288";s:5:"ں ی";s:3:"289";s:5:"ہ د";s:3:"290";s:5:"ہن ";s:3:"291";s:6:"ہوں";s:3:"292";s:5:"ے ح";s:3:"293";s:5:"ے گ";s:3:"294";s:5:"ے ی";s:3:"295";s:5:" اگ";s:3:"296";s:5:" بع";s:3:"297";s:5:" رو";s:3:"298";s:5:" شا";s:3:"299";}s:5:"uzbek";a:300:{s:5:"ан ";s:1:"0";s:6:"ган";s:1:"1";s:6:"лар";s:1:"2";s:5:"га ";s:1:"3";s:5:"нг ";s:1:"4";s:6:"инг";s:1:"5";s:6:"нин";s:1:"6";s:5:"да ";s:1:"7";s:5:"ни ";s:1:"8";s:6:"ида";s:1:"9";s:6:"ари";s:2:"10";s:6:"ига";s:2:"11";s:6:"ини";s:2:"12";s:5:"ар ";s:2:"13";s:5:"ди ";s:2:"14";s:5:" би";s:2:"15";s:6:"ани";s:2:"16";s:5:" бо";s:2:"17";s:6:"дан";s:2:"18";s:6:"лга";s:2:"19";s:5:" ҳа";s:2:"20";s:5:" ва";s:2:"21";s:5:" са";s:2:"22";s:5:"ги ";s:2:"23";s:6:"ила";s:2:"24";s:5:"н б";s:2:"25";s:5:"и б";s:2:"26";s:5:" кў";s:2:"27";s:5:" та";s:2:"28";s:5:"ир ";s:2:"29";s:5:" ма";s:2:"30";s:6:"ага";s:2:"31";s:6:"ала";s:2:"32";s:6:"бир";s:2:"33";s:5:"ри ";s:2:"34";s:6:"тга";s:2:"35";s:6:"лан";s:2:"36";s:6:"лик";s:2:"37";s:5:"а к";s:2:"38";s:6:"аги";s:2:"39";s:6:"ати";s:2:"40";s:5:"та ";s:2:"41";s:6:"ади";s:2:"42";s:6:"даг";s:2:"43";s:6:"рга";s:2:"44";s:5:" йи";s:2:"45";s:5:" ми";s:2:"46";s:5:" па";s:2:"47";s:5:" бў";s:2:"48";s:5:" қа";s:2:"49";s:5:" қи";s:2:"50";s:5:"а б";s:2:"51";s:6:"илл";s:2:"52";s:5:"ли ";s:2:"53";s:6:"аси";s:2:"54";s:5:"и т";s:2:"55";s:5:"ик ";s:2:"56";s:6:"или";s:2:"57";s:6:"лла";s:2:"58";s:6:"ард";s:2:"59";s:6:"вчи";s:2:"60";s:5:"ва ";s:2:"61";s:5:"иб ";s:2:"62";s:6:"ири";s:2:"63";s:6:"лиг";s:2:"64";s:6:"нга";s:2:"65";s:6:"ран";s:2:"66";s:5:" ке";s:2:"67";s:5:" ўз";s:2:"68";s:5:"а с";s:2:"69";s:6:"ахт";s:2:"70";s:6:"бўл";s:2:"71";s:6:"иги";s:2:"72";s:6:"кўр";s:2:"73";s:6:"рда";s:2:"74";s:6:"рни";s:2:"75";s:5:"са ";s:2:"76";s:5:" бе";s:2:"77";s:5:" бу";s:2:"78";s:5:" да";s:2:"79";s:5:" жа";s:2:"80";s:5:"а т";s:2:"81";s:6:"ази";s:2:"82";s:6:"ери";s:2:"83";s:5:"и а";s:2:"84";s:6:"илг";s:2:"85";s:6:"йил";s:2:"86";s:6:"ман";s:2:"87";s:6:"пах";s:2:"88";s:6:"рид";s:2:"89";s:5:"ти ";s:2:"90";s:6:"увч";s:2:"91";s:6:"хта";s:2:"92";s:5:" не";s:2:"93";s:5:" со";s:2:"94";s:5:" уч";s:2:"95";s:6:"айт";s:2:"96";s:6:"лли";s:2:"97";s:6:"тла";s:2:"98";s:5:" ай";s:2:"99";s:5:" фр";s:3:"100";s:5:" эт";s:3:"101";s:5:" ҳо";s:3:"102";s:5:"а қ";s:3:"103";s:6:"али";s:3:"104";s:6:"аро";s:3:"105";s:6:"бер";s:3:"106";s:6:"бил";s:3:"107";s:6:"бор";s:3:"108";s:6:"ими";s:3:"109";s:6:"ист";s:3:"110";s:5:"он ";s:3:"111";s:6:"рин";s:3:"112";s:6:"тер";s:3:"113";s:6:"тил";s:3:"114";s:5:"ун ";s:3:"115";s:6:"фра";s:3:"116";s:6:"қил";s:3:"117";s:5:" ба";s:3:"118";s:5:" ол";s:3:"119";s:6:"анс";s:3:"120";s:6:"ефт";s:3:"121";s:6:"зир";s:3:"122";s:6:"кат";s:3:"123";s:6:"мил";s:3:"124";s:6:"неф";s:3:"125";s:6:"саг";s:3:"126";s:5:"чи ";s:3:"127";s:6:"ўра";s:3:"128";s:5:" на";s:3:"129";s:5:" те";s:3:"130";s:5:" эн";s:3:"131";s:5:"а э";s:3:"132";s:5:"ам ";s:3:"133";s:6:"арн";s:3:"134";s:5:"ат ";s:3:"135";s:5:"иш ";s:3:"136";s:5:"ма ";s:3:"137";s:6:"нла";s:3:"138";s:6:"рли";s:3:"139";s:6:"чил";s:3:"140";s:6:"шга";s:3:"141";s:5:" иш";s:3:"142";s:5:" му";s:3:"143";s:5:" ўқ";s:3:"144";s:6:"ара";s:3:"145";s:6:"ваз";s:3:"146";s:5:"и у";s:3:"147";s:5:"иқ ";s:3:"148";s:6:"моқ";s:3:"149";s:6:"рим";s:3:"150";s:6:"учу";s:3:"151";s:6:"чун";s:3:"152";s:5:"ши ";s:3:"153";s:6:"энг";s:3:"154";s:6:"қув";s:3:"155";s:6:"ҳам";s:3:"156";s:5:" сў";s:3:"157";s:5:" ши";s:3:"158";s:6:"бар";s:3:"159";s:6:"бек";s:3:"160";s:6:"дам";s:3:"161";s:5:"и ҳ";s:3:"162";s:6:"иши";s:3:"163";s:6:"лад";s:3:"164";s:6:"оли";s:3:"165";s:6:"олл";s:3:"166";s:6:"ори";s:3:"167";s:6:"оқд";s:3:"168";s:5:"р б";s:3:"169";s:5:"ра ";s:3:"170";s:6:"рла";s:3:"171";s:6:"уни";s:3:"172";s:5:"фт ";s:3:"173";s:6:"ўлг";s:3:"174";s:6:"ўқу";s:3:"175";s:5:" де";s:3:"176";s:5:" ка";s:3:"177";s:5:" қў";s:3:"178";s:5:"а ў";s:3:"179";s:6:"аба";s:3:"180";s:6:"амм";s:3:"181";s:6:"атл";s:3:"182";s:5:"б к";s:3:"183";s:6:"бош";s:3:"184";s:6:"збе";s:3:"185";s:5:"и в";s:3:"186";s:5:"им ";s:3:"187";s:5:"ин ";s:3:"188";s:6:"ишл";s:3:"189";s:6:"лаб";s:3:"190";s:6:"лей";s:3:"191";s:6:"мин";s:3:"192";s:5:"н д";s:3:"193";s:6:"нда";s:3:"194";s:5:"оқ ";s:3:"195";s:5:"р м";s:3:"196";s:6:"рил";s:3:"197";s:6:"сид";s:3:"198";s:6:"тал";s:3:"199";s:6:"тан";s:3:"200";s:6:"тид";s:3:"201";s:6:"тон";s:3:"202";s:6:"ўзб";s:3:"203";s:5:" ам";s:3:"204";s:5:" ки";s:3:"205";s:5:"а ҳ";s:3:"206";s:6:"анг";s:3:"207";s:6:"анд";s:3:"208";s:6:"арт";s:3:"209";s:6:"аёт";s:3:"210";s:6:"дир";s:3:"211";s:6:"ент";s:3:"212";s:5:"и д";s:3:"213";s:5:"и м";s:3:"214";s:5:"и о";s:3:"215";s:5:"и э";s:3:"216";s:6:"иро";s:3:"217";s:6:"йти";s:3:"218";s:6:"нсу";s:3:"219";s:6:"оди";s:3:"220";s:5:"ор ";s:3:"221";s:5:"си ";s:3:"222";s:6:"тиш";s:3:"223";s:6:"тоб";s:3:"224";s:6:"эти";s:3:"225";s:6:"қар";s:3:"226";s:6:"қда";s:3:"227";s:5:" бл";s:3:"228";s:5:" ге";s:3:"229";s:5:" до";s:3:"230";s:5:" ду";s:3:"231";s:5:" но";s:3:"232";s:5:" пр";s:3:"233";s:5:" ра";s:3:"234";s:5:" фо";s:3:"235";s:5:" қо";s:3:"236";s:5:"а м";s:3:"237";s:5:"а о";s:3:"238";s:6:"айд";s:3:"239";s:6:"ало";s:3:"240";s:6:"ама";s:3:"241";s:6:"бле";s:3:"242";s:5:"г н";s:3:"243";s:6:"дол";s:3:"244";s:6:"ейр";s:3:"245";s:5:"ек ";s:3:"246";s:6:"ерг";s:3:"247";s:6:"жар";s:3:"248";s:6:"зид";s:3:"249";s:5:"и к";s:3:"250";s:5:"и ф";s:3:"251";s:5:"ий ";s:3:"252";s:6:"ило";s:3:"253";s:6:"лди";s:3:"254";s:6:"либ";s:3:"255";s:6:"лин";s:3:"256";s:5:"ми ";s:3:"257";s:6:"мма";s:3:"258";s:5:"н в";s:3:"259";s:5:"н к";s:3:"260";s:5:"н ў";s:3:"261";s:5:"н ҳ";s:3:"262";s:6:"ози";s:3:"263";s:6:"ора";s:3:"264";s:6:"оси";s:3:"265";s:6:"рас";s:3:"266";s:6:"риш";s:3:"267";s:6:"рка";s:3:"268";s:6:"роқ";s:3:"269";s:6:"сто";s:3:"270";s:6:"тин";s:3:"271";s:6:"хат";s:3:"272";s:6:"шир";s:3:"273";s:5:" ав";s:3:"274";s:5:" рў";s:3:"275";s:5:" ту";s:3:"276";s:5:" ўт";s:3:"277";s:5:"а п";s:3:"278";s:6:"авт";s:3:"279";s:6:"ада";s:3:"280";s:6:"аза";s:3:"281";s:6:"анл";s:3:"282";s:5:"б б";s:3:"283";s:6:"бой";s:3:"284";s:5:"бу ";s:3:"285";s:6:"вто";s:3:"286";s:5:"г э";s:3:"287";s:6:"гин";s:3:"288";s:6:"дар";s:3:"289";s:6:"ден";s:3:"290";s:6:"дун";s:3:"291";s:6:"иде";s:3:"292";s:6:"ион";s:3:"293";s:6:"ирл";s:3:"294";s:6:"ишг";s:3:"295";s:6:"йха";s:3:"296";s:6:"кел";s:3:"297";s:6:"кўп";s:3:"298";s:6:"лио";s:3:"299";}s:10:"vietnamese";a:300:{s:3:"ng ";s:1:"0";s:3:" th";s:1:"1";s:3:" ch";s:1:"2";s:3:"g t";s:1:"3";s:3:" nh";s:1:"4";s:4:"ông";s:1:"5";s:3:" kh";s:1:"6";s:3:" tr";s:1:"7";s:3:"nh ";s:1:"8";s:4:" cô";s:1:"9";s:4:"côn";s:2:"10";s:3:" ty";s:2:"11";s:3:"ty ";s:2:"12";s:3:"i t";s:2:"13";s:3:"n t";s:2:"14";s:3:" ng";s:2:"15";s:5:"ại ";s:2:"16";s:3:" ti";s:2:"17";s:3:"ch ";s:2:"18";s:3:"y l";s:2:"19";s:5:"ền ";s:2:"20";s:5:" đư";s:2:"21";s:3:"hi ";s:2:"22";s:5:" gở";s:2:"23";s:5:"gởi";s:2:"24";s:5:"iền";s:2:"25";s:5:"tiề";s:2:"26";s:5:"ởi ";s:2:"27";s:3:" gi";s:2:"28";s:3:" le";s:2:"29";s:3:" vi";s:2:"30";s:3:"cho";s:2:"31";s:3:"ho ";s:2:"32";s:4:"khá";s:2:"33";s:4:" và";s:2:"34";s:4:"hác";s:2:"35";s:3:" ph";s:2:"36";s:3:"am ";s:2:"37";s:4:"hàn";s:2:"38";s:4:"ách";s:2:"39";s:4:"ôi ";s:2:"40";s:3:"i n";s:2:"41";s:6:"ược";s:2:"42";s:5:"ợc ";s:2:"43";s:4:" tô";s:2:"44";s:4:"chú";s:2:"45";s:5:"iệt";s:2:"46";s:4:"tôi";s:2:"47";s:4:"ên ";s:2:"48";s:4:"úng";s:2:"49";s:5:"ệt ";s:2:"50";s:4:" có";s:2:"51";s:3:"c t";s:2:"52";s:4:"có ";s:2:"53";s:4:"hún";s:2:"54";s:5:"việ";s:2:"55";s:7:"đượ";s:2:"56";s:3:" na";s:2:"57";s:3:"g c";s:2:"58";s:3:"i c";s:2:"59";s:3:"n c";s:2:"60";s:3:"n n";s:2:"61";s:3:"t n";s:2:"62";s:4:"và ";s:2:"63";s:3:"n l";s:2:"64";s:4:"n đ";s:2:"65";s:4:"àng";s:2:"66";s:4:"ác ";s:2:"67";s:5:"ất ";s:2:"68";s:3:"h l";s:2:"69";s:3:"nam";s:2:"70";s:4:"ân ";s:2:"71";s:4:"ăm ";s:2:"72";s:4:" hà";s:2:"73";s:4:" là";s:2:"74";s:4:" nă";s:2:"75";s:3:" qu";s:2:"76";s:5:" tạ";s:2:"77";s:3:"g m";s:2:"78";s:4:"năm";s:2:"79";s:5:"tại";s:2:"80";s:5:"ới ";s:2:"81";s:5:" lẹ";s:2:"82";s:3:"ay ";s:2:"83";s:3:"e g";s:2:"84";s:3:"h h";s:2:"85";s:3:"i v";s:2:"86";s:4:"i đ";s:2:"87";s:3:"le ";s:2:"88";s:5:"lẹ ";s:2:"89";s:5:"ều ";s:2:"90";s:5:"ời ";s:2:"91";s:4:"hân";s:2:"92";s:3:"nhi";s:2:"93";s:3:"t t";s:2:"94";s:5:" củ";s:2:"95";s:5:" mộ";s:2:"96";s:5:" về";s:2:"97";s:4:" đi";s:2:"98";s:3:"an ";s:2:"99";s:5:"của";s:3:"100";s:4:"là ";s:3:"101";s:5:"một";s:3:"102";s:5:"về ";s:3:"103";s:4:"ành";s:3:"104";s:5:"ết ";s:3:"105";s:5:"ột ";s:3:"106";s:5:"ủa ";s:3:"107";s:3:" bi";s:3:"108";s:4:" cá";s:3:"109";s:3:"a c";s:3:"110";s:3:"anh";s:3:"111";s:4:"các";s:3:"112";s:3:"h c";s:3:"113";s:5:"iều";s:3:"114";s:3:"m t";s:3:"115";s:5:"ện ";s:3:"116";s:3:" ho";s:3:"117";s:3:"'s ";s:3:"118";s:3:"ave";s:3:"119";s:3:"e's";s:3:"120";s:3:"el ";s:3:"121";s:3:"g n";s:3:"122";s:3:"le'";s:3:"123";s:3:"n v";s:3:"124";s:3:"o c";s:3:"125";s:3:"rav";s:3:"126";s:3:"s t";s:3:"127";s:3:"thi";s:3:"128";s:3:"tra";s:3:"129";s:3:"vel";s:3:"130";s:5:"ận ";s:3:"131";s:5:"ến ";s:3:"132";s:3:" ba";s:3:"133";s:3:" cu";s:3:"134";s:3:" sa";s:3:"135";s:5:" đó";s:3:"136";s:6:" đế";s:3:"137";s:3:"c c";s:3:"138";s:3:"chu";s:3:"139";s:5:"hiề";s:3:"140";s:3:"huy";s:3:"141";s:3:"khi";s:3:"142";s:4:"nhâ";s:3:"143";s:4:"như";s:3:"144";s:3:"ong";s:3:"145";s:3:"ron";s:3:"146";s:3:"thu";s:3:"147";s:4:"thư";s:3:"148";s:3:"tro";s:3:"149";s:3:"y c";s:3:"150";s:4:"ày ";s:3:"151";s:6:"đến";s:3:"152";s:6:"ười";s:3:"153";s:6:"ườn";s:3:"154";s:5:"ề v";s:3:"155";s:5:"ờng";s:3:"156";s:5:" vớ";s:3:"157";s:5:"cuộ";s:3:"158";s:4:"g đ";s:3:"159";s:5:"iết";s:3:"160";s:5:"iện";s:3:"161";s:4:"ngà";s:3:"162";s:3:"o t";s:3:"163";s:3:"u c";s:3:"164";s:5:"uộc";s:3:"165";s:5:"với";s:3:"166";s:4:"à c";s:3:"167";s:4:"ài ";s:3:"168";s:4:"ơng";s:3:"169";s:5:"ươn";s:3:"170";s:5:"ải ";s:3:"171";s:5:"ộc ";s:3:"172";s:5:"ức ";s:3:"173";s:3:" an";s:3:"174";s:5:" lậ";s:3:"175";s:3:" ra";s:3:"176";s:5:" sẽ";s:3:"177";s:5:" số";s:3:"178";s:5:" tổ";s:3:"179";s:3:"a k";s:3:"180";s:5:"biế";s:3:"181";s:3:"c n";s:3:"182";s:4:"c đ";s:3:"183";s:5:"chứ";s:3:"184";s:3:"g v";s:3:"185";s:3:"gia";s:3:"186";s:4:"gày";s:3:"187";s:4:"hán";s:3:"188";s:4:"hôn";s:3:"189";s:4:"hư ";s:3:"190";s:5:"hức";s:3:"191";s:3:"i g";s:3:"192";s:3:"i h";s:3:"193";s:3:"i k";s:3:"194";s:3:"i p";s:3:"195";s:4:"iên";s:3:"196";s:4:"khô";s:3:"197";s:5:"lập";s:3:"198";s:3:"n k";s:3:"199";s:3:"ra ";s:3:"200";s:4:"rên";s:3:"201";s:5:"sẽ ";s:3:"202";s:3:"t c";s:3:"203";s:4:"thà";s:3:"204";s:4:"trê";s:3:"205";s:5:"tổ ";s:3:"206";s:3:"u n";s:3:"207";s:3:"y t";s:3:"208";s:4:"ình";s:3:"209";s:5:"ấy ";s:3:"210";s:5:"ập ";s:3:"211";s:5:"ổ c";s:3:"212";s:4:" má";s:3:"213";s:6:" để";s:3:"214";s:3:"ai ";s:3:"215";s:3:"c s";s:3:"216";s:6:"gườ";s:3:"217";s:3:"h v";s:3:"218";s:3:"hoa";s:3:"219";s:5:"hoạ";s:3:"220";s:3:"inh";s:3:"221";s:3:"m n";s:3:"222";s:4:"máy";s:3:"223";s:3:"n g";s:3:"224";s:4:"ngư";s:3:"225";s:5:"nhậ";s:3:"226";s:3:"o n";s:3:"227";s:3:"oa ";s:3:"228";s:4:"oàn";s:3:"229";s:3:"p c";s:3:"230";s:5:"số ";s:3:"231";s:4:"t đ";s:3:"232";s:3:"y v";s:3:"233";s:4:"ào ";s:3:"234";s:4:"áy ";s:3:"235";s:4:"ăn ";s:3:"236";s:5:"đó ";s:3:"237";s:6:"để ";s:3:"238";s:6:"ước";s:3:"239";s:5:"ần ";s:3:"240";s:5:"ển ";s:3:"241";s:5:"ớc ";s:3:"242";s:4:" bá";s:3:"243";s:4:" cơ";s:3:"244";s:5:" cả";s:3:"245";s:5:" cầ";s:3:"246";s:5:" họ";s:3:"247";s:5:" kỳ";s:3:"248";s:3:" li";s:3:"249";s:5:" mạ";s:3:"250";s:5:" sở";s:3:"251";s:5:" tặ";s:3:"252";s:4:" vé";s:3:"253";s:5:" vụ";s:3:"254";s:6:" đạ";s:3:"255";s:4:"a đ";s:3:"256";s:3:"bay";s:3:"257";s:4:"cơ ";s:3:"258";s:3:"g s";s:3:"259";s:3:"han";s:3:"260";s:5:"hươ";s:3:"261";s:3:"i s";s:3:"262";s:5:"kỳ ";s:3:"263";s:3:"m c";s:3:"264";s:3:"n m";s:3:"265";s:3:"n p";s:3:"266";s:3:"o b";s:3:"267";s:5:"oại";s:3:"268";s:3:"qua";s:3:"269";s:5:"sở ";s:3:"270";s:3:"tha";s:3:"271";s:4:"thá";s:3:"272";s:5:"tặn";s:3:"273";s:4:"vào";s:3:"274";s:4:"vé ";s:3:"275";s:5:"vụ ";s:3:"276";s:3:"y b";s:3:"277";s:4:"àn ";s:3:"278";s:4:"áng";s:3:"279";s:4:"ơ s";s:3:"280";s:5:"ầu ";s:3:"281";s:5:"ật ";s:3:"282";s:5:"ặng";s:3:"283";s:5:"ọc ";s:3:"284";s:5:"ở t";s:3:"285";s:5:"ững";s:3:"286";s:3:" du";s:3:"287";s:3:" lu";s:3:"288";s:3:" ta";s:3:"289";s:3:" to";s:3:"290";s:5:" từ";s:3:"291";s:5:" ở ";s:3:"292";s:3:"a v";s:3:"293";s:3:"ao ";s:3:"294";s:3:"c v";s:3:"295";s:5:"cả ";s:3:"296";s:3:"du ";s:3:"297";s:3:"g l";s:3:"298";s:5:"giả";s:3:"299";}s:5:"welsh";a:300:{s:3:"yn ";s:1:"0";s:3:"dd ";s:1:"1";s:3:" yn";s:1:"2";s:3:" y ";s:1:"3";s:3:"ydd";s:1:"4";s:3:"eth";s:1:"5";s:3:"th ";s:1:"6";s:3:" i ";s:1:"7";s:3:"aet";s:1:"8";s:3:"d y";s:1:"9";s:3:"ch ";s:2:"10";s:3:"od ";s:2:"11";s:3:"ol ";s:2:"12";s:3:"edd";s:2:"13";s:3:" ga";s:2:"14";s:3:" gw";s:2:"15";s:3:"'r ";s:2:"16";s:3:"au ";s:2:"17";s:3:"ddi";s:2:"18";s:3:"ad ";s:2:"19";s:3:" cy";s:2:"20";s:3:" gy";s:2:"21";s:3:" ei";s:2:"22";s:3:" o ";s:2:"23";s:3:"iad";s:2:"24";s:3:"yr ";s:2:"25";s:3:"an ";s:2:"26";s:3:"bod";s:2:"27";s:3:"wed";s:2:"28";s:3:" bo";s:2:"29";s:3:" dd";s:2:"30";s:3:"el ";s:2:"31";s:3:"n y";s:2:"32";s:3:" am";s:2:"33";s:3:"di ";s:2:"34";s:3:"edi";s:2:"35";s:3:"on ";s:2:"36";s:3:" we";s:2:"37";s:3:" ym";s:2:"38";s:3:" ar";s:2:"39";s:3:" rh";s:2:"40";s:3:"odd";s:2:"41";s:3:" ca";s:2:"42";s:3:" ma";s:2:"43";s:3:"ael";s:2:"44";s:3:"oed";s:2:"45";s:3:"dae";s:2:"46";s:3:"n a";s:2:"47";s:3:"dda";s:2:"48";s:3:"er ";s:2:"49";s:3:"h y";s:2:"50";s:3:"all";s:2:"51";s:3:"ei ";s:2:"52";s:3:" ll";s:2:"53";s:3:"am ";s:2:"54";s:3:"eu ";s:2:"55";s:3:"fod";s:2:"56";s:3:"fyd";s:2:"57";s:3:"l y";s:2:"58";s:3:"n g";s:2:"59";s:3:"wyn";s:2:"60";s:3:"d a";s:2:"61";s:3:"i g";s:2:"62";s:3:"mae";s:2:"63";s:3:"neu";s:2:"64";s:3:"os ";s:2:"65";s:3:" ne";s:2:"66";s:3:"d i";s:2:"67";s:3:"dod";s:2:"68";s:3:"dol";s:2:"69";s:3:"n c";s:2:"70";s:3:"r h";s:2:"71";s:3:"wyd";s:2:"72";s:3:"wyr";s:2:"73";s:3:"ai ";s:2:"74";s:3:"ar ";s:2:"75";s:3:"in ";s:2:"76";s:3:"rth";s:2:"77";s:3:" fy";s:2:"78";s:3:" he";s:2:"79";s:3:" me";s:2:"80";s:3:" yr";s:2:"81";s:3:"'n ";s:2:"82";s:3:"dia";s:2:"83";s:3:"est";s:2:"84";s:3:"h c";s:2:"85";s:3:"hai";s:2:"86";s:3:"i d";s:2:"87";s:3:"id ";s:2:"88";s:3:"r y";s:2:"89";s:3:"y b";s:2:"90";s:3:" dy";s:2:"91";s:3:" ha";s:2:"92";s:3:"ada";s:2:"93";s:3:"i b";s:2:"94";s:3:"n i";s:2:"95";s:3:"ote";s:2:"96";s:3:"rot";s:2:"97";s:3:"tes";s:2:"98";s:3:"y g";s:2:"99";s:3:"yd ";s:3:"100";s:3:" ad";s:3:"101";s:3:" mr";s:3:"102";s:3:" un";s:3:"103";s:3:"cyn";s:3:"104";s:3:"dau";s:3:"105";s:3:"ddy";s:3:"106";s:3:"edo";s:3:"107";s:3:"i c";s:3:"108";s:3:"i w";s:3:"109";s:3:"ith";s:3:"110";s:3:"lae";s:3:"111";s:3:"lla";s:3:"112";s:3:"nd ";s:3:"113";s:3:"oda";s:3:"114";s:3:"ryd";s:3:"115";s:3:"tho";s:3:"116";s:3:" a ";s:3:"117";s:3:" dr";s:3:"118";s:3:"aid";s:3:"119";s:3:"ain";s:3:"120";s:3:"ddo";s:3:"121";s:3:"dyd";s:3:"122";s:3:"fyn";s:3:"123";s:3:"gyn";s:3:"124";s:3:"hol";s:3:"125";s:3:"io ";s:3:"126";s:3:"o a";s:3:"127";s:3:"wch";s:3:"128";s:3:"wyb";s:3:"129";s:3:"ybo";s:3:"130";s:3:"ych";s:3:"131";s:3:" br";s:3:"132";s:3:" by";s:3:"133";s:3:" di";s:3:"134";s:3:" fe";s:3:"135";s:3:" na";s:3:"136";s:3:" o'";s:3:"137";s:3:" pe";s:3:"138";s:3:"art";s:3:"139";s:3:"byd";s:3:"140";s:3:"dro";s:3:"141";s:3:"gal";s:3:"142";s:3:"l e";s:3:"143";s:3:"lai";s:3:"144";s:3:"mr ";s:3:"145";s:3:"n n";s:3:"146";s:3:"r a";s:3:"147";s:3:"rhy";s:3:"148";s:3:"wn ";s:3:"149";s:3:"ynn";s:3:"150";s:3:" on";s:3:"151";s:3:" r ";s:3:"152";s:3:"cae";s:3:"153";s:3:"d g";s:3:"154";s:3:"d o";s:3:"155";s:3:"d w";s:3:"156";s:3:"gan";s:3:"157";s:3:"gwy";s:3:"158";s:3:"n d";s:3:"159";s:3:"n f";s:3:"160";s:3:"n o";s:3:"161";s:3:"ned";s:3:"162";s:3:"ni ";s:3:"163";s:3:"o'r";s:3:"164";s:3:"r d";s:3:"165";s:3:"ud ";s:3:"166";s:3:"wei";s:3:"167";s:3:"wrt";s:3:"168";s:3:" an";s:3:"169";s:3:" cw";s:3:"170";s:3:" da";s:3:"171";s:3:" ni";s:3:"172";s:3:" pa";s:3:"173";s:3:" pr";s:3:"174";s:3:" wy";s:3:"175";s:3:"d e";s:3:"176";s:3:"dai";s:3:"177";s:3:"dim";s:3:"178";s:3:"eud";s:3:"179";s:3:"gwa";s:3:"180";s:3:"idd";s:3:"181";s:3:"im ";s:3:"182";s:3:"iri";s:3:"183";s:3:"lwy";s:3:"184";s:3:"n b";s:3:"185";s:3:"nol";s:3:"186";s:3:"r o";s:3:"187";s:3:"rwy";s:3:"188";s:3:" ch";s:3:"189";s:3:" er";s:3:"190";s:3:" fo";s:3:"191";s:3:" ge";s:3:"192";s:3:" hy";s:3:"193";s:3:" i'";s:3:"194";s:3:" ro";s:3:"195";s:3:" sa";s:3:"196";s:3:" tr";s:3:"197";s:3:"bob";s:3:"198";s:3:"cwy";s:3:"199";s:3:"cyf";s:3:"200";s:3:"dio";s:3:"201";s:3:"dyn";s:3:"202";s:3:"eit";s:3:"203";s:3:"hel";s:3:"204";s:3:"hyn";s:3:"205";s:3:"ich";s:3:"206";s:3:"ll ";s:3:"207";s:3:"mdd";s:3:"208";s:3:"n r";s:3:"209";s:3:"ond";s:3:"210";s:3:"pro";s:3:"211";s:3:"r c";s:3:"212";s:3:"r g";s:3:"213";s:3:"red";s:3:"214";s:3:"rha";s:3:"215";s:3:"u a";s:3:"216";s:3:"u c";s:3:"217";s:3:"u y";s:3:"218";s:3:"y c";s:3:"219";s:3:"ymd";s:3:"220";s:3:"ymr";s:3:"221";s:3:"yw ";s:3:"222";s:3:" ac";s:3:"223";s:3:" be";s:3:"224";s:3:" bl";s:3:"225";s:3:" co";s:3:"226";s:3:" os";s:3:"227";s:3:"adw";s:3:"228";s:3:"ae ";s:3:"229";s:3:"af ";s:3:"230";s:3:"d p";s:3:"231";s:3:"efn";s:3:"232";s:3:"eic";s:3:"233";s:3:"en ";s:3:"234";s:3:"eol";s:3:"235";s:3:"es ";s:3:"236";s:3:"fer";s:3:"237";s:3:"gel";s:3:"238";s:3:"h g";s:3:"239";s:3:"hod";s:3:"240";s:3:"ied";s:3:"241";s:3:"ir ";s:3:"242";s:3:"laf";s:3:"243";s:3:"n h";s:3:"244";s:3:"na ";s:3:"245";s:3:"nyd";s:3:"246";s:3:"odo";s:3:"247";s:3:"ofy";s:3:"248";s:3:"rdd";s:3:"249";s:3:"rie";s:3:"250";s:3:"ros";s:3:"251";s:3:"stw";s:3:"252";s:3:"twy";s:3:"253";s:3:"yda";s:3:"254";s:3:"yng";s:3:"255";s:3:" at";s:3:"256";s:3:" de";s:3:"257";s:3:" go";s:3:"258";s:3:" id";s:3:"259";s:3:" oe";s:3:"260";s:4:" â ";s:3:"261";s:3:"'ch";s:3:"262";s:3:"ac ";s:3:"263";s:3:"ach";s:3:"264";s:3:"ae'";s:3:"265";s:3:"al ";s:3:"266";s:3:"bl ";s:3:"267";s:3:"d c";s:3:"268";s:3:"d l";s:3:"269";s:3:"dan";s:3:"270";s:3:"dde";s:3:"271";s:3:"ddw";s:3:"272";s:3:"dir";s:3:"273";s:3:"dla";s:3:"274";s:3:"ed ";s:3:"275";s:3:"ela";s:3:"276";s:3:"ell";s:3:"277";s:3:"ene";s:3:"278";s:3:"ewn";s:3:"279";s:3:"gyd";s:3:"280";s:3:"hau";s:3:"281";s:3:"hyw";s:3:"282";s:3:"i a";s:3:"283";s:3:"i f";s:3:"284";s:3:"iol";s:3:"285";s:3:"ion";s:3:"286";s:3:"l a";s:3:"287";s:3:"l i";s:3:"288";s:3:"lia";s:3:"289";s:3:"med";s:3:"290";s:3:"mon";s:3:"291";s:3:"n s";s:3:"292";s:3:"no ";s:3:"293";s:3:"obl";s:3:"294";s:3:"ola";s:3:"295";s:3:"ref";s:3:"296";s:3:"rn ";s:3:"297";s:3:"thi";s:3:"298";s:3:"un ";s:3:"299";}}s:18:"trigram-unicodemap";a:13:{s:11:"Basic Latin";a:38:{s:8:"albanian";i:661;s:5:"azeri";i:653;s:7:"bengali";i:1;s:7:"cebuano";i:750;s:8:"croatian";i:733;s:5:"czech";i:652;s:6:"danish";i:734;s:5:"dutch";i:741;s:7:"english";i:723;s:8:"estonian";i:739;s:7:"finnish";i:743;s:6:"french";i:733;s:6:"german";i:750;s:5:"hausa";i:752;s:8:"hawaiian";i:751;s:9:"hungarian";i:693;s:9:"icelandic";i:662;s:10:"indonesian";i:776;s:7:"italian";i:741;s:5:"latin";i:764;s:7:"latvian";i:693;s:10:"lithuanian";i:738;s:9:"mongolian";i:19;s:9:"norwegian";i:742;s:6:"pidgin";i:702;s:6:"polish";i:701;s:10:"portuguese";i:726;s:8:"romanian";i:714;s:6:"slovak";i:677;s:7:"slovene";i:740;s:6:"somali";i:755;s:7:"spanish";i:749;s:7:"swahili";i:770;s:7:"swedish";i:717;s:7:"tagalog";i:767;s:7:"turkish";i:673;s:10:"vietnamese";i:503;s:5:"welsh";i:728;}s:18:"Latin-1 Supplement";a:21:{s:8:"albanian";i:68;s:5:"azeri";i:10;s:5:"czech";i:51;s:6:"danish";i:13;s:8:"estonian";i:19;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:9:"hungarian";i:72;s:9:"icelandic";i:80;s:7:"italian";i:3;s:9:"norwegian";i:5;s:6:"polish";i:6;s:10:"portuguese";i:18;s:8:"romanian";i:9;s:6:"slovak";i:37;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:25;s:10:"vietnamese";i:56;s:5:"welsh";i:1;}s:14:"[Malformatted]";a:42:{s:8:"albanian";i:68;s:6:"arabic";i:724;s:5:"azeri";i:109;s:7:"bengali";i:1472;s:9:"bulgarian";i:750;s:8:"croatian";i:10;s:5:"czech";i:78;s:6:"danish";i:13;s:8:"estonian";i:19;s:5:"farsi";i:706;s:7:"finnish";i:39;s:6:"french";i:21;s:6:"german";i:8;s:5:"hausa";i:8;s:5:"hindi";i:1386;s:9:"hungarian";i:74;s:9:"icelandic";i:80;s:7:"italian";i:3;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:6:"nepali";i:1514;s:9:"norwegian";i:5;s:6:"pashto";i:677;s:6:"polish";i:45;s:10:"portuguese";i:18;s:8:"romanian";i:31;s:7:"russian";i:759;s:7:"serbian";i:757;s:6:"slovak";i:45;s:7:"slovene";i:10;s:7:"spanish";i:6;s:7:"swedish";i:26;s:7:"turkish";i:87;s:9:"ukrainian";i:748;s:4:"urdu";i:682;s:5:"uzbek";i:773;s:10:"vietnamese";i:289;s:5:"welsh";i:1;}s:6:"Arabic";a:4:{s:6:"arabic";i:724;s:5:"farsi";i:706;s:6:"pashto";i:677;s:4:"urdu";i:682;}s:16:"Latin Extended-B";a:3:{s:5:"azeri";i:73;s:5:"hausa";i:8;s:10:"vietnamese";i:19;}s:16:"Latin Extended-A";a:12:{s:5:"azeri";i:25;s:8:"croatian";i:10;s:5:"czech";i:27;s:9:"hungarian";i:2;s:7:"latvian";i:56;s:10:"lithuanian";i:30;s:6:"polish";i:39;s:8:"romanian";i:22;s:6:"slovak";i:8;s:7:"slovene";i:10;s:7:"turkish";i:62;s:10:"vietnamese";i:20;}s:27:"Combining Diacritical Marks";a:1:{s:5:"azeri";i:1;}s:7:"Bengali";a:1:{s:7:"bengali";i:714;}s:8:"Gujarati";a:1:{s:7:"bengali";i:16;}s:8:"Gurmukhi";a:1:{s:7:"bengali";i:6;}s:8:"Cyrillic";a:9:{s:9:"bulgarian";i:750;s:6:"kazakh";i:767;s:6:"kyrgyz";i:767;s:10:"macedonian";i:755;s:9:"mongolian";i:743;s:7:"russian";i:759;s:7:"serbian";i:757;s:9:"ukrainian";i:748;s:5:"uzbek";i:773;}s:10:"Devanagari";a:2:{s:5:"hindi";i:693;s:6:"nepali";i:757;}s:25:"Latin Extended Additional";a:1:{s:10:"vietnamese";i:97;}}} \ No newline at end of file
diff --git a/inc/3rdparty/libraries/language-detect/unicode_blocks.dat b/inc/3rdparty/libraries/language-detect/unicode_blocks.dat
deleted file mode 100644
index 3b24cd2c..00000000
--- a/inc/3rdparty/libraries/language-detect/unicode_blocks.dat
+++ /dev/null
@@ -1 +0,0 @@
1a:145:{i:0;a:3:{i:0;s:6:"0x0000";i:1;s:6:"0x007F";i:2;s:11:"Basic Latin";}i:1;a:3:{i:0;s:6:"0x0080";i:1;s:6:"0x00FF";i:2;s:18:"Latin-1 Supplement";}i:2;a:3:{i:0;s:6:"0x0100";i:1;s:6:"0x017F";i:2;s:16:"Latin Extended-A";}i:3;a:3:{i:0;s:6:"0x0180";i:1;s:6:"0x024F";i:2;s:16:"Latin Extended-B";}i:4;a:3:{i:0;s:6:"0x0250";i:1;s:6:"0x02AF";i:2;s:14:"IPA Extensions";}i:5;a:3:{i:0;s:6:"0x02B0";i:1;s:6:"0x02FF";i:2;s:24:"Spacing Modifier Letters";}i:6;a:3:{i:0;s:6:"0x0300";i:1;s:6:"0x036F";i:2;s:27:"Combining Diacritical Marks";}i:7;a:3:{i:0;s:6:"0x0370";i:1;s:6:"0x03FF";i:2;s:16:"Greek and Coptic";}i:8;a:3:{i:0;s:6:"0x0400";i:1;s:6:"0x04FF";i:2;s:8:"Cyrillic";}i:9;a:3:{i:0;s:6:"0x0500";i:1;s:6:"0x052F";i:2;s:19:"Cyrillic Supplement";}i:10;a:3:{i:0;s:6:"0x0530";i:1;s:6:"0x058F";i:2;s:8:"Armenian";}i:11;a:3:{i:0;s:6:"0x0590";i:1;s:6:"0x05FF";i:2;s:6:"Hebrew";}i:12;a:3:{i:0;s:6:"0x0600";i:1;s:6:"0x06FF";i:2;s:6:"Arabic";}i:13;a:3:{i:0;s:6:"0x0700";i:1;s:6:"0x074F";i:2;s:6:"Syriac";}i:14;a:3:{i:0;s:6:"0x0750";i:1;s:6:"0x077F";i:2;s:17:"Arabic Supplement";}i:15;a:3:{i:0;s:6:"0x0780";i:1;s:6:"0x07BF";i:2;s:6:"Thaana";}i:16;a:3:{i:0;s:6:"0x0900";i:1;s:6:"0x097F";i:2;s:10:"Devanagari";}i:17;a:3:{i:0;s:6:"0x0980";i:1;s:6:"0x09FF";i:2;s:7:"Bengali";}i:18;a:3:{i:0;s:6:"0x0A00";i:1;s:6:"0x0A7F";i:2;s:8:"Gurmukhi";}i:19;a:3:{i:0;s:6:"0x0A80";i:1;s:6:"0x0AFF";i:2;s:8:"Gujarati";}i:20;a:3:{i:0;s:6:"0x0B00";i:1;s:6:"0x0B7F";i:2;s:5:"Oriya";}i:21;a:3:{i:0;s:6:"0x0B80";i:1;s:6:"0x0BFF";i:2;s:5:"Tamil";}i:22;a:3:{i:0;s:6:"0x0C00";i:1;s:6:"0x0C7F";i:2;s:6:"Telugu";}i:23;a:3:{i:0;s:6:"0x0C80";i:1;s:6:"0x0CFF";i:2;s:7:"Kannada";}i:24;a:3:{i:0;s:6:"0x0D00";i:1;s:6:"0x0D7F";i:2;s:9:"Malayalam";}i:25;a:3:{i:0;s:6:"0x0D80";i:1;s:6:"0x0DFF";i:2;s:7:"Sinhala";}i:26;a:3:{i:0;s:6:"0x0E00";i:1;s:6:"0x0E7F";i:2;s:4:"Thai";}i:27;a:3:{i:0;s:6:"0x0E80";i:1;s:6:"0x0EFF";i:2;s:3:"Lao";}i:28;a:3:{i:0;s:6:"0x0F00";i:1;s:6:"0x0FFF";i:2;s:7:"Tibetan";}i:29;a:3:{i:0;s:6:"0x1000";i:1;s:6:"0x109F";i:2;s:7:"Myanmar";}i:30;a:3:{i:0;s:6:"0x10A0";i:1;s:6:"0x10FF";i:2;s:8:"Georgian";}i:31;a:3:{i:0;s:6:"0x1100";i:1;s:6:"0x11FF";i:2;s:11:"Hangul Jamo";}i:32;a:3:{i:0;s:6:"0x1200";i:1;s:6:"0x137F";i:2;s:8:"Ethiopic";}i:33;a:3:{i:0;s:6:"0x1380";i:1;s:6:"0x139F";i:2;s:19:"Ethiopic Supplement";}i:34;a:3:{i:0;s:6:"0x13A0";i:1;s:6:"0x13FF";i:2;s:8:"Cherokee";}i:35;a:3:{i:0;s:6:"0x1400";i:1;s:6:"0x167F";i:2;s:37:"Unified Canadian Aboriginal Syllabics";}i:36;a:3:{i:0;s:6:"0x1680";i:1;s:6:"0x169F";i:2;s:5:"Ogham";}i:37;a:3:{i:0;s:6:"0x16A0";i:1;s:6:"0x16FF";i:2;s:5:"Runic";}i:38;a:3:{i:0;s:6:"0x1700";i:1;s:6:"0x171F";i:2;s:7:"Tagalog";}i:39;a:3:{i:0;s:6:"0x1720";i:1;s:6:"0x173F";i:2;s:7:"Hanunoo";}i:40;a:3:{i:0;s:6:"0x1740";i:1;s:6:"0x175F";i:2;s:5:"Buhid";}i:41;a:3:{i:0;s:6:"0x1760";i:1;s:6:"0x177F";i:2;s:8:"Tagbanwa";}i:42;a:3:{i:0;s:6:"0x1780";i:1;s:6:"0x17FF";i:2;s:5:"Khmer";}i:43;a:3:{i:0;s:6:"0x1800";i:1;s:6:"0x18AF";i:2;s:9:"Mongolian";}i:44;a:3:{i:0;s:6:"0x1900";i:1;s:6:"0x194F";i:2;s:5:"Limbu";}i:45;a:3:{i:0;s:6:"0x1950";i:1;s:6:"0x197F";i:2;s:6:"Tai Le";}i:46;a:3:{i:0;s:6:"0x1980";i:1;s:6:"0x19DF";i:2;s:11:"New Tai Lue";}i:47;a:3:{i:0;s:6:"0x19E0";i:1;s:6:"0x19FF";i:2;s:13:"Khmer Symbols";}i:48;a:3:{i:0;s:6:"0x1A00";i:1;s:6:"0x1A1F";i:2;s:8:"Buginese";}i:49;a:3:{i:0;s:6:"0x1D00";i:1;s:6:"0x1D7F";i:2;s:19:"Phonetic Extensions";}i:50;a:3:{i:0;s:6:"0x1D80";i:1;s:6:"0x1DBF";i:2;s:30:"Phonetic Extensions Supplement";}i:51;a:3:{i:0;s:6:"0x1DC0";i:1;s:6:"0x1DFF";i:2;s:38:"Combining Diacritical Marks Supplement";}i:52;a:3:{i:0;s:6:"0x1E00";i:1;s:6:"0x1EFF";i:2;s:25:"Latin Extended Additional";}i:53;a:3:{i:0;s:6:"0x1F00";i:1;s:6:"0x1FFF";i:2;s:14:"Greek Extended";}i:54;a:3:{i:0;s:6:"0x2000";i:1;s:6:"0x206F";i:2;s:19:"General Punctuation";}i:55;a:3:{i:0;s:6:"0x2070";i:1;s:6:"0x209F";i:2;s:27:"Superscripts and Subscripts";}i:56;a:3:{i:0;s:6:"0x20A0";i:1;s:6:"0x20CF";i:2;s:16:"Currency Symbols";}i:57;a:3:{i:0;s:6:"0x20D0";i:1;s:6:"0x20FF";i:2;s:39:"Combining Diacritical Marks for Symbols";}i:58;a:3:{i:0;s:6:"0x2100";i:1;s:6:"0x214F";i:2;s:18:"Letterlike Symbols";}i:59;a:3:{i:0;s:6:"0x2150";i:1;s:6:"0x218F";i:2;s:12:"Number Forms";}i:60;a:3:{i:0;s:6:"0x2190";i:1;s:6:"0x21FF";i:2;s:6:"Arrows";}i:61;a:3:{i:0;s:6:"0x2200";i:1;s:6:"0x22FF";i:2;s:22:"Mathematical Operators";}i:62;a:3:{i:0;s:6:"0x2300";i:1;s:6:"0x23FF";i:2;s:23:"Miscellaneous Technical";}i:63;a:3:{i:0;s:6:"0x2400";i:1;s:6:"0x243F";i:2;s:16:"Control Pictures";}i:64;a:3:{i:0;s:6:"0x2440";i:1;s:6:"0x245F";i:2;s:29:"Optical Character Recognition";}i:65;a:3:{i:0;s:6:"0x2460";i:1;s:6:"0x24FF";i:2;s:22:"Enclosed Alphanumerics";}i:66;a:3:{i:0;s:6:"0x2500";i:1;s:6:"0x257F";i:2;s:11:"Box Drawing";}i:67;a:3:{i:0;s:6:"0x2580";i:1;s:6:"0x259F";i:2;s:14:"Block Elements";}i:68;a:3:{i:0;s:6:"0x25A0";i:1;s:6:"0x25FF";i:2;s:16:"Geometric Shapes";}i:69;a:3:{i:0;s:6:"0x2600";i:1;s:6:"0x26FF";i:2;s:21:"Miscellaneous Symbols";}i:70;a:3:{i:0;s:6:"0x2700";i:1;s:6:"0x27BF";i:2;s:8:"Dingbats";}i:71;a:3:{i:0;s:6:"0x27C0";i:1;s:6:"0x27EF";i:2;s:36:"Miscellaneous Mathematical Symbols-A";}i:72;a:3:{i:0;s:6:"0x27F0";i:1;s:6:"0x27FF";i:2;s:21:"Supplemental Arrows-A";}i:73;a:3:{i:0;s:6:"0x2800";i:1;s:6:"0x28FF";i:2;s:16:"Braille Patterns";}i:74;a:3:{i:0;s:6:"0x2900";i:1;s:6:"0x297F";i:2;s:21:"Supplemental Arrows-B";}i:75;a:3:{i:0;s:6:"0x2980";i:1;s:6:"0x29FF";i:2;s:36:"Miscellaneous Mathematical Symbols-B";}i:76;a:3:{i:0;s:6:"0x2A00";i:1;s:6:"0x2AFF";i:2;s:35:"Supplemental Mathematical Operators";}i:77;a:3:{i:0;s:6:"0x2B00";i:1;s:6:"0x2BFF";i:2;s:32:"Miscellaneous Symbols and Arrows";}i:78;a:3:{i:0;s:6:"0x2C00";i:1;s:6:"0x2C5F";i:2;s:10:"Glagolitic";}i:79;a:3:{i:0;s:6:"0x2C80";i:1;s:6:"0x2CFF";i:2;s:6:"Coptic";}i:80;a:3:{i:0;s:6:"0x2D00";i:1;s:6:"0x2D2F";i:2;s:19:"Georgian Supplement";}i:81;a:3:{i:0;s:6:"0x2D30";i:1;s:6:"0x2D7F";i:2;s:8:"Tifinagh";}i:82;a:3:{i:0;s:6:"0x2D80";i:1;s:6:"0x2DDF";i:2;s:17:"Ethiopic Extended";}i:83;a:3:{i:0;s:6:"0x2E00";i:1;s:6:"0x2E7F";i:2;s:24:"Supplemental Punctuation";}i:84;a:3:{i:0;s:6:"0x2E80";i:1;s:6:"0x2EFF";i:2;s:23:"CJK Radicals Supplement";}i:85;a:3:{i:0;s:6:"0x2F00";i:1;s:6:"0x2FDF";i:2;s:15:"Kangxi Radicals";}i:86;a:3:{i:0;s:6:"0x2FF0";i:1;s:6:"0x2FFF";i:2;s:34:"Ideographic Description Characters";}i:87;a:3:{i:0;s:6:"0x3000";i:1;s:6:"0x303F";i:2;s:27:"CJK Symbols and Punctuation";}i:88;a:3:{i:0;s:6:"0x3040";i:1;s:6:"0x309F";i:2;s:8:"Hiragana";}i:89;a:3:{i:0;s:6:"0x30A0";i:1;s:6:"0x30FF";i:2;s:8:"Katakana";}i:90;a:3:{i:0;s:6:"0x3100";i:1;s:6:"0x312F";i:2;s:8:"Bopomofo";}i:91;a:3:{i:0;s:6:"0x3130";i:1;s:6:"0x318F";i:2;s:25:"Hangul Compatibility Jamo";}i:92;a:3:{i:0;s:6:"0x3190";i:1;s:6:"0x319F";i:2;s:6:"Kanbun";}i:93;a:3:{i:0;s:6:"0x31A0";i:1;s:6:"0x31BF";i:2;s:17:"Bopomofo Extended";}i:94;a:3:{i:0;s:6:"0x31C0";i:1;s:6:"0x31EF";i:2;s:11:"CJK Strokes";}i:95;a:3:{i:0;s:6:"0x31F0";i:1;s:6:"0x31FF";i:2;s:28:"Katakana Phonetic Extensions";}i:96;a:3:{i:0;s:6:"0x3200";i:1;s:6:"0x32FF";i:2;s:31:"Enclosed CJK Letters and Months";}i:97;a:3:{i:0;s:6:"0x3300";i:1;s:6:"0x33FF";i:2;s:17:"CJK Compatibility";}i:98;a:3:{i:0;s:6:"0x3400";i:1;s:6:"0x4DBF";i:2;s:34:"CJK Unified Ideographs Extension A";}i:99;a:3:{i:0;s:6:"0x4DC0";i:1;s:6:"0x4DFF";i:2;s:23:"Yijing Hexagram Symbols";}i:100;a:3:{i:0;s:6:"0x4E00";i:1;s:6:"0x9FFF";i:2;s:22:"CJK Unified Ideographs";}i:101;a:3:{i:0;s:6:"0xA000";i:1;s:6:"0xA48F";i:2;s:12:"Yi Syllables";}i:102;a:3:{i:0;s:6:"0xA490";i:1;s:6:"0xA4CF";i:2;s:11:"Yi Radicals";}i:103;a:3:{i:0;s:6:"0xA700";i:1;s:6:"0xA71F";i:2;s:21:"Modifier Tone Letters";}i:104;a:3:{i:0;s:6:"0xA800";i:1;s:6:"0xA82F";i:2;s:12:"Syloti Nagri";}i:105;a:3:{i:0;s:6:"0xAC00";i:1;s:6:"0xD7AF";i:2;s:16:"Hangul Syllables";}i:106;a:3:{i:0;s:6:"0xD800";i:1;s:6:"0xDB7F";i:2;s:15:"High Surrogates";}i:107;a:3:{i:0;s:6:"0xDB80";i:1;s:6:"0xDBFF";i:2;s:27:"High Private Use Surrogates";}i:108;a:3:{i:0;s:6:"0xDC00";i:1;s:6:"0xDFFF";i:2;s:14:"Low Surrogates";}i:109;a:3:{i:0;s:6:"0xE000";i:1;s:6:"0xF8FF";i:2;s:16:"Private Use Area";}i:110;a:3:{i:0;s:6:"0xF900";i:1;s:6:"0xFAFF";i:2;s:28:"CJK Compatibility Ideographs";}i:111;a:3:{i:0;s:6:"0xFB00";i:1;s:6:"0xFB4F";i:2;s:29:"Alphabetic Presentation Forms";}i:112;a:3:{i:0;s:6:"0xFB50";i:1;s:6:"0xFDFF";i:2;s:27:"Arabic Presentation Forms-A";}i:113;a:3:{i:0;s:6:"0xFE00";i:1;s:6:"0xFE0F";i:2;s:19:"Variation Selectors";}i:114;a:3:{i:0;s:6:"0xFE10";i:1;s:6:"0xFE1F";i:2;s:14:"Vertical Forms";}i:115;a:3:{i:0;s:6:"0xFE20";i:1;s:6:"0xFE2F";i:2;s:20:"Combining Half Marks";}i:116;a:3:{i:0;s:6:"0xFE30";i:1;s:6:"0xFE4F";i:2;s:23:"CJK Compatibility Forms";}i:117;a:3:{i:0;s:6:"0xFE50";i:1;s:6:"0xFE6F";i:2;s:19:"Small Form Variants";}i:118;a:3:{i:0;s:6:"0xFE70";i:1;s:6:"0xFEFF";i:2;s:27:"Arabic Presentation Forms-B";}i:119;a:3:{i:0;s:6:"0xFF00";i:1;s:6:"0xFFEF";i:2;s:29:"Halfwidth and Fullwidth Forms";}i:120;a:3:{i:0;s:6:"0xFFF0";i:1;s:6:"0xFFFF";i:2;s:8:"Specials";}i:121;a:3:{i:0;s:7:"0x10000";i:1;s:7:"0x1007F";i:2;s:18:"Linear B Syllabary";}i:122;a:3:{i:0;s:7:"0x10080";i:1;s:7:"0x100FF";i:2;s:18:"Linear B Ideograms";}i:123;a:3:{i:0;s:7:"0x10100";i:1;s:7:"0x1013F";i:2;s:14:"Aegean Numbers";}i:124;a:3:{i:0;s:7:"0x10140";i:1;s:7:"0x1018F";i:2;s:21:"Ancient Greek Numbers";}i:125;a:3:{i:0;s:7:"0x10300";i:1;s:7:"0x1032F";i:2;s:10:"Old Italic";}i:126;a:3:{i:0;s:7:"0x10330";i:1;s:7:"0x1034F";i:2;s:6:"Gothic";}i:127;a:3:{i:0;s:7:"0x10380";i:1;s:7:"0x1039F";i:2;s:8:"Ugaritic";}i:128;a:3:{i:0;s:7:"0x103A0";i:1;s:7:"0x103DF";i:2;s:11:"Old Persian";}i:129;a:3:{i:0;s:7:"0x10400";i:1;s:7:"0x1044F";i:2;s:7:"Deseret";}i:130;a:3:{i:0;s:7:"0x10450";i:1;s:7:"0x1047F";i:2;s:7:"Shavian";}i:131;a:3:{i:0;s:7:"0x10480";i:1;s:7:"0x104AF";i:2;s:7:"Osmanya";}i:132;a:3:{i:0;s:7:"0x10800";i:1;s:7:"0x1083F";i:2;s:17:"Cypriot Syllabary";}i:133;a:3:{i:0;s:7:"0x10A00";i:1;s:7:"0x10A5F";i:2;s:10:"Kharoshthi";}i:134;a:3:{i:0;s:7:"0x1D000";i:1;s:7:"0x1D0FF";i:2;s:25:"Byzantine Musical Symbols";}i:135;a:3:{i:0;s:7:"0x1D100";i:1;s:7:"0x1D1FF";i:2;s:15:"Musical Symbols";}i:136;a:3:{i:0;s:7:"0x1D200";i:1;s:7:"0x1D24F";i:2;s:30:"Ancient Greek Musical Notation";}i:137;a:3:{i:0;s:7:"0x1D300";i:1;s:7:"0x1D35F";i:2;s:21:"Tai Xuan Jing Symbols";}i:138;a:3:{i:0;s:7:"0x1D400";i:1;s:7:"0x1D7FF";i:2;s:33:"Mathematical Alphanumeric Symbols";}i:139;a:3:{i:0;s:7:"0x20000";i:1;s:7:"0x2A6DF";i:2;s:34:"CJK Unified Ideographs Extension B";}i:140;a:3:{i:0;s:7:"0x2F800";i:1;s:7:"0x2FA1F";i:2;s:39:"CJK Compatibility Ideographs Supplement";}i:141;a:3:{i:0;s:7:"0xE0000";i:1;s:7:"0xE007F";i:2;s:4:"Tags";}i:142;a:3:{i:0;s:7:"0xE0100";i:1;s:7:"0xE01EF";i:2;s:30:"Variation Selectors Supplement";}i:143;a:3:{i:0;s:7:"0xF0000";i:1;s:7:"0xFFFFF";i:2;s:32:"Supplementary Private Use Area-A";}i:144;a:3:{i:0;s:8:"0x100000";i:1;s:8:"0x10FFFF";i:2;s:32:"Supplementary Private Use Area-B";}} \ No newline at end of file
diff --git a/inc/3rdparty/makefulltextfeed.php b/inc/3rdparty/makefulltextfeed.php
deleted file mode 100755
index 27a62d73..00000000
--- a/inc/3rdparty/makefulltextfeed.php
+++ /dev/null
@@ -1,912 +0,0 @@
1<?php
2// Full-Text RSS: Create Full-Text Feeds
3// Author: Keyvan Minoukadeh
4// Copyright (c) 2013 Keyvan Minoukadeh
5// License: AGPLv3
6// Version: 3.2
7// Date: 2013-05-13
8// More info: http://fivefilters.org/content-only/
9// Help: http://help.fivefilters.org
10
11/*
12This program is free software: you can redistribute it and/or modify
13it under the terms of the GNU Affero General Public License as published by
14the Free Software Foundation, either version 3 of the License, or
15(at your option) any later version.
16
17This program is distributed in the hope that it will be useful,
18but WITHOUT ANY WARRANTY; without even the implied warranty of
19MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20GNU Affero General Public License for more details.
21
22You should have received a copy of the GNU Affero General Public License
23along with this program. If not, see <http://www.gnu.org/licenses/>.
24*/
25
26// Usage
27// -----
28// Request this file passing it a web page or feed URL in the querystring: makefulltextfeed.php?url=example.org/article
29// For more request parameters, see http://help.fivefilters.org/customer/portal/articles/226660-usage
30
31//error_reporting(E_ALL ^ E_NOTICE);
32ini_set("display_errors", 1);
33@set_time_limit(120);
34libxml_use_internal_errors(true);
35
36
37// Deal with magic quotes
38if (get_magic_quotes_gpc()) {
39 $process = array(&$_GET, &$_POST, &$_REQUEST);
40 while (list($key, $val) = each($process)) {
41 foreach ($val as $k => $v) {
42 unset($process[$key][$k]);
43 if (is_array($v)) {
44 $process[$key][stripslashes($k)] = $v;
45 $process[] = &$process[$key][stripslashes($k)];
46 } else {
47 $process[$key][stripslashes($k)] = stripslashes($v);
48 }
49 }
50 }
51 unset($process);
52}
53
54// set include path
55set_include_path(realpath(dirname(__FILE__).'/libraries').PATH_SEPARATOR.get_include_path());
56
57require_once dirname(__FILE__).'/makefulltextfeedHelpers.php';
58
59////////////////////////////////
60// Load config file
61////////////////////////////////
62require dirname(__FILE__).'/config.php';
63
64////////////////////////////////
65// Prevent indexing/following by search engines because:
66// 1. The content is already public and presumably indexed (why create duplicates?)
67// 2. Not doing so might increase number of requests from search engines, thus increasing server load
68// Note: feed readers and services such as Yahoo Pipes will not be affected by this header.
69// Note: Using Disallow in a robots.txt file will be more effective (search engines will check
70// that before even requesting makefulltextfeed.php).
71////////////////////////////////
72header('X-Robots-Tag: noindex, nofollow');
73
74////////////////////////////////
75// Check if service is enabled
76////////////////////////////////
77if (!$options->enabled) {
78 die('The full-text RSS service is currently disabled');
79}
80
81////////////////////////////////
82// Debug mode?
83// See the config file for debug options.
84////////////////////////////////
85$debug_mode = false;
86if (isset($_GET['debug'])) {
87 if ($options->debug === true || $options->debug == 'user') {
88 $debug_mode = true;
89 } elseif ($options->debug == 'admin') {
90 session_start();
91 $debug_mode = (@$_SESSION['auth'] == 1);
92 }
93 if ($debug_mode) {
94 header('Content-Type: text/plain; charset=utf-8');
95 } else {
96 if ($options->debug == 'admin') {
97 die('You must be logged in to the <a href="admin/">admin area</a> to see debug output.');
98 } else {
99 die('Debugging is disabled.');
100 }
101 }
102}
103
104////////////////////////////////
105// Check for APC
106////////////////////////////////
107$options->apc = $options->apc && function_exists('apc_add');
108if ($options->apc) {
109 debug('APC is enabled and available on server');
110} else {
111 debug('APC is disabled or not available on server');
112}
113
114////////////////////////////////
115// Check for smart cache
116////////////////////////////////
117$options->smart_cache = $options->smart_cache && function_exists('apc_inc');
118
119////////////////////////////////
120// Check for feed URL
121////////////////////////////////
122if (!isset($_GET['url'])) {
123 die('No URL supplied');
124}
125$url = trim($_GET['url']);
126if (strtolower(substr($url, 0, 7)) == 'feed://') {
127 $url = 'http://'.substr($url, 7);
128}
129if (!preg_match('!^https?://.+!i', $url)) {
130 $url = 'http://'.$url;
131}
132
133$url = filter_var($url, FILTER_SANITIZE_URL);
134$test = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
135// deal with bug http://bugs.php.net/51192 (present in PHP 5.2.13 and PHP 5.3.2)
136if ($test === false) {
137 $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);
138}
139if ($test !== false && $test !== null && preg_match('!^https?://!', $url)) {
140 // all okay
141 unset($test);
142} else {
143 die('Invalid URL supplied');
144}
145debug("Supplied URL: $url");
146
147/////////////////////////////////
148// Redirect to hide API key
149/////////////////////////////////
150if (isset($_GET['key']) && ($key_index = array_search($_GET['key'], $options->api_keys)) !== false) {
151 $host = $_SERVER['HTTP_HOST'];
152 $path = rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\');
153 $_qs_url = (strtolower(substr($url, 0, 7)) == 'http://') ? substr($url, 7) : $url;
154 $redirect = 'http://'.htmlspecialchars($host.$path).'/makefulltextfeed.php?url='.urlencode($_qs_url);
155 $redirect .= '&key='.$key_index;
156 $redirect .= '&hash='.urlencode(sha1($_GET['key'].$url));
157 if (isset($_GET['html'])) $redirect .= '&html='.urlencode($_GET['html']);
158 if (isset($_GET['max'])) $redirect .= '&max='.(int)$_GET['max'];
159 if (isset($_GET['links'])) $redirect .= '&links='.urlencode($_GET['links']);
160 if (isset($_GET['exc'])) $redirect .= '&exc='.urlencode($_GET['exc']);
161 if (isset($_GET['format'])) $redirect .= '&format='.urlencode($_GET['format']);
162 if (isset($_GET['callback'])) $redirect .= '&callback='.urlencode($_GET['callback']);
163 if (isset($_GET['l'])) $redirect .= '&l='.urlencode($_GET['l']);
164 if (isset($_GET['xss'])) $redirect .= '&xss';
165 if (isset($_GET['use_extracted_title'])) $redirect .= '&use_extracted_title';
166 if (isset($_GET['content'])) $redirect .= '&content='.urlencode($_GET['content']);
167 if (isset($_GET['summary'])) $redirect .= '&summary='.urlencode($_GET['summary']);
168 if (isset($_GET['debug'])) $redirect .= '&debug';
169 if ($debug_mode) {
170 debug('Redirecting to hide access key, follow URL below to continue');
171 debug("Location: $redirect");
172 } else {
173 header("Location: $redirect");
174 }
175 exit;
176}
177
178///////////////////////////////////////////////
179// Set timezone.
180// Prevents warnings, but needs more testing -
181// perhaps if timezone is set in php.ini we
182// don't need to set it at all...
183///////////////////////////////////////////////
184if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timezone'))) {
185 date_default_timezone_set('UTC');
186}
187
188///////////////////////////////////////////////
189// Check if the request is explicitly for an HTML page
190///////////////////////////////////////////////
191$html_only = (isset($_GET['html']) && ($_GET['html'] == '1' || $_GET['html'] == 'true'));
192
193///////////////////////////////////////////////
194// Check if valid key supplied
195///////////////////////////////////////////////
196$valid_key = false;
197if (isset($_GET['key']) && isset($_GET['hash']) && isset($options->api_keys[(int)$_GET['key']])) {
198 $valid_key = ($_GET['hash'] == sha1($options->api_keys[(int)$_GET['key']].$url));
199}
200$key_index = ($valid_key) ? (int)$_GET['key'] : 0;
201if (!$valid_key && $options->key_required) {
202 die('A valid key must be supplied');
203}
204if (!$valid_key && isset($_GET['key']) && $_GET['key'] != '') {
205 die('The entered key is invalid');
206}
207
208if (file_exists('custom_init.php')) require 'custom_init.php';
209
210///////////////////////////////////////////////
211// Check URL against list of blacklisted URLs
212///////////////////////////////////////////////
213if (!url_allowed($url)) die('URL blocked');
214
215///////////////////////////////////////////////
216// Max entries
217// see config.php to find these values
218///////////////////////////////////////////////
219if (isset($_GET['max'])) {
220 $max = (int)$_GET['max'];
221 if ($valid_key) {
222 $max = min($max, $options->max_entries_with_key);
223 } else {
224 $max = min($max, $options->max_entries);
225 }
226} else {
227 if ($valid_key) {
228 $max = $options->default_entries_with_key;
229 } else {
230 $max = $options->default_entries;
231 }
232}
233
234///////////////////////////////////////////////
235// Link handling
236///////////////////////////////////////////////
237if (isset($_GET['links']) && in_array($_GET['links'], array('preserve', 'footnotes', 'remove'))) {
238 $links = $_GET['links'];
239} else {
240 $links = 'preserve';
241}
242
243///////////////////////////////////////////////
244// Favour item titles in feed?
245///////////////////////////////////////////////
246$favour_feed_titles = true;
247if ($options->favour_feed_titles == 'user') {
248 $favour_feed_titles = !isset($_GET['use_extracted_title']);
249} else {
250 $favour_feed_titles = $options->favour_feed_titles;
251}
252
253///////////////////////////////////////////////
254// Include full content in output?
255///////////////////////////////////////////////
256if ($options->content === 'user') {
257 if (isset($_GET['content']) && $_GET['content'] === '0') {
258 $options->content = false;
259 } else {
260 $options->content = true;
261 }
262}
263
264///////////////////////////////////////////////
265// Include summaries in output?
266///////////////////////////////////////////////
267if ($options->summary === 'user') {
268 if (isset($_GET['summary']) && $_GET['summary'] === '1') {
269 $options->summary = true;
270 } else {
271 $options->summary = false;
272 }
273}
274
275///////////////////////////////////////////////
276// Exclude items if extraction fails
277///////////////////////////////////////////////
278if ($options->exclude_items_on_fail === 'user') {
279 $exclude_on_fail = (isset($_GET['exc']) && ($_GET['exc'] == '1'));
280} else {
281 $exclude_on_fail = $options->exclude_items_on_fail;
282}
283
284///////////////////////////////////////////////
285// Detect language
286///////////////////////////////////////////////
287if ($options->detect_language === 'user') {
288 if (isset($_GET['l'])) {
289 $detect_language = (int)$_GET['l'];
290 } else {
291 $detect_language = 1;
292 }
293} else {
294 $detect_language = $options->detect_language;
295}
296
297$use_cld = extension_loaded('cld') && (version_compare(PHP_VERSION, '5.3.0') >= 0);
298
299/////////////////////////////////////
300// Check for valid format
301// (stick to RSS (or RSS as JSON) for the time being)
302/////////////////////////////////////
303if (isset($_GET['format']) && $_GET['format'] == 'json') {
304 $format = 'json';
305} else {
306 $format = 'rss';
307}
308
309/////////////////////////////////////
310// Should we do XSS filtering?
311/////////////////////////////////////
312if ($options->xss_filter === 'user') {
313 $xss_filter = isset($_GET['xss']);
314} else {
315 $xss_filter = $options->xss_filter;
316}
317if (!$xss_filter && isset($_GET['xss'])) {
318 die('XSS filtering is disabled in config');
319}
320
321/////////////////////////////////////
322// Check for JSONP
323// Regex from https://gist.github.com/1217080
324/////////////////////////////////////
325$callback = null;
326if ($format =='json' && isset($_GET['callback'])) {
327 $callback = trim($_GET['callback']);
328 foreach (explode('.', $callback) as $_identifier) {
329 if (!preg_match('/^[a-zA-Z_$][0-9a-zA-Z_$]*(?:\[(?:".+"|\'.+\'|\d+)\])*?$/', $_identifier)) {
330 die('Invalid JSONP callback');
331 }
332 }
333 debug("JSONP callback: $callback");
334}
335
336//////////////////////////////////
337// Enable Cross-Origin Resource Sharing (CORS)
338//////////////////////////////////
339if ($options->cors) header('Access-Control-Allow-Origin: *');
340
341//////////////////////////////////
342// Check for cached copy
343//////////////////////////////////
344if ($options->caching) {
345 debug('Caching is enabled...');
346 $cache_id = md5($max.$url.(int)$valid_key.$links.(int)$favour_feed_titles.(int)$options->content.(int)$options->summary.(int)$xss_filter.(int)$exclude_on_fail.$format.$detect_language.(int)isset($_GET['pubsub']));
347 $check_cache = true;
348 if ($options->apc && $options->smart_cache) {
349 apc_add("cache.$cache_id", 0, 10*60);
350 $apc_cache_hits = (int)apc_fetch("cache.$cache_id");
351 $check_cache = ($apc_cache_hits >= 2);
352 apc_inc("cache.$cache_id");
353 if ($check_cache) {
354 debug('Cache key found in APC, we\'ll try to load cache file from disk');
355 } else {
356 debug('Cache key not found in APC');
357 }
358 }
359 if ($check_cache) {
360 $cache = get_cache();
361 if ($data = $cache->load($cache_id)) {
362 if ($debug_mode) {
363 debug('Loaded cached copy');
364 exit;
365 }
366 if ($format == 'json') {
367 if ($callback === null) {
368 header('Content-type: application/json; charset=UTF-8');
369 } else {
370 header('Content-type: application/javascript; charset=UTF-8');
371 }
372 } else {
373 header('Content-type: text/xml; charset=UTF-8');
374 header('X-content-type-options: nosniff');
375 }
376 if (headers_sent()) die('Some data has already been output, can\'t send RSS file');
377 if ($callback) {
378 echo "$callback($data);";
379 } else {
380 echo $data;
381 }
382 exit;
383 }
384 }
385}
386
387//////////////////////////////////
388// Set Expires header
389//////////////////////////////////
390if (!$debug_mode) {
391 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+(60*10)) . ' GMT');
392}
393
394//////////////////////////////////
395// Set up HTTP agent
396//////////////////////////////////
397global $http;
398$http = new HumbleHttpAgent();
399$http->debug = $debug_mode;
400$http->userAgentMap = $options->user_agents;
401$http->headerOnlyTypes = array_keys($options->content_type_exc);
402$http->rewriteUrls = $options->rewrite_url;
403
404//////////////////////////////////
405// Set up Content Extractor
406//////////////////////////////////
407global $extractor;
408$extractor = new ContentExtractor(dirname(__FILE__).'/site_config/custom', dirname(__FILE__).'/site_config/standard');
409$extractor->debug = $debug_mode;
410SiteConfig::$debug = $debug_mode;
411SiteConfig::use_apc($options->apc);
412$extractor->fingerprints = $options->fingerprints;
413$extractor->allowedParsers = $options->allowed_parsers;
414
415////////////////////////////////
416// Get RSS/Atom feed
417////////////////////////////////
418if (!$html_only) {
419 debug('--------');
420 debug("Attempting to process URL as feed");
421 // Send user agent header showing PHP (prevents a HTML response from feedburner)
422 $http->userAgentDefault = HumbleHttpAgent::UA_PHP;
423 // configure SimplePie HTTP extension class to use our HumbleHttpAgent instance
424 SimplePie_HumbleHttpAgent::set_agent($http);
425 $feed = new SimplePie();
426 // some feeds use the text/html content type - force_feed tells SimplePie to process anyway
427 $feed->force_feed(true);
428 $feed->set_file_class('SimplePie_HumbleHttpAgent');
429 //$feed->set_feed_url($url); // colons appearing in the URL's path get encoded
430 $feed->feed_url = $url;
431 $feed->set_autodiscovery_level(SIMPLEPIE_LOCATOR_NONE);
432 $feed->set_timeout(20);
433 $feed->enable_cache(false);
434 $feed->set_stupidly_fast(true);
435 $feed->enable_order_by_date(false); // we don't want to do anything to the feed
436 $feed->set_url_replacements(array());
437 // initialise the feed
438 // the @ suppresses notices which on some servers causes a 500 internal server error
439 $result = @$feed->init();
440 //$feed->handle_content_type();
441 //$feed->get_title();
442 if ($result && (!is_array($feed->data) || count($feed->data) == 0)) {
443 die('Sorry, no feed items found');
444 }
445 // from now on, we'll identify ourselves as a browser
446 $http->userAgentDefault = HumbleHttpAgent::UA_BROWSER;
447}
448
449////////////////////////////////////////////////////////////////////////////////
450// Our given URL is not a feed, so let's create our own feed with a single item:
451// the given URL. This basically treats all non-feed URLs as if they were
452// single-item feeds.
453////////////////////////////////////////////////////////////////////////////////
454$isDummyFeed = false;
455if ($html_only || !$result) {
456 debug('--------');
457 debug("Constructing a single-item feed from URL");
458 $isDummyFeed = true;
459 unset($feed, $result);
460 // create single item dummy feed object
461 $feed = new DummySingleItemFeed($url);
462}
463
464////////////////////////////////////////////
465// Create full-text feed
466////////////////////////////////////////////
467$output = new FeedWriter();
468$output->setTitle(strip_tags($feed->get_title()));
469$output->setDescription(strip_tags($feed->get_description()));
470$output->setXsl('css/feed.xsl'); // Chrome uses this, most browsers ignore it
471if ($valid_key && isset($_GET['pubsub'])) { // used only on fivefilters.org at the moment
472 $output->addHub('http://fivefilters.superfeedr.com/');
473 $output->addHub('http://pubsubhubbub.appspot.com/');
474 $output->setSelf('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
475}
476$output->setLink($feed->get_link()); // Google Reader uses this for pulling in favicons
477if ($img_url = $feed->get_image_url()) {
478 $output->setImage($feed->get_title(), $feed->get_link(), $img_url);
479}
480
481////////////////////////////////////////////
482// Loop through feed items
483////////////////////////////////////////////
484$items = $feed->get_items(0, $max);
485// Request all feed items in parallel (if supported)
486$urls_sanitized = array();
487$urls = array();
488foreach ($items as $key => $item) {
489 $permalink = htmlspecialchars_decode($item->get_permalink());
490 // Colons in URL path segments get encoded by SimplePie, yet some sites expect them unencoded
491 $permalink = str_replace('%3A', ':', $permalink);
492 // validateUrl() strips non-ascii characters
493 // simplepie already sanitizes URLs so let's not do it again here.
494 //$permalink = $http->validateUrl($permalink);
495 if ($permalink) {
496 $urls_sanitized[] = $permalink;
497 }
498 $urls[$key] = $permalink;
499}
500debug('--------');
501debug('Fetching feed items');
502$http->fetchAll($urls_sanitized);
503//$http->cacheAll();
504
505// count number of items added to full feed
506$item_count = 0;
507
508foreach ($items as $key => $item) {
509 debug('--------');
510 debug('Processing feed item '.($item_count+1));
511 $do_content_extraction = true;
512 $extract_result = false;
513 $text_sample = null;
514 $permalink = $urls[$key];
515 debug("Item URL: $permalink");
516 $extracted_title = '';
517 $feed_item_title = $item->get_title();
518 if ($feed_item_title !== null) {
519 $feed_item_title = strip_tags(htmlspecialchars_decode($feed_item_title));
520 }
521 $newitem = $output->createNewItem();
522 $newitem->setTitle($feed_item_title);
523 if ($valid_key && isset($_GET['pubsub'])) { // used only on fivefilters.org at the moment
524 if ($permalink !== false) {
525 $newitem->setLink('http://fivefilters.org/content-only/redirect.php?url='.urlencode($permalink));
526 } else {
527 $newitem->setLink('http://fivefilters.org/content-only/redirect.php?url='.urlencode($item->get_permalink()));
528 }
529 } else {
530 if ($permalink !== false) {
531 $newitem->setLink($permalink);
532 } else {
533 $newitem->setLink($item->get_permalink());
534 }
535 }
536 //if ($permalink && ($response = $http->get($permalink, true)) && $response['status_code'] < 300) {
537 // Allowing error codes - some sites return correct content with error status
538 // e.g. prospectmagazine.co.uk returns 403
539 if ($permalink && ($response = $http->get($permalink, true)) && ($response['status_code'] < 300 || $response['status_code'] > 400)) {
540 $effective_url = $response['effective_url'];
541 if (!url_allowed($effective_url)) continue;
542 // check if action defined for returned Content-Type
543 $mime_info = get_mime_action_info($response['headers']);
544 if (isset($mime_info['action'])) {
545 if ($mime_info['action'] == 'exclude') {
546 continue; // skip this feed item entry
547 } elseif ($mime_info['action'] == 'link') {
548 if ($mime_info['type'] == 'image') {
549 $html = "<a href=\"$effective_url\"><img src=\"$effective_url\" alt=\"{$mime_info['name']}\" /></a>";
550 } else {
551 $html = "<a href=\"$effective_url\">Download {$mime_info['name']}</a>";
552 }
553 $extracted_title = $mime_info['name'];
554 $do_content_extraction = false;
555 }
556 }
557 if ($do_content_extraction) {
558 $html = $response['body'];
559 // remove strange things
560 $html = str_replace('</[>', '', $html);
561 $html = convert_to_utf8($html, $response['headers']);
562 // check site config for single page URL - fetch it if found
563 $is_single_page = false;
564 if ($single_page_response = getSinglePage($item, $html, $effective_url)) {
565 $is_single_page = true;
566 $effective_url = $single_page_response['effective_url'];
567 // check if action defined for returned Content-Type
568 $mime_info = get_mime_action_info($single_page_response['headers']);
569 if (isset($mime_info['action'])) {
570 if ($mime_info['action'] == 'exclude') {
571 continue; // skip this feed item entry
572 } elseif ($mime_info['action'] == 'link') {
573 if ($mime_info['type'] == 'image') {
574 $html = "<a href=\"$effective_url\"><img src=\"$effective_url\" alt=\"{$mime_info['name']}\" /></a>";
575 } else {
576 $html = "<a href=\"$effective_url\">Download {$mime_info['name']}</a>";
577 }
578 $extracted_title = $mime_info['name'];
579 $do_content_extraction = false;
580 }
581 }
582 if ($do_content_extraction) {
583 $html = $single_page_response['body'];
584 // remove strange things
585 $html = str_replace('</[>', '', $html);
586 $html = convert_to_utf8($html, $single_page_response['headers']);
587 debug("Retrieved single-page view from $effective_url");
588 }
589 unset($single_page_response);
590 }
591 }
592 if ($do_content_extraction) {
593 debug('--------');
594 debug('Attempting to extract content');
595 $extract_result = $extractor->process($html, $effective_url);
596 $readability = $extractor->readability;
597 $content_block = ($extract_result) ? $extractor->getContent() : null;
598 $extracted_title = ($extract_result) ? $extractor->getTitle() : '';
599 // Deal with multi-page articles
600 //die('Next: '.$extractor->getNextPageUrl());
601 $is_multi_page = (!$is_single_page && $extract_result && $extractor->getNextPageUrl());
602 if ($options->multipage && $is_multi_page && $options->content) {
603 debug('--------');
604 debug('Attempting to process multi-page article');
605 $multi_page_urls = array();
606 $multi_page_content = array();
607 while ($next_page_url = $extractor->getNextPageUrl()) {
608 debug('--------');
609 debug('Processing next page: '.$next_page_url);
610 // If we've got URL, resolve against $url
611 if ($next_page_url = makeAbsoluteStr($effective_url, $next_page_url)) {
612 // check it's not what we have already!
613 if (!in_array($next_page_url, $multi_page_urls)) {
614 // it's not, so let's attempt to fetch it
615 $multi_page_urls[] = $next_page_url;
616 $_prev_ref = $http->referer;
617 if (($response = $http->get($next_page_url, true)) && $response['status_code'] < 300) {
618 // make sure mime type is not something with a different action associated
619 $page_mime_info = get_mime_action_info($response['headers']);
620 if (!isset($page_mime_info['action'])) {
621 $html = $response['body'];
622 // remove strange things
623 $html = str_replace('</[>', '', $html);
624 $html = convert_to_utf8($html, $response['headers']);
625 if ($extractor->process($html, $next_page_url)) {
626 $multi_page_content[] = $extractor->getContent();
627 continue;
628 } else { debug('Failed to extract content'); }
629 } else { debug('MIME type requires different action'); }
630 } else { debug('Failed to fetch URL'); }
631 } else { debug('URL already processed'); }
632 } else { debug('Failed to resolve against '.$effective_url); }
633 // failed to process next_page_url, so cancel further requests
634 $multi_page_content = array();
635 break;
636 }
637 // did we successfully deal with this multi-page article?
638 if (empty($multi_page_content)) {
639 debug('Failed to extract all parts of multi-page article, so not going to include them');
640 $_page = $readability->dom->createElement('p');
641 $_page->innerHTML = '<em>This article appears to continue on subsequent pages which we could not extract</em>';
642 $multi_page_content[] = $_page;
643 }
644 foreach ($multi_page_content as $_page) {
645 $_page = $content_block->ownerDocument->importNode($_page, true);
646 $content_block->appendChild($_page);
647 }
648 unset($multi_page_urls, $multi_page_content, $page_mime_info, $next_page_url, $_page);
649 }
650 }
651 // use extracted title for both feed and item title if we're using single-item dummy feed
652 if ($isDummyFeed) {
653 $output->setTitle($extracted_title);
654 $newitem->setTitle($extracted_title);
655 } else {
656 // use extracted title instead of feed item title?
657 if (!$favour_feed_titles && $extracted_title != '') {
658 debug('Using extracted title in generated feed');
659 $newitem->setTitle($extracted_title);
660 }
661 }
662 }
663 if ($do_content_extraction) {
664 // if we failed to extract content...
665 if (!$extract_result) {
666 if ($exclude_on_fail) {
667 debug('Failed to extract, so skipping (due to exclude on fail parameter)');
668 continue; // skip this and move to next item
669 }
670 //TODO: get text sample for language detection
671 $html = $options->error_message;
672 // keep the original item description
673 $html .= $item->get_description();
674 } else {
675 $readability->clean($content_block, 'select');
676 // get base URL
677 $base_url = get_base_url($readability->dom);
678 if (!$base_url) $base_url = $effective_url;
679 // rewrite URLs
680 if ($options->rewrite_relative_urls) makeAbsolute($base_url, $content_block);
681 // footnotes
682 if (($links == 'footnotes') && (strpos($effective_url, 'wikipedia.org') === false)) {
683 $readability->addFootnotes($content_block);
684 }
685 // remove nesting: <div><div><div><p>test</p></div></div></div> = <p>test</p>
686 while ($content_block->childNodes->length == 1 && $content_block->firstChild->nodeType === XML_ELEMENT_NODE) {
687 // only follow these tag names
688 if (!in_array(strtolower($content_block->tagName), array('div', 'article', 'section', 'header', 'footer'))) break;
689 //$html = $content_block->firstChild->innerHTML; // FTR 2.9.5
690 $content_block = $content_block->firstChild;
691 }
692 // convert content block to HTML string
693 // Need to preserve things like body: //img[@id='feature']
694 if (in_array(strtolower($content_block->tagName), array('div', 'article', 'section', 'header', 'footer'))) {
695 $html = $content_block->innerHTML;
696 } else {
697 $html = $content_block->ownerDocument->saveXML($content_block); // essentially outerHTML
698 }
699 //unset($content_block);
700 // post-processing cleanup
701 $html = preg_replace('!<p>[\s\h\v]*</p>!u', '', $html);
702 if ($links == 'remove') {
703 $html = preg_replace('!</?a[^>]*>!', '', $html);
704 }
705 // get text sample for language detection
706 $text_sample = strip_tags(substr($html, 0, 500));
707 $html = make_substitutions($options->message_to_prepend).$html;
708 $html .= make_substitutions($options->message_to_append);
709 }
710 }
711
712 if ($valid_key && isset($_GET['pubsub'])) { // used only on fivefilters.org at the moment
713 $newitem->addElement('guid', 'http://fivefilters.org/content-only/redirect.php?url='.urlencode($item->get_permalink()), array('isPermaLink'=>'false'));
714 } else {
715 $newitem->addElement('guid', $item->get_permalink(), array('isPermaLink'=>'true'));
716 }
717 // filter xss?
718 if ($xss_filter) {
719 debug('Filtering HTML to remove XSS');
720 $html = htmLawed::hl($html, array('safe'=>1, 'deny_attribute'=>'style', 'comment'=>1, 'cdata'=>1));
721 }
722
723 // add content
724 if ($options->summary === true) {
725 // get summary
726 $summary = '';
727 if (!$do_content_extraction) {
728 $summary = $html;
729 } else {
730 // Try to get first few paragraphs
731 if (isset($content_block) && ($content_block instanceof DOMElement)) {
732 $_paras = $content_block->getElementsByTagName('p');
733 foreach ($_paras as $_para) {
734 $summary .= preg_replace("/[\n\r\t ]+/", ' ', $_para->textContent).' ';
735 if (strlen($summary) > 200) break;
736 }
737 } else {
738 $summary = $html;
739 }
740 }
741 unset($_paras, $_para);
742 $summary = get_excerpt($summary);
743 $newitem->setDescription($summary);
744 if ($options->content) $newitem->setElement('content:encoded', $html);
745 } else {
746 if ($options->content) $newitem->setDescription($html);
747 }
748
749 // set date
750 if ((int)$item->get_date('U') > 0) {
751 $newitem->setDate((int)$item->get_date('U'));
752 } elseif ($extractor->getDate()) {
753 $newitem->setDate($extractor->getDate());
754 }
755
756 // add authors
757 if ($authors = $item->get_authors()) {
758 foreach ($authors as $author) {
759 // for some feeds, SimplePie stores author's name as email, e.g. http://feeds.feedburner.com/nymag/intel
760 if ($author->get_name() !== null) {
761 $newitem->addElement('dc:creator', $author->get_name());
762 } elseif ($author->get_email() !== null) {
763 $newitem->addElement('dc:creator', $author->get_email());
764 }
765 }
766 } elseif ($authors = $extractor->getAuthors()) {
767 //TODO: make sure the list size is reasonable
768 foreach ($authors as $author) {
769 // TODO: xpath often selects authors from other articles linked from the page.
770 // for now choose first item
771 $newitem->addElement('dc:creator', $author);
772 break;
773 }
774 }
775
776 // add language
777 if ($detect_language) {
778 $language = $extractor->getLanguage();
779 if (!$language) $language = $feed->get_language();
780 if (($detect_language == 3 || (!$language && $detect_language == 2)) && $text_sample) {
781 try {
782 if ($use_cld) {
783 // Use PHP-CLD extension
784 $php_cld = 'CLD\detect'; // in quotes to prevent PHP 5.2 parse error
785 $res = $php_cld($text_sample);
786 if (is_array($res) && count($res) > 0) {
787 $language = $res[0]['code'];
788 }
789 } else {
790 //die('what');
791 // Use PEAR's Text_LanguageDetect
792 if (!isset($l)) {
793 $l = new Text_LanguageDetect();
794 $l->setNameMode(2); // return ISO 639-1 codes (e.g. "en")
795 }
796 $l_result = $l->detect($text_sample, 1);
797 if (count($l_result) > 0) {
798 $language = key($l_result);
799 }
800 }
801 } catch (Exception $e) {
802 //die('error: '.$e);
803 // do nothing
804 }
805 }
806 if ($language && (strlen($language) < 7)) {
807 $newitem->addElement('dc:language', $language);
808 }
809 }
810
811 // add MIME type (if it appeared in our exclusions lists)
812 if (isset($mime_info['mime'])) $newitem->addElement('dc:format', $mime_info['mime']);
813 // add effective URL (URL after redirects)
814 if (isset($effective_url)) {
815 //TODO: ensure $effective_url is valid witout - sometimes it causes problems, e.g.
816 //http://www.siasat.pk/forum/showthread.php?108883-Pakistan-Chowk-by-Rana-Mubashir-�-25th-March-2012-Special-Program-from-Liari-(Karachi)
817 //temporary measure: use utf8_encode()
818 $newitem->addElement('dc:identifier', remove_url_cruft(utf8_encode($effective_url)));
819 } else {
820 $newitem->addElement('dc:identifier', remove_url_cruft($item->get_permalink()));
821 }
822
823 // add categories
824 if ($categories = $item->get_categories()) {
825 foreach ($categories as $category) {
826 if ($category->get_label() !== null) {
827 $newitem->addElement('category', $category->get_label());
828 }
829 }
830 }
831
832 // check for enclosures
833 if ($options->keep_enclosures) {
834 if ($enclosures = $item->get_enclosures()) {
835 foreach ($enclosures as $enclosure) {
836 // thumbnails
837 foreach ((array)$enclosure->get_thumbnails() as $thumbnail) {
838 $newitem->addElement('media:thumbnail', '', array('url'=>$thumbnail));
839 }
840 if (!$enclosure->get_link()) continue;
841 $enc = array();
842 // Media RSS spec ($enc): http://search.yahoo.com/mrss
843 // SimplePie methods ($enclosure): http://simplepie.org/wiki/reference/start#methods4
844 $enc['url'] = $enclosure->get_link();
845 if ($enclosure->get_length()) $enc['fileSize'] = $enclosure->get_length();
846 if ($enclosure->get_type()) $enc['type'] = $enclosure->get_type();
847 if ($enclosure->get_medium()) $enc['medium'] = $enclosure->get_medium();
848 if ($enclosure->get_expression()) $enc['expression'] = $enclosure->get_expression();
849 if ($enclosure->get_bitrate()) $enc['bitrate'] = $enclosure->get_bitrate();
850 if ($enclosure->get_framerate()) $enc['framerate'] = $enclosure->get_framerate();
851 if ($enclosure->get_sampling_rate()) $enc['samplingrate'] = $enclosure->get_sampling_rate();
852 if ($enclosure->get_channels()) $enc['channels'] = $enclosure->get_channels();
853 if ($enclosure->get_duration()) $enc['duration'] = $enclosure->get_duration();
854 if ($enclosure->get_height()) $enc['height'] = $enclosure->get_height();
855 if ($enclosure->get_width()) $enc['width'] = $enclosure->get_width();
856 if ($enclosure->get_language()) $enc['lang'] = $enclosure->get_language();
857 $newitem->addElement('media:content', '', $enc);
858 }
859 }
860 }
861 $output->addItem($newitem);
862 unset($html);
863 $item_count++;
864}
865
866// output feed
867debug('Done!');
868/*
869if ($debug_mode) {
870 $_apc_data = apc_cache_info('user');
871 var_dump($_apc_data); exit;
872}
873*/
874if (!$debug_mode) {
875 if ($callback) echo "$callback("; // if $callback is set, $format also == 'json'
876 if ($format == 'json') $output->setFormat(($callback === null) ? JSON : JSONP);
877 $add_to_cache = $options->caching;
878 // is smart cache mode enabled?
879 if ($add_to_cache && $options->apc && $options->smart_cache) {
880 // yes, so only cache if this is the second request for this URL
881 $add_to_cache = ($apc_cache_hits >= 2);
882 // purge cache
883 if ($options->cache_cleanup > 0) {
884 if (rand(1, $options->cache_cleanup) == 1) {
885 // apc purge code adapted from from http://www.thimbleopensource.com/tutorials-snippets/php-apc-expunge-script
886 $_apc_data = apc_cache_info('user');
887 foreach ($_apc_data['cache_list'] as $_apc_item) {
888 if ($_apc_item['ttl'] > 0 && ($_apc_item['ttl'] + $_apc_item['creation_time'] < time())) {
889 apc_delete($_apc_item['info']);
890 }
891 }
892 }
893 }
894 }
895 if ($add_to_cache) {
896 ob_start();
897 $output->genarateFeed(false);
898 $output = ob_get_contents();
899 ob_end_clean();
900 if ($html_only && $item_count == 0) {
901 // do not cache - in case of temporary server glitch at source URL
902 } else {
903 $cache = get_cache();
904 if ($add_to_cache) $cache->save($output, $cache_id);
905 }
906 echo $output;
907 } else {
908 $output->genarateFeed(false);
909 }
910 if ($callback) echo ');';
911}
912
diff --git a/inc/3rdparty/makefulltextfeedHelpers.php b/inc/3rdparty/makefulltextfeedHelpers.php
deleted file mode 100755
index 453856dd..00000000
--- a/inc/3rdparty/makefulltextfeedHelpers.php
+++ /dev/null
@@ -1,386 +0,0 @@
1<?php
2
3// Autoloading of classes allows us to include files only when they're
4// needed. If we've got a cached copy, for example, only Zend_Cache is loaded.
5function autoload($class_name) {
6 static $dir = null;
7 if ($dir === null) $dir = dirname(__FILE__).'/libraries/';
8 static $mapping = array(
9 // Include FeedCreator for RSS/Atom creation
10 'FeedWriter' => 'feedwriter/FeedWriter.php',
11 'FeedItem' => 'feedwriter/FeedItem.php',
12 // Include ContentExtractor and Readability for identifying and extracting content from URLs
13 'ContentExtractor' => 'content-extractor/ContentExtractor.php',
14 'SiteConfig' => 'content-extractor/SiteConfig.php',
15 // Include Humble HTTP Agent to allow parallel requests and response caching
16 'HumbleHttpAgent' => 'humble-http-agent/HumbleHttpAgent.php',
17 'SimplePie_HumbleHttpAgent' => 'humble-http-agent/SimplePie_HumbleHttpAgent.php',
18 'CookieJar' => 'humble-http-agent/CookieJar.php',
19 // Include Zend Cache to improve performance (cache results)
20 'Zend_Cache' => 'Zend/Cache.php',
21 // Language detect
22 'Text_LanguageDetect' => 'language-detect/LanguageDetect.php',
23 // HTML5 Lib
24 'HTML5_Parser' => 'html5/Parser.php',
25 // htmLawed - used if XSS filter is enabled (xss_filter)
26 'htmLawed' => 'htmLawed/htmLawed.php'
27 );
28 if (isset($mapping[$class_name])) {
29 debug("** Loading class $class_name ({$mapping[$class_name]})");
30 require $dir.$mapping[$class_name];
31 return true;
32 } else {
33 return false;
34 }
35}
36spl_autoload_register('autoload');
37
38class DummySingleItemFeed {
39 public $item;
40 function __construct($url) { $this->item = new DummySingleItem($url); }
41 public function get_title() { return ''; }
42 public function get_description() { return 'Content extracted from '.$this->item->url; }
43 public function get_link() { return $this->item->url; }
44 public function get_language() { return false; }
45 public function get_image_url() { return false; }
46 public function get_items($start=0, $max=1) { return array(0=>$this->item); }
47}
48class DummySingleItem {
49 public $url;
50 function __construct($url) { $this->url = $url; }
51 public function get_permalink() { return $this->url; }
52 public function get_title() { return null; }
53 public function get_date($format='') { return false; }
54 public function get_author($key=0) { return null; }
55 public function get_authors() { return null; }
56 public function get_description() { return ''; }
57 public function get_enclosure($key=0, $prefer=null) { return null; }
58 public function get_enclosures() { return null; }
59 public function get_categories() { return null; }
60}
61
62///////////////////////////////
63// HELPER FUNCTIONS
64///////////////////////////////
65
66// Adapted from WordPress
67// http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/formatting.php#L2173
68function get_excerpt($text, $num_words=55, $more=null) {
69 if (null === $more) $more = '&hellip;';
70 $text = strip_tags($text);
71 //TODO: Check if word count is based on single characters (East Asian characters)
72 /*
73 if (1==2) {
74 $text = trim(preg_replace("/[\n\r\t ]+/", ' ', $text), ' ');
75 preg_match_all('/./u', $text, $words_array);
76 $words_array = array_slice($words_array[0], 0, $num_words + 1);
77 $sep = '';
78 } else {
79 $words_array = preg_split("/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY);
80 $sep = ' ';
81 }
82 */
83 $words_array = preg_split("/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY);
84 $sep = ' ';
85 if (count($words_array) > $num_words) {
86 array_pop($words_array);
87 $text = implode($sep, $words_array);
88 $text = $text.$more;
89 } else {
90 $text = implode($sep, $words_array);
91 }
92 // trim whitespace at beginning or end of string
93 // See: http://stackoverflow.com/questions/4166896/trim-unicode-whitespace-in-php-5-2
94 $text = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $text);
95 return $text;
96}
97
98function url_allowed($url) {
99 global $options;
100 if (!empty($options->allowed_urls)) {
101 $allowed = false;
102 foreach ($options->allowed_urls as $allowurl) {
103 if (stristr($url, $allowurl) !== false) {
104 $allowed = true;
105 break;
106 }
107 }
108 if (!$allowed) return false;
109 } else {
110 foreach ($options->blocked_urls as $blockurl) {
111 if (stristr($url, $blockurl) !== false) {
112 return false;
113 }
114 }
115 }
116 return true;
117}
118
119//////////////////////////////////////////////
120// Convert $html to UTF8
121// (uses HTTP headers and HTML to find encoding)
122// adapted from http://stackoverflow.com/questions/910793/php-detect-encoding-and-make-everything-utf-8
123//////////////////////////////////////////////
124function convert_to_utf8($html, $header=null)
125{
126 $encoding = null;
127 if ($html || $header) {
128 if (is_array($header)) $header = implode("\n", $header);
129 if (!$header || !preg_match_all('/^Content-Type:\s+([^;]+)(?:;\s*charset=["\']?([^;"\'\n]*))?/im', $header, $match, PREG_SET_ORDER)) {
130 // error parsing the response
131 debug('Could not find Content-Type header in HTTP response');
132 } else {
133 $match = end($match); // get last matched element (in case of redirects)
134 if (isset($match[2])) $encoding = trim($match[2], "\"' \r\n\0\x0B\t");
135 }
136 // TODO: check to see if encoding is supported (can we convert it?)
137 // If it's not, result will be empty string.
138 // For now we'll check for invalid encoding types returned by some sites, e.g. 'none'
139 // Problem URL: http://facta.co.jp/blog/archives/20111026001026.html
140 if (!$encoding || $encoding == 'none') {
141 // search for encoding in HTML - only look at the first 50000 characters
142 // Why 50000? See, for example, http://www.lemonde.fr/festival-de-cannes/article/2012/05/23/deux-cretes-en-goguette-sur-la-croisette_1705732_766360.html
143 // TODO: improve this so it looks at smaller chunks first
144 $html_head = substr($html, 0, 50000);
145 if (preg_match('/^<\?xml\s+version=(?:"[^"]*"|\'[^\']*\')\s+encoding=("[^"]*"|\'[^\']*\')/s', $html_head, $match)) {
146 $encoding = trim($match[1], '"\'');
147 } elseif (preg_match('/<meta\s+http-equiv=["\']?Content-Type["\']? content=["\'][^;]+;\s*charset=["\']?([^;"\'>]+)/i', $html_head, $match)) {
148 $encoding = trim($match[1]);
149 } elseif (preg_match_all('/<meta\s+([^>]+)>/i', $html_head, $match)) {
150 foreach ($match[1] as $_test) {
151 if (preg_match('/charset=["\']?([^"\']+)/i', $_test, $_m)) {
152 $encoding = trim($_m[1]);
153 break;
154 }
155 }
156 }
157 }
158 if (isset($encoding)) $encoding = trim($encoding);
159 // trim is important here!
160 if (!$encoding || (strtolower($encoding) == 'iso-8859-1')) {
161 // replace MS Word smart qutoes
162 $trans = array();
163 $trans[chr(130)] = '&sbquo;'; // Single Low-9 Quotation Mark
164 $trans[chr(131)] = '&fnof;'; // Latin Small Letter F With Hook
165 $trans[chr(132)] = '&bdquo;'; // Double Low-9 Quotation Mark
166 $trans[chr(133)] = '&hellip;'; // Horizontal Ellipsis
167 $trans[chr(134)] = '&dagger;'; // Dagger
168 $trans[chr(135)] = '&Dagger;'; // Double Dagger
169 $trans[chr(136)] = '&circ;'; // Modifier Letter Circumflex Accent
170 $trans[chr(137)] = '&permil;'; // Per Mille Sign
171 $trans[chr(138)] = '&Scaron;'; // Latin Capital Letter S With Caron
172 $trans[chr(139)] = '&lsaquo;'; // Single Left-Pointing Angle Quotation Mark
173 $trans[chr(140)] = '&OElig;'; // Latin Capital Ligature OE
174 $trans[chr(145)] = '&lsquo;'; // Left Single Quotation Mark
175 $trans[chr(146)] = '&rsquo;'; // Right Single Quotation Mark
176 $trans[chr(147)] = '&ldquo;'; // Left Double Quotation Mark
177 $trans[chr(148)] = '&rdquo;'; // Right Double Quotation Mark
178 $trans[chr(149)] = '&bull;'; // Bullet
179 $trans[chr(150)] = '&ndash;'; // En Dash
180 $trans[chr(151)] = '&mdash;'; // Em Dash
181 $trans[chr(152)] = '&tilde;'; // Small Tilde
182 $trans[chr(153)] = '&trade;'; // Trade Mark Sign
183 $trans[chr(154)] = '&scaron;'; // Latin Small Letter S With Caron
184 $trans[chr(155)] = '&rsaquo;'; // Single Right-Pointing Angle Quotation Mark
185 $trans[chr(156)] = '&oelig;'; // Latin Small Ligature OE
186 $trans[chr(159)] = '&Yuml;'; // Latin Capital Letter Y With Diaeresis
187 $html = strtr($html, $trans);
188 }
189 if (!$encoding) {
190 debug('No character encoding found, so treating as UTF-8');
191 $encoding = 'utf-8';
192 } else {
193 debug('Character encoding: '.$encoding);
194 if (strtolower($encoding) != 'utf-8') {
195 debug('Converting to UTF-8');
196 $html = SimplePie_Misc::change_encoding($html, $encoding, 'utf-8');
197 }
198 }
199 }
200 return $html;
201}
202
203function makeAbsolute($base, $elem) {
204 $base = new SimplePie_IRI($base);
205 // remove '//' in URL path (used to prevent URLs from resolving properly)
206 // TODO: check if this is still the case
207 if (isset($base->path)) $base->path = preg_replace('!//+!', '/', $base->path);
208 foreach(array('a'=>'href', 'img'=>'src') as $tag => $attr) {
209 $elems = $elem->getElementsByTagName($tag);
210 for ($i = $elems->length-1; $i >= 0; $i--) {
211 $e = $elems->item($i);
212 //$e->parentNode->replaceChild($articleContent->ownerDocument->createTextNode($e->textContent), $e);
213 makeAbsoluteAttr($base, $e, $attr);
214 }
215 if (strtolower($elem->tagName) == $tag) makeAbsoluteAttr($base, $elem, $attr);
216 }
217}
218function makeAbsoluteAttr($base, $e, $attr) {
219 if ($e->hasAttribute($attr)) {
220 // Trim leading and trailing white space. I don't really like this but
221 // unfortunately it does appear on some sites. e.g. <img src=" /path/to/image.jpg" />
222 $url = trim(str_replace('%20', ' ', $e->getAttribute($attr)));
223 $url = str_replace(' ', '%20', $url);
224 if (!preg_match('!https?://!i', $url)) {
225 if ($absolute = SimplePie_IRI::absolutize($base, $url)) {
226 $e->setAttribute($attr, $absolute);
227 }
228 }
229 }
230}
231function makeAbsoluteStr($base, $url) {
232 $base = new SimplePie_IRI($base);
233 // remove '//' in URL path (causes URLs not to resolve properly)
234 if (isset($base->path)) $base->path = preg_replace('!//+!', '/', $base->path);
235 if (preg_match('!^https?://!i', $url)) {
236 // already absolute
237 return $url;
238 } else {
239 if ($absolute = SimplePie_IRI::absolutize($base, $url)) {
240 return $absolute;
241 }
242 return false;
243 }
244}
245// returns single page response, or false if not found
246function getSinglePage($item, $html, $url) {
247 global $http, $extractor;
248 debug('Looking for site config files to see if single page link exists');
249 $site_config = $extractor->buildSiteConfig($url, $html);
250 $splink = null;
251 if (!empty($site_config->single_page_link)) {
252 $splink = $site_config->single_page_link;
253 } elseif (!empty($site_config->single_page_link_in_feed)) {
254 // single page link xpath is targeted at feed
255 $splink = $site_config->single_page_link_in_feed;
256 // so let's replace HTML with feed item description
257 $html = $item->get_description();
258 }
259 if (isset($splink)) {
260 // Build DOM tree from HTML
261 $readability = new Readability($html, $url);
262 $xpath = new DOMXPath($readability->dom);
263 // Loop through single_page_link xpath expressions
264 $single_page_url = null;
265 foreach ($splink as $pattern) {
266 $elems = @$xpath->evaluate($pattern, $readability->dom);
267 if (is_string($elems)) {
268 $single_page_url = trim($elems);
269 break;
270 } elseif ($elems instanceof DOMNodeList && $elems->length > 0) {
271 foreach ($elems as $item) {
272 if ($item instanceof DOMElement && $item->hasAttribute('href')) {
273 $single_page_url = $item->getAttribute('href');
274 break 2;
275 } elseif ($item instanceof DOMAttr && $item->value) {
276 $single_page_url = $item->value;
277 break 2;
278 }
279 }
280 }
281 }
282 // If we've got URL, resolve against $url
283 if (isset($single_page_url) && ($single_page_url = makeAbsoluteStr($url, $single_page_url))) {
284 // check it's not what we have already!
285 if ($single_page_url != $url) {
286 // it's not, so let's try to fetch it...
287 $_prev_ref = $http->referer;
288 $http->referer = $single_page_url;
289 if (($response = $http->get($single_page_url, true)) && $response['status_code'] < 300) {
290 $http->referer = $_prev_ref;
291 return $response;
292 }
293 $http->referer = $_prev_ref;
294 }
295 }
296 }
297 return false;
298}
299
300// based on content-type http header, decide what to do
301// param: HTTP headers string
302// return: array with keys: 'mime', 'type', 'subtype', 'action', 'name'
303// e.g. array('mime'=>'image/jpeg', 'type'=>'image', 'subtype'=>'jpeg', 'action'=>'link', 'name'=>'Image')
304function get_mime_action_info($headers) {
305 global $options;
306 // check if action defined for returned Content-Type
307 $info = array();
308 if (preg_match('!^Content-Type:\s*(([-\w]+)/([-\w\+]+))!im', $headers, $match)) {
309 // look for full mime type (e.g. image/jpeg) or just type (e.g. image)
310 // match[1] = full mime type, e.g. image/jpeg
311 // match[2] = first part, e.g. image
312 // match[3] = last part, e.g. jpeg
313 $info['mime'] = strtolower(trim($match[1]));
314 $info['type'] = strtolower(trim($match[2]));
315 $info['subtype'] = strtolower(trim($match[3]));
316 foreach (array($info['mime'], $info['type']) as $_mime) {
317 if (isset($options->content_type_exc[$_mime])) {
318 $info['action'] = $options->content_type_exc[$_mime]['action'];
319 $info['name'] = $options->content_type_exc[$_mime]['name'];
320 break;
321 }
322 }
323 }
324 return $info;
325}
326
327function remove_url_cruft($url) {
328 // remove google analytics for the time being
329 // regex adapted from http://navitronic.co.uk/2010/12/removing-google-analytics-cruft-from-urls/
330 // https://gist.github.com/758177
331 return preg_replace('/(\?|\&)utm_[a-z]+=[^\&]+/', '', $url);
332}
333
334function make_substitutions($string) {
335 if ($string == '') return $string;
336 global $item, $effective_url;
337 $string = str_replace('{url}', htmlspecialchars($item->get_permalink()), $string);
338 $string = str_replace('{effective-url}', htmlspecialchars($effective_url), $string);
339 return $string;
340}
341
342function get_cache() {
343 global $options, $valid_key;
344 static $cache = null;
345 if ($cache === null) {
346 $frontendOptions = array(
347 'lifetime' => 10*60, // cache lifetime of 10 minutes
348 'automatic_serialization' => false,
349 'write_control' => false,
350 'automatic_cleaning_factor' => $options->cache_cleanup,
351 'ignore_user_abort' => false
352 );
353 $backendOptions = array(
354 'cache_dir' => ($valid_key) ? $options->cache_dir.'/rss-with-key/' : $options->cache_dir.'/rss/', // directory where to put the cache files
355 'file_locking' => false,
356 'read_control' => true,
357 'read_control_type' => 'strlen',
358 'hashed_directory_level' => $options->cache_directory_level,
359 'hashed_directory_perm' => 0777,
360 'cache_file_perm' => 0664,
361 'file_name_prefix' => 'ff'
362 );
363 // getting a Zend_Cache_Core object
364 $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
365 }
366 return $cache;
367}
368
369function debug($msg) {
370 global $debug_mode;
371 if ($debug_mode) {
372 echo '* ',$msg,"\n";
373 ob_flush();
374 flush();
375 }
376}
377
378function get_base_url($dom) {
379 $xpath = new DOMXPath($dom);
380 $base_url = @$xpath->evaluate('string(//head/base/@href)', $dom);
381 if ($base_url !== '') {
382 return $base_url;
383 } else {
384 return false;
385 }
386}
diff --git a/inc/3rdparty/site_config/README.txt b/inc/3rdparty/site_config/README.txt
deleted file mode 100644
index e966ee74..00000000
--- a/inc/3rdparty/site_config/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1Full-Text RSS Site Patterns
2---------------------------
3
4Site patterns allow you to specify what should be extracted from specific sites.
5
6Please see http://help.fivefilters.org/customer/portal/articles/223153-site-patterns for more information. \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/bfmtv.com.txt b/inc/3rdparty/site_config/custom/bfmtv.com.txt
deleted file mode 100644
index 0ff28d56..00000000
--- a/inc/3rdparty/site_config/custom/bfmtv.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //title
2body: //h2 | //span[@class='masque'] | //article[@class='corps_article_right']
3prune: no
4tidy: no
5
6test_url: http://www.bfmtv.com/societe/cigarette-electronique-dangers-588622.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/blogs.faz.net.txt b/inc/3rdparty/site_config/custom/blogs.faz.net.txt
deleted file mode 100644
index 4f2626f1..00000000
--- a/inc/3rdparty/site_config/custom/blogs.faz.net.txt
+++ /dev/null
@@ -1,45 +0,0 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set author
7author: //a[@rel='author']
8
9# Set date
10date: //span[@class='Datum']
11
12# Content is here
13body: //div[@class='Artikel']
14
15# Tidy up before article
16strip: //div[@id='FAZHeaderNeu']
17strip: //h2[@itemprop='headline']
18strip: //span[@class='Datum']
19strip: //span[@class='Autor']
20strip_id_or_class: ArticlePagerTop
21strip: //div[@class='FAZArtikelEinleitung']/h2
22
23# General cleanup
24strip: //div[@class='clear']
25strip: //span[@class='Bildnachweis']
26strip: //iframe
27strip_id_or_class: Community
28strip: ' · '
29
30# Remove tracking and ads
31strip_image_src: /l.gif?
32strip: //img[@width='1']
33strip_id_or_class: invisible
34strip_id_or_class: Anzeige
35strip_id_or_class: billboard
36
37# Remove clutter after article
38strip_id_or_class: Tagline
39strip_id_or_class: ArtikelAbbinder
40strip_id_or_class: FAZArtikelKommentare
41strip_id_or_class: ArtikelKommentieren
42strip_id_or_class: FAZContentRight
43
44# Try it yourself
45test_url: http://blogs.faz.net/wost/2014/08/17/viel-fuck-und-wenig-guter-sex-1239/
diff --git a/inc/3rdparty/site_config/custom/dailymotion.com.txt b/inc/3rdparty/site_config/custom/dailymotion.com.txt
deleted file mode 100755
index 0cad808f..00000000
--- a/inc/3rdparty/site_config/custom/dailymotion.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //title
2body: //iframe
3
4replace_string(<![CDATA[): _
5replace_string(]]>): _
6
7single_page_link: //link[@type='application/xml+oembed']
8
9prune: no
10tidy: no
11
12http://www.dailymotion.com/video/x1vk5oh_before-they-were-on-game-of-thrones_people
diff --git a/inc/3rdparty/site_config/custom/dilbert.com.txt b/inc/3rdparty/site_config/custom/dilbert.com.txt
deleted file mode 100644
index 6c8d95a2..00000000
--- a/inc/3rdparty/site_config/custom/dilbert.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //div[contains(@class, 'SB_Title')]//a
2body: //div[contains(@class, 'STR_Content')]
3
4test_url: http://dilbert.com/strips/comic/2013-10-22 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/index.php b/inc/3rdparty/site_config/custom/index.php
deleted file mode 100644
index a3d5f739..00000000
--- a/inc/3rdparty/site_config/custom/index.php
+++ /dev/null
@@ -1,3 +0,0 @@
1<?php
2// this is here to prevent directory listing over the web
3?> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/interviewmagazine.com.txt b/inc/3rdparty/site_config/custom/interviewmagazine.com.txt
deleted file mode 100644
index a9d4f8ca..00000000
--- a/inc/3rdparty/site_config/custom/interviewmagazine.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //title
2body: //div[contains(@class, 'block')]
3
4test_url: http://www.interviewmagazine.com/film/spike-jonze \ No newline at end of file
diff --git a/inc/3rdparty/site_config/custom/mobile.lemondeinformatique.fr.txt b/inc/3rdparty/site_config/custom/mobile.lemondeinformatique.fr.txt
deleted file mode 100644
index 24aec5c3..00000000
--- a/inc/3rdparty/site_config/custom/mobile.lemondeinformatique.fr.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2
2body: div[@id='illustration'] | //p
3prune: no
4tidy: no
5
6test_url: http://mobile.lemondeinformatique.fr/actualites/lire-les-datacenters-d-apple-google-et-facebook-eco-responsables-selon-greenpeace-le-monde-informatique-57122.html
diff --git a/inc/3rdparty/site_config/custom/stackexchange.com.txt b/inc/3rdparty/site_config/custom/stackexchange.com.txt
deleted file mode 100755
index c9d44b1d..00000000
--- a/inc/3rdparty/site_config/custom/stackexchange.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //title
2body: //div[@id='question']//div[contains(@class,'post-text')] | //div[@id='answers-header']//h2 | //div[contains(@class,'accepted-answer')]//div[contains(@class,'post-text')]
3
4test_url: http://cstheory.stackexchange.com/questions/14811/what-is-the-enlightenment-im-supposed-to-attain-after-studying-finite-automata/14818#14818
diff --git a/inc/3rdparty/site_config/custom/stackoverflow.com.txt b/inc/3rdparty/site_config/custom/stackoverflow.com.txt
deleted file mode 100755
index d2eb984d..00000000
--- a/inc/3rdparty/site_config/custom/stackoverflow.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //title
2body: //div[@id='question']//div[contains(@class,'post-text')] | //div[@id='answers-header']//h2 | //div[contains(@class,'accepted-answer')]//div[contains(@class,'post-text')]
3
4test_url: http://stackoverflow.com/questions/20302422/calling-a-function-from-a-javascript-object
diff --git a/inc/3rdparty/site_config/custom/ted.com.txt b/inc/3rdparty/site_config/custom/ted.com.txt
deleted file mode 100755
index 4940d2bc..00000000
--- a/inc/3rdparty/site_config/custom/ted.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //title
2body: //div[@class='talk-article__body talk-transcript__body'] | //div[@class='media__image media__image--thumb talk-link__image']
3
4strip_id_or_class: talk-transcript__para__time
5
6single_page_link: //a[@id='hero-transcript-link']
7
8#prune: no
9tidy: no
10
11test_url: http://www.ted.com/talks/andrew_solomon_how_the_worst_moments_in_our_lives_make_us_who_we_are
diff --git a/inc/3rdparty/site_config/custom/tldp.org.txt b/inc/3rdparty/site_config/custom/tldp.org.txt
deleted file mode 100644
index 7dd5cdb5..00000000
--- a/inc/3rdparty/site_config/custom/tldp.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //title
2body: //h2 | //p | //ul
3prune: no
4tidy: no
5
6test_url: http://www.tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/index.php b/inc/3rdparty/site_config/index.php
deleted file mode 100644
index 76ca8b3c..00000000
--- a/inc/3rdparty/site_config/index.php
+++ /dev/null
@@ -1,2 +0,0 @@
1<?php
2// this is here to prevent directory listing over the web \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/.about.com.txt b/inc/3rdparty/site_config/standard/.about.com.txt
deleted file mode 100644
index e1ebaee3..00000000
--- a/inc/3rdparty/site_config/standard/.about.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1body: //div[@id='articlebody']
2title: //h1
3author: //p[@id='by']//a
4
5next_page_link: //span[@class='next']/a
6# Not the same as below!
7
8prune: yes
9tidy: no
10
11# Annoying 'next' links plainly inside the article body
12strip: //*[text()[contains(.,'Next: ')]]
13
14test_url: http://psychology.about.com/od/theoriesofpersonality/ss/defensemech.htm
diff --git a/inc/3rdparty/site_config/standard/.wikipedia.org.txt b/inc/3rdparty/site_config/standard/.wikipedia.org.txt
deleted file mode 100644
index 8b98ae4b..00000000
--- a/inc/3rdparty/site_config/standard/.wikipedia.org.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //h1[@id='firstHeading']
2body: //div[@id = 'bodyContent']
3strip_id_or_class: editsection
4#strip_id_or_class: toc
5strip_id_or_class: vertical-navbox
6strip: //table[@id='toc']
7strip: //div[@id='catlinks']
8strip: //div[@id='jump-to-nav']
9strip: //div[@class='thumbcaption']//div[@class='magnify']
10strip: //table[@class='navbox']
11strip: //table[contains(@class, 'infobox')]
12strip: //div[@class='dablink']
13strip: //div[@id='contentSub']
14strip: //table[contains(@class, 'metadata')]
15strip: //*[contains(@class, 'noprint')]
16strip: //span[@title='pronunciation:']
17prune: no
18tidy: no
19test_url: http://en.wikipedia.org/wiki/Christopher_Lloyd \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/24ways.org.txt b/inc/3rdparty/site_config/standard/24ways.org.txt
deleted file mode 100755
index 86c9e077..00000000
--- a/inc/3rdparty/site_config/standard/24ways.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='meta']/h2/a
2author: //div[@class='meta']/h2/following-sibling::p/a/text()
3date://div[@class='meta']/h2/strong
4body: //div[@id='article']
5strip: //div[@class='domore']
6test_url: http://24ways.org/2011/composing-the-new-canon \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/36kr.com.txt b/inc/3rdparty/site_config/standard/36kr.com.txt
deleted file mode 100755
index d73d7de5..00000000
--- a/inc/3rdparty/site_config/standard/36kr.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[contains(@class, 'entry-title')]
2date: //meta[@name='weibo: article:create_at']/@content
3body: //div[contains(@class, 'mainContent')]
4strip_id_or_class: related_topics
5
6prune: no
7
8test_url: http://www.36kr.com/p/207879.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/37signals.com.txt b/inc/3rdparty/site_config/standard/37signals.com.txt
deleted file mode 100755
index 531cac1e..00000000
--- a/inc/3rdparty/site_config/standard/37signals.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='post_header']//h2/a
2author: //span[@class='author']
3date: //span[@class='date']
4body: //div[@id='Content']
5
6test_url: http://37signals.com/svn/posts/2785-the-end-of-the-it-department \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/3quarksdaily.com.txt b/inc/3rdparty/site_config/standard/3quarksdaily.com.txt
deleted file mode 100755
index 80a3958f..00000000
--- a/inc/3rdparty/site_config/standard/3quarksdaily.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@class='content']
2date: //div[@class='content']/h2
3strip: //div[@class='content']/h2
4title: //div[@class='content']/h3
5
6strip: //div[@id='postmenu']
7strip: //div[@class='trackback']
8tidy: no
9test_url: http://www.3quarksdaily.com/3quarksdaily/2012/01/martin-luther-king-i-have-a-dream.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/3voor12.vpro.nl.txt b/inc/3rdparty/site_config/standard/3voor12.vpro.nl.txt
deleted file mode 100755
index b846b050..00000000
--- a/inc/3rdparty/site_config/standard/3voor12.vpro.nl.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@id='main']
2title: //div[@class='intro']/h1
3author: //ul[@class='text-data']/li[@class='author']
4date: //ul[@class='text-data']/li[@class='date']
5convert_double_br_tags: yes
6tidy: no
7
8strip: //div[@class='share']
9strip: //*[@class='zoom']
10strip: //div[@id='disqus_thread']
11test_url: http://3voor12.vpro.nl/nieuws/2012/januari/Ook-website-GroenLinks-woensdag-op-zwart-i-v-m--SOPA.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/43folders.com.txt b/inc/3rdparty/site_config/standard/43folders.com.txt
deleted file mode 100755
index 3777c66f..00000000
--- a/inc/3rdparty/site_config/standard/43folders.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //*[@class = 'content']
2author: //*[@class = 'submitted']/a
3date: substring-after(//*[@class = 'submitted']/text(), '|')
4test_url: http://www.43folders.com/2011/04/22/cranking \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/500px.com.txt b/inc/3rdparty/site_config/standard/500px.com.txt
deleted file mode 100755
index b9b7e9dd..00000000
--- a/inc/3rdparty/site_config/standard/500px.com.txt
+++ /dev/null
@@ -1,27 +0,0 @@
1# very loose setup for both 500px.com/photo/* and 500px.com/blog/*
2# photo page example: http://500px.com/photo/4181666
3# blog page example: http://500px.com/blog/110
4
5# avoid "no text" error
6tidy:no
7prune:no
8
9# reorganize photo page elements
10#body://div[contains(@class,'container')]
11move_into(body)://div[contains(@id,'thephoto')]
12move_into(body)://div[contains(@id,'description')]
13move_into(body)://div[contains(@id,'tags')]
14move_into(body)://div[contains(@id,'photo-info')]
15
16# clean photo page info
17strip://span[contains(@id,'copyright')]
18strip://*[contains(@id,'store')]
19strip://*[contains(@id,'user-info')]
20strip://*[contains(@id,'photo-stats')]
21strip://*[contains(@id,'voting_controls_container')]
22strip://*[contains(@id,'more-photos')]
23strip://*[contains(@id,'embed-photo')]
24
25# clean blog page side bar
26strip://*[contains(@class,'col d3 clearafter')]
27test_url: http://500px.com/photo/3641041?from=editors \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/512pixels.net.txt b/inc/3rdparty/site_config/standard/512pixels.net.txt
deleted file mode 100755
index 02a996f7..00000000
--- a/inc/3rdparty/site_config/standard/512pixels.net.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title: //meta[@property='og:title']/@content
2test_url: http://www.512pixels.net/blog/2014/10/the-move
diff --git a/inc/3rdparty/site_config/standard/5by5.tv.txt b/inc/3rdparty/site_config/standard/5by5.tv.txt
deleted file mode 100755
index 59b70a99..00000000
--- a/inc/3rdparty/site_config/standard/5by5.tv.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //*[@id="episode"]
2prune: no
3tidy: no
4
5autodetect_next_page: no
6strip_id_or_class: player
7
8strip://*[@id="header"]
9test_url: http://5by5.tv/buildanalyze/60 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/7newsbelize.com.txt b/inc/3rdparty/site_config/standard/7newsbelize.com.txt
deleted file mode 100755
index 46d09f8e..00000000
--- a/inc/3rdparty/site_config/standard/7newsbelize.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //*[@id='sstitle']
2body: //div[@id='sstory']
3strip_id_or_class: newsoptions
4prune: no
5
6test_url: http://www.7newsbelize.com/sstory.php?nid=25654
7test_url: http://www.7newsbelize.com/7news.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/944.com.txt b/inc/3rdparty/site_config/standard/944.com.txt
deleted file mode 100755
index 8bf6a4c2..00000000
--- a/inc/3rdparty/site_config/standard/944.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h2[@class='border']
2body: //div[@class='padding']
3
4convert_double_br_tags: yes
5
6strip: //div[@id='social_sharing']
7strip: //div[@class='socialLinks']
8
9test_url: http://www.944.com/articles/mild-obsessions-frock-la-get-to-know-victoria-tik-s-haute-sustainable-fashion-line/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/README.md b/inc/3rdparty/site_config/standard/README.md
deleted file mode 100755
index ab5b12d9..00000000
--- a/inc/3rdparty/site_config/standard/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
1Full-Text RSS site config files
2================
3
4[Full-Text RSS](http://fivefilters.org/content-only/), our article extraction tool, makes use of site-specific extraction rules to improve results. Each time a URL is processed, it checks to see if there are extraction rules for the site being processed. If there are no rules are found, it tries to detect the content block automatically.
5
6This repository contains the site-specific extraction rules we rely on in Full-Text RSS.
7
8### Contributing changes
9
10We run automated tests on these files to detect issues. If you'd like to help keep these up to date, please look at the [test results](http://siteconfig.fivefilters.org/test/) and see which files you'd like to contribute fixes for.
11
12We chose GitHub for this set of files because they offer one feature which we hope will make contributing changes easier: [file editing](https://github.com/blog/844-forking-with-the-edit-button) through the web interface.
13
14You can now make changes to any of our site config files and request that your changes be pulled into the main set we maintain. This is what GitHub calls the Fork and Pull model:
15
16> The Fork & Pull Model lets anyone fork an existing repository and push changes to their personal fork without requiring access be granted to the source repository. The changes must then be pulled into the source repository by the project maintainer. This model reduces the amount of friction for new contributors and is popular with open source projects because it allows people to work independently without upfront coordination.
17
18When we receive a pull request we'll review the changes and if everything's okay we'll update our copy.
19
20If a site is not in our set, you can create a file for it in the same way. See [Creating files on GitHub](https://github.com/blog/1327-creating-files-on-github).
21
22### How to write a site config file
23
24The quickest and simplest way is to use our [point-and-click interface](http://siteconfig.fivefilters.org). It's a simple tool only intended to create a rule to extract the correct content block.
25
26For further refinements, e.g. selecting the title, stripping elements, dealing with multi-page articles, please see our [help page](http://help.fivefilters.org/customer/portal/articles/223153-site-patterns).
27
28### Instapaper
29
30When we introduced site patterns, we chose to adopt the [same format](http://blog.instapaper.com/post/730281947) used by Instapaper. This allows us to make use of the existing extraction rules contributed by Instapaper users.
31
32Marco, Instapaper's creator, graciously opened up the database of contributions to everyone:
33
34> And, recognizing that your efforts could be useful to a wide range of other tools and services, I'll make the list of all of these site-specific configurations available to the public, free, with no strings attached.
35
36Most of the extraction rules in our set are borrowed from Instapaper. You can see the list maintained by Instapaper at [instapaper.com/bodytext/](http://instapaper.com/bodytext/) (no longer available since Instapaper was sold).
37
38### Testing site config files
39
40Currently you will have to have a copy of Full-Text RSS to test changes to the site config files. In the future we will try to make this process easier.
diff --git a/inc/3rdparty/site_config/standard/aachener-nachrichten.de.txt b/inc/3rdparty/site_config/standard/aachener-nachrichten.de.txt
deleted file mode 100755
index b60c15de..00000000
--- a/inc/3rdparty/site_config/standard/aachener-nachrichten.de.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //meta[@property='og:title']/@content
2body: //*[@class='fliesstext_detail' or @class='detail_fliesstext'] | //img[@itemprop="image" and starts-with(@src, "/sixcms/media.php/")]
3
4strip_id_or_class: socialshareprivacy1
5strip_id_or_class: zvaFacebookButton
6
7tidy: no
8prune: no
9
10test_url: http://www.aachener-nachrichten.de/lokales/aachen-detail-an/2517757 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/aachener-zeitung.de.txt b/inc/3rdparty/site_config/standard/aachener-zeitung.de.txt
deleted file mode 100755
index 013afa4c..00000000
--- a/inc/3rdparty/site_config/standard/aachener-zeitung.de.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //meta[@property='og:title']/@content
2body: //*[@class='fliesstext_detail' or @class='detail_fliesstext'] | //img[@itemprop="image" and starts-with(@src, "/sixcms/media.php/")]
3
4strip_id_or_class: socialshareprivacy1
5strip_id_or_class: zvaFacebookButton
6
7tidy: no
8prune: no
9
10test_url: http://www.aachener-zeitung.de/sixcms/detail.php?template=az_detail&id=2552718 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/abc.es.txt b/inc/3rdparty/site_config/standard/abc.es.txt
deleted file mode 100755
index 43aadc49..00000000
--- a/inc/3rdparty/site_config/standard/abc.es.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //meta[@property='og:title']/@content
2body: //div[@class='datosi' or @class='date' or @class='photo-alt1' or @class='text' or @itemprop='articleBody']
3strip_id_or_class: colB
4
5prune: no
6
7test_url: http://www.abc.es/20120209/tv-series/abci-house-ultima-temporada-201202090936.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/abc.net.au.txt b/inc/3rdparty/site_config/standard/abc.net.au.txt
deleted file mode 100755
index 22b3a0f4..00000000
--- a/inc/3rdparty/site_config/standard/abc.net.au.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //div[@class='article section']//h1
2author: //div[@class="byline"]/a
3date: //span[@class="timestamp"]
4body: //div[@class="page section"]
5
6strip: //a[@class="inline-caption"]
7strip: //p[@class="ticker section noprint"]
8strip: //p[@class="topics"]
9strip: //h1
10strip: //div[@class="byline"]
11strip: //p[@class="published"]
12strip: //div[contains(@class,"featured-scroller")]
13strip_id_or_class: footer
14
15tidy: no
16
17test_url: http://www.abc.net.au/news/2013-03-27/open-speed-highways-change-clp-giles/4597892
18test_url: http://www.abc.net.au/news/2013-04-30/credit-growth-remains-subdued/4660054?section=business
diff --git a/inc/3rdparty/site_config/standard/abcnews.go.com.txt b/inc/3rdparty/site_config/standard/abcnews.go.com.txt
deleted file mode 100755
index 8d367351..00000000
--- a/inc/3rdparty/site_config/standard/abcnews.go.com.txt
+++ /dev/null
@@ -1,27 +0,0 @@
1title: //h1[@class='headline']
2body: //div[@id='storyText']
3# for video entries
4body: //img[@id='ff-img'] | //div[@id='meta']//div[contains(@class, 'overview')]
5author: //div[@class='byline']
6date: //div[@class='date']
7strip: //*[@id='date_partner']
8
9strip: //div[@class='breadcrumb']
10strip: //div[contains(@class,'show_tools')]
11strip: //div[@id='sponsoredByAd']
12strip: //div[contains(@class,'rel_container')]
13strip: //p[a[starts-with(@href, 'http://www.twitter.com')]]
14strip: //p[a[starts-with(@href, 'http://www.facebook.com')]]
15strip: //p[contains(., 'Click here to return to')]
16#strip_id_or_class: media
17strip_id_or_class: mediaplayer
18
19replace_string(<link rel="image_src" href="http): <img id="ff-img" src="http
20
21prune: no
22
23single_page_link: concat(//li[@class='pager']//a/@href, '&singlePage=true')
24
25test_url: http://abcnews.go.com/Politics/newt-gingrich-rocky-rollout-presidential-campaign-recover/story?id=13632744
26# multi-page
27test_url: http://abcnews.go.com/Blotter/family-freed-american-hostage-somalia-seals-obama/story?id=15439544 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/accesstoinsight.org.txt b/inc/3rdparty/site_config/standard/accesstoinsight.org.txt
deleted file mode 100755
index 45d66533..00000000
--- a/inc/3rdparty/site_config/standard/accesstoinsight.org.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='H_docTitle']
2
3body: //div[@id='H_meta' or @id='H_content' or @id='F_footer']
4
5strip_id_or_class: F_toenail
6
7prune: no
8
9test_url: http://www.accesstoinsight.org/lib/authors/nyanaponika/wheel026.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/acidcow.com.txt b/inc/3rdparty/site_config/standard/acidcow.com.txt
deleted file mode 100755
index 21958651..00000000
--- a/inc/3rdparty/site_config/standard/acidcow.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[starts-with(@id, 'news-id-')]
2
3test_url: http://acidcow.com/fun/20933-acid-picdump-83-pics.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/acquia.com.txt b/inc/3rdparty/site_config/standard/acquia.com.txt
deleted file mode 100755
index 2803611f..00000000
--- a/inc/3rdparty/site_config/standard/acquia.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title://h1[@class="title"]
2author://div[@class="submitted"]/span/a
3date://div[@class="submitted"]/span
4body://div[@class="content-wrapper"]
5
6strip://div[@id="skip-link"]
7strip://div[@id="region-content-3-3"]
8strip://div[@id="section-footer"]
9test_url: https://www.acquia.com/blog/drupals-long-warmth-toward-third-party-code \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/acroswing.fr.txt b/inc/3rdparty/site_config/standard/acroswing.fr.txt
deleted file mode 100755
index 6b1d67fe..00000000
--- a/inc/3rdparty/site_config/standard/acroswing.fr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1tidy:no
2date: //time[@class='updated']
3dissolve: //ul[@class='video-gallery']/li
4dissolve: //ul[@class='video-gallery']
5test_url: http://www.acroswing.fr/actualites/competition_rock/selectif_bellegarde_sur_valserine__2012-02-26.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/adme.ru.txt b/inc/3rdparty/site_config/standard/adme.ru.txt
deleted file mode 100644
index b929685d..00000000
--- a/inc/3rdparty/site_config/standard/adme.ru.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Fwww.adme.ru%2Ftvorchestvo-hudozhniki%2Fprostoj-kak-5-kopeek-hudozhnik-557405%2F
4
5body: //article[contains(concat(' ',normalize-space(@class),' '),' article ')]
6test_url: http://www.adme.ru/tvorchestvo-hudozhniki/prostoj-kak-5-kopeek-hudozhnik-557405/
diff --git a/inc/3rdparty/site_config/standard/aftenposten.no.txt b/inc/3rdparty/site_config/standard/aftenposten.no.txt
deleted file mode 100755
index 8a69c357..00000000
--- a/inc/3rdparty/site_config/standard/aftenposten.no.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1[@class='articleTitle ']
2body: //div[@class='bodyText widget storyContent']
3strip: //p/span[@class='quote']/..
4strip_id_or_class: 'pull1'
5test_url: https://www.aftenposten.no/meninger/spaltister/Portrett-av-scenekunstneren-som-ung-mann-7167959.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/aftonbladet.se.txt b/inc/3rdparty/site_config/standard/aftonbladet.se.txt
deleted file mode 100755
index b6c576a8..00000000
--- a/inc/3rdparty/site_config/standard/aftonbladet.se.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1author: //article//address[contains(@class, 'author')]
2body: //article[.//div[contains(@class, 'abBodyText')]]//*[contains(@class, 'abLeadText') or contains(@class, 'abBodyText') or contains(@class, 'abImageBlock') or contains(@class, 'abIGSatellite')]
3
4strip: //address//img
5strip: //footer
6strip_id_or_class: abSticky
7
8prune: no
9
10test_url: http://www.aftonbladet.se/sportbladet/hockey/sverige/allsvenskan/article17498194.ab
11test_url: http://www.aftonbladet.se/debatt/article16207536.ab
12test_url: http://www.aftonbladet.se/debatt/debattamnen/politik/article17483377.ab
13test_url: http://www.aftonbladet.se/rss.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/aht.seriouseats.com.txt b/inc/3rdparty/site_config/standard/aht.seriouseats.com.txt
deleted file mode 100755
index b2d88a05..00000000
--- a/inc/3rdparty/site_config/standard/aht.seriouseats.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body: //div[@id='content']
2
3# clean up recipe pages
4strip: //h2[@class='fn'] | //h2[@class='double-lined'] | //h3 | //div[@id='threeColumn2'] | //div[@id='threeColumn3']
5
6#recipe pages
7strip_id_or_class: "recipe-feedback"
8strip_id_or_class: "comments"
9strip_id_or_class: "procedure-number"
10strip_id_or_class: "more-with-author"
11
12#slice
13strip_id_or_class: "inner"
14
15test_url: http://aht.seriouseats.com/archives/2009/12/the-burger-lab-salting-ground-beef.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/albayan.ae.txt b/inc/3rdparty/site_config/standard/albayan.ae.txt
deleted file mode 100755
index f6c093d2..00000000
--- a/inc/3rdparty/site_config/standard/albayan.ae.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='main-column']//div[@class='content']
2
3prune: no
4
5test_url: http://www.albayan.ae/across-the-uae/education/2013-08-29-1.1949645
6test_url: http://www.albayan.ae/1.448?ot=ot.AjaxPageLayout \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alex.mullr.net.txt b/inc/3rdparty/site_config/standard/alex.mullr.net.txt
deleted file mode 100755
index c5f15370..00000000
--- a/inc/3rdparty/site_config/standard/alex.mullr.net.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class="entry"]
2test_url: http://alex.mullr.net/blog/2011/05/on-spotify/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alexduner.com.txt b/inc/3rdparty/site_config/standard/alexduner.com.txt
deleted file mode 100755
index 3897f9ec..00000000
--- a/inc/3rdparty/site_config/standard/alexduner.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //section[@class='content']
2date: //span[1]
3author: //h1[@id='sitetitle']
4test_url: http://alexduner.com/blog/something-i-learned-today
diff --git a/inc/3rdparty/site_config/standard/alexduner.squarespace.com.txt b/inc/3rdparty/site_config/standard/alexduner.squarespace.com.txt
deleted file mode 100755
index 875405e4..00000000
--- a/inc/3rdparty/site_config/standard/alexduner.squarespace.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //section[@class='content']
2date: //span[1]
3author: //h1[@id='sitetitle']
4test_url: https://alexduner.squarespace.com/blog/2013/1/tech-culture-from-the-outside-looking-in \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alistapart.com.txt b/inc/3rdparty/site_config/standard/alistapart.com.txt
deleted file mode 100755
index 7a7096e2..00000000
--- a/inc/3rdparty/site_config/standard/alistapart.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1[@class='title']
2author: //h3[@class='byline']/a
3date: //div[@class='ishinfo']
4
5body: //*[@id='articletext']
6strip_id_or_class: 'ishinfo'
7strip_id_or_class: 'metastuff'
8strip_id_or_class: 'learnmore'
9strip_id_or_class: 'discuss'
10
11prune: no
12test_url: http://www.alistapart.com/articles/organizing-mobile/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/aljazeera.com.txt b/inc/3rdparty/site_config/standard/aljazeera.com.txt
deleted file mode 100755
index d3bf4014..00000000
--- a/inc/3rdparty/site_config/standard/aljazeera.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //span[@id='DetailedTitle']
2body: //td[@id='tdTextContent']
3strip_id_or_class: Skyscrapper_Body
4date: //span[@id='ctl00_cphBody_lblDate']
5author: //div[@id="dvAuthorInfo"]//a/text()
6strip: //table[ tbody/tr/td/object ]
7prune: no
8test_url: http://www.aljazeera.com/indepth/opinion/2012/01/2012114121925380575.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/allrecipes.com.txt b/inc/3rdparty/site_config/standard/allrecipes.com.txt
deleted file mode 100755
index 85dc2a5a..00000000
--- a/inc/3rdparty/site_config/standard/allrecipes.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //h1[@id='itemTitle']
2body: //img[@id="ctl00_CenterColumnPlaceHolder_recipe_photoStuff_imgPhoto"] | //div[@id='ctl00_CenterColumnPlaceHolder_recipe_divSubmitter'] | //div[contains(@class, 'recipe-details-content')]
3strip: //div[@class='top-left' or @class='top-right' or @class='bot-left' or @class='bot-right']
4strip: //div[contains(@class, 'rightcoltoolsdiv')]
5strip: //div[contains(@class, 'servings-form')]
6strip: //p[@class='nutritional-information']
7strip: //a[contains(@class, 'nutritional-information') or contains(@class, 'nutritionanchor')]
8strip: //div[@id='nutri-info']/div[contains(@class, 'title')]
9strip: //img[@id='ctl00_CenterColumnPlaceHolder_recipe_imgSubmitter']
10strip_id_or_class: eshaAttribute
11strip_id_or_class: eshaParagraph
12prune: no
13
14test_url: http://allrecipes.com/Recipe/Taco-Pie/Detail.aspx?src=rotd \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/allthingsd.com.txt b/inc/3rdparty/site_config/standard/allthingsd.com.txt
deleted file mode 100755
index f8c67d02..00000000
--- a/inc/3rdparty/site_config/standard/allthingsd.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title://div[@class="article-title"]/h1[@class="title"]
2date: //p[@class="article-date"]
3body://div[contains(@class, "article-body")]
4# Trim out related posts at bottom of article
5strip://blockquote[@class="memo"]
6
7tidy: no
8
9# Yup, no idea why author won't work...
10author://div[@class="page-header article-header clearfix"]/p[@class="title"]
11# [Marco:] Author won't work here because the page defines the "home" link under the author's name as rel="author", which always gets priority if the page has defined it.
12test_url: http://allthingsd.com/20120513/exclusive-yahoos-thompson-out-levinsohn-in-board-settlement-with-loeb-nears-completion/
13test_url: http://allthingsd.com/20131010/google-cio-ben-fried-on-how-google-works/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/allyou.com.txt b/inc/3rdparty/site_config/standard/allyou.com.txt
deleted file mode 100755
index a13a7252..00000000
--- a/inc/3rdparty/site_config/standard/allyou.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[@id='pageHdr']//h1
2body: //div[@id='pageHdr']/*[@class='dek'] | //div[@id='printArticle' or @id='slideShowPrint']
3strip: //div[contains(@class, 'infoBox') or @id='infoBox']
4single_page_link: //li[@id='print']/a
5
6prune: no
7
8test_url: http://www.allyou.com/budget-home/money-shopping/freebies-online-00400000066392/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alphabeta.argaam.com.txt b/inc/3rdparty/site_config/standard/alphabeta.argaam.com.txt
deleted file mode 100755
index da1a67bc..00000000
--- a/inc/3rdparty/site_config/standard/alphabeta.argaam.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class = 'entry']
2date: substring-after(//p[@class="date"],'بتاريخ ')
3strip_id_or_class: date
4strip_id_or_class: follow-single
5strip_id_or_class: ratingblock
6strip_id_or_class: newRatingHolder
7strip_id_or_class: postmetadata
8strip_id_or_class: addthis_toolbox
9strip_id_or_class: addthis_default_style
10strip_id_or_class: size-full
11test_url: http://alphabeta.argaam.com/?p=35657 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alriyadh.com.txt b/inc/3rdparty/site_config/standard/alriyadh.com.txt
deleted file mode 100755
index be7c43d5..00000000
--- a/inc/3rdparty/site_config/standard/alriyadh.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id = "article-view"]
2body: //div[contains(@class, 'article')]//div[contains(@class, 'photo_bg')]
3author: //p[@class = "author"]
4strip: //h1
5strip: //h2
6strip_id_or_class: author
7prune: no
8test_url: http://www.alriyadh.com/2011/10/10/article674357.html
9test_url: http://www.alriyadh.com/net/article/780935 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alseraj.net.txt b/inc/3rdparty/site_config/standard/alseraj.net.txt
deleted file mode 100755
index 107d82d6..00000000
--- a/inc/3rdparty/site_config/standard/alseraj.net.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title: //*[@id='normalfontyellow']
2test_url: http://www.alseraj.net/cgi-bin/pros/av/LeqaTextDisplay.cgi?display&2 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alt1040.com.txt b/inc/3rdparty/site_config/standard/alt1040.com.txt
deleted file mode 100755
index 4fd45719..00000000
--- a/inc/3rdparty/site_config/standard/alt1040.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://alt1040.com/2011/09/banda-ancha-en-america-latina-insignificante \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alternet.org.txt b/inc/3rdparty/site_config/standard/alternet.org.txt
deleted file mode 100755
index e92252eb..00000000
--- a/inc/3rdparty/site_config/standard/alternet.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1single_page_link: //div[contains(@class, 'story_tools')]//a[contains(@href, '/print/')]
2
3test_url: http://www.alternet.org/civil-liberties/noam-chomsky-surveillance-state-beyond-imagination-being-created-one-freest
4test_url: http://feeds.feedblitz.com/alternet \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/altfoto.com.txt b/inc/3rdparty/site_config/standard/altfoto.com.txt
deleted file mode 100755
index d974cf4a..00000000
--- a/inc/3rdparty/site_config/standard/altfoto.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://altfoto.com/2011/09/nikon-presenta-su-nuevo-sistema-nikon-1-y-dos-nuevas-camaras \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/alumni.stanford.edu.txt b/inc/3rdparty/site_config/standard/alumni.stanford.edu.txt
deleted file mode 100755
index a5bd03bf..00000000
--- a/inc/3rdparty/site_config/standard/alumni.stanford.edu.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1
2
3author: substring-after(//div[@class="enableBullets"]/preceding-sibling::p[1], "By ")
4
5date: //div/a[contains (@href, "issue")]
6
7move_into(//div[@class="enableBullets"]/p): (//div[@id="content"]//img)[1]
8
9body: //div[@class="enableBullets"]
10test_url: http://alumni.stanford.edu/get/page/magazine/article/?article_id=54819 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/amandala.com.bz.txt b/inc/3rdparty/site_config/standard/amandala.com.bz.txt
deleted file mode 100755
index fb0e21b8..00000000
--- a/inc/3rdparty/site_config/standard/amandala.com.bz.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='content']//div[contains(@class, 'content')]
2strip_id_or_class: widget
3strip: //a[contains(@href, 'upm_export=')]
4
5test_url: http://amandala.com.bz/news/feed/
6test_url: http://amandala.com.bz/news/poor-pse-results-30-raise/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/amazon.com.txt b/inc/3rdparty/site_config/standard/amazon.com.txt
deleted file mode 100755
index cd7ad159..00000000
--- a/inc/3rdparty/site_config/standard/amazon.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //span[@id = 'btAsinTitle']
2body: (//*[@id='prodImageCell']//a)[1] | //div[@id = 'ps-content'] | //span[@id='actualPriceValue'] | //h2[.='Product Details']/following-sibling::div | //div[@class='h2' and .='Product Description']/following-sibling::div
3#strip_id_or_class: quantityDropdownDiv
4#strip_id_or_class: addToCartSpan
5#strip_id_or_class: oneClickDiv
6strip_id_or_class: nocontent
7strip_id_or_class: masDynamicConten
8strip_id_or_class: dynamic-content
9prune: no
10
11find_string: <span id="actualPriceValue">
12replace_string: <span id="actualPriceValue"><br />Price:
13
14strip_id_or_class: collapsePS
15strip_id_or_class: expandPS
16strip_id_or_class: psPlaceHolde
17strip: //li[contains(., 'update product info') or contains(., 'give feedback on images')]
18
19test_url: http://www.amazon.com/Common-Sense-Forestry-Living-Mother/dp/1931498210/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/americandrink.net.txt b/inc/3rdparty/site_config/standard/americandrink.net.txt
deleted file mode 100755
index 7145f3ff..00000000
--- a/inc/3rdparty/site_config/standard/americandrink.net.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='head']/h2/a
2author: //div[@class='head']/a
3date: //div[@class='head']/p[@class='date']/a
4body: //div[@class='copy']
5strip: //p[@class='meta']
6test_url: http://americandrink.net/post/10567188712/free-the-hooch \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/americascup.com.txt b/inc/3rdparty/site_config/standard/americascup.com.txt
deleted file mode 100755
index 31723f81..00000000
--- a/inc/3rdparty/site_config/standard/americascup.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //div[@class="editorial-content"]/h3
2body: //div[@class="hero-image" or @class="editorial-content"]
3
4strip: //ul[@class="hero-caption"]
5strip_id_or_class: footer
6
7prune: no
8tidy: no
9
10test_url: http://www.americascup.com/en/Latest/News/2012/3/Coutts-and-Peyron-tell-transformative-tale-at-Global-Sports-Forum/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/americastestkitchenfeed.com.txt b/inc/3rdparty/site_config/standard/americastestkitchenfeed.com.txt
deleted file mode 100755
index c2b62b5a..00000000
--- a/inc/3rdparty/site_config/standard/americastestkitchenfeed.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1[@class="post-title"]
2author: //span[@class="author"]/a
3date: //span[@class="date"]
4body: //div[@class="post-content main"]
5test_url: http://www.americastestkitchenfeed.com/gadgets-and-gear/2012/07/chill-out-with-tovolos-king-cube-silicone-ice-cube-tray/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/amptoons.com.txt b/inc/3rdparty/site_config/standard/amptoons.com.txt
deleted file mode 100755
index 87547c63..00000000
--- a/inc/3rdparty/site_config/standard/amptoons.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //title
2
3body: //div[@class="entry-content"]
4
5author: //span[@class="author vcard"]
6
7date: //span[@class="entry-date"]
8test_url: http://www.amptoons.com/blog/2013/03/14/open-thread-and-link-farm-i-hate-being-sick-edition/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/anandtech.com.txt b/inc/3rdparty/site_config/standard/anandtech.com.txt
deleted file mode 100755
index fc95c5d8..00000000
--- a/inc/3rdparty/site_config/standard/anandtech.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body: //section[@class='main_cont']/img | //div[@class='articleContent']
2title: //div[@class='blog_top_left']//h2
3author: //a[@class='b'][1]
4date: substring-after(substring-before(//div, 'Posted in'), ' on ')
5strip_image_src: /content/images/globals/
6strip: //h2[. = 'Page 1']/preceding::p
7strip: //h2
8
9prune: no
10
11single_page_link: concat('http://www.anandtech.com/print/', substring-after(//meta[@property='og:url']/@content, '/show/'))
12
13test_url: http://www.anandtech.com/show/8370/gigabyte-am1m-s2h-review
14test_url: http://www.anandtech.com/show/8402/sandisk-releases-ultra-ii-ssd-the-second-tlc-nand-ssd-in-the-market
15test_url: http://www.anandtech.com/show/8400/arms-cortex-m-even-smaller-and-lower-power-cpu-cores
diff --git a/inc/3rdparty/site_config/standard/androidpolice.com.txt b/inc/3rdparty/site_config/standard/androidpolice.com.txt
deleted file mode 100755
index 8f9b1a21..00000000
--- a/inc/3rdparty/site_config/standard/androidpolice.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='post_content']
2date: //div[@class='date_day'] | div[@class='date_month']
3
4test_url: http://www.androidpolice.com/2014/03/30/music-boss-for-pebble-can-now-control-playback-and-volume-on-chromecast-content-from-your-smartwatch/
5
diff --git a/inc/3rdparty/site_config/standard/andyrutledge.com.txt b/inc/3rdparty/site_config/standard/andyrutledge.com.txt
deleted file mode 100755
index ce31fcf5..00000000
--- a/inc/3rdparty/site_config/standard/andyrutledge.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h2
2author: string('Andy Rutledge')
3date: //div[@class='articledate']
4body: //div[@class='copybody']
5
6strip: //*[@class='space']
7strip: //*[@class='articleFoot']
8
9test_url: http://www.andyrutledge.com/hungry-for-a-better-menu.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/annatravelling.wordpress.com.txt b/inc/3rdparty/site_config/standard/annatravelling.wordpress.com.txt
deleted file mode 100755
index 2d8937f7..00000000
--- a/inc/3rdparty/site_config/standard/annatravelling.wordpress.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h1[@class="title"]
2
3author: ("Anna Manasova")
4# is ignored, unfortunately
5
6date: //p[@class="date"]
7
8body: //div[@class="entry"]
9test_url: http://annatravelling.wordpress.com/2011/11/07/a-day-of-cooking-thai/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/apotheke-adhoc.de.txt b/inc/3rdparty/site_config/standard/apotheke-adhoc.de.txt
deleted file mode 100755
index 3a702e7b..00000000
--- a/inc/3rdparty/site_config/standard/apotheke-adhoc.de.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1# Author: zinnober
2
3prune: no
4
5title: substring-before(//div[@id='content']/h1, ',')
6
7single_page_link: //a[@title='Seite drucken']
8
9body: //div[@id='detail-body']
10
11replace_string(<span class="description">): <em>
12replace_string(<p class="leadtext"><small>): <p class="leadtext">
13
14# Fix headlines
15replace_string(Patrick Hollstein): &nbsp;
16replace_string(APOTHEKE ADHOC): &nbsp;
17replace_string(dpa): &nbsp;
18replace_string(Katharina Lübke): &nbsp;
19replace_string(Julia Pradel): &nbsp;
20replace_string(Franziska Gerhardt): &nbsp;
21
22test_url: http://www.apotheke-adhoc.de/nachrichten/politik/nachricht-detail-politik/deutscher-apothekertag-antraege-gegen-lieferengpaesse-2/
23
diff --git a/inc/3rdparty/site_config/standard/applature.com.txt b/inc/3rdparty/site_config/standard/applature.com.txt
deleted file mode 100755
index a820bba4..00000000
--- a/inc/3rdparty/site_config/standard/applature.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //h1[contains(@class, 'title')#
2body: //div[@id='mainContent']//div[contains(@class, 'section_content')] | //ul[@class='section_footer']
3date: //div[@class='date']
4
5strip_id_or_class: sharethis
6strip_id_or_class: stats
7strip_id_or_class: apply_form
8strip_id_or_class: job_map
9strip_id_or_class: respond
10strip: //h1//span[@class='type']
11strip: //li[@class='print' or @class='map']
12
13replace_string(<ul class="section_footer" style="display): <ul class="section_footer" style="display-bla
14
15prune: no
16tidy: no
17
18test_url: http://applature.com/mining-jobs/jobs/nickel-west-leinster-analytical-laboratory-technician/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/apple.com.txt b/inc/3rdparty/site_config/standard/apple.com.txt
deleted file mode 100755
index a54dccc8..00000000
--- a/inc/3rdparty/site_config/standard/apple.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1strip: //p[@class='sosumi']
2# Aren't they witty?
3
4# I can't work out what causes the  before the title.
5title: //h1[@class='title']
6strip: //h1[@class='title']
7test_url: http://www.apple.com/pr/library/2011/02/15appstore.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/appledaily.com.tw.txt b/inc/3rdparty/site_config/standard/appledaily.com.tw.txt
deleted file mode 100755
index 82d6f376..00000000
--- a/inc/3rdparty/site_config/standard/appledaily.com.tw.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[contains(@class, 'articulum')]
2
3test_url: http://www.appledaily.com.tw/realtimenews/article/new/20140120/330479
4test_url: http://www.appledaily.com.tw/rss/create/kind/rnews/type/new/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/appleinsider.com.txt b/inc/3rdparty/site_config/standard/appleinsider.com.txt
deleted file mode 100755
index 5ae1050b..00000000
--- a/inc/3rdparty/site_config/standard/appleinsider.com.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1title: //h1[@class="art-head"]
2
3author: //p[contains(@class, 'byline')]/a
4#author: //p[text() = 'By ']/a/text()
5#strip: //p[text() = 'By ']
6
7date: //p[contains(@class, 'date-header')]
8
9body: //div[@class="article"]
10strip_id_or_class: lazy
11#strip_id_or_class: minor
12strip_id_or_class: multipagefooter
13strip_id_or_class: date-header
14strip_id_or_class: byline
15
16find_string: <noscript>
17replace_string: <div>
18find_string: </noscript>
19replace_string: </div>
20
21test_url: http://www.appleinsider.com/articles/12/02/29/inside_os_x_108_mountain_lion_safari_52_gets_a_simplified_user_interface_with_new_sharing_features.html
22test_url: http://appleinsider.com/articles/13/10/03/goldee-companion-app-for-philips-hue-bulbs-offers-shifting-dynamic-light-scenes
23test_url: http://appleinsider.com/appleinsider.rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/appleweblog.com.txt b/inc/3rdparty/site_config/standard/appleweblog.com.txt
deleted file mode 100755
index 023c9ccb..00000000
--- a/inc/3rdparty/site_config/standard/appleweblog.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://appleweblog.com/2011/09/encontrada-vulnerabilidad-grave-en-skype-para-ios \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/archdaily.com.txt b/inc/3rdparty/site_config/standard/archdaily.com.txt
deleted file mode 100755
index 0178639e..00000000
--- a/inc/3rdparty/site_config/standard/archdaily.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1date: //div[@class='post_date']
2
3body: //div[@class='post_content']
4
5test_url: http://www.archdaily.com/185325/p10-mixed-use-building-studio-up \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/archiveofourown.org.txt b/inc/3rdparty/site_config/standard/archiveofourown.org.txt
deleted file mode 100755
index 579de517..00000000
--- a/inc/3rdparty/site_config/standard/archiveofourown.org.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1# Description: Fix XPaths to include ALL chapters on 'view_full_work' pages.
2# Include: work meta, summary, chapter information, and notes which Instapaper strips out on default.
3# Exclude: header, footer, navigation, comments.
4# Notes: User is a newbie with XPaths.
5
6title: //h2[@class='title']
7author: //h3[@class='byline']
8author: //a[@class='login author']
9
10strip_id_or_class:header
11strip_id_or_class:navigation
12strip_id_or_class:feedback
13strip_id_or_class:kudos
14strip_id_or_class:add_comment_placeholder
15strip_id_or_class:add_comment
16strip_id_or_class:globalize
17strip_id_or_class:footer
18
19single_page_link: //div[@id='main']//a[contains(@href, 'view_adult=true')]
20
21test_url: http://archiveofourown.org/works/229402?view_full_work=true
22test_url: http://archiveofourown.org/works/750111/chapters/1399929 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/arstechnica.com.txt b/inc/3rdparty/site_config/standard/arstechnica.com.txt
deleted file mode 100755
index eb92aa2c..00000000
--- a/inc/3rdparty/site_config/standard/arstechnica.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1author: //p[@class='byline']/a
2body: //div[contains(@class,'article-content')]
3strip: //h2[@class='title']
4strip_id_or_class: byline
5strip_id_or_class: story-sidebar
6prune: no
7
8date: //div[@class='byline']/span[@class='posted']//abbr/@original-title
9date: //div[@class='byline']/span[@class='posted']//abbr
10
11title: //div[@id='story']//h2[@class='title']
12
13strip: //div[@class='pager']
14next_page_link: //nav//a[span/@class='next']/@href
15
16native_ad_clue: //meta[@property="og:url" and contains(@content, '/sponsored/')]
17
18test_url: http://arstechnica.com/tech-policy/news/2012/02/gigabit-internet-for-80-the-unlikely-success-of-californias-sonicnet.ars
19test_url: http://arstechnica.com/apple/2005/04/macosx-10-4/
diff --git a/inc/3rdparty/site_config/standard/articles.boston.com.txt b/inc/3rdparty/site_config/standard/articles.boston.com.txt
deleted file mode 100755
index 73bcdb4e..00000000
--- a/inc/3rdparty/site_config/standard/articles.boston.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class="mod-bostonarticleheader mod-articleheader"]/h1
2author: substring-after(//div[@class="mod-bostonarticlebyline mod-articlebyline"]/span[3],"By ")
3date: //div[@class="mod-bostonarticlebyline mod-articlebyline"]/span[@class="pubdate"]
4
5strip_id_or_class: mod-pagination
6test_url: http://articles.boston.com/2011-10-23/news/30313691_1_bigfoot-free-speech-monadnock-state-park \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/articles.courant.com.txt b/inc/3rdparty/site_config/standard/articles.courant.com.txt
deleted file mode 100755
index 984d81de..00000000
--- a/inc/3rdparty/site_config/standard/articles.courant.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //div[@class="mod-courantarticleheader mod-articleheader"]/h1
2date: //div[@class="mod-courantarticlebyline mod-articlebyline"]/span[@class="pubdate"]
3author: //div[@class="mod-courantarticlebyline mod-articlebyline"]/span[3]
4
5strip_id_or_class: mod-article-byline
6strip_id_or_class: mod-article-header
7strip_id_or_class: mod-article-subtitle
8#This leaves some crud after the article, but it's better than nothing.
9#It would be ideal if we could set the body to every element matching //div[contains(@class, "mod-articletext")]/p, but it seems like body only takes the first matching element.
10
11test_url: http://articles.courant.com/2011-10-22/news/hc-green-drugsearch--1022-20111022_1_drugs-in-student-lockers-police-dogs-lockdown \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/articles.washingtonpost.com.txt b/inc/3rdparty/site_config/standard/articles.washingtonpost.com.txt
deleted file mode 100755
index a76c2d02..00000000
--- a/inc/3rdparty/site_config/standard/articles.washingtonpost.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[contains(@class, "article_body")]
2# print view
3body: //div[@id='print_facet']//div[@id='body']
4
5tidy: no
6prune: no
7
8single_page_link: concat(substring-before(//div[@id="echo_container_a"]/@guid, '_story.html'), '_print.html')
9
10test_url: http://articles.washingtonpost.com/2011-10-22/world/35279694_1_germany-acts-german-leaders-chancellor-angela-merkel
11test_url: http://articles.washingtonpost.com/2013-05-31/opinions/39658000_1_chemical-weapons-mass-destruction-cartels \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/asahi.com.txt b/inc/3rdparty/site_config/standard/asahi.com.txt
deleted file mode 100755
index b4eec7bd..00000000
--- a/inc/3rdparty/site_config/standard/asahi.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='HeadLine']
2strip: //div[@id='utility_right']
3test_url: http://www.asahi.com/culture/update/0520/TKY201105200321.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ascarter.net.txt b/inc/3rdparty/site_config/standard/ascarter.net.txt
deleted file mode 100755
index 0327e846..00000000
--- a/inc/3rdparty/site_config/standard/ascarter.net.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1[@class='article_title']
2author: //span[@class='author']
3date: //h2[@class='dateline']
4body: //div[@class='article_body']
5test_url: http://ascarter.net/2012/02/20/enough-is-enough.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/astronews.com.txt b/inc/3rdparty/site_config/standard/astronews.com.txt
deleted file mode 100755
index 8de22270..00000000
--- a/inc/3rdparty/site_config/standard/astronews.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //span[@class='titel']
2author: //span[@class='metadaten_C']/a//span[@class='metadaten_C']
3date: substring-after(//span[@class='metadaten_C'],'astronews.com')
4strip: //span[@class='bu']
5strip_image_src: '/_images/'
6
7test_url: http://www.astronews.com/news/artikel/2011/10/1110-021.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/asymco.com.txt b/inc/3rdparty/site_config/standard/asymco.com.txt
deleted file mode 100755
index f639b048..00000000
--- a/inc/3rdparty/site_config/standard/asymco.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1# Johannes Stühler
2
3title://h2
4author://span[@class='meta-content']
5date://abbr[@class='date published']/@title
6body://div[@class='entry-content']
7
8test_url: http://www.asymco.com/2011/01/14/is-android-more-efficient-than-ios-at-generating-search-revenue/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/autoblog.com.txt b/inc/3rdparty/site_config/standard/autoblog.com.txt
deleted file mode 100755
index 291db992..00000000
--- a/inc/3rdparty/site_config/standard/autoblog.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1prune: no
2body: //div[@class='post-body']
3author: //p[@class='byline']//a
4date: substring-after(//div[@class='about']/p[2], 'Posted')
5strip: //div[@class='body']/div[@class='meta']
6test_url: http://www.autoblog.com/2012/01/17/next-gen-bmw-x5-caught-again/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/autocar.co.uk.txt b/inc/3rdparty/site_config/standard/autocar.co.uk.txt
deleted file mode 100755
index 9f4fe18b..00000000
--- a/inc/3rdparty/site_config/standard/autocar.co.uk.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //div[@class='col-center']/h1
2author: //div[@class='personality']/a
3date: //div[@class='personality-date']
4body: //div[@class='content-top ']//div[@class='content'][1] | //div[contains(@class,'article-body')] | //div[contains(@class,'main-article')]
5
6next_page_link: //div[@id='review-link']/a
7
8strip: //div[@class='author-block']
9strip: //p//iframe[contains(@src,'signup')]/preceding::p[1]
10
11test_url: http://www.autocar.co.uk/car-review/volkswagen/golf
12test_url: http://www.autocar.co.uk/car-news/pebble-beach/saleen-unveils-performance-electric-vehicle-based-tesla-model-s
13test_url: http://www.autocar.co.uk/car-review/rolls-royce/first-drives/rolls-royce-ghost-series-ii-first-drive-review
diff --git a/inc/3rdparty/site_config/standard/avclub.com.txt b/inc/3rdparty/site_config/standard/avclub.com.txt
deleted file mode 100755
index c365a7aa..00000000
--- a/inc/3rdparty/site_config/standard/avclub.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: //*[@id="article_wrapper"]/div[1]/a[1]
2body: //*[@id="article_wrapper"]/div[2]
3date: //*[@id="article_wrapper"]/div[1]/text()[2]
4test_url: http://www.avclub.com/articles/forgetmenot,70904 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/baltimoresun.com.txt b/inc/3rdparty/site_config/standard/baltimoresun.com.txt
deleted file mode 100755
index 35b62427..00000000
--- a/inc/3rdparty/site_config/standard/baltimoresun.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1single_page_link: //div[@class='toppaginate']//a[@rel='nofollow']
2convert_double_br_tags: yes
3
4title: //div[@class="story"]/h1
5body: //div[@id="story-body-text"]
6author: //span[@class="byline"]
7date: //p[@class="date"]
8
9strip: //*[@class='all']
10strip: //*[@class='articlerail']
11
12test_url: http://www.baltimoresun.com/news/maryland/bs-md-omalley-budget-2-20120116,0,5340585.story \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/baseballprospectus.com.txt b/inc/3rdparty/site_config/standard/baseballprospectus.com.txt
deleted file mode 100755
index 1207b343..00000000
--- a/inc/3rdparty/site_config/standard/baseballprospectus.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //h1[@class='title']
2author: //p[@class="author"]/a[1]
3body: //div[@class="article"]
4date: //p[@class="date"]
5
6# remove user tools
7strip: //div[@class='tools']
8strip: //h1
9strip: //h2[@class='subtitle']
10strip: //p[@class='author']
11strip: //p[@class='date']
12
13test_url: http://www.baseballprospectus.com/article.php?articleid=18463 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/basicthinking.de.txt b/inc/3rdparty/site_config/standard/basicthinking.de.txt
deleted file mode 100755
index f08c1f26..00000000
--- a/inc/3rdparty/site_config/standard/basicthinking.de.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h2
2date: //span[@class='date']
3body: //div[@class='entry']
4
5strip: //div[@class='zusatz']
6
7test_url: http://www.basicthinking.de/blog/2011/12/13/sagt-social-networks-adieu-begrust-private-networks/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bb.is.txt b/inc/3rdparty/site_config/standard/bb.is.txt
deleted file mode 100755
index 57f7fdfa..00000000
--- a/inc/3rdparty/site_config/standard/bb.is.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1author: substring(//h3[@class='headlines']/span[@class='dates'],0,string-length(//h3[@class='headlines']/span[@class='dates'])-20)
2
3
4date: substring((//h3[@class='headlines']/span[@class='dates']),string-length(//h3[@class='headlines']/span[@class='dates'])-18,12)
5
6
7body: //div[@class='first-article-big']
8strip: //table[@class='newsimagecontainer']
9strip: //h3[@class='headlines']
10strip: //iframe[@class='headlines']
11strip: //a[@class='newslink']
12convert_double_br_tags: yes
13test_url: http://bb.is/Pages/82?NewsID=174119 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bbc.co.uk.txt b/inc/3rdparty/site_config/standard/bbc.co.uk.txt
deleted file mode 100755
index bad77654..00000000
--- a/inc/3rdparty/site_config/standard/bbc.co.uk.txt
+++ /dev/null
@@ -1,55 +0,0 @@
1body: //div[@class="story-body"]
2# for video entries
3body: //div[contains(@class, "videoInStory") or @id="meta-information"]
4title: //h1[@class="story-header"]
5date: //span[@class="story-date"]/span[@class='date']
6# for sport site
7date: //meta[@name='DCTERMS.created']/@content
8author: //div[@id='headline']//span[@class='byline-name']
9
10# recipes, e.g. http://www.bbc.co.uk/food/recipes/mymincepies_71055
11body: //div[contains(@class, 'hrecipe')]//div[@id='subcolumn-1']
12
13#strip: //div[@class="story-feature narrow"]
14#strip: //div[@class="story-feature wide"]
15#strip: //div[@class="story-feature dslideshow-enclosure"]
16strip: //div[contains(@class, "story-feature") and not(contains(@class, 'full-width'))]
17strip: //span[@class="story-date"]
18#strip: //div[@class="caption body-narrow-width"]
19strip: //div[@class="warning"]//p
20strip: //div[@id='page-bookmark-links-head']
21strip: //object
22strip: //div[contains(@class, "bbccom_advert_placeholder")]
23strip: //div[contains(@class, "embedded-hyper")]
24strip: //div[contains(@class, 'market-data')]
25strip: //a[contains(@class, 'hidden')]
26strip: //div[contains(@class, 'hypertabs')]
27strip: //div[contains(@class, 'related')]
28strip: //form[@id='comment-form']
29strip: //div[contains(@class, 'comment-introduction')]
30strip: //div[contains(@class, 'share-tools')]
31strip: //div[@id='also-related-links']
32
33strip_id_or_class: share-help
34strip_id_or_class: comments_module
35
36replace_string(<noscript>): <div>
37replace_string(</noscript>): </div>
38
39tidy: no
40prune: no
41
42dissolve: //h2
43
44test_url: http://www.bbc.co.uk/sport/0/football/23224017
45test_contains: Swansea City have completed the club-record signing
46
47test_url: http://www.bbc.co.uk/news/business-15060862
48test_contains: Europe's leaders are meeting again to try to solve
49
50# news feed
51test_url: http://feeds.bbci.co.uk/news/rss.xml
52# sports feed
53test_url: http://feeds.bbci.co.uk/sport/0/football/rss.xml?edition=int
54# video entry
55test_url: http://www.bbc.co.uk/news/world-asia-22056933
diff --git a/inc/3rdparty/site_config/standard/bbc.com.txt b/inc/3rdparty/site_config/standard/bbc.com.txt
deleted file mode 100755
index c04a683e..00000000
--- a/inc/3rdparty/site_config/standard/bbc.com.txt
+++ /dev/null
@@ -1,60 +0,0 @@
1body: //div[@class="story-body"]
2# for video entries
3body: //div[contains(@class, "videoInStory") or @id="meta-information"]
4title: //h1[@class="story-header"]
5date: //span[@class="story-date"]/span[@class='date']
6# for sport site
7date: //meta[@name='DCTERMS.created']/@content
8author: //div[@id='headline']//span[@class='byline-name']
9
10# recipes, e.g. http://www.bbc.co.uk/food/recipes/mymincepies_71055
11body: //div[contains(@class, 'hrecipe')]//div[@id='subcolumn-1']
12
13#strip: //div[@class="story-feature narrow"]
14#strip: //div[@class="story-feature wide"]
15#strip: //div[@class="story-feature dslideshow-enclosure"]
16strip: //div[contains(@class, "story-feature") and not(contains(@class, 'full-width'))]
17strip: //span[@class="story-date"]
18#strip: //div[@class="caption body-narrow-width"]
19strip: //div[@class="warning"]//p
20strip: //div[@id='page-bookmark-links-head']
21strip: //object
22strip: //div[contains(@class, "bbccom_advert_placeholder")]
23strip: //div[contains(@class, "embedded-hyper")]
24strip: //div[contains(@class, 'market-data')]
25strip: //a[contains(@class, 'hidden')]
26strip: //div[contains(@class, 'hypertabs')]
27strip: //div[contains(@class, 'related')]
28strip: //form[@id='comment-form']
29strip: //div[contains(@class, 'comment-introduction')]
30strip: //div[contains(@class, 'share-tools')]
31strip: //div[@id='also-related-links']
32
33strip_id_or_class: share-help
34strip_id_or_class: comments_module
35
36replace_string(<noscript>): <div>
37replace_string(</noscript>): </div>
38
39native_ad_clue: //meta[@property="og:url" and contains(@content, '/sponsored/')]
40
41tidy: no
42prune: no
43
44dissolve: //h2
45
46test_url: http://www.bbc.com/sport/0/football/28918021
47test_contains: Cameroonian footballer Albert Ebosse has died
48
49test_url: http://www.bbc.com/sport/0/football/23224017
50
51test_url: http://www.bbc.com/news/business-15060862
52test_contains: Europe's leaders are meeting again to try
53
54
55# news feed
56test_url: http://feeds.bbci.co.uk/news/rss.xml
57# sports feed
58test_url: http://feeds.bbci.co.uk/sport/0/football/rss.xml?edition=int
59# video entry
60test_url: http://www.bbc.com/news/world-asia-22056933
diff --git a/inc/3rdparty/site_config/standard/bbcgoodfood.com.txt b/inc/3rdparty/site_config/standard/bbcgoodfood.com.txt
deleted file mode 100755
index 1547d625..00000000
--- a/inc/3rdparty/site_config/standard/bbcgoodfood.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //header//h1
2#body: //article[contains(@class, 'node-full')]
3body: //div[contains(@class, 'recipe-details') or contains(@class, 'tips-carousel')] | //section[@id='recipe-ingredients' or @id='recipe-method']
4
5strip_id_or_class: recipe-rating-wrapper
6strip_id_or_class: magazine-subcribe-header
7strip_id_or_class: hide
8strip_id_or_class: recipe-actions
9strip_id_or_class: buy-ingredients
10strip_id_or_class: related-content
11strip_id_or_class: recipe-magazine-ad
12strip_id_or_class: copy-right
13
14prune: no
15
16test_url: http://www.bbcgoodfood.com/recipes/1131634/minced-beef-wellington \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/benoitmaison.org.txt b/inc/3rdparty/site_config/standard/benoitmaison.org.txt
deleted file mode 100755
index 72c1baed..00000000
--- a/inc/3rdparty/site_config/standard/benoitmaison.org.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1body: //div[@class="entry-content"]
2
3# Remove text &lsquo;Tweet&rsquo;
4strip: //div[@class="entry-content"]/div[last()]
5
6title: h1[@class="entry-title"]
7
8# If the Instapaper text parser worked with HTML5 tags, we would use:
9date: //time[@class="entry-date"]
10
11# But since it does not, use this more complicated rule:
12date: //div[@class="entry-meta"]/a[@rel="bookmark"]
13
14# Unfortunately, the following rule is overridden by the automatically found author.
15author: ("Benoit Maison")
16test_url: http://www.benoitmaison.org/2011/12/06/why-siri-had-to-start-in-beta/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/berlingske.dk.txt b/inc/3rdparty/site_config/standard/berlingske.dk.txt
deleted file mode 100755
index 9f8c41c6..00000000
--- a/inc/3rdparty/site_config/standard/berlingske.dk.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h1[@class='headline']
2body: //div[contains(@class, 'article-wrapper')]
3test_url: http://www.berlingske.dk/danmark/festen-er-flyttet-nordpaa \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bernama.com.txt b/inc/3rdparty/site_config/standard/bernama.com.txt
deleted file mode 100755
index fdc04b7f..00000000
--- a/inc/3rdparty/site_config/standard/bernama.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[contains(@class, "NewsText"]
2prune: no
3
4test_url: http://www.bernama.com/bernama/v7/rss/english.php
5test_url: http://www.bernama.com/bernama/v7/newsindex.php?id=943513 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/betabeat.com.txt b/inc/3rdparty/site_config/standard/betabeat.com.txt
deleted file mode 100755
index 7815cf26..00000000
--- a/inc/3rdparty/site_config/standard/betabeat.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class="entry-content"]
2test_url: http://www.betabeat.com/2011/07/04/sheryl-sandberg-breaks-through-silicon-valleys-boys-club-sort-of/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/betanews.com.txt b/inc/3rdparty/site_config/standard/betanews.com.txt
deleted file mode 100755
index 90a54a23..00000000
--- a/inc/3rdparty/site_config/standard/betanews.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# some articles at this site like this one doesn't
2# seem to pick up the article body via normal
3# processing, other articles come through fine
4# http://www.betanews.com/joewilcox/article
5# /Google-is-a-marketing-sensation/1309708375
6body: //*[@id="article"]
7test_url: http://www.betanews.com/joewilcox/article/Google-is-a-marketing-sensation/1309708375 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/biography.com.txt b/inc/3rdparty/site_config/standard/biography.com.txt
deleted file mode 100755
index e431037a..00000000
--- a/inc/3rdparty/site_config/standard/biography.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[contains(@class, 'main-content')]//h1
2body: //div[@class='summary-column'] | //div[contains(@class, 'main-content')]
3
4prune: no
5
6single_page_link: //div[@id='biography-action-links']//a[contains(@href, '/print/')]
7
8test_url: http://www.biography.com/print/profile/martin-luther-9389283 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bit-tech.net.txt b/inc/3rdparty/site_config/standard/bit-tech.net.txt
deleted file mode 100755
index c6f5b204..00000000
--- a/inc/3rdparty/site_config/standard/bit-tech.net.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1body: //div[@id='column_1']
2next_page_link: //div[@class='next']/a[not(contains(@href, '/comments') or contains(@href, '/news/'))]
3prune: no
4
5author: substring-after(//p[@class='byline'], 'by ')
6date: substring-before(substring-after(//p[@class='byline'], 'on '), ' by')
7
8strip: //h1
9strip_id_or_class: socialLinks
10strip_id_or_class: byline
11strip_id_or_class: pageSelector
12strip_id_or_class: articleTabs
13strip_id_or_class: pageNav
14strip_id_or_class: share
15strip_id_or_class: commentsContainer
16strip_id_or_class: below_article_related
17
18test_url: http://www.bit-tech.net/hardware/storage/2014/08/13/ocz-arc-100-240gb-review/1
19test_url: http://www.bit-tech.net/news/bits/2014/08/15/google-trojan/1
diff --git a/inc/3rdparty/site_config/standard/bitelia.com.txt b/inc/3rdparty/site_config/standard/bitelia.com.txt
deleted file mode 100755
index 7bffae93..00000000
--- a/inc/3rdparty/site_config/standard/bitelia.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://bitelia.com/2011/09/klout-midiendo-influencia \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bizjournals.com.txt b/inc/3rdparty/site_config/standard/bizjournals.com.txt
deleted file mode 100755
index cfba766f..00000000
--- a/inc/3rdparty/site_config/standard/bizjournals.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1date: //meta[@name='publish-date']/@content
2body: //div[contains(@class, 'articleContentWrapper')]
3prune: no
4
5strip: //div[contains(@class, 'staff_info')]//dd[contains(., 'Twitter')]
6
7strip_id_or_class: related_content
8strip_id_or_class: enlarge
9strip_id_or_class: photoBy
10strip_id_or_class: older
11
12test_url: http://www.bizjournals.com/cincinnati/news/2013/10/03/harris-teeter-shareholders-vote-on.html
13test_url: http://feeds.bizjournals.com/industry_20?format=xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bjango.com.txt b/inc/3rdparty/site_config/standard/bjango.com.txt
deleted file mode 100755
index 0fed5526..00000000
--- a/inc/3rdparty/site_config/standard/bjango.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@class='articlehead']
2body: //div[@class='column']
3strip: //h1
4strip: //div[@class='help']
5
6#no author or date/time provided in current layout
7test_url: http://bjango.com/articles/actions/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bleacherreport.com.txt b/inc/3rdparty/site_config/standard/bleacherreport.com.txt
deleted file mode 100755
index 9205e44e..00000000
--- a/inc/3rdparty/site_config/standard/bleacherreport.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1body: //div[contains(@class, 'article_pages')]
2
3strip_id_or_class: article_page-header
4strip_id_or_class: paginator
5strip_id_or_class: article_info
6
7find_string: src="data:image
8replace_string: ignore-src="data:image
9find_string: data-defer-src="
10replace_string: src="
11
12prune: no
13
14test_url: http://bleacherreport.com/articles/feed
15test_url: http://bleacherreport.com/articles/2137787-christian-ponders-newborn-daughter-was-named-after-fsu-legend-bobby-bowden
16test_url: http://bleacherreport.com/articles/2137596-college-football-week-1-picks-unlv-runnin-rebels-vs-arizona-wildcats/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.arsln.org.txt b/inc/3rdparty/site_config/standard/blog.arsln.org.txt
deleted file mode 100755
index 7ac8cc11..00000000
--- a/inc/3rdparty/site_config/standard/blog.arsln.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1tidy: no
2prune: no
3date: //article/header/h6/time
4title: //article/header/h3
5author: //meta[@name='author']/@content
6body: //article//post
7
8test_url: http://blog.arsln.org/aska-ayip-oluyor/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.asmartbear.com.txt b/inc/3rdparty/site_config/standard/blog.asmartbear.com.txt
deleted file mode 100755
index 78d7f516..00000000
--- a/inc/3rdparty/site_config/standard/blog.asmartbear.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //title
2author: //span[@class='author vcard']/a
3date: //p[@class='headline_meta']/abbr[@class='published']
4body: //div[@class='format_text entry-content']
5
6strip: //div[@id='dd_ajax_float']
7test_url: http://blog.asmartbear.com/how-to-get-quality-freelance-graphics-design-work-on-a-budget.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt b/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt
deleted file mode 100755
index db80a35f..00000000
--- a/inc/3rdparty/site_config/standard/blog.cloudflare.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1# Instapaper gets this back to front and only gets the blog title instead of the article title.
2title: substring-before(//title, '-')
3
4author: //a[ contains(@href, '/people') ]
5
6body: //div[ @class='post' ]
7
8# Date is impossible to retrieve since they use those stupid "fuzzy" dates, inserted through javascript, at posterous.
9test_url: http://blog.cloudflare.com/understanding-analytics-when-is-a-page-view-n \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.fefe.de.txt b/inc/3rdparty/site_config/standard/blog.fefe.de.txt
deleted file mode 100755
index 97e48e69..00000000
--- a/inc/3rdparty/site_config/standard/blog.fefe.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h2
2date: //h3
3body: //ul
4
5test_url: http://blog.fefe.de/?ts=b063bf55 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.instagram.com.txt b/inc/3rdparty/site_config/standard/blog.instagram.com.txt
deleted file mode 100755
index 13d1d44a..00000000
--- a/inc/3rdparty/site_config/standard/blog.instagram.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# clean Instagram blog a little bit
2
3tidy:no
4prune:no
5
6body://div[contains(@id,'content')]
7
8strip_id_or_class:meta
9strip_id_or_class:notes
10strip_id_or_class:pagination
11test_url: http://blog.instagram.com/post/8757832007/fromwhereistand \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.instapaper.com.txt b/inc/3rdparty/site_config/standard/blog.instapaper.com.txt
deleted file mode 100755
index fda01b15..00000000
--- a/inc/3rdparty/site_config/standard/blog.instapaper.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1author: //a[@href="http://www.marco.org/about"]
2date: //span[@class="date"]
3
4# Remove the date from article body.
5strip: //span[@class="date"]
6
7# Remove pagination links from article body.
8strip: //div[@id="pagination"]
9test_url: http://blog.instapaper.com/post/31303984531 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.jaysalvat.com.txt b/inc/3rdparty/site_config/standard/blog.jaysalvat.com.txt
deleted file mode 100755
index e89ad3a5..00000000
--- a/inc/3rdparty/site_config/standard/blog.jaysalvat.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1date: //span[contains(@class, 'date-links')]
2author: //span[contains(@class, 'author-links')]
3body: //div[contains(@class, 'entry-content')]
4test_url: http://blog.jaysalvat.com/article/celui-qui-avait-refait-son-site-web \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.kaelig.fr.txt b/inc/3rdparty/site_config/standard/blog.kaelig.fr.txt
deleted file mode 100755
index bcd3bdc9..00000000
--- a/inc/3rdparty/site_config/standard/blog.kaelig.fr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //*[contains(@class, 'post_content')]
2author: string('Kaelig Deloumeau-Prigent')
3title: //h1[@class='title']
4date: //span[@class='date']
5test_url: http://blog.kaelig.fr/post/24877648508/preprocesseurs-css-renoncer-par-choix-ou-par \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.naver.com.txt b/inc/3rdparty/site_config/standard/blog.naver.com.txt
deleted file mode 100755
index 73c30c47..00000000
--- a/inc/3rdparty/site_config/standard/blog.naver.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //span[@class='pcol1 itemSubjectBoldfont']
2body: //div[@id='postListBody']
3date: //p[@class='date fil5 pcol2']
4single_page_link: /html/frameset/frame[1]/attribute::src
5strip: //div[@class='post-btn']
6test_url: http://blog.naver.com/how2invest/110135068757 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.pchome.net.txt b/inc/3rdparty/site_config/standard/blog.pchome.net.txt
deleted file mode 100755
index de81beba..00000000
--- a/inc/3rdparty/site_config/standard/blog.pchome.net.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1# PCHOME blog, a popular Chinese blog host
2# Oct 15, 2011
3#
4
5title://*[contains(@class,'imp')]/h2
6
7date://*[contains(@class,'imp')]/span
8body://div[contains(@id,'blog_content')]
9
10
11
12test_url: http://blog.pchome.net/article/462502.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.pinboard.in.txt b/inc/3rdparty/site_config/standard/blog.pinboard.in.txt
deleted file mode 100755
index 40f0c560..00000000
--- a/inc/3rdparty/site_config/standard/blog.pinboard.in.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //a[@class="blog_title"]
2date: //p[@class="when"]/a
3body: //div[@class="blog_entry"]
4strip_id_or_class:blog_title
5strip_id_or_class:when
6test_url: http://blog.pinboard.in/2011/11/the_social_graph_is_neither/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.renren.com.txt b/inc/3rdparty/site_config/standard/blog.renren.com.txt
deleted file mode 100755
index 401d31e5..00000000
--- a/inc/3rdparty/site_config/standard/blog.renren.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# This filter is tested on:
2# http://blog.renren.com/share/224959024/14260739544
3# http://blog.renren.com/share/231323504/14261768898
4# http://blog.renren.com/share/230305019/1502806705
5
6title://h1[contains(@class, 'title-article')]
7author://span[contains(@class, 'name')]
8body://div[contains(@class, 'content-body')]
9
10convert_double_br_tags:yes
11test_url: http://blog.renren.com/share/230305019/1502806705 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.sina.com.cn.txt b/inc/3rdparty/site_config/standard/blog.sina.com.cn.txt
deleted file mode 100755
index 4895272a..00000000
--- a/inc/3rdparty/site_config/standard/blog.sina.com.cn.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1# Sina blog, the most popular blog host in China.
2# Its source code is horrible.
3#
4# Issue:
5# Only the first image in the article is displayed.
6# The rest images are replace by a 1x1 transparent gif by sina blog host.
7#
8
9title://*[contains(@class,'titName SG_txta')]
10author://*[contains(@id,'ownernick')]
11date://*[contains(@class,'time SG_txtc')]
12body://div[contains(@class,'articalContent')]
13
14# Remove redundant content which has span class start with "MASS"
15# Example <span class="MASSf21674ffeef7"></span>
16strip://span[contains(@class,'MASS')]
17
18# Remove comment
19strip://div[contains(@class,'allComm')]
20
21# Remove hiden text and link
22strip://ins
23
24tidy:no
25convert_double_br_tags:yes
26test_url: http://blog.sina.com.cn/s/blog_5054769e0102dtja.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.spu.edu.txt b/inc/3rdparty/site_config/standard/blog.spu.edu.txt
deleted file mode 100755
index 68bd4e39..00000000
--- a/inc/3rdparty/site_config/standard/blog.spu.edu.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body://div[@class='post']
2test_url: http://blog.spu.edu/lectio/from-the-frying-pan-into-the-fire/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blog.wells.ee.txt b/inc/3rdparty/site_config/standard/blog.wells.ee.txt
deleted file mode 100755
index eae6982b..00000000
--- a/inc/3rdparty/site_config/standard/blog.wells.ee.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2/a[@class="no-link title"]
2author: //h2[@id="blog_owner"]
3date: //time
4strip: //h2/a[@class="no-link title"]
5test_url: http://blog.wells.ee/retina
6test_url: http://blog.wells.ee/skeuomorphism \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.aljazeera.net.txt b/inc/3rdparty/site_config/standard/blogs.aljazeera.net.txt
deleted file mode 100755
index 2a66952b..00000000
--- a/inc/3rdparty/site_config/standard/blogs.aljazeera.net.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1# 2011-08-23 [carlo@...] Initial version.
2
3author: //div[@id="blogauthordatebox-node"]//a[@title="View user profile."]/text()
4
5# why yes, I do feel a bit dirty
6date: substring-before( substring-after( substring-after( //div[@id="blogauthordatebox-node"]//td[3], "on " ), ", "), " " )
7
8test_url: http://blogs.aljazeera.net/asia/2011/08/22/peoples-hero \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.faz.net.txt b/inc/3rdparty/site_config/standard/blogs.faz.net.txt
deleted file mode 100755
index 4f2626f1..00000000
--- a/inc/3rdparty/site_config/standard/blogs.faz.net.txt
+++ /dev/null
@@ -1,45 +0,0 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set author
7author: //a[@rel='author']
8
9# Set date
10date: //span[@class='Datum']
11
12# Content is here
13body: //div[@class='Artikel']
14
15# Tidy up before article
16strip: //div[@id='FAZHeaderNeu']
17strip: //h2[@itemprop='headline']
18strip: //span[@class='Datum']
19strip: //span[@class='Autor']
20strip_id_or_class: ArticlePagerTop
21strip: //div[@class='FAZArtikelEinleitung']/h2
22
23# General cleanup
24strip: //div[@class='clear']
25strip: //span[@class='Bildnachweis']
26strip: //iframe
27strip_id_or_class: Community
28strip: ' · '
29
30# Remove tracking and ads
31strip_image_src: /l.gif?
32strip: //img[@width='1']
33strip_id_or_class: invisible
34strip_id_or_class: Anzeige
35strip_id_or_class: billboard
36
37# Remove clutter after article
38strip_id_or_class: Tagline
39strip_id_or_class: ArtikelAbbinder
40strip_id_or_class: FAZArtikelKommentare
41strip_id_or_class: ArtikelKommentieren
42strip_id_or_class: FAZContentRight
43
44# Try it yourself
45test_url: http://blogs.faz.net/wost/2014/08/17/viel-fuck-und-wenig-guter-sex-1239/
diff --git a/inc/3rdparty/site_config/standard/blogs.forbes.com.txt b/inc/3rdparty/site_config/standard/blogs.forbes.com.txt
deleted file mode 100755
index 86580d21..00000000
--- a/inc/3rdparty/site_config/standard/blogs.forbes.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='entry']
2test_url: http://blogs.forbes.com/adamhartung/2011/04/08/apple-is-better-managed-than-microsoft/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.hbr.org.txt b/inc/3rdparty/site_config/standard/blogs.hbr.org.txt
deleted file mode 100755
index d47c3520..00000000
--- a/inc/3rdparty/site_config/standard/blogs.hbr.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //div[@id='pageFeature']/h1
2body: //div[@id='articleBody']
3strip: //div[@class='module wide']
4test_url: http://blogs.hbr.org/bregman/2011/04/the-1-killer-of-meetings-and-w.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+harvardbusiness+%28HBR.org%29 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.msdn.com.txt b/inc/3rdparty/site_config/standard/blogs.msdn.com.txt
deleted file mode 100755
index b2ff8332..00000000
--- a/inc/3rdparty/site_config/standard/blogs.msdn.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h3[@class="post-name"]
2author: //span[@class="user-name"]
3date: //div[@class="post-date"]
4body: //div[@class="post-content user-defined-markup"]
5footnotes: no
6test_url: http://blogs.msdn.com/b/b8/archive/2011/10/04/designing-the-start-screen.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.reuters.com.txt b/inc/3rdparty/site_config/standard/blogs.reuters.com.txt
deleted file mode 100755
index d3eb9966..00000000
--- a/inc/3rdparty/site_config/standard/blogs.reuters.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //div[@id='single']/h1
2body: //div[@id='postcontent']
3test_url: http://blogs.reuters.com/felix-salmon/2010/07/16/the-value-of-a-strong-brand-apple-edition/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.scientificamerican.com.txt b/inc/3rdparty/site_config/standard/blogs.scientificamerican.com.txt
deleted file mode 100755
index 2102015d..00000000
--- a/inc/3rdparty/site_config/standard/blogs.scientificamerican.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1# meta data
2title://h1[@class = 'postTitle']
3author:substring-before(substring-after(//span[@class = 'byline'],'By '),'|')
4date://span[@class = 'datestamp']
5
6#body content
7body://div[@id = 'singleBlogPost']
8
9#reclaim author info
10move_into(//div[@id = 'singleBlogPost'])://div[@id = 'aboutAuthorDiv']
11strip://p[@class = 'moreLink mobileHide']
12
13#cleanup comments, there might be some open <div> sections
14strip://div[@id = 'comments2']
15strip://h3[a[@href = '#add-comment']]
16test_url: http://blogs.scientificamerican.com/a-blog-around-the-clock/2012/07/10/science-blogs-definition-and-a-history/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.smithsonianmag.com.txt b/inc/3rdparty/site_config/standard/blogs.smithsonianmag.com.txt
deleted file mode 100755
index 1bc65e77..00000000
--- a/inc/3rdparty/site_config/standard/blogs.smithsonianmag.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1# metadata
2author://div[@class = 'post']/div[@class='meta']/a[1]
3date://div[@id = 'rap']/h2[1]
4body://div[@class = 'post']
5
6# wrapping caption and image
7wrap_in(fieldset)://div[contains(@class, 'wp-caption')]
8
9
10# clean up
11strip://div[@class = 'post']/h3[@class = 'storytitle']
12strip://div[@class = 'post']/div[@class = 'social']
13strip://img[@style = 'display:none;']
14strip://img[@height='0' and @width='0']
15test_url: http://blogs.smithsonianmag.com/adventure/2011/10/tips-for-women-traveling-in-turkey/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/blogs.technet.com.txt b/inc/3rdparty/site_config/standard/blogs.technet.com.txt
deleted file mode 100755
index 3d0fbadc..00000000
--- a/inc/3rdparty/site_config/standard/blogs.technet.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h3[@class="post-name"]
2author: //span[@class="user-name"]
3date: //div[@class="post-date"]
4body: //div[@class="post-content user-defined-markup"]
5strip_id_or_class: log-feedback-list
6tidy: no
7footnotes: no
8test_url: http://blogs.technet.com/b/dlemson/archive/2004/03/03/83304.aspx
9test_url: http://blogs.technet.com/b/isablog/archive/2009/01/07/a-pptp-client-might-fail-to-connect-to-a-vpn-server-on-the-internet-through-an-isa-server-2006.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bluetouff.com.txt b/inc/3rdparty/site_config/standard/bluetouff.com.txt
deleted file mode 100755
index 543d3920..00000000
--- a/inc/3rdparty/site_config/standard/bluetouff.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body://div[@class='entry']
2date://div[@class='meta']
3strip://a[@class='FlattrButton']
4test_url: http://bluetouff.com/2012/03/02/polemique-google-vie-privee/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/boagworld.com.txt b/inc/3rdparty/site_config/standard/boagworld.com.txt
deleted file mode 100755
index 3b3da991..00000000
--- a/inc/3rdparty/site_config/standard/boagworld.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class="entry-title"][2]
2author: string("Paul Boag")
3date: substring(//span[@class="meta"], 11)
4body: //article
5strip: //h2
6strip: //h1
7strip: //div[@id="callsToAction"]
8test_url: http://boagworld.com/working-in-web-design/dealing-with-the-dickheads/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/boingboing.net.txt b/inc/3rdparty/site_config/standard/boingboing.net.txt
deleted file mode 100755
index 4f39661b..00000000
--- a/inc/3rdparty/site_config/standard/boingboing.net.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# This is far from perfect, but so is BoingBoing's markup
2title: //h2[@class="headline"]
3single_page_link: //h2[@class="headline"]/a
4#date: //p[@class="byline"]
5body: //div[@class="post"]
6
7strip_id_or_class: shareMe
8strip_id_or_class: authorbox
9strip_id_or_class: byline
10
11test_url: http://boingboing.net/2011/10/23/understanding-the-hyperrich-through-the-lens-of-tomorrows-history.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/boldizsar.palotas.eu.txt b/inc/3rdparty/site_config/standard/boldizsar.palotas.eu.txt
deleted file mode 100755
index 3616bbf2..00000000
--- a/inc/3rdparty/site_config/standard/boldizsar.palotas.eu.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h2[@class='entry-title']
2body: //div[@class='entry-content']
3test_url: http://boldizsar.palotas.eu/blog/?p=1394 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/book.douban.com.txt b/inc/3rdparty/site_config/standard/book.douban.com.txt
deleted file mode 100755
index fe2d2cbf..00000000
--- a/inc/3rdparty/site_config/standard/book.douban.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //span[@property='v:description']
2date: //span[@property='v:dtreviewed']
3author: //span[@property='v:reviewer']
4prune: no
5
6test_url: http://book.douban.com/review/2422662/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bookforum.com.txt b/inc/3rdparty/site_config/standard/bookforum.com.txt
deleted file mode 100755
index 03b60039..00000000
--- a/inc/3rdparty/site_config/standard/bookforum.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1#metadata
2title://div[@class = 'Topper']/h1
3author://div[@class = 'Topper']/h3
4date://div[@class = 'Topper']/h6
5body://div[@class = 'Core']
6
7
8
9# clean up
10strip://div[@class = 'Topper']/h1
11strip://div[@class = 'Topper']/h3
12strip://div[@class = 'Topper']/h4
13strip://div[@class = 'Topper']/h5
14strip://div[@class = 'Topper']/h6
15strip://br[@clear = 'all']
16strip://div[@class = 'adCore']
17strip://div[@class = 'BookR']
18strip://div[@class = 'InfoBox']
19test_url: http://bookforum.com/inprint/018_04/8595 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/borderhouseblog.com.txt b/inc/3rdparty/site_config/standard/borderhouseblog.com.txt
deleted file mode 100755
index b4e116fe..00000000
--- a/inc/3rdparty/site_config/standard/borderhouseblog.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title://h1
2author://div[@class="meta"]/span/a
3date://div[@class="date"]
4body://div[@class="content article"]
5strip://div[@class="content article"]/h1
6
7test_url: http://borderhouseblog.com/?p=7832 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bostonglobe.com.txt b/inc/3rdparty/site_config/standard/bostonglobe.com.txt
deleted file mode 100755
index 4c74a34e..00000000
--- a/inc/3rdparty/site_config/standard/bostonglobe.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1# NOTE: If testing this configuration yields bad results, including junk text like "Try BostonGlobe.com today" and "THIS STORY APPEARED IN", please replace the Test URL with a current-day headline link from bostonglobe.com.
2
3title: //div[@class="header"]/h1
4author: substring-after(//div[@class="byline"]/h2[@class="author"],"By ")
5date: //div[@class="byline"]/p[last()]
6body: //div[@class="article-body"]
7
8strip_id_or_class: aside
9strip_id_or_class: promo
10strip_id_or_class: skip-nav
11strip_id_or_class: article-more
12strip_id_or_class: article-bar
13
14# This removes image captions. If the parser starts saving images from bostonglobe.com (currently, it does not), then this directive should be removed.
15strip_id_or_class: figure
16test_url: http://bostonglobe.com/news/nation/2012/03/17/illinois-primary-could-pivotal/PsDzFZqvhEYyXbOcF9FOkO/story.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bostonreview.net.txt b/inc/3rdparty/site_config/standard/bostonreview.net.txt
deleted file mode 100755
index 64e04a1c..00000000
--- a/inc/3rdparty/site_config/standard/bostonreview.net.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1#basics
2title://h3[@class = 'article_title']
3date://span[@class = 'article_date']
4body://div[@id = 'center_column_article']
5#correct, but author not being picked up in preview
6author://span[@class = 'article_author']
7
8#strips basics from article
9strip_id_or_class:article_title
10strip_id_or_class:article_date
11strip_id_or_class:article_author
12
13#strips pull quotes
14strip_id_or_class:pull_quote
15test_url: http://www.bostonreview.net/BR36.4/megan_pugh_agnes_de_mille_dance.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/boundlessline.org.txt b/inc/3rdparty/site_config/standard/boundlessline.org.txt
deleted file mode 100755
index a836e1e2..00000000
--- a/inc/3rdparty/site_config/standard/boundlessline.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: substring-before(//title, '|')
2body: //div[@class="entry"]
3# Remove the author's picture
4strip: //div[@class="entry"]/a[1]
5test_url: http://www.boundlessline.org/2011/06/the-nyts-on-gender-over-the-weekend.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bowdoinorient.com.txt b/inc/3rdparty/site_config/standard/bowdoinorient.com.txt
deleted file mode 100755
index 932143d1..00000000
--- a/inc/3rdparty/site_config/standard/bowdoinorient.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //*[@class='articletitle']
2body: //*[(@id='articlebody')]
3date: //*[(@class='articledate')]
4author: //*[(@class='articleauthor')]
5autodetect_next_page: no
6test_url: http://bowdoinorient.com/article/8045 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brainfacts.org.txt b/inc/3rdparty/site_config/standard/brainfacts.org.txt
deleted file mode 100755
index 9705f621..00000000
--- a/inc/3rdparty/site_config/standard/brainfacts.org.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //div[@class="standard"]/h1
2author: string("BrainFacts.org")
3date: //div[@class="meta"]/strong
4
5strip: //p[@class="skip"]
6strip: //div[@class="meta"]
7strip: //div[@class="standard"]/h1
8strip: //div[@class="modal"]
9strip: //div[@class="columnRight"]
10test_url: http://brainfacts.org/diseases-disorders/childhood-disorders/articles/2011/autism-the-pervasive-developmental-disorder/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brandeins.de.txt b/inc/3rdparty/site_config/standard/brandeins.de.txt
deleted file mode 100755
index 36aa2efa..00000000
--- a/inc/3rdparty/site_config/standard/brandeins.de.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# set body
2body: //div[@id='theContent']
3
4# set title
5title: //div[@id='theContent']/h3
6strip: //div[@id='theContent']/h3
7test_url: http://www.brandeins.de/archiv/magazin/gegessen-wird-immer/artikel/hunger.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brandingstrategyinsider.com.txt b/inc/3rdparty/site_config/standard/brandingstrategyinsider.com.txt
deleted file mode 100755
index fc020539..00000000
--- a/inc/3rdparty/site_config/standard/brandingstrategyinsider.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1date://h2[@class="date-header"]
2body://div[@class="entry-content"]
3test_url: http://www.brandingstrategyinsider.com/2011/12/top-twelve-branding-keys-for-2012.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brasil.elpais.com.txt b/inc/3rdparty/site_config/standard/brasil.elpais.com.txt
deleted file mode 100755
index 6a22dcb7..00000000
--- a/inc/3rdparty/site_config/standard/brasil.elpais.com.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1title: //meta[@name='DC.title']/@content
2title: //div[contains(@class, 'cabecera_noticia')]//h1
3date: //meta[@name='DC.date']/@content
4date: //meta[@name='date']/@content
5body: //div[@class='columna_texto']
6body: //div[@id='cuerpo_noticia']
7body: //div[@class='estructura_2col_1zq']//div[@class='margen_n']
8
9prune: no
10
11strip_id_or_class: disposicion_vertical
12strip_id_or_class: ampliar_foto
13strip_id_or_class: utilidades
14strip_id_or_class: info_relacionada
15strip_id_or_class: m-kiosko
16strip_id_or_class: info_complementa
17
18strip: //p[@class='nota_pie']
19strip: //div[starts-with(@id, 'sumario') and contains(., 'más información')]
20strip: //div[@id='coment' or @id='foros_not']
21
22test_url: http://brasil.elpais.com/brasil/2014/10/15/politica/1413334841_878730.html
23test_contains: O PT quer intensificar a presença do ex-presidente
24
25test_url: http://brasil.elpais.com/brasil/2014/10/13/internacional/1413225730_450761.html
26test_contains: Todos na localidade onde ele nasceu ainda falavam da façanha
diff --git a/inc/3rdparty/site_config/standard/brettterpstra.com.txt b/inc/3rdparty/site_config/standard/brettterpstra.com.txt
deleted file mode 100755
index 55da1787..00000000
--- a/inc/3rdparty/site_config/standard/brettterpstra.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='post full']
2title: //h1
3author: substring-after(//title, '- ')
4date: //span[@class='date']
5test_url: http://brettterpstra.com/byword-for-ios/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brisbanetimes.com.au.txt b/inc/3rdparty/site_config/standard/brisbanetimes.com.au.txt
deleted file mode 100755
index 27e6b70c..00000000
--- a/inc/3rdparty/site_config/standard/brisbanetimes.com.au.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='articleBody']
2test_url: http://www.brisbanetimes.com.au/opinion/blogs/blunt-instrument/losing-our-minds--for-24-hours-20120118-1q682.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brookings.edu.txt b/inc/3rdparty/site_config/standard/brookings.edu.txt
deleted file mode 100755
index 17a47605..00000000
--- a/inc/3rdparty/site_config/standard/brookings.edu.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //div[@id='contentheader']/h1
2author: //p[@class='attribution']/span[@class='author']/*
3# Is there a way to pull multiple authors? My XPath here is just grabbing the first
4
5date: /html/head/meta[@name="date"]/@content
6body: //div[@class='main-content']
7
8strip: //p[@class='byline']
9strip: //div[@class='img-gallery']
10strip: //div[@class='callout']
11strip: //div[@class='add-your-view']
12convert_double_br_tags: yes
13test_url: http://www.brookings.edu/opinions/2011/1018_cyberattack_libya_goldsmith.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/brooksreview.net.txt b/inc/3rdparty/site_config/standard/brooksreview.net.txt
deleted file mode 100755
index d33d7d4e..00000000
--- a/inc/3rdparty/site_config/standard/brooksreview.net.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1
2body: //div[@class='article']
3body: //div[@class='post']
4date: //*[@id='single']/span
5prune: no
6test_url: http://brooksreview.net/2011/11/readability-agency/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bt.no.txt b/inc/3rdparty/site_config/standard/bt.no.txt
deleted file mode 100755
index 200c2e4e..00000000
--- a/inc/3rdparty/site_config/standard/bt.no.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1[contains(@class,'articleTitle')]
2author: //span[@itemprop='name']
3date: //time[@class='published']
4body: //div[contains(@class,'bodyText')]
5
6strip_id_or_class: 'pull1'
7strip_id_or_class: 'relationArticle'
8strip: //span[@class='quote']
9
10# strip h2 if at end of article (typically a request for comments)
11strip: //div[contains(@class,'bodyText')]/node()[last()-1]/self::h2
12test_url: http://www.bt.no/meninger/debatt/Typisk-norsk-a-vare-god-nok-2884108.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/buffed.de.txt b/inc/3rdparty/site_config/standard/buffed.de.txt
deleted file mode 100755
index 3dd36ce6..00000000
--- a/inc/3rdparty/site_config/standard/buffed.de.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1date: //meta[@itemProp='datePublished']/@content
2body: //div[@class='intro' or contains(@class, 'article_text')]
3prune: no
4strip_id_or_class: embedcode
5strip_id_or_class: EmbedSwitch
6strip_id_or_class: EmbedText
7strip_id_or_class: bildergalerie
8strip_id_or_class: subline_seohour_image
9strip_id_or_class: ova-player
10strip_id_or_class: jcarouseloutput
11strip_id_or_class: cbox_embedded
12
13test_url: http://www.buffed.de/SWTOR-Star-Wars-The-Old-Republic-PC-218697/News/SWTOR-Ab-Patch-24-Lore-Klamotten-faerben-1090051/
14test_url: http://www.buffed.de/feed.cfm?menu_alias=home \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/buquad.com.txt b/inc/3rdparty/site_config/standard/buquad.com.txt
deleted file mode 100755
index f0fd08db..00000000
--- a/inc/3rdparty/site_config/standard/buquad.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1
2author: //h2/a
3date: substring-after(//h2, '|')
4strip_id_or_class: 'attachment'
5strip: //h3
6
7body: //div[@class='entry']
8test_url: http://buquad.com/2012/04/09/paul-ryan/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/business2community.com.txt b/inc/3rdparty/site_config/standard/business2community.com.txt
deleted file mode 100755
index 0dcc7ff8..00000000
--- a/inc/3rdparty/site_config/standard/business2community.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1date: substring-after(//p[@class='byline'],'Published')
2
3strip: //div[@class='article-meta']
4
5test_url: http://www.business2community.com/social-media/funky-ways-to-print-instagram-photos-0485340
diff --git a/inc/3rdparty/site_config/standard/businessinsider.com.txt b/inc/3rdparty/site_config/standard/businessinsider.com.txt
deleted file mode 100755
index 39eb7426..00000000
--- a/inc/3rdparty/site_config/standard/businessinsider.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title://div[@class="sl-layout-post"]/h1
2body: //div[contains(@class, 'post-content') or contains(@class, 'slide-module') or contains(@class, 'KonaBody')]
3strip: //div[contains(@class, "post-sidebar")]
4strip: //div[@id='related-links']
5strip: //div[@class='related-links-container']
6strip: //p[@class='source']
7author://div[@class="byline"]/a
8date://div[@class="byline"]/span[@class="date"]
9prune: no
10
11single_page_link: //a[contains(text(), 'View as one page')]
12
13strip://*[contains(@class,'sponsored-text')]
14strip: //div[@id='post_footer']
15
16test_url: http://www.businessinsider.com/microsoft-just-put-one-of-its-hardcore-technical-geniuses-on-xbox-2012-1
diff --git a/inc/3rdparty/site_config/standard/businessnews.com.tn.txt b/inc/3rdparty/site_config/standard/businessnews.com.tn.txt
deleted file mode 100755
index 6502b8e1..00000000
--- a/inc/3rdparty/site_config/standard/businessnews.com.tn.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@id='article_detail']
2title: //meta[@property='og:title']/@content
3date: //div[@id='date_com_art']//a[@class='date']
4author: //div[@id='article_detail']//font[@class='auteur']
5
6strip_id_or_class: porte_titre_theme
7strip_id_or_class: cont_param
8strip_id_or_class: date_com_art
9
10prune: no
11
12test_url: http://www.businessnews.com.tn/details_article.php?a=31073&t=522&lang=fr&temp=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/businessweek.com.txt b/inc/3rdparty/site_config/standard/businessweek.com.txt
deleted file mode 100755
index f546b708..00000000
--- a/inc/3rdparty/site_config/standard/businessweek.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1# include the lead graphic in the body, if available
2body: //div[contains(concat(' ', normalize-space(@id), ' '), ' lead_graphic ')] | //div[contains(concat(' ', normalize-space(@itemprop), ' '), ' articleBody ')]
3title: //h1[contains(concat(' ', normalize-space(@itemprop), ' '), ' headline ')]
4date: //time[contains(concat(' ', normalize-space(@itemprop), ' '), ' datePublished ')]
5
6strip_id_or_class: photo_credit
7strip_id_or_class: photo_caption
8strip_id_or_class: inline_gallery
9# pull quote, often inside a blockquote element
10strip_id_or_class: pq
11strip_id_or_class: credit
12strip_id_or_class: figcaption
13strip_id_or_class: related_item
14
15test_url: http://www.businessweek.com/magazine/buyback-insurance-a-good-deal-for-retailers-07282011.html
16test_url: http://www.businessweek.com/articles/2012-06-06/american-pain-the-largest-u-dot-s-dot-pill-mills-rise-and-fall
17test_url: http://www.businessweek.com/articles/2014-07-09/american-apparel-dov-charneys-sleazy-struggle-for-control
diff --git a/inc/3rdparty/site_config/standard/buzzfeed.com.txt b/inc/3rdparty/site_config/standard/buzzfeed.com.txt
deleted file mode 100755
index ea88ea47..00000000
--- a/inc/3rdparty/site_config/standard/buzzfeed.com.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1# Creator: Greg Leuch <greg@...>
2
3# It can be messy.
4tidy:no
5
6# The basic template.
7title: //h1[@data-print='title']
8author: //a[@data-print='author']
9date: //time[@data-print='date']
10body: //div[@data-print='body']
11body: //section[@data-print='body']
12
13find_string: rel:bf_image_src=
14replace_string: src=
15find_string: src="data:
16replace_string: disabled_src="data:
17
18native_ad_clue: //meta[@property="article:section" and @content="Advertiser"]
19
20# For various things...
21strip: *[@data-print="ignore"]
22test_url: http://www.buzzfeed.com/hgrant/35-reasons-why-dogs-hate-the-holidays
23# Native ad
24test_url: http://www.buzzfeed.com/bravo/ways-to-up-your-online-dating-game \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/bygonebureau.com.txt b/inc/3rdparty/site_config/standard/bygonebureau.com.txt
deleted file mode 100755
index 63c82130..00000000
--- a/inc/3rdparty/site_config/standard/bygonebureau.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1
2author: //a[contains(@href, '/author/')]
3date: //*[@class='post-date']
4strip: //*[@class='post-date']
5strip: //h1
6test_url: http://bygonebureau.com/2011/06/20/an-existential-psychoanalysis/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cable.co.uk.txt b/inc/3rdparty/site_config/standard/cable.co.uk.txt
deleted file mode 100755
index 435bf3b5..00000000
--- a/inc/3rdparty/site_config/standard/cable.co.uk.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //div[@class='page-content']//h1
2body: //div[@class='page-content']
3strip_id_or_class: editorial-bar-top
4strip_id_or_class: social-bottom
5strip_id_or_class: comment-form
6strip_id_or_class: pc-why
7
8prune: no
9tidy: no
10
11test_url: http://www.cable.co.uk/news/bt-vision-unveils-interactive-guide-application-800734218/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/canonrumors.com.txt b/inc/3rdparty/site_config/standard/canonrumors.com.txt
deleted file mode 100755
index c22cf4f1..00000000
--- a/inc/3rdparty/site_config/standard/canonrumors.com.txt
+++ /dev/null
@@ -1,28 +0,0 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set title
7title: //h2
8
9date: //li[@class='time']
10
11# Set author
12author: //a[contains(@rel, 'author')]
13
14# Content is here
15body: //div[@id='content']
16
17# Tidy up before article
18strip: //div[@class='meta']
19
20# Tidy up after article
21strip_id_or_class: nr_related_placeholder
22strip_id_or_class: twitter-share-button
23strip_id_or_class: afterpost
24strip_id_or_class: tags
25
26# Try it yourself
27test_url: http://www.canonrumors.com/2014/09/chuck-westfall-talks-canon-eos-7d-mark-ii/
28test_url: http://www.canonrumors.com/2014/09/canon-cinema-eos-captures-space-in-4k-for-new-imax-3d-film/
diff --git a/inc/3rdparty/site_config/standard/cardboardconnection.com.txt b/inc/3rdparty/site_config/standard/cardboardconnection.com.txt
deleted file mode 100755
index 49f34302..00000000
--- a/inc/3rdparty/site_config/standard/cardboardconnection.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class='producttabbed-title']
2body: //div[@class='postTabs_divs postTabs_curr_div']
3strip: //div[@class='ratingblock2']
4strip: //p[@id='breadcrumbs']
5strip: //div[@style='display: none']
6
7
8test_url: http://www.cardboardconnection.com/2012-topps-archives-baseball-cards \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/carpeaqua.com.txt b/inc/3rdparty/site_config/standard/carpeaqua.com.txt
deleted file mode 100755
index 5ea302e0..00000000
--- a/inc/3rdparty/site_config/standard/carpeaqua.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2
2body: //div[@class='entry']
3
4prune: no
5# otherwise the footnotes are removed
6test_url: http://carpeaqua.com/2011/03/27/the-intersection-of-power-and-portability/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cars.com.txt b/inc/3rdparty/site_config/standard/cars.com.txt
deleted file mode 100755
index 71c5c050..00000000
--- a/inc/3rdparty/site_config/standard/cars.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[contains(@class, 'basicInfo')]//h1
2
3body: //img[@id='chosenPhotoIMG'] | //div[@id='aboutThisVehicleBox']
4
5prune: no
6
7test_url: http://www.cars.com/go/search/detail.jsp?listingId=115364779 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/catb.org.txt b/inc/3rdparty/site_config/standard/catb.org.txt
deleted file mode 100755
index 2cd197fb..00000000
--- a/inc/3rdparty/site_config/standard/catb.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@class='article']
2strip: //div[@class='revhistory']
3strip: //div[@class='toc']
4tidy: no
5prune: no
6
7test_url: http://catb.org/~esr/faqs/smart-questions.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cbc.ca.txt b/inc/3rdparty/site_config/standard/cbc.ca.txt
deleted file mode 100755
index ba5faf3f..00000000
--- a/inc/3rdparty/site_config/standard/cbc.ca.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[contains(@class, 'headline')]/h1
2author: //h5[contains(@class, 'byline')]
3date: substring-after(//h4[contains(@class, 'posted')], 'Posted: ')
4body: //div[@id="storyboard"]
5test_url: http://www.cbc.ca/news/world/story/2012/01/16/cruise-ship-monday.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cbn.com.txt b/inc/3rdparty/site_config/standard/cbn.com.txt
deleted file mode 100755
index de8d8839..00000000
--- a/inc/3rdparty/site_config/standard/cbn.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[contains(@class, 'articleText')]
2date: //div[contains(@class, 'articleDate')]
3author: //a[contains(@id, 'articleDetails_lnkByLine')]
4prune: no
5
6test_url: http://www.cbn.com/cbnnews/world/2013/June/Chilly-G-8-Obama-Putin-Agree-to-Disagree-on-Syria/
7test_url: http://www.cbn.com/cbnnews/world/2013/June/UK-Agency-Accused-of-Hacking-Foreign-Diplomats/
8test_url: http://www.cbn.com/cbnnews/feed/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cbsnews.com.txt b/inc/3rdparty/site_config/standard/cbsnews.com.txt
deleted file mode 100755
index 04d20230..00000000
--- a/inc/3rdparty/site_config/standard/cbsnews.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1date: //meta[@name="published"]/@content
2date: //div[@class="timeLine"]
3title: //div[@id='contentBody']//h1
4author: //dl[@class="storyBlogByline"]/dd/a
5body: //div[@id='storyMediaBox'] | //div[contains(@class, 'storyText')]
6
7# Content Pruning
8strip: //div[@class="scrollingArrows"]
9strip: //div[@class="timeLine"]
10strip: //dl[@class="storyBlogByline"]
11strip: //span[@class='image-credit']
12
13prune: no
14
15test_url: http://www.cbsnews.com/8301-201_162-57366361/rescued-americans-dad-proud-of-the-u.s/
diff --git a/inc/3rdparty/site_config/standard/cedarrepublican.com.txt b/inc/3rdparty/site_config/standard/cedarrepublican.com.txt
deleted file mode 100755
index 42faa521..00000000
--- a/inc/3rdparty/site_config/standard/cedarrepublican.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='frame']//img[@class='horizontal'] | //div[@class='content']
2test_url: http://cedarrepublican.com/online_features/gift_ideas/sending-mother-s-day-flowers-how-to-be-sure-they/article_b69af9b8-1f05-5352-8621-16ce007e5623.html
diff --git a/inc/3rdparty/site_config/standard/chareidi.org.txt b/inc/3rdparty/site_config/standard/chareidi.org.txt
deleted file mode 100755
index de34a7d8..00000000
--- a/inc/3rdparty/site_config/standard/chareidi.org.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title: //h1
2test_url: http://www.chareidi.org/archives5772/tetzaveh/TZV72adraft.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/chinamining.org.txt b/inc/3rdparty/site_config/standard/chinamining.org.txt
deleted file mode 100755
index d00d65de..00000000
--- a/inc/3rdparty/site_config/standard/chinamining.org.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //*[@id='Content']/span[1]
2author: substring-after(substring-before(//*[@id='Content']/span[2], ')'), '(')
3date: substring-before(substring-after(//*[@id='Content']/span[2], 'Updated: '), 'Counter')
4
5strip: //*[@id='Content']/span[1]
6strip: //*[@id='Content']/span[2]
7
8body: //*[@id='Content']
9
10test_url: http://www.chinamining.org/News/2011-07-22/1311319069d48087.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/chomsky.info.txt b/inc/3rdparty/site_config/standard/chomsky.info.txt
deleted file mode 100755
index 2645f119..00000000
--- a/inc/3rdparty/site_config/standard/chomsky.info.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='title']
2author: //div[@class='author']
3prune: no
4
5test_url: http://www.chomsky.info/onchomsky/2002----.htm
6test_contains: The propaganda model argues
diff --git a/inc/3rdparty/site_config/standard/chrisltd.com.txt b/inc/3rdparty/site_config/standard/chrisltd.com.txt
deleted file mode 100755
index 86d0f5db..00000000
--- a/inc/3rdparty/site_config/standard/chrisltd.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //header/h1/b[contains(@class, 'title')]
2author: substring-after(//article/header/div, 'By ')
3date: //header/h1/span[contains(@class, 'date')]
4body: //div[@id='main]/article
5strip: //header
6test_url: http://chrisltd.com/blog/2012/03/fix-widows-indesign/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/christianitytoday.com.txt b/inc/3rdparty/site_config/standard/christianitytoday.com.txt
deleted file mode 100755
index 86be14ce..00000000
--- a/inc/3rdparty/site_config/standard/christianitytoday.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title://div[@class='title']
2author://div[@class='byline']/b
3date:substring-after(//div[@class='byline'], 'posted')
4body://div[@id='body']
5wrap_in(h2)://span[@class='subhead']
6wrap_in(i)://p[@class='bio']
7wrap_in(i)://p[@class='copyright']
8strip://div[@class='title']
9strip://div[@class='deck']
10strip://div[@class='byline']
11strip://div[@class='copyright']
12strip://br
13test_url: http://www.christianitytoday.com/ct/2012/aprilweb-only/my-god-forsaken-me.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/christianpf.com.txt b/inc/3rdparty/site_config/standard/christianpf.com.txt
deleted file mode 100755
index fb5f342d..00000000
--- a/inc/3rdparty/site_config/standard/christianpf.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1[@class="entry-title"]
2author: //*[@class="author vcard fn"]
3date: //*[@class="published"]
4body: //div[(@class = "dd_content_wrap")]
5test_url: http://christianpf.com/do-ibuys-lead-to-more-buying/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/christies.com.txt b/inc/3rdparty/site_config/standard/christies.com.txt
deleted file mode 100755
index b3c76519..00000000
--- a/inc/3rdparty/site_config/standard/christies.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1tidy: no
2prune: no
3date: //article//time[@pubdate]
4title: //article/header/h2
5body: //article
6test_url: http://www.christies.com/LotFinder/custom/lot_details_MultiLanguage.aspx?from=salesummary&intObjectID=5556662&sid=e536ed1a-b763-41c4-afcf-c94815ec6eee&LID=3 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/chrome.google.com.txt b/inc/3rdparty/site_config/standard/chrome.google.com.txt
deleted file mode 100755
index 5a1d043d..00000000
--- a/inc/3rdparty/site_config/standard/chrome.google.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //pre[@id='cx-desc-text']
2body: //div[contains(@class, 'overview-tab-right-bar-info')]
3title: //h1[contains(@class, 'detail-dialog-title')]
4tidy: no
5prune: no
6replace_string(<noscript>): <div>
7replace_string(</noscript>): </div>
8
9test_url: https://chrome.google.com/webstore/detail/pnaiinchjaonopoejhknmgjingcnaloc \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/chronicle.com.txt b/inc/3rdparty/site_config/standard/chronicle.com.txt
deleted file mode 100755
index e86d3eca..00000000
--- a/inc/3rdparty/site_config/standard/chronicle.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1title: //h1[contains(@class, "entry-title")]
2author: //p[contains(@class, "byline")]
3
4# blog articles (chronicle.com/blogs/*)
5body: //div[contains(@class, "abstract")]
6date: //p[contains(@class, "time")]
7
8# all (?) other articles
9body: //div[@id="article-body"]
10date: //p[contains(@class, "dateline")]
11
12# remove sidebars containing images (I assume this is desired for Instapaper)
13strip: //div[@id="related"]
14strip: //div[contains(@class, "image")]
15
16# note that if you're not a Chronicle subscriber (personally or institutionally), you'll only see the first couple of paragraphs of the article, and Instapaper will display that with some crap above and below. thank goodness for that bookmarklet
17test_url: http://chronicle.com/article/In-a-Land-of-Second-Chances/128375/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ciaosamin.com.txt b/inc/3rdparty/site_config/standard/ciaosamin.com.txt
deleted file mode 100755
index 02fd3434..00000000
--- a/inc/3rdparty/site_config/standard/ciaosamin.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body://div[contains(@class, 'entry-content')]
2date://h2[contains(@class, 'date-header')]
3title://h3[contains(@class, 'post-title')]
4test_url: http://www.ciaosamin.com/2013/04/how-this-happened.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cicero.de.txt b/inc/3rdparty/site_config/standard/cicero.de.txt
deleted file mode 100755
index b8913639..00000000
--- a/inc/3rdparty/site_config/standard/cicero.de.txt
+++ /dev/null
@@ -1,33 +0,0 @@
1# fforst@...
2
3# Use link to print article for single page view
4single_page_link: //a[@class="print"]
5
6# set body
7tidy: no
8body: //div[@class='artikel-content']
9
10# strip title and subtitle since we got it already
11strip: //div[@class='issue']
12strip: //div[@class='artikel-content']/h2
13
14# some authors are known and have a link, others don't
15author: //a[contains(@href, 'autor?')]
16
17#date
18date: //span[@class='article-date']
19
20# Strip author since we got him
21strip_id_or_class: author
22
23#strip captions
24strip_id_or_class: field-name-field-image-credit
25strip_id_or_class: field-name-field-article-image-subtitle
26
27# remove community functions
28strip: //div[@class='meta']
29strip: //div[@id='comments']
30
31# remove "continue on the next page" text
32strip: //p[text()="[SEITE]"]
33test_url: http://www.cicero.de/weltbuehne/ihre-wut-ist-global-krise-jugend-revolten-aufstaende-zelte/43049 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ciperchile.cl.txt b/inc/3rdparty/site_config/standard/ciperchile.cl.txt
deleted file mode 100755
index d7e9b762..00000000
--- a/inc/3rdparty/site_config/standard/ciperchile.cl.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //*[(@id = "articlebody")]
2strip_id_or_class: rotulo
3
4test_url: http://ciperchile.cl/2011/04/18/las-operaciones-secretas-que-ordenaba-karadima-para-aniquilar-a-su-competencia/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cjr.org.txt b/inc/3rdparty/site_config/standard/cjr.org.txt
deleted file mode 100755
index df4c7cc4..00000000
--- a/inc/3rdparty/site_config/standard/cjr.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //p[@class='subhead' or @class='attribution'] | //div[@class='article-body']
2prune: no
3
4single_page_link: //li[@class='print']/a
5
6test_url: http://www.cjr.org/behind_the_news/from_breaking_news_to_baseless.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/classyllama.com.txt b/inc/3rdparty/site_config/standard/classyllama.com.txt
deleted file mode 100755
index 1864eee8..00000000
--- a/inc/3rdparty/site_config/standard/classyllama.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1date: //div[@id='content']//p[contains(@class, 'date')]/span
2author: substring-after(//div[@id='content']//div[contains(@class, 'over-under-bars')]/p[last()]/text(), 'Posted by ')
3body: //div[@id='content']//div[@class='pane-content']
4strip_id_or_class: trackback-url
5strip_id_or_class: over-under-bars
6test_url: http://www.classyllama.com/content/layout-caching \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/clientk.com.txt b/inc/3rdparty/site_config/standard/clientk.com.txt
deleted file mode 100755
index d5a22ccb..00000000
--- a/inc/3rdparty/site_config/standard/clientk.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title://div[@class="entrytitle"]/a
2author:substring-after(substring-before(//div[@class="entrytime"], "|"), "By ")
3date:substring-before(substring-after(//div[@class="entrytime"], "|"), "- Posted")
4body://div[@class="entrybody"]
5strip://div[@class="entrybody"]//p[@class="singleinfo"]
6test_url: http://clientk.com/2011/12/19/the-impact-of-more/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/clubic.com.txt b/inc/3rdparty/site_config/standard/clubic.com.txt
deleted file mode 100755
index 0148e54c..00000000
--- a/inc/3rdparty/site_config/standard/clubic.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1
2author: //a[@class='auteur']
3body: //div[@class='editorial']
4next_page_link: //a[contains(text(),'Page suivante')]
5strip: //a[contains(text(),'Page suivante')]
6strip: //a[contains(text(),'Page précédente')]
7strip_id_or_class: slideshow
8
9prune: no
10
11test_url: http://www.clubic.com/carte-graphique/carte-graphique-amd/radeon-hd-7770/article-478936-1-radeon-hd-7750-7770.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cmswire.com.txt b/inc/3rdparty/site_config/standard/cmswire.com.txt
deleted file mode 100755
index 0b76377a..00000000
--- a/inc/3rdparty/site_config/standard/cmswire.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[contains(@id,'article-body')]
2strip://div[contains(@id,'disqus_count_block')]
3strip://div[contains(@id,'col-left')]
4strip://div[contains(@id,'col-right')]
5
6test_url: http://www.cmswire.com/cms/customer-experience/for-apps-and-appstores-the-singularity-is-approaching-014888.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cn.engadget.com.txt b/inc/3rdparty/site_config/standard/cn.engadget.com.txt
deleted file mode 100755
index 63f6f7ea..00000000
--- a/inc/3rdparty/site_config/standard/cn.engadget.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h2[@class="posttitle"]
2body: //div[@class="postbody"]
3prune: no
4
5test_url: http://cn.engadget.com/2013/06/29/google-play-music-all-access/
diff --git a/inc/3rdparty/site_config/standard/cn.reuters.com.txt b/inc/3rdparty/site_config/standard/cn.reuters.com.txt
deleted file mode 100755
index 28f10472..00000000
--- a/inc/3rdparty/site_config/standard/cn.reuters.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='maincontent']//h1
2body: //div[@id='resizeableText']
3
4single_page_link: concat(//link[@rel='canonical']/@href, '?sp=true')
5
6test_url: http://cn.reuters.com/article/CNAnalysesNews/idCNKBS0FF0NM20140710
7test_url: http://cn.reuters.feedsportal.com/CNAnalysesNews
8# multipage link
9test_url: http://cn.reuters.com/article/idCNKBS0FF0UL20140710 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cnet.com.txt b/inc/3rdparty/site_config/standard/cnet.com.txt
deleted file mode 100755
index eac08aaa..00000000
--- a/inc/3rdparty/site_config/standard/cnet.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //meta[@property="og:title"]/@content
2body: //div[contains(@class, 'postBody')]
3date: //div[@id='nameAndTime']/time
4author: //div[@id='nameAndTime']/span[@class='author']
5
6strip_id_or_class: image-credit
7strip_id_or_class: noAutolink
8strip_id_or_class: related
9
10prune: no
11tidy: no
12
13# early end
14replace_string(Download today's podcast</a>): Download today's podcast</a></div></body></html>
15
16test_url: http://www.cnet.com/8301-13952_1-57367607-81/the-404-981-where-the-world-is-a-vampire-podcast/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cnn.com.txt b/inc/3rdparty/site_config/standard/cnn.com.txt
deleted file mode 100755
index 6f69e4e8..00000000
--- a/inc/3rdparty/site_config/standard/cnn.com.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1body: //div[@id='cnnContentContainer']//div[contains(@class, 'cnn_strycntntlft')]
2title: //div[@class="cnn_storyarea"]/h1
3author: //div[@class="cnnByline"]/strong
4date: substring-after(//div[@class="cnn_strytmstmp"], 'Sun')
5date: substring-after(//div[@class="cnn_strytmstmp"], 'Mon')
6date: substring-after(//div[@class="cnn_strytmstmp"], 'Tue')
7date: substring-after(//div[@class="cnn_strytmstmp"], 'Wed')
8date: substring-after(//div[@class="cnn_strytmstmp"], 'Thu')
9date: substring-after(//div[@class="cnn_strytmstmp"], 'Fri')
10date: substring-after(//div[@class="cnn_strytmstmp"], 'Sat')
11strip: //div[@class="cnn_storyarea"]/h1
12strip_id_or_class: cnnByline
13strip_id_or_class: cnn_strytmstmp
14strip_id_or_class: cnn_strycaptiontxt
15strip_id_or_class: cnn_strybtntoolsbttm
16strip_id_or_class: cnn_strybtntools
17strip_id_or_class: cnn_strybtmcntnt
18strip_id_or_class: sharebar
19#strip_id_or_class: cnn_containerwht
20strip_id_or_class: cnn_stryathrtmp
21replace_string(<a name="em0"></a>): <!-- a name -->
22test_url: http://www.cnn.com/2012/05/13/us/new-york-police-policy/index.html?eref=rss_topstories
23test_url: http://rss.cnn.com/rss/edition.rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cnnsi.com.txt b/inc/3rdparty/site_config/standard/cnnsi.com.txt
deleted file mode 100755
index ac49aef9..00000000
--- a/inc/3rdparty/site_config/standard/cnnsi.com.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1# main sportsillustrated.com articles
2
3body: //div[@id="cnnStoryContent"]
4title: //div[@id="cnnStoryHeadline"]//h1
5author: //div[@id="cnnSubBanner"]//strong
6date: substring-after(//div[@id="cnnTimeStamp"], "Updated: ")
7date: substring-after(//div[@id="cnnTimeStamp"], "Posted: ")
8
9# kill ugly font buttons
10strip: //div[@id="cnnSCFontButtons"]
11
12# kill misc filler videos & etc
13strip: //div[@class="cnnDivideContent"]
14strip: //*[@class="cnnTMbox"]
15
16# si vault articles
17# -------------
18body: //div[@class="siv_artPara"]
19title: //div[@class="siv_artHeader"]//h1
20author: //div[@class="byline"]
21date: //div[@class="date"]
22
23next_page_link: //div[@id='cnnStoryContinue']/a
24strip_id_or_class: cnnstorypagination
25
26test_url: http://cnnsi.com/2012/writers/peter_king/01/08/wild.card.round/index.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/code.activestate.com.txt b/inc/3rdparty/site_config/standard/code.activestate.com.txt
deleted file mode 100755
index 83a21e19..00000000
--- a/inc/3rdparty/site_config/standard/code.activestate.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@id='content']
2title: //div[@id='page_header']/h1
3
4strip_id_or_class: 'lineno'
5strip_id_or_class: 'block-toolbar-button'
6strip_id_or_class: 'recipe_score'
7strip: //div[@id='recipe_tools']
8strip: //div[@id='addcomment']
9
10test_url: http://code.activestate.com/recipes/500261-named-tuples/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/code.fivefilters.org.txt b/inc/3rdparty/site_config/standard/code.fivefilters.org.txt
deleted file mode 100755
index f8a88cae..00000000
--- a/inc/3rdparty/site_config/standard/code.fivefilters.org.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='readme']
2
3test_url: http://code.fivefilters.org/full-text-rss
diff --git a/inc/3rdparty/site_config/standard/code.google.com.txt b/inc/3rdparty/site_config/standard/code.google.com.txt
deleted file mode 100755
index 6e9c00a7..00000000
--- a/inc/3rdparty/site_config/standard/code.google.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@id="gc-pagecontent"]
2strip: //a[@class="backtotop"]
3prune: no
4
5test_url: http://code.google.com/apis/analytics/docs/tracking/gaTrackingEcommerce.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/codeproject.com.txt b/inc/3rdparty/site_config/standard/codeproject.com.txt
deleted file mode 100755
index d1191acc..00000000
--- a/inc/3rdparty/site_config/standard/codeproject.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id="contentdiv"]
2date: //span[@class="date"]
3test_url: http://www.codeproject.com/Articles/499902/Profiling-Entity-Framework-5-in-code \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/codinghorror.com.txt b/inc/3rdparty/site_config/standard/codinghorror.com.txt
deleted file mode 100755
index adf6e5a0..00000000
--- a/inc/3rdparty/site_config/standard/codinghorror.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body: //div[@class='blogbody']
2strip: //h3[@class='title']
3date: //h2[@class='date']
4#Should Atwood just be a literal?
5author: substring-before( substring-after(//div[@class='posted'], 'y'), 'V')
6
7# tim.kingman@... 2011-07-26
8# Prune:no to retain all-link ULs that are part of the body content like
9# http://www.codinghorror.com/blog/2011/07/building-a-pc-part-vii-rebooting.html
10# Then explicitly strip the "Posted By" and prev/next links that Prune:yes would have removed.
11
12prune: no
13strip: //div[@class='posted']/following-sibling::*
14strip: //div[@class='posted']
15test_url: http://www.codinghorror.com/blog/2011/07/building-a-pc-part-vii-rebooting.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/collegehumor.com.txt b/inc/3rdparty/site_config/standard/collegehumor.com.txt
deleted file mode 100755
index 318e6ff4..00000000
--- a/inc/3rdparty/site_config/standard/collegehumor.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //h1[@class='title']
2author: //p[@class='byline']/a[1]
3date: //*[@class='date']
4
5body: //div[@class='article_body']
6strip: //p[@class='ca_intro']
7strip: //div[@id='action_bar']
8strip: //div[@class='below_content']
9strip: //div[@id='announcement']
10strip: //div[@id='leftovers']
11strip: //div[@class='form']
12strip: //div[@id='email_overlay']
13strip: //a[@class='close']
14test_url: http://www.collegehumor.com/article/6599562/how-it-happened-the-necktie \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/communities-dominate.blogs.com.txt b/inc/3rdparty/site_config/standard/communities-dominate.blogs.com.txt
deleted file mode 100755
index 800a907d..00000000
--- a/inc/3rdparty/site_config/standard/communities-dominate.blogs.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class="entry-body"]
2test_url: http://communities-dominate.blogs.com/brands/2012/03/brutal-truth-about-lumia-cannot-sustain-even-1-to-1-replacement-of-symbian-windows-phone-strategy-do.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/community.service-now.com.txt b/inc/3rdparty/site_config/standard/community.service-now.com.txt
deleted file mode 100755
index c9854b43..00000000
--- a/inc/3rdparty/site_config/standard/community.service-now.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[@id="center"]//div[@class="node"]
2title: //div[@id="center"]//h2
3author: substring-after(//div[@id="center"]//div[@class="node"]//span[@class="submitted"], "&mdash;")
4date: substring-before(//div[@id="center"]//div[@class="node"]//span[@class="submitted"], "&mdash;")
5strip: //div[@id="center"]//h2[1]
6strip: //span[@class="submitted"][1]
7move_into(//div[@class="node"])://div[@class="breadcrumb"]
8test_url: http://community.service-now.com/blog/lawrenceeng/seasons-greetings-servicenow-team \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/computer.org.txt b/inc/3rdparty/site_config/standard/computer.org.txt
deleted file mode 100755
index 8345cf50..00000000
--- a/inc/3rdparty/site_config/standard/computer.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1strip_id_or_class:column-3
2strip_id_or_class:portlet-boundary
3strip_id_or_class:banner
4
5test_url: http://www.computer.org/portal/web/buildyourcareer/careerwatch/jt19 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/computerbase.de.txt b/inc/3rdparty/site_config/standard/computerbase.de.txt
deleted file mode 100755
index 5973c50b..00000000
--- a/inc/3rdparty/site_config/standard/computerbase.de.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title://h1
2
3author://div[@id="news-meta"]/a
4
5body://*[@id="main"]/div[1]
6
7strip://*[@id="main"]/div[2]
8strip://*[@id="main"]/div[3]
9strip://*[@id="page"]//footer
10
11#date: didn't manage to parse it
12
13#Images have to be stripped because the page does it with overlay
14strip://img
15
16#figures are not displayed in instapaper...
17strip://figure | //figcaption
18test_url: http://www.computerbase.de/news/2012-06/verbraucherzentrale-mahnt-blizzard-fuer-diablo-3-ab/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/computerworld.com.txt b/inc/3rdparty/site_config/standard/computerworld.com.txt
deleted file mode 100755
index 7f20a4da..00000000
--- a/inc/3rdparty/site_config/standard/computerworld.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1title: //meta[@name='headline']/@content
2date: //meta[@name='date']/@content
3author: //meta[@name='author']/@content
4body: //div[contains(@class, 'article')]
5body://div[@id="article_body"]
6
7strip_id_or_class: banner
8strip: //noscript
9strip: //div[@style='width:1px;height:130px;float:right;']
10strip: //div[@class='storyby']
11strip_image_src: twitter_icon
12strip_image_src: rss_bug
13
14tidy: no
15prune: no
16
17next_page_link://div[@id="next_page"]/a
18
19single_page_link: concat('http://www.computerworld.com/s/article/print/', substring-after(//link[@rel='canonical']/@href, '/s/article/'))
20
21test_url: http://www.computerworld.com/s/article/9224348/Apple_s_new_OS_X_tightens_screws_on_some_malware
22test_url: http://www.computerworld.com/s/article/9227679/Windows_8_Release_Preview_Updated_but_still_uneasy \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/computerworld.dk.txt b/inc/3rdparty/site_config/standard/computerworld.dk.txt
deleted file mode 100755
index d819109c..00000000
--- a/inc/3rdparty/site_config/standard/computerworld.dk.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1strip: //div[contains(@class, 'articleAdtechAd')]
2title: //div[@id='article']/h1
3title: //div[contains(@class, 'article')]/h1
4body: //div[@id='articleText']
5test_url: http://www.computerworld.dk/art/56748/test-din-viden-med-computerworlds-store-sommerquiz?a=fp_1&i=0 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/contemporist.com.txt b/inc/3rdparty/site_config/standard/contemporist.com.txt
deleted file mode 100755
index c3120fe8..00000000
--- a/inc/3rdparty/site_config/standard/contemporist.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1# get author from string like "Posted by <author> on <date>"
2author: substring-before(substring-after(//div[@class='post']/p[@class='post-meta'], 'by'), 'on')
3
4# get date from string like "Posted by <author> on <date>"
5date: substring-after(//div[@class='post']/p[@class='post-meta'], 'on')
6
7# this keeps thumbnail images
8prune: no
9test_url: http://www.contemporist.com/2011/11/02/landing-200-lamp-by-kim-hyunjoo \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/conversaciones.nokia.com.txt b/inc/3rdparty/site_config/standard/conversaciones.nokia.com.txt
deleted file mode 100755
index 966cc861..00000000
--- a/inc/3rdparty/site_config/standard/conversaciones.nokia.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class='article_header']/h1
2body: //div[@class='article_header']/p | //div[@class='article_body']
3strip_id_or_class: share_this
4strip_id_or_class: sociable
5prune: no
6
7test_url: http://conversaciones.nokia.com/2011/10/07/cinco-atajos-en-el-nokia-n8/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cooper.com.txt b/inc/3rdparty/site_config/standard/cooper.com.txt
deleted file mode 100755
index a4244097..00000000
--- a/inc/3rdparty/site_config/standard/cooper.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //*[contains(@class,'body')]
2date: //abbr[@class='published']
3
4test_url: http://www.cooper.com/journal/2012/08/2-weeks-left-to-win-your-way-to-the-woodstock-of-ux-coopers-ux-boot-camp.html/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/core77.com.txt b/inc/3rdparty/site_config/standard/core77.com.txt
deleted file mode 100755
index cf1fa93c..00000000
--- a/inc/3rdparty/site_config/standard/core77.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id="permalink"]/div[@class="post"]
2
3strip: //div[@id='backArrow']
4strip: //div[@id='fwdArrow']
5strip: //div[@class="post-title"]
6strip: //div[@class="sharing"]
7test_url: http://www.core77.com/blog/columns/why_design_education_must_change_17993.asp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/counterpunch.org.txt b/inc/3rdparty/site_config/standard/counterpunch.org.txt
deleted file mode 100755
index b6bd8be5..00000000
--- a/inc/3rdparty/site_config/standard/counterpunch.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='main']//h1[contains(@class, 'article-title')]
2author: //div[@class='mainauthorstyle']
3body: //div[@class='main']//div[@class='main-text']
4strip: //td[@width='140']
5
6test_url: http://www.counterpunch.org/johnstone05172011.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/crazybutable.com.txt b/inc/3rdparty/site_config/standard/crazybutable.com.txt
deleted file mode 100755
index 037cd177..00000000
--- a/inc/3rdparty/site_config/standard/crazybutable.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title://h2
2body://div[contains(@class, 'entrytext')]
3test_url: http://www.crazybutable.com/weblog/archives/2010/07/01/house-ideas-that-worked/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/crimemagazine.com.txt b/inc/3rdparty/site_config/standard/crimemagazine.com.txt
deleted file mode 100755
index 9cf0bccc..00000000
--- a/inc/3rdparty/site_config/standard/crimemagazine.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1autodetect_next_page: no
2test_url: http://www.crimemagazine.com/son-sam \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/crimethinc.com.txt b/inc/3rdparty/site_config/standard/crimethinc.com.txt
deleted file mode 100755
index b5a8018a..00000000
--- a/inc/3rdparty/site_config/standard/crimethinc.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class="readingtext"]
2title: substring-after(substring-after(//title, ':'), ':')
3test_url: http://www.crimethinc.com/texts/recentfeatures/nightmares.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/crn.de.txt b/inc/3rdparty/site_config/standard/crn.de.txt
deleted file mode 100755
index 61d5d6a7..00000000
--- a/inc/3rdparty/site_config/standard/crn.de.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1author: //p[contains(@class,'author')]/a
2date: //div[contains(@class,'date')]
3test_url: http://www.crn.de/netzwerke-tk/artikel-93103.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/csmonitor.com.txt b/inc/3rdparty/site_config/standard/csmonitor.com.txt
deleted file mode 100755
index 70ab9885..00000000
--- a/inc/3rdparty/site_config/standard/csmonitor.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //h1[contains(@class, 'head')]
2
3# standard page
4body: //div[@id='mainColumn']//div[contains(@class, 'list-article-full')]
5# print page
6body: //div[@id='mainColumn']
7
8author: //a[contains(@class, 'ui-author')]
9
10single_page_link: //div[@class='storyToolbar']//a[contains(@href, '/print/')]
11
12strip_id_or_class: storyToolbar
13strip_id_or_class: promotion-tag
14
15tidy: no
16prune: no
17
18test_url: http://www.csmonitor.com/World/Middle-East/2011/1108/Imminent-Iran-nuclear-threat-A-timeline-of-warnings-since-1979/Earliest-warnings-1979-84
diff --git a/inc/3rdparty/site_config/standard/csnbayarea.com.txt b/inc/3rdparty/site_config/standard/csnbayarea.com.txt
deleted file mode 100755
index 1da60b4e..00000000
--- a/inc/3rdparty/site_config/standard/csnbayarea.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@id='csn_blogST_headline']/h1
2
3body: //div[@id='csn_blogST_main']
4strip_id_or_class: ipfootnotes
5strip: //div[@id='csn_blogST_main']/p[1]/img
6strip: //div[@id='csn_blogST_sidebar']
7test_url: http://www.csnbayarea.com/blog/giants-talk/post/-?blog%2Fgiants-talk%2Fpost%2F-=&blockID=578902&feedID=5987 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/csnphilly.com.txt b/inc/3rdparty/site_config/standard/csnphilly.com.txt
deleted file mode 100755
index c14a934a..00000000
--- a/inc/3rdparty/site_config/standard/csnphilly.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1# author's name is not isolated as a tag.... ugh
2convert_double_br_tags: yes
3body: //csn_blogST_main
4
5#junk above and around the article
6strip: /html/body/div[4]/div[3]/div/div/div/section/div/div/div/div/div/div
7strip: /html/body/div[4]/header
8strip_id_or_class: article-right-sidebar
9strip_id_or_class: rsn-gigya-sharebar-container
10strip_id_or_class: article-bottom
11strip_id_or_class: hider
12strip_id_or_class: footer
13strip_id_or_class: masthead
14strip_id_or_class: block-menu-menu-rsn-login-or-register
15strip_id_or_class: block-menu-menu-header-links
16strip_id_or_class: block-rsn-follow-bar-follow-bar
17strip_id_or_class: block-rsn-weather-rsn-weather-scoreboard
18strip_id_or_class: logo
19strip_id_or_class: element-invisible
20strip_id_or_class: site-name
21strip: //div[contains(@style, 'none')]
22test_url: http://www.csnphilly.com/eagles/can-stoutland-save-danny-watkins-career \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/css-tricks.com.txt b/inc/3rdparty/site_config/standard/css-tricks.com.txt
deleted file mode 100755
index 3d8174aa..00000000
--- a/inc/3rdparty/site_config/standard/css-tricks.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title://article[contains(@id, "post-")]/h1
2date://article[contains(@id, "post-")]/p[@class="time"]/time
3body://article[contains(@id, "post-")]
4strip://article[contains(@id, "post-")]/p[@class="time"]/time
5prune:yes
6test_url: http://css-tricks.com/off-canvas-menu-with-css-target/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cucharasonica.com.txt b/inc/3rdparty/site_config/standard/cucharasonica.com.txt
deleted file mode 100755
index e691fe83..00000000
--- a/inc/3rdparty/site_config/standard/cucharasonica.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://cucharasonica.com/2011/09/queen-busca-candidatos-para-su-propia-banda-tributo \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/cw.com.tw.txt b/inc/3rdparty/site_config/standard/cw.com.tw.txt
deleted file mode 100755
index 6e3a91ee..00000000
--- a/inc/3rdparty/site_config/standard/cw.com.tw.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1author://span[contains(@class,'reporter')]
2
3date://span[contains(@class,'date')]
4
5body://div[contains(@class,'mainContaner')]
6
7strip://div[contains(@class,'mainHeaer')]
8strip://div[contains(@class,'keyW')]
9strip://div[contains(@class,'wonderful')]
10strip://div[contains(@class,'pages')]
11strip://div[contains(@class,'Topics TopicsW3')]
12
13next_page_link://li[@class='pageNext']/a[contains(.,'下一頁')]
14test_url: http://www.cw.com.tw/article/article.action?id=5032848 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/da.feedsportal.com.txt b/inc/3rdparty/site_config/standard/da.feedsportal.com.txt
deleted file mode 100755
index 2bd66be8..00000000
--- a/inc/3rdparty/site_config/standard/da.feedsportal.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1single_page_link: //a
2tidy: no
3prune: no
4
5test_url: http://da.feedsportal.com/c/585/f/413794/s/17037b5a/l/0L0Stelegraaf0Bnl0Cbinnenland0C10A2757860C0I0IKlacht0Itegen0Idr0B0IFrank0Iniet0I0Eontvankelijk0I0I0Bhtml0Dcid0Frss/ia1.htm
diff --git a/inc/3rdparty/site_config/standard/dagogtid.no.txt b/inc/3rdparty/site_config/standard/dagogtid.no.txt
deleted file mode 100755
index 1531472c..00000000
--- a/inc/3rdparty/site_config/standard/dagogtid.no.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //span[@class = 'overskriftEkstrastor']
2author: //em/a
3
4test_url: http://dagogtid.no/nyhet.cfm?nyhetid=2414 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dailydot.com.txt b/inc/3rdparty/site_config/standard/dailydot.com.txt
deleted file mode 100755
index 978ed1ce..00000000
--- a/inc/3rdparty/site_config/standard/dailydot.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1tidy: no
2body: //article
3
4test_url: http://www.dailydot.com/entertainment/tumblr-christopher-price-topherchris/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dailykos.com.txt b/inc/3rdparty/site_config/standard/dailykos.com.txt
deleted file mode 100755
index 6d4cb82a..00000000
--- a/inc/3rdparty/site_config/standard/dailykos.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@id='article-1']//div[contains(@class, 'article-body')]
2title: //div[@class='meta']//a[@id='titleHref']
3date: //div[@class='meta']//p[@class='date']
4
5strip_id_or_class: invisible
6strip_id_or_class: divider-doodle
7
8prune: no
9
10test_url: http://www.dailykos.com/story/2012/01/26/1058790/-Newt-Gingrich-s-campaign-admits-he-lied-during-debate-about-ABC-News-interview-with-his-ex-wife
diff --git a/inc/3rdparty/site_config/standard/dailymail.co.uk.txt b/inc/3rdparty/site_config/standard/dailymail.co.uk.txt
deleted file mode 100755
index cd29a4d4..00000000
--- a/inc/3rdparty/site_config/standard/dailymail.co.uk.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@id='js-article-text']
2strip: //div[@class='explore-links']
3strip: //div[@id='js-article-text']/br[position()=1]
4strip_id_or_class: print-or-mail-links
5strip_id_or_class: shareArticles
6strip_id_or_class: googleAds
7strip_id_or_class: digg-button
8strip_id_or_class: article-icon-links-container
9strip_id_or_class: clickToEnlarge
10tidy: no
11
12test_url: http://www.dailymail.co.uk/news/article-1375423/Royal-wedding-Texan-billionaire-Joe-Albritton-invited-Prince-Charles.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dailystar.com.lb.txt b/inc/3rdparty/site_config/standard/dailystar.com.lb.txt
deleted file mode 100755
index 3b153042..00000000
--- a/inc/3rdparty/site_config/standard/dailystar.com.lb.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='ec-blog-headline']
2body: //*[@id="divDetails"]
3date: //*[@id="ctl00_ContentPlaceHolder1_tdDate"]
4author: //*[@id="ctl00_ContentPlaceHolder1_anchorAuthor"]/a
5autodetect_next_page: no
6test_url: http://dailystar.com.lb/Opinion/Columnist/2012/Oct-10/190803-americas-new-modesty-in-the-mideast.ashx#axzz2928JP5xE \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/danleech.com.txt b/inc/3rdparty/site_config/standard/danleech.com.txt
deleted file mode 100755
index 1d4cec77..00000000
--- a/inc/3rdparty/site_config/standard/danleech.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1tidy: no
2prune: no
3date: //article//time[@pubdate]
4title: //article/h1//span[contains(@class, 'entry-title')]
5body: //article/div[contains(@class, 'entry-content')]
6test_url: http://danleech.com/post/36822126876/simple-icons \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dansdata.com.txt b/inc/3rdparty/site_config/standard/dansdata.com.txt
deleted file mode 100755
index 60669480..00000000
--- a/inc/3rdparty/site_config/standard/dansdata.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1autodetect_next_page: no
2tidy: no
3prune: no
4body: //div[@class='NoOverflow']
5test_url: http://www.dansdata.com/gz129.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dantri.com.vn.txt b/inc/3rdparty/site_config/standard/dantri.com.vn.txt
deleted file mode 100755
index f19fee7c..00000000
--- a/inc/3rdparty/site_config/standard/dantri.com.vn.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[contains(@class, 'fon31 mt2')]
2body: //h2[contains(@class, 'fon33 mt1')] | //div[contains(@class, 'fon34 mt3')]
3
4prune: no
5
6test_url: http://dantri.com.vn/su-kien/chang-trai-mot-minh-dap-xe-vuot-450km-de-vieng-mo-dai-tuong-869763.htm
7test_url: http://dantri.com.vn/trangchu.rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/daringfireball.net.txt b/inc/3rdparty/site_config/standard/daringfireball.net.txt
deleted file mode 100755
index 251cc670..00000000
--- a/inc/3rdparty/site_config/standard/daringfireball.net.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class="article"]/h1
2author: //div[@id="Sidebar"]/p/strong
3date: //h6[@class="dateline"]
4body: //div[@class="article"]
5strip: //h6[@class="dateline"]
6strip: //div[@class="article"]/h1
7test_url: http://daringfireball.net/2011/10/apps_are_the_new_channels \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/datanami.com.txt b/inc/3rdparty/site_config/standard/datanami.com.txt
deleted file mode 100755
index e9111a48..00000000
--- a/inc/3rdparty/site_config/standard/datanami.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id="article"]
2date: //p[@class="date"]
3author: //p[@class="byline"]
4test_url: http://www.datanami.com/datanami/2011-12-07/new_path_for_sap:_in_memory_computing,_predictive_analysis_converge.html?featured=top \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dcurt.is.txt b/inc/3rdparty/site_config/standard/dcurt.is.txt
deleted file mode 100755
index 524c4bf1..00000000
--- a/inc/3rdparty/site_config/standard/dcurt.is.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: (//article//h2)[1]
2body: //article[contains(@class, 'post')]
3date: //time[@id='top_time']/@datetime
4
5prune: no
6tidy: no
7
8test_url: http://dcurt.is/predictions-txt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/defomicron.net.txt b/inc/3rdparty/site_config/standard/defomicron.net.txt
deleted file mode 100755
index 9f11258c..00000000
--- a/inc/3rdparty/site_config/standard/defomicron.net.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //article/h1
2author: //hgroup/h3/a
3date: //time
4body: //article
5strip: //aside
6footnotes: yes
7prune: no
8tidy: no
9test_url: https://defomicron.net/2012/09/ios-6/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/delong.typepad.com.txt b/inc/3rdparty/site_config/standard/delong.typepad.com.txt
deleted file mode 100755
index c4b922e4..00000000
--- a/inc/3rdparty/site_config/standard/delong.typepad.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1strip_id_or_class: banner
2strip_id_or_class: gamma
3strip_id_or_class: module-list
4test_url: http://delong.typepad.com/sdj/2011/02/in-which-suresh-naidu-visits-the-new-jerusalem.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/democracynow.org.txt b/inc/3rdparty/site_config/standard/democracynow.org.txt
deleted file mode 100755
index b0050b4f..00000000
--- a/inc/3rdparty/site_config/standard/democracynow.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[contains(@class, 'blog_body')]
2
3prune: no
4
5test_url: http://www.democracynow.org/blog/2014/1/9/the_fbi_the_nsa_and_a \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/derstandard.at.txt b/inc/3rdparty/site_config/standard/derstandard.at.txt
deleted file mode 100755
index 07db3521..00000000
--- a/inc/3rdparty/site_config/standard/derstandard.at.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //div[@id='artikelHeader']/h1
2author: //span[@class='author']
3date: //span[@class='date']
4body: //div[@class='copytext']
5strip: //ul[@class='lookupLinksArtikel']
6
7strip: //div[@id='pageTop']
8strip: //div[@id='toolbar']
9strip: //div[@id='articleTools']
10strip: //div[@id='weiterlesen']
11strip: //div[@id='communityCanvas']
12
13test_url: http://derstandard.at/1318726018343/Breitband-LTE-Was-bringt-die-neue-Mobilfunk-Generation \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/designsponge.com.txt b/inc/3rdparty/site_config/standard/designsponge.com.txt
deleted file mode 100755
index 2cd2f1f6..00000000
--- a/inc/3rdparty/site_config/standard/designsponge.com.txt
+++ /dev/null
@@ -1,31 +0,0 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set title
7title: //header/h1
8
9# Set author
10author: //a[rel='author']
11
12# Content is here
13body: //article
14
15# Tidy up before article
16strip: //header
17
18# Tidy up article
19strip: //div[contains(@id, 'gallery-')]
20replace_string(<a rel="attachment): <p rel="attachment
21
22
23# Tidy up after article
24strip: //div[@class='sm']
25strip_id_or_class: related
26strip_id_or_class: comments
27strip: //footer
28
29# Try it yourself
30test_url: http://www.designsponge.com/2010/06/seattle-design-guide.html
31test_url: http://www.designsponge.com/2012/04/sneak-peek-liz-cook.html
diff --git a/inc/3rdparty/site_config/standard/designtagebuch.de.txt b/inc/3rdparty/site_config/standard/designtagebuch.de.txt
deleted file mode 100755
index 9020847f..00000000
--- a/inc/3rdparty/site_config/standard/designtagebuch.de.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1tidy: no
2body: //div[@class='main']
3
4author: substring-before(substring-after(//div[@class='meta-single'], 'erstellt von '), ' am')
5date: substring-before(substring-after(//div[@class='meta-single'], ' am '), ' | ')
6
7strip_id_or_class: pagelink
8strip_id_or_class: wp-polls
9
10next_page_link: //div[@class='post-page-next']/a
11test_url: http://www.designtagebuch.de/die-gefuehlte-lesbarkeit/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/desitvforum.net.txt b/inc/3rdparty/site_config/standard/desitvforum.net.txt
deleted file mode 100755
index c77007b7..00000000
--- a/inc/3rdparty/site_config/standard/desitvforum.net.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: (//blockquote[contains(@class, 'postcontent')])[1]
2body: (//div[starts-with(@id, 'post_message')])[1]
3
4prune: no
5tidy: no
6
7test_url: http://www.desitvforum.net/forum/watch-online/431739-creature-3d-2014-watch-online-download-dvd-rip.html
diff --git a/inc/3rdparty/site_config/standard/details.com.txt b/inc/3rdparty/site_config/standard/details.com.txt
deleted file mode 100755
index d1d8a29a..00000000
--- a/inc/3rdparty/site_config/standard/details.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class="content-headline"]
2body: //div[@class="headers-container"] | //div[@class="content-container"]
3prune: no
4tidy: no
5
6single_page_link: //li[@class='utility-print']/a
7
8test_url: http://www.details.com/culture-trends/critical-eye/201108/best-new-designers-innovations \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt b/inc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt
deleted file mode 100755
index 36709cab..00000000
--- a/inc/3rdparty/site_config/standard/deutsche-apotheker-zeitung.de.txt
+++ /dev/null
@@ -1,29 +0,0 @@
1# Author: zinnober
2
3prune: yes
4tidy: yes
5
6title: //h1
7date: //p[@class='news_datum']
8author: //span[@class='author']
9
10body: //div[@class='tagesnews-content']
11
12# General clenaup
13strip_id_or_class: dachzeile
14strip: //h3
15strip: //p[@class='bodytext']//a
16strip_id_or_class: autor_datum
17strip_id_or_class: comments
18strip_id_or_class: banner-
19
20strip: //p[contains(., 'Lesen Sie')]
21strip: //p[contains(., '– in DAZ')]
22
23# Fix image captions
24replace_string(<p class="image_caption">): <p><small><em>
25replace_string(</dd>): </em></small></dd>
26
27test_url: http://www.deutsche-apotheker-zeitung.de/pharmazie/news/2014/09/03/weniger-nebenwirkungen-aber-kein-zusatznutzen/13715.html
28test_url: http://www.deutsche-apotheker-zeitung.de/recht/news/2014/09/02/urteile-zum-cannabis-eigenanbau-bfarm-geht-in-berufung/13716.html
29
diff --git a/inc/3rdparty/site_config/standard/developers.facebook.com.txt b/inc/3rdparty/site_config/standard/developers.facebook.com.txt
deleted file mode 100755
index 7609b72f..00000000
--- a/inc/3rdparty/site_config/standard/developers.facebook.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //div[@class="bodyText"]/h1
2author: //div[@class="picture"]/a/img/@alt
3test_url: https://developers.facebook.com/blog/post/2012/03/22/developer-spotlight--foodspotting/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/devlinsangle.blogspot.co.at.txt b/inc/3rdparty/site_config/standard/devlinsangle.blogspot.co.at.txt
deleted file mode 100755
index 6f1d4e27..00000000
--- a/inc/3rdparty/site_config/standard/devlinsangle.blogspot.co.at.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1date: //h2[@class='date-header']
2body: //div[@class='post hentry']
3title: //h3
4strip: //div[@class='post-footer']
5
6test_url: http://devlinsangle.blogspot.co.at/2012/03/difference-between-teaching-and_01.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dictionary.reference.com.txt b/inc/3rdparty/site_config/standard/dictionary.reference.com.txt
deleted file mode 100755
index b8243d0c..00000000
--- a/inc/3rdparty/site_config/standard/dictionary.reference.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[contains(@class, 'source-data')]
2strip: //button
3
4prune: no
5
6test_url: http://dictionary.reference.com/browse/propaganda
diff --git a/inc/3rdparty/site_config/standard/diepresse.com.txt b/inc/3rdparty/site_config/standard/diepresse.com.txt
deleted file mode 100755
index ced189cc..00000000
--- a/inc/3rdparty/site_config/standard/diepresse.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='article']/h1
2date: substring-before(//p[@class='articletime'],'|')
3body: //div[@id='articletext']
4strip: //div[@class='inlineDiashow']
5
6test_url: http://diepresse.com/home/politik/aussenpolitik/701905/TibeterProteste_Nonne-verbrennt-sich-selbst?_vl_backlink=/home/politik/index.do \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/digiphoto.techbang.com.txt b/inc/3rdparty/site_config/standard/digiphoto.techbang.com.txt
deleted file mode 100755
index 80ce5ff3..00000000
--- a/inc/3rdparty/site_config/standard/digiphoto.techbang.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1# default parser works great
2# only add "author" and "next page link" reference
3# 2012-04-13
4
5next_page_link: //div[@class = 'pagination']/a[@class = 'next_page']
6
7author: //*[@class = 'author metadata']/a
8test_url: http://digiphoto.techbang.com/posts/2433--commercial-photography-communication-is-the-key-to-a-good-work \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/digital-photography-school.com.txt b/inc/3rdparty/site_config/standard/digital-photography-school.com.txt
deleted file mode 100755
index 18ce370e..00000000
--- a/inc/3rdparty/site_config/standard/digital-photography-school.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='post-title']/h1
2author: //a[@href='#author']
3body: //div[@class='post-content']
4strip: //div[@class='post-meta']
5
6test_url: http://www.digital-photography-school.com/10-ways-to-develop-yourself-photographically \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/digitalspy.co.uk.txt b/inc/3rdparty/site_config/standard/digitalspy.co.uk.txt
deleted file mode 100755
index f48bdfdb..00000000
--- a/inc/3rdparty/site_config/standard/digitalspy.co.uk.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class="article_header"]/h1
2date: //div[@class="article_pub"]/span[@class="time"]
3author: //div[@class="article_pub"]/span[@class="editors"]/a/text()
4body: //div[@class="article_body clear_left"]
5test_url: http://www.digitalspy.co.uk/movies/at-the-movies/a364066/top-5-super-bowl-movie-trailers-the-avengers-battleship-more.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dilbert.com.txt b/inc/3rdparty/site_config/standard/dilbert.com.txt
deleted file mode 100755
index 85cc78e5..00000000
--- a/inc/3rdparty/site_config/standard/dilbert.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1#title: substring(substring-after(//title, ':'), 1, string-length(substring-after(//title, ':')) - 10)
2title: //div[contains(@class, 'SB_Title')]//a
3body: //div[contains(@class, 'STR_Image')]
4body: //*[contains(@class, 'SB_Content')]
5author: string('Scott Adams')
6date: //*[contains(@class, 'SB_Detail')]/text()[1]
7
8
9test_url: http://dilbert.com/blog/entry/death_by_hypnosis_or_not/
10test_url: http://dilbert.com/strips/comic/2013-10-22
11test_url: http://feed.dilbert.com/dilbert/daily_strip \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dinamalar.com.txt b/inc/3rdparty/site_config/standard/dinamalar.com.txt
deleted file mode 100755
index bc315cf1..00000000
--- a/inc/3rdparty/site_config/standard/dinamalar.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //div[@class='newsdetbd']
2body: //div[@id='innerleft']
3#//p[@class = 'plnht']
4strip_image_src: /albums/
5strip: //div[@class='mrrt']
6prune: yes
7strip_id_or_class: 'fdpd'
8strip_id_or_class: 'epapt'
9strip_id_or_class: 'newsrtwd'
10strip_id_or_class: 'padtp'
11strip_id_or_class: 'newdt'
12strip_id_or_class: 'newdlt'
13strip: //div[@id='selNotes']
14strip_id_or_class: 'clsNotes'
15strip_id_or_class: 'clear'
16strip_id_or_class: 'cmtwrap'
17strip_id_or_class: 'sess'
18strip_id_or_class: 'parents'
19test_url: http://www.dinamalar.com/News_Detail.asp?Id=295725 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dn.pt.txt b/inc/3rdparty/site_config/standard/dn.pt.txt
deleted file mode 100755
index 051b8cb9..00000000
--- a/inc/3rdparty/site_config/standard/dn.pt.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1single_page_link: concat('http://www.dn.pt/Common/print.aspx?content_id=', //input[@type='hidden' and @name='link-comments']/@value)
2#<input type="hidden" name="link-comments" class="link-comments" value="3972244">
3
4title: //h1
5author: //div[@class="Author"]
6
7strip: //div[@class="Patrocinio"]
8
9test_url: http://www.dn.pt/inicio/opiniao/interior.aspx?content_id=3972244&seccao=Alberto%20Gon%E7alves&tag=Opini%E3o%20-%20Em%20Foco&page=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dn.se.txt b/inc/3rdparty/site_config/standard/dn.se.txt
deleted file mode 100755
index 5283a0cd..00000000
--- a/inc/3rdparty/site_config/standard/dn.se.txt
+++ /dev/null
@@ -1,28 +0,0 @@
1# Since this element has class="clear", the Instapaper stylesheets (at least this text parser preview), will render it unreadable, with a 1px font size and line height.
2
3body: //div[@id="article-content"]
4
5
6# Ads
7strip_id_or_class: advert-space
8
9# Read more, recommend, comments etc
10strip_id_or_class: fbc-recommend
11strip_id_or_class: recommend
12strip_id_or_class: article-readers
13strip_id_or_class: article-addons
14strip_id_or_class: hook
15strip_id_or_class: right
16strip_id_or_class: footer
17
18# Other news
19strip: //div[@id="mirrors"]
20
21# Author
22author: //div[@id="byline"]/div/p/strong
23
24# Date
25date: substring(substring-after(//p[@class="published"], 'Publicerad '), 0, 11)
26
27test_url: http://www.dn.se/nyheter/varlden/landade-flygplan-mitt-i-villaomrade
28test_url: http://www.dn.se/m/rss/senaste-nytt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dobreprogramy.pl.txt b/inc/3rdparty/site_config/standard/dobreprogramy.pl.txt
deleted file mode 100755
index 972293bc..00000000
--- a/inc/3rdparty/site_config/standard/dobreprogramy.pl.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //*[@class="news"]//h1[@class="title"]
2author: //*[@class="news"]//*[@class="newsInfo"]/a
3date: substring-before(//*[@class="news"]//*[@class="newsInfo"]/text(), ',')
4body: //*[@class="news"]//*[@class="newsContent"]
5footnotes: no
6test_url: http://www.dobreprogramy.pl/Sony-konczy-z-Foldinghome-na-PS3,Aktualnosc,36899.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/doctac.com.txt b/inc/3rdparty/site_config/standard/doctac.com.txt
deleted file mode 100755
index 1c518a9b..00000000
--- a/inc/3rdparty/site_config/standard/doctac.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1strip: //*[(@id = "featured")]
2
3author:substring-after( //div[@class='posttitle']/h2[@class='author'],'by ')
4
5date: concat(//div[@class='month'],' ',//div[@class='day'])
6
7#doctac doesn't provide a year, but month/day is better than nothing
8test_url: http://www.doctac.com/mac/iphone/instapaper-update-app/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/domusweb.it.txt b/inc/3rdparty/site_config/standard/domusweb.it.txt
deleted file mode 100755
index 20566ee3..00000000
--- a/inc/3rdparty/site_config/standard/domusweb.it.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1# TODO: clean up the extra junk at the end of articles
2
3# general text formatting
4prune: no
5convert_double_br_tags:yes
6
7# where to find the basic metadata
8author://a[@class='articleauthor']
9date://a[starts-with(@href,'/en/search/published/')]
10title:substring-before(//h2[@class='title'],'&mdash;')
11body://div[@id='maincontainer']
12
13dissolve://div[starts-with(@id,'commentableblock')]
14
15# clean up the crap
16strip://div[contains(@class,'domusnetwork')]
17strip://div[contains(@class,'relative_wrapper')]
18
19strip://div[contains(@class,'captionsubimage')]/img[contains(@class,'arrow')]
20wrap_in(em): //div[contains(@class,'captionsubimage')]/span
21test_url: http://www.domusweb.it/en/design/in-praise-of-lost-time/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dou.ua.txt b/inc/3rdparty/site_config/standard/dou.ua.txt
deleted file mode 100755
index 0f983112..00000000
--- a/inc/3rdparty/site_config/standard/dou.ua.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@itemprop="name"]
2
3author: //div[contains(@class, 'author')]//div[contains(@class, 'name')]/a
4
5date: //div[contains(@class, 'b-info')]//span[contains(@class, 'date')]
6
7body: //div[contains(@class, 'b-typo')]
8test_url: http://dou.ua/lenta/interviews/andrej-havryuchenko/?from=sb_mostcomm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/douban.com.txt b/inc/3rdparty/site_config/standard/douban.com.txt
deleted file mode 100755
index d72a2223..00000000
--- a/inc/3rdparty/site_config/standard/douban.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1# This filter is tested on:
2# http://www.douban.com/note/215003067/
3# http://www.douban.com/note/213540049/
4# http://www.douban.com/group/topic/31140104/
5
6title: //div[@class='note-header']/h1
7title: //div[@id='content']/h1
8
9author: //div[@class='info']/ul/li/a
10author: //h3/span/a
11
12date://div[@class='note-header']/div/span
13date://h3/span[contains(@class, 'color-green')]
14
15body://div[contains(@class, 'note')]
16body://div[contains(@class, 'topic-content')]
17
18strip://h3
19
20convert_double_br_tags: yes
21test_url: http://www.douban.com/group/topic/31140104/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dpreview.com.txt b/inc/3rdparty/site_config/standard/dpreview.com.txt
deleted file mode 100755
index 001c810f..00000000
--- a/inc/3rdparty/site_config/standard/dpreview.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1# next_page_link for product review
2# example: http://www.dpreview.com/reviews/lytro/
3next_page_link: //img[@alt = 'Next page']/../@href
4
5# next_page_link for other articles
6# example: http://www.dpreview.com/articles/6126592906/first-impressions-using-the-fujifilm-x-pro1
7next_page_link: //*[@class = 'pages']/*/td[@class = 'next enabled']/a
8single_page_link: //a[contains(.,'Print view')]
9test_url: http://www.dpreview.com/articles/6126592906/first-impressions-using-the-fujifilm-x-pro1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dr.dk.txt b/inc/3rdparty/site_config/standard/dr.dk.txt
deleted file mode 100755
index d8ec1acf..00000000
--- a/inc/3rdparty/site_config/standard/dr.dk.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //meta[@property='og:title']/@content
2author: //div[@class='articleFunctions']//a
3date: //meta[@name='pubdate']/@content
4
5# Can you strip elements from the body only? It is required here (`//div[@class='articleContent']/p` breaks for some reason)
6body: //div[@class='articleContent']
7
8tidy: no
9test_url: http://www.dr.dk/Nyheder/Udland/2011/10/24/150115.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dramasonline.com.txt b/inc/3rdparty/site_config/standard/dramasonline.com.txt
deleted file mode 100755
index 4898353b..00000000
--- a/inc/3rdparty/site_config/standard/dramasonline.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@class='postext']
2
3strip_id_or_class: ratingblock
4strip_id_or_class: hreview-aggregate
5strip: //div[contains(@style, 'display: none;')]
6
7tidy: no
8prune: no
9
10test_url: http://www.dramasonline.com/jago-pakistan-jago-7th-december-2012-ali-gul-pir/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/drdobbs.com.txt b/inc/3rdparty/site_config/standard/drdobbs.com.txt
deleted file mode 100755
index b1a9db6f..00000000
--- a/inc/3rdparty/site_config/standard/drdobbs.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1single_page_link: //a[contains(@href, '/article/print')]
2test_url: http://www.drdobbs.com/architecture-and-design/240001128 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/drive2.ru.txt b/inc/3rdparty/site_config/standard/drive2.ru.txt
deleted file mode 100755
index d500cb81..00000000
--- a/inc/3rdparty/site_config/standard/drive2.ru.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@class = "description"]
2body: //div[@id = "post"]
3
4strip_id_or_class: vcard
5strip_id_or_class: journallist
6strip_id_or_class: infobox
7strip_id_or_class: terms
8strip_id_or_class: replieslist
9strip_id_or_class: communityside
10
11
12test_url: http://www.drive2.ru/cars/audi/a6/a6_c5/elysey/journal/288230376151836654/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dropbox.com.txt b/inc/3rdparty/site_config/standard/dropbox.com.txt
deleted file mode 100755
index 3b51569f..00000000
--- a/inc/3rdparty/site_config/standard/dropbox.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //a[@id='download_button_link']
2
3test_url: https://www.dropbox.com/s/qmocfrco2t0d28o/Fluffbeast.docx
diff --git a/inc/3rdparty/site_config/standard/drupal.org.txt b/inc/3rdparty/site_config/standard/drupal.org.txt
deleted file mode 100755
index 2da3eb1c..00000000
--- a/inc/3rdparty/site_config/standard/drupal.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title://h1
2author://div[@class="submitted"]/a
3date:substring-after(//div[@class="meta"],'modified: ')
4date:substring-after(//div[@class="submitted"],'on ')
5body://div[@class="node-content"]
6strip://div[@class="meta"]
7strip_id_or_class:book-navigation
8test_url: http://drupal.org/node/1327354 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dukebasketballreport.com.txt b/inc/3rdparty/site_config/standard/dukebasketballreport.com.txt
deleted file mode 100755
index 2978797e..00000000
--- a/inc/3rdparty/site_config/standard/dukebasketballreport.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h2/a
2author: substring-before(substring-after(//span[@class='byline'], 'by'), ',')
3date: substring-before(substring-after(//span[@class='byline'], ','), '|')
4body: //div[@class='entry']
5
6
7# strip out auction stuff at the end of posts
8# tidy kills the center tag, so disable it
9tidy: no
10strip: //center//table
11test_url: http://www.dukebasketballreport.com/articles/?p=42660 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dushumashang.com.txt b/inc/3rdparty/site_config/standard/dushumashang.com.txt
deleted file mode 100755
index 6a50a77e..00000000
--- a/inc/3rdparty/site_config/standard/dushumashang.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1# This filter is tested on:
2# http://www.dushumashang.com/2389
3# http://www.dushumashang.com/2415
4# http://www.dushumashang.com/2355
5
6body://div[@class='main_content']
7#body://section[@class='entry_content fl']
8title://h2
9author://span[@class='article_author']/a
10date://span[@class='pub_date']/time
11
12strip://span[@class='article_author']
13strip://span[@class='pub_date']
14strip://div[@class='page_turn']
15strip://span[@class='source_link']/em
16wrap_in(strong)://span[@class='source_link']/a
17test_url: http://www.dushumashang.com/2355 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/dvice.com.txt b/inc/3rdparty/site_config/standard/dvice.com.txt
deleted file mode 100755
index 1a1990ee..00000000
--- a/inc/3rdparty/site_config/standard/dvice.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1strip://*[@id = 'blog_top_stories']
2strip://*[@id = 'takeover_off']
3strip://*[@id = 'right_gray_box']
4strip://*[@class = 'blog_topics']
5strip://*[@class = 'section_titles']
6
7author://div[@class = 'post_author_info']/a
8date://div[@class = 'post_date_info']
9test_url: http://dvice.com/archives/2012/05/is-nfc-and-smar.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/eamesinerudition.com.txt b/inc/3rdparty/site_config/standard/eamesinerudition.com.txt
deleted file mode 100755
index 89a68bcd..00000000
--- a/inc/3rdparty/site_config/standard/eamesinerudition.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div [@class="post contain"]/h1
2strip: //div [@class="post contain"]/h1
3body: //div [@class="post contain"]
4author: substring-before(//title, ':')
5author: substring-before(//title, ' ')
6
7
8test_url: http://eamesinerudition.com/2012/03/hospital-numbers-are-bad-for-you \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/eandt.theiet.org.txt b/inc/3rdparty/site_config/standard/eandt.theiet.org.txt
deleted file mode 100755
index ba9d312d..00000000
--- a/inc/3rdparty/site_config/standard/eandt.theiet.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1
2date: //div[@class="et_dateUnderTitle"]
3author: substring-after(//div[@class="et_authorUnderTitle"], 'By ')
4body: //div[@id="et_leftCol640split"]
5
6strip: //div[@id="et_leftCol640splitRight"]
7strip: //div[@class="et_light_greybgboxlower"]
8test_url: http://eandt.theiet.org/magazine/2011/12/this-festive-waste.cfm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/eastoftheweb.com.txt b/inc/3rdparty/site_config/standard/eastoftheweb.com.txt
deleted file mode 100755
index 36708da3..00000000
--- a/inc/3rdparty/site_config/standard/eastoftheweb.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //div[@class='title_text']
2
3author: //div[@class='author_text']
4
5body: //div[@class='story_text']/..
6
7strip: //b
8
9strip_id_or_class: back_to_top
10strip_id_or_class: author_text
11strip_id_or_class: title_text
12
13wrap_in(center): //a
14
15dissolve: //a
16
17footnotes: no
18test_url: http://www.eastoftheweb.com/short-stories/UBooks/Horl.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ebay.com.txt b/inc/3rdparty/site_config/standard/ebay.com.txt
deleted file mode 100755
index f17e1f72..00000000
--- a/inc/3rdparty/site_config/standard/ebay.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //h1[@class='it-ttl'] | //div[@id='mainImgHldr'] | //span[@id='prcIsum']
2
3strip_image_src: imgLoading_30x30.gif
4
5test_url: http://www.ebay.com/itm/BRAND-NEW-FM-Transmitter-Ca-r-Charger-iPhone-4S-4-4G-3GS-3G-2G-iPod-Touch-/190657497204 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ecetia.com.txt b/inc/3rdparty/site_config/standard/ecetia.com.txt
deleted file mode 100755
index d67e9103..00000000
--- a/inc/3rdparty/site_config/standard/ecetia.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://ecetia.com/2011/09/vida-de-jugon-vii-las-tres-es \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/echo-online.de.txt b/inc/3rdparty/site_config/standard/echo-online.de.txt
deleted file mode 100755
index e53de23e..00000000
--- a/inc/3rdparty/site_config/standard/echo-online.de.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1# Author: Marvin Dickhaus <github@marvindickhaus.de>
2# 2014-10-08
3
4#Tidy just messes up the DOM
5tidy: no
6
7title: //h1
8body: //h2 | //div[@id='artikelteaser'] | //div[@id='artikeltext']
9
10#Strip
11strip_image_src: artikel_a_merken.gif
12strip: //div[@class='zusatzinfo']
13
14#Author: substring is used to remove the " Von " prefix.
15author: substring(//li[@class='artikelautor'], 5)
16
17date: //li[@class='artikeldatum']
18
19#The first two URLs will at some point no longer show
20#the full article. There is a time-based paywall
21#installed. Using the feed should present valid output
22test_url: http://www.echo-online.de/art1231,5503063
23test_url: http://www.echo-online.de/art1168,5502598
24test_url: http://www.echo-online.de/rss/darmstadt.xml
diff --git a/inc/3rdparty/site_config/standard/econlog.econlib.org.txt b/inc/3rdparty/site_config/standard/econlog.econlib.org.txt
deleted file mode 100755
index 729affd4..00000000
--- a/inc/3rdparty/site_config/standard/econlog.econlib.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class="title"]
2author: //div[@class="hosted"]/a
3date: substring-after(//div[@class="dateline"]/text(), '|')
4
5strip: //a[@class="top" and @href="#"]
6test_url: http://econlog.econlib.org/archives/2012/04/blinder_on_heal.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/economia.estadao.com.br.txt b/inc/3rdparty/site_config/standard/economia.estadao.com.br.txt
deleted file mode 100755
index 936a191d..00000000
--- a/inc/3rdparty/site_config/standard/economia.estadao.com.br.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1date: //div[@class="bb-md-noticia-fecha"]
2body: //div[@class="corpo"]
3dissolve: //div[@class="bb-md-noticia-extras"]
4strip: //strong
5strip_id_or_class: bb-md-noticia-foto-autor
6strip_id_or_class: bb-md-noticia-foto-bajada
7test_url: http://economia.estadao.com.br/noticias/economia,cmn-aprova-r-67-bi-em-credito-para-20-setores-da-economia,118501,0.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/economist.com.txt b/inc/3rdparty/site_config/standard/economist.com.txt
deleted file mode 100755
index 8db5fdd6..00000000
--- a/inc/3rdparty/site_config/standard/economist.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1body: //div[@class='main-content']
2body: //article[contains(@class, 'resp-node')]
3date: //time[@class='date-created']
4strip: //aside
5prune: no
6
7autodetect_next_page: no
8
9test_url: http://www.economist.com/node/21528429
10
11test_url: http://www.economist.com/news/essays/21623373-which-something-old-and-powerful-encountered-vault
12test_contains: the calfskin pages are smooth
13test_contains: Books will evolve online and off
diff --git a/inc/3rdparty/site_config/standard/edge-online.com.txt b/inc/3rdparty/site_config/standard/edge-online.com.txt
deleted file mode 100755
index cf585815..00000000
--- a/inc/3rdparty/site_config/standard/edge-online.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //meta[@property="og:title"]/@content
2body: //h2[@class='strapline'] | //article[contains(@class, 'node-article')]
3date: //time[@pubdate]/@datetime
4author: //span[@class='author-name']
5prune: no
6tidy: no
7strip: //footer
8
9replace_string(<p>[ pagebreak ]</p>): <!-- pagebreak -->
10
11single_page_link: //a[contains(@href, '?page=show')]
12
13test_url: http://www.edge-online.com/features/telling-modern-warfares-story \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/edge.org.txt b/inc/3rdparty/site_config/standard/edge.org.txt
deleted file mode 100755
index 95805f6e..00000000
--- a/inc/3rdparty/site_config/standard/edge.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class='HomeLeftPannel IMGCTRL']/h2
2body: //div[@class='HomeLeftPannel IMGCTRL']//div[@class='Brownalink' or @id='shortdesc']
3tidy: no
4
5test_url: http://edge.org/print/conversation.php?cid=the-argumentative-theory \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/edition.channel5belize.com.txt b/inc/3rdparty/site_config/standard/edition.channel5belize.com.txt
deleted file mode 100755
index 6d5f170a..00000000
--- a/inc/3rdparty/site_config/standard/edition.channel5belize.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='singlePage']//h2
2body: //div[@id='singlePage']//div[contains(@class, 'post')]
3strip: //a[@title='Email This Story']
4strip_id_or_class: sociable
5
6prune: no
7
8test_url: http://edition.channel5belize.com/archives/86016
9test_url: http://edition.channel5belize.com/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/edition.cnn.com.txt b/inc/3rdparty/site_config/standard/edition.cnn.com.txt
deleted file mode 100755
index 6fc82d24..00000000
--- a/inc/3rdparty/site_config/standard/edition.cnn.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1body: //div[@id='cnnContentContainer']//div[contains(@class, 'cnn_strycntntlft')]
2strip: //a[starts-with(@name, 'em')]
3strip: //div[@id='cnnCVP2']
4strip_id_or_class: cnn_strylftcexpbx
5strip_id_or_class: cnn_strylctcqrelt
6strip_id_or_class: cnn_strybtntoolsbttm
7strip_id_or_class: cnn_stryftsbttm
8strip_id_or_class: cnn_strybtmcntnt
9strip_id_or_class: cnn_stryshrwdgtbtm
10strip_id_or_class: cnnGalleryContainer
11strip_id_or_class: cnn_strycrcntr
12strip_id_or_class: cnn_html_slideshow
13prune: no
14
15test_url: http://edition.cnn.com/2011/US/04/29/severe.weather/index.html
16test_url: http://edition.cnn.com/2013/08/15/world/africa/nigeria-boko-haram-commander-killed/index.html?eref=edition
17test_url: http://rss.cnn.com/rss/edition.rss
18test_url: http://rss.cnn.com/rss/edition_technology.rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/eetimes.com.txt b/inc/3rdparty/site_config/standard/eetimes.com.txt
deleted file mode 100755
index 300db307..00000000
--- a/inc/3rdparty/site_config/standard/eetimes.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[contains(@class, 'grayshowlinks')]
2
3next_page_link: //div[@id='sitecontentcol']//a[.='Next >']
4# Doesn't work (site doesn't always load full content in print view)
5#single_page_link: //div[@id='sitecontentcol']//a[contains(@href, 'print=yes')]
6
7test_url: http://www.eetimes.com/document.asp?doc_id=1319966&
8test_url: http://www.eetimes.com/rss_simple.asp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ekultura.hu.txt b/inc/3rdparty/site_config/standard/ekultura.hu.txt
deleted file mode 100755
index 3756027c..00000000
--- a/inc/3rdparty/site_config/standard/ekultura.hu.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[@class='style6 nevek']
2
3body: //div[@class='bal3']
4
5
6prune: yes
7
8tidy: yes
9convert_double_br_tags: yes
10
11test_url: http://ekultura.hu/olvasnivalo/egyeb/cikk/2010-12-15/interju-galvolgyi-judit-2010-december \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/elance.com.txt b/inc/3rdparty/site_config/standard/elance.com.txt
deleted file mode 100755
index d4b0a9b8..00000000
--- a/inc/3rdparty/site_config/standard/elance.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='jobDesc-bd']/p
2
3test_url: http://www.elance.com/j/xml-technical-intergration/23687172/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/elderscrollsonline.com.txt b/inc/3rdparty/site_config/standard/elderscrollsonline.com.txt
deleted file mode 100755
index fa3892c6..00000000
--- a/inc/3rdparty/site_config/standard/elderscrollsonline.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1date: //time
2title: //h1[contains(@class, "alpha")]
3body: //article[contains(@class, "news-post")]
4
5# fix dates - dates as they are won't work as strtotime doesn't understand format (03.28.2013)
6replace_string(<time class="gamma">01.): <time class="gamma">January.
7replace_string(<time class="gamma">02.): <time class="gamma">February.
8replace_string(<time class="gamma">03.): <time class="gamma">March.
9replace_string(<time class="gamma">04.): <time class="gamma">April.
10replace_string(<time class="gamma">05.): <time class="gamma">May.
11replace_string(<time class="gamma">06.): <time class="gamma">June.
12replace_string(<time class="gamma">07.): <time class="gamma">July.
13replace_string(<time class="gamma">08.): <time class="gamma">August.
14replace_string(<time class="gamma">09.): <time class="gamma">September.
15replace_string(<time class="gamma">10.): <time class="gamma">October.
16replace_string(<time class="gamma">11.): <time class="gamma">November.
17replace_string(<time class="gamma">12.): <time class="gamma">December.
18
19prune: no
20
21test_url: http://elderscrollsonline.com/en/rss
22test_url: http://elderscrollsonline.com/en/news/post/2013/03/27/developer-question-of-the-week-17 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/elektroniknet.de.txt b/inc/3rdparty/site_config/standard/elektroniknet.de.txt
deleted file mode 100755
index 56fba5ff..00000000
--- a/inc/3rdparty/site_config/standard/elektroniknet.de.txt
+++ /dev/null
@@ -1,27 +0,0 @@
1title: //h1
2date: //div[@class='datum']
3single_page_link: //a[contains(@href, '?type=99')]
4
5# this hack preserves the intro text, because it would be striped otherwise if the title is set to //h1
6dissolve: //div[@class='artikelMeldung']
7
8
9strip_id_or_class: anzeige
10strip_id_or_class: top_page_navigation
11strip_id_or_class: cr_image_container
12strip_id_or_class: cr_image_reference
13strip_id_or_class: cr_image_icon
14strip_id_or_class: _close_txt
15strip_id_or_class: _close_ico
16strip_id_or_class: clearer
17
18strip://h1
19strip://h6
20strip://div[contains(@id, 'plista')]
21strip://img[contains(@id,'tiny')]
22strip://img[@class='cr_image']
23
24# strip url at the top
25strip: //p[@style='font-size: 10px;']
26
27test_url: http://www.elektroniknet.de/automotive/technik-know-how/sicherheitselektronik/article/87717/0/Besser_als_die_Wirklichkeit/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/elmalpensante.com.txt b/inc/3rdparty/site_config/standard/elmalpensante.com.txt
deleted file mode 100755
index 435c6c20..00000000
--- a/inc/3rdparty/site_config/standard/elmalpensante.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1single_page_link: //a[contains(@href, 'print_contenido')]
2title: //h2
3author: //div[@class="autor"]
4test_url: http://www.elmalpensante.com/index.php?doc=display_contenido&id=668 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/elpais.com.txt b/inc/3rdparty/site_config/standard/elpais.com.txt
deleted file mode 100755
index c6f9787b..00000000
--- a/inc/3rdparty/site_config/standard/elpais.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1title: //meta[@name='DC.title']/@content
2title: //div[contains(@class, 'cabecera_noticia')]//h1
3date: //meta[@name='DC.date']/@content
4date: //meta[@name='date']/@content
5body: //div[@class='columna_texto']
6body: //div[@id='cuerpo_noticia']
7body: //div[@class='estructura_2col_1zq']//div[@class='margen_n']
8
9prune: no
10
11strip_id_or_class: disposicion_vertical
12strip_id_or_class: ampliar_foto
13strip_id_or_class: utilidades
14strip_id_or_class: info_relacionada
15strip_id_or_class: m-kiosko
16strip_id_or_class: info_complementa
17
18strip: //div[starts-with(@id, 'sumario') and contains(., 'más información')]
19strip: //div[@id='coment' or @id='foros_not']
20
21test_url: http://elpais.com/elpais/2012/02/06/gente/1328526783_491687.html
22test_url: http://www.elpais.com/articulo/cultura/mano/retrato/materia/elpepicul/20120207elpepicul_2/Tes \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/emaratalyoum.com.txt b/inc/3rdparty/site_config/standard/emaratalyoum.com.txt
deleted file mode 100755
index 3d1313e2..00000000
--- a/inc/3rdparty/site_config/standard/emaratalyoum.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id='main-column']//div[@class='content']
2
3prune: no
4
5test_url: http://www.emaratalyoum.com/sports/arab-and-international/2013-08-29-1.601844
6test_url: http://www.emaratalyoum.com/sports/arab-and-international/2013-08-29-1.601842
7test_url: http://www.emaratalyoum.com/public-sports-1.533088?ot=ot.AjaxPageLayout \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/en.espnf1.com.txt b/inc/3rdparty/site_config/standard/en.espnf1.com.txt
deleted file mode 100755
index 2ca0216b..00000000
--- a/inc/3rdparty/site_config/standard/en.espnf1.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@id='content']
2strip: //div[@class='rl']
3strip: //p[@class='authdesc']
4strip: //p[@class='strybtm']
5strip: //div[@id='stryFtrLft']
6strip: //div[@id='f1Conversation']
7strip: //div[@id='cmtSpncrRuler']
8strip: //div[@id='stryComments']
9strip: //div[@id='athrData']
10test_url: http://en.espnf1.com/monaco/motorsport/story/50529.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/engadget.com.txt b/inc/3rdparty/site_config/standard/engadget.com.txt
deleted file mode 100755
index 52acddb0..00000000
--- a/inc/3rdparty/site_config/standard/engadget.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //meta[@property="og:title"]/@content
2body: //div[@class='post_body']
3date: //*[@class='post_time']
4
5prune: no
6
7test_url: http://www.engadget.com/2011/05/20/screen-grabs-the-mentalist-takes-the-ipad-to-new-heights/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/engineering.tumblr.com.txt b/inc/3rdparty/site_config/standard/engineering.tumblr.com.txt
deleted file mode 100755
index 48f301fe..00000000
--- a/inc/3rdparty/site_config/standard/engineering.tumblr.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h2
2body: //div[@class="post_content"]
3author: //p[@class="author"]/a
4date: //p[@class="date"]
5strip: //h2
6strip: //header
7test_url: http://engineering.tumblr.com/post/21276808338/tumblr-firehose \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/english.aljazeera.net.txt b/inc/3rdparty/site_config/standard/english.aljazeera.net.txt
deleted file mode 100755
index 97365994..00000000
--- a/inc/3rdparty/site_config/standard/english.aljazeera.net.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //span[@id='DetailedTitle']
2body: //div[@id='ctl00_cphBody_dvArticleInfoBlock'] | //td[@class='DetailedSummary']
3strip_id_or_class: sidebar
4strip_id_or_class: Skyscrapper_Body
5strip: //td[@class='DetailedSummary']/table[position() != 1]
6prune: no
7test_url: http://english.aljazeera.net//news/middleeast/2011/04/20114681444376835.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/enikos.gr.txt b/inc/3rdparty/site_config/standard/enikos.gr.txt
deleted file mode 100755
index ddd51c4b..00000000
--- a/inc/3rdparty/site_config/standard/enikos.gr.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id='article']//div[contains(@class, 'inside')]
2
3strip_id_or_class: tags
4strip_id_or_class: actions
5strip_id_or_class: google-ads
6
7prune: no
8
9test_url: http://www.enikos.gr/politics/98606,To_oxi_toy_Agorastoy_stoys_Germanoys.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/entertainment.timesonline.co.uk.txt b/inc/3rdparty/site_config/standard/entertainment.timesonline.co.uk.txt
deleted file mode 100755
index a756c457..00000000
--- a/inc/3rdparty/site_config/standard/entertainment.timesonline.co.uk.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1author://div[@class = 'article-author']/span[@class = 'byline']
2title://h1[@class = 'heading']
3body://div[@id = 'related-article-links']
4strip://div[@id = 'comment-sort-order']
5strip://div[@id = 'my-profile']
6strip://div[@class = 'article-author']
7strip://div[@class = 'bg-f8f1d8 width-385 text-left']
8strip://div[@id = 'login-status']
9strip://div[@class = 'puff-padding']
10test_url: http://entertainment.timesonline.co.uk/tol/arts_and_entertainment/the_tls/article7177738.ece \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ericsuh.com.txt b/inc/3rdparty/site_config/standard/ericsuh.com.txt
deleted file mode 100755
index d25140c5..00000000
--- a/inc/3rdparty/site_config/standard/ericsuh.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1date: //h6[@class='datetime']/child::text()
2author: string("Eric J. Suh")
3footnotes: yes
4test_url: http://www.ericsuh.com/blog/posts/2012/8/strange-numbers.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/es.hu.txt b/inc/3rdparty/site_config/standard/es.hu.txt
deleted file mode 100755
index 21691a56..00000000
--- a/inc/3rdparty/site_config/standard/es.hu.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: concat(//div[@class='doc_author'], ' - ', upper-case(//div[@class='doc_title']))
2
3body: //div[@class='doc']
4
5prune: yes
6
7tidy: yes
8convert_double_br_tags: yes
9
10strip: //a[contains(@href, 'www.facebook.com/pages/Elet-es-Irodalom/')]
11test_url: http://www.es.hu/2010-12-08_vissza-a-partpenzt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/escapistmagazine.com.txt b/inc/3rdparty/site_config/standard/escapistmagazine.com.txt
deleted file mode 100755
index fd453a19..00000000
--- a/inc/3rdparty/site_config/standard/escapistmagazine.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class='headline']/div[@class='name']
2
3strip_image_src: 'http://cdn.themis-media.com/media/global/images/library/deriv/115/115825.png'
4
5next_page_link: //a[@class='next_page']
6
7strip_comments: no
8test_url: http://www.escapistmagazine.com/articles/view/columns/criticalintel/10302-I-Hate-Magic \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/espn.go.com.txt b/inc/3rdparty/site_config/standard/espn.go.com.txt
deleted file mode 100755
index 06476296..00000000
--- a/inc/3rdparty/site_config/standard/espn.go.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //div[@class='headline'] | //div[@class='mod-header']/h3
2body: //div[contains(@class, 'article')]
3strip: //div[contains(@class, 'mod-inline')]
4strip: //*/span[@class='page-actions']
5strip: //div[@class='page-actions']/*
6strip: //div[@class='headline'] | //div[@class='mod-header']/h3
7strip: //div[@class='mod-blog-navigation']
8strip: //div[@class='monthday']
9strip: //div[@class='time']
10strip: //div[@class='timeofday']
11strip: //div[contains(@class, 'mod-conversations')]
12test_url: http://espn.go.com/boston/mlb/story/_/id/7092528/terry-francona-victim-latest-red-sox-smear-campaign \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/esquire.com.txt b/inc/3rdparty/site_config/standard/esquire.com.txt
deleted file mode 100755
index b9cb1e55..00000000
--- a/inc/3rdparty/site_config/standard/esquire.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1
2author: //div[@id='byline']
3
4body: //div[@id='printBody']
5
6single_page_link: concat('http://www.esquire.com/print-this/', substring-after(//link[@rel='canonical']/@href, 'esquire.com/'))
7
8prune: no
9
10test_url: http://www.esquire.com/features/impossible/price-is-right-perfect-bid-0810
11test_url: http://www.esquire.com/blogs/politics/police-getting-leftover-armoured-iraq-trucks-112513 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/essentialpublicradio.org.txt b/inc/3rdparty/site_config/standard/essentialpublicradio.org.txt
deleted file mode 100755
index 9a922392..00000000
--- a/inc/3rdparty/site_config/standard/essentialpublicradio.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //*[@itemprop='headline']
2author: //*[@itemprop='author']
3date: //*[@itemprop='datePublished']
4body: //*[@itemprop='articleBody']
5strip: //*[contains(@class, 'instapaper_ignore')]
6test_url: http://www.essentialpublicradio.org/story/2011-11-14/volunteers-sought-federal-tax-assistance-program-pennsylvania-9421 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/etc.se.txt b/inc/3rdparty/site_config/standard/etc.se.txt
deleted file mode 100755
index 95f8cf78..00000000
--- a/inc/3rdparty/site_config/standard/etc.se.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1strip_id_or_class: 'left'
2strip_id_or_class: 'right'
3strip_id_or_class: 'block-belowcontent'
4author: //span[@class = 'name']/a
5date: //div[@class= 'datum']
6test_url: http://www.etc.se/intervju/lonsamt-att-radda-jorden \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/eternabuenosaires.com.txt b/inc/3rdparty/site_config/standard/eternabuenosaires.com.txt
deleted file mode 100755
index bfa2c5dc..00000000
--- a/inc/3rdparty/site_config/standard/eternabuenosaires.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://eternabuenosaires.com/2011/09/calle-adolfo-bioy-casares \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/eurogamer.net.txt b/inc/3rdparty/site_config/standard/eurogamer.net.txt
deleted file mode 100755
index 8931becb..00000000
--- a/inc/3rdparty/site_config/standard/eurogamer.net.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //p[@class='strapline'] | //div[@class='cover-image'] | //article[@class='hd']
2strip: //div[@class='social top']
3strip: //p[@class='byline']
4
5date: //span[@itemprop='datePublished']
6author: //a[@itemprop='author']/text()
7
8test_url: http://www.eurogamer.net/articles/2014-08-20-bungie-ordered-to-return-shares-to-composer-marty-odonnell
9test_url: http://www.eurogamer.net/articles/2014-08-20-invisible-inc-does-espionage-justice
diff --git a/inc/3rdparty/site_config/standard/evo.co.uk.txt b/inc/3rdparty/site_config/standard/evo.co.uk.txt
deleted file mode 100755
index ccb4f879..00000000
--- a/inc/3rdparty/site_config/standard/evo.co.uk.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1author: substring-after(//div[@class='articleauthor'],'By ')
2
3# Blog posts
4date: //div[@class='articledate']
5# News
6date: //div[@class='articledate_b']
7
8body: //div[@class='articletext']
9
10convert_double_br_tags: yes
11test_url: http://www.evo.co.uk/carreviews/evolongtermtests/280072/bmw_330d_sport_touring.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/expressen.se.txt b/inc/3rdparty/site_config/standard/expressen.se.txt
deleted file mode 100755
index d81d3251..00000000
--- a/inc/3rdparty/site_config/standard/expressen.se.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1[contains(@class, 'b-headline_article')]
2body: //div[contains(@class, 'b-article_print')]
3
4single_page_link: //div[contains(@class, 'b-page__footer__actions')]//a[contains(@href, 'print=true')]
5
6prune: no
7
8test_url: http://www.expressen.se/kultur/1.2683904/medan-natet-dras-at
9test_url: http://www.expressen.se/gt/polis-om-styckmordet-extremt-markligt-fall/
10test_url: http://www.expressen.se/Pages/OutboundFeedsPage.aspx?id=3642159&viewstyle=rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/extracine.com.txt b/inc/3rdparty/site_config/standard/extracine.com.txt
deleted file mode 100755
index 52b598da..00000000
--- a/inc/3rdparty/site_config/standard/extracine.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://extracine.com/2011/09/straw-dogs-la-original \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/f1actual.com.txt b/inc/3rdparty/site_config/standard/f1actual.com.txt
deleted file mode 100755
index 6ef2738a..00000000
--- a/inc/3rdparty/site_config/standard/f1actual.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://f1actual.com/2011/09/previo-gran-premio-de-singapur \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/facebook.com.txt b/inc/3rdparty/site_config/standard/facebook.com.txt
deleted file mode 100755
index 26d4f905..00000000
--- a/inc/3rdparty/site_config/standard/facebook.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@id='imagestage']
2body: //div[contains(@class, 'userContentWrapper')]
3
4strip_id_or_class: commentable
5
6prune: no
7tidy: no
8
9# single_page_link: replace(substring-after(//noscript//meta[@http-equiv="refresh"]/@content, 'URL='), "&amp;", "&")
10
11test_url: https://www.facebook.com/permalink.php?story_fbid=10154584776550183&id=294468630182
12test_contains: holding an extraordinary session in Brussels this month
diff --git a/inc/3rdparty/site_config/standard/facta.co.jp.txt b/inc/3rdparty/site_config/standard/facta.co.jp.txt
deleted file mode 100755
index 4c96a1a4..00000000
--- a/inc/3rdparty/site_config/standard/facta.co.jp.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1bosdy: //div[@class='content']
2
3test_url: http://facta.co.jp/blog/archives/20111026001026.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/falter.at.txt b/inc/3rdparty/site_config/standard/falter.at.txt
deleted file mode 100755
index 2bfcc9b4..00000000
--- a/inc/3rdparty/site_config/standard/falter.at.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //h1
2author: //a[contains(@href, '/kategorie/autoren')]
3date: //a[contains(@href, '/falter/ausgabe')]
4body: //article[@class='spanMain']
5
6# cleanup
7strip_id_or_class: 'respond'
8strip: //img[@src='http://www.falter.at/web/_pics/falterlogo_dblau.gif']
9strip_id_or_class: 'meta'
10strip_id_or_class: 'servicebox'
11strip_id_or_class: 'related'
12strip_id_or_class: 'twitter-share-button'
13strip: //br
14test_url: http://www.falter.at/falter/2013/03/26/der-dandy-auf-der-sinkenden-galeere/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fanfiction.net.txt b/inc/3rdparty/site_config/standard/fanfiction.net.txt
deleted file mode 100755
index e7cab4d4..00000000
--- a/inc/3rdparty/site_config/standard/fanfiction.net.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //*[@id = 'story text']
2author: //a[starts-with(@href, '/u/')]
3next_page_link: substring-after(//input[contains(@value, 'Next')]/@onclick, "self.location='")
4autodetect_next_page:yes
5strip_id_or_class: 'a2a_kit'
6test_url: http://www.fanfiction.net/s/6497403/1/Spartan_Love \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fastcompany.com.txt b/inc/3rdparty/site_config/standard/fastcompany.com.txt
deleted file mode 100755
index a6417237..00000000
--- a/inc/3rdparty/site_config/standard/fastcompany.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //h1
2author: //h5[@class='byline']//a
3date: //h5[@class='date']
4body: //figure[@class='node-poster'] | //div[contains(@class, "node-content")]
5strip_id_or_class: article-top-wrapper
6strip_id_or_class: footer-message
7strip_id_or_class: print-logo
8strip: //cite
9strip://*[@class='timestamp']
10strip://div[@id='page_right']
11strip://section[@id='header_region']
12strip://h1[@class='node-title']
13strip://div[@class='node-submitted']
14strip_id_or_class: skipnav
15test_url: http://www.fastcompany.com/3000226/link-between-quietness-and-productivity
16test_url: http://www.fastcompany.com/3003586/6-simple-rituals-reach-your-potential-every-day \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/faz.net.txt b/inc/3rdparty/site_config/standard/faz.net.txt
deleted file mode 100755
index 47048a1b..00000000
--- a/inc/3rdparty/site_config/standard/faz.net.txt
+++ /dev/null
@@ -1,101 +0,0 @@
1# Author: zinnober
2# Complete rewrite of the faz.net template as the standard one is broken
3# I tried to consider as many page variants as possible, which was some serious work
4
5tidy: no
6prune: no
7
8# Title
9title: //p[@class='Content HeadlineShort']
10
11# Set author
12author: substring-after(//span[@class='Autor'], 'von ')
13author: //span[@class='caps last']/span[@class='caps last']
14author: //a[@rel='author']
15
16# Set date
17date: //span[@class='Datum']
18date: //span[@class='Datum'],/span
19
20# Fetch full multipage articles
21next_page_link: //a[@title='Nächste Seite']
22
23# Content is here
24body: //div[@class='Artikel']
25
26# Tidy up before article
27strip: //div[@id='FAZHeaderNeu']
28strip: //h2[@itemprop='headline']
29strip: //span[@class='Datum']
30strip: //span[@class='Autor']
31strip_id_or_class: ArticlePagerTop
32
33# General cleanup
34strip: //div[@class='clear']
35strip: //a[@title='Zur Homepage FAZ.NET']
36strip: //iframe
37replace_string( · ):
38
39# Remove tracking and ads
40strip_image_src: /l.gif?
41strip: //div[contains(@style, 'background-image')]
42strip: //img[@width='1']
43strip_id_or_class: invisible
44strip_id_or_class: Anzeige
45strip_id_or_class: billboard
46
47# Remove various text boxes and social media foo
48strip_id_or_class: WeitereBeitraege
49strip_id_or_class: WBListe
50strip_id_or_class: AutorenModul
51strip_id_or_class: Community
52strip_id_or_class: SocialMediaStatus
53strip_id_or_class: RelatedLinkBox
54strip_id_or_class: MultimediaNavigation
55strip_id_or_class: IndexTitel
56
57# Fix picture caps and pictures (use better resolution and remove clutter)
58strip_id_or_class: LightBoxOverlay
59strip_id_or_class: exitLarge
60strip_id_or_class: PagerBox
61strip_id_or_class: Bildnachweis
62strip_id_or_class: Bildueberschrift
63strip_id_or_class: Bildbeschreibung
64strip_id_or_class: ArtikelBild610
65strip_id_or_class: MediaLink
66strip_id_or_class: FotoBoxInnerLeft
67strip_id_or_class: BilderRelatedLinks
68
69# Remove clutter after article
70strip_id_or_class: ArticlePagerBottom
71strip_id_or_class: backToHome
72strip_id_or_class: ArtikelAbbinder
73strip_id_or_class: lesermeinungscontainer
74strip_id_or_class: ThemenLinks
75strip_id_or_class: rechtehinweis
76strip_id_or_class: FAZArtikelMap
77strip_id_or_class: FAZArtikelKommentare
78strip_id_or_class: ArtikelKommentieren
79strip_id_or_class: FAZArtikelFunktionen
80strip_id_or_class: mailLB
81strip_id_or_class: FAZContentRight
82strip_id_or_class: stageModule
83strip_id_or_class: ContentFooter
84strip_id_or_class: ServicesFooter
85strip_id_or_class: FAZFooter
86
87# Clean up stuff present just in some articles
88strip_id_or_class: Teaser620
89strip_id_or_class: TeaserMultimedia
90strip_id_or_class: VideoBox
91
92# Remove as soon as Wallabag maight be able to embed flash video
93strip_id_or_class: mmoObjectAsTeaserInArticle
94strip_id_or_class: additionalStylesAudioVideo
95strip_id_or_class: hideMMElements
96
97# Try it yourself
98test_url: http://www.faz.net/aktuell/feuilleton/zum-tod-von-margaret-thatcher-die-reizfigur-12141919.html#Drucken
99test_url: http://www.faz.net/aktuell/politik/inland/allensbach-analyse-im-namen-des-volkes-13106492.html
100test_url: http://www.faz.net/aktuell/feuilleton/kino/video-filmkritiken/video-filmkritik-when-animals-dream-zerrissene-jugend-13105772.html
101
diff --git a/inc/3rdparty/site_config/standard/fertigung.de.txt b/inc/3rdparty/site_config/standard/fertigung.de.txt
deleted file mode 100755
index 90145e58..00000000
--- a/inc/3rdparty/site_config/standard/fertigung.de.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1title: //title
2
3body: //div[@id='content']
4
5strip: (//div[@id='content']/h2)[1]
6
7strip: //h2[contains(., 'mehr News')]/following::*
8strip: //h2[contains(., 'mehr News')]
9
10strip: //div[contains(@class, 'indizar')]/following::*
11strip: //div[contains(@class, 'indizar')]
12
13strip: //h1[contains(@class, 'single')]/preceding::*
14strip: //h1[contains(@class, 'single')]
15
16strip_id_or_class: plista_widget
17
18prune: no
19
20next_page_link: //a[contains(., 'Weiter')]
21
22test_url: http://www.fertigung.de/2013/04/igus-neuer-energiekettenkatalog/
23test_url: http://www.fertigung.de/2013/04/dynamisch-und-hochpraezise/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fictionpress.com.txt b/inc/3rdparty/site_config/standard/fictionpress.com.txt
deleted file mode 100755
index 19ec16b0..00000000
--- a/inc/3rdparty/site_config/standard/fictionpress.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: id('storytext')
2author: //a[starts-with(@href, '/u/')]
3#next_page_link: substring-after(//input[contains(@value, 'Next')]/@onclick, "self.location='")
4strip_id_or_class: 'a2a_kit'
5test_url: http://www.fictionpress.com/s/2897964/1/All_We_Knew \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ficwad.com.txt b/inc/3rdparty/site_config/standard/ficwad.com.txt
deleted file mode 100755
index 081f0bb0..00000000
--- a/inc/3rdparty/site_config/standard/ficwad.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h4
2author: //span[@class="author"]
3body: //div[@id="story"]
4strip_id_or_class: summary
5strip_id_or_class: meta
6strip_id_or_class: storyfoot
7convert_double_br_tags: yes
8prune: no
9
10# Note: this site still has trouble because single <br> tags are stripped, but I don't see a way to fix that with this interface.
11
12test_url: http://www.ficwad.com/story/158977 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/finance.yahoo.com.txt b/inc/3rdparty/site_config/standard/finance.yahoo.com.txt
deleted file mode 100755
index 0c967db0..00000000
--- a/inc/3rdparty/site_config/standard/finance.yahoo.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //meta[@property='og:title']/@content
2body: //div[@id='y-article-bd']
3body: //div[contains(@class, 'yom-art-content')]
4strip: //div[contains(@class, 'related-companies')]
5strip: //div[@id='y-article-related']
6strip: //div[@id='ypf-article-related']
7prune: no
8tidy: no
9
10single_page_link: //div[@class='ft']//a[contains(@href, 'page=all')]
11
12test_url: http://finance.yahoo.com/news/canadian-orebodies-gives-notice-exercise-130000032.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/findtheswagger.tumblr.com.txt b/inc/3rdparty/site_config/standard/findtheswagger.tumblr.com.txt
deleted file mode 100755
index 43aef750..00000000
--- a/inc/3rdparty/site_config/standard/findtheswagger.tumblr.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1date: //div[@class='notes']/a
2body: //div[@id='content']
3
4strip_id_or_class: tags
5strip_id_or_class: permalink
6strip_id_or_class: notes
7strip_id_or_class: post_nav
8strip: //div[@id='content']//h2
9strip_id_or_class: right_column
10test_url: http://findtheswagger.tumblr.com/post/11589145141/moe-resners-end-of-an-era-1957-giants-final \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/firstthings.com.txt b/inc/3rdparty/site_config/standard/firstthings.com.txt
deleted file mode 100755
index ce972bac..00000000
--- a/inc/3rdparty/site_config/standard/firstthings.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class='articleTitle']
2author: //div[@class='articleAuthor']
3body: //div[@class='articleContent']
4prune: no
5convert_double_br_tags: yes
6
7test_url: http://www.firstthings.com/article/2011/05/the-trouble-with-ayn-rand \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fivechapters.com.txt b/inc/3rdparty/site_config/standard/fivechapters.com.txt
deleted file mode 100755
index 9614d2f6..00000000
--- a/inc/3rdparty/site_config/standard/fivechapters.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='entry']
2test_url: http://www.fivechapters.com/2014/the-saddest-writer-in-america-part-two/
diff --git a/inc/3rdparty/site_config/standard/fivefilters.org.txt b/inc/3rdparty/site_config/standard/fivefilters.org.txt
deleted file mode 100755
index f37f02b9..00000000
--- a/inc/3rdparty/site_config/standard/fivefilters.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //section[contains(@class, 'container')]
2prune: no
3
4test_url: http://fivefilters.org/kindle-it/
diff --git a/inc/3rdparty/site_config/standard/fivethirtyeight.com.txt b/inc/3rdparty/site_config/standard/fivethirtyeight.com.txt
deleted file mode 100755
index d0a0a772..00000000
--- a/inc/3rdparty/site_config/standard/fivethirtyeight.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: substring-after(//title, 'Right:')
2body: //div[@class = 'post-body']
3author: substring-after(//*[@class='post-author'], 'by')
4date: concat(//*[@class='date-header'], ' ', //*[@class='post-timestamp']/a)
5convert_double_br_tags: yes
6
7test_url: http://www.fivethirtyeight.com/2010/07/does-rnc-have-structural-problems.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/flyingmachinestudios.com.txt b/inc/3rdparty/site_config/standard/flyingmachinestudios.com.txt
deleted file mode 100755
index 2053f801..00000000
--- a/inc/3rdparty/site_config/standard/flyingmachinestudios.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip_id_or_class: linenos
2test_url: http://www.flyingmachinestudios.com/programming/whoops-dci-refactoring/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fm4.orf.at.txt b/inc/3rdparty/site_config/standard/fm4.orf.at.txt
deleted file mode 100755
index 5db3e58c..00000000
--- a/inc/3rdparty/site_config/standard/fm4.orf.at.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1author: //div[@class='authorDescription']/h2
2body: //div[@id='story']
3date: substring-before(substring-after(//p[@class='date'],'Erstellt am:'), '-')
4title: //h1[@class='detail']
5strip: //div[@class='fact']
6
7test_url: http://fm4.orf.at/stories/1689156/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fnal.gov.txt b/inc/3rdparty/site_config/standard/fnal.gov.txt
deleted file mode 100755
index e404ccb8..00000000
--- a/inc/3rdparty/site_config/standard/fnal.gov.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: normalize(//h1)
2
3author: //td/p[position()=last()]/em
4
5# I swear, this is really the best way to do this
6date: normalize(//td[contains(@style, "color: #ffffff")])
7
8# my god, it's full of tables
9body: /table/tbody/tr[5]//table/tbody//table/tbody/tr/td
10strip: //h1
11
12# the following two lines strip the byline at the end of the article (the byline is a <p> that consists of an em dash and then some text in an <em>). I have no idea why I can't just strip //p[position()=last()], but trying to do so includes a bunch of other crap in the output.
13strip: //p[position()=last()]/em
14strip: //p[position()=last()]/child::text()
15test_url: http://www.fnal.gov/pub/today/archive_2011/today11-11-09_MuonDepartmentReadMore.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/focus.de.txt b/inc/3rdparty/site_config/standard/focus.de.txt
deleted file mode 100755
index 6da3687e..00000000
--- a/inc/3rdparty/site_config/standard/focus.de.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //h1
2
3author: //div[@class='articleContent small']/div[@class='textBlock']//span[@class='created']
4
5date: //div[@class='articleHead']/span[@class='created']
6
7body: //div[@id='article']
8
9strip: //span[@class='markerText']
10strip: //div[@class='articleContent small']/div[@class='textBlock']//span[@class='created']
11strip: //div[@class='sidebar']
12strip: //div[@class='starbar']
13strip: //div[@class='actions clearfix']
14strip: //div[@id='commentForm']
15strip: //div[@id='commentSent']
16strip: //div[@id='comments']
17strip: //div[@class='similarityBlock']
18
19test_url: http://www.focus.de/politik/ausland/ein-jahr-nach-bombenanschlag-u-bahn-attentaeter-von-minsk-hingerichtet_aid_724958.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/folklore.org.txt b/inc/3rdparty/site_config/standard/folklore.org.txt
deleted file mode 100755
index ed23a0b6..00000000
--- a/inc/3rdparty/site_config/standard/folklore.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: /html/body/table[3]/tbody/tr/td[1]/table[2]/tbody/tr[1]/td[2]
2date: /html/body/table[3]/tbody/tr/td[1]/table[2]/tbody/tr[2]/td[2]
3body: //div[@class='main']
4test_url: http://www.folklore.org/StoryView.py?story=Calculator_Construction_Set.txt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/food.com.txt b/inc/3rdparty/site_config/standard/food.com.txt
deleted file mode 100755
index a70da766..00000000
--- a/inc/3rdparty/site_config/standard/food.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@id='print-area']
2title: //h1[contains(@class, 'section-title')]
3single_page_link: //a[@id='prntrec']
4strip_image_src: food-logo-small
5strip_id_or_class: timer
6strip_id_or_class: photo-sm
7strip_id_or_class: page-header
8
9prune: no
10
11test_url: http://www.food.com/recipe/couldnt-be-easier-bbq-pork-tenderloin-crock-pot-317152 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fool.com.txt b/inc/3rdparty/site_config/standard/fool.com.txt
deleted file mode 100755
index 89cb8b9a..00000000
--- a/inc/3rdparty/site_config/standard/fool.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class='entry-content']
2date: //meta[@name="date"]/@content
3author: //meta[@name="author"]/@content
4
5strip_id_or_class: ecapShell
6strip_id_or_class: noindent
7strip_id_or_class: targetedPromotion
8
9prune: no
10
11test_url: http://www.fool.com/investing/general/2012/01/27/dfc-global-beats-up-on-analysts-yet-again.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/forbes.com.txt b/inc/3rdparty/site_config/standard/forbes.com.txt
deleted file mode 100755
index 9e1d04c1..00000000
--- a/inc/3rdparty/site_config/standard/forbes.com.txt
+++ /dev/null
@@ -1,27 +0,0 @@
1title: //hgroup//h1
2title: //span[@class='mainarttitle']
3
4body: //div[@id='leftRail']//div[contains(@class, 'body')]
5
6author: //meta[@name="author"]/@content
7author: //span[@class='mainartauthor']
8
9date: substring-before(//hgroup//h6, '@')
10date: //span[@class='mainartdate']
11
12prune: no
13strip: //aside
14strip_id_or_class: sticky_sharing
15strip_id_or_class: pagination
16strip_id_or_class: controlsbox
17strip_id_or_class: storyboxes
18strip_id_or_class: sponsoredlinks
19strip_id_or_class: nextpage
20strip_id_or_class: contextuallinks
21strip_id_or_class: article_actions
22strip_id_or_class: engagement_block
23
24single_page_link: //a[contains(@href, '/print/')]
25
26test_url: http://www.forbes.com/forbes/2011/0509/technology-frog-design-jan-chipchase-ethnographer-birth-cool_print.html
27test_url: http://www.forbes.com/sites/bruceupbin/2012/09/11/the-iphone-5-winners-and-losers/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/foreignaffairs.com.txt b/inc/3rdparty/site_config/standard/foreignaffairs.com.txt
deleted file mode 100755
index cf8b742f..00000000
--- a/inc/3rdparty/site_config/standard/foreignaffairs.com.txt
+++ /dev/null
@@ -1,34 +0,0 @@
1# TIDY
2#tidy: no
3# PRUNE
4#prune: no
5
6# SINGLE PAGE
7single_page_link: //div[@class='showlinks']/a
8
9# TITLE
10title: //h1[@class="title"]
11
12# AUTHOR
13author: //div[contains(@class,"field-field-article-display-authors")]/div/div/a/text()
14
15# DATE
16date: //div[contains(@class,"field-field-article-issue")]/div/div/a/text() | //span[@class="date-display-single"]
17
18# BODY
19body: //div[contains(@class,"content-resize")]
20
21# Remove clutter
22strip: //div[@class="article-sidebar"]
23strip: //div[@class="showlinks"]
24strip: //div[contains(@class,"premium-box")]
25strip: //div[contains(@class,"premium-box")]
26strip: //table[contains(@border,"2")]
27
28# Fix picture captions
29wrap_in(small): //p/img/following-sibling::em
30wrap_in(small): //p[img]/text()
31
32# Fix sub-headlines
33wrap_in(h3): //div[contains(@class,"field-field-article-subtitle")]/div/div/text()
34test_url: http://www.foreignaffairs.com/articles/138810/pierre-n-leval/the-long-arm-of-international-law \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/foreignpolicy.com.txt b/inc/3rdparty/site_config/standard/foreignpolicy.com.txt
deleted file mode 100755
index 853a5b7b..00000000
--- a/inc/3rdparty/site_config/standard/foreignpolicy.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //div[@class='translateHead']//h1 | //div[@id='art-mast']//h1
2author: substring-after(//span[@id='by-line'], 'BY ')
3date: //span[@id='pub-date']
4body: (//article//img[contains(@class, 'main_photo')])[1] | (//article//div[contains(@class, 'full_post_content')])[1]
5#body: //div[@id='art-mast']/h2 | //div[@class='translateBody'] | //div[@id='art-body']
6#Strip inside article content
7strip: //div[@id='share-box']
8strip: //div[@id='special-box
9
10strip_id_or_class: side_panel
11
12prune: no
13
14single_page_link: //span[@id='controls']/a[contains(@href, 'print=yes')]
15single_page_link: //a[text()='SINGLE PAGE']
16
17test_url: http://www.foreignpolicy.com/articles/2014/07/22/the_end_game_in_gaza_netanyahu_hamas
18test_url: http://www.foreignpolicy.com/articles/2011/08/01/a_murderers_manifesto_and_me
19test_url: http://www.foreignpolicy.com/articles/2012/02/29/five_years_in_damascus \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/forsvaret.no.txt b/inc/3rdparty/site_config/standard/forsvaret.no.txt
deleted file mode 100755
index c1bd2bac..00000000
--- a/inc/3rdparty/site_config/standard/forsvaret.no.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@class="articleHeader"]/h1
2author: //p[@class="byline"]
3date: //p[contains(@class,"publishedDate")]/span
4# remove the right menu
5strip: //div[contains(@class,"aside")]
6# remove some SharePoint webpart label junk
7strip: //div[@id="ctl00_PlaceHolderMain_ArticleLeadField_label"]
8strip: //div[@id="ctl00_PlaceHolderMain_PublishingPageContentField_label"]
9test_url: http://forsvaret.no/aktuelt/publisert/nyheter/Sider/F5-fly-til-Skedsmo.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/foxnews.com.txt b/inc/3rdparty/site_config/standard/foxnews.com.txt
deleted file mode 100755
index e19c77db..00000000
--- a/inc/3rdparty/site_config/standard/foxnews.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1prune: no
2
3author: //meta[@name="dc.publisher"]/@content
4date: //meta[@name="dc.date"]/@content
5strip: //p[contains(@class, 'contributor vcard')]
6replace_string(<ul><li><div class="photo">): <div class="photo">
7strip: //p[a[contains(., 'Click here to read more on this story ')]]
8
9test_url: http://www.foxnews.com/entertainment/2011/05/04/dwayne-johnson-guys-grow-pair-driving-hybrid/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/freelancer.com.txt b/inc/3rdparty/site_config/standard/freelancer.com.txt
deleted file mode 100755
index 78d37729..00000000
--- a/inc/3rdparty/site_config/standard/freelancer.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id="projectDetailsContent"]//td
2
3test_url: http://www.freelancer.com/projects/PHP-Website-Design/debug-Forum-website-code.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/freytag-film.com.txt b/inc/3rdparty/site_config/standard/freytag-film.com.txt
deleted file mode 100755
index c83f8303..00000000
--- a/inc/3rdparty/site_config/standard/freytag-film.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class = 'instapaperbody']
2convert_double_br_tags: no
3date: //div[@class='instadate']
4title: //h2[@class = 'instatitle']
5test_url: http://freytag-film.com/blog/artikel/shooting_a_feature_film_in_10_days \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fria.nu.txt b/inc/3rdparty/site_config/standard/fria.nu.txt
deleted file mode 100755
index 9d8eff97..00000000
--- a/inc/3rdparty/site_config/standard/fria.nu.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.fria.nu/artikel/112079
8test_url: http://www.fria.nu/taxonomy/term/1928/all/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/friatidningen.se.txt b/inc/3rdparty/site_config/standard/friatidningen.se.txt
deleted file mode 100755
index 1e4abc5a..00000000
--- a/inc/3rdparty/site_config/standard/friatidningen.se.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.friatidningen.se/artikel/112074 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/friendskorner.com.txt b/inc/3rdparty/site_config/standard/friendskorner.com.txt
deleted file mode 100755
index b067d88a..00000000
--- a/inc/3rdparty/site_config/standard/friendskorner.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1#body: (//div[@class='ftr-yt-vid'])[1]
2body: (//blockquote[contains(@class, 'postcontent')])[1]
3body: (//div[starts-with(@id, 'post_message')])[1]
4
5prune: no
6tidy: no
7
8#replace_string(<iframe title="YouTube video player"): <div class="ftr-yt-vid"><iframe title="YouTube video player"
9#replace_string(</iframe>): </iframe>&nbsp;</div>
10
11test_url: http://www.friendskorner.com/forum/f137/debate-personal-lives-leaders-west-vs-pakistan-must-read-297989/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ft.com.txt b/inc/3rdparty/site_config/standard/ft.com.txt
deleted file mode 100755
index e66b9603..00000000
--- a/inc/3rdparty/site_config/standard/ft.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[contains(@class, 'ft-story-body')]
2
3author: substring-after(//div[contains(@class, 'ft-story-header')]/p[1], 'By ')
4date: substring-before(substring-after(//div[contains(@class, 'ft-story-header')]/p[2], 'Published:'), '|')
5test_url: http://www.ft.com/cms/s/2/e1be4b5a-620c-11e0-8ee4-00144feab49a.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ftchinese.com.txt b/inc/3rdparty/site_config/standard/ftchinese.com.txt
deleted file mode 100755
index 5c94d9b0..00000000
--- a/inc/3rdparty/site_config/standard/ftchinese.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1# Modified to define the single_page_link
2# This filter is tested on:
3# http://www.ftchinese.com/story/001047373
4# http://www.ftchinese.com/story/001047631
5# http://www.ftchinese.com/story/001047622/?print=y
6# http://www.ftchinese.com/story/001049052
7# http://www.ftchinese.com/story/001049088
8
9title:substring-before(//title, '-')
10author: //div[@class='byline']/a
11date: //a[@class='storytime']
12#Set date in print view
13#date: //div[@class='byline']/a/following-sibling::a
14body: //div[@id="bodytext"]
15strip://div[@class='pagination']
16single_page_link://div[@class='pagination']/a[.='全文']
17#next_page_link: //div[@class='pagination']//a[.='下一页']
18test_url: http://www.ftchinese.com/story/001049088 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ftd.de.txt b/inc/3rdparty/site_config/standard/ftd.de.txt
deleted file mode 100755
index 7d76af00..00000000
--- a/inc/3rdparty/site_config/standard/ftd.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='boxIntroHead']/span[@class='h3'] | //div[@class='section']/div[@class='paragraph' or @class='embObjLeft']
2single_page_link: //a[@class='icon print']
3
4test_url: http://www.ftd.de/it-medien/it-telekommunikation/:mobilfunk-vivendi-und-vodafone-trennen-sich-in-frankreich/60034691.html
5test_url: http://www.ftd.de/it-medien/medien-internet/:verkauf-von-warner-music-musikbranche-auf-dem-sprung/60048185.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/fubiz.net.txt b/inc/3rdparty/site_config/standard/fubiz.net.txt
deleted file mode 100755
index 0dc30475..00000000
--- a/inc/3rdparty/site_config/standard/fubiz.net.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class = 'entry']
2
3test_url: http://www.fubiz.net/2011/05/31/world-press-photo-2011/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/futurezone.at.txt b/inc/3rdparty/site_config/standard/futurezone.at.txt
deleted file mode 100755
index 808c1f1b..00000000
--- a/inc/3rdparty/site_config/standard/futurezone.at.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1date: //span[@class='date']
2strip: //div[@class='postsidebar']
3body: //div[@class='singlepost']
4title: //div[@class='singlepost']/h1
5move_into(//div[@class='singlepost']): //div[@class='info']
6strip: //div[@class='gallery']
7strip: //div[@class='biggallery']
8strip: //ul[@class='social']
9strip: //ul[@class='social_mail']
10
11test_url: http://futurezone.at/future/5502-erste-galileo-satelliten-starten-ins-all.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gamasutra.com.txt b/inc/3rdparty/site_config/standard/gamasutra.com.txt
deleted file mode 100755
index 7c808cfd..00000000
--- a/inc/3rdparty/site_config/standard/gamasutra.com.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1# default view title
2title: //span[@class='newsTitle']
3# print view title
4title: //h3[@class='title']
5
6# default view author
7author: //span[@class='newsAuth']/a
8author: substring-after(//span[@class='newsAuth'], 'by ')
9
10# default view date
11date: //td[@class='newsDate']
12
13# default view body
14body: //td[@class='featureText']
15body: //td[@class='newsText']
16
17strip: //h3[@class='title']
18
19single_page_link: //a[contains(@href, '?print=1')]
20test_url: http://www.gamasutra.com/view/feature/132559/staying_power_rethinking_feedback_.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gameblog.fr.txt b/inc/3rdparty/site_config/standard/gameblog.fr.txt
deleted file mode 100755
index 73f8342f..00000000
--- a/inc/3rdparty/site_config/standard/gameblog.fr.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //meta[@property="og:title"]/@content
2body: //div[@id='GBTVPlayer'] | //div[contains(@class, 'col490')]
3
4prune: no
5
6strip_id_or_class: noprint
7strip: //div[@id='gbNewsTextContent']/following-sibling::*
8
9test_url: http://www.gameblog.fr/news/26330-les-sims-3-showtime-s-annonce-en-video
10test_url: http://www.gameblog.fr/news/26306-mise-a-jour-du-dashboard-de-la-xbox-360-disponible \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gamechurch.com.txt b/inc/3rdparty/site_config/standard/gamechurch.com.txt
deleted file mode 100755
index c9eea5f8..00000000
--- a/inc/3rdparty/site_config/standard/gamechurch.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1[@class='title']
2
3date: substring-before(substring-after(//div[@class='comment-bubble']/.., 'Posted'), 'by')
4
5body: //div[@class='the-content']
6
7strip: //div[@class='article-image responsive']
8
9strip_id_or_class: 'pullquote'
10test_url: http://gamechurch.com/virtual-gun-control-the-best-amendment/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gamer.no.txt b/inc/3rdparty/site_config/standard/gamer.no.txt
deleted file mode 100755
index e76a59d9..00000000
--- a/inc/3rdparty/site_config/standard/gamer.no.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class='pageContent description']
2date: //div[@class='authorsAndDateTime']/span[@title]
3single_page_link: //div[@class='pages']/a[last()-1]
4
5# fix images and captions
6wrap_in(figure): //div[contains(concat(' ', @class, ' '), ' image')]
7wrap_in(figcaption): //div[contains(concat(' ', @class, ' '), ' image')]/div[@class='text']/text()
8
9# get rid of videos
10strip_id_or_class: 'video full'
11test_url: http://www.gamer.no/artikler/142455/slik-blei-ambisiose-dragons-dogma-skapt/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gamereactor.no.txt b/inc/3rdparty/site_config/standard/gamereactor.no.txt
deleted file mode 100755
index 6f7c1b9b..00000000
--- a/inc/3rdparty/site_config/standard/gamereactor.no.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //div[@id='content']/div/h1
2
3author: //a[@itemprop='reviewer']
4
5date: //time[@itemprop='dtreviewed']/@datetime
6
7body: //div[@id='breadtext']
8
9# fix for NOT magically removing anchors with text identical to title
10dissolve: //a[text()=//div[@id='content']/div/h1/text()]
11test_url: http://www.gamereactor.no/previews/177481/The+Evil+Within/?sid=38b5bd30f56f1b7214de4ff5bed4b76f \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/garythink.com.txt b/inc/3rdparty/site_config/standard/garythink.com.txt
deleted file mode 100755
index 327ac55b..00000000
--- a/inc/3rdparty/site_config/standard/garythink.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1tidy: no
2
3test_url: http://www.garythink.com/eft/testing.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gasteroprod.com.txt b/inc/3rdparty/site_config/standard/gasteroprod.com.txt
deleted file mode 100755
index 8eda0c36..00000000
--- a/inc/3rdparty/site_config/standard/gasteroprod.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1# These should work, but don't. They were given by Firefox XPather extension
2title: //article//header//a//h1
3body: //article//section
4test_url: http://gasteroprod.com/blog/faut-il-continuer-a-supporter-internet-explorer-6.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gatopardo.com.txt b/inc/3rdparty/site_config/standard/gatopardo.com.txt
deleted file mode 100755
index 2ab144f5..00000000
--- a/inc/3rdparty/site_config/standard/gatopardo.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[@class='panel']
2strip: //div[@style='float:right']
3strip: //span[@class='titulosHomePublicidad']
4strip: //div[@id='TitTop5Der']
5strip: //img[@src='/ImagesGatoPardo/LogoGatopardo.png']
6
7prune: yes
8test_url: http://www.gatopardo.com/ReportajesGP.php?R=95 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gawker.com.txt b/inc/3rdparty/site_config/standard/gawker.com.txt
deleted file mode 100755
index 9bc5613a..00000000
--- a/inc/3rdparty/site_config/standard/gawker.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@class="post-body"]
2
3# Remove 'content is restricted'
4strip: //div[@id='agegate_IDHERE']
5
6test_url: http://gawker.com/#!5782070/russian-bomb-squad-successfully-defuses-sex-toy \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/geeksofdoom.com.txt b/inc/3rdparty/site_config/standard/geeksofdoom.com.txt
deleted file mode 100755
index 89eb402f..00000000
--- a/inc/3rdparty/site_config/standard/geeksofdoom.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1author: substring-after(//span[@class='storyauthor'],'Posted by')
2date: //span[@class='storydate']
3test_url: http://www.geeksofdoom.com/2012/03/14/robert-rodriguez-says-machete-kills-and-sin-city-2-will-film-this-year/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/geenstijl.nl.txt b/inc/3rdparty/site_config/standard/geenstijl.nl.txt
deleted file mode 100755
index a664b4d9..00000000
--- a/inc/3rdparty/site_config/standard/geenstijl.nl.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id = 'article']
2strip: //div[@id = 'klasbox']
3test_url: http://www.geenstijl.nl/mt/archieven/2010/10/vrouw_lange_frans_wou_baas_b_d.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/getnews.jp.txt b/inc/3rdparty/site_config/standard/getnews.jp.txt
deleted file mode 100755
index e28d4b8b..00000000
--- a/inc/3rdparty/site_config/standard/getnews.jp.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='post']
2strip: //ul[@id='bookmark_single']
3test_url: http://getnews.jp/archives/117312 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/giantbomb.com.txt b/inc/3rdparty/site_config/standard/giantbomb.com.txt
deleted file mode 100755
index 61de51b2..00000000
--- a/inc/3rdparty/site_config/standard/giantbomb.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# 2011-11-19 - carlo@... - Initial setup.
2
3strip_id_or_class: user-review-detail
4strip: //h1
5
6body: //div[@class="wiki-content"] | //div[@class="section-bd"] | //div[@class="news-story"]
7
8author: //span[@class="reviewer"] | //p[@class="byline"]/a/text()
9date: //span[@class="dtreviewed"]
10
11test_url: http://www.giantbomb.com/the-elder-scrolls-v-skyrim/61-33394/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/giga.de.txt b/inc/3rdparty/site_config/standard/giga.de.txt
deleted file mode 100755
index e2689eae..00000000
--- a/inc/3rdparty/site_config/standard/giga.de.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1tidy:no
2title://h2[@class="title"]
3# author:"Ben Miller"
4date://div[@id="stats"]/span
5strip_id_or_class:stats
6strip_id_or_class:breadcrumbs
7strip_id_or_class:gn-why-content
8strip_id_or_class:single-social
9strip_id_or_class:sidebar-ads
10strip_id_or_class:sidebar-top
11strip_id_or_class:footer
12strip_id_or_class:post_meta
13# strip_id_or_class:
14# strip_id_or_class:
15# strip_id_or_class:
16# strip_id_or_class:
17# strip_id_or_class:
18# strip_id_or_class:
19
20test_url: http://www.giga.de/benm/2011/10/17/probleme-mit-ios-5-wenn-die-daten-weg-sind/#more-58033 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gigaom.com.txt b/inc/3rdparty/site_config/standard/gigaom.com.txt
deleted file mode 100755
index cc8fdfa0..00000000
--- a/inc/3rdparty/site_config/standard/gigaom.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1date: //meta[@name='dcterms.created']/@content
2title: //meta[@property='og:title']/@content
3author: //section[@class="post-meta"]//a[@rel="author"]
4
5body: //div[starts-with(@id, 'post-content-')]
6
7strip_id_or_class: sharedaddy
8
9prune: no
10
11test_url: http://gigaom.com/2011/10/24/groupon-google-lawsuit/
12test_url: http://gigaom.com/2012/12/26/snapchat-rises-why-pokes-decline-shows-facebooks-inability-to-invent/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gihyo.jp.txt b/inc/3rdparty/site_config/standard/gihyo.jp.txt
deleted file mode 100755
index d3534b29..00000000
--- a/inc/3rdparty/site_config/standard/gihyo.jp.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //p[@id='skip']//a[contains(@href, 'skip')]
2
3test_url: http://gihyo.jp/dev/serial/01/machine-learning/0010 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gist.github.com.txt b/inc/3rdparty/site_config/standard/gist.github.com.txt
deleted file mode 100755
index 90207862..00000000
--- a/inc/3rdparty/site_config/standard/gist.github.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@class="highlight"]/pre
2
3prune: no
4tidy: no
5
6test_url: https://gist.github.com/1258908 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/givemesomethingtoread.com.txt b/inc/3rdparty/site_config/standard/givemesomethingtoread.com.txt
deleted file mode 100755
index 0de0750b..00000000
--- a/inc/3rdparty/site_config/standard/givemesomethingtoread.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //div[@id="content"]//h2/a
2
3test_url: http://givemesomethingtoread.com/post/6285838917/the-baddest-lawyer-in-the-history-of-jersey \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gizmodo.co.uk.txt b/inc/3rdparty/site_config/standard/gizmodo.co.uk.txt
deleted file mode 100755
index 2eb82a6d..00000000
--- a/inc/3rdparty/site_config/standard/gizmodo.co.uk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id="leadimage" or @class="postcontent"]
2author: //div[@class="contentauthor"]
3date: //div[@class="timestamp"]
4
5prune: no
6
7test_url: http://www.gizmodo.co.uk/2013/02/bbc-forcing-poor-old-sir-david-attenborough-to-go-on-twitter/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gizmodo.com.txt b/inc/3rdparty/site_config/standard/gizmodo.com.txt
deleted file mode 100755
index e73ec9d2..00000000
--- a/inc/3rdparty/site_config/standard/gizmodo.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1#body: //div[@class="post-body" or contains(@class, 'illustration top')]
2body: //div[contains(@class, 'image-annotation-box') or contains(@class, 'post-content')]
3#author: (//cite//span[@class="plus-icon"])[1]
4author: //span[contains(@class, 'display-name')]
5date: //span[@class="date"]
6
7prune: no
8
9test_url: http://gizmodo.com/5880147/kuhn-rikon-improves-their-spice-grinder-with-grade-school-science
10test_url: http://gizmodo.com/what-van-goghs-paintings-would-look-like-if-they-came-874035680
11test_url: http://gizmodo.com/vip.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gizmodo.uol.com.br.txt b/inc/3rdparty/site_config/standard/gizmodo.uol.com.br.txt
deleted file mode 100755
index d963d684..00000000
--- a/inc/3rdparty/site_config/standard/gizmodo.uol.com.br.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1
2
3body: //div[@id='destaques']//div[contains(@class, 'img')] | //div[@id='maincontent']//p
4
5test_url: http://gizmodo.uol.com.br/nvidia-gtx-titan-z/
6test_url: http://gizmodo.uol.com.br/perfil-mark-zuckerberg-hackeado/
diff --git a/inc/3rdparty/site_config/standard/gizmologia.com.txt b/inc/3rdparty/site_config/standard/gizmologia.com.txt
deleted file mode 100755
index d2c7c9f9..00000000
--- a/inc/3rdparty/site_config/standard/gizmologia.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://gizmologia.com/2011/09/amd-trinity-el-sucesor-de-llano-en-una-demostracion-muy-interesante \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gizmovil.com.txt b/inc/3rdparty/site_config/standard/gizmovil.com.txt
deleted file mode 100755
index 5fc204b8..00000000
--- a/inc/3rdparty/site_config/standard/gizmovil.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://gizmovil.com/2011/09/hipertextual-labs-receptor-bluetooth-nokia-bh-214 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/global.txt b/inc/3rdparty/site_config/standard/global.txt
deleted file mode 100755
index 71fbc934..00000000
--- a/inc/3rdparty/site_config/standard/global.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1# Look for Open Graph data - http://ogp.me
2title: //meta[@property="og:title"]/@content
3date: //meta[@property="article:published_time"]/@content
4# article:author is someties URL, e.g. on guardian.co.uk
5
6# Remove Google Publisher Tags: https://support.google.com/dfp_sb/answer/1649768?hl=en
7#strip_id_or_class: div-gpt-ad
8
9# Strip doubleclick image ads
10strip_image_src: doubleclick.net
11
12# If you get chunks of Javascript code appearing in the extracted output, try uncommenting the lines below.
13# This tries to convert script tags to hidden div elements (which Full-Text RSS removes).
14# If you notice issues with this approach, please let us know.
15#find_string: <script
16#replace_string: <div style="display:none"
17#find_string: </script>
18#replace_string: </div> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/globalissues.org.txt b/inc/3rdparty/site_config/standard/globalissues.org.txt
deleted file mode 100755
index ee50f68f..00000000
--- a/inc/3rdparty/site_config/standard/globalissues.org.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body: //div[@id='content']
2
3strip: //p[@class='top']
4strip: //h2[.='Where next?']
5strip_id_or_class: where-next
6strip_id_or_class: social-bookmarks
7strip_id_or_class: link-to-here
8strip_id_or_class: options-heading
9strip_id_or_class: page-options-content
10strip_id_or_class: page-info-bottom
11
12tidy: no
13prune: no
14
15test_url: http://www.globalissues.org/article/39/a-primer-on-neoliberalism \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/globoesporte.globo.com.txt b/inc/3rdparty/site_config/standard/globoesporte.globo.com.txt
deleted file mode 100755
index fd8e70ff..00000000
--- a/inc/3rdparty/site_config/standard/globoesporte.globo.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1title: //h1[@class="entry-title"]
2
3body: //div[@class='materia-titulo']/h2 | //*[@id="materia-letra"]
4
5date: //abbr[@class="published"]
6date: //abbr[@class="updated"]
7
8author: //*[@class="author"]/strong
9
10strip: //div[contains(@class,'foto')]/strong
11strip: //div[contains(@class,'frase-materia')]/div[@class='autor']
12strip: //div[contains(@class,'saibamais')]
13strip: //*[contains(text(),'Clique aqui e veja mais')]/ancestor::p
14strip: //ul[@class="toolbar"]
15
16# quotes
17wrap_in(blockquote): //div[@id='materia-letra']//div[contains(@class,'frase-materia')]/div[@class='frase']
18
19prune: no
20
21replace_string([Clique aqui e veja mais vídeos do Fluminense]): []
22
23test_url: http://globoesporte.globo.com/atletismo/noticia/2013/08/michael-johnson-diz-que-bolt-e-melhor-da-historia-nao-ha-duvidas.html
24test_url: http://globoesporte.globo.com/futebol/futebol-internacional/futebol-espanhol/noticia/2013/08/barca-atropela-levante-e-neymar-passa-em-branco-em-estreia-oficial.html
25test_url: http://globoesporte.globo.com/futebol/times/fluminense/noticia/2013/08/poupado-no-sabado-felipe-se-diz-pronto-para-ser-titular-contra-o-goias.html
diff --git a/inc/3rdparty/site_config/standard/gloswielkopolski.pl.txt b/inc/3rdparty/site_config/standard/gloswielkopolski.pl.txt
deleted file mode 100755
index 16487955..00000000
--- a/inc/3rdparty/site_config/standard/gloswielkopolski.pl.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //article[@id='material']/header/h1
2author: //article[@id='material']/header/div[2]/p
3date: //article[@id='material']/header/p/time[1]
4body: //section[@id='tresc']
5next_page_link: .//section[@id='tresc']/div[@class='stronicowanie']/a[@rel='next']
6strip://div[@class='podobneSonda']
7
8test_url: http://www.gloswielkopolski.pl/artykul/803547,abc-telemarketingu-praca-ktora-zwalnia-z-myslenia,id,t.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/goal.com.txt b/inc/3rdparty/site_config/standard/goal.com.txt
deleted file mode 100755
index e25e9a00..00000000
--- a/inc/3rdparty/site_config/standard/goal.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //div[@id='article_headline']//h1
2date: //div[contains(@class, 'articleDate')]//h4
3body: //div[@id='article_headline']/h2 | //div[@id='large_article_image' or @id='article_content']
4
5strip_id_or_class: relatedLinksBox
6strip_id_or_class: betting-widget
7strip_image_src: install_flash.gif
8
9strip: //table[contains(@style, 'float: right; width: 285px;')]
10strip: //div[@class='caption']
11
12tidy: no
13prune: no
14
15test_url: http://www.goal.com/en-gb/news/3284/euro-2012/2012/05/31/3139032/video-profile-back-to-his-very-best-for-bayern-frances-flair-and-
16test_url: http://www.goal.com/en-gb/news/3284/euro-2012/2012/05/31/3139869/lampard-injury-a-bitter-blow-for-england-and-sorry-way-to# \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/golem.de.txt b/inc/3rdparty/site_config/standard/golem.de.txt
deleted file mode 100755
index c64860c0..00000000
--- a/inc/3rdparty/site_config/standard/golem.de.txt
+++ /dev/null
@@ -1,34 +0,0 @@
1# Author: zinnober
2# Rewrite of original template which fetched the printer-version without pictures
3
4tidy: no
5prune: no
6
7# Set full title
8title: //h1
9
10date: //time
11
12# Content is here
13body: //article
14
15# Fetch full multipage articles
16next_page_link: //a[@id='atoc_next']
17
18# Remove tracking and ads
19strip_id_or_class: iqadtile4
20
21# General Cleanup
22strip_id_or_class: list-jtoc
23strip_id_or_class: table-jtoc
24strip_id_or_class: implied
25strip_id_or_class: social-
26strip_id_or_class: comments
27strip_id_or_class: footer
28
29# Tidy up galleries (could still be improved, though)
30strip: //img[@src='']
31
32# Try yourself
33test_url: http://www.golem.de/news/intel-core-i7-5960x-im-test-die-pc-revolution-beginnt-mit-octacore-und-ddr4-1408-108893.html
34test_url: http://www.golem.de/news/test-infamous-first-light-neonbunter-actionspass-1408-108914.html
diff --git a/inc/3rdparty/site_config/standard/good.is.txt b/inc/3rdparty/site_config/standard/good.is.txt
deleted file mode 100755
index 94159fbf..00000000
--- a/inc/3rdparty/site_config/standard/good.is.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //div[@class="title"]/div/h1
2body: //div[@class="body"]
3date: //li[@class="date-time"]
4test_url: http://www.good.is/post/why-amazon-is-the-next-top-tech-company/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/goodfil.ms.txt b/inc/3rdparty/site_config/standard/goodfil.ms.txt
deleted file mode 100755
index f8bbbc6a..00000000
--- a/inc/3rdparty/site_config/standard/goodfil.ms.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip_id_or_class: gutter
2test_url: http://goodfil.ms/blog/posts/2012/08/13/angularjs-and-the-goodfilms-mobile-site-part-1/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gossip-tv.gr.txt b/inc/3rdparty/site_config/standard/gossip-tv.gr.txt
deleted file mode 100755
index e2d2d0b2..00000000
--- a/inc/3rdparty/site_config/standard/gossip-tv.gr.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1date: //meta[@name='og:article:published_time']/@value
2
3body: //div[@class='itemIntroText' or @class='itemImageBlock' or @class='itemFullText']
4
5strip_id_or_class: itemImageGallery
6
7# remove extras at end of post content
8find_string: <div style="margin:5px 0 10px;">
9replace_string: </div></body></html><!--
10
11prune: no
12
13test_url: http://www.gossip-tv.gr/story/158902/aggelike-daliane-semera-duskoleuontai-oloi-sta-epaggelmatika-tous
14test_url: http://www.gossip-tv.gr/lifestyle/Taste/story/230266/lahtaristo-kai-ygieino-tost-sokolatas \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/goteborgsfria.se.txt b/inc/3rdparty/site_config/standard/goteborgsfria.se.txt
deleted file mode 100755
index c90aed0b..00000000
--- a/inc/3rdparty/site_config/standard/goteborgsfria.se.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.goteborgsfria.se/artikel/112079 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gothamist.com.txt b/inc/3rdparty/site_config/standard/gothamist.com.txt
deleted file mode 100755
index 36453878..00000000
--- a/inc/3rdparty/site_config/standard/gothamist.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class='entry-header']
2author: //span[@class='vcard author']
3date: //abbr[@class='published']
4#move_into(//div[@class='entry-body']): //img[@id='photo_1']
5body: //div[@class='entry-body']
6strip: //div[@class='galleryEaseThumbs']
7test_url: http://gothamist.com/2012/03/15/fancy_cocktail_lounge_the_randolph.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gotomanager.com.txt b/inc/3rdparty/site_config/standard/gotomanager.com.txt
deleted file mode 100755
index f8af7324..00000000
--- a/inc/3rdparty/site_config/standard/gotomanager.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1title: //span[@id="showTitle"]
2author: //span[@id="showAuthor"]
3date: //span[@id="showRefDate"]
4
5strip: //span[@class="black_bold"]
6strip: //div[@id="sectionName"]
7strip: //div[@id="storyHeader"]
8
9body: //div[@id="newsBodyText"]
10
11strip_image_src: "http://www.gotomanager.com/img/mgrm/space.gif"
12strip_image_src: "http://www.gotomanager.com/images/separator.gif"
13strip_image_src: "http://www.gotomanager.com/images/spaces.gif"
14
15convert_double_br_tags: yes
16tidy: yes
17
18strip: //div[@id="smallLeadImage"]
19strip: //div[@id="truehitsSurvey"]
20strip: //table[@id="relatedInfoTable"]
21test_url: http://www.gotomanager.com/news/details.aspx?id=86759 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gov.ky.txt b/inc/3rdparty/site_config/standard/gov.ky.txt
deleted file mode 100755
index 294ece3a..00000000
--- a/inc/3rdparty/site_config/standard/gov.ky.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1strip: //body//title
2
3test_url: http://www.gov.ky/pls/portal/PORTAL.wwv_media.show?p_id=7593947&p_settingssetid=1&p_settingssiteid=0&p_siteid=2425&p_type=basetext&p_textid=7593948
4test_url: http://www.rcips.ky/pls/portal/wlacomp.wlafeed.show_cignewsfeed_agency?p_sitecode=POL&p_agency=Police \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gp.se.txt b/inc/3rdparty/site_config/standard/gp.se.txt
deleted file mode 100755
index 158ae4ed..00000000
--- a/inc/3rdparty/site_config/standard/gp.se.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@id='articleContainer']
2author: //div[@id='articleContent']//div[contains(@class, 'byline')]//span[contains(@class, 'name fn')]
3strip_id_or_class: toolbar
4strip_id_or_class: ADad
5strip_id_or_class: articleSerieWrapper
6strip_id_or_class: articleFloatContainer
7strip: //div[contains(@class, 'byline')]//img
8prune: no
9
10test_url: http://www.gp.se/nyheter/bohuslan/1.2045564-styckade-mannen-hade-mordat-hustrun
11test_url: http://www.gp.se/1.16560 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gq.com.txt b/inc/3rdparty/site_config/standard/gq.com.txt
deleted file mode 100755
index 8ad8a14e..00000000
--- a/inc/3rdparty/site_config/standard/gq.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1next_page_link: //div[@class='pagination']//span[@class='paginationNext']/a
2strip_id_or_class: utility
3strip_id_or_class: keywords
4strip_id_or_class: pagination
5strip_id_or_class: position2_content
6body: //div[@class='article']
7title: //h1[@class='content-headline']
8author: //span[@class='contributor']//a
9test_url: http://www.gq.com/news-politics/newsmakers/201203/terry-thompson-ohio-zoo-massacre-chris-heath-gq-february-2012 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/grantland.com.txt b/inc/3rdparty/site_config/standard/grantland.com.txt
deleted file mode 100755
index b8d419f4..00000000
--- a/inc/3rdparty/site_config/standard/grantland.com.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1# this is fragile with footnotes -- leave it for now
2
3#tidy: no
4#prune: no
5#move_into(//article): //aside[@id='footnotes']
6author: //cite/a
7date: //time
8
9strip: //a[text()='Grantland']
10strip_id_or_class: ad-wrapper
11strip_id_or_class: fb-connect-link
12strip_id_or_class: fb-status
13strip: //li[@class='print']
14strip: //cite
15strip: //a[contains(text(), '[+]')]
16strip: //a[@id='jump-nav-link']
17strip: //h1[text()='Share This']
18strip: //h1[text()='Top Stories']
19strip: //div[@id="update-text-size"]
20test_url: http://www.grantland.com/story/_/id/8421241/examining-new-albums-rock-veterans-no-doubt-green-day \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/greatergreaterwashington.org.txt b/inc/3rdparty/site_config/standard/greatergreaterwashington.org.txt
deleted file mode 100755
index 31a41075..00000000
--- a/inc/3rdparty/site_config/standard/greatergreaterwashington.org.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //div[@class="blogpost"]/h2
2author: //div[@class="blogpost"]/p[@class="byline"]/a
3date: //div[@class="blogpost"]/p[@class="byline"]/span[@class="time_posted"]
4body: //div[@class="blogpost"]
5strip_id_or_class: flag
6strip_id_or_class: byline
7strip_id_or_class: post_footer
8strip_id_or_class: related_posts
9strip_id_or_class: post_author_bios
10strip: //h2
11test_url: http://greatergreaterwashington.org/post/12457/ask-ggw-what-will-happen-to-the-1000-series-railcars/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/groups.drupal.org.txt b/inc/3rdparty/site_config/standard/groups.drupal.org.txt
deleted file mode 100755
index 0fe30ef5..00000000
--- a/inc/3rdparty/site_config/standard/groups.drupal.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title://h1
2author://span[@class="submitted"]/a
3date:substring-after(//span[@class="submitted"],'on ')
4body://div[@class="content"]
5test_url: http://groups.drupal.org/node/36816 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/guardian.co.uk.txt b/inc/3rdparty/site_config/standard/guardian.co.uk.txt
deleted file mode 100644
index 71d84306..00000000
--- a/inc/3rdparty/site_config/standard/guardian.co.uk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@id='main-article-info']//h1
2body: //div[@id='article-wrapper']
3date: //li[@class='publication']//time[@pubdate] | //li[@class='publication']//data[@pubdate]
4author: //li[@class='byline']
5prune: no
6tidy: no
7test_url: http://www.guardian.co.uk/business/2011/oct/06/quantitative-easing-75bn-bank-of-england \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/gulfnews.com.txt b/inc/3rdparty/site_config/standard/gulfnews.com.txt
deleted file mode 100755
index 97b620de..00000000
--- a/inc/3rdparty/site_config/standard/gulfnews.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='wrapper_half']//ul[@class='details'] | //div[@class='wrapper_half']//p[@class='synopsis'] | //div[@class='wrapper_half']//div[@class='image'] | //div[@class='wrapper_half']//div[@class='article']
2strip: //div[@class='wrapper_half']//ul[@class='details']/li[position()>1]
3prune: no
4tidy: no
5test_url: http://gulfnews.com/news/gulf/uae/government/abu-dhabi-centre-offers-useful-information-1.811084 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/guokr.com.txt b/inc/3rdparty/site_config/standard/guokr.com.txt
deleted file mode 100755
index f8327bea..00000000
--- a/inc/3rdparty/site_config/standard/guokr.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1# To administrator:
2# Please change the hostname to "www.guokr.com/article/*"
3# Not working for "www.guokr.com/post/" pages configured by carlosliu913@gmail.com
4
5# This filter is tested on:
6# http://www.guokr.com/article/274325/
7# http://www.guokr.com/article/275013/
8
9title://h1
10author://div[contains(@class, 'content-th-info')]/a
11date://div[contains(@class, 'content-th-info')]/span
12body://div[contains(@class, 'Content')]
13
14strip://div[contains(@class, 'bottom-i')]
15strip://div[contains(@class, 'copyright')]
16strip://div[contains(@class, 'fr')]
17strip://div[contains(@class, 'content-th-info')]
18strip://h1[contains(@id, 'articleTitle')]
19strip://div[contains(@class, 'side')]
20strip://div[contains(@class, 'top-wp')]
21test_url: http://www.guokr.com/article/275013/
22test_url: http://www.guokr.com/article/338387/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/haberler.com.txt b/inc/3rdparty/site_config/standard/haberler.com.txt
deleted file mode 100755
index 1bb2bc7d..00000000
--- a/inc/3rdparty/site_config/standard/haberler.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@id="habermetni"]/h1[@id="haber_baslik"]
2body: //div[@id="habermetni"]/p
3strip: //img[@class='newsDetailLeft']
4strip_image_src: /haber-resimleri/
5test_url: http://www.haberler.com/emniyete-atacakti-elinde-patladi-3198733-haberi/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/habrahabr.ru.txt b/inc/3rdparty/site_config/standard/habrahabr.ru.txt
deleted file mode 100755
index 67538359..00000000
--- a/inc/3rdparty/site_config/standard/habrahabr.ru.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1title: //span[@class="post_title"]
2author: //div[@class="author"]
3date: //div[@class="published
4
5body: //div[@class='content html_format'] | //div[@id='comments']
6
7strip: //a[@class="link_to_comment"]
8strip: //div[@class="show_tree"]
9strip: //a[@class="to_parent"]
10
11
12replace_string(class="reply_comments"): style="padding-left: 20px"
13replace_string(class="voting "): style="float: right"
14replace_string(src="//habrastorage.org/getpro/habr/avatars/): style="width:24px; height:24px;" class="123" src="//habrastorage.org/getpro/habr/avatars/
15replace_string(class="info "): style="padding-top:5px;font-size:0.85em;line-height:24px;"
16
17
18prune: no
19tidy: no
20
21test_url: http://habrahabr.ru/post/229883/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hackmake.org.txt b/inc/3rdparty/site_config/standard/hackmake.org.txt
deleted file mode 100755
index 98140117..00000000
--- a/inc/3rdparty/site_config/standard/hackmake.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1date: //article//time[@pubdate]
2body: //article/div[@id="post-wide"]
3title: //article/header/h2
4strip: /div[@id="comment"]
5strip: //footer
6author: substring-after(//footer/p[@class='byline'] , 'By')
7test_url: http://hackmake.org/2012/12/21/mindfulness-of-concentration \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/halo.bungie.org.txt b/inc/3rdparty/site_config/standard/halo.bungie.org.txt
deleted file mode 100755
index 1802efea..00000000
--- a/inc/3rdparty/site_config/standard/halo.bungie.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title:substring-before(id("maincontent")/table, 'Posted')
2body:id("maincontent")/p
3# eventually convert linebreaks better
4
5test_url: http://halo.bungie.org/fanfic/?story=Delahunt0312112316071.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hammers.theoffside.com.txt b/inc/3rdparty/site_config/standard/hammers.theoffside.com.txt
deleted file mode 100755
index 33f7e726..00000000
--- a/inc/3rdparty/site_config/standard/hammers.theoffside.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# Remove right column
2strip: //*[(@class = 'right_col')]
3
4# Remove comments etc.
5strip: //*[(@class = 'category')]
6strip: /html/body/div[1][@class='absolute_content_high']/div[1][@class='wrapper']/div[1][@class='main_col']/div[@class='main_content']/h3
7test_url: http://hammers.theoffside.com/carling-cup/a-funny-thing-happened-on-the-way-to-4-nil.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/handelsblatt.com.txt b/inc/3rdparty/site_config/standard/handelsblatt.com.txt
deleted file mode 100755
index 7d067aa6..00000000
--- a/inc/3rdparty/site_config/standard/handelsblatt.com.txt
+++ /dev/null
@@ -1,31 +0,0 @@
1#Single Page
2single_page_link: //li[contains(@class,"hcf-print")]/a
3
4# Title hcf-headline
5title: //span[@class='hcf-headline']
6
7# Authors
8author: //div[@class="hcf-author"]/a/text()
9author: substring-after(//div[@class='hcf-author'], 'von ')
10
11# Date
12date: //div[@class='hcf-article-date']
13
14# Body
15body: //div[@class='article']
16
17# General removements
18strip: //div[contains(@class,"hcf-smartbox")]
19strip: //div[contains(@class,"hcf-stopper")]
20strip: //div[contains(@class,"hcf-img-controls")]
21strip: //span[@class='hcf-location-mark']
22strip: //span[@class='hcf-copyright']
23strip: //div[@class='hcf-copyright']
24strip: //div[@class='hcf-origin']
25
26
27
28
29# Fix picture captions
30wrap_in(small): //div[@class="hcf-caption"]
31test_url: http://www.handelsblatt.com/meinung/gastbeitraege/gastkommentar-zum-emissionshandel-kurskorrekturen-fuehren-zum-kentern/8044326.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hanselman.com.txt b/inc/3rdparty/site_config/standard/hanselman.com.txt
deleted file mode 100755
index 1dca632f..00000000
--- a/inc/3rdparty/site_config/standard/hanselman.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1date: //span[@class="item-date"]
2body: //div[@class="item-content"]
3strip_comments: no
4test_url: http://www.hanselman.com/blog/BrainBytesBackBunsTheProgrammersPriorities.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hardware.fr.txt b/inc/3rdparty/site_config/standard/hardware.fr.txt
deleted file mode 100755
index e4f1f6bc..00000000
--- a/inc/3rdparty/site_config/standard/hardware.fr.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1
2author: //a[@class='a_aut']
3body: //div[@class='content_dossier']
4strip: //div[@id='pagination']
5next_page_link: //div[@class='sommaire_colonne']//span[@class='page_actuelle']/following::span[@class='autres_page']//a/@href
6test_url: http://www.hardware.fr/articles/850-1/pci-express-3-0-impact-performances.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hardware.no.txt b/inc/3rdparty/site_config/standard/hardware.no.txt
deleted file mode 100755
index cbbcf84e..00000000
--- a/inc/3rdparty/site_config/standard/hardware.no.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //h1[@class='headline']
2title: //h2[@itemprop='alternativeHeadline']
3title: //h1[@itemprop='headline']
4author: //span[@itemprop='name']
5date: //time[@itemprop='datePublished']
6body: //div[@itemprop='reviewBody']
7
8wrap_in(blockquote): //div[@class='factBox']
9
10next_page_link: //a[@rel='next']
11
12strip_id_or_class: 'product-box'
13strip: //a[@rel='next']
14strip: //a[text()='Del på Facebook']
15strip: //a[text()='Del på Twitter']
16test_url: http://www.hardware.no/artikler/asus-vg248qe/132792 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hbr.org.txt b/inc/3rdparty/site_config/standard/hbr.org.txt
deleted file mode 100755
index c2f292e1..00000000
--- a/inc/3rdparty/site_config/standard/hbr.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@id='article-title']
2author: //div[@id='articleAuthors']
3body: //div[@id='article']
4strip: //div[@class='module wide']
5#single_page_link: //a[@class='social-print']
6test_url: http://hbr.org/2012/04/the-real-leadership-lessons-of-steve-jobs/ar/
7test_url: http://hbr.org/2013/03/big-bang-disruption/ar/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/headrush.typepad.com.txt b/inc/3rdparty/site_config/standard/headrush.typepad.com.txt
deleted file mode 100755
index a3146771..00000000
--- a/inc/3rdparty/site_config/standard/headrush.typepad.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title://div[@class='content']/h3[1]
2body://div[@class='content']
3
4# Article nav
5strip://div[@class='content']/p[1]
6
7# Comments and trackbacks
8strip://h2/following-sibling::p
9strip://h2
10
11# Posted on
12strip://b/p
13strip://div[@class='content']/p[@class='posted']
14test_url: http://headrush.typepad.com/creating_passionate_users/2005/05/the_case_for_ea.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/healthland.time.com.txt b/inc/3rdparty/site_config/standard/healthland.time.com.txt
deleted file mode 100644
index 204d8da0..00000000
--- a/inc/3rdparty/site_config/standard/healthland.time.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1date: //span[@class = 'date']
2body: //div[@class = 'entry-content']
3strip://div[@class='more-ways']
4strip://div[@id = 'stayConnected']
5strip://p[child::a[@rel = 'bookmark']]
6strip://p[starts-with(string(.),'(MORE:')]
7strip://p[starts-with(string(.),'(PHOTOS:')]
8move_into(//p[../@class = 'entry-content'][position() = last()])://div[@id = 'featbox']
9
10test_url: http://healthland.time.com/2011/07/24/amy-winehouse-and-the-pain-of-addiction/?preview=true&preview_id=39210&preview_nonce=0777d4e408 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/heise-online.mobi.txt b/inc/3rdparty/site_config/standard/heise-online.mobi.txt
deleted file mode 100755
index daff6143..00000000
--- a/inc/3rdparty/site_config/standard/heise-online.mobi.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='content']/div
2date: //p[@class='author_date']/span[@class='date']
3test_url: http://heise-online.mobi/newsticker/meldung/Amazons-Appstore-in-der-Kritik-Ein-Desaster-fuer-Kunden-und-Entwickler-1273936.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/heise.de.txt b/inc/3rdparty/site_config/standard/heise.de.txt
deleted file mode 100755
index 9433104b..00000000
--- a/inc/3rdparty/site_config/standard/heise.de.txt
+++ /dev/null
@@ -1,42 +0,0 @@
1# Author: zinnober
2# Template should work well with either desktop or mobile version (m.heise.de)
3
4prune: no
5
6title: //article/h1 | //h1
7date: //p[@class='news_datum']
8author: //h4[@class='author']
9
10body: //article | //div[@class='meldung_wrapper']
11
12# General cleanup
13strip: //time
14strip: //h4[@class='author']
15strip: //p[@class='news_datum']
16strip: //p[@class='artikel_datum']
17strip: //a[contains(@href, 'mailto')]
18strip_id_or_class: comments
19strip_id_or_class: ISI_IGNORE
20strip_id_or_class: clear
21
22strip_id_or_class: linkurl_grossbild
23strip_id_or_class: image-num
24strip_id_or_class: heisebox_right
25strip_id_or_class: dossier
26
27# Strip Ads
28strip_id_or_class: ad_
29
30# Some optimizations
31replace_string(<h5>): <h2>
32replace_string(</h5>): </h2>
33replace_string(<span class="bild_rechts"): <p
34replace_string(<div class="heisebox">): <blockquote>
35
36
37next_page_link: //a[@class='next']
38next_page_link: //a[@title='vor']
39
40test_url: http://www.heise.de/open/artikel/Die-Neuerungen-von-Linux-3-15-2196231.html
41test_url: http://m.heise.de/open/artikel/Die-Neuerungen-von-Linux-3-15-2196231.html
42test_url: http://www.heise.de/newsticker/meldung/Ueberwachungstechnik-Die-globale-Handy-Standortueberwachung-2301494.html
diff --git a/inc/3rdparty/site_config/standard/hemmings.com.txt b/inc/3rdparty/site_config/standard/hemmings.com.txt
deleted file mode 100755
index a02b4a62..00000000
--- a/inc/3rdparty/site_config/standard/hemmings.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h2
2body: //div[@id='leftdetail']
3single_page_link: //a[contains(@href, 'printable=1')]
4strip: //a[contains(., 'Full Version')]
5
6prune: no
7
8test_url: http://www.hemmings.com/classifieds/dealer/ferrari/330gtc/1601235.html
9test_url: http://www.hemmings.com/rss/keyword.xml?adtype=carsforsale&make=ferrari \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/heroturko.me.txt b/inc/3rdparty/site_config/standard/heroturko.me.txt
deleted file mode 100755
index 07b6adf1..00000000
--- a/inc/3rdparty/site_config/standard/heroturko.me.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[contains(@class, 'title')]//h1
2body: //div[contains(@class, 'story')]
3
4prune: no
5
6test_url: http://www.heroturko.me/5223034-ds-catia-p3-v5-6r2014-gasp0-x86x64-multilanguage-english-docs.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hespress.com.txt b/inc/3rdparty/site_config/standard/hespress.com.txt
deleted file mode 100755
index 4ed0b8b5..00000000
--- a/inc/3rdparty/site_config/standard/hespress.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id='article_holder']//div[@class='image'] | //div[@id='article_body']
2
3prune: no
4tidy: no
5
6test_url: http://hespress.com/videos/73684.html
7test_url: http://hespress.com/permalink/73678.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hiamag.com.txt b/inc/3rdparty/site_config/standard/hiamag.com.txt
deleted file mode 100755
index 3c7ba5ac..00000000
--- a/inc/3rdparty/site_config/standard/hiamag.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: (//div[contains(@class, 'gallery-slides')]//img)[1] | //div[contains(@class, 'node_body_inner')]
2
3test_url: http://www.hiamag.com/rss.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/highscalability.com.txt b/inc/3rdparty/site_config/standard/highscalability.com.txt
deleted file mode 100755
index 5a808fa4..00000000
--- a/inc/3rdparty/site_config/standard/highscalability.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='journal-entry-text']
2
3test_url: http://highscalability.com/blog/2011/3/14/6-lessons-from-dropbox-one-million-files-saved-every-15-minu.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hiperpop.com.txt b/inc/3rdparty/site_config/standard/hiperpop.com.txt
deleted file mode 100755
index b5eb062e..00000000
--- a/inc/3rdparty/site_config/standard/hiperpop.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://hiperpop.com/2011/09/marc-anthony-celebra-su-cumpleanos-con-jennifer-lopez \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hiphopleeft.nl.txt b/inc/3rdparty/site_config/standard/hiphopleeft.nl.txt
deleted file mode 100755
index d869a866..00000000
--- a/inc/3rdparty/site_config/standard/hiphopleeft.nl.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class = 'pd']
2strip: //div[@id = 'overzicht-albumrecensies']
3strip: //div[@id = 'jc']
4test_url: http://hiphopleeft.nl/index.php?option=com_content&view=article&id=2767:mark-ronson-record-collection&catid=66:m&Itemid=142 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/historytoday.com.txt b/inc/3rdparty/site_config/standard/historytoday.com.txt
deleted file mode 100755
index 78fb60a6..00000000
--- a/inc/3rdparty/site_config/standard/historytoday.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body://div[@id = 'content']
2author://span[@class = 'authors']
3author://span[@class = 'ht-vtag'][1]
4date:substring-before(//meta[@name = 'dc.date']/@content,'T')
5strip://div[contains(@class, 'region-ubercontent')]
6strip://h1
7strip://div[@id = 'ht-author']
8strip://ul[@class = 'links inline']
9strip://div[@id = 'ht-tools']
10test_url: http://www.historytoday.com/carol-dyhouse/skin-deep-fall-fur \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hmercer.com.txt b/inc/3rdparty/site_config/standard/hmercer.com.txt
deleted file mode 100755
index 2da13a8e..00000000
--- a/inc/3rdparty/site_config/standard/hmercer.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //*[@class='ptitle']
2date: //span[@class='date']
3body: //div[@class='body']
4prune: no
5test_url: http://hmercer.com/2011/07/why-i-switched-to-jekyll/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hollywoodlife.com.txt b/inc/3rdparty/site_config/standard/hollywoodlife.com.txt
deleted file mode 100755
index 975ffa26..00000000
--- a/inc/3rdparty/site_config/standard/hollywoodlife.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1date: //meta[@name='sailthru.date']/@content
2body: //article[contains(@class, 'entry-content')]
3
4strip_image_src: subscribe.png
5
6strip_id_or_class: wpcom-iframe-form
7strip_id_or_class: gallery-thumbs
8strip_id_or_class: twitter
9strip_id_or_class: fb-link
10strip_id_or_class: pinterest
11
12strip: //div[@class='data']
13strip: //iframe[contains(@name, 'wpcom')]
14
15find_string: <a href="http://www.youtube.com/subscription_center?add_user_id=2rJLq19N0dGrxfib80M
16replace_string: </p></div></body></html><!--
17
18find_string: <h3>More
19replace_string: </div></body></html><!--
20
21test_url: http://hollywoodlife.com/2013/10/04/miriam-carey-dead-capitol-hill-car-chase-shooting-postpartum-depression/
22test_url: http://hollywoodlife.com/feed/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hometheaterreview.com.txt b/inc/3rdparty/site_config/standard/hometheaterreview.com.txt
deleted file mode 100755
index 8ed26ff5..00000000
--- a/inc/3rdparty/site_config/standard/hometheaterreview.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id='entry-body']
2strip_id_or_class: paginate
3strip: //p[contains(., 'Additional Resources')]
4test_url: http://hometheaterreview.com/dreamvision-starlight-3-three-chip-d-ila-projector-reviewed/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hosted.ap.org.txt b/inc/3rdparty/site_config/standard/hosted.ap.org.txt
deleted file mode 100755
index a660f23b..00000000
--- a/inc/3rdparty/site_config/standard/hosted.ap.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //table[@class='ap-smallphoto-table'] | //div[@class='body']//*[@class='entry-content']
2tidy: no
3strip_image_src: analytics.apnewsregistry
4
5test_url: http://hosted.ap.org/dynamic/stories/E/EU_TURKEY_KURDS?SITE=KSNEW&SECTION=HOME&TEMPLATE=DEFAULT&CTIME=2014-10-14-10-50-25
diff --git a/inc/3rdparty/site_config/standard/howtogeek.com.txt b/inc/3rdparty/site_config/standard/howtogeek.com.txt
deleted file mode 100755
index baa2ed4a..00000000
--- a/inc/3rdparty/site_config/standard/howtogeek.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[contains(@class, 'thecontent')]
2
3strip_image_src: loading.gif
4find_string:src="http://cdn.howtogeek.com/public/images/blank.gif"
5replace_string:-
6find_string:data-href=
7replace_string:src=
8
9strip_id_or_class: relatedside
10
11test_url: http://www.howtogeek.com/school/microsoft-excel-formulas-and-functions/lesson1/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hs.fi.txt b/inc/3rdparty/site_config/standard/hs.fi.txt
deleted file mode 100755
index 360dc725..00000000
--- a/inc/3rdparty/site_config/standard/hs.fi.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1prune: yes
2tidy: yes
3test_url: http://www.hs.fi/kotimaa/Teollisuushallin%20palo%20levitt%C3%A4%C3%A4%20vaarallista%20savua%20Tuusulassa/a1305571582405 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ht.ly.txt b/inc/3rdparty/site_config/standard/ht.ly.txt
deleted file mode 100755
index 46535088..00000000
--- a/inc/3rdparty/site_config/standard/ht.ly.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //iframe[@id='hootFrame']/@src
2
3test_url: http://ht.ly/bOiZV \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/huffingtonpost.com.txt b/inc/3rdparty/site_config/standard/huffingtonpost.com.txt
deleted file mode 100755
index d4618c14..00000000
--- a/inc/3rdparty/site_config/standard/huffingtonpost.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1title: //meta[@property="og:title"]/@content
2body: //div[img[starts-with(@id, 'img_caption')]] | //div[@class="big_photo"] | //div[contains(@class, 'entry_body_text')]
3date: //meta[@name="publish_date"]/@content
4author: //a[@rel="author"]
5author: //meta[@name="author"]/@content
6
7prune: no
8tidy: no
9
10strip: //footer
11strip_id_or_class: ps-slideshow
12strip_id_or_class: fs-slideshow
13strip: //p[contains(., 'Related on HuffPost:')]
14strip_id_or_class: contribute-story
15strip_id_or_class: promo_holder
16
17# end early
18replace_string(<div class="sbm-main): </body></html><div class="not-interested
19
20test_url: http://www.huffingtonpost.com/mitch-moxley/tracking-beijings-boom-th_b_1209828.html
21test_url: http://www.huffingtonpost.com/2012/09/11/president-obama-iphone-throwdown_n_1873826.html
diff --git a/inc/3rdparty/site_config/standard/humantransit.org.txt b/inc/3rdparty/site_config/standard/humantransit.org.txt
deleted file mode 100755
index 92d3c678..00000000
--- a/inc/3rdparty/site_config/standard/humantransit.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h3[@class="entry-header"]
2date: //h2[@class="date-header"]
3body: //div[contains(@class, 'entry')]
4
5test_url: http://www.humantransit.org/2012/06/can-network-primers-reduce-grief-about-network-design.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hurriyet.com.tr.txt b/inc/3rdparty/site_config/standard/hurriyet.com.tr.txt
deleted file mode 100755
index 68fd220a..00000000
--- a/inc/3rdparty/site_config/standard/hurriyet.com.tr.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class='HaberDetayTitleHold Title']/h1
2body: //div[@id='YazarDetayText']
3author: //div[@class='HaberDetayTitleHold Title']/h1
4prune: no
5
6test_url: http://www.hurriyet.com.tr/ekonomi/19490260.asp
7test_url: http://www.hurriyet.com.tr/yazarlar/22078439.asp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hvg.hu.txt b/inc/3rdparty/site_config/standard/hvg.hu.txt
deleted file mode 100755
index 05e7b5f1..00000000
--- a/inc/3rdparty/site_config/standard/hvg.hu.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='pg-content']//h1
2body: //div[@id='articleBody0']
3replace_string(</table>): </table><br /><br />
4
5single_page_link: //div[@class="up-header"]/a
6
7prune: no
8
9test_url: http://hvg.hu/w/20111125_sparta \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/hypebeast.com.txt b/inc/3rdparty/site_config/standard/hypebeast.com.txt
deleted file mode 100755
index 23e47545..00000000
--- a/inc/3rdparty/site_config/standard/hypebeast.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@id='content']//div[contains(@class, 'wp-image-') or contains(@class, 'entry')][1]
2author: //span[@class='author']/a
3
4strip_id_or_class: disqus
5strip_id_or_class: paginator
6strip_id_or_class: photo-number
7
8prune: no
9
10test_url: http://hypebeast.com/2012/11/stussy-2012-fall-winter-november-releases/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/icannabis.tumblr.com.txt b/inc/3rdparty/site_config/standard/icannabis.tumblr.com.txt
deleted file mode 100755
index 3bda753c..00000000
--- a/inc/3rdparty/site_config/standard/icannabis.tumblr.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1tidy:no
2prune:no
3
4body://div[contains(@id,'content')]
5
6strip_id_or_class:meta
7strip_id_or_class:notes
8strip_id_or_class:pagination
9test_url: http://icannabis.tumblr.com/post/28660592471/reviewmswireless3000 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/idealog.co.nz.txt b/inc/3rdparty/site_config/standard/idealog.co.nz.txt
deleted file mode 100755
index ca88f606..00000000
--- a/inc/3rdparty/site_config/standard/idealog.co.nz.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@class='content']
2
3strip: //p[@class='dateline']
4strip: //hr
5strip_id_or_class: share
6strip_id_or_class: comments
7strip_id_or_class: tags
8
9title: substring-before(//title,' ::')
10author: substring-before(//p[@class='dateline'],',')
11date: //p[@class='dateline']/time
12test_url: http://www.idealog.co.nz/blog/2012/12/geeks-plane-help-kiwis-take-san-francisco \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/idlewords.com.txt b/inc/3rdparty/site_config/standard/idlewords.com.txt
deleted file mode 100755
index f3b33796..00000000
--- a/inc/3rdparty/site_config/standard/idlewords.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //a[@class='post_title']
2body: //div[@class='entrybox']
3strip_id_or_class: post_title
4date: //div[@class='entrybox']/b[1]
5strip: //div[@class='entrybox']/b[1]
6author: string('Maciej Cegłowski')
7test_url: http://idlewords.com/2011/08/why_arabic_is_terrific.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/igeneration.fr.txt b/inc/3rdparty/site_config/standard/igeneration.fr.txt
deleted file mode 100755
index 45dd5f25..00000000
--- a/inc/3rdparty/site_config/standard/igeneration.fr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: substring-after(substring-after(//span[@class='submitted'],'- '),'- ')
2date: substring-before(//span[@class='submitted'], concat('- ',substring-after(substring-after(//span[@class='submitted'],'- '),'- ')))
3body: //div[@class='content clear-block zoneApple']
4
5test_url: http://www.igeneration.fr/iphone/l-iphone-et-l-ipad-chouchous-des-tpe-et-pme-55112 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ignoredbydinosaurs.com.txt b/inc/3rdparty/site_config/standard/ignoredbydinosaurs.com.txt
deleted file mode 100755
index 60635301..00000000
--- a/inc/3rdparty/site_config/standard/ignoredbydinosaurs.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title://h1[@class='page-title']
2body://*[@id='content']//div[contains(@class,'node-content')]
3
4author://*[@id='content']//div[contains(@class,'node-submitted')]/a
5
6date:substring-after(//div[contains(@class,'node-submitted')],' on ')
7test_url: http://ignoredbydinosaurs.com/2011/09/great-lie-lorem-ipsum \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ilounge.com.txt b/inc/3rdparty/site_config/standard/ilounge.com.txt
deleted file mode 100755
index 9880b51f..00000000
--- a/inc/3rdparty/site_config/standard/ilounge.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1# Get proper Title, Author and Date info
2title: substring-before(//title, '|')
3author: substring-after(//h4/a[@href='http://www.ilounge.com/index.php/ilounge/aboutus/'], 'By')
4date: //span[@class='instapaper_date']
5
6# For Reviews & First Looks, get the intro paragraph and put it in front of the main body.
7move_into(//div[@id='instapaper_para1']): //div[@id='instapaper_body']
8body: //div[@id='instapaper_para1']
9strip: //div[@class='reviewinfo']
10
11# We don't use footnotes, so why bother checking for them?
12footnotes: no
13test_url: http://www.ilounge.com/index.php/reviews/entry/luxa2-alum-x-for-iphone-4-4s/?utm_source=twitterfeed&utm_medium=twitter \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ilyabirman.ru.txt b/inc/3rdparty/site_config/standard/ilyabirman.ru.txt
deleted file mode 100755
index 51a7eb9c..00000000
--- a/inc/3rdparty/site_config/standard/ilyabirman.ru.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class='published visible e2-smart-title']//span
2author: //span[@id='e2-blog-title']
3date: //p[@class='super-h']
4body: //div[@class='text published visible']
5test_url: http://ilyabirman.ru/meanwhile/2011/11/15/2/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/inc.com.txt b/inc/3rdparty/site_config/standard/inc.com.txt
deleted file mode 100755
index 5410e64e..00000000
--- a/inc/3rdparty/site_config/standard/inc.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1author: substring-after(substring-before(//div[@id='byline'],'|'),'By')
2author: //div[@class='byline']/a
3date: //span[@class='pubdate']
4# print friendly page
5body: //div[@id='text']
6# regular page
7body: //div[@id= 'articlecontent']
8
9strip: //div[@id= 'articlecontent']/h1
10strip: //div[@id='articlecontent']/p[@class='deck']
11strip: //div[@id='articlecontent']/div[@class='byline']
12strip: //div[@id='articlespacer']
13strip: //div[@id='incsharebox']
14strip: //div[@id='articlesidebar']
15
16prune: no
17
18single_page_link: //a[contains(@href, 'Printer_Friendly.html')]
19strip: //a[contains(., 'Dig Deeper')]
20test_url: http://www.inc.com/guides/2010/11/seven-tips-for-lobbying-politicians.html
21test_url: http://www.inc.com/eric-schurenberg/startups-are-we-geting-irrationally-exuberant.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/independent.co.uk.txt b/inc/3rdparty/site_config/standard/independent.co.uk.txt
deleted file mode 100755
index af742209..00000000
--- a/inc/3rdparty/site_config/standard/independent.co.uk.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //meta[@property='og:title']/@content
2body: //div[contains(@class, 'articleContent')]
3date: //meta[@property='article:published_time']/@content
4author: //div[@id='main']//div[@class='byline']//span[@class='authorName']
5
6strip_id_or_class: RelatedArtTag
7
8tidy: no
9test_url: http://www.independent.co.uk/news/world/middle-east/syria-could-face-human-rights-probe-2274326.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/index.php b/inc/3rdparty/site_config/standard/index.php
deleted file mode 100644
index a1b767fd..00000000
--- a/inc/3rdparty/site_config/standard/index.php
+++ /dev/null
@@ -1,3 +0,0 @@
1<?php
2// this is here to prevent directory listing over the web
3?> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/indiatimes.com.txt b/inc/3rdparty/site_config/standard/indiatimes.com.txt
deleted file mode 100755
index 8112105f..00000000
--- a/inc/3rdparty/site_config/standard/indiatimes.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //figure[@class='mainVideo']
2strip: //figcaption
3
4prune: no
5
6test_url: http://www.indiatimes.com/bollywood/kareena-insecure-about-saif-working-with-bipasha-23386.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/inessential.com.txt b/inc/3rdparty/site_config/standard/inessential.com.txt
deleted file mode 100755
index 52252455..00000000
--- a/inc/3rdparty/site_config/standard/inessential.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class='weblogPost']/h3[1]
2author: ("Brent Simmons")
3date: //span[@class="weblogPostDisplayDate"]
4body: //div[@class='weblogPostBody']
5test_url: http://inessential.com/2011/10/25/why_just_store_the_app_data_on_dropbo \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/info.abril.com.br.txt b/inc/3rdparty/site_config/standard/info.abril.com.br.txt
deleted file mode 100755
index dee69f80..00000000
--- a/inc/3rdparty/site_config/standard/info.abril.com.br.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title://h1
2body://div[@id='texto_link']
3
4test_url: http://info.abril.com.br/noticias/internet/filme-do-youtube-vai-estrear-nos-cinemas-22042011-6.shl \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/infoq.com.txt b/inc/3rdparty/site_config/standard/infoq.com.txt
deleted file mode 100755
index f4a328a6..00000000
--- a/inc/3rdparty/site_config/standard/infoq.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1body: //div[@id="intTranscript"]
2body: //div[@class="box-content"]
3title: //div[@class="box-content"]//h1[1]
4author: //p[@class="info"]/strong
5date: substring-before(substring-after(//p[@class="info"], "on"), "Length")
6strip: //div[@class="box-content"]//h1[1]
7strip: //div[@class="box-content"]//p[@class="info"]
8strip_id_or_class: vendor-content-box
9strip_id_or_class: tags2
10strip_id_or_class: instructions
11strip_id_or_class: comments
12strip_id_or_class: forum-list-tree
13strip: //div[@class="addthis_toolbox addthis_default_style"]
14test_url: http://www.infoq.com/interviews/oleg-zhurakousky-javaone2011-interview \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/informador.com.mx.txt b/inc/3rdparty/site_config/standard/informador.com.mx.txt
deleted file mode 100755
index 77987493..00000000
--- a/inc/3rdparty/site_config/standard/informador.com.mx.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@class='tituloInt']
2body: //div[@class='notaPortada']
3strip: //img[@id='imgHorizontalInt imgDetalleImg imagenNota']
4date: //span[@class='publi']
5author: //span[@class='autor']
6tidy: no
7prune: no
8
9test_url: http://www.informador.com.mx/tecnologia/2011/337606/6/iran-desarrolla-antivirus-tras-afectaciones-por-duqu.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/information.dk.txt b/inc/3rdparty/site_config/standard/information.dk.txt
deleted file mode 100755
index 3ade754d..00000000
--- a/inc/3rdparty/site_config/standard/information.dk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //meta[@property='og:title']/@content
2author: //*[@property='dc:creator']
3date: //*[@property='dc:date']/@content
4body: //div[@id='page-content']//div[contains(@class, 'article-body')]
5
6tidy: no
7test_url: http://www.information.dk/282307 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/informationarchitects.net.txt b/inc/3rdparty/site_config/standard/informationarchitects.net.txt
deleted file mode 100755
index 1330a040..00000000
--- a/inc/3rdparty/site_config/standard/informationarchitects.net.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title://h1[@class="post_title"]
2body://article[@class="post"]
3date://h1[@class="section_separator"]
4author://span[@class="post_author"]
5strip://nav[@class="arrow_nav"]
6strip://section[@id="contact"]
7strip_id_or_class:post_title
8strip_id_or_class:post_author
9strip_id_or_class:section_separator
10test_url: http://informationarchitects.net/blog/nzz-relaunch-a-quick-review/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/informationclearinghouse.info.txt b/inc/3rdparty/site_config/standard/informationclearinghouse.info.txt
deleted file mode 100755
index 60b798e6..00000000
--- a/inc/3rdparty/site_config/standard/informationclearinghouse.info.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //head/title
2body: //table[@id='table3']//div[@class='postContent']
3prune: no
4tidy: no
5
6test_url: http://www.informationclearinghouse.info/article28238.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/informit.com.txt b/inc/3rdparty/site_config/standard/informit.com.txt
deleted file mode 100755
index 24bf6242..00000000
--- a/inc/3rdparty/site_config/standard/informit.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@id='content']/h1
2body: //div[@id="content"]
3strip: //img[contains(@src, 'informit_printer.png')]
4single_page_link: //div[contains(@class, 'articleTools')]//a[contains(@href, '/printerfriendly.')]
5prune: no
6
7test_url: http://www.informit.com/articles/article.aspx?p=1729268 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/infoworld.com.txt b/inc/3rdparty/site_config/standard/infoworld.com.txt
deleted file mode 100755
index d335bc4a..00000000
--- a/inc/3rdparty/site_config/standard/infoworld.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@id='main_text']
2title: //div[@id='main_text']/h1
3strip: //div[@id='main_text']/h1
4strip: //div[@id='main_text']/h2
5strip_id_or_class: tools
6strip_id_or_class: articleTools
7strip_id_or_class: pagination
8strip_id_or_class: byline
9strip_id_or_class: tweet
10date: //div[@class='date']
11strip: //div[@class='date']
12test_url: http://www.infoworld.com/d/the-industry-standard/it-jobs-the-rise-both-offshore-and-in-us-187689 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/infzm.com.txt b/inc/3rdparty/site_config/standard/infzm.com.txt
deleted file mode 100755
index 489d5aff..00000000
--- a/inc/3rdparty/site_config/standard/infzm.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1# This filter is tested on:
2# http://www.infzm.com/content/71068
3# http://www.infzm.com/content/41577
4
5author://em[contains(@class, 'toAuthor')]
6date:substring(//em[contains(@class, 'pubTime')],1)
7body://section[contains(@id, 'articleContent')]
8title://h1[contains(@class ,'articleHeadline clearfix')]
9test_url: http://www.infzm.com/content/41577 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/inhabitat.com.txt b/inc/3rdparty/site_config/standard/inhabitat.com.txt
deleted file mode 100755
index c63f53a6..00000000
--- a/inc/3rdparty/site_config/standard/inhabitat.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1# set body
2body: //div[@class='post-listing']
3
4# remove clutter
5strip: //a/big
6strip: //a/em
7strip: //p/em
8test_url: http://inhabitat.com/2010/11/18/sliding-walls-transform-this-tokyo-house-into-an-office/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/instagr.am.txt b/inc/3rdparty/site_config/standard/instagr.am.txt
deleted file mode 100755
index 522caebc..00000000
--- a/inc/3rdparty/site_config/standard/instagr.am.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='caption']
2author: //p[@class='username']
3
4strip: //div[@class='contents']/h3
5strip: //div[@class='location']
6test_url: http://instagr.am/p/G-s_aciyDJ/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/interest.co.nz.txt b/inc/3rdparty/site_config/standard/interest.co.nz.txt
deleted file mode 100755
index 28c3310a..00000000
--- a/inc/3rdparty/site_config/standard/interest.co.nz.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@id='content']
2test_url: http://www.interest.co.nz/opinion/opinion-when-our-fear-corporate-way-and-our-love-small-business-man-dangerous-thing \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/iolanguage.com.txt b/inc/3rdparty/site_config/standard/iolanguage.com.txt
deleted file mode 100755
index 231875ad..00000000
--- a/inc/3rdparty/site_config/standard/iolanguage.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //center/table
2test_url: http://www.iolanguage.com/scm/io/docs/IoGuide.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ipadclub.nl.txt b/inc/3rdparty/site_config/standard/ipadclub.nl.txt
deleted file mode 100755
index afe058df..00000000
--- a/inc/3rdparty/site_config/standard/ipadclub.nl.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id = 'post']
2strip: //div[@class = 'postinfo']
3strip: //div[@id = 'postmetanew']
4strip: //div[@class = 'paginator']
5strip: //div[@class = 'col-2']
6strip: //div[@id = 'adfactor-label']
7test_url: http://www.ipadclub.nl/15808/text-writer-ipad-tekstverwerker-met-functieknoppen/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ipadplanet.nl.txt b/inc/3rdparty/site_config/standard/ipadplanet.nl.txt
deleted file mode 100755
index dedb5572..00000000
--- a/inc/3rdparty/site_config/standard/ipadplanet.nl.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id = 'post']
2strip: //div[@class = 'postinfo']
3strip: //div[@id = 'postmetanew']
4strip: //div[@class = 'paginator']
5strip: //div[@class = 'col-2']
6strip: //div[@id = 'adfactor-label']
7test_url: http://www.ipadplanet.nl/11723/steve-jobs-bevestigt-verdwijnen-fysieke-rotatieschakelaar-in-ios-4-2/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/iphoneclub.nl.txt b/inc/3rdparty/site_config/standard/iphoneclub.nl.txt
deleted file mode 100755
index 850a24e9..00000000
--- a/inc/3rdparty/site_config/standard/iphoneclub.nl.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id = 'post']
2strip: //div[@class = 'postinfo']
3strip: //div[@id = 'postmetanew']
4strip: //div[@class = 'paginator']
5strip: //div[@class = 'col-2']
6strip: //div[@id = 'adfactor-label']
7test_url: http://www.iphoneclub.nl/105808/t-mobile-mobiel-internet-wordt-duurder-maar-blijft-onbeperkt/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/iphonehacks.com.txt b/inc/3rdparty/site_config/standard/iphonehacks.com.txt
deleted file mode 100755
index e8ccea06..00000000
--- a/inc/3rdparty/site_config/standard/iphonehacks.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //meta[@name='og:title']/@content
2body: //small[@class='postmetadata'] | //div[contains(@class, 'entry-content')]
3
4strip: //span[@vanilla-identifier]
5
6prune: no
7tidy: no
8
9test_url: http://www.iphonehacks.com/2012/07/app-review-process-behind-the-scenes.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/iplaysoft.com.txt b/inc/3rdparty/site_config/standard/iplaysoft.com.txt
deleted file mode 100755
index 4a944768..00000000
--- a/inc/3rdparty/site_config/standard/iplaysoft.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@id='content']//div[@class='entry-banner' or @class='entry-content']
2test_url: http://www.iplaysoft.com/webbrowserpassview.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/isource.com.txt b/inc/3rdparty/site_config/standard/isource.com.txt
deleted file mode 100755
index 215fdf87..00000000
--- a/inc/3rdparty/site_config/standard/isource.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1# Remove social buttons
2strip: //div[@id='temp_Content_Right']
3
4# Remove duplicate article title
5strip: //*[(@class='storytitle')]
6test_url: http://isource.com/2010/10/24/swearch-a-cool-iphone-web-app/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/itavisen.no.txt b/inc/3rdparty/site_config/standard/itavisen.no.txt
deleted file mode 100755
index 3ba484a7..00000000
--- a/inc/3rdparty/site_config/standard/itavisen.no.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1author: //p[@class = 'writer']
2
3date: //p[@class = 'published-time']
4
5body: //div[@class = 'text main']
6test_url: http://www.itavisen.no/899786/old-republic-blir-gratis \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/itmedia.co.jp.txt b/inc/3rdparty/site_config/standard/itmedia.co.jp.txt
deleted file mode 100755
index 97f00ce8..00000000
--- a/inc/3rdparty/site_config/standard/itmedia.co.jp.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[@id='cmsBody']
2
3next_page_link: //span[@id='next']/a
4
5strip_id_or_class: cmsCopyright
6strip_id_or_class: masterSocialbuttonBtm
7
8test_url: http://www.itmedia.co.jp/enterprise/articles/0912/05/news002.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/itstactical.com.txt b/inc/3rdparty/site_config/standard/itstactical.com.txt
deleted file mode 100755
index b8cb461c..00000000
--- a/inc/3rdparty/site_config/standard/itstactical.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1[@class="entry-title"]
2body: //div[@class='format_text entry-content']
3author: //span[@class="author vcard"]/a
4date: //abbr[@class="published"]
5
6strip_id_or_class: related-posts
7strip_id_or_class: membershipbox
8strip_id_or_class: share_this_compact_bt
9
10
11footnotes: no
12test_url: http://www.itstactical.com/warcom/knives/exclusive-triple-aught-design-production-dauntless-knife-video-walkthrough/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/itunes.apple.com.txt b/inc/3rdparty/site_config/standard/itunes.apple.com.txt
deleted file mode 100755
index ffd95561..00000000
--- a/inc/3rdparty/site_config/standard/itunes.apple.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1body: //div[@id='left-stack' or contains(@class, 'center-stack')]
2
3find_string: class="artwork" src="
4replace_string: class="artwork" src-disabled="
5find_string: src-swap-high-dpi="
6replace_string: src="
7
8strip_id_or_class: rating
9strip_id_or_class: listeners-also-bought
10
11prune: no
12
13test_url: https://itunes.apple.com/us/rss/topaudiobooks/limit=10/xml
14test_url: https://itunes.apple.com/us/audiobook/the-giver-unabridged/id356345850 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/itwire.com.txt b/inc/3rdparty/site_config/standard/itwire.com.txt
deleted file mode 100755
index 72b41065..00000000
--- a/inc/3rdparty/site_config/standard/itwire.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: //a[@rel="author"]
2date: //li[@class="itemDateCreated"]
3strip: //div[contains(@class, 'legend-rounded')]
4
5test_url: http://www.itwire.com/it-industry-news/market/59661-ibm-looks-to-high-value-solutions-to-meet-changing-demands
diff --git a/inc/3rdparty/site_config/standard/itworld.com.txt b/inc/3rdparty/site_config/standard/itworld.com.txt
deleted file mode 100755
index 1ee0ee58..00000000
--- a/inc/3rdparty/site_config/standard/itworld.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //*[@id="article-title"]
2author: //*[@id="article-info"]/strong
3date: //*[@class="article-dateline"]/strong
4body: //*[@id="article-content"]
5test_url: http://www.itworld.com/open-source/140916/android-sued-microsoft-not-linux \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/izismile.com.txt b/inc/3rdparty/site_config/standard/izismile.com.txt
deleted file mode 100755
index b0114d35..00000000
--- a/inc/3rdparty/site_config/standard/izismile.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[starts-with(@id, 'news-id-')]
2prune: no
3
4test_url: http://izismile.com/2011/06/13/uncanny_factoid_fashion_or_creepy_2_pics.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/jalopnik.com.txt b/inc/3rdparty/site_config/standard/jalopnik.com.txt
deleted file mode 100755
index fc2eef8e..00000000
--- a/inc/3rdparty/site_config/standard/jalopnik.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1author: //span[@class='plus-icon']
2test_url: http://jalopnik.com/5892124/1955-porsche-550-spyder-sells-for-record-3685-million/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/jandan.net.txt b/inc/3rdparty/site_config/standard/jandan.net.txt
deleted file mode 100755
index 343fd6fb..00000000
--- a/inc/3rdparty/site_config/standard/jandan.net.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='content']//div[@class = 'post f']
2strip_id_or_class: comment-big
3strip_id_or_class: avatar
4strip: //div[@class='time_s']
5
6test_url: http://jandan.net/2011/04/03/iphone-5-sony.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/jetzt.sueddeutsche.de.txt b/inc/3rdparty/site_config/standard/jetzt.sueddeutsche.de.txt
deleted file mode 100755
index 00e4cf63..00000000
--- a/inc/3rdparty/site_config/standard/jetzt.sueddeutsche.de.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1title: //h1
2author: //p[contains(@class, 'author')]/a
3date: //p[contains(@class, 'time')]
4body: //div[@class='content']/div[contains(@class, 'text')]
5
6# prevent "no text" errors on multi-page articles
7tidy: no
8
9# we use a custom next-link detector instead of the print view because
10# it's pretty hard to strip out the unwanted parts in the print view
11autodetect_next_page: no
12next_page_link: //div[contains(@class, 'text')]/div/div[contains(@class, 'paging')]/a[@class='more ']
13
14strip: //h1
15
16strip_id_or_class: meta
17strip_id_or_class: author
18strip_id_or_class: paging
19
20# prevent "Report an Error" from being recognized as footnote
21footnotes: no
22test_url: http://jetzt.sueddeutsche.de/texte/anzeigen/544308/Alles-flicken \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/jjahnke.net.txt b/inc/3rdparty/site_config/standard/jjahnke.net.txt
deleted file mode 100755
index d45c8899..00000000
--- a/inc/3rdparty/site_config/standard/jjahnke.net.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class='entry']
2prune: no
3
4test_url: http://www.jjahnke.net/rundbr87.html#2514 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/jobbank.gc.ca.txt b/inc/3rdparty/site_config/standard/jobbank.gc.ca.txt
deleted file mode 100755
index 1dbe2072..00000000
--- a/inc/3rdparty/site_config/standard/jobbank.gc.ca.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@id='formatCont_en']
2
3prune: no
4
5test_url: http://www.jobbank.gc.ca/detail-eng.aspx?Source=JobPosting&OrderNum=6397922 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/joelonsoftware.com.txt b/inc/3rdparty/site_config/standard/joelonsoftware.com.txt
deleted file mode 100755
index 241a361f..00000000
--- a/inc/3rdparty/site_config/standard/joelonsoftware.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1# Works with old posts too, such as http://www.joelonsoftware.com/articles/fog0000000332.html
2
3author: substring-after(//div[@class="author"], 'by ')
4date: //div[@class="date"]
5
6## Clean stuff at top ##
7
8strip: //h1[1]
9strip: //h2[1]
10strip: //div[@class="date"]
11strip: //div[@class="author"]
12
13## Clean stuff at bottom ##
14
15strip: //blockquote[@class="textmessage"]
16strip: //div[@style="width:500px"]/p[last()]
17strip: //div[@style="width:500px"]/p[last()-1]
18strip: //div[@style="width:500px"]/h4[last()]
19strip: //div[@style="width:500px"]/h4[last()-1]
20strip: //div[@style="width:500px"]/div[last()]
21test_url: http://www.joelonsoftware.com/items/2011/09/15.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/jouire.com.txt b/inc/3rdparty/site_config/standard/jouire.com.txt
deleted file mode 100755
index 3cf60672..00000000
--- a/inc/3rdparty/site_config/standard/jouire.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1author: //h1
2date: //p[contains(@class,'date')]
3test_url: http://jouire.com/2011/01/exquisite-whispers/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/joystiq.com.txt b/inc/3rdparty/site_config/standard/joystiq.com.txt
deleted file mode 100755
index 7a8e56f8..00000000
--- a/inc/3rdparty/site_config/standard/joystiq.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1author: //a[@class="byline-author"]
2title: //h1[@class="headline"]
3strip: //div[@id="info-card"]
4strip: //div[@id="breaking-news"]
5strip: //div[@class="rmod list-post-mod"]
6strip: //div[@id="footer"]
7strip: //div[@id="GH_strip"]
8test_url: http://www.joystiq.com/2012/06/20/magic-the-gathering-duels-of-the-planeswalkers-2013-review/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/juedische-allgemeine.de.txt b/inc/3rdparty/site_config/standard/juedische-allgemeine.de.txt
deleted file mode 100755
index ff5a0244..00000000
--- a/inc/3rdparty/site_config/standard/juedische-allgemeine.de.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1body: //div[@id='article_container']
2author: //h4//a[@class='author']
3title: //h1
4
5replace_string(lang="en"): lang="de"
6replace_string(/>1</a>):/></a>
7
8strip_id_or_class: share_toolbox
9strip_id_or_class: article_header
10strip_id_or_class: phototext
11
12strip_image_src: icon_author.gif
13
14strip: //img[@src='']
15strip: //h4[@id='author']
16
17prune: no
18
19test_url: http://www.juedische-allgemeine.de/article/view/id/13366 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/juppy.org.txt b/inc/3rdparty/site_config/standard/juppy.org.txt
deleted file mode 100755
index fdf7cdc9..00000000
--- a/inc/3rdparty/site_config/standard/juppy.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1convert_double_br_tags: yes
2
3title: //div[@id="storycredits"]/p/span[@class="title"]
4author: //div[@id="storycredits"]/p/br[1]/following-sibling::text()
5
6strip: //div[@id="storycredits"]
7
8test_url: http://www.juppy.org/santa/stories.php?ForAuthorID=35&Year=2005 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kachestvo.ru.txt b/inc/3rdparty/site_config/standard/kachestvo.ru.txt
deleted file mode 100755
index 535693c4..00000000
--- a/inc/3rdparty/site_config/standard/kachestvo.ru.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[contains(@class, 'inner_content')]
2
3test_url: http://kachestvo.ru/promtovar/odezhda/denim.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kachiblog.com.txt b/inc/3rdparty/site_config/standard/kachiblog.com.txt
deleted file mode 100755
index 57ab0de1..00000000
--- a/inc/3rdparty/site_config/standard/kachiblog.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h3[contains(@class, 'entry-title')]
2date: //abbr[@itemprop='datePublished']/@title
3body: //div[@itemprop='articleBody']
4tidy: no
5
6test_url: http://www.kachiblog.com/2013/05/samsung-galaxy-s4-vs-samsung-galaxy.html
7test_url: http://www.kachiblog.com/feed
diff --git a/inc/3rdparty/site_config/standard/kathimerini.gr.txt b/inc/3rdparty/site_config/standard/kathimerini.gr.txt
deleted file mode 100755
index 2c7c518c..00000000
--- a/inc/3rdparty/site_config/standard/kathimerini.gr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //td[contains(@class, 'articleTitlos')]
2body: //td[contains(@class, 'eelantext')]
3
4test_url: http://www.kathimerini.gr/4dcgi/_w_articles_kathremote_1_03/12/2013_530490 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kenrockwell.com.txt b/inc/3rdparty/site_config/standard/kenrockwell.com.txt
deleted file mode 100755
index 90c64cbf..00000000
--- a/inc/3rdparty/site_config/standard/kenrockwell.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# Ads
2strip: //table[@align="right"][@width="120"]
3
4# Affiliate link paragraphs
5strip: //a[.="Adorama"]/parent::p[contains(., "goodies")]
6strip: //a[.="Adorama"]/parent::p[contains(., "This free website's biggest source of")]
7test_url: http://www.kenrockwell.com/tech/composition.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kicker.de.txt b/inc/3rdparty/site_config/standard/kicker.de.txt
deleted file mode 100755
index db4f63c4..00000000
--- a/inc/3rdparty/site_config/standard/kicker.de.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1# set body
2body: //div[@id='ovArtikel']
3
4# set title
5title: //div[@id='ovArtikel']/h1
6# strip main title and leave sub title
7strip: //div[@id='ovArtikel']/h1
8
9date: //div[@class='publicdate']
10
11#remove captions
12strip: //*/div[@class='bu']
13strip: //*/div[@class='credit']
14
15#remove adds
16strip: //*/div[@class='ad-head']
17strip: //*/div[@class='linksebay']
18
19# remove video content
20strip: //*/div[@class='ovVideo']
21test_url: http://www.kicker.de/news/fussball/frauen/wmfr/frauen-weltmeisterschaft/2011/3/1123662/spielbericht_frankreich-frauen_deutschland-frauen.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kickstarter.com.txt b/inc/3rdparty/site_config/standard/kickstarter.com.txt
deleted file mode 100755
index 7b3daa58..00000000
--- a/inc/3rdparty/site_config/standard/kickstarter.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@id='name']
2body: //*[@id='leftcol']
3
4strip_id_or_class: 'share-box'
5strip_id_or_class: 'project-faqs'
6strip_id_or_class: 'report-issue-wrap'
7test_url: http://www.kickstarter.com/projects/hop/elevation-dock-the-best-dock-for-iphone \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kingarthurflour.com.txt b/inc/3rdparty/site_config/standard/kingarthurflour.com.txt
deleted file mode 100755
index b27539f5..00000000
--- a/inc/3rdparty/site_config/standard/kingarthurflour.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //div[@class='post']/h2
2body: //div[@class='entry']
3strip: //p[contains(.,'Tags:')]
4test_url: http://www.kingarthurflour.com/blog/2011/01/28/a-big-sandwich-for-the-big-game/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kotaku.com.txt b/inc/3rdparty/site_config/standard/kotaku.com.txt
deleted file mode 100755
index be439d75..00000000
--- a/inc/3rdparty/site_config/standard/kotaku.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1author: //span[@class="plus-icon"]
2test_url: http://kotaku.com/5920211/save-the-furries-on-your-wii-in-this-weeks-nintendo-download \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kottke.org.txt b/inc/3rdparty/site_config/standard/kottke.org.txt
deleted file mode 100755
index 582f251c..00000000
--- a/inc/3rdparty/site_config/standard/kottke.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2
2author: //*[@id='main']/div/a[1]
3date: substring-before(substring-after(//div[@class='meta'],'&bull;'),'&bull;')
4body: //div[@id='main']
5strip: //div[@class='meta']
6test_url: http://kottke.org/08/02/king-of-kong-a-fistful-of-quarters \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kumailplus.com.txt b/inc/3rdparty/site_config/standard/kumailplus.com.txt
deleted file mode 100755
index 2f604de0..00000000
--- a/inc/3rdparty/site_config/standard/kumailplus.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class = "entry-full"]
2
3test_url: http://www.kumailplus.com/2011/12/02/24308 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kumb.com.txt b/inc/3rdparty/site_config/standard/kumb.com.txt
deleted file mode 100755
index fe350622..00000000
--- a/inc/3rdparty/site_config/standard/kumb.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //div[@id='centrediv']/h1
2
3author: substring-after(//div[@id='centrediv']/h3,'By: ')
4
5date: substring-after(substring-before(//div[@id='centrediv']/h3,'By: '),'Filed: ')
6
7body: //div[@class='KonaBody']
8
9convert_double_br_tags: yes
10test_url: http://www.kumb.com/story.php?id=126084 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/kwerfeldein.de.txt b/inc/3rdparty/site_config/standard/kwerfeldein.de.txt
deleted file mode 100755
index cf4d3b8c..00000000
--- a/inc/3rdparty/site_config/standard/kwerfeldein.de.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1date: //span[@class='datum']
2title: //div[@class='artikel']/h2
3body: //div[@class='entry']
4strip: //p[@class='tags']
5author: substring-after(//div[@class='authorinfo']/em,'Dies ist ein Artikel von ')
6strip: //div[@class='authorinfo']
7strip: //div[@class='authorpic']
8
9test_url: http://kwerfeldein.de/index.php/2011/10/17/doppelbelichtungen-mit-konzept/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/landetsfria.se.txt b/inc/3rdparty/site_config/standard/landetsfria.se.txt
deleted file mode 100755
index e5317a5a..00000000
--- a/inc/3rdparty/site_config/standard/landetsfria.se.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.landetsfria.se/artikel/112070 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/laphamsquarterly.org.txt b/inc/3rdparty/site_config/standard/laphamsquarterly.org.txt
deleted file mode 100755
index d25999d0..00000000
--- a/inc/3rdparty/site_config/standard/laphamsquarterly.org.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //h1[@class='headline']
2body: //div[@class='article']
3strip: //div[@class='article']//h3[contains(@class, 'section')]
4strip: //div[@class='article']//ul[contains(@class, 'article-actions')]
5strip: //div[@id='syndication-upper']
6strip: //a[@id='syndication']
7strip: //dl[@id='article-tags']
8strip: //div[@id='article-like']
9prune: no
10
11single_page_link: //li[@class='single-page']/a
12
13test_url: http://www.laphamsquarterly.org/essays/balanced-diets.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/laprensagrafica.com.txt b/inc/3rdparty/site_config/standard/laprensagrafica.com.txt
deleted file mode 100755
index 82374c0b..00000000
--- a/inc/3rdparty/site_config/standard/laprensagrafica.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1tidy: no
2
3test_url: http://www.laprensagrafica.com/opinion/editorial/229252-reflexiones-sobre-la-educacion-que-necesitamos.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/laquadrature.net.txt b/inc/3rdparty/site_config/standard/laquadrature.net.txt
deleted file mode 100755
index 746bfca7..00000000
--- a/inc/3rdparty/site_config/standard/laquadrature.net.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@id='content-content']//div[@class='content']
2title: //h1[@class='title']
3date: substring-after(//*[@class='submitted'],'Submitted on')
4tidy: no
5strip: //div[@class='terms terms-inline']
6strip: //div[@class='more']
7strip: //div[@class='share-links']
8strip: //table[@id='attachments']
9
10test_url: http://www.laquadrature.net/en/finalization-of-eu-parliaments-weak-net-neutrality-resolution \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lareviewofbooks.org.txt b/inc/3rdparty/site_config/standard/lareviewofbooks.org.txt
deleted file mode 100755
index 25e36543..00000000
--- a/inc/3rdparty/site_config/standard/lareviewofbooks.org.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1#metadata
2title: substring-before(//title,' |')
3author: //a[contains(@class,'person') and starts-with(@href, '/contributor')]
4
5#text
6body: //div[contains(@class, 'article_body')]
7
8#clean up
9strip_id_or_class: recommended_section
10
11test_url: http://lareviewofbooks.org/review/american-politics-redeembale-robert-gates-hillary-clinton-two-memoirs-washington-dc
12test_url: http://lareviewofbooks.org/interview/souvenirs-future
diff --git a/inc/3rdparty/site_config/standard/latimes.com.txt b/inc/3rdparty/site_config/standard/latimes.com.txt
deleted file mode 100755
index b2db37bf..00000000
--- a/inc/3rdparty/site_config/standard/latimes.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1strip: //div[@id="tugs_story_display"]
2strip: //div[@id="search_overlay"]
3strip: //div[@id="adv_search"]
4body: //div[@class='story']
5tidy: no
6convert_double_br_tags: yes
7single_page_link: //a[contains(@href, ',print.')]
8strip: //p[starts-with(., 'latimes.com')]
9strip: //h1[starts-with(., 'latimes.com')]
10strip_id_or_class: cubead
11test_url: http://www.latimes.com/news/opinion/commentary/la-oe-gartonash-wilders-20110512,0,2876761.story \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/laughingsquid.com.txt b/inc/3rdparty/site_config/standard/laughingsquid.com.txt
deleted file mode 100755
index ab2f834f..00000000
--- a/inc/3rdparty/site_config/standard/laughingsquid.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h1[@class='entry-title']
2body: //div[@class='entry-content']
3test_url: http://laughingsquid.com/mysterious-tiny-doors-appearing-around-san-francisco/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/leancrew.com.txt b/inc/3rdparty/site_config/standard/leancrew.com.txt
deleted file mode 100755
index e78cf7e6..00000000
--- a/inc/3rdparty/site_config/standard/leancrew.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id="content"]/h1[1]
2date: substring-before(//p[@class="postdate"], ' at ')
3author: ("Dr. Drang")
4
5strip: //div[@id="content"]/h1[1]
6strip: //p[@class="postdate"]
7strip: //h2[@id="respond"]
8strip: //blockquote[@class="bbpTweet"]/p/span/a/img
9test_url: http://www.leancrew.com/all-this/2011/12/more-shell-less-egg/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lefigaro.fr.txt b/inc/3rdparty/site_config/standard/lefigaro.fr.txt
deleted file mode 100755
index e720e377..00000000
--- a/inc/3rdparty/site_config/standard/lefigaro.fr.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //meta[@name='title']/@content
2author: //span[@class='sign']//a[@class='journaliste']
3author: //meta[@name='author']/@content
4body: //*[@id='article']/div[@class='photo'] | //*[@id='article']/h2 | //*[@id='article']/div[@class='texte']
5date: //time[@pubdate]/@datetime
6prune: no
7test_url: http://www.lefigaro.fr/environnement/2011/11/10/01029-20111110ARTFIG00801-la-chine-confrontee-a-un-immense-defi-ecologique.php
8test_url: http://www.lefigaro.fr/conjoncture/2012/11/20/20002-20121120ARTFIG00609-l-usager-devrait-payer-plus-pour-financer-les-transports.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lemonde.fr.txt b/inc/3rdparty/site_config/standard/lemonde.fr.txt
deleted file mode 100755
index 097999b6..00000000
--- a/inc/3rdparty/site_config/standard/lemonde.fr.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //h1
2
3# We can have multiple authors
4author: //a[@class='auteur']
5
6# Last edition date (if any)
7date: //time[@itemprop='dateModified']/@datetime
8# Publication date
9date: //time[@itemprop='datePublished']/@datetime
10
11
12body: //div[@id='articleBody']
13#Shoot the insane "conjugaison.lemonde.fr" links :
14#strip: //a[contains(@class, 'conjug')]
15
16prune: no
17
18test_url: http://www.lemonde.fr/economie/article/2011/07/05/moody-s-abaisse-la-note-du-portugal-de-quatre-crans_1545237_3234.html
diff --git a/inc/3rdparty/site_config/standard/lesnumeriques.com.txt b/inc/3rdparty/site_config/standard/lesnumeriques.com.txt
deleted file mode 100755
index 51e025ae..00000000
--- a/inc/3rdparty/site_config/standard/lesnumeriques.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h1/following::span[@class='fn']
2# Author: should stop parsing until <br> reached, but I don't know how to do this.
3author: //following::div[@class='PDate2']
4date: //following::div[@class='PDate2']/strong
5
6body: //div[@class='ArTexte']
7body: //div[@id='prod_txt_b']
8body: //div[@class='ArPhotoP']
9test_url: http://www.lesnumeriques.com/disque-dur-multimedia/popcorn-hour-300-p12231/test.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/letemps.ch.txt b/inc/3rdparty/site_config/standard/letemps.ch.txt
deleted file mode 100755
index 49b019f9..00000000
--- a/inc/3rdparty/site_config/standard/letemps.ch.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h2
2strip_image_src: logo.gif
3test_url: http://www.letemps.ch/Facet/print/Uuid/7c9f912c-07c9-11e0-9b50-4d96c9eca37f \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/libcom.org.txt b/inc/3rdparty/site_config/standard/libcom.org.txt
deleted file mode 100755
index d1404d10..00000000
--- a/inc/3rdparty/site_config/standard/libcom.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1date: //span[contains(@class, 'page-date')]
2body: //div[@id='node-page']
3strip_id_or_class: book-navigation
4prune: no
5
6test_url: http://libcom.org/library/what-was-the-ussr-aufheben-1
7test_url: http://libcom.org/library-latest/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lifeandculture.fr.txt b/inc/3rdparty/site_config/standard/lifeandculture.fr.txt
deleted file mode 100755
index 0e1dceb1..00000000
--- a/inc/3rdparty/site_config/standard/lifeandculture.fr.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h2[@class="entry-title"]
2body: //div[@class="entry-content"]
3test_url: http://www.lifeandculture.fr/digital/facebook-and-the-epiphanator-an-end-to-endings/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lifehacker.co.uk.txt b/inc/3rdparty/site_config/standard/lifehacker.co.uk.txt
deleted file mode 100755
index c540f7f3..00000000
--- a/inc/3rdparty/site_config/standard/lifehacker.co.uk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@itemprop='headline']
2body: //noscript/img | //div[@itemprop='text']
3author: //div[@class='meta meta--post']//a[@class='is-author']
4date: //div[@class='meta meta--post']//time/@datetime
5
6test_url: http://www.lifehacker.co.uk/2014/08/22/dealhacker-10-google-chromecast-super-cheap-batteries-much
7test_url: http://www.lifehacker.co.uk/2014/08/18/andrognito-hides-files-youd-like-keep-away-prying-eyes
diff --git a/inc/3rdparty/site_config/standard/lifehacker.com.txt b/inc/3rdparty/site_config/standard/lifehacker.com.txt
deleted file mode 100755
index ec97f06c..00000000
--- a/inc/3rdparty/site_config/standard/lifehacker.com.txt
+++ /dev/null
@@ -1,47 +0,0 @@
1# Adds author text: Gawker sites commonly show as "Author: View Profile"
2author://a[@class="plus-icon modfont"]
3
4# Add date and time
5date: //span[@class="date"]
6
7body: //div[contains(@class, 'marquee-asset-wrapper') or contains(@class, 'post-content')]
8
9# Remove date and time from article text
10strip: //span[@class="date"]
11
12# Remove login/comment text
13strip: //*[(@class="presence_control_external smalltype")]
14
15strip: //div[@class="nodebyline modfont"]
16
17# Remove right sidebar
18strip: //div[@id="rightwrapper"]
19
20# Remove print header
21strip: //div[@id='printhead']/h1
22
23# Remove 'content is restricted'
24strip: //div[@id='agegate_IDHERE']
25
26# Remove follow text
27strip: //*[(@class="permalink_ads")]
28
29strip_id_or_class: inset_groups
30
31# Remove view/comment count
32strip: //div[@id='wrapper']/div[2][@class='postmeta_permalink_wrapper']/div[1][@class='postmeta_permalink']/div[2][@class='pm_line']
33
34# Remove contact text
35strip: //div[@id='wrapper']/div[1][@class='content permalink']/p[6][@class='contactinfo']
36
37# Remove medium duplicates of the article image
38strip_image_src: medium.jpg
39
40# Remove "arrow" class at bottom of page
41strip: //p[@class="arrow"]
42
43# Remove "track" image from article body
44strip: //img[@alt="track"]
45test_url: http://lifehacker.com/5925801/how-can-i-turn-vague-goals-into-actionable-to+dos
46test_url: http://lifehacker.com/5941600/hack-an-old-computer-mouse-into-a-wireless-bluetooth-mouse
47test_url: http://lifehacker.com/what-happens-to-the-brain-when-you-meditate-and-how-it-1202533314 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lifestyle.inquirer.net.txt b/inc/3rdparty/site_config/standard/lifestyle.inquirer.net.txt
deleted file mode 100755
index 25d544ae..00000000
--- a/inc/3rdparty/site_config/standard/lifestyle.inquirer.net.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@class='singlePageTitle']
2
3strip: //p[contains(text(), 'Follow Us')]
4strip: //p/strong[contains(text(), 'Recent Stories:')]
5strip: //div[@id="sharefeature"]
6
7test_url: http://lifestyle.inquirer.net/100223/dusting-your-ceiling-fan
diff --git a/inc/3rdparty/site_config/standard/lifeweek.com.cn.txt b/inc/3rdparty/site_config/standard/lifeweek.com.cn.txt
deleted file mode 100755
index e09f6692..00000000
--- a/inc/3rdparty/site_config/standard/lifeweek.com.cn.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1# This filter is tested on:
2# http://www.lifeweek.com.cn/2012/1211/39439.shtml
3# http://www.lifeweek.com.cn/2013/0308/40213.shtml
4
5title:substring-before(//h1, '(')
6title://h1
7date://ul[@class='authorbox']/li
8author: substring-after(//ul[@class='authorbox']/li/following-sibling::li, '作者:')
9
10next_page_link: //div[@class='pageturn_list']/a[@class='pagedown']
11body: //div[@class='original ']
12
13strip://h1
14strip://ul[@class='authorbox']
15strip://span[@class='app_p']
16strip://div[@style='text-align:right;']
17strip://div[@class='pageturn_list']
18strip://div[@class='lifespeaks']
19strip://div[@class='vright fr']
20strip://div[@class='copyrt mg20']
21strip://div[@class='keyabout mg20']
22strip://ul[@class='readabout mg20']
23test_url: http://www.lifeweek.com.cn/2013/0308/40213.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/linkedin.com.txt b/inc/3rdparty/site_config/standard/linkedin.com.txt
deleted file mode 100755
index 37e83cf6..00000000
--- a/inc/3rdparty/site_config/standard/linkedin.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1single_page_link: //ul[@class='util-nav']//a[@class='close']
2test_url: http://www.linkedin.com/news?actionBar=&articleID=894735221&ids=0Rdj4Qe3wQejwIczAOc3sRdzwUb3wScPoPdzkVe2MNcz8RcPsQejwIcPASdjwTcjwU&aag=true&freq=weekly \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/livescience.com.txt b/inc/3rdparty/site_config/standard/livescience.com.txt
deleted file mode 100755
index 5275d34a..00000000
--- a/inc/3rdparty/site_config/standard/livescience.com.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1title: //div[@class="album_title"]//h1
2author: substring-before(//div[@class='by_line'], ',')
3date: substring-after(substring-before(//div[@class="album_time"], ' Time'), 'Date: ')
4body: //div[@class="about_text"]
5
6strip: //div[@class='large_popper']
7strip: //span[contains(@id, 'mag_glass')]
8strip: //span[contains(@class, 'img_overlay')]
9strip: //td//span
10strip: //div[@class="center_adsense"]
11strip: //div[@class="article_info"]//div[@class='asset_section']
12strip: //div[@class="article_additional"]
13strip: //div[contains(@style, 'overflow:hidden')]
14strip: //div[@class="aa_text"]
15strip: //div[@id='nointelliTXT']
16
17prune: no
18autodetect_on_failure: no
19
20test_url: http://www.livescience.com/34569-why-flowers-close-at-night-nyctinasty.html
diff --git a/inc/3rdparty/site_config/standard/longform.org.txt b/inc/3rdparty/site_config/standard/longform.org.txt
deleted file mode 100755
index 1310ec0d..00000000
--- a/inc/3rdparty/site_config/standard/longform.org.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //div[@class="post"]/div[@class="title"]/a
2
3test_url: http://longform.org/2011/05/06/disconcerting-new-answers-in-models-suicide/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/loopinsight.com.txt b/inc/3rdparty/site_config/standard/loopinsight.com.txt
deleted file mode 100755
index 730af947..00000000
--- a/inc/3rdparty/site_config/standard/loopinsight.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@class='container_16']//div[@class='grid_11']
2strip: //h2[@class='mast']
3strip: //div[@class='container_16']//div[@class='grid_11']/h1
4strip: //div[@class='container_16']//div[@class='grid_11']/p[1]
5strip: //div[@class='container_16']//div[@class='grid_11']/div
6author: //a[starts-with(@title, 'Posts by')]
7date: substring-before(substring-after(//time, 'Posted on '), ' at')
8test_url: http://www.loopinsight.com/2012/09/13/forget-iphone-5-naysayers-this-thing-is-big/
9test_url: http://www.loopinsight.com/2011/05/20/playbook-returns-high-misses-sales-targets-by-90/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lostgarden.com.txt b/inc/3rdparty/site_config/standard/lostgarden.com.txt
deleted file mode 100755
index d7eb0fa0..00000000
--- a/inc/3rdparty/site_config/standard/lostgarden.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1prune: no
2convert_double_br_tags: yes
3test_url: http://www.lostgarden.com/2012/04/loops-and-arcs.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lovefm.com.txt b/inc/3rdparty/site_config/standard/lovefm.com.txt
deleted file mode 100755
index 20d26c56..00000000
--- a/inc/3rdparty/site_config/standard/lovefm.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //*[@id='title']
2date: //*[@id='date']
3body: //*[@id='desc']
4tidy: no
5
6test_url: http://www.lovefm.com/local_news.php?item=2176 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lovetv.com.bz.txt b/inc/3rdparty/site_config/standard/lovetv.com.bz.txt
deleted file mode 100755
index a71fccdd..00000000
--- a/inc/3rdparty/site_config/standard/lovetv.com.bz.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[contains(@class, 'post')]//h1
2body: //div[contains(@class, 'post')]
3strip: //hr
4strip_id_or_class: post-meta
5
6prune: no
7
8test_url: http://www.lovetv.com.bz/2013/06/28/recently-discovered-ancient-maya-wooden-canoe-paddle-to-be-handed-over-to-archaeology/
9test_url: http://www.lovetv.com.bz/feed/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/lrb.co.uk.txt b/inc/3rdparty/site_config/standard/lrb.co.uk.txt
deleted file mode 100755
index f1aacb7d..00000000
--- a/inc/3rdparty/site_config/standard/lrb.co.uk.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //div[contains(@class, "article-body")]/hgroup/h1
2body: //div[contains(@class, "article-body")]
3
4date: substring-after(//p[@class="meta-info"]/a, '· ')
5
6author: //div[contains(@class, "article-body")]/hgroup/h2
7
8strip_id_or_class: print-hide
9strip_id_or_class: books
10
11test_url: http://www.lrb.co.uk/v33/n18/james-meek/its-already-happened
12test_url: http://www.lrb.co.uk/v36/n13/benjamin-kunkel/paupers-and-richlings
diff --git a/inc/3rdparty/site_config/standard/luminous-landscape.com.txt b/inc/3rdparty/site_config/standard/luminous-landscape.com.txt
deleted file mode 100755
index b445f5eb..00000000
--- a/inc/3rdparty/site_config/standard/luminous-landscape.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2
2
3body: // div[@id='content']
4
5strip: //div[@class='sidebar_wrapper']
6test_url: http://www.luminous-landscape.com/tutorials/optimizing_exposure.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/luxuo.com.txt b/inc/3rdparty/site_config/standard/luxuo.com.txt
deleted file mode 100755
index a3d5cb17..00000000
--- a/inc/3rdparty/site_config/standard/luxuo.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class='post-content']
2prune: no
3
4test_url: http://www.luxuo.com/watches/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/m.bbc.co.uk.txt b/inc/3rdparty/site_config/standard/m.bbc.co.uk.txt
deleted file mode 100755
index d1ff0b43..00000000
--- a/inc/3rdparty/site_config/standard/m.bbc.co.uk.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[@class="story-body"]/div[@class="story-inner"]/h1
2body: //div[@class="story-body"]
3date: //p[@class='date']/strong
4author: substring-after(//div[@class="story-inner"]/div[@class="byline"]//span[@class='name'], 'By')
5
6strip: //div[@class="story-inner"]/div[@class="byline"]
7
8test_url: http://m.bbc.co.uk/news/science-environment-19144464 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/m.douban.com.txt b/inc/3rdparty/site_config/standard/m.douban.com.txt
deleted file mode 100755
index ce9a3167..00000000
--- a/inc/3rdparty/site_config/standard/m.douban.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1# This filter is tested on:
2# http://m.douban.com/note/240776310/?session=6ac86d1e
3# http://m.douban.com/note/208270705/?session=e00ec732_3433229
4
5title: //h2
6author: //a[@class='founder']
7date: substring-after(//span[@class='info'],' | ')
8body: //div[contains(@class,'entry item')]
9
10strip://span[contains(@class,'info')]
11
12convert_double_br_tags: yes
13test_url: http://m.douban.com/note/240776310/?session=6ac86d1e \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/m.guardian.co.uk.txt b/inc/3rdparty/site_config/standard/m.guardian.co.uk.txt
deleted file mode 100644
index f5f0dfca..00000000
--- a/inc/3rdparty/site_config/standard/m.guardian.co.uk.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //p[@class="txhead"]
2author: //div[@class='txb']
3wrap_in(p): //div[@class='para']
4date: //div[@class='txb']/following-sibling::p/text()[substring(., 14)]
5strip: //table[@class="tlogo"]
6strip: //div[@class="cookieText"]
7strip: //*[@class="sltb"]
8strip: //*[@class="ijobs-x-link"]
9strip: //*[@class="sponscolour"]
10strip: //*[@class="sponsouter"]
11strip: //div[@id="bottom-nav-block"]/following::*
12test_url: http://m.guardian.co.uk/ms/p/gnm/op/s3OOwgO3yIhGuj41C1_S3Xg/view.m?id=15&gid=world/2012/jul/26/arctic-climate-change&cat=top-stories \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/m.vanityfair.com.txt b/inc/3rdparty/site_config/standard/m.vanityfair.com.txt
deleted file mode 100755
index e47ce2ce..00000000
--- a/inc/3rdparty/site_config/standard/m.vanityfair.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# Article Metadata
2title: //h1
3author: //span[@class="name"]/a
4date: //time
5
6# Content Pruning
7strip: //h5
8strip: //time
9strip: //div[@class="byline"]
10strip: //h2[@class="headline "]
11test_url: http://m.vanityfair.com/politics/2012/10/michael-lewis-profile-barack-obama \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/m00natic.github.io.txt b/inc/3rdparty/site_config/standard/m00natic.github.io.txt
deleted file mode 100644
index 911fcbd0..00000000
--- a/inc/3rdparty/site_config/standard/m00natic.github.io.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=https%3A%2F%2Fm00natic.github.io%2Femacs%2Femacs-wiki.html
4
5body: //div[@id='content']
6strip_id_or_class: table-of-contents
7test_url: https://m00natic.github.io/emacs/emacs-wiki.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mac4ever.com.txt b/inc/3rdparty/site_config/standard/mac4ever.com.txt
deleted file mode 100755
index 9999758b..00000000
--- a/inc/3rdparty/site_config/standard/mac4ever.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: substring-after(//div[@class='author'],'Par ')
2date: //div[@class='date']
3body: //div[@class='content']
4
5test_url: http://www.mac4ever.com/news/64182/icloud_les_prix_en_euros_et_en_chf/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/macdrifter.com.txt b/inc/3rdparty/site_config/standard/macdrifter.com.txt
deleted file mode 100755
index e57bd640..00000000
--- a/inc/3rdparty/site_config/standard/macdrifter.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title: substring-before(//title,' « Macdrifter')
2test_url: http://www.macdrifter.com/2012/03/instacast-on-my-mac/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/macformat.techradar.com.txt b/inc/3rdparty/site_config/standard/macformat.techradar.com.txt
deleted file mode 100755
index 522efb49..00000000
--- a/inc/3rdparty/site_config/standard/macformat.techradar.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1# Remove news feed
2strip: //div[@id='news_feed_front']
3
4# Remove pull quote
5strip: //div[@class='field field-type-text field-field-pull-quote']
6
7# Remove login
8strip: //div[@class='right_bar_login']
9test_url: http://macformat.techradar.com/blog/solid-state-storage-bringing-parity-back-mac-29-10-10&article=89189666 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/macgeneration.com.txt b/inc/3rdparty/site_config/standard/macgeneration.com.txt
deleted file mode 100755
index 739eff4e..00000000
--- a/inc/3rdparty/site_config/standard/macgeneration.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: substring-before(substring-after(//div[@class='dateNews'],'par '),' le')
2date: substring-after(//div[@class='dateNews'],' le ')
3body: //div[@class='singleNews zoneApple']
4
5test_url: http://www.macgeneration.com/news/voir/211162/dropbox-encore-un-mac-et-deux-comptes-dropbox \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/macmagazine.com.br.txt b/inc/3rdparty/site_config/standard/macmagazine.com.br.txt
deleted file mode 100755
index da7df695..00000000
--- a/inc/3rdparty/site_config/standard/macmagazine.com.br.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1# Remove sliders
2strip: //*[(@class="slides_container")]
3strip: //div[(@id="slides_two")]
4
5# Remove tag cloud
6strip: //span[(@class="secao")]
7
8# Fix date article
9# TODO
10
11# Remove other stuff
12strip: //div[(@id="idc-container")]
13strip: //div[(@id="idc-noscript")]
14strip: //div[(@class="linkwithin_div")]
15strip: //div[(@class="navPosts")]
16strip: //div[(@id="lateral")]
17strip: //div[(@id="autor")]
18strip: //div[(@id="rodape")]
19strip: //div[(@id="post")]/h1
20strip: //div[(@id="post")]/div[(@id="boxInformacoes")]
21test_url: http://macmagazine.com.br/2011/08/01/skype-para-ipad-esta-finalmente-chegando-a-app-store/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/macrumors.com.txt b/inc/3rdparty/site_config/standard/macrumors.com.txt
deleted file mode 100755
index 83cfb4a6..00000000
--- a/inc/3rdparty/site_config/standard/macrumors.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1author: substring-after(//div[@class='byline'], " by ")
2date: substring-before(//div[@class='byline'], " by ")
3
4# set body
5body: //div[@class='content']
6strip_id_or_class: commentsContainer
7strip_id_or_class: linkback
8
9# set title
10title: //h3
11#strip: //div[@class='content']/h3
12test_url: http://www.macrumors.com/2010/11/10/apple-debuts-new-apple-tv-and-itunes-movie-content-in-japan/
diff --git a/inc/3rdparty/site_config/standard/macstories.net.txt b/inc/3rdparty/site_config/standard/macstories.net.txt
deleted file mode 100755
index 639fdd19..00000000
--- a/inc/3rdparty/site_config/standard/macstories.net.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1strip: //*[(@id = "featured")]
2
3author:substring-after( //div[@class='posttitle']/h2[@class='author'],'by ')
4
5date: concat(//div[@class='month'],' ',//div[@class='day'])
6
7#macstories doesn't provide a year, but month/day is better than nothing
8test_url: http://www.macstories.net/news/instapaper-4-0-available-completely-redesigned-ipad-ui-new-features-search-subscription/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mactalk.com.au.txt b/inc/3rdparty/site_config/standard/mactalk.com.au.txt
deleted file mode 100755
index 9be865af..00000000
--- a/inc/3rdparty/site_config/standard/mactalk.com.au.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author://div[@class="article_username_container_full"]
2date://div[@class="article_username_container"]
3body://div[@class="article cms_clear restore postcontainer"]
4test_url: http://www.mactalk.com.au/content/chat-basil-shkara-developer-taptax-2452/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mactechnews.de.txt b/inc/3rdparty/site_config/standard/mactechnews.de.txt
deleted file mode 100755
index 5c03518a..00000000
--- a/inc/3rdparty/site_config/standard/mactechnews.de.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: substring-after(substring-after(//title, '>'), '>')
2body: //div[@class='NewsArticleContent']
3test_url: http://www.mactechnews.de/news/index/Apple-Pressekonferenz-zum-iPhone-4-147316.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/macworld.com.txt b/inc/3rdparty/site_config/standard/macworld.com.txt
deleted file mode 100755
index e7d97202..00000000
--- a/inc/3rdparty/site_config/standard/macworld.com.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1title: //article//h1
2date: //meta[@name="date"]/@content
3author: //div[@class="author-name" or @class="article-byline"]/a[1]
4
5body: //section[@class="page"]
6
7# remove 'From the Lab' and 'Recent posts' text
8strip: //div[@class='blogLabel']
9
10# remove byline and meta info
11strip: //div[@class="article-meta"]
12strip: //div[@class="author-info"]
13
14#strip tags and categories
15strip: //div[@class="department"]
16
17#strip product cap links
18strip: //div[@class="cap-main"]
19strip: //div[@id="compare-lede"]
20
21prune: no
22
23# copes less well with Review pages, seems fine for News
24test_url: http://www.macworld.com/article/163184/2011/10/the_ipod_as_an_iconic_cultural_force.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mainichi.jp.txt b/inc/3rdparty/site_config/standard/mainichi.jp.txt
deleted file mode 100755
index 414a2f53..00000000
--- a/inc/3rdparty/site_config/standard/mainichi.jp.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='NewsArticle']
2
3test_url: http://mainichi.jp/select/weathernews/20110311/news/20110520k0000e040062000c.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mainpost.de.txt b/inc/3rdparty/site_config/standard/mainpost.de.txt
deleted file mode 100755
index 2f6382f1..00000000
--- a/inc/3rdparty/site_config/standard/mainpost.de.txt
+++ /dev/null
@@ -1,28 +0,0 @@
1title: substring-before(//title, '|')
2body: //*[@id='content-left']
3
4# Why is this not working here?
5# body: //*[@id='content-left']/div[@class='content-container'][2]/div[@class='content-body']/div[@class='inner-container']/div[@class='detail']
6
7
8#Header
9strip_id_or_class: 'subHead'
10strip_id_or_class: 'fl_right'
11strip_id_or_class: 'infolink'
12strip_id_or_class: 'content-head'
13strip_id_or_class: 'tab'
14strip_id_or_class: 'tab-active'
15strip: //*[contains(@class,'trenner')]
16
17# Headline
18strip: //h1/*
19strip_id_or_class: 'font16'
20
21#Images
22strip_id_or_class: 'leftimage'
23strip_id_or_class: 'rightimage'
24
25#Comments
26strip: //table
27strip: //p/following-sibling::*[0]
28test_url: http://www.mainpost.de/regional/wuerzburg/Autobahnschuetze-Staatsanwalt-fordert-zwoelf-Jahre;art492151,8386332
diff --git a/inc/3rdparty/site_config/standard/makeuseof.com.txt b/inc/3rdparty/site_config/standard/makeuseof.com.txt
deleted file mode 100755
index 078e8d08..00000000
--- a/inc/3rdparty/site_config/standard/makeuseof.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h1[@class='entry-title']
2
3body: //article//header//img | //article//section[@class='post']
4
5strip: //article//section[@class='post']/aside
6strip: //article//section[@class='post']/footer
7
8test_url: http://www.makeuseof.com/tag/cool-websites-and-tools-advanced-photo-editor-keep-your-kids-stuff-online-identify-60-languages/
9test_url: http://www.makeuseof.com/tag/what-do-you-think-of-our-new-look-makeuseof-poll/
diff --git a/inc/3rdparty/site_config/standard/manager.co.th.txt b/inc/3rdparty/site_config/standard/manager.co.th.txt
deleted file mode 100755
index cd6c5c01..00000000
--- a/inc/3rdparty/site_config/standard/manager.co.th.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1title: //td[@class="headline"]
2author: //font[@color="#003366"]
3date: //td[@class="date"]
4
5strip: //td[@class="headline"]
6strip: //font[@color="#003366"]
7strip: //td[@class="date"]
8
9strip: //img[@src="images/2009/logo_en.gif"]
10
11body: //tbody[@class="body"]
12convert_double_br_tags:yes
13
14strip: //img[@src="/images/TabOver.gif"]
15strip: //td[@width="160"]
16strip: //img[@src="/images/TabUnder.gif"]
17
18strip: //td[@class="small"]
19strip: //td[@height="47"]
20
21strip: //td[@valign="middle"]
22strip: //td[@background="/images/menu_bottombg.gif"]
23strip: //img[@src="/images/sc_footer_l.gif"]
24strip: //img[@src="/images/sc_footer_m.gif"]
25strip: //img[@src="/images/sc_footer_r.gif"]
26test_url: http://www.manager.co.th/Entertainment/ViewNews.aspx?NewsID=9550000101979 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/marco.org.txt b/inc/3rdparty/site_config/standard/marco.org.txt
deleted file mode 100755
index 4bb24a62..00000000
--- a/inc/3rdparty/site_config/standard/marco.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1tidy: no
2prune: no
3date: //article//time[@pubdate]
4title: //article/header/h2
5body: //article
6strip: //header
7test_url: http://www.marco.org/2012/09/08/businessweek-gruber
8test_url: http://www.marco.org/2012/04/24/might-upgrade-someday \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/marksdailyapple.com.txt b/inc/3rdparty/site_config/standard/marksdailyapple.com.txt
deleted file mode 100755
index 0077f560..00000000
--- a/inc/3rdparty/site_config/standard/marksdailyapple.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip_id_or_class: wwsgd
2test_url: http://www.marksdailyapple.com/are-detoxes-and-cleanses-safe-and-effective/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/martinfowler.com.txt b/inc/3rdparty/site_config/standard/martinfowler.com.txt
deleted file mode 100755
index 4ff4a9c2..00000000
--- a/inc/3rdparty/site_config/standard/martinfowler.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1date: //div[@id="main"]/p[@class="date"]
2author: string("Martin Fowler")
3body: //div[@id="main"]
4strip_id_or_class: date
5strip_id_or_class: tags
6strip_id_or_class: tagLabel
7strip: //div[@id="main"]/h1[1]
8test_url: http://martinfowler.com/bliki/DatabaseThaw.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mashable.com.txt b/inc/3rdparty/site_config/standard/mashable.com.txt
deleted file mode 100755
index b6efb6c5..00000000
--- a/inc/3rdparty/site_config/standard/mashable.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[@class='title']
2author: substring-after(//span[@class='author_name'], 'By ')
3date: //time
4
5body: //article
6strip: //div[@class='ytm-gallery-box']
7strip: //div[contains(@class, 'adsense')]
8strip: //aside[contains(@class, 'social')]
9strip_id_or_class: article-topics
10
11test_url: http://mashable.com/2013/05/24/myspace-architects-rebuilding-a-brand/
diff --git a/inc/3rdparty/site_config/standard/matt.might.net.txt b/inc/3rdparty/site_config/standard/matt.might.net.txt
deleted file mode 100755
index 30d585cf..00000000
--- a/inc/3rdparty/site_config/standard/matt.might.net.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1
2author: string("Matt Might")
3strip: //h1/following-sibling::div
4
5test_url: http://matt.might.net/articles/oo-cesk/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mattcutts.com.txt b/inc/3rdparty/site_config/standard/mattcutts.com.txt
deleted file mode 100755
index 76b1eac6..00000000
--- a/inc/3rdparty/site_config/standard/mattcutts.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1date: //*[@class = 'published']
2test_url: http://www.mattcutts.com/blog/internet-censorship-sopa/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mbl.is.txt b/inc/3rdparty/site_config/standard/mbl.is.txt
deleted file mode 100755
index fd26f091..00000000
--- a/inc/3rdparty/site_config/standard/mbl.is.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[class="frett-main"]
2test_url: http://mbl.is/frettir/innlent/2012/02/21/litill_munur_a_fargjaldaverdi/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/medialens.org.txt b/inc/3rdparty/site_config/standard/medialens.org.txt
deleted file mode 100755
index c26bac55..00000000
--- a/inc/3rdparty/site_config/standard/medialens.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1strip_id_or_class: article-tools
2strip_id_or_class: pagenav
3prune: no
4test_url: http://www.medialens.org/index.php/alerts/alert-archive/2012/713-the-illusion-of-democracy.html
5test_contains: In an era of permanent war, economic meltdown
diff --git a/inc/3rdparty/site_config/standard/medium.com.txt b/inc/3rdparty/site_config/standard/medium.com.txt
deleted file mode 100755
index 9e9c6895..00000000
--- a/inc/3rdparty/site_config/standard/medium.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[contains(@class, 'postContent-inner')]
2strip_id_or_class: supplementalPostContent
3
4prune: no
5
6test_url: https://medium.com/@savolai/kaytettavyyden-haasteet-keskustelukulttuurista-2-3-6844c0d7893b
7test_contains: Jos käytettävyysongelmat ovat kerran niin tyypillisiä
8test_contains: Keskustelukulttuuriongelmasta (subjective vs. objective bugs)
9
10test_url: https://medium.com/health-the-future/thirty-things-ive-learned-482765ee3503
11test_contains: Remember you will die
12test_contains: You have to have some faith.
diff --git a/inc/3rdparty/site_config/standard/megamp3.eu.txt b/inc/3rdparty/site_config/standard/megamp3.eu.txt
deleted file mode 100755
index 1b6a1279..00000000
--- a/inc/3rdparty/site_config/standard/megamp3.eu.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h3[@class='episode_title']
2body: //ul[contains(@class, 'episode_imgdesc')]/li/descendant::*
3prune: no
4strip://*[contains(@class, 'plugin')]
5strip://*[contains(@class, 'episode_keywords')]
6
7test_url: http://www.megamp3.eu/?p=episode&name=2013-04-19_la_filiere_progressive_431.mp3
8test_url: http://www.megamp3.eu/feed.xml
diff --git a/inc/3rdparty/site_config/standard/menshealth.com.sg.txt b/inc/3rdparty/site_config/standard/menshealth.com.sg.txt
deleted file mode 100755
index 6a669253..00000000
--- a/inc/3rdparty/site_config/standard/menshealth.com.sg.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1strip: //div[contains(@style, 'float:right') and contains(., 'advertisement')]
2body: //div[@style="float:left;width:740px;"]
3
4tidy: no
5
6test_url: http://www.menshealth.com.sg/fitness/mh-picks-under-armour-clutchfit-nitro-mid-cleats
7test_contains: These cleats are made for one thing
8
9test_url: http://www.menshealth.com.sg/fitness/top-10-fat-burning-bodyweight-moves-you-can-do-10-minutes
10test_contains: let this workout fool you
11
12test_url: http://www.menshealth.com.sg/fitness/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/menshealth.com.txt b/inc/3rdparty/site_config/standard/menshealth.com.txt
deleted file mode 100755
index a1a46f63..00000000
--- a/inc/3rdparty/site_config/standard/menshealth.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1# need to find a way to eliminate <span> content for "related content" without eliminating important content
2
3convert_double_br_tags: [yes]
4#body: //div[@id='leftside']
5title: //h1
6title: //h2
7Author: substring-after(//h4, 'By ')
8Author: substring-after(//h4, 'By: ')
9#Strip: //span
10strip_id_or_class: morefromcat
11strip_id_or_class: mostpopular
12strip_id_or_class: articlepagination
13strip_id_or_class: toolbar
14body: //div[@id='zmodcontent']
15single_page_link: //li[@class='onepage'] //a[contains (@href, 'printer.php')]
16test_url: http://www.menshealth.com/mhlists/pursuit_of_happiness/index.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/metafilter.com.txt b/inc/3rdparty/site_config/standard/metafilter.com.txt
deleted file mode 100755
index a2f3ada9..00000000
--- a/inc/3rdparty/site_config/standard/metafilter.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[contains(@class, 'copy') or contains(@class, 'comments')]
2strip_id_or_class: related
3strip: //a[. = 'Subscribe']
4strip: //h1/span[@class = 'smallcopy']
5strip: //a[@class = 'skip']
6strip: //div[@id = 'logo']
7strip: //div[contains(@class, 'comments') and contains(., 'You are not currently logged in')]
8test_url: http://www.metafilter.com/128101/Probably-more-secure-than-the-Drafts-folder-on-a-shared-Gmail-account \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mforum.cari.com.my.txt b/inc/3rdparty/site_config/standard/mforum.cari.com.my.txt
deleted file mode 100755
index c295d734..00000000
--- a/inc/3rdparty/site_config/standard/mforum.cari.com.my.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: (//td[starts-with(@id, 'postmessage_')])[1]
2
3prune: no
4
5test_url: http://mforum.cari.com.my/forum.php?mod=viewthread&tid=788033
6test_url: http://mforum.cari.com.my/forum.php?mod=rss&fid=265&auth=0 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mikeash.com.txt b/inc/3rdparty/site_config/standard/mikeash.com.txt
deleted file mode 100755
index abaa6a81..00000000
--- a/inc/3rdparty/site_config/standard/mikeash.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class="blogtitle"]
2strip: //div[@class="blogtitle"]
3
4author: substring-after(//span[@class="blogheader"], 'Author: ')
5test_url: http://www.mikeash.com/pyblog/friday-qa-2012-01-13-the-mac-toolbox.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mikeindustries.com.txt b/inc/3rdparty/site_config/standard/mikeindustries.com.txt
deleted file mode 100755
index fb4636cc..00000000
--- a/inc/3rdparty/site_config/standard/mikeindustries.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@class='post_content']/h2
2date: //div[@class='dateline']
3body: //div[@class='entry']
4
5strip: //div[@class='closer']
6strip: //div[@class='navigation']
7strip: //div[@class='aux_pane']
8strip: //div[@class='aux_aux_pane']
9test_url: http://www.mikeindustries.com/blog/archive/2011/10/never-be-another \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/minnesota.publicradio.org.txt b/inc/3rdparty/site_config/standard/minnesota.publicradio.org.txt
deleted file mode 100755
index 773a627c..00000000
--- a/inc/3rdparty/site_config/standard/minnesota.publicradio.org.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //*[@class="article"]/h1
2date: //*[@class="article"]/div[@class="date"]
3
4# strip the title and date from the article text
5strip: //*[@class="article"]/h1
6strip: //*[@class="article"]/div[@class="date"]
7
8# strip annoying <br> between metadata and article
9strip: //*[@class="article"]/div[@class="date"]/following-sibling::br
10test_url: http://minnesota.publicradio.org/display/web/2012/06/19/health/senators-want-health-care-ruling-on-tv/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/minnpost.com.txt b/inc/3rdparty/site_config/standard/minnpost.com.txt
deleted file mode 100755
index dc926a6f..00000000
--- a/inc/3rdparty/site_config/standard/minnpost.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //*[@id="content-header"]/h1
2author: //*[contains(@class, 'byline')]/a/text()
3date: substring-after(//*[contains(@class, 'byline')]/text()[2], '|')
4body: //*[contains(@class, 'node-body')]
5test_url: http://www.minnpost.com/eric-black-ink/2012/06/overturning-obamacare-would-be-game-changer-supreme-court \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mirrorfootball.co.uk.txt b/inc/3rdparty/site_config/standard/mirrorfootball.co.uk.txt
deleted file mode 100755
index 2033cf33..00000000
--- a/inc/3rdparty/site_config/standard/mirrorfootball.co.uk.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1# Remove extra links
2strip: //*[@class='appended_html']
3test_url: http://www.mirrorfootball.co.uk/news/West-Ham-crisis-Carlton-Cole-slams-diabolical-performance-and-rips-into-Avram-Grant-lack-of-tactical-nous-following-Liverpool-mauling-article636151.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mises.org.txt b/inc/3rdparty/site_config/standard/mises.org.txt
deleted file mode 100755
index 73c485e6..00000000
--- a/inc/3rdparty/site_config/standard/mises.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1strip_id_or_class: 'book-ad'
2strip_id_or_class: 'bigger pullquote'
3strip_id_or_class: 'subscribe'
4strip_id_or_class: 'blog-link'
5test_url: http://mises.org/daily/4804 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mlb.mlb.com.txt b/inc/3rdparty/site_config/standard/mlb.mlb.com.txt
deleted file mode 100755
index 765fab3f..00000000
--- a/inc/3rdparty/site_config/standard/mlb.mlb.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //h1[@class='article-headline']
2date: //span[@class='timeStamp']
3author: substring-before(//p[@class='article-byline'], '/')
4body: //div[@id='article']
5#strip: //div[@class='inner']
6strip: //div[@id='article_head']
7strip: //p[@class='tagLine']
8strip: //div[@id='article_related_links']
9strip: //div[@id='article_related_mlb']
10strip: //span[@class='more']
11strip: //div[@class='article_component']
12strip: //span[@class='screen_reader']
13strip: //ul[@class='columnists_blurb']
14test_url: http://mlb.mlb.com/news/article.jsp?ymd=20120403&content_id=27880830 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mlb.sbnation.com.txt b/inc/3rdparty/site_config/standard/mlb.sbnation.com.txt
deleted file mode 100755
index 8480e302..00000000
--- a/inc/3rdparty/site_config/standard/mlb.sbnation.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //h1[@id = 'stream_title']
2author: //p[@class = 'byline']/a
3date: //span[@class = 'datetime']
4
5body: //div[@id = 'stream_container']
6strip: //p[@class = 'byline']
7strip_id_or_class: stream_summary
8strip_id_or_class: social-spoken
9strip_id_or_class: datetime
10strip_id_or_class: author-mini-profile
11strip_id_or_class: social-tools
12strip_id_or_class: entry-tags
13strip_id_or_class: fb-like-box
14test_url: http://mlb.sbnation.com/2011/10/17/2495845/2011-world-series-st-louis-cardinals-texas-rangers-home-field-advantage \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mlssoccer.com.txt b/inc/3rdparty/site_config/standard/mlssoccer.com.txt
deleted file mode 100755
index 5d706f88..00000000
--- a/inc/3rdparty/site_config/standard/mlssoccer.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //*[@class="header_title"]/h1
2date: //*[@class="field-date"]
3author: //*[@class="field-author"]
4body: //div[contains(@class, 'content')]
5
6test_url: http://www.mlssoccer.com/news/article/2012/06/19/lack-depth-front-forces-arena-alter-las-formation \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mmo-champion.com.txt b/inc/3rdparty/site_config/standard/mmo-champion.com.txt
deleted file mode 100755
index 50d8a24f..00000000
--- a/inc/3rdparty/site_config/standard/mmo-champion.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1
2body: //div[@id = 'article_content']/div[contains(@class,'article')]
3author: //sub[@class = 'article_promoted_text']/a[starts-with(@href, 'member')]
4date: //div[@class = 'article_username_container']
5test_url: http://www.mmo-champion.com/content/2688-Other-Press-Tour-Interviews-A-Night-in-Mists-of-Pandaria-Blue-Posts-MoP-Screenshot \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mnn.com.txt b/inc/3rdparty/site_config/standard/mnn.com.txt
deleted file mode 100755
index d3576df2..00000000
--- a/inc/3rdparty/site_config/standard/mnn.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1tidy: no
2author: //div[@id="above-content"]//img/@alt | //div[@class="comment-auth"]/span[1]/a/text()
3date: //div[@class="comment-auth"]/div | //div[@class="comment-auth"]/span[2]
4body: //div[@class="node"]
5
6strip_id_or_class: vertical-social-bar
7strip_id_or_class: blogs_paginator
8strip_id_or_class: horizontal-social-links
9strip_id_or_class: servicelinksdiv
10
11test_url: http://www.mnn.com/green-tech/research-innovations/blogs/5-breakthroughs-that-will-make-solar-power-cheaper-than-coal \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mno.hu.txt b/inc/3rdparty/site_config/standard/mno.hu.txt
deleted file mode 100755
index 8a3f9391..00000000
--- a/inc/3rdparty/site_config/standard/mno.hu.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //title
2
3author: //div[@class="author"]
4
5strip_id_or_class: 'header'
6strip_id_or_class: 'cikk_ajanlo'
7strip_id_or_class: 'buttons'
8strip_id_or_class: 'related'
9strip_id_or_class: 'adbox ad_cikk_kozepre'
10strip_id_or_class: 'cikk-cimkek'
11strip_id_or_class: 'cikk_ertekeles'
12
13strip_comments: yes
14test_url: http://mno.hu/grund/a-gumibottal-hadonaszo-rendort-joval-konnyebb-utalni-1055351 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mobile.nytimes.com.txt b/inc/3rdparty/site_config/standard/mobile.nytimes.com.txt
deleted file mode 100755
index c60252ef..00000000
--- a/inc/3rdparty/site_config/standard/mobile.nytimes.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h1[contains(@class, 'headline')]
2body: //article[contains(@class, 'full-art')]
3strip_id_or_class: image-credit
4test_url: http://mobile.nytimes.com/2014/06/19/opinion/gail-collins-romney-and-the-2016-contenders-huddle.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mobile.slate.com.txt b/inc/3rdparty/site_config/standard/mobile.slate.com.txt
deleted file mode 100755
index 6ffcd18f..00000000
--- a/inc/3rdparty/site_config/standard/mobile.slate.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h2[@class="article_title"]
2strip: //a[@class="houseAdLink"]
3strip: //h1
4strip: //div[@class="more_articles"]
5test_url: http://mobile.slate.com/rss.jsp?rssid=411&item=http%3a%2f%2fwww.slate.com%2fdefault.aspx%3fdisplaymode%3d201%26id%3d2293749%26device%3drss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mobileopportunity.blogspot.com.txt b/inc/3rdparty/site_config/standard/mobileopportunity.blogspot.com.txt
deleted file mode 100755
index 82da4aec..00000000
--- a/inc/3rdparty/site_config/standard/mobileopportunity.blogspot.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class='post uncustomized-post-template']
2
3# remove duplicate of post title, which is a link
4strip: //h3[@class='post-title']
5
6# remove permalink and timestamp, which isn't useful as it's a time with no date
7strip: //span[@class='post-timestamp']
8
9# remove labels (tags)
10strip: //span[@class='post-labels']
11test_url: http://mobileopportunity.blogspot.com/2010/12/rims-q3-financials-tale-of-two.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/modernghana.com.txt b/inc/3rdparty/site_config/standard/modernghana.com.txt
deleted file mode 100755
index 306ef8d9..00000000
--- a/inc/3rdparty/site_config/standard/modernghana.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //meta[@property="og:title"]/@content
2author: //meta[@name="author"]/@content
3date: //span[@class='date1']
4body: //div[@id='newsimage'] | //div[@id='bodytext']
5tidy: no
6prune: no
7
8test_url: http://www.modernghana.com/news/323765/1/039ghost039-teachers-removed-salaries-allowances-p.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/money.cnn.com.txt b/inc/3rdparty/site_config/standard/money.cnn.com.txt
deleted file mode 100755
index d5e03d20..00000000
--- a/inc/3rdparty/site_config/standard/money.cnn.com.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1title: //meta[@property="og:title"]/@content
2title: //h1[@class='storyheadline']
3author: //meta[@name="AUTHOR"]/@content
4date: //span[@class='cnnDateStamp']
5date: //meta[@name="DATE"]/@content
6body: //div[@id='storytext' or @class='storytext']
7
8strip_id_or_class: ie_column
9strip_id_or_class: sharewidgets
10strip_image_src: bug.gif
11
12strip: //div[@class="hed_side"]
13strip: //span[@class="byline"]
14strip: //a[@class="soc-twtname"]
15strip: //span[@class="cnnDateStamp"]
16strip: //div[@class="storytimestamp"]
17strip: //div[@class="cnnCol_side"]
18
19prune: no
20tidy: no
21
22test_url: http://money.cnn.com/2011/03/15/news/companies/steve_jobs_thought_process.fortune/index.htm?section=money_topstories&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fmoney_topstories+%28Top+Stories%29
23test_url: http://money.cnn.com/2012/01/27/markets/markets_newyork/index.htm
24test_url: http://money.cnn.com/2012/05/13/technology/yahoo-ceo-out-rumor/index.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/monkeyzen.com.txt b/inc/3rdparty/site_config/standard/monkeyzen.com.txt
deleted file mode 100755
index f779c38e..00000000
--- a/inc/3rdparty/site_config/standard/monkeyzen.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://monkeyzen.com/2011/09/siluetas-de-clasicos-a-modo-de-vinilos \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/moo.nac.uci.edu.txt b/inc/3rdparty/site_config/standard/moo.nac.uci.edu.txt
deleted file mode 100644
index 24c949e9..00000000
--- a/inc/3rdparty/site_config/standard/moo.nac.uci.edu.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='header']//h1[1]
2
3body: //div[@id='content']
4
5strip_id_or_class: toc
6
7prune: no
8
9test_url: http://moo.nac.uci.edu/~hjm/HOWTO_move_data.html
diff --git a/inc/3rdparty/site_config/standard/moonsault.de.txt b/inc/3rdparty/site_config/standard/moonsault.de.txt
deleted file mode 100755
index 55026eeb..00000000
--- a/inc/3rdparty/site_config/standard/moonsault.de.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1strip_image_src: menu
2strip_image_src: templates
3strip: //div/a
4strip: //div/b
5strip: //div/strong
6strip: //td[@width='30%']
7strip: //br[1]
8strip: //br[2]
9strip: //br[3]
10strip: //br[4]
11strip: //a[@href='http://www.moonsault.de/newzboard/index.php?act=home']
12strip_id_or_class: cse-branding-right
13test_url: http://www.moonsault.de/newzboard/index.php?news=22321&act=previous \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/moreintelligentlife.com.txt b/inc/3rdparty/site_config/standard/moreintelligentlife.com.txt
deleted file mode 100755
index 780cca4f..00000000
--- a/inc/3rdparty/site_config/standard/moreintelligentlife.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@class='print-title']
2body: //div[@class='print-submitted' or @class='print-created' or @class='print-content']
3prune: no
4
5single_page_link: //li[@class='print']/a
6
7test_url: http://moreintelligentlife.com/content/places/paul-markillie/they-trash-cars-dont-they \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/motherboard.vice.com.txt b/inc/3rdparty/site_config/standard/motherboard.vice.com.txt
deleted file mode 100755
index c6312c0e..00000000
--- a/inc/3rdparty/site_config/standard/motherboard.vice.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: //span[@class="author"]/a
2date: //span[@class="date"]
3body: //div[@class="story-content"]
4strip: //aside
5test_url: http://motherboard.vice.com/blog/you-can-carry-a-copy-of-the-pirate-bay-in-your-pocket \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/mothering.com.txt b/inc/3rdparty/site_config/standard/mothering.com.txt
deleted file mode 100755
index a34adff7..00000000
--- a/inc/3rdparty/site_config/standard/mothering.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h2[contains(@class,'post_headline')]
2body: //div[@class='entry']
3convert_double_br_tags: yes
4strip_image_src: _selected.gif
5strip_id_or_class: addthis_
6strip: //a[contains(@href,'feedburner.com')]
7test_url: http://mothering.com/all-things-mothering/inspiration/motherhood-brings-me-down \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/motherjones.com.txt b/inc/3rdparty/site_config/standard/motherjones.com.txt
deleted file mode 100755
index 851feb7e..00000000
--- a/inc/3rdparty/site_config/standard/motherjones.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: //h1
2body: //div[@id = 'content-area']
3next_page_link: //div[@class='node-pager']/a[contains(@class, 'next')]
4tidy: no
5author: //p[contains(@class, 'byline')]/a
6
7strip_id_or_class: node-header
8strip_id_or_class: hdr-tools
9strip_id_or_class: node-body-break
10strip_id_or_class: pullquote
11strip_id_or_class: node-pager
12strip_id_or_class: author-bio
13strip_id_or_class: node-footer
14
15test_url: http://motherjones.com/politics/2012/02/mac-mcclelland-free-online-shipping-warehouses-labor \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/motorfull.com.txt b/inc/3rdparty/site_config/standard/motorfull.com.txt
deleted file mode 100755
index c6bec7e9..00000000
--- a/inc/3rdparty/site_config/standard/motorfull.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://motorfull.com/2011/09/aparca-valeo-park4u-remote \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/movie.douban.com.txt b/inc/3rdparty/site_config/standard/movie.douban.com.txt
deleted file mode 100755
index eae211ed..00000000
--- a/inc/3rdparty/site_config/standard/movie.douban.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1# This filter is tested on:
2# http://movie.douban.com/review/1062013/
3
4title: //span[contains(@property, 'v:summary')]
5author: //span[contains(@property, 'v:reviewer')]
6date://span[contains(@property, 'v:dtreviewed')]
7body://div[contains(@class, 'main-bd')]
8
9strip://img[contains(@class,'rating')]|//img[contains(@class,'review-stat')]
10convert_double_br_tags: yes
11test_url: http://movie.douban.com/review/1062013/
12test_url: http://movie.douban.com/review/1021870/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/msdn.microsoft.com.txt b/inc/3rdparty/site_config/standard/msdn.microsoft.com.txt
deleted file mode 100755
index 7a284275..00000000
--- a/inc/3rdparty/site_config/standard/msdn.microsoft.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[class="mainBody"]
2footnotes: no
3test_url: http://msdn.microsoft.com/en-us/library/hh542796(VS.103).aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/msnbc.msn.com.txt b/inc/3rdparty/site_config/standard/msnbc.msn.com.txt
deleted file mode 100755
index f008d2d1..00000000
--- a/inc/3rdparty/site_config/standard/msnbc.msn.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1title: //title
2author: //div[@id='byline']
3
4date: //div[contains(@class,'timestamp')]/abbr/text()
5
6body: //div[@id='intellitTXT']
7
8strip: //div[@id='byline']
9strip: //div[contains(@class,'timestamp')]
10strip: //div[contains(@class, 'ad-label')]
11strip: //div[contains(@class, 'ad-break')]
12strip: //span[contains(@class, 'x-video')]
13strip: //span[contains(@class, 'inline')]
14strip: //div[contains(@class, 'video')]
15strip: //div[contains(@class, 'discuss')]
16strip: //div[@id='most-popular']
17strip: //div[contains(@class,'drawer')]
18strip: //*[contains(@class, 'hide')]
19
20footnotes: no
21test_url: http://www.msnbc.msn.com/id/44748412/ns/business-world_business/#.TolUv-vfDbE \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/myfoxatlanta.com.txt b/inc/3rdparty/site_config/standard/myfoxatlanta.com.txt
deleted file mode 100755
index 8a7590ab..00000000
--- a/inc/3rdparty/site_config/standard/myfoxatlanta.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@id='WNStoryBody']
2author: //div[@id='WNStoryByline']
3prune: no
4
5test_url: http://www.myfoxatlanta.com/category/233685/local-news?clienttype=rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/myfoxboston.com.txt b/inc/3rdparty/site_config/standard/myfoxboston.com.txt
deleted file mode 100755
index 9ad8ce05..00000000
--- a/inc/3rdparty/site_config/standard/myfoxboston.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class="col1"]//div[@class="photo"] | //div[@class="detail"]/p[@class="fontStyle21"] | //div[@class="story last"]
2tidy: no
3
4test_url: http://www.myfoxboston.com/dpp/news/local/transit-police-say-woman-spat-on-mbta-bus-driver-2010611 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/myrecipes.com.txt b/inc/3rdparty/site_config/standard/myrecipes.com.txt
deleted file mode 100755
index 956be1e6..00000000
--- a/inc/3rdparty/site_config/standard/myrecipes.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h2[contains(@class, 'name')]
2body: //div[@class='printFullPageContentContainer']//div[contains(@class, 'recipe')]
3
4strip_id_or_class: photoBy
5strip_id_or_class: link
6
7single_page_link: //li[@class='print']/a[contains(@href, '/print/')]
8
9prune: no
10tidy: no
11
12test_url: http://www.myrecipes.com/recipe/hummingbird-cake-10000000387218/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/narenji.ir.txt b/inc/3rdparty/site_config/standard/narenji.ir.txt
deleted file mode 100755
index 6c3d0c24..00000000
--- a/inc/3rdparty/site_config/standard/narenji.ir.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='node']
2test_url: http://www.narenji.ir/2806 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nasa.gov.txt b/inc/3rdparty/site_config/standard/nasa.gov.txt
deleted file mode 100755
index 7df1112b..00000000
--- a/inc/3rdparty/site_config/standard/nasa.gov.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[@class='address']/span
2author: substring-before(//span[@class='credits'],',')
3date: //div[@class='promodatepress']/span
4body: //div[@class='default_style_wrap']
5strip: //div[@class='text_adjust']
6strip: //div[@class='skiplink']
7strip: //h2
8test_url: http://www.nasa.gov/mission_pages/kepler/news/kepler-21b.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nbweekly.com.txt b/inc/3rdparty/site_config/standard/nbweekly.com.txt
deleted file mode 100755
index 2645d406..00000000
--- a/inc/3rdparty/site_config/standard/nbweekly.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1date://span[contains(@class,'date')]
2
3body://div[contains(@class,'contWarp')]
4
5strip://div[contains(@class,'keyWord')]
6strip://div[contains(@class,'submitComt')]
7strip://div[contains(@class,'cmts')]
8strip://div[contains(@class,'notice')]
9strip://div[contains(@class,'part pt-second')]
10test_url: http://www.nbweekly.com/news/china/201203/29316.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/neh.gov.txt b/inc/3rdparty/site_config/standard/neh.gov.txt
deleted file mode 100755
index e7cc4313..00000000
--- a/inc/3rdparty/site_config/standard/neh.gov.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1#host configuration should be http://www.neh.gov/news/humanities/
2
3
4#meta data
5title:substring-after(substring-after(//title,':'),':')
6author:substring-after(//h2[@class = 'subHead'],'By')
7date:substring-before(substring-after(//title,':'),':')
8
9#img and caption handling
10wrap_in(small)://div[@id = 'mainContent']/table/descendant::p/descendant::text()
11wrap_in(fieldset)://div[@id = 'mainContent']/table
12
13# clean up
14strip: //table[@class = 'marginpaddingTop']
15strip: //h2[@class = 'subHead']
16
17test_url: http://www.neh.gov/news/humanities/2011-11/IslamicScholar.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/neomoney.co.txt b/inc/3rdparty/site_config/standard/neomoney.co.txt
deleted file mode 100755
index 2089fc39..00000000
--- a/inc/3rdparty/site_config/standard/neomoney.co.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //*[@class="header_title"]/h1
2body: //div[contains(@class, 'content')]
3test_url: http://neomoney.co/personal/expatriate-and-migrant-loans/expatriate-loans/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/net-security.org.txt b/inc/3rdparty/site_config/standard/net-security.org.txt
deleted file mode 100755
index b7fedbf3..00000000
--- a/inc/3rdparty/site_config/standard/net-security.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class='content-title']
2#date: substring-after(//div[@class='dernek-text-under'],'Posted on')
3body: //div[@class='content-item']
4next_page_link: //li[@class='next']/a
5convert_double_br_tags: yes
6
7test_url: http://www.net-security.org/article.php?id=1732 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/netmagazine.com.txt b/inc/3rdparty/site_config/standard/netmagazine.com.txt
deleted file mode 100755
index dcea047c..00000000
--- a/inc/3rdparty/site_config/standard/netmagazine.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //h1
2author: //div[@class="submitted"]/span
3
4# seems like this should work, but nothing is returned. Issue with xpath parser?
5date: //div[@class="submitted"]/time
6
7body: //div[@id="main-content"]
8
9strip_comments: no
10
11strip: //h1
12strip: //div[@class="submitted"]
13strip: //dd[@class="profile-avatar"]
14strip: //div[@class="author-profile"]/dl/dt[1]
15strip: //div[@id="right-col"]
16test_url: http://www.netmagazine.com/opinions/nielsen-wrong-mobile \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/netzpolitik.org.txt b/inc/3rdparty/site_config/standard/netzpolitik.org.txt
deleted file mode 100755
index 7fa43fd7..00000000
--- a/inc/3rdparty/site_config/standard/netzpolitik.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class='entry-title']
2author: //a[@ref='author']
3date: //span[@class='entry-date']
4body: //div[@class='entry-content']
5
6test_url: http://netzpolitik.org/2011/buch-generation-facebook/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newleftproject.org.txt b/inc/3rdparty/site_config/standard/newleftproject.org.txt
deleted file mode 100755
index d9af99d8..00000000
--- a/inc/3rdparty/site_config/standard/newleftproject.org.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //div[contains(@class, 'article_header')]//h3
2
3test_url: http://www.newleftproject.org/index.php/site/article_comments/do_we_need_a_facebook_of_the_left \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newmatilda.com.txt b/inc/3rdparty/site_config/standard/newmatilda.com.txt
deleted file mode 100755
index f17ecdc6..00000000
--- a/inc/3rdparty/site_config/standard/newmatilda.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id="maincontent"]/h1
2body: //div[@id="maincontent"]
3date: //div[@id="maincontent"]/p[2]
4author: //ul[@id="contributors"]/li/p/b
5
6strip: //p[@*]
7strip: //h1
8strip: //div[@id="maincontent"]/div
9test_url: http://newmatilda.com/2011/07/22/turnbull-makes-sense-climate \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newrepublic.com.txt b/inc/3rdparty/site_config/standard/newrepublic.com.txt
deleted file mode 100755
index 039f0385..00000000
--- a/inc/3rdparty/site_config/standard/newrepublic.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1author: //span[@class="authors"]
2date: //span[@class="date"]
3body: //div[@class="primary"]
4
5strip: //div[@id="controls"]
6strip: //div[@id="read-next"]
7
8test_url: http://www.newrepublic.com/article/112731/moocs-will-online-education-ruin-university-experience \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news-gazette.com.txt b/inc/3rdparty/site_config/standard/news-gazette.com.txt
deleted file mode 100755
index 2b352707..00000000
--- a/inc/3rdparty/site_config/standard/news-gazette.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[@id="main-content"]//h2
2
3author: //div[@id="main-content"]//span[@class="authors"]
4
5date: //div[@id="main-content"]//span[@class="timestamp"]
6
7body: //div[@id="main-content"]//div[@class="content"]
8test_url: http://www.news-gazette.com/news/business/economy/2011-08-08/ibm-drops-out-blue-waters-project.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.cnet.com.txt b/inc/3rdparty/site_config/standard/news.cnet.com.txt
deleted file mode 100755
index 78af70f4..00000000
--- a/inc/3rdparty/site_config/standard/news.cnet.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1#This should apply to *.cnet.com. Not just news.cnet.com.
2title: //h1
3author: //img[@class="mugshot"]/@alt
4strip: //h1
5strip_id_or_class: breadcrumb
6strip: //p[@id="introP"]
7strip: //div[@class="postByline"]
8strip: //div[@class="editorBio"]
9strip: //div[@class="inline-slideshow"]
10strip: //div[@class="related"]
11body: //div[@class="postBody txtWrap"]
12test_url: http://news.cnet.com/8301-27076_3-57405303-248/apple-ipad-charging-fine-keep-it-plugged-in/?tag=mncol;posts \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.detik.com.txt b/inc/3rdparty/site_config/standard/news.detik.com.txt
deleted file mode 100755
index 629bc917..00000000
--- a/inc/3rdparty/site_config/standard/news.detik.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title://div[@class="content_detail"]/h1
2
3author://div[@class="author"]/strong
4
5date:substring-before(substring-after(//div[@class="content_detail"]/span[@class="date"], ','), ' WIB')
6
7body://div[@class="text_detail"]
8test_url: http://news.detik.com/read/2012/05/22/225531/1922307/10/menkeu-cek-soal-lolosnya-315-kg-sabu-dari-bea-cukai \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.kanaloco.jp.txt b/inc/3rdparty/site_config/standard/news.kanaloco.jp.txt
deleted file mode 100755
index 5754d47a..00000000
--- a/inc/3rdparty/site_config/standard/news.kanaloco.jp.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id='main']
2strip: //div[@id='sbs']
3strip: //div[@id='fsizeSwitch']
4strip: //div[@id='googleAd']
5strip: //div[@id='detailFoot']
6strip_image_src: counter?key
7convert_double_br_tags: yes
8
9test_url: http://news.kanaloco.jp/localnews/article/1105200018/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.mynavi.jp.txt b/inc/3rdparty/site_config/standard/news.mynavi.jp.txt
deleted file mode 100755
index 1df47314..00000000
--- a/inc/3rdparty/site_config/standard/news.mynavi.jp.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h2[@class="lyt-hdg-02-04"]
2
3author: //div[@class="lyt-namearea"]/a
4
5date: //div[@class="lyt-namearea"]/text()
6
7body: //div[@class="articleContent"]
8
9strip: //div[@id="tab-aside"]
10
11test_url: http://news.mynavi.jp/articles/2011/12/07/nico/index.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.orf.at.txt b/inc/3rdparty/site_config/standard/news.orf.at.txt
deleted file mode 100755
index 3b1d3ccb..00000000
--- a/inc/3rdparty/site_config/standard/news.orf.at.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1single_page_link: //div[@id='content']//p[@class='readMore']/a
2
3title: //div[@class='hidden offscreen']/h2
4body: //div[@id="storyText"]
5move_into(//div[@id='storyText']): //div[@class='fact']
6strip: //small[@class='credit']
7strip: //small[@class='caption']
8date: substring-after(//div[@id='storyMeta']//p[@class='date'],'Publiziert am')
9strip: //p[@class='toplink']
10
11test_url: http://news.orf.at/stories/2084731/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.rambler.ru.txt b/inc/3rdparty/site_config/standard/news.rambler.ru.txt
deleted file mode 100755
index 1d547334..00000000
--- a/inc/3rdparty/site_config/standard/news.rambler.ru.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //article
2title: //h1
3author: //span[@class='b-article-source-dropdown']
4strip: //span[@class='b-article-photo-incut__source']
5strip: //a[@class='b-read-more b-read-more_bottom']
6
7
8tidy:no
9test_url: http://news.rambler.ru/12972208/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.techmeme.com.txt b/inc/3rdparty/site_config/standard/news.techmeme.com.txt
deleted file mode 100755
index ba4db828..00000000
--- a/inc/3rdparty/site_config/standard/news.techmeme.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class='main']/div[@class='item']
2strip: //div[@class='right']
3
4test_url: http://news.techmeme.com/110516/fh-rip \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.yahoo.com.txt b/inc/3rdparty/site_config/standard/news.yahoo.com.txt
deleted file mode 100755
index fc1739c8..00000000
--- a/inc/3rdparty/site_config/standard/news.yahoo.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //meta[@property='og:title']/@content
2title: //h1[@class='headline']
3author: //cite[contains(@class, 'byline') and contains(@class, 'vcard')]//span[@class='fn']
4date: //cite[contains(@class, 'byline') and contains(@class, 'vcard')]//abbr/@title
5body: //div[@id='mediaarticlelead']//a[@class='media'] | //div[contains(@class,'yom-art-content')]
6#strip: //cite/abbr
7strip_id_or_class: action
8strip_id_or_class: prefetch
9tidy: no
10prune: no
11
12test_url: http://news.yahoo.com/cold-la-nina-winter-forecast-west-coast-183535067.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.ycombinator.com.txt b/inc/3rdparty/site_config/standard/news.ycombinator.com.txt
deleted file mode 100755
index f7441d17..00000000
--- a/inc/3rdparty/site_config/standard/news.ycombinator.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1strip_comments: no
2strip: //a[. = 'reply']
3test_url: http://news.ycombinator.com/item?id=1516461 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news.zing.vn.txt b/inc/3rdparty/site_config/standard/news.zing.vn.txt
deleted file mode 100755
index af81e90e..00000000
--- a/inc/3rdparty/site_config/standard/news.zing.vn.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body://div[@class="newsdetail_wrapper"]
2strip://div[@class="more_news"]
3test_url: http://news.zing.vn/xa-hoi/s-phat-nang-xe-may-di-duong-tren-cao-ha-noi/a280838.html#home_noibat1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/news247.gr.txt b/inc/3rdparty/site_config/standard/news247.gr.txt
deleted file mode 100755
index 87637bed..00000000
--- a/inc/3rdparty/site_config/standard/news247.gr.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class='title']
2
3body: //img[@id='relPicsMainPic'] | //div[contains(@class, 'storyContent')]
4
5test_url: http://news247.gr/eidiseis/katatheseis_fwtia_htan_apofasismenoi_akomh_kai_na_afairesoyn_zwes_an_thewrousan_oti_to_thuma_htan_antipalos_toys.2433351.html
6test_url: http://news247.gr/?widget=rssfeed&view=feed&contentId=38291 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newsbomb.gr.txt b/inc/3rdparty/site_config/standard/newsbomb.gr.txt
deleted file mode 100755
index 5eb0ea46..00000000
--- a/inc/3rdparty/site_config/standard/newsbomb.gr.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1date: //meta[@name='og:article:published_time']/@value
2
3body: //div[@class='itemIntroText' or @class='itemImageBlock' or @class='itemFullText']
4
5strip_id_or_class: itemImageGallery
6
7prune: no
8
9test_url: http://www.newsbomb.gr/gossip/story/257234/i-proin-moy-protimoyse-na-serfarei-apo-to-na-kanoyme-sex \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newsle.com.txt b/inc/3rdparty/site_config/standard/newsle.com.txt
deleted file mode 100755
index e500ddcc..00000000
--- a/inc/3rdparty/site_config/standard/newsle.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1single_page_link: //iframe/@src
2test_url: http://newsle.com/article/0/15831103/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newsmill.se.txt b/inc/3rdparty/site_config/standard/newsmill.se.txt
deleted file mode 100755
index 1a990319..00000000
--- a/inc/3rdparty/site_config/standard/newsmill.se.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1
2body: (//div[@class='articleImg']//img)[1] | //p[contains(@class, 'commentTextArticle') or contains(@class, 'articlePublished')] | //div[@id='articleLeftContent']
3author: //div[@class='byline']//a[contains(@href, '/user/')]
4
5strip_id_or_class: facts
6strip_id_or_class: articleBlogsHolder
7strip_id_or_class: byline
8
9prune: no
10tidy: no
11
12test_url: http://www.newsmill.se/artikel/2012/05/06/medielogiken-v-ger-tyngre-n-reportrarnas-sikter \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newsunspun.org.txt b/inc/3rdparty/site_config/standard/newsunspun.org.txt
deleted file mode 100755
index 247bbebb..00000000
--- a/inc/3rdparty/site_config/standard/newsunspun.org.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@class='right']//div[@class='articles']
2author: //div[@id='artinfo']//a[contains(@href, '/author/')]
3strip: //div[@id='artinfo']
4strip: //table[//a[contains(@href, 'twitter.com')]]
5strip_id_or_class: twitter
6
7prune: no
8tidy: no
9
10test_url: http://www.newsunspun.org/eotn/bbc-headline-change-iran-goes-from-not-building-to-undecided-on-nuclear-bomb \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/newsweek.com.txt b/inc/3rdparty/site_config/standard/newsweek.com.txt
deleted file mode 100755
index 565648ba..00000000
--- a/inc/3rdparty/site_config/standard/newsweek.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@class = 'article-body']
2title: //h1[@class = 'article-title']
3strip: //aside
4
5test_url: http://www.newsweek.com/day-steve-mcqueen-met-his-new-nazi-neighbor-keith-moon-229741
6test_url: http://www.newsweek.com/2014/06/13/how-greylock-partners-finds-next-facebook-253329.html
diff --git a/inc/3rdparty/site_config/standard/newswise.com.txt b/inc/3rdparty/site_config/standard/newswise.com.txt
deleted file mode 100755
index 10120ea1..00000000
--- a/inc/3rdparty/site_config/standard/newswise.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1prune: no
2tidy: no
3
4title: //h1/a[2]
5body: //div[@id="main"]
6author: //span[@id="articlesource"]
7date: //span[contains(@class, 'releasedate')]
8
9strip: //div[@class="inst-logo"]
10strip: //h1[1]
11
12strip_id_or_class: addthis
13strip_id_or_class: released
14strip_id_or_class: skiptranslate
15strip_id_or_class: flash
16
17test_url: http://www.newswise.com/articles/first-heat-wave-of-season-puts-elderly-at-risk
diff --git a/inc/3rdparty/site_config/standard/newyorker.com.txt b/inc/3rdparty/site_config/standard/newyorker.com.txt
deleted file mode 100755
index 950324a3..00000000
--- a/inc/3rdparty/site_config/standard/newyorker.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[@id='articlehed'] | //h2[@id="articleintro"]
2body: //div[@id='articletext']
3
4strip: //ul[@id="bc"] | //div[@id="yrail"] | //div[@class="entry-keywords"] | //div[@class="entry-categories"] | //div[@class="socialUtils"] | //div[@id="footer"] | //div[@class="cartoon"]
5
6date: //h4[@id='articleauthor']/span[@class='dd dds']
7date: //div[@id="pagebody"]/div[@class='hentry entry']/div[@class='published']
8
9single_page_link: //div[@class='paginationViewSinglePage']/a
10test_url: http://www.newyorker.com/online/blogs/culture/2012/06/mug-shot-web-sites.html
11test_url: http://www.newyorker.com/reporting/2013/04/22/130422fa_fact_bilger?currentPage=all&mobify=0 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/next-gen.biz.txt b/inc/3rdparty/site_config/standard/next-gen.biz.txt
deleted file mode 100755
index b8d235db..00000000
--- a/inc/3rdparty/site_config/standard/next-gen.biz.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1# 2011-08-22 [carlo@...] initial version
2# 2011-08-22 [carlo@...] removed comments & social links
3
4tidy: no
5
6single_page_link: //a[@class="single active"]
7
8body: //div[@id="main"]//div[@class="content-region"]/article
9author: //span[@class="author-name"]
10date: //time/text()
11
12strip_id_or_class: //aside[@id="related"]
13strip: //footer
14
15title: //h1
16test_url: http://www.next-gen.biz/reviews/deus-ex-human-revolution-review \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nfl.com.txt b/inc/3rdparty/site_config/standard/nfl.com.txt
deleted file mode 100755
index 956b288f..00000000
--- a/inc/3rdparty/site_config/standard/nfl.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# doesn't look like selecting an attribute value works?
2# author: //meta[@id="authorName"]@value
3
4author: substring-after(//li[@id="article-hdr-meta-author"]/text(), "By ")
5date: //abbr[@id="article-time"]
6title: //div[@id="article-hdr"]/h1
7body: //div[@class="articleText"]
8
9# strip miscellaneous teasers & etc
10strip: //div[@class="removeformobile"]
11test_url: http://www.nfl.com/news/story/09000d5d82388707/article/close-shave-chiefs-haley-perseveres-through-rough-start?module=HP11_content_stream \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ngm.nationalgeographic.com.txt b/inc/3rdparty/site_config/standard/ngm.nationalgeographic.com.txt
deleted file mode 100755
index 44a82a95..00000000
--- a/inc/3rdparty/site_config/standard/ngm.nationalgeographic.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1next_page_link: //div[@class='nextpage_continue']/a
2strip: //div[@class='nextpage_continue']
3strip_id_or_class: nextpage
4title: //div[@class='article_title']//h1
5body: //div[@class='article_title']/..
6body: //div[@class='content']
7test_url: http://ngm.nationalgeographic.com/2012/02/tsunami/folger-text \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nhk.or.jp.txt b/inc/3rdparty/site_config/standard/nhk.or.jp.txt
deleted file mode 100755
index 0a3bb913..00000000
--- a/inc/3rdparty/site_config/standard/nhk.or.jp.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@id = 'news_right']
2test_url: http://www.nhk.or.jp/news/html/20110309/t10014559982000.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nintendoworldreport.com.txt b/inc/3rdparty/site_config/standard/nintendoworldreport.com.txt
deleted file mode 100755
index f0e28afb..00000000
--- a/inc/3rdparty/site_config/standard/nintendoworldreport.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1body: //div[@id="main"]
2title: //div[@id="main"]/h3
3
4# Remove &lsquo;Review&rsquo; and &lsquo;Wii&rsquo;.
5strip: //div[@class="badge"]
6
7# Remove duplicate title and country flag.
8strip: //h3
9
10# Commented out below are attempts to extract the author and date, which did not work.
11# author: //p[@class="extra "]/a
12# date: //p[@class="extra "]/span[@class="when"]
13test_url: http://www.nintendoworldreport.com/review/28400 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nojesguiden.se.txt b/inc/3rdparty/site_config/standard/nojesguiden.se.txt
deleted file mode 100755
index b15f0612..00000000
--- a/inc/3rdparty/site_config/standard/nojesguiden.se.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: //span[@class='meta']/span[@class='username']
2body: //div[@class='article-content']
3
4strip_id_or_class: 'article-actions'
5test_url: http://nojesguiden.se/blogg/maja-bredberg/maja-laser-tidningen-en-helt-vanlig-lordag-i \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/northumberlandview.ca.txt b/inc/3rdparty/site_config/standard/northumberlandview.ca.txt
deleted file mode 100755
index f698d98e..00000000
--- a/inc/3rdparty/site_config/standard/northumberlandview.ca.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1
2body: //div[@id='pn-maincontent']
3strip_id_or_class: z-menu
4strip_id_or_class: news_category
5strip_id_or_class: news_title
6strip_id_or_class: news_modify
7strip_id_or_class: news_morearticlesincat
8strip_id_or_class: ezc_comments
9strip_comments: yes
10
11test_url: http://www.northumberlandview.ca/index.php?module=news&type=user&func=display&sid=31127
diff --git a/inc/3rdparty/site_config/standard/nosalty.hu.txt b/inc/3rdparty/site_config/standard/nosalty.hu.txt
deleted file mode 100755
index 7e20cadf..00000000
--- a/inc/3rdparty/site_config/standard/nosalty.hu.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@id='tab-recept']//h1
2body: //div[@id='tab-recept']//div[contains(@class, 'column-container')]
3strip_id_or_class: ajanlo-box
4prune: no
5
6test_url: http://www.nosalty.hu/recept/szupergyors-fank \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nplusonemag.com.txt b/inc/3rdparty/site_config/standard/nplusonemag.com.txt
deleted file mode 100755
index 1b817c04..00000000
--- a/inc/3rdparty/site_config/standard/nplusonemag.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: /html/body/div[3]/div/div/h1
2
3body: //*[@id="article-body"]
4
5
6test_url: http://nplusonemag.com/the-outskirts-of-progress \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/npr.org.txt b/inc/3rdparty/site_config/standard/npr.org.txt
deleted file mode 100755
index acd73e48..00000000
--- a/inc/3rdparty/site_config/standard/npr.org.txt
+++ /dev/null
@@ -1,34 +0,0 @@
1title: //div[contains(@class, 'storytitle')]//h1
2author: //p[@class="byline"]/span
3body: //div[@id='primaryaudio']//*[@class='duration' or @class='download' or contains(@class, 'photo')] | //div[@id='storytext' or @id='supplementarycontent' or contains(@class, 'transcript')]
4date: //meta[@name="date"]/@content
5
6strip_id_or_class: enlarge_measure
7strip_id_or_class: enlarge_html
8strip: //a[contains(@class, 'enlargeicon')]
9strip: //div[contains(@class, 'bookedition')]
10strip: //div[@class='textsize']
11strip: //ul[@class='genres']
12strip: //span[@class='bull']
13strip_id_or_class: secondary
14strip_id_or_class: con1col
15strip: //h3[@class='conheader']
16
17replace_string(<a name="more">&nbsp;</a>): <!-- no more -->
18replace_string(<div class="transcript">): <div class="transcript"><h2>Transcript</h2>
19replace_string(<div class="transcript storytext">): <div class="transcript storytext"><h2>Transcript</h2>
20
21prune: no
22strip://div[@class="ecommercepop"]
23strip://span[@class="bull"]
24strip://span[@class="purchaseLink"]
25strip://div[@class="enlarge_html"]
26strip://div[@class="enlarge_measure"]
27strip://div[@class="container con1col small"]
28strip://a[contains(@class, "enlargebtn")]
29strip://div[contains(@class, "bucketwrap internallink")]
30
31test_url: http://www.npr.org/blogs/thetwo-way/2011/07/12/137799301/sports-loses-its-escapist-gleam-in-a-summer-of-court-dates
32test_url: http://www.npr.org/2012/07/04/156190948/feeling-under-siege-catholic-leadership-shifts-right
33test_url: http://www.npr.org/2012/12/13/166480907/the-years-best-sci-fi-crosses-galaxies-and-genres
34test_url: http://www.npr.org/templates/story/story.php?storyId=229103221 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nybooks.com.txt b/inc/3rdparty/site_config/standard/nybooks.com.txt
deleted file mode 100755
index d95ec68e..00000000
--- a/inc/3rdparty/site_config/standard/nybooks.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1strip_id_or_class: sIFR-alternate
2title: //div[@id='page-title-wrapper']/div[@id='page-title']/h2
3single_page_link: //a[contains(@href, 'pagination=false') and not(contains(@href, 'printpage=true'))]
4
5body: //div[@id = 'article-body']
6strip_id_or_class:article-tools
7strip_id_or_class:js_target
8strip_id_or_class:marker
9author://div[@id = 'page-title']/h3
10date://div[@id = 'page-title']/h5/a[starts-with(@href,'/issues/')]
11
12
13test_url: http://www.nybooks.com/articles/archives/2012/feb/23/were-more-unequal-you-think/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nymag.com.txt b/inc/3rdparty/site_config/standard/nymag.com.txt
deleted file mode 100755
index 7a1d62d9..00000000
--- a/inc/3rdparty/site_config/standard/nymag.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h2[contains(@class, 'primary')]
2body: //div[@id='story']
3author: //*[@class='by']/a
4date: substring-after(//*[@class='date'], 'Published')
5
6next_page_link: //div[@class='page-navigation']//li[@class='next']/a
7
8test_url: http://nymag.com/news/features/wall-street-2012-2/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nyteknik.se.txt b/inc/3rdparty/site_config/standard/nyteknik.se.txt
deleted file mode 100755
index f4bedb6a..00000000
--- a/inc/3rdparty/site_config/standard/nyteknik.se.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[@class="article default-article"]/h1
2author: //p[@class="author"]/a[2]
3
4# Article introduction:
5#move_into(//div[@class="article-bread"]): //p[@class="lead"]
6
7body: //div[@class="article-bread"]
8test_url: http://www.nyteknik.se/nyheter/energi_miljo/energi/article3391426.ece \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/nytimes.com.txt b/inc/3rdparty/site_config/standard/nytimes.com.txt
deleted file mode 100755
index 54735ec7..00000000
--- a/inc/3rdparty/site_config/standard/nytimes.com.txt
+++ /dev/null
@@ -1,53 +0,0 @@
1title://h1[@class="articleHeadline"]
2body://div[@id="article"]
3body://*[@itemprop="articleBody"]
4strip_id_or_class:articleTools
5strip_id_or_class:readerscomment
6#strip://div[contains(@class, "articleInline runaroundLeft")]
7strip: //div[contains(@class, "doubleRule")]
8# strip image credit - appears as a bold heading
9strip: //div[contains(@class, "articleInline")]//h6
10strip_id_or_class:enlargeThis
11strip_id_or_class:pageLinks
12strip_id_or_class:memberTools
13strip_id_or_class:articleExtras
14strip_id_or_class:singleAd
15strip_id_or_class:byline
16strip_id_or_class:dateline
17strip_id_or_class:articleheadline
18strip_id_or_class:articleBottomExtra
19strip_id_or_class:shareTools
20strip://a[contains(@href, 'nytimes.com/adx/')]
21strip: //nyt_byline
22strip: //span[contains(@class, 'slideshow') or contains(@class, 'video')]
23strip: //p[@class='caption']//a[contains(., 'More Photos')]
24
25prune: no
26tidy: no
27
28find_string: <script
29replace_string: <div style="display:none"
30find_string: </script>
31replace_string: </div>
32
33date: substring-after(//*[contains(@class, 'dateline')], 'Published:')
34
35single_page_link: //link[contains(@href, 'pagewanted=all')]
36single_page_link: //link[@rel='alternate' and contains(@href, 'mobile.nytimes.com')]/@href
37single_page_link: concat(substring-before(//div[@id='pageLinks']//a[contains(@href, 'pagewanted=')]/@href, 'pagewanted='), 'pagewanted=all')
38#single_page_link: //a[contains(@href, 'pagewanted=all') and not(contains(@href, 'login'))]
39
40strip://ul[@id = 'toolsList']
41strip://h6[@class = 'kicker']
42author:substring-after(//h6[@class='byline'],'By ')
43
44test_url: http://www.nytimes.com/2011/07/24/books/review/an-academic-authors-unintentional-masterpiece.html
45test_contains: In this column I want to look at a not uncommon way of writing
46
47test_url: http://www.nytimes.com/2012/06/10/arts/television/the-newsroom-aaron-sorkins-return-to-tv.html
48test_contains: IF you’ve seen enough of Aaron Sorkin’s theater
49
50test_url: http://www.nytimes.com/2013/03/25/world/middleeast/israeli-military-responds-after-patrols-come-under-fire-from-syria.html
51test_url: http://www.nytimes.com/2013/08/15/nyregion/when-the-new-york-city-subway-ran-without-rails.html
52test_url: http://www.nytimes.com/2004/02/29/weekinreview/correspondence-class-consciousness-china-s-wealthy-live-creed-hobbes-darwin-meet.html
53test_url: http://www.nytimes.com/2014/06/19/opinion/gail-collins-romney-and-the-2016-contenders-huddle.html
diff --git a/inc/3rdparty/site_config/standard/nzz.ch.txt b/inc/3rdparty/site_config/standard/nzz.ch.txt
deleted file mode 100755
index 749f4f2a..00000000
--- a/inc/3rdparty/site_config/standard/nzz.ch.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //*[@class='article-full']
2title: //h3
3strip: //header[@class='group']
4#body: //p[@class='lead']
5#move_into(//p[@class='lead']): //*[@class='article-full']/figure
6#move_into(//p[@class='lead']): //div[@id='articleBodyText']
7strip: //div[@id='social-media-floater']
8strip: //div[@class='advertisement']
9strip: //div[@class='infobox']
10strip: //div[@id='articleComments']
11
12test_url: http://www.nzz.ch/wissen/wissenschaft/sonnenschutz-fuer-die-erde-1.17282213 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/observer.com.txt b/inc/3rdparty/site_config/standard/observer.com.txt
deleted file mode 100755
index 0b107538..00000000
--- a/inc/3rdparty/site_config/standard/observer.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //article[contains(@class, 'instapaper_body')]
2
3prune: no
4
5single_page_link: //a[@id='print-button']
6
7test_url: http://www.observer.com/2008/would-you-take-tumblr-man \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/off.net.mk.txt b/inc/3rdparty/site_config/standard/off.net.mk.txt
deleted file mode 100755
index bf107876..00000000
--- a/inc/3rdparty/site_config/standard/off.net.mk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[(@id = "content")]
2strip: //div[(@class = "links-bar")]
3strip: //div[(@class = "povrzani")]
4strip: //div[(@class = "povrzani-dolu")]
5strip: //div[(@class = "tags")]
6strip: //h1[(@id = "page-title")]
7test_url: http://off.net.mk/zhivot-i-zabava/gadzheti/dzhabe-raboti-dzhabe-ne-dishi \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/omaha.com.txt b/inc/3rdparty/site_config/standard/omaha.com.txt
deleted file mode 100755
index 53db061d..00000000
--- a/inc/3rdparty/site_config/standard/omaha.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='story']
2test_url: http://www.omaha.com/article/20111031/BIGRED/111039984#pelini-tremendous-challenge-ahead-for-huskers \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/omiliya.org.txt b/inc/3rdparty/site_config/standard/omiliya.org.txt
deleted file mode 100755
index 4b3a7202..00000000
--- a/inc/3rdparty/site_config/standard/omiliya.org.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='squeeze']/h1
2strip: //div[@id='squeeze']/h1
3author: //div[@class='submitted']/a
4strip: //div[@class='submitted']/a
5convert_double_br_tags: yes
6
7
8
9test_url: http://omiliya.org/content/predchuvstvie.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/on.net.mk.txt b/inc/3rdparty/site_config/standard/on.net.mk.txt
deleted file mode 100755
index a95c2b0f..00000000
--- a/inc/3rdparty/site_config/standard/on.net.mk.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[(@class = "statija")]
2strip: //div[(@class = "relatedBlock")]
3strip: //div[(@class = "swftools")]
4strip: //table[(@class = "links")]
5test_url: http://on.net.mk/video/na-trkala/lamborghini-aventador-avionot-shto-ne-leta \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/online.wsj.com.txt b/inc/3rdparty/site_config/standard/online.wsj.com.txt
deleted file mode 100755
index 448bb7e1..00000000
--- a/inc/3rdparty/site_config/standard/online.wsj.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1title: //meta[@property="og:title"]/@content
2body: //div[@id='article_story_body']
3
4author: //h3[@class='byline']/a
5# for slide show content
6body: //ul[@id='imageSlide']//li[@class='firstSlide']//img | (//div[@class='txt_body']//p)[1]
7date: //li[@class='dateStamp']/small
8
9strip_id_or_class: insetFullBracket
10strip_id_or_class: insettipBox
11#strip_id_or_class: legacyInset
12strip_id_or_class: recipeACShopAndBuyText
13
14strip: //div[contains(@class, 'insetContent')]//cite
15strip: //*[contains(@style, 'visibility: hidden;')]
16strip: //div[contains(@class, 'insetContent') and not(contains(@class, 'image'))]
17strip: //div[contains(@class, 'carousel')]
18
19prune: no
20tidy: no
21
22test_url: http://online.wsj.com/news/articles/SB10001424052702304626304579509100018004342
23test_url: http://online.wsj.com/article/SB10001424052970203363504577185322849515102.html
24# slide show
25test_url: http://online.wsj.com/article/SB10001424052970204791104577110550376458164.html
diff --git a/inc/3rdparty/site_config/standard/onlinewelten.com.txt b/inc/3rdparty/site_config/standard/onlinewelten.com.txt
deleted file mode 100755
index 1609fa83..00000000
--- a/inc/3rdparty/site_config/standard/onlinewelten.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@id='news_detail']//div[@class='contents clearfix']
2test_url: http://www.onlinewelten.com/games/aliens-colonial-marines/news/offizielle-spiel-ankuendigung-nintendos-wii-u-103690/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/onstartups.com.txt b/inc/3rdparty/site_config/standard/onstartups.com.txt
deleted file mode 100755
index cccce8cd..00000000
--- a/inc/3rdparty/site_config/standard/onstartups.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip: //div[@id="dnn_LeftPane"] | //div[@id="dnn_ContentPane"]//h1 | //div[@id="dnn_ContentPane"]//p[@class="Normal"] | //div[@class="Submissions"] | //div[@id="listing"]//h3 | //div[@id="listing"][2] | //div[@id="emart-fail"] | //div[@id="emart-success"] | //div[@id="emart-form"]
2test_url: http://onstartups.com/tabid/3339/bid/37737/Secrets-Of-Freemium-Pricing-Make-The-Cheapskates-Pay.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ontologicalgeek.com.txt b/inc/3rdparty/site_config/standard/ontologicalgeek.com.txt
deleted file mode 100755
index a9bf71ef..00000000
--- a/inc/3rdparty/site_config/standard/ontologicalgeek.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class='entry-title']
2
3author: //a[@rel='author']
4
5date: substring-before(//aside[@class='entry-meta'], '|')
6
7body: //div[@class='entry-content']
8test_url: http://ontologicalgeek.com/change-or-live-final-fantasy-x-as-catholic-dystopia/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/opensource.org.txt b/inc/3rdparty/site_config/standard/opensource.org.txt
deleted file mode 100755
index 2bd3ccdb..00000000
--- a/inc/3rdparty/site_config/standard/opensource.org.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='content clear-block']
2test_url: http://opensource.org/node/537 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/openthemagazine.com.txt b/inc/3rdparty/site_config/standard/openthemagazine.com.txt
deleted file mode 100755
index 6913eb0e..00000000
--- a/inc/3rdparty/site_config/standard/openthemagazine.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id = 'content-inner']
2strip: //div[@id = 'content-bottom']
3strip_id_or_class: print_sharebutton
4test_url: http://openthemagazine.com/article/nation/sania-vs-saina \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/openwebx.org.txt b/inc/3rdparty/site_config/standard/openwebx.org.txt
deleted file mode 100755
index a5dcdb59..00000000
--- a/inc/3rdparty/site_config/standard/openwebx.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class="chapter"]
2prune: no
3tidy: no
4test_url: http://openwebx.org/docs/springext.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/orf.at.txt b/inc/3rdparty/site_config/standard/orf.at.txt
deleted file mode 100755
index fb4f2181..00000000
--- a/inc/3rdparty/site_config/standard/orf.at.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1single_page_link: //div[@id='content']//p[@class='readMore']/a
2
3title: //div[@class='hidden offscreen']/h2
4body: //div[@id="storyText"]
5move_into(//div[@id='storyText']): //div[@class='fact']
6strip: //small[@class='credit']
7strip: //small[@class='caption']
8date: substring-after(//div[@id='storyMeta']//p[@class='date'],'Publiziert am')
9strip: //p[@class='toplink']
10
11test_url: http://orf.at/stories/2084731/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/origo.hu.txt b/inc/3rdparty/site_config/standard/origo.hu.txt
deleted file mode 100755
index 50717f25..00000000
--- a/inc/3rdparty/site_config/standard/origo.hu.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: /html/body/div[5]/div[2]/h1
2body: /html/body/div[5]/div[2]/div[6]/div/div
3body: //*[@id="cikk"]
4strip: /html/body/div[5]/div[2]/h1
5strip: /html/body/div[5]/div[2]/div[4]
6strip: //*[@id="multidoboz"]
7strip: /html/body/div[5]/div[2]/div[6]/div[2]
8strip: //*[@id="comments"]
9strip: //*[@id="rating-doboz"]
10strip: /html/body/div[5]/div[2]/div[10]
11strip: /html/body/div[5]/div[2]/a
12strip: /html/body/div[5]/div[2]/span
13strip: /html/body/div[5]/div[2]/span[2]
14strip: /html/body/div[5]/div[2]/span[3]
15strip: /html/body/div[5]/div[2]/span[4]
16strip: /html/body/div[5]/div[2]/span[5]
17strip: //*[@id="kommentszam"]
18test_url: http://www.origo.hu/itthon/20110119-lemondott-a-kulturaert-felelos-helyettes-allamtitkar.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/oschina.net.txt b/inc/3rdparty/site_config/standard/oschina.net.txt
deleted file mode 100755
index 56451539..00000000
--- a/inc/3rdparty/site_config/standard/oschina.net.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h1
2strip_id_or_class: syntaxhighlighter
3test_url: http://www.oschina.net/translate/event-based-programming-what-async-has-over-sync?print \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pakistantvdekho.com.txt b/inc/3rdparty/site_config/standard/pakistantvdekho.com.txt
deleted file mode 100755
index 7e2985e0..00000000
--- a/inc/3rdparty/site_config/standard/pakistantvdekho.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1#body: (//div[@class='ftr-yt-vid'])[1]
2body: (//blockquote[contains(@class, 'postcontent')])[1]
3body: (//div[starts-with(@id, 'post_message')])[1]
4
5prune: no
6tidy: no
7
8#replace_string(<iframe title="YouTube video player"): <div class="ftr-yt-vid"><iframe title="YouTube video player"
9#replace_string(</iframe>): </iframe>&nbsp;</div>
10
11test_url: http://pakistantvdekho.com/showthread.php?647741-Sitam-Gar-by-HUM-TV-Episode-07&p=659080#post659080 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pakmedia.tv.txt b/inc/3rdparty/site_config/standard/pakmedia.tv.txt
deleted file mode 100755
index 5d6e4c8c..00000000
--- a/inc/3rdparty/site_config/standard/pakmedia.tv.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1title: //h1[@class='entry-title']
2body: //article//div[@class='entry']
3strip_id_or_class: addthis
4strip_id_or_class: gdsrcacheloader
5strip_id_or_class: entry-meta
6strip_id_or_class: entry-tags
7strip_id_or_class: authorbox
8strip: //div[@class='entry']/p[1]
9strip: //img[@width='600' and @height='70']
10# related posts
11strip: //h3[contains(., 'Related posts')]
12strip: //div[contains(@style, 'border: 0pt none ; margin: 0pt; padding: 0pt;')]
13
14prune: no
15tidy: no
16
17test_url: http://pakmedia.tv/tv-one/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pandagon.net.txt b/inc/3rdparty/site_config/standard/pandagon.net.txt
deleted file mode 100755
index 35121e14..00000000
--- a/inc/3rdparty/site_config/standard/pandagon.net.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title://h2
2author://div[@class="posted"]/a
3date://div[@class="date"]
4body://div[@class="entry"]
5test_url: http://pandagon.net/index.php/site/its-okay-to-admit-that-mass-hysteria-is-real \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pandodaily.com.txt b/inc/3rdparty/site_config/standard/pandodaily.com.txt
deleted file mode 100755
index a5d427af..00000000
--- a/inc/3rdparty/site_config/standard/pandodaily.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1tidy: no
2body: //article
3date: //time/@datetime
4strip_id_or_class: sharedaddy
5test_url: http://pandodaily.com/2012/01/19/ibooks-author-is-not-going-to-hurt-publishers-it-might-even-help-them/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/panic.com.txt b/inc/3rdparty/site_config/standard/panic.com.txt
deleted file mode 100755
index e0e2595c..00000000
--- a/inc/3rdparty/site_config/standard/panic.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='entry']
2date: //h3[@class='postDate']
3test_url: http://www.panic.com/blog/2011/07/panic-is-ready-for-lion/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/papodehomem.com.br.txt b/inc/3rdparty/site_config/standard/papodehomem.com.br.txt
deleted file mode 100755
index 2c522da4..00000000
--- a/inc/3rdparty/site_config/standard/papodehomem.com.br.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2[@class="page_title"]
2body: //div[@class="entry arquivo"]
3author: //span[@class="author"]
4footnotes: yes
5prune: yes
6test_url: http://papodehomem.com.br/um-relato-confessional-sobre-a-maioridade-penal/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/parislemon.com.txt b/inc/3rdparty/site_config/standard/parislemon.com.txt
deleted file mode 100755
index cd9bd55d..00000000
--- a/inc/3rdparty/site_config/standard/parislemon.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2[@class="post-title"]
2author: substring-after(//div[@class="description"],'Words by ')
3date: //li[@class="date"]
4strip: //h2[@class="post-title"]
5body: //div[@class="copy"]
6test_url: http://parislemon.com/post/13462682469/the-15-inch-air \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/parliament.uk.txt b/inc/3rdparty/site_config/standard/parliament.uk.txt
deleted file mode 100755
index caaa2e94..00000000
--- a/inc/3rdparty/site_config/standard/parliament.uk.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h1
2body: //div[@id='news-article']
3test_url: http://www.parliament.uk/business/committees/committees-a-z/commons-select/backbench-business-committee/news/guidance-for-e-petitioners/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pastebin.com.txt b/inc/3rdparty/site_config/standard/pastebin.com.txt
deleted file mode 100755
index 03b67b7e..00000000
--- a/inc/3rdparty/site_config/standard/pastebin.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title://div[@class="paste_box_line1"]/h1
2author://div[@class="paste_box_line2"]/a
3body://div[@class="text"]
4date:substring-before(substring-after(//div[@class="paste_box_line2"],'|'),'|')
5dissolve://li
6test_url: http://pastebin.com/LAykd1es \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pastepad.fivefilters.org.txt b/inc/3rdparty/site_config/standard/pastepad.fivefilters.org.txt
deleted file mode 100755
index c535158d..00000000
--- a/inc/3rdparty/site_config/standard/pastepad.fivefilters.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1
2body: //div[@id='ff-pastepad-content']
3prune: no
4# todo: add test file
5test_url: http://pastepad.fivefilters.org/test.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pathawks.com.txt b/inc/3rdparty/site_config/standard/pathawks.com.txt
deleted file mode 100755
index 25042224..00000000
--- a/inc/3rdparty/site_config/standard/pathawks.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title://*[contains(@class,'post-title')]
2body://div[contains(@class,'post-body')]
3body://div[contains(@class,'entry-content')]
4strip_comments:no
5prune:no
6convert_double_br_tags:yes
7tidy:yes
8test_url: http://www.pathawks.com/2011/06/crazyawesomecoloradotrip.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pcast.me.txt b/inc/3rdparty/site_config/standard/pcast.me.txt
deleted file mode 100755
index ae38e8e1..00000000
--- a/inc/3rdparty/site_config/standard/pcast.me.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1prune: no
2test_url: http://pcast.me/shownotes/get/16t \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pcmag.com.txt b/inc/3rdparty/site_config/standard/pcmag.com.txt
deleted file mode 100755
index 96bdd95a..00000000
--- a/inc/3rdparty/site_config/standard/pcmag.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1prune:yes
2
3date://*[contains(@class,'date')]
4
5body://div[contains(@id,'content')]
6
7next_page_link://a[contains(.,'Next >')]
8
9strip_id_or_class:sponsors
10test_url: http://www.pcmag.com/article2/0,2817,2401676,00.asp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pcworld.com.txt b/inc/3rdparty/site_config/standard/pcworld.com.txt
deleted file mode 100755
index 7193f87e..00000000
--- a/inc/3rdparty/site_config/standard/pcworld.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //div[@class='articleHead']//h1
2author: //div[@class="author-name"]/a[1]
3body: //div[@class="main"]
4
5# remove 'From the Lab' and 'Recent posts' text
6strip: //div[@class='blogLabel']
7
8# remove byline and meta info
9strip: //h1
10strip: //div[@class="article-meta"]
11strip: //div[@class="author-info"]
12
13#strip tags and categories
14strip: //div[@class="department"]
15
16#strip product cap links
17strip: //div[@class="cap-main"]
18strip: //div[@id="compare-lede"]
19test_url: http://www.pcworld.com/article/262034/are-printer-companies-gouging-us-on-laser-toner-pricing.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/penny-arcade.com.txt b/inc/3rdparty/site_config/standard/penny-arcade.com.txt
deleted file mode 100755
index a0d5099e..00000000
--- a/inc/3rdparty/site_config/standard/penny-arcade.com.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1# 2012-01-14 carlo@... - fixed title, body; added author, date
2
3title: //div[@class="title"]/h2/a
4# body: //div[@class="post"]
5# author: //p[@class="iconEmail"]/a
6# date: //p[@class="iconDate"]
7
8# 1/24/2013 yosoyju - fixed author, date, and body, added support for PA Report
9
10# Penny Arcade
11
12author: //li[@class="iconEmail"]/a
13date: //li[@class="iconDate"]
14body: //div[@class="body"]
15
16# PA Report
17
18author: //div[@class="meta"]/p/a
19date: substring-after(//div[@class="meta"]/p, '/ ')
20title: substring-after(//title, '- ')
21
22test_url: http://penny-arcade.com/2012/01/13/i-put-some-news-in-your-news
23test_url: http://penny-arcade.com/report/editorial-article/the-dystopian-future-of-casual-games-personalized-targeted-pricing-and-mech \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pentaxforums.com.txt b/inc/3rdparty/site_config/standard/pentaxforums.com.txt
deleted file mode 100755
index 00f61a48..00000000
--- a/inc/3rdparty/site_config/standard/pentaxforums.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1next_page_link: //a[contains(., 'Next:')]
2test_url: http://www.pentaxforums.com/reviews/long-exposure-handhelds/introduction.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/philadelphiaeagles.com.txt b/inc/3rdparty/site_config/standard/philadelphiaeagles.com.txt
deleted file mode 100755
index 5ba5f772..00000000
--- a/inc/3rdparty/site_config/standard/philadelphiaeagles.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1prune: no
2tidy: no
3body: //div[@class='article-content']
4dissolve: //nobr/a
5dissolve: //nobr
6test_url: http://www.philadelphiaeagles.com/news/article-1/Jacksons-Light-Shined-On-Sunday-Night/51a862de-42b4-40f1-a5a8-ba0fb8a435b7 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/philly.com.txt b/inc/3rdparty/site_config/standard/philly.com.txt
deleted file mode 100755
index accbd60b..00000000
--- a/inc/3rdparty/site_config/standard/philly.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1[@class='entry-title']
2author: //p[@class='byline']/span
3body: //@id='body-content'
4date: //div[@class='article_timestamp']/span
5
6strip: //@class=b-group
7strip: //*[contains(@style, 'none')]
8strip: //a[contains(@href, 'comments')]
9strip: //*[contains(@class, 'comment')]
10test_url: http://www.philly.com/philly/sports/eagles/20120127_Ohio_State_s_Posey_didn_t_waste_time_lost_to_suspension.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/photo.tutsplus.com.txt b/inc/3rdparty/site_config/standard/photo.tutsplus.com.txt
deleted file mode 100755
index 7f7e3830..00000000
--- a/inc/3rdparty/site_config/standard/photo.tutsplus.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1author: substring-before(//div[@class='post_meta'],' on')
2date: substring-after(substring-before(//div[@class='post_meta'],'with'),' on')
3title: //h1[class='post_title']
4body: //div[@class='article']
5
6test_url: http://photo.tutsplus.com/articles/news/a-brilliant-beginners-guide-to-architectural-photography/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/php.net.txt b/inc/3rdparty/site_config/standard/php.net.txt
deleted file mode 100755
index cc643f05..00000000
--- a/inc/3rdparty/site_config/standard/php.net.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='content']
2strip_id_or_class: manualnavbar
3
4prune: no
5
6test_url: http://www.php.net/manual/en/migration5.incompatible.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/physicstoday.org.txt b/inc/3rdparty/site_config/standard/physicstoday.org.txt
deleted file mode 100755
index 624055b7..00000000
--- a/inc/3rdparty/site_config/standard/physicstoday.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@class='abstitle']//h1
2author: //div[@class='authorList']
3body: //div[@id='fulltext_body']
4
5prune: no
6
7test_url: http://www.physicstoday.org/resource/1/phtoad/v64/i10/p48_s1?bypassSSO=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pinterest.com.txt b/inc/3rdparty/site_config/standard/pinterest.com.txt
deleted file mode 100755
index 01b6df41..00000000
--- a/inc/3rdparty/site_config/standard/pinterest.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //title
2body: //div[contains(@class, 'imageContainer')]
3
4test_url: http://pinterest.com/pin/380906080954441188/
5test_url: http://pinterest.com/michaelsorm/architecture/rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pitchfork.com.txt b/inc/3rdparty/site_config/standard/pitchfork.com.txt
deleted file mode 100755
index eee96a9c..00000000
--- a/inc/3rdparty/site_config/standard/pitchfork.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title:concat(//h1,' - ',//h2,' - ',//h3)
2author://address
3date://span[@class='pub-date']
4body://div[@id='main']
5single_page_link://link[@rel='canonical']
6strip://div[@class='info']
7strip_id_or_class:'object-grid related-content'
8strip_id_or_class:'object-prevnext'
9strip_id_or_class:'object-header'
10strip_id_or_class:'source'
11strip_id_or_class:'label'
12strip_id_or_class:'title'
13dissolve://ul
14strip://li[@class='next']
15strip://li[@class='prev']
16test_url: http://pitchfork.com/features/why-we-fight/8796-on-the-far-slope-of-the-uncanny-valley/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pittnews.com.txt b/inc/3rdparty/site_config/standard/pittnews.com.txt
deleted file mode 100755
index c302526d..00000000
--- a/inc/3rdparty/site_config/standard/pittnews.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h2[@class='post-title']
2author: substring-before(substring-after(//h3[@class='post-byline'],'By:'),'/')
3date: substring-before(substring-after(//p[@class='post-details'],'Posted on '),'in')
4strip: //h2[@class='post-title']
5strip: //p[@class='post-details']
6strip: //h3[@class='post-byline']
7body: //div[@id='content']
8test_url: http://pittnews.com/newsstory/mens-basketball-pitt-recruit-robinson-to-bring-leadership/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pittsburgh.pirates.mlb.com.txt b/inc/3rdparty/site_config/standard/pittsburgh.pirates.mlb.com.txt
deleted file mode 100755
index f2948528..00000000
--- a/inc/3rdparty/site_config/standard/pittsburgh.pirates.mlb.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: substring-before(//title,'pirates.com')
2date: //span[@class='timeStamp']
3author: substring-before(substring-after(//div[@class='byLine'],'By'),'/')
4body: //div[@id='article']
5#strip: //div[@class='inner']
6strip: //div[@id='article_head']
7strip: //p[@class='tagLine']
8strip: //div[@id='article_related_links']
9strip: //div[@id='article_related_mlb']
10strip: //div[@id='article_related_club']
11strip: //span[@class='more']
12strip: //div[@class='article_component']
13strip: //span[@class='screen_reader']
14strip: //ul[@class='columnists_blurb']
15test_url: http://pittsburgh.pirates.mlb.com/news/article.jsp?ymd=20120330&content_id=27759040&vkey=news_pit&c_id=pit \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pittsburghlive.com.txt b/inc/3rdparty/site_config/standard/pittsburghlive.com.txt
deleted file mode 100755
index cc7891f3..00000000
--- a/inc/3rdparty/site_config/standard/pittsburghlive.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: substring-before(//title,'- Pittsburgh Tribune')
2author: substring-before(substring-after(//div[@class='byline'],'By '),',')
3date: substring-after(substring-after(//div[@class='byline'],','),',')
4body: //div[@id='storyBody']
5strip: //div[@class='morestories']
6dissolve: //p[@class='subheader']
7test_url: http://www.pittsburghlive.com/x/pittsburghtrib/sports/columnists/s_785654.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pittsburghmagazine.com.txt b/inc/3rdparty/site_config/standard/pittsburghmagazine.com.txt
deleted file mode 100755
index 4d02f6bb..00000000
--- a/inc/3rdparty/site_config/standard/pittsburghmagazine.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //title
2author: substring-after(//div[@class='by-line'],'BY')
3
4body: //div[@id='article-body']
5
6strip: //div[@class='by-line']
7strip: //div[@id='article-body']/h1
8test_url: http://www.pittsburghmagazine.com/Pittsburgh-Magazine/May-2012/Verde-Lights-the-Night/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pittsburghpanthers.com.txt b/inc/3rdparty/site_config/standard/pittsburghpanthers.com.txt
deleted file mode 100755
index c372284a..00000000
--- a/inc/3rdparty/site_config/standard/pittsburghpanthers.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //span[@class='StoryHeadline']
2strip: //div[@class='fivevert']
3body: //div[@id='Content']
4test_url: http://www.pittsburghpanthers.com/sports/m-baskbl/recaps/031412aaa.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pittscriptblog.com.txt b/inc/3rdparty/site_config/standard/pittscriptblog.com.txt
deleted file mode 100755
index 571874a4..00000000
--- a/inc/3rdparty/site_config/standard/pittscriptblog.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class='articletitle']
2author: substring-after(//span[@class='author'],'by')
3date: //span[@class='created']
4body: //div[@class='article']
5strip: //div[@class='headline']
6strip: //p[@class='articleinfo']
7#dissolve: //p[@class='subheader']
8test_url: http://www.pittscriptblog.com/2012-articles/march/2012-football-opponents-set-and-the-attendance-dilemma.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/planetvita.de.txt b/inc/3rdparty/site_config/standard/planetvita.de.txt
deleted file mode 100755
index bfc3342d..00000000
--- a/inc/3rdparty/site_config/standard/planetvita.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@id='frnRahmen']/div/div[@id='content']/div[2]/h2
2author: //div[@id='content']/div[1]/div/a
3body: //div[@id='content']/div[2]/span
4strip: //div[@id='commenthead']
5test_url: http://www.planetvita.de/news/10389-psn-store-update-vom-03-april-neue-inhalte-fuer-psvita.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/playboy.com.txt b/inc/3rdparty/site_config/standard/playboy.com.txt
deleted file mode 100755
index 92834947..00000000
--- a/inc/3rdparty/site_config/standard/playboy.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1author: //article//*[@class="author"]
2date: //article//*[@class="publication-date"]
3body: //article
4strip: //article/header
5strip: //article/section
6test_url: http://www.playboy.com/playground/view/playboy-interview-jon-hamm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/plus.google.com.txt b/inc/3rdparty/site_config/standard/plus.google.com.txt
deleted file mode 100755
index 4a7ea126..00000000
--- a/inc/3rdparty/site_config/standard/plus.google.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1body: //div[@id='contentPane']//div[@class='vg']
2body: //div[@id='contentPane']
3
4# Grab the author by finding the first profile pic, then backing up a node and getting the title of <a> tag which will be the author hopefully. Sorry can't test this due to parser errors, thanks google :(
5
6author: //div[@id='contentPane']//img[contains(@alt, 'profile photo')][1]/../@title
7
8
9strip: //*[@title="People who +1'd this"]/../..
10strip: //*[contains(@class, 'a-b-f-i-Hg-Uf')]
11strip: //*[@role='menu']
12strip: //img[contains(@alt, 'profile photo')]
13strip: //*[@class='a-f-i-Ad']
14
15tidy: no
16
17test_url: http://plus.google.com/u/0/117840649766034848455/posts/FddaP6jeCqp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/plzkthxbai.com.txt b/inc/3rdparty/site_config/standard/plzkthxbai.com.txt
deleted file mode 100755
index ec151b42..00000000
--- a/inc/3rdparty/site_config/standard/plzkthxbai.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h2[@class='jcw-pagetitle'
2date: //p[@class='postinfo']
3body: //div[@class='contenttext']
4test_url: http://plzkthxbai.com/blog/2011/06/28/1password-and-internet-security/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/pogue.blogs.nytimes.com.txt b/inc/3rdparty/site_config/standard/pogue.blogs.nytimes.com.txt
deleted file mode 100755
index 65ddba54..00000000
--- a/inc/3rdparty/site_config/standard/pogue.blogs.nytimes.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id="content"]/div[1]
2
3title: //h1[@class="entry-title"]
4test_url: http://pogue.blogs.nytimes.com/2011/05/12/the-future-of-skype/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/politico.com.txt b/inc/3rdparty/site_config/standard/politico.com.txt
deleted file mode 100755
index d8f5e575..00000000
--- a/inc/3rdparty/site_config/standard/politico.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title://div[contains(@class, "article")]/h1
2body://div[contains(@class,"story-text")]
3
4# Why doesn't this work? next_page_link://ul[contains(@class,"pagination")]/li/a[@rel="next"]
5
6next_page_link://ul[contains(@class,"pagination")]/li[contains(@class, "current")]/following-sibling::node()/a
7date://meta[@name="publish_date"]/@content
8
9strip://div[contains(@class, "breadcrumbs")]
10strip://a[contains(@class, "hidden")]
11strip://div[contains(@class, "story-embed")]
12strip://div[contains(@class, "story-text")]//p/a[contains(text(), "Also on POLITICO:")]/..
13test_url: http://www.politico.com/news/stories/0712/78105.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/politifact.com.txt b/inc/3rdparty/site_config/standard/politifact.com.txt
deleted file mode 100755
index 65a8fc57..00000000
--- a/inc/3rdparty/site_config/standard/politifact.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id="content"]
2
3strip: //div[@class="pfcontentmid"]/div[position()>4]|//div[@class="pfad"]
4test_url: http://www.politifact.com/truth-o-meter/statements/2011/may/30/barbara-boxer/barbara-boxer-says-medicare-overhead-far-lower-pri/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/politiken.dk.txt b/inc/3rdparty/site_config/standard/politiken.dk.txt
deleted file mode 100755
index b13f8f87..00000000
--- a/inc/3rdparty/site_config/standard/politiken.dk.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1# 21/10-2011:
2# Added Author+Date
3# Remove fakta-boks if found
4# Deleted 'Læs også...' filter
5# - Change in markup caused it to strip too much.
6
7author://span[@class='autor-name']
8date:substring-after(//div[@class='art-created'], ' ')
9title: //h1[contains(@class, 'stor-type')]
10body: //div[@id='art-body']
11strip: //div[@class='art-fakta article-box']
12
13test_url: http://politiken.dk/kultur/boger/skonlitteratur_boger/ECE1426386/makabre-tegneserie-zombier-aeder-alt-levende/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/polygon.com.txt b/inc/3rdparty/site_config/standard/polygon.com.txt
deleted file mode 100755
index 8fe9b1be..00000000
--- a/inc/3rdparty/site_config/standard/polygon.com.txt
+++ /dev/null
@@ -1,34 +0,0 @@
1body: //div[@id='article-content']
2body: //article[@id='entry-top']/div[@class='float_wrapper']
3author: //header/p[@class='byline']/em/a
4date: //header/p[@class='byline']/span[@class='timestamp']
5
6strip: //div[@id='article-content']//header
7strip: //label
8
9#photos on left column (delete all)
10strip: //div[@class='big_photo']
11
12#photos on left column (remove extras used for scroll effect)
13#strip: //div[@class='big_photo']/div[./img]
14#strip: //div[@class='big_photo']/img[position()>1]
15
16strip_id_or_class: vox-lazy-load
17strip_id_or_class: social_buttons
18strip_id_or_class: feature_toc
19
20prune: no
21
22find_string: <noscript>
23replace_string: <div>
24find_string: </noscript>
25replace_string: </div>
26
27#find_string: <script
28#replace_string: <div style="display:none"
29#find_string: </script>
30#replace_string: </div>
31
32strip: //div[@class='float_wrapper']/header
33test_url: http://www.polygon.com/2013/4/5/4189028/donkey-kong-country-returns-3d-new-content
34test_url: http://www.polygon.com/features/2013/8/22/4602568/30-years-xbox-360-playstation-3-wii \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/popularmechanics.com.txt b/inc/3rdparty/site_config/standard/popularmechanics.com.txt
deleted file mode 100755
index 2582e6fb..00000000
--- a/inc/3rdparty/site_config/standard/popularmechanics.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1next_page_link: //div[@id='longPagination']/a[@class='next']
2
3title: //div[@id='contentHeader']//h1
4
5body: //div[@id='articleBody']
6# this is so sad
7body: //div[@id='intelliTXT']
8test_url: http://www.popularmechanics.com/technology/aviation/crashes/what-really-happened-aboard-air-france-447-6611877 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/portertech.ca.txt b/inc/3rdparty/site_config/standard/portertech.ca.txt
deleted file mode 100755
index 2897cb57..00000000
--- a/inc/3rdparty/site_config/standard/portertech.ca.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1author: //*[(@class = "author")]
2date: //*[(@class = "date")]
3test_url: http://portertech.ca/2012/12/10/iac-morning-market/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/positioningmag.com.txt b/inc/3rdparty/site_config/standard/positioningmag.com.txt
deleted file mode 100755
index f8eeb0a3..00000000
--- a/inc/3rdparty/site_config/standard/positioningmag.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //div[@id="newsDetailTitle"]
2author: //span[@id="showAuthor"]
3date: //span[@id="showRefDate"]
4
5strip: //div[@id="breadcrumbs"]
6strip: //span[@id="PageTitle"]
7strip: //div[@id="newsDetailAuthorPublish"]
8
9strip: //div[@class="leadPix"]
10
11strip: //span[@id="ctl00_PageTitle"]
12strip: //div[@id="newsDetailTitle"]
13convert_double_br_tags:yes
14
15strip: //div[@id="newsDetailCredential"]
16strip: //div[@id="sidebar2"]
17strip: //div[@id="footer"]
18
19test_url: http://www.positioningmag.com/magazine/details.aspx?id=41083 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/post-gazette.com.txt b/inc/3rdparty/site_config/standard/post-gazette.com.txt
deleted file mode 100755
index baa9d69d..00000000
--- a/inc/3rdparty/site_config/standard/post-gazette.com.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1title: //div[@class='story_headline']
2author: substring-before(substring-after(//div[@class='story_byline'],'By'),'/')
3date: //div[@class='story_lastupdate']
4body: //div[@id='story']
5strip: //div[@class='story_byline']
6strip: //div[@class='story_lastupdate']
7strip: //div[@class='story_headline']
8strip: //div[@id='abuse']
9strip: //h2
10strip: //div[@class='pagenumbers_wrap']
11strip: //ul[@class='pagenumbers']
12strip: //div[starts-with(., 'To report inappropriate comments')]
13
14strip_id_or_class: story_share
15strip_id_or_class: OUTBRAIN
16strip_id_or_class: story_box_right
17strip: //div[a[@href='http://www.post-gazette.com/pg/12062/1213990-42.stm']]
18strip: //ul[@id='pikame']/li[position()>1]
19
20prune: no
21tidy: no
22
23single_page_link: //a[contains(@href, '?p=0')]
24
25test_url: http://www.post-gazette.com/stories/sports/penguins/pens-crosby-expects-to-return-thursday-226648/
26test_url: http://www.post-gazette.com/stories/sports/pirates/pirates-fork-over-changes-for-fans-at-pnc-park-629789 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/posta.com.tr.txt b/inc/3rdparty/site_config/standard/posta.com.tr.txt
deleted file mode 100755
index 0f01149c..00000000
--- a/inc/3rdparty/site_config/standard/posta.com.tr.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: //div[@id='divAdnetKeyword']/h1
2body: //div[@id='_middle_content_bottom']
3
4wrap_in(fieldset)://div[@id='_middle_content_bottom_child2']/img
5
6strip: //div[@id='_middle_content_bottom_child1']
7strip: //div[@id='_middle_content_bottom_child4']
8strip: //div[@class='cls']
9strip: //div[@class='iphoneBox']
10strip: //ul[@class='ilgiliHaber']
11strip: //div[@class='yorumlar']
12strip: //div[@class='kategoriler']
13strip: //div[@class='textSize']
14strip: //span[@class='tarih']
15test_url: http://www.posta.com.tr/yasam/teknoloji/HaberDetay/Fedailer_Istanbul_da.htm?ArticleID=101044 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/prb.org.txt b/inc/3rdparty/site_config/standard/prb.org.txt
deleted file mode 100755
index 3952ea99..00000000
--- a/inc/3rdparty/site_config/standard/prb.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1
2date: /html/head/meta[@name="date"]/@content
3body: //div[@id="featuredlinksbox"]
4strip: //div[@class="relatedbox"]
5strip: //h1
6strip: //br
7strip_image_src: "/images"
8test_url: http://www.prb.org/Journalists/Webcasts/2011/military-families.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/prog21.dadgum.com.txt b/inc/3rdparty/site_config/standard/prog21.dadgum.com.txt
deleted file mode 100755
index 9a49557e..00000000
--- a/inc/3rdparty/site_config/standard/prog21.dadgum.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h1
2body: //div[@id='left']
3strip: //h1
4convert_double_br_tags: yes
5strip_id_or_class: entry-footer
6strip: //h1[. = 'Previously']/following::*
7author: string('James Hague')
8date: //div[@class = 'entry-footer']/text()
9test_url: http://prog21.dadgum.com/105.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/prolost.com.txt b/inc/3rdparty/site_config/standard/prolost.com.txt
deleted file mode 100755
index 82ebf6bb..00000000
--- a/inc/3rdparty/site_config/standard/prolost.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class='body']
2title: //h2[@class='title']
3date: //span[@class='posted-on']
4test_url: http://prolost.com/blog/2011/10/13/real-men-comp-with-film.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/propublica.org.txt b/inc/3rdparty/site_config/standard/propublica.org.txt
deleted file mode 100755
index d141ac90..00000000
--- a/inc/3rdparty/site_config/standard/propublica.org.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[@class="article-title"]
2author: //meta[@name="author"]/@content
3body: //div[@class="article-full"]
4strip_id_or_class: sidebar_inject
5strip_id_or_class: callout
6strip_id_or_class: content-inset
7strip_id_or_class: byline-block
8strip_id_or_class: photo-caption
9strip_id_or_class: foot-tools
10
11test_url: http://www.propublica.org/article/pardon-applicants-benefit-from-friends-in-high-places \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/prosa.dk.txt b/inc/3rdparty/site_config/standard/prosa.dk.txt
deleted file mode 100755
index ba9ce8b8..00000000
--- a/inc/3rdparty/site_config/standard/prosa.dk.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: //p[@class='name']
2date: substring-before(//p[@class='date'], ' | ')
3body: //div[@class='news_single_item']
4test_url: http://www.prosa.dk/aktuelt/nyhed/artikel/internetaktivisten-uden-maske/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/prospectmagazine.co.uk.txt b/inc/3rdparty/site_config/standard/prospectmagazine.co.uk.txt
deleted file mode 100755
index 739d1b9e..00000000
--- a/inc/3rdparty/site_config/standard/prospectmagazine.co.uk.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1#basics
2author: (//div[contains(@class,'author')])[1]
3date: substring-before(//a[@class='issue'], '&mdash;')
4#body://div[@class = 'entry']
5# use this until move_into support is ready
6body: //div[@class = 'entry' or @class='standfirst' or @class='lead_image']
7
8#moves header image and tagline into body
9move_into(//div[@class='entry']/div)://div[@class = 'lead_image']
10move_into(//div[@class='entry']/div)://div[@class = 'standfirst']
11
12
13# moves author info to end of text
14move_into(//p[strong[string(.) = 'Follow Prospect on Twitter']])://div[@id='sidebar_content']/p/em
15
16prune: no
17
18# strips social links
19strip_id_or_class:login-status
20strip_id_or_class:shareinpost
21strip_id_or_class:content_subscribe
22strip_id_or_class:postinfo
23strip_id_or_class:postutils
24strip_id_or_class:comments
25strip://strong[string(.) = 'Follow Prospect on Twitter']
26test_url: http://www.prospectmagazine.co.uk/2011/07/postmodernism-is-dead-va-exhibition-age-of-authenticism/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/protothema.gr.txt b/inc/3rdparty/site_config/standard/protothema.gr.txt
deleted file mode 100755
index fae261b0..00000000
--- a/inc/3rdparty/site_config/standard/protothema.gr.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //a[contains(@rel, 'mainphotos')] | //div[contains(@class, 'article-content')]
2
3prune: no
4
5test_url: http://www.protothema.gr//politics/article/326464/diamadopoulou-floridis-kaminis-kai-boutaris-se-ekdilosi-ton-europaion-fileleutheron/
6test_url: http://www.protothema.gr/rss/news/politics/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/psychologytoday.com.txt b/inc/3rdparty/site_config/standard/psychologytoday.com.txt
deleted file mode 100755
index 1bb63c29..00000000
--- a/inc/3rdparty/site_config/standard/psychologytoday.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@class="page-title"]/h1
2author: //a[@title="View Bio"]
3date: substring-before(substring-after(//span[@class="submitted"], 'Published on '), ' by')
4strip://div[@class="page-title"]/h1
5strip://div[@class="article-abstract"]
6strip://div[@class="article-meta"]
7strip://div[@id="rightColumn"]
8strip://div[@id="inline-content-bottom-left"]
9test_url: http://www.psychologytoday.com/blog/how-happiness/201205/my-quibble-facebook \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/publications.parliament.uk.txt b/inc/3rdparty/site_config/standard/publications.parliament.uk.txt
deleted file mode 100755
index 8f32d7a4..00000000
--- a/inc/3rdparty/site_config/standard/publications.parliament.uk.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: //meta[@name="Author"]
2date: //meta[@name="Date"]
3strip: //h5
4test_url: http://www.publications.parliament.uk/pa/ld201011/ldhansrd/text/111109-0003.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/publico.pt.txt b/inc/3rdparty/site_config/standard/publico.pt.txt
deleted file mode 100755
index bb6a05e1..00000000
--- a/inc/3rdparty/site_config/standard/publico.pt.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1[@class="entry-title"]
2author: //span[@class="author"]
3body: //article[@itemtype="http://schema.org/Article"]
4date: //time[@itemprop="dateCreated"]
5
6strip: //header[@class="entry-header single-header"]
7strip: //aside[@class="entry-assets"]
8strip: //div[@class="entry-options entry-options-above group"]
9strip: //div[@class="entry-options entry-options-below group"]
10
11convert_double_br_tags: yes
12test_url: http://www.publico.pt/politica/noticia/passos-diz-que-se-limitacao-de-mandatos-fosse-para-todos-os-concelhos-estaria-claro-na-lei-1577691 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/purpleplanetmedia.com.txt b/inc/3rdparty/site_config/standard/purpleplanetmedia.com.txt
deleted file mode 100755
index 0f1392a4..00000000
--- a/inc/3rdparty/site_config/standard/purpleplanetmedia.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //div[@class='title']
2body: //div[@class='body']
3next_page_link: //div[@class='source']/text()[contains(., 'page')]/following-sibling::a
4test_url: http://purpleplanetmedia.com/eye/inte/ngaiman.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/qctimes.com.txt b/inc/3rdparty/site_config/standard/qctimes.com.txt
deleted file mode 100755
index 3c3edfeb..00000000
--- a/inc/3rdparty/site_config/standard/qctimes.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1# this site seems to work OK in the web view, but only occasionally in the instapaper app itself.
2
3body: //div[@class='entry-content']
4author: //span[@class='byline']
5test_url: http://qctimes.com/news/local/woman-faces-perjury-charges-in-meth-case/article_83f4c470-956a-11e2-a921-001a4bcf887a.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/quantumdiaries.org.txt b/inc/3rdparty/site_config/standard/quantumdiaries.org.txt
deleted file mode 100755
index c17fb312..00000000
--- a/inc/3rdparty/site_config/standard/quantumdiaries.org.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //div[contains(@class, "hentry")]/h3
2
3author: //div[contains(@class, "hentry")]/h2[contains(@class, "author_bio")]
4
5date: substring-before(substring-after(normalize-space(//p[contains(@class, "postmetadata")]/small), "was posted on "), " and is filed under")
6
7body: //div[contains(@class, "entry")]
8
9strip_id_or_class: addtoany_share_save_container
10strip_id_or_class: postmetadata
11strip_id_or_class: author_bio
12strip_id_or_class: author_bio_2
13strip: //div[contains(@class, "hentry")]/h3
14test_url: http://www.quantumdiaries.org/2011/10/25/piling-up/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/queerty.com.txt b/inc/3rdparty/site_config/standard/queerty.com.txt
deleted file mode 100755
index fc7ab37f..00000000
--- a/inc/3rdparty/site_config/standard/queerty.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='copy']
2title: //h1[@class='hed']
3test_url: http://www.queerty.com/rawhide-radicals-meet-five-heroes-from-the-leather-community-20120302/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/quepasa.cl.txt b/inc/3rdparty/site_config/standard/quepasa.cl.txt
deleted file mode 100755
index fb09a8f3..00000000
--- a/inc/3rdparty/site_config/standard/quepasa.cl.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1
2
3body: //div[@class="cuerpoArticulo"]
4
5
6test_url: http://www.quepasa.cl/magazine/articulo/print.html?id=5299 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/quora.com.txt b/inc/3rdparty/site_config/standard/quora.com.txt
deleted file mode 100755
index 732d12d7..00000000
--- a/inc/3rdparty/site_config/standard/quora.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1tidy: no
2prune: no
3body: //div[contains(@class, 'main_col')]
4title: //h1
5
6strip_id_or_class: hidden
7strip_id_or_class: item_action_bar
8strip_id_or_class: answer_voters
9strip_id_or_class: question_topics
10strip_id_or_class: answer_header_text
11strip_id_or_class: editor_link
12strip_id_or_class: view_tag
13strip_id_or_class: include_details
14strip_id_or_class: sig_edit
15strip_id_or_class: profile_photo_img
16
17test_url: http://www.quora.com/What-everyday-habit-do-you-wish-you-had-developed-earlier-in-life \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/racjonalista.pl.txt b/inc/3rdparty/site_config/standard/racjonalista.pl.txt
deleted file mode 100755
index 19c719d4..00000000
--- a/inc/3rdparty/site_config/standard/racjonalista.pl.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: /html/body/center/b
2date: /html/body/table/tr[2]/td/i
3single_page_link: //*[@id='oTxt']/table[3]/tr[2]/td/a[1]
4
5test_url: http://www.racjonalista.pl/kk.php/s,7214/q,Geneza.szubrawstwa \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/radar.oreilly.com.txt b/inc/3rdparty/site_config/standard/radar.oreilly.com.txt
deleted file mode 100755
index fa66b815..00000000
--- a/inc/3rdparty/site_config/standard/radar.oreilly.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1date://span[@class='date']
2body://div[@class='entry-body']
3test_url: http://radar.oreilly.com/2012/01/genome-cloud-digital-humanities-hadoop-world-strata.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/radionz.co.nz.txt b/inc/3rdparty/site_config/standard/radionz.co.nz.txt
deleted file mode 100755
index 2496ddab..00000000
--- a/inc/3rdparty/site_config/standard/radionz.co.nz.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='body']
2title: //div[@class='newsstory']/h2
3test_url: http://www.radionz.co.nz/news/stories/2010/07/18/12481029a86d \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/randsinrepose.com.txt b/inc/3rdparty/site_config/standard/randsinrepose.com.txt
deleted file mode 100755
index 6970a744..00000000
--- a/inc/3rdparty/site_config/standard/randsinrepose.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //div[@id='center-col']/h4
2author: substring-before(//title,'In')
3date: substring-after(//div[@class='commenttext']/span,'#')
4body: //div[@id='center-col']
5strip: //div[@id='center-col']/h4
6strip: //div[@class='graytext']
7
8# Anthony Perez-Sanz 2012.3.14
9# Removed long gif from the end
10strip: //img[@src='http://www.randsinrepose.com/spreader.gif']
11test_url: http://www.randsinrepose.com/archives/2012/03/13/hacking_is_important.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/readability.com.txt b/inc/3rdparty/site_config/standard/readability.com.txt
deleted file mode 100755
index 2d5aba76..00000000
--- a/inc/3rdparty/site_config/standard/readability.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //link[@rel='canonical']/@href
2
3test_url: http://www.readability.com/read?url=http://feeds.gawker.com/~r/lifehacker/full/~3/jaxAjSay_Rw/add-a-rain-gutter-to-a-picnic-table-for-a-built+in-drink-cooler \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/readwriteweb.com.txt b/inc/3rdparty/site_config/standard/readwriteweb.com.txt
deleted file mode 100755
index e2aabda9..00000000
--- a/inc/3rdparty/site_config/standard/readwriteweb.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class="titlelink"]
2date: //span[@class="timestamp"]/@data-published
3body: //div[@class="asset-content"]
4strip_id_or_class: related-entries
5strip_id_or_class: like-and-retweet
6
7author: //div[@id="submeta"]/a[1]
8test_url: http://www.readwriteweb.com/archives/why_facebook_terrifies_google.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/real.gr.txt b/inc/3rdparty/site_config/standard/real.gr.txt
deleted file mode 100755
index ce0a3c43..00000000
--- a/inc/3rdparty/site_config/standard/real.gr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[contains(@class, 'article-photo-wrapper')]
2prune: no
3
4test_url: http://www.real.gr/DefaultArthro.aspx?page=arthro&id=360962&catID=1
5test_contains: Επισήμως το αποψινό υπουργικό
diff --git a/inc/3rdparty/site_config/standard/recipe.com.txt b/inc/3rdparty/site_config/standard/recipe.com.txt
deleted file mode 100755
index a01aaef4..00000000
--- a/inc/3rdparty/site_config/standard/recipe.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@class='recipedetailsleft' or @id='recipePrepAndServe' or @id='recipeingredients']
2
3strip_id_or_class: location
4strip_id_or_class: savings
5strip_id_or_class: recipeDetailDescButton
6
7prune: no
8tidy: no
9
10test_url: http://www.recipe.com/avocado-basil-pasta/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/red-hot-girls.com.txt b/inc/3rdparty/site_config/standard/red-hot-girls.com.txt
deleted file mode 100755
index 0403ee86..00000000
--- a/inc/3rdparty/site_config/standard/red-hot-girls.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='short-text' or starts-with(@id, 'news-id-')]
2prune: no
3tidy: no
4
5test_url: http://red-hot-girls.com/2011/06/10/the_red_hot_natalia_maria_53_pics.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/reddit.com.txt b/inc/3rdparty/site_config/standard/reddit.com.txt
deleted file mode 100755
index ba342c7c..00000000
--- a/inc/3rdparty/site_config/standard/reddit.com.txt
+++ /dev/null
@@ -1,21 +0,0 @@
1# This setup grabs the text from a Reddit self post. It ignores all comments etc.
2
3title: //p[@class="title"]/a/text()
4
5author: //p[@class="tagline"]/a
6
7# this doesn't work for some reason...?
8date: //p[@class="tagline"]//@datetime
9
10body: (//div[contains(@class, 'noncollapsed')]//div[contains(@class, 'usertext-body')])[1]
11
12strip_id_or_class: tagline
13strip_id_or_class: unvotable-message
14strip_id_or_class: buttons
15
16# follow the posted link (unless it's a self post - relative URL, no http://)
17single_page_link: //p[@class="title"]/a[contains(@href, 'http://')]
18
19test_url: http://www.reddit.com/r/truegaming/comments/wfe7r/i_wrote_about_the_problems_i_honestly_feel_that/
20test_url: http://www.reddit.com/r/worldnews/comments/1as37r/twelve_north_korean_soldiers_attempting_to_defect/
21test_url: http://www.reddit.com/r/WritingPrompts/comments/2786lw/wp_in_a_world_where_puns_are_illegal_one_man/chybk8e \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/redmondpie.com.txt b/inc/3rdparty/site_config/standard/redmondpie.com.txt
deleted file mode 100755
index 66cc1707..00000000
--- a/inc/3rdparty/site_config/standard/redmondpie.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //div[@class='posthead']//h2
2body: //div[contains(@class, 'postcontent') or @class='posthead']
3author: //div[@class='posthead']//a[@rel='author']
4
5strip: //div[@class='posthead']//h2
6replace_string(>Advertisements</div>): ></div>
7replace_string(<p>You can follow us on): <p style="display:none;">
8strip_id_or_class: likeThisPost
9
10prune: no
11tidy: no
12
13test_url: http://www.redmondpie.com/how-to-play-music-directly-from-home-screen-folders-on-iphone/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/redtape.msnbc.msn.com.txt b/inc/3rdparty/site_config/standard/redtape.msnbc.msn.com.txt
deleted file mode 100755
index 8541a0d4..00000000
--- a/inc/3rdparty/site_config/standard/redtape.msnbc.msn.com.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1# Think there might be something up with your parser that it strips out 'print' from the title :)
2
3title: //meta[@name='title']/@content
4author: //meta[@name='author']/@content
5date: //meta[@name='date']/@content
6
7body: //div[@class='articleText']
8
9strip: //div[contains(@class, 'day')]
10strip: //div[contains(@class, 'month')]
11strip: //div[contains(@class, 'year')]
12strip: //div[contains(@class, 'time')]
13strip: //h1[@class='gl_headline']
14strip: //div[@class='byline']
15strip: //div[@id='left_ear']
16strip: //div[@id='right_ear']
17strip: //div[contains(@class, 'PopularPosts')]
18strip ://div[@class='discuss_page_break']
19strip ://div[contains(@class, 'p-content_TagList')]
20test_url: http://redtape.msnbc.msn.com/_news/2011/09/28/8020661-sprint-raises-fee-but-wont-free-users-from-two-year-contracts?preview=true \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/reflets.info.txt b/inc/3rdparty/site_config/standard/reflets.info.txt
deleted file mode 100755
index 98a2bbfc..00000000
--- a/inc/3rdparty/site_config/standard/reflets.info.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body://div[@class='storycontent']
2date://div[@class='date']
3strip://li[@class='sharing_label']
4strip://a[@class='FlattrButton']
5test_url: http://reflets.info/orange-nokia-siemens-deep-packet-inspection/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/renenekuda.cz.txt b/inc/3rdparty/site_config/standard/renenekuda.cz.txt
deleted file mode 100755
index a5361fd0..00000000
--- a/inc/3rdparty/site_config/standard/renenekuda.cz.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //*[@class='entry-title']
2body: //div[@class='entry-content']
3test_url: http://www.renenekuda.cz/recept-na-produktivitu/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/resume.se.txt b/inc/3rdparty/site_config/standard/resume.se.txt
deleted file mode 100755
index 17122a9b..00000000
--- a/inc/3rdparty/site_config/standard/resume.se.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1date: //meta[@name='bi3dPubDate']/@content
2body: //div[contains(@class, 'articleBody')]
3
4prune: no
5
6test_url: http://www.resume.se/nyheter/media/2013/09/18/kvallspress-och-tv-slass-om-playtittarna-men-youtube-ohotat-storst/
7test_url: http://www.resume.se/nyheter/media/2013/09/18/cecilia-blankens-lamnar-mama-for-konkurrent/
8test_url: http://www.resume.se/nyheter/reklam/2013/09/18/ravelli-trodde-jag-var-med-i-blasningen/
9test_url: http://www.resume.se/rss-nyheter \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/retrieverweekly.com.txt b/inc/3rdparty/site_config/standard/retrieverweekly.com.txt
deleted file mode 100755
index a0a23940..00000000
--- a/inc/3rdparty/site_config/standard/retrieverweekly.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1single_page_link://a[contains(@href, 'print')]
2
3# Grab metadata from the "printer-friendly" page, after specifying single_page_link
4title://h2
5date://cite
6test_url: http://www.retrieverweekly.com/?cmd=displaystory&story_id=7548&format=html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/reuters.com.txt b/inc/3rdparty/site_config/standard/reuters.com.txt
deleted file mode 100755
index 7411e62b..00000000
--- a/inc/3rdparty/site_config/standard/reuters.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1[@class='headline3']
2author: substring-after(//p[@class="byline"], 'By ')
3date: //meta[@name="REVISION_DATE"]/@content
4body: //div[@id='articleImage' or @id='frame_fd1fade'] | //span[@id='articleText'] | //div[@class='pageNavigation']
5strip: //li[@class='next']
6strip: //span[@class='articleLocation']
7prune: no
8tidy: no
9
10test_url: http://www.reuters.com/article/2011/04/08/us-ivorycoast-killings-idUSTRE73732A20110408 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/revistapiaui.estadao.com.br.txt b/inc/3rdparty/site_config/standard/revistapiaui.estadao.com.br.txt
deleted file mode 100755
index 30e627dc..00000000
--- a/inc/3rdparty/site_config/standard/revistapiaui.estadao.com.br.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //div[@class="article_header"]/h3
2author: //div[@class="autor"]/p/*
3date: substring-after(substring-after(//div[@class="flt-left"],"> "), "> ")
4
5move_into(//div[@class="new_article"]): //div[@class="img_article"]/img
6
7body: //div[@class="article_content"]
8convert_double_br_tags: yes
9
10test_url: http://revistapiaui.estadao.com.br/edicao-68/questoes-latino-americanas/filhos-da-guerra-suja \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rezeptwelt.de.txt b/inc/3rdparty/site_config/standard/rezeptwelt.de.txt
deleted file mode 100644
index 2093573b..00000000
--- a/inc/3rdparty/site_config/standard/rezeptwelt.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='step-content'] | //div[@class='global-active ingredients-box']
2title: //div[@class='step-1-container']
3
4tidy: no
5test_url: http://www.rezeptwelt.de/backen-herzhaft-rezepte/w%C3%BCrstchen-schlangen/530372 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/richardmuscat.wordpress.com.txt b/inc/3rdparty/site_config/standard/richardmuscat.wordpress.com.txt
deleted file mode 100755
index b0ee92dc..00000000
--- a/inc/3rdparty/site_config/standard/richardmuscat.wordpress.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@id="post"]
2strip: //div[@id="author-description"]
3date: //span[@class="entry-date"]
4author: //span[@class="author vcard"]
5test_url: http://richardmuscat.wordpress.com/2011/06/20/the-price-of-free/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+TheBrooksReview+%28The+Brooks+Review%29 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ritemail.blogspot.com.txt b/inc/3rdparty/site_config/standard/ritemail.blogspot.com.txt
deleted file mode 100755
index ed72915c..00000000
--- a/inc/3rdparty/site_config/standard/ritemail.blogspot.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='post-body entry-content']
2strip: //div[@id='lws_0']
3prune: no
4
5test_url: http://ritemail.blogspot.com/2011/06/hayden-panettiere-candids-in-los.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ritholtz.com.txt b/inc/3rdparty/site_config/standard/ritholtz.com.txt
deleted file mode 100755
index d598479e..00000000
--- a/inc/3rdparty/site_config/standard/ritholtz.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class='post']/h2
2author: substring-before(substring-after(//div[@class='alignright']/small, 'By '),'-')
3date: substring-after(//div[@class='alignright']/small, '-')
4strip: //div[@class='alignleft']
5test_url: http://www.ritholtz.com/blog/2012/09/situational-awareness/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/robertsspaceindustries.com.txt b/inc/3rdparty/site_config/standard/robertsspaceindustries.com.txt
deleted file mode 100755
index b0b90fb7..00000000
--- a/inc/3rdparty/site_config/standard/robertsspaceindustries.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1strip_id_or_class: 'sharedaddy'
2strip_id_or_class: 'respond'
3strip_id_or_class: 'meta'
4test_url: http://www.robertsspaceindustries.com/news-update-ai-pilots/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/robots.thoughtbot.com.txt b/inc/3rdparty/site_config/standard/robots.thoughtbot.com.txt
deleted file mode 100755
index da5b7bd8..00000000
--- a/inc/3rdparty/site_config/standard/robots.thoughtbot.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //section[@class='post text']
2title: //h1[@class='title']
3date: //p[@class='post-date']
4strip: //section[@class='meta-info']
5test_url: http://robots.thoughtbot.com/post/32455387133/four-phase-test \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rockpapershotgun.com.txt b/inc/3rdparty/site_config/standard/rockpapershotgun.com.txt
deleted file mode 100755
index f8c9541f..00000000
--- a/inc/3rdparty/site_config/standard/rockpapershotgun.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h2
2
3strip: //div[ contains(@class, 'respond') ] | //h2 | //h1
4
5date: substring-after(//p[@class='info'], ' on ')
6
7author: //p[@class='info']//a
8test_url: http://www.rockpapershotgun.com/2010/07/29/rps-half-verdict-starcraft-2/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rodrigo.sharpcube.com.txt b/inc/3rdparty/site_config/standard/rodrigo.sharpcube.com.txt
deleted file mode 100755
index eef8b11c..00000000
--- a/inc/3rdparty/site_config/standard/rodrigo.sharpcube.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1author: //article/header/span[@class='author']
2title://article/header/h1
3body: //article
4strip: //article/header
5strip: //article/p[@class='metadata']
6footnotes: yes
7test_url: http://rodrigo.sharpcube.com/2010/06/20/using-and-sharing-a-vpn-connection-on-your-mac/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rogerebert.com.txt b/inc/3rdparty/site_config/standard/rogerebert.com.txt
deleted file mode 100755
index da215109..00000000
--- a/inc/3rdparty/site_config/standard/rogerebert.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: substring-before(//title,':')
2author: substring-after(substring-before(//div[@class='text']/b,'/'),'BY')
3
4body: //div[@class='text']
5
6strip: //a[contains(@href,'printart')]
7strip_id_or_class: enlarge_photo
8test_url: http://rogerebert.com/apps/pbcs.dll/article?AID=/20120411/REVIEWS/120419998/1005/GLOSSARY \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rolfinjapan.nl.txt b/inc/3rdparty/site_config/standard/rolfinjapan.nl.txt
deleted file mode 100755
index 2365c42a..00000000
--- a/inc/3rdparty/site_config/standard/rolfinjapan.nl.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[contains(@class, 'inhoud')]
2date: //span[@class ='published']
3author: //span[@class ='author']
4strip: //div[@class = 'grid_2']
5strip: //div[@class = 'block-citation-text']
6test_url: http://www.rolfinjapan.nl/2011/06/duizend-kraanvogels/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rollingstone.com.txt b/inc/3rdparty/site_config/standard/rollingstone.com.txt
deleted file mode 100755
index 9a10a69e..00000000
--- a/inc/3rdparty/site_config/standard/rollingstone.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1
2author: //h3[@class="byline"]/strong
3
4body: //div[@id='main']/h2 | //div[@id='main']//div[@class='body']
5
6prune: no
7
8single_page_link: //a[@class='print-page']
9
10test_url: http://www.rollingstone.com/politics/news/the-plastic-bag-wars-20110725 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rottentomatoes.com.txt b/inc/3rdparty/site_config/standard/rottentomatoes.com.txt
deleted file mode 100755
index ef327691..00000000
--- a/inc/3rdparty/site_config/standard/rottentomatoes.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class='movie_content_area']
2strip_id_or_class: tomatometer_bar_help
3strip_id_or_class: critic-links
4strip_id_or_class: top-critics-numbers
5strip_id_or_class: fan_side
6strip_id_or_class: fblike
7strip_id_or_class: rating_widget
8strip_id_or_class: friend_reviews
9prune: no
10
11test_url: http://www.rottentomatoes.com/m/thor/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/roughtype.com.txt b/inc/3rdparty/site_config/standard/roughtype.com.txt
deleted file mode 100755
index a012a67d..00000000
--- a/inc/3rdparty/site_config/standard/roughtype.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='content']
2strip: //p[@class='postmeta']/following::*
3strip: //p[@class='postmeta']
4strip: //p[@align='left']
5test_url: http://www.roughtype.com/archives/2012/01/power_to_the_da.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/roy.gbiv.com.txt b/inc/3rdparty/site_config/standard/roy.gbiv.com.txt
deleted file mode 100755
index 6ff03de8..00000000
--- a/inc/3rdparty/site_config/standard/roy.gbiv.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip_comments: no
2test_url: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rpgsite.net.txt b/inc/3rdparty/site_config/standard/rpgsite.net.txt
deleted file mode 100755
index 9ddbf0f2..00000000
--- a/inc/3rdparty/site_config/standard/rpgsite.net.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id='news-text']
2prune: no
3test_url: http://www.rpgsite.net/news/1964-tetsuya-nomura-says-hell-soon-show-the-future-of-final-fantasy
4test_url: http://www.rpgsite.net/news/1965-new-atelier-totori-plus-screens-and-artwork \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/rubysfera.pl.txt b/inc/3rdparty/site_config/standard/rubysfera.pl.txt
deleted file mode 100755
index d9d9a431..00000000
--- a/inc/3rdparty/site_config/standard/rubysfera.pl.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1author: //div[contains(@class, 'author_text')]/h4/text()
2date: //li[@class='date']
3
4# stripping excessive tags
5strip: //div[contains(@class, 'entry_meta')]
6strip: //div[contains(@class, 'single_meta')]
7strip: //br[contains(@class, 'clear')]
8strip: //h3[contains(., 'Komentarz')]
9test_url: http://rubysfera.pl/2011/09/10-porad-o-rvm/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ruhlman.com.txt b/inc/3rdparty/site_config/standard/ruhlman.com.txt
deleted file mode 100755
index e54b0f0e..00000000
--- a/inc/3rdparty/site_config/standard/ruhlman.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class='entry-title']
2author: ///span[@class='author vcard']
3date: //abbr[@class='published']
4body: //div[@class='entry-content']
5
6test_url: http://ruhlman.com/2009/05/cookbooks-that-teach/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ruttloff.org.txt b/inc/3rdparty/site_config/standard/ruttloff.org.txt
deleted file mode 100755
index 43e130a4..00000000
--- a/inc/3rdparty/site_config/standard/ruttloff.org.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1author: //a[@class='author']
2tidy: no
3test_url: http://ruttloff.org/2012/06/13/intervention \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/salon.com.txt b/inc/3rdparty/site_config/standard/salon.com.txt
deleted file mode 100755
index 2b47f744..00000000
--- a/inc/3rdparty/site_config/standard/salon.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //meta[@property='og:title']/@content
2author: (//span[@class="byline"]/a)[1]
3date: //span[contains(@class, "toLocalTime")]
4body: (//div[contains(@class, "articleInner")]//img[contains(@src, 'media.salon.com') and contains(@src, '460x')])[1] | //div[contains(@class, "articleContent") or contains(@class, "writerMeta")]
5
6prune: no
7
8# deal with singleton links
9single_page_link: (//h1/a[contains(@href, '/singleton')])[1]
10
11test_url: http://www.salon.com/2011/10/25/occupying_the_rust_belt/singleton/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/salzburg.com.txt b/inc/3rdparty/site_config/standard/salzburg.com.txt
deleted file mode 100755
index 464f99f1..00000000
--- a/inc/3rdparty/site_config/standard/salzburg.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //p[@class='teaser1 darkgrey myriad']
2move_into(//p[@class='teaser1 darkgrey myriad']): //div[@class='artikel clear']
3strip: //div[@class='hidden']
4strip: //div[@id='article_related_source']
5
6test_url: http://www.salzburg.com/nachrichten/oesterreich/politik/sn/artikel/deutliche-nachbesserungen-bei-lehrerdienstrecht-19469/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sanpedrosun.com.txt b/inc/3rdparty/site_config/standard/sanpedrosun.com.txt
deleted file mode 100755
index 3f19cced..00000000
--- a/inc/3rdparty/site_config/standard/sanpedrosun.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //div[contains(@class, 'post')]//h1
2date: //div[contains(@class, 'post')]//h6
3body: //div[contains(@class, 'entry')]
4strip_id_or_class: post_stats
5strip_id_or_class: related-posts
6strip_id_or_class: after_story
7prune: no
8
9test_url: http://www.sanpedrosun.com/community-and-society/2013/06/05/little-angelspre-school-talent-show/
10test_url: http://www.sanpedrosun.com/feed/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/saveyourself.ca.txt b/inc/3rdparty/site_config/standard/saveyourself.ca.txt
deleted file mode 100755
index 5a5605d9..00000000
--- a/inc/3rdparty/site_config/standard/saveyourself.ca.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1title://h1
2
3# my section divs seem to interfere with the Instapaper parser, so I ditch 'em
4dissolve://div[contains(@class, 'section')]
5
6#these don't seem to be necessary, but just in case
7strip_id_or_class:'masthead'
8strip_id_or_class:'footer'
9
10#again, Instapaper seems to understand where my content is, but just in case
11body://div[@id='content']
12
13# in general, I want the Instapaper view to look like my print CSS, so I remove things specified for the screen or non-printing
14strip_id_or_class:'screen-only'
15strip_id_or_class:'no-print'
16
17#other misc removals and simplifications
18strip_id_or_class:'popup'
19strip_id_or_class:'ZoomSpin'
20
21#I have a lot of content in sidebars and "meta" asides that can work inline just fine, but has to be distinguished somehow with some minimal formatting, so I put them in blockquotes
22wrap_in(blockquote)://div[contains(@class, 'sidebar')]
23wrap_in(blockquote)://div[contains(@class, 'meta')]
24wrap_in(blockquote)://p[contains(@class, 'meta')]
25test_url: http://saveyourself.ca/tutorials/low-back-pain.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sayidaty.net.txt b/inc/3rdparty/site_config/standard/sayidaty.net.txt
deleted file mode 100755
index 2d9f1884..00000000
--- a/inc/3rdparty/site_config/standard/sayidaty.net.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1date: //meta[@property='article:published_time']/@content
2body: (//div[contains(@class, 'article-slider')]//img)[1] | //div[contains(@class, 'bottom-article-con')]
3
4test_url: http://www.sayidaty.net/taxonomy/term/10/all/feed \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sbnation.com.txt b/inc/3rdparty/site_config/standard/sbnation.com.txt
deleted file mode 100755
index 41b36755..00000000
--- a/inc/3rdparty/site_config/standard/sbnation.com.txt
+++ /dev/null
@@ -1,28 +0,0 @@
1title: //h1[@id='stream_title']
2
3# Author and date don't work
4author: //div[@class='byline']
5date: //div[@class='date-stamp']
6
7body: //div[@class='node-article']
8
9strip_id_or_class: fb-like-box
10strip_id_or_class: stream-fb-like
11strip_id_or_class: social-meta
12strip_id_or_class: social-spoken
13strip_id_or_class: twitter-share-button
14strip_id_or_class: twitter-follow-button
15strip_id_or_class: spinner_node_list
16strip_id_or_class: node-sort-link
17strip_id_or_class: stream_title
18strip_id_or_class: stream_summary
19strip_id_or_class: update-count-container
20strip_id_or_class: major-updates
21strip_id_or_class: newsletter-slide
22strip_id_or_class: author-mini-profile
23strip_id_or_class: byline
24strip_id_or_class: header
25strip_id_or_class: footer
26
27# Works, but "no text" errors on: http://www.sbnation.com/nba/2012/3/9/2856780/nba-scores-dwight-howard-bulls-magic-mavs-suns
28test_url: http://www.sbnation.com/nba/2012/3/13/2867226/dwight-howard-trade-rumors-2012-faq-orlando-magic \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/schneier.com.txt b/inc/3rdparty/site_config/standard/schneier.com.txt
deleted file mode 100755
index 0074a86a..00000000
--- a/inc/3rdparty/site_config/standard/schneier.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1author: //p[@class='mastname']
2
3body: //div[@class='indivbody']
4date: //div[@class='indivbody']/h2[1]
5
6# Remove blog title. Specify first occurrence in case h1 is used in article
7strip: //div[@class='indivbody']/h1[1]
8
9# Remove blog description (the first p element)
10strip: //div[@class='indivbody']/p[1]
11
12# Remove navigation (second p element)
13strip: //div[@class='indivbody']/p[2]
14
15# Remove duplicate of article title. Specify first occurrence in case h3 is used in article
16strip: //div[@class='indivbody']/h3[1]
17
18# Remove publishing date, it's extracted by rule above
19strip: //div[@class='indivbody']/h2[1]
20
21# Remove duplicate of date at end, and newsletter signup
22strip: //p[@class='posted']
23
24# Leave date at top
25test_url: http://www.schneier.com/blog/archives/2010/12/security_in_202.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/science.orf.at.txt b/inc/3rdparty/site_config/standard/science.orf.at.txt
deleted file mode 100755
index c4b21834..00000000
--- a/inc/3rdparty/site_config/standard/science.orf.at.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class="storybox"]
2title: //div[@class="storybox"]//h1
3strip: //p[@class='metaline']
4date: substring-after(//*[@class='time'],'Erstellt am')
5strip: //div[@class='fact']
6strip: //p[@class='backlink']
7strip: //div[@class='mailto']
8strip: //div[@id='forumDisclaimer']
9strip: //div[@class='forum']
10
11test_url: http://science.orf.at/stories/1700900/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scienceblogs.de.txt b/inc/3rdparty/site_config/standard/scienceblogs.de.txt
deleted file mode 100755
index b0dec3d2..00000000
--- a/inc/3rdparty/site_config/standard/scienceblogs.de.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1single_page_link: //div[@class='c2c1']/div[@class='toptheme further line']//ul//li/a
2
3author: //div[@class='details clear']//a[@class='hi']
4body: //div[@class='title']
5strip: //p[@class='entrypagination']
6strip: //p[@class='details_top']
7date: //p[@class='details_top']
8title: //div[@class='title']/h1
9strip: //p[@class='details']
10strip: //p[@class='details_bottom']
11
12test_url: http://www.scienceblogs.de/astrodicticum-simplex/2011/10/weltuntergang-reloaded-das-jungste-gericht-findet-am-21-oktober-statt.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scienceticker.info.txt b/inc/3rdparty/site_config/standard/scienceticker.info.txt
deleted file mode 100755
index 2a06f734..00000000
--- a/inc/3rdparty/site_config/standard/scienceticker.info.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body: //div[@class='post']
2title: //h1[@id='singlePageTitle']
3date: substring-before(//small,'&bull; Rubrik')
4
5strip: //div[@class='post-ratings']
6strip: //div[@class='post-ratings-loading']
7strip: //a[@title='Empfehlen Sie den Text weiter!']
8strip: //a[@title='Drucken']
9strip: //div[@class='share']
10
11test_url: http://www.scienceticker.info/2011/11/24/forscher-finden-gedachtnismolekul/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scientificamerican.com.txt b/inc/3rdparty/site_config/standard/scientificamerican.com.txt
deleted file mode 100755
index 1b3f31cf..00000000
--- a/inc/3rdparty/site_config/standard/scientificamerican.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1#
2# After site revisions at SciAm, this configuration does
3# not work, especially for multi-page articles. For
4# every article there is now a "Print" link which
5# is far more reliable. So this configuration should be
6# removed or disabled.
7# 2/3/13
8#
9
10# meta data
11title://h1[@class = 'articleTitle']
12author:substring-after(//span[@class = 'byline'],'By ')
13date:substring-before(//span[@class = 'datestamp'],'|')
14
15#body content
16body://div[@id = 'articleContent']
17#next_page_link://li[@id = 'flairPagination']/a[last()]
18
19single_page_link: //a[contains(@href, 'print=true')]
20
21#cleanup
22strip://div[@class = 'fsgBooks']
23
24test_url: http://www.scientificamerican.com/article.cfm?id=do-brain-scans-comatose-patients-reveal-conscious-state
25test_url: http://www.scientificamerican.com/article.cfm?id=solar-wind-transforms-venus-into-shape-of-comet \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scilogs.de.txt b/inc/3rdparty/site_config/standard/scilogs.de.txt
deleted file mode 100755
index b24d7844..00000000
--- a/inc/3rdparty/site_config/standard/scilogs.de.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: //h1
2author: //div[@class='date']/a
3date: substring-after(//div[@class='date'], ',')
4body: //div[@class='entrybody']
5
6strip_id_or_class: socialshareprivacy
7strip: //div[@class='entrybody']/br[1]
8
9# Strip related articles
10# 'p'-Tag strips 'Ähnliche Artikel: ' (<br> tags become <p>)
11strip: //div[@class='entrybody']/p[last()]
12strip: //div[@class='entrybody']/ul[last()]
13
14convert_double_br_tags: yes
15test_url: http://www.scilogs.de/wblogs/blog/formbar/fusion/2012-10-08/rundgang-durch-deutschlands-gr-tes-fusionsexperiment \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scotusblog.com.txt b/inc/3rdparty/site_config/standard/scotusblog.com.txt
deleted file mode 100755
index 8881bb45..00000000
--- a/inc/3rdparty/site_config/standard/scotusblog.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //title
2author: //p[@id='author-name-role']/a
3date: substring-after(//p[@class='time'],'Posted')
4body: //div[@id='main']
5strip: //div[@id='author-info']
6strip: //div[@id='author-links']
7strip: //h1
8test_url: http://www.scotusblog.com/2012/04/shaken-baby-case-an-update/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scraplab.net.txt b/inc/3rdparty/site_config/standard/scraplab.net.txt
deleted file mode 100755
index ca7ec195..00000000
--- a/inc/3rdparty/site_config/standard/scraplab.net.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h2
2body: //div[@class='body']
3test_url: http://scraplab.net/2010/10/26/please-keep-your-belongings-with-you-at-all-times/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/scripting.com.txt b/inc/3rdparty/site_config/standard/scripting.com.txt
deleted file mode 100755
index 5fb0ee79..00000000
--- a/inc/3rdparty/site_config/standard/scripting.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1strip: //a[starts-with(@href, '#')]
2strip: //*[@class='storyByline']
3body: //*[@class='storyPageText']/..
4author: string('Dave Winer')
5date: substring-before(substring-after(//*[@class='storyByline'], 'on'), 'at')
6title: //h1
7footnotes: no
8test_url: http://scripting.com/stories/2011/07/08/yeahImStillYawning.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sct.temple.edu.txt b/inc/3rdparty/site_config/standard/sct.temple.edu.txt
deleted file mode 100755
index 55f24173..00000000
--- a/inc/3rdparty/site_config/standard/sct.temple.edu.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //*[@class="entry-content"]
2title: //h1[@class="entry-title"]
3date: //*[@class="entry-date"]
4author: //*[@class="author vcard"]
5test_url: http://sct.temple.edu/blogs/news-events/2011/05/congratulations-sct-class-of-2011/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/searchenginejournal.com.txt b/inc/3rdparty/site_config/standard/searchenginejournal.com.txt
deleted file mode 100755
index dc98af3c..00000000
--- a/inc/3rdparty/site_config/standard/searchenginejournal.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1strip: //ul[contains(@id, "social")]
2strip: //div[contains(@class, "ts-fab-wrapper")]
3strip: //div[contains(@id, 'gpt-ad')]
4
5test_url: http://www.searchenginejournal.com/web-design-vs-seo-it-doesnt-make-much-sense/62294/
diff --git a/inc/3rdparty/site_config/standard/searchengineland.com.txt b/inc/3rdparty/site_config/standard/searchengineland.com.txt
deleted file mode 100755
index 9ccc5898..00000000
--- a/inc/3rdparty/site_config/standard/searchengineland.com.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1body: //div[contains(concat(' ',normalize-space(@class),' '),' article ') and (contains(concat(' ',normalize-space(@class),' '),' clear '))]
2title: //div[@class="storyBox"]/h1
3author: //a[@rel="author"]
4date: substring-before(//span[@class="dateline"], 'by')
5
6#Removes related content but cleans up article text
7strip: //h1
8strip: //p[@class="homeStory tdmSideInfo"]
9strip: //div[@id="bylineShare"]
10strip: //script
11strip: //hr
12
13strip_id_or_class: homeStory
14strip_id_or_class: authorpic
15strip_id_or_class: insideComments
16strip_id_or_class: authorbio
17strip_id_or_class: gpt-ad-sel-cube
18strip_id_or_class: smxTextAd
19
20test_url: http://searchengineland.com/googles-jaw-dropping-sponsored-post-campaign-for-chrome-106348 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/seattletransitblog.com.txt b/inc/3rdparty/site_config/standard/seattletransitblog.com.txt
deleted file mode 100755
index 5129c069..00000000
--- a/inc/3rdparty/site_config/standard/seattletransitblog.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h3[@class="storytitle"]
2date: //div[@class='meta']
3body: //div[@class='storycontent']
4
5test_url: http://seattletransitblog.com/2012/06/19/times-st-louis-interested-in-buying-waterfront-streetcars/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sebbo.net.txt b/inc/3rdparty/site_config/standard/sebbo.net.txt
deleted file mode 100755
index b6d9c92d..00000000
--- a/inc/3rdparty/site_config/standard/sebbo.net.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: substring-before(//title, '«')
2body: //div[@class = 'entry']
3strip_id_or_class: 'postmetabox'
4test_url: http://sebbo.net/2010/12/akkus/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/select.yeeyan.org.txt b/inc/3rdparty/site_config/standard/select.yeeyan.org.txt
deleted file mode 100755
index 6e98b149..00000000
--- a/inc/3rdparty/site_config/standard/select.yeeyan.org.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1# This filter is tested on:
2# http://select.yeeyan.org/view/18312/332365
3# http://select.yeeyan.org/view/365295/333788
4# http://select.yeeyan.org/view/174464/332336
5
6tidy:no
7prune:no
8title://h1
9author: //div[@class='sa_author']/span/a
10date: substring-after(//div[@class='sa_author']/span/following-sibling::span, ':')
11body: //div[@class='sa_left closetag']
12wrap_in(b)://div[@class='sa_abstract']
13
14strip://ul[@class='sa_next clearfix']
15strip: //div[@class='sa_author']
16strip: //div[@class='sa_title_box']
17
18test_url: http://select.yeeyan.org/view/258033/333481 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/seriouseats.com.txt b/inc/3rdparty/site_config/standard/seriouseats.com.txt
deleted file mode 100755
index 5e633470..00000000
--- a/inc/3rdparty/site_config/standard/seriouseats.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body: //div[@id='content']
2
3# clean up recipe pages
4strip: //h2[@class='fn'] | //h2[@class='double-lined'] | //h3 | //div[@id='threeColumn2'] | //div[@id='threeColumn3']
5
6#recipe pages
7strip_id_or_class: "recipe-feedback"
8strip_id_or_class: "comments"
9strip_id_or_class: "procedure-number"
10strip_id_or_class: "more-with-author"
11
12#slice
13strip_id_or_class: "inner"
14
15test_url: http://www.seriouseats.com/recipes/2010/09/peking-duck-mandarin-pancakes-plum-sauce-recipe.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sf.curbed.com.txt b/inc/3rdparty/site_config/standard/sf.curbed.com.txt
deleted file mode 100755
index 4c10e9c7..00000000
--- a/inc/3rdparty/site_config/standard/sf.curbed.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@class='post-title']
2author: //div[@class='post-byline']/a
3date: substring-before(//div[@class='post-byline'], ', by')
4
5body: //div[@class='post-body']
6dissolve: //noscript
7test_url: http://sf.curbed.com/archives/2011/10/17/lower_haight_loft_would_really_really_really_like_a_buyer.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sf.eater.com.txt b/inc/3rdparty/site_config/standard/sf.eater.com.txt
deleted file mode 100755
index 1e7c85a0..00000000
--- a/inc/3rdparty/site_config/standard/sf.eater.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@class="post-title"]
2author: //div[@class="post-byline"]/a
3date: substring-before(//div[@class='post-byline'], ', by')
4
5body: //div[@class='post-body']
6strip_id_or_class: post-kicker
7test_url: http://sf.eater.com/archives/2012/05/22/nate_pollack_talks_about_the_american_grilled_cheese_kitchen_moving_into_the_mission.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sfgate.com.txt b/inc/3rdparty/site_config/standard/sfgate.com.txt
deleted file mode 100755
index 54691122..00000000
--- a/inc/3rdparty/site_config/standard/sfgate.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: /html/head/title
2
3body: //div[@id = 'articlecontent']/div[contains(@class, 'bodytext')]
4author: //div[@class = 'articleheadings']/p[contains(@class,'author')]/span[@class = 'fn']
5date: //div[@class = 'articleheadings']/span[@class = 'updated']
6strip: //div[div[contains(@class, 'imgbox')]]
7
8body: //div[@class = 'blogitem']
9author: //p[@class="credit"]/span[@class="author"]/a[position() = 1]
10date: //span[@class = 'pubdate']
11
12test_url: http://www.sfgate.com/columnists/garchik/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sfweekly.com.txt b/inc/3rdparty/site_config/standard/sfweekly.com.txt
deleted file mode 100755
index 73c3017e..00000000
--- a/inc/3rdparty/site_config/standard/sfweekly.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[contains(@class, 'content_body')]
2strip_id_or_class: det_rel
3test_url: http://www.sfweekly.com/2012-03-14/news/cia-lsd-wayne-ritchie-george-h-white-mk-ultra/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/shabayek.com.txt b/inc/3rdparty/site_config/standard/shabayek.com.txt
deleted file mode 100755
index 9a0d60ae..00000000
--- a/inc/3rdparty/site_config/standard/shabayek.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1date: //span[@class='date']
2body: //div[@class='post_content']
3test_url: http://www.shabayek.com/blog/2011/10/16/%D8%AF%D8%B1%D9%88%D8%B3-%D9%85%D9%86-%D9%82%D8%B5%D8%A9-%D8%AA%D8%A3%D8%B3%D9%8A%D8%B3-%D8%AA%D9%88%D9%8A%D8%AA%D8%B1-%E2%80%93%D8%AC3/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/shawnblanc.net.txt b/inc/3rdparty/site_config/standard/shawnblanc.net.txt
deleted file mode 100755
index bd8438f7..00000000
--- a/inc/3rdparty/site_config/standard/shawnblanc.net.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title://*[@class='primary']/h1
2date: //*[@class='articledate']
3author: substring-before(substring-after(//*[@class='block first']/p,'2012 '),'.')
4body: //div[@class='primary']
5footnotes: yes
6strip: //*[@class='primary']/h1
7strip: //*[@class='articledate']
8strip: //*[@class='detailsarticle']
9strip: //*[@class='endnav']
10strip: //*[@class='endmeta']
11test_url: http://shawnblanc.net/2011/11/kindle-touch-review/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/shifteleven.com.txt b/inc/3rdparty/site_config/standard/shifteleven.com.txt
deleted file mode 100755
index 43fd871d..00000000
--- a/inc/3rdparty/site_config/standard/shifteleven.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[ @class='entry-content' ]
2
3strip: //div[ contains(@class, 'sharing') ]
4
5date: //div[ @class='entry-meta' ]/a
6test_url: http://shifteleven.com/articles/2008/05/10/issue-tracking-git-ticgit \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/siasat.pk.txt b/inc/3rdparty/site_config/standard/siasat.pk.txt
deleted file mode 100755
index b10e12de..00000000
--- a/inc/3rdparty/site_config/standard/siasat.pk.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1#body: (//div[@class='ftr-yt-vid'])[1]
2body: (//blockquote[contains(@class, 'postcontent')])[1]
3body: (//div[starts-with(@id, 'post_message')])[1]
4
5prune: no
6tidy: no
7
8#replace_string(<iframe title="YouTube video player"): <div class="ftr-yt-vid"><iframe title="YouTube video player"
9#replace_string(</iframe>): </iframe>&nbsp;</div>
10
11test_url: http://www.siasat.pk/forum/showthread.php?107668-Policy-Matters-17th-March-2012-Dr-Shahid-Masood-Gen-Hameed-gul-amp-Fawad-Chudhary-Pak-US-Relationship&p=787733 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/signalscv.com.txt b/inc/3rdparty/site_config/standard/signalscv.com.txt
deleted file mode 100755
index 2d3c388e..00000000
--- a/inc/3rdparty/site_config/standard/signalscv.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1author: //span[contains(@class, 'byline_1')]
2date: //span[@class='posted_date']
3body: //*[contains(@class, 'bigimage_container') or contains(@class, 'overlay_text') or contains(@id, 'articlebody')]
4
5strip_id_or_class: leftWrapper
6
7prune: no
8
9test_url: http://www.signalscv.com/section/46/article/102948/
10test_url: http://www.signalscv.com/syndication/feeds/rss/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/simonwillison.net.txt b/inc/3rdparty/site_config/standard/simonwillison.net.txt
deleted file mode 100755
index 69999698..00000000
--- a/inc/3rdparty/site_config/standard/simonwillison.net.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[contains(@class, "entry")]
2
3date: //div[contains(@class, "entryFooter")]/a
4
5test_url: http://simonwillison.net/2009/Oct/22/redis/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/singaporeanstocksinvestor.blogspot.com.txt b/inc/3rdparty/site_config/standard/singaporeanstocksinvestor.blogspot.com.txt
deleted file mode 100755
index 46e2d5f2..00000000
--- a/inc/3rdparty/site_config/standard/singaporeanstocksinvestor.blogspot.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@class='post-body']
2strip: //div[@id='lws_0']
3prune: no
4
5test_url: http://singaporeanstocksinvestor.blogspot.com/2011/04/aims-amp-capital-industrial-reit.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/singularityhub.com.txt b/inc/3rdparty/site_config/standard/singularityhub.com.txt
deleted file mode 100755
index 3999d4d4..00000000
--- a/inc/3rdparty/site_config/standard/singularityhub.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body://div[contains(@class,"entry-content")]
2test_url: http://singularityhub.com/2011/05/21/google-invades-your-home-android-phones-control-your-appliances-and-accessories-video/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sintagoulis.gr.txt b/inc/3rdparty/site_config/standard/sintagoulis.gr.txt
deleted file mode 100755
index 0d05c40e..00000000
--- a/inc/3rdparty/site_config/standard/sintagoulis.gr.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@class='headline']//h2
2body: //div[contains(@class, 'storycontent')]
3
4prune: no
5
6test_url: http://sintagoulis.gr/sokolatenia/sokolatenia-mpompa-me-amaretti- \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sivers.org.txt b/inc/3rdparty/site_config/standard/sivers.org.txt
deleted file mode 100755
index a88f30d7..00000000
--- a/inc/3rdparty/site_config/standard/sivers.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //article[@class='post']/header[@class='wrapper']//h1/a
2author: //header[@id='masthead']//h1/a
3date: //article[@class='post']/header[@class='wrapper']//p[@class='postdate']
4body: //div[@id='body-content']
5
6test_url: http://sivers.org/delegate/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/skanesfria.se.txt b/inc/3rdparty/site_config/standard/skanesfria.se.txt
deleted file mode 100755
index a0ddac79..00000000
--- a/inc/3rdparty/site_config/standard/skanesfria.se.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.skanesfria.se/artikel/112045 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/slashfilm.com.txt b/inc/3rdparty/site_config/standard/slashfilm.com.txt
deleted file mode 100755
index 4d17176a..00000000
--- a/inc/3rdparty/site_config/standard/slashfilm.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: substring-before(//title,'| /Film')
2date: substring-before(substring-after(//p[@class='post-info'],'Posted on '),'by')
3strip: //div[@class='pm-left']
4strip: //div[@class='pm-right']
5strip: //h2/span
6next_page_link: //h2/strong/a
7strip: //h2/strong/a
8strip: //p[contains(text(),'we have to split this post over')]
9strip: //p[@class='post-info']
10strip: //h1/a
11strip: //img[contains(@src,'siteimages/authors')]
12strip: //div[@id='header']
13strip: //div[@class='topad-right']
14strip: //strong[contains(text(),'Cool Posts From Around the Web:')]
15test_url: http://www.slashfilm.com/superhero-bits-206/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/slate.com.txt b/inc/3rdparty/site_config/standard/slate.com.txt
deleted file mode 100755
index d5798e01..00000000
--- a/inc/3rdparty/site_config/standard/slate.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1title: //h1[@class="sl-art-head-dek"]
2body: //article//div[@class='sl-art-body']/div[contains(@class, 'body')]
3strip: //div[@class="department_kicker"]
4strip: //div[@id="insider_ad_wrapper" or @id="insider_ad_inner"]
5strip: //div[@id="bottom_sponsored_links"]
6strip: //div[@class="sl-art-ad-midflex"]
7#strip: //dl
8#strip: //p[em/a[contains(@href, 'facebook.com')]]
9prune: no
10
11author: //div[@id='author_bio']//a[contains(@href, '/author/')]
12author: //a[contains(@href, '/authors.')]
13
14date: substring-before(substring-after(//span[@class='sl-art-byline'], 'Posted '), ', at ')
15
16single_page_link: //a[@class='sl-art-sinpage']
17
18test_url: http://www.slate.com/id/2274583/pagenum/all/
19test_url: http://www.slate.com/id/2293116/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/slice.seriouseats.com.txt b/inc/3rdparty/site_config/standard/slice.seriouseats.com.txt
deleted file mode 100755
index e62a3966..00000000
--- a/inc/3rdparty/site_config/standard/slice.seriouseats.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body: //div[@id='content']
2
3# clean up recipe pages
4strip: //h2[@class='fn'] | //h2[@class='double-lined'] | //h3 | //div[@id='threeColumn2'] | //div[@id='threeColumn3']
5
6#recipe pages
7strip_id_or_class: "recipe-feedback"
8strip_id_or_class: "comments"
9strip_id_or_class: "procedure-number"
10strip_id_or_class: "more-with-author"
11
12#slice
13strip_id_or_class: "inner"
14
15test_url: http://slice.seriouseats.com/archives/2010/10/the-pizza-lab-how-to-make-great-new-york-style-pizza.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/slog.thestranger.com.txt b/inc/3rdparty/site_config/standard/slog.thestranger.com.txt
deleted file mode 100755
index f9526945..00000000
--- a/inc/3rdparty/site_config/standard/slog.thestranger.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1strip_id_or_class: postCategory
2title: //h3[@class='postTitle']
3body: //div[@class='postBody']
4test_url: http://slog.thestranger.com/slog/archives/2010/10/12/sl-letter-of-the-day-leave-it-alone \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/smartinvestor.de.txt b/inc/3rdparty/site_config/standard/smartinvestor.de.txt
deleted file mode 100755
index 85ca46de..00000000
--- a/inc/3rdparty/site_config/standard/smartinvestor.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //td[@class='hweissblau2']
2body: //p[@class='copy'] | //div[@class='Section1']
3prune: no
4
5test_url: http://www.smartinvestor.de/news/smartinvestor/detail.hbs?itemid=item949496655&recnr=14593 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sme.sk.txt b/inc/3rdparty/site_config/standard/sme.sk.txt
deleted file mode 100755
index d41612cc..00000000
--- a/inc/3rdparty/site_config/standard/sme.sk.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //meta[@property='og:title']/@content
2date: //p[@class='autor_line']/b/text()
3test_url: http://www.sme.sk/c/6268206/lipsic-vidi-malcharkove-uplatky.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/smithsonianmag.com.txt b/inc/3rdparty/site_config/standard/smithsonianmag.com.txt
deleted file mode 100755
index 3e8fee95..00000000
--- a/inc/3rdparty/site_config/standard/smithsonianmag.com.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1# meta data
2title://h1[@id = 'articleTitle']
3author:substring-after(//ul[@id = 'byLine']/li[1],'By ')
4date:substring-before(substring-after(//ul[@id = 'byLine']/li[last()],','),',')
5body://div[@id = 'article-body']
6
7# full content
8single_page_link://td/li[@class = 'article-singlepage']/a
9
10# caption clean up
11wrap_in(i)://span[@class='articleImageCaptionwide']
12move_into (//span[@class='articleImageCaptionwide'])://div[@id = 'articleImage']/p
13
14
15# clean up
16strip://p[@id = 'articlePaginationWrapper']
17strip://ul[contains(@class, 'cat-breadcrumb')]
18strip://div [@class= 'viewMorePhotos']
19
20test_url: http://www.smithsonianmag.com/history-archaeology/The-Goddess-Goes-Home.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/smokingapples.com.txt b/inc/3rdparty/site_config/standard/smokingapples.com.txt
deleted file mode 100755
index c68c1321..00000000
--- a/inc/3rdparty/site_config/standard/smokingapples.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h2[@class='custom-entry-title']
2author: substring-after(//span[@class='author vcard'],'by ')
3date: substring-after(//span[@class='publ'],'Published on ')
4body: //div[@class='postentry-content']
5test_url: http://smokingapples.com/software/popclip-for-mac/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/somethingawful.com.txt b/inc/3rdparty/site_config/standard/somethingawful.com.txt
deleted file mode 100755
index 48547948..00000000
--- a/inc/3rdparty/site_config/standard/somethingawful.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1title: //h1
2body: //div[@id = 'content-area']
3author: //p[contains(@class, 'byline')]/a
4autodetect_next_page: yes
5tidy: no
6
7strip_id_or_class: articleid
8strip_id_or_class: logo
9strip_id_or_class: pagebar
10strip_id_or_class: featurenavlinks
11strip_id_or_class: featured_frontpage
12strip_id_or_class: sidebar
13strip_id_or_class: footer
14strip_id_or_class: byline
15strip_id_or_class: logo
16strip_id_or_class: nav_network
17test_url: http://www.somethingawful.com/d/dungeons-and-dragons/wtf-monster-manual.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/songshuhui.net.txt b/inc/3rdparty/site_config/standard/songshuhui.net.txt
deleted file mode 100755
index a9233593..00000000
--- a/inc/3rdparty/site_config/standard/songshuhui.net.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# This filter is tested on:
2# http://songshuhui.net/archives/65522
3# http://songshuhui.net/archives/75760
4title://h2/span/a
5date:substring-before(substring-after(//div[@class='atrctitle']/div, '发表于'),' |')
6body://div[@class='entry']
7test_url: http://songshuhui.net/archives/74819 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sourcebooks.com.txt b/inc/3rdparty/site_config/standard/sourcebooks.com.txt
deleted file mode 100755
index 86e3df5e..00000000
--- a/inc/3rdparty/site_config/standard/sourcebooks.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1#grab the actual content div
2body: //div[@class='rt-article']
3
4test_url: http://www.sourcebooks.com/blog/happy-27th-birthday-sourcebooks.html
diff --git a/inc/3rdparty/site_config/standard/spectator.co.uk.txt b/inc/3rdparty/site_config/standard/spectator.co.uk.txt
deleted file mode 100755
index d0605ed2..00000000
--- a/inc/3rdparty/site_config/standard/spectator.co.uk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1author: /html/body/div[@id='wrapper']/div[@id='main-content']/div[@class='article_body']/a[@class='author-link']/child::text()
2
3body: /html/body/div[@id='wrapper']/div[@id='main-content']/div[@class='article_body']
4
5# Not very helpfull, the title and author are container by the same element that contains the body
6strip: /html/body/div[@id='wrapper']/div[@id='main-content']/div[@class='article_body']/h2 | /html/body/div[@id='wrapper']/div[@id='main-content']/div[@class='article_body']/a[@class='author-link']
7test_url: http://www.spectator.co.uk/arts-and-culture/night-and-day/7449683/spotify-sunday-my-personal-soundtrack.thtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/spectrum.ieee.org.txt b/inc/3rdparty/site_config/standard/spectrum.ieee.org.txt
deleted file mode 100755
index aea3627e..00000000
--- a/inc/3rdparty/site_config/standard/spectrum.ieee.org.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body://div[@class="articleBody"]
2author://p[@class="articleBodyTtl"]
3test_url: http://spectrum.ieee.org/semiconductors/processors/behind-intels-new-randomnumber-generator/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/speirs.org.txt b/inc/3rdparty/site_config/standard/speirs.org.txt
deleted file mode 100755
index 3bf859e3..00000000
--- a/inc/3rdparty/site_config/standard/speirs.org.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body://div[@class="body"]
2test_url: http://speirs.org/blog/2011/5/5/ipad-trials-at-oklahoma-state.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/spiegel.de.txt b/inc/3rdparty/site_config/standard/spiegel.de.txt
deleted file mode 100755
index 413e0155..00000000
--- a/inc/3rdparty/site_config/standard/spiegel.de.txt
+++ /dev/null
@@ -1,75 +0,0 @@
1# A. Niepel, narya.de@...
2# - added single_page_link
3# - added author for default and single page view
4# - added date for single page view
5# fforst@...
6# - Fixed it
7# bode2104@...
8# - Fixed single_page_link
9# - Included intro text in single page view
10# - Added body in default view
11
12# set body
13tidy: no
14# body in single page view
15body: //div[@id="spArticleContent"]
16# body in default view
17body: //div[@id="spArticleSection"]
18# body in "Fotostrecke"
19body: //div[@id="spBigaContent"]
20
21# set date in single page view
22date: //div[@id="spArticleContent"]/h3
23# strip date
24strip: //div[@id="spArticleContent"]/h3
25# set date in "Fotostrecke"
26date: //div[@id="spBigaDatum"]
27
28#set title in single page view
29title: //div[@id='spArticleContent']/h2
30# strip title
31strip: //div[@id='spArticleContent']/h1
32strip: //div[@id='spArticleContent']/h2
33#set title in "Fotostrecke"
34title: //div[@class='spBigaHeadline']
35
36# set author
37author: //p[@class="spAuthor"]/a
38author: substring-after(//p[@class="spAuthor"], 'Von ')
39# strip author
40strip: //p[@class='spAuthor']
41
42# remove captions
43strip: //*/span[@class='spPicLayerText']
44strip: //*/div[@class='spPanoPlayerPaneControl']
45strip: //*/div[@class='spCredit']
46strip: //*/div[@class='spCredit']/following-sibling::p
47
48# remove ads
49strip: //div[@class='spMInline']
50
51# remove photogalleries and extras
52strip: //div[@class='spPhotoGallery']
53strip: //div[@class='spPhotoGallery']/following-sibling::br
54strip: //div[@class='spAssetAlignleft']
55strip: //div[contains(@class,'spAsset')]
56strip: //br[@clear='all']
57
58# remove community functions
59strip: //div[@id='spSocialBookmark']
60strip: //div[contains(@class, 'spCommunityBox')]
61strip: //div[contains(@class, 'spArticleNewsfeedBox')]
62strip: //div[@class='spArticleCredit']
63
64# remove clutter in "Fotostrecke"
65strip: //div[@id='spBreadcrumb']
66strip: //div[@id='spBigaLatestEntries']
67strip: //div[contains(@class, 'spBigaNavi')]
68strip: //div[@class='spDottedLine']
69
70# Use link to print article for single page view
71single_page_link: //a[contains(@href, '-druck')]
72
73# use next link in "Fotostrecke"
74next_page_link: //a[@class='spBigaControlForw']
75test_url: http://www.spiegel.de/politik/deutschland/0,1518,787602,00.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/spiked-online.com.txt b/inc/3rdparty/site_config/standard/spiked-online.com.txt
deleted file mode 100755
index 7ec39c2b..00000000
--- a/inc/3rdparty/site_config/standard/spiked-online.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //div[@id='articleTitleWrapper' or @id='mainFeature']//h1
2author: //*[@id='authorNameJob']//a
3date: //div[@id='articleMeta']/p
4body: //div[@id='mainFeature']//img | //div[contains(@class, 'fullText')]
5
6test_url: http://www.spiked-online.com/newsite/article/standing_up_to_the_white-coated_gods_of_fortune/13785
7test_url: http://www.spiked-online.com/newsite/article/sex_box_and_the_crisis_of_intimacy/14168 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/spin.com.txt b/inc/3rdparty/site_config/standard/spin.com.txt
deleted file mode 100755
index 88eb454c..00000000
--- a/inc/3rdparty/site_config/standard/spin.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1tidy: no
2body: //section[contains(@class, 'main')]
3strip: //footer
4strip: //a[@class='paginated']
5test_url: http://www.spin.com/articles/bathlands-deep-heart-americas-new-drug-nightmare \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/splatf.com.txt b/inc/3rdparty/site_config/standard/splatf.com.txt
deleted file mode 100755
index 3e05a225..00000000
--- a/inc/3rdparty/site_config/standard/splatf.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author:string('Dan Frommer/SplatF')
2date://div[@class='postdate']
3body://div[@class='entry']
4title://div[@class='post']/h1
5test_url: http://www.splatf.com/2012/02/month-six/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/splitsider.com.txt b/inc/3rdparty/site_config/standard/splitsider.com.txt
deleted file mode 100755
index 4bbc7aac..00000000
--- a/inc/3rdparty/site_config/standard/splitsider.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: //div[@class='byline']/a
2date: //div[@id='date']
3body: //div[@class='entry']
4test_url: http://splitsider.com/2011/10/saturday-nights-children-rob-riggle-2004-2005/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sport.detik.com.txt b/inc/3rdparty/site_config/standard/sport.detik.com.txt
deleted file mode 100755
index 18552d1e..00000000
--- a/inc/3rdparty/site_config/standard/sport.detik.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title://div[@class="content_detail"]/h1
2
3author://div[@class="author"]/strong
4
5date:substring-before(substring-after(//div[@class="content_detail"]/*[@class="date"], ','), ' WIB')
6
7body://div[@class='text_detail']
8test_url: http://sport.detik.com/sepakbola/read/2012/05/23/065011/1922350/71/agen-silva-ingin-bertahan-di-milan?b99220270 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sport.orf.at.txt b/inc/3rdparty/site_config/standard/sport.orf.at.txt
deleted file mode 100755
index f0be85c7..00000000
--- a/inc/3rdparty/site_config/standard/sport.orf.at.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1single_page_link: //div[@id='content']//p[@class='readMore']/a
2
3title: //div[@class='hidden offscreen']/h2
4body: //div[@id="storyText"]
5move_into(//div[@id='storyText']): //div[@class='fact']
6strip: //small[@class='credit']
7strip: //small[@class='caption']
8date: substring-after(//div[@id='storyMeta']//p[@class='date'],'Publiziert am')
9strip: //p[@class='toplink']
10
11test_url: http://sport.orf.at/stories/2084851/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sport365.fr.txt b/inc/3rdparty/site_config/standard/sport365.fr.txt
deleted file mode 100755
index 8688f40b..00000000
--- a/inc/3rdparty/site_config/standard/sport365.fr.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //h2[contains(@class, 'body_head')] | //div[@id='img_article' or contains(@class, 'body_content')]
2body: //div[contains(@class, 'cpanel')]//div[contains(@class, 'thumbnails')]
3prune: no
4strip: //div[starts-with(@class, 'actu_')]
5strip: //div[contains(@class, 'data')]
6
7test_url: http://www.sport365.fr/basketball/nba/new-york-accord-avec-toronto-pour-bargnani-1038773.shtml
8test_url: http://www.sport365.fr/rss.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sports.espn.go.com.txt b/inc/3rdparty/site_config/standard/sports.espn.go.com.txt
deleted file mode 100755
index 8c21ef2b..00000000
--- a/inc/3rdparty/site_config/standard/sports.espn.go.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //div[@class='headline'] | //div[@class='mod-header']/h3
2body: //div[contains(@class, 'article')]
3strip: //div[contains(@class, 'mod-inline')]
4strip: //*/span[@class='page-actions']/a
5strip: //*/span[@class='page-actions']/a
6strip: //div[@class='page-actions']/*
7strip: //div[@class='headline'] | //div[@class='mod-header']/h3
8strip: //div[@class='mod-blog-navigation']
9strip: //div[@class='monthday']
10strip: //div[@class='time']
11strip: //div[@class='timeofday']
12test_url: http://sports.espn.go.com/espn/page2/story?page=simmonsnfl2010/lebron_james_return_clevelend&sportCat=nba \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sports.yahoo.com.txt b/inc/3rdparty/site_config/standard/sports.yahoo.com.txt
deleted file mode 100755
index b0f57e2c..00000000
--- a/inc/3rdparty/site_config/standard/sports.yahoo.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //div[@id='article']/div[@class='hd']/h1
2body: //p[@id='byline'] | //div[@id='article']//div[@class='body_copy 0']
3strip: //div[@class='foot']
4strip: //div[@id='sidebar']//div[@class='ft']
5strip: //p[@id='byline']//em
6tidy: no
7prune: no
8
9test_url: http://sports.yahoo.com/nba/news?slug=ap-nbafinals \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sportschau.de.txt b/inc/3rdparty/site_config/standard/sportschau.de.txt
deleted file mode 100755
index 1e58b520..00000000
--- a/inc/3rdparty/site_config/standard/sportschau.de.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1title://div[@id='ardContent']/h1
2
3author://p[@id='ardAutor']
4author://span[@id='ardQuelle']
5author:string('sportschau.de')
6
7date:substring-after(//span[@id='ardStand'], 'Stand: ')
8
9body://div[@id='ardContent']
10
11strip://div[@id='ardContent']/h1
12strip://p[@id='ardAutor']
13strip: //div[@class='embeddedPlayer_clipinfo']
14strip: //div[@class='ardMehrZumThemaRechts']
15strip: //*[contains(@class, 'inv')]
16
17strip: //p[@id='ardAbbinder']
18strip: //div[@class='socialBookmarks']
19strip: //div[@id='ardContentEnd']
20strip: //div[@id='ardDisclaimer']
21strip: //div[@id='ardRechteSpalte']
22test_url: http://www.sportschau.de/sp/fussball/news201203/17/analyse_leverkusen_gladbach.jsp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sportsillustrated.cnn.com.txt b/inc/3rdparty/site_config/standard/sportsillustrated.cnn.com.txt
deleted file mode 100755
index b3da8138..00000000
--- a/inc/3rdparty/site_config/standard/sportsillustrated.cnn.com.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1# main sportsillustrated.com articles
2#
3body: //div[@id="cnnStoryContent"]
4title: //div[@id="cnnStoryHeadline"]//h1
5author: //div[@id="cnnSubBanner"]//strong
6date: substring-after(//div[@id="cnnTimeStamp"], "Updated: ")
7date: substring-after(//div[@id="cnnTimeStamp"], "Posted: ")
8
9# kill ugly font buttons
10strip: //div[@id="cnnSCFontButtons"]
11
12# kill misc filler videos & etc
13strip: //div[@class="cnnDivideContent"]
14strip: //*[@class="cnnTMbox"]
15
16# si vault articles
17# -------------
18body: //div[@class="siv_artPara"]
19title: //div[@class="siv_artHeader"]//h1
20author: //div[@class="byline"]
21date: //div[@class="date"]
22
23next_page_link: //div[@id='cnnStoryContinue']/a
24strip_id_or_class: cnnstorypagination
25
26test_url: http://sportsillustrated.cnn.com/2012/writers/peter_king/02/27/combine/index.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sprengsatz.de.txt b/inc/3rdparty/site_config/standard/sprengsatz.de.txt
deleted file mode 100755
index 5b683811..00000000
--- a/inc/3rdparty/site_config/standard/sprengsatz.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h2
2author: string('Michael Spreng')
3date: //div[@class='date']
4body: //div[@class='entry']
5test_url: http://www.sprengsatz.de/?p=3691 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sqlite.org.txt b/inc/3rdparty/site_config/standard/sqlite.org.txt
deleted file mode 100755
index 15763c32..00000000
--- a/inc/3rdparty/site_config/standard/sqlite.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@id='ff-body']
2
3replace_string(<h1 align=center>): <div id="ff-body"><h1 align=center>
4
5prune: no
6
7test_url: http://www.sqlite.org/fileformat2.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/squashed.tumblr.com.txt b/inc/3rdparty/site_config/standard/squashed.tumblr.com.txt
deleted file mode 100755
index 8eae13ed..00000000
--- a/inc/3rdparty/site_config/standard/squashed.tumblr.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class='content']
2date: substring-before( //div[@class='unit dateAndNotes'], 'with')
3title: //h3
4test_url: http://squashed.tumblr.com/post/17613522228/lets-stop-blaming-the-victims-of-predatory-lending \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stackoverflow.com.txt b/inc/3rdparty/site_config/standard/stackoverflow.com.txt
deleted file mode 100755
index bb95e93a..00000000
--- a/inc/3rdparty/site_config/standard/stackoverflow.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1body: //div[@class='post-text' or @class='user-action-time' or @class='user-details' or @class='vote'] | //div[@id='answers-header']//h2
2
3replace_string(<div class="user-details"><br></div>): <!-- nothing -->
4replace_string(<div class="vote">): <div class="vote"><h3>Vote count:
5
6strip_id_or_class: vote-up
7strip_id_or_class: vote-down
8strip_id_or_class: star-off
9strip_id_or_class: favoritecount
10strip_id_or_class: -share
11strip_id_or_class: badgecount
12
13
14test_url: http://stackoverflow.com/questions/4484289/id-like-to-understand-the-jquery-plugin-syntax \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stalbansreview.co.uk.txt b/inc/3rdparty/site_config/standard/stalbansreview.co.uk.txt
deleted file mode 100755
index a0f1587c..00000000
--- a/inc/3rdparty/site_config/standard/stalbansreview.co.uk.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //div[@class='articleLeft']/h3
2
3author: substring-after(//span[@class='articleAuthor']/a,'By ')
4
5date: substring-before(//span[@class='articleDateTime'],'in ')
6
7body: //div[@class='articleLeft']
8strip: //div[@class='articleMoreNews']
9strip: //div[@class='articleLeft']/h3
10strip: //div[@class='articleLeft']/p[@class='articleInfo clearfix']
11
12# Remove duplicate title from text
13strip: //div[@id='site']/div[5][@class='holder']/div[1][@class='hBlock']/div[1][@class='sglCol article']/h3
14test_url: http://www.stalbansreview.co.uk/news/9581446.New_roundabout_in_King_Harry_Lane/r/?ref=rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/standard.co.uk.txt b/inc/3rdparty/site_config/standard/standard.co.uk.txt
deleted file mode 100755
index 71a2bda1..00000000
--- a/inc/3rdparty/site_config/standard/standard.co.uk.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1autodetect_next_page: no
2footnotes: no
3dissolve: //div[@class="column-2"]//div[@class="widget"]
4dissolve: //div[@class="column-2"]//div
5
6author: //div[@class="innerbyline"]/a
7strip: //div[@class="innerbyline"]/a
8
9strip: //p[@class="dateline"]
10date: //p[@class="dateline"]
11
12title: //h1[@class="title"]
13author: //div[@class="innerbyline"]/a
14date: //p[@class="dateline"]
15body: //div[@class="column-2"]
16test_url: http://www.standard.co.uk/lifestyle/esmagazine/grace-and-flavour-pizarro-7938350.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/staradvertiser.com.txt b/inc/3rdparty/site_config/standard/staradvertiser.com.txt
deleted file mode 100755
index 254e2c2b..00000000
--- a/inc/3rdparty/site_config/standard/staradvertiser.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[@id='storyTitle']
2author: substring-after(//span[@class='hsa_postCredit'], 'By ')
3date://span[@class='hsa_dateStamp']
4body: //div[@class='storytext']
5strip_id_or_class: insideStoryAd
6strip_id_or_class: printDesc
7strip_id_or_class: sb_2010_story_tools
8strip_id_or_class: FBConnectButton_Text
9strip_id_or_class: breadcrumbs
10prune: no
11test_url: http://www.staradvertiser.com/news/20111112_World_leaders_step_onto_isle_stage.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stephenfry.com.txt b/inc/3rdparty/site_config/standard/stephenfry.com.txt
deleted file mode 100755
index efd1ec2b..00000000
--- a/inc/3rdparty/site_config/standard/stephenfry.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: /html/head/meta[@name='title']/@content
2author: //span[contains(concat(' ',normalize-space(@class),' '),' article_author ')]/a
3date: //span[contains(concat(' ',normalize-space(@class),' '),' article_date ')]
4
5body: //div[@class='entry-content']
6
7single_page_link: //p[@class='pagination']/a
8test_url: http://www.stephenfry.com/2011/10/06/steve-jobs/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stlbeacon.org.txt b/inc/3rdparty/site_config/standard/stlbeacon.org.txt
deleted file mode 100755
index 75379a9c..00000000
--- a/inc/3rdparty/site_config/standard/stlbeacon.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: article/h1
2author: //p[@class='byline']
3date: //p[@class='date']
4body: //div[@class='body']
5test_url: https://www.stlbeacon.org/#!/content/23404/mogop_caucus_031712 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stockholm.etc.se.txt b/inc/3rdparty/site_config/standard/stockholm.etc.se.txt
deleted file mode 100755
index 2f4f8cb8..00000000
--- a/inc/3rdparty/site_config/standard/stockholm.etc.se.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1strip_id_or_class: 'left'
2strip_id_or_class: 'right'
3strip_id_or_class: 'block-belowcontent'
4
5test_url: http://stockholm.etc.se/reportage/bakom-stangda-dorrar-pa-fas-3-massa \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stockholmsfria.nu.txt b/inc/3rdparty/site_config/standard/stockholmsfria.nu.txt
deleted file mode 100755
index cc8c28b8..00000000
--- a/inc/3rdparty/site_config/standard/stockholmsfria.nu.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.stockholmsfria.nu/artikel/112068 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/straightdope.com.txt b/inc/3rdparty/site_config/standard/straightdope.com.txt
deleted file mode 100755
index f01d7ad1..00000000
--- a/inc/3rdparty/site_config/standard/straightdope.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='article' or @id='current_illustration']
2title: //div[@id='article']//h1
3date: //div[@id='article']//div[@class='date']
4prune: no
5
6test_url: http://www.straightdope.com/columns/read/947/whatever-happened-to-adoption-of-the-metric-system-in-the-u-s \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/streetsblog.net.txt b/inc/3rdparty/site_config/standard/streetsblog.net.txt
deleted file mode 100755
index 6cf03ca6..00000000
--- a/inc/3rdparty/site_config/standard/streetsblog.net.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h2[@class="post-title"]
2date: //span[@class="post-date"]
3body: //div[@class="post-entry"]
4
5#This is also good for *.streetsblog.org, for example:
6#http://dc.streetsblog.org/2011/10/21/friday-job-market/
7test_url: http://streetsblog.net/2011/10/20/look-out-below-one-in-nine-bridges-structurally-deficient-reports-t4a/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stuff.co.nz.txt b/inc/3rdparty/site_config/standard/stuff.co.nz.txt
deleted file mode 100755
index 3756092c..00000000
--- a/inc/3rdparty/site_config/standard/stuff.co.nz.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1title://div[@id='left_col']/h1
2author:substring-after(//span[contains(@class,'storycredit')],'BY ')
3author://span[contains(@class,'storycredit')]
4date:substring-after(//div[contains(@class,'toolbox_date')],'Last updated ')
5date://div[contains(@class,'toolbox_date')]
6body://div[@id='left_col']
7
8strip_id_or_class: toolbox
9strip_id_or_class: story_features
10strip_id_or_class: sharebox_new
11strip_id_or_class: related_box
12strip_id_or_class: sponsored_links
13strip_id_or_class: hidden_ad
14strip_id_or_class: story_content_top
15strip_id_or_class: total_number
16strip_id_or_class: sort_order
17strip_id_or_class: subscribe_order
18
19strip://div[contains(@class,'ad_story')]
20
21test_url: http://www.stuff.co.nz/national/politics/3930344/PM-issues-challenge
22test_url: http://www.stuff.co.nz/entertainment/7045944/International-praise-for-Ladyhawke \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/stumbleupon.com.txt b/inc/3rdparty/site_config/standard/stumbleupon.com.txt
deleted file mode 100755
index 9adc3c50..00000000
--- a/inc/3rdparty/site_config/standard/stumbleupon.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link: //iframe[@id='tb-stumble-frame']/@src
2
3test_url: http://www.stumbleupon.com/su/35V0wB/zouchmagazine.com/poetry-violet/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/subtraction.com.txt b/inc/3rdparty/site_config/standard/subtraction.com.txt
deleted file mode 100755
index 9ba6eb77..00000000
--- a/inc/3rdparty/site_config/standard/subtraction.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1title: //*[@id='posts']/div[1]/h2
2author: //*[@id='posts']/div[1]/div[2]/span[2]/a
3date: //*[@class='date']
4body: //div[@class='body-lead']
5
6# take out the bit saying 'body'
7strip: //div[@class='body-lead']/div[@class='info-label']
8
9
10
11
12
13
14
15
16
17test_url: http://www.subtraction.com/2011/02/01/unnecessary-explanations \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sueddeutsche.de.txt b/inc/3rdparty/site_config/standard/sueddeutsche.de.txt
deleted file mode 100755
index 74b8d451..00000000
--- a/inc/3rdparty/site_config/standard/sueddeutsche.de.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1# 2012-12-04: complete rewrite after Süddeutsche.de relaunch - carlo@...
2
3single_page_link: //a[ contains( @href, "/2.220/" ) ]
4
5body: //article[@id="sitecontent"]/section[@class="body"]
6author: //address[@class="author"]
7date: //div[@class="header"]//h1//span[@class="updated"]
8wrap_in(small): //div[@class="footer"]
9wrap_in(i): //figcaption/h3
10dissolve: //figcaption//h3
11dissolve: //figure/div[@class="body"]
12dissolve: //figure/a
13
14strip: //figure[ not( contains(@class, "zoomimage" ) ) ]
15strip: //div[@data-onlineonly="true"]
16strip: //address[@class="author"]
17
18test_url: http://www.sueddeutsche.de/muenchen/mietshaus-am-gaertnerplatz-alles-muss-raus-1.1556693 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/summify.com.txt b/inc/3rdparty/site_config/standard/summify.com.txt
deleted file mode 100755
index 1128e1bb..00000000
--- a/inc/3rdparty/site_config/standard/summify.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip_id_or_class: toolbar
2test_url: http://summify.com/story/Tmt1YQ0JBgKTAHwK/www.nybooks.com/articles/archives/2003/jan/16/fixed-opinions-or-the-hinge-of-history/?pagination=false \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/suntimes.com.txt b/inc/3rdparty/site_config/standard/suntimes.com.txt
deleted file mode 100755
index 6d4594cf..00000000
--- a/inc/3rdparty/site_config/standard/suntimes.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //div[@class='story-details']/h1
2date: //span[@class='date-time']
3Author: substring-after(//p[@class='by-line'], 'By ')
4
5strip: //div[@class='videoThumbnails']
6strip: //div[@class='ad-square2-container']
7strip: //div[@class='homeDeliveryContainer5']
8
9strip: //div[@class='image-description']
10strip: //div[@id='internal-side-bar']
11
12strip: //span[@class='hide']
13strip: //div[@class='date']
14test_url: http://www.suntimes.com/technology/ihnatko/8816567-452/review-kindle-fire-is-no-ipad-killer-but-it-is-a-killer-device.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/svd.se.txt b/inc/3rdparty/site_config/standard/svd.se.txt
deleted file mode 100755
index bc0a1ca0..00000000
--- a/inc/3rdparty/site_config/standard/svd.se.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1body: //div[@id='article-content']
2author: //div[@id='article']//div[@class='byline']/p
3
4# Ads
5strip_id_or_class: articlead
6
7# Sharing
8strip_id_or_class: share
9
10prune: no
11
12test_url: http://www.svd.se/nyheter/inrikes/oppositionen-stoppar-skattesankning_8531228.svd
13test_url: http://www.svd.se/nyheter/inrikes/manga-huggormsbitna-golfare_5004031.svd
14test_url: http://www.svd.se/?service=rss&type=senastenytt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/svt.se.txt b/inc/3rdparty/site_config/standard/svt.se.txt
deleted file mode 100755
index ba35f7d1..00000000
--- a/inc/3rdparty/site_config/standard/svt.se.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //article[@role='main']//h1
2body: //article[@role='main']
3strip: //aside
4replace_string(<noscript>): <div>
5replace_string(</noscript>): </div>
6strip_id_or_class: svtHide-No-Js
7strip_id_or_class: aside
8strip_id_or_class: Aside
9strip_id_or_class: hidden
10strip_id_or_class: Share
11tidy: no
12prune: no
13
14test_url: http://www.svt.se/ug/framtidsdrommar-om-jobb-blev-lackande-gifthal
15test_url: http://www.svt.se/nyheter/het-debatt-mellan-borg-och-andersson
16test_url: http://www.svt.se/nyheter/regionalt/svtsormland/sj-tag-evakuerades-efter-rokdrama \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sydsvenskan.se.txt b/inc/3rdparty/site_config/standard/sydsvenskan.se.txt
deleted file mode 100755
index 24ba1426..00000000
--- a/inc/3rdparty/site_config/standard/sydsvenskan.se.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //h1
2
3author: //a[contains(@href, '/sok/?')]/text()
4
5date: //meta[@name='bi3dPubDate']/@content
6
7body: (//div[contains(@class, 'slider_wrapper')])[1] | //div[@id='article_image' or @class='two_column_left']
8strip_id_or_class: story
9strip_id_or_class: article_body_ad
10strip: //div[@class='leadText saplo:lead']/h5
11
12replace_string(<br />): <br /><br />
13
14prune: no
15
16test_url: http://www.sydsvenskan.se/malmo/allt-jag-ager-ligger-pa-botten/
17test_url: http://www.sydsvenskan.se/kultur-och-nojen/-jag-vill-garna--stanna--
18test_url: http://www.sydsvenskan.se/rss.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/symmetrymagazine.org.txt b/inc/3rdparty/site_config/standard/symmetrymagazine.org.txt
deleted file mode 100755
index 5bcfb9ef..00000000
--- a/inc/3rdparty/site_config/standard/symmetrymagazine.org.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //div[contains(@class, "post")]/h2
2
3author: //div[contains(@class, "post")]/p[position()=last()]/text()[1]
4
5date: //div[contains(@class, "post")]/p[1]
6
7body: //div[contains(@class, "post")]
8
9strip: //div[contains(@class, "post")]/h2[1]
10strip: //div[contains(@class, "post")]/p[1]
11strip: //div[contains(@class, "post")]/p[position()=last()]
12test_url: http://www.symmetrymagazine.org/breaking/?p=12784 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sz-magazin.sueddeutsche.de.txt b/inc/3rdparty/site_config/standard/sz-magazin.sueddeutsche.de.txt
deleted file mode 100755
index e058032c..00000000
--- a/inc/3rdparty/site_config/standard/sz-magazin.sueddeutsche.de.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: //h1
2body://div[@class='drucken']
3author: substring-after(//span[@class='autor'], 'Von ')
4author: //span[@class='autor']
5
6single_page_link://a[contains(@href, '/drucken/')]
7convert_double_br_tags:yes
8
9dissolve://div[@class='vorspann']
10
11strip://h1
12strip_id_or_class: klassifizierung
13strip_id_or_class: source
14strip_id_or_class: autor
15test_url: http://sz-magazin.sueddeutsche.de/texte/anzeigen/37567 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/sz.de.txt b/inc/3rdparty/site_config/standard/sz.de.txt
deleted file mode 100755
index f67637d2..00000000
--- a/inc/3rdparty/site_config/standard/sz.de.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1# 2012-12-04: complete rewrite after Süddeutsche.de relaunch - carlo@...
2
3single_page_link: //a[ contains( @href, "/2.220/" ) ]
4
5body: //article[@id="sitecontent"]/section[@class="body"]
6author: //address[@class="author"]
7date: //div[@class="header"]//h1//span[@class="updated"]
8wrap_in(small): //div[@class="footer"]
9wrap_in(i): //figcaption/h3
10dissolve: //figcaption//h3
11dissolve: //figure/div[@class="body"]
12dissolve: //figure/a
13
14strip: //figure[ not( contains(@class, "zoomimage" ) ) ]
15strip: //div[@data-onlineonly="true"]
16strip: //address[@class="author"]
17
18test_url: http://sz.de/1.1556693 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tabletmag.com.txt b/inc/3rdparty/site_config/standard/tabletmag.com.txt
deleted file mode 100755
index 58b1f5bb..00000000
--- a/inc/3rdparty/site_config/standard/tabletmag.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[contains(@class, 'story-text')]
2
3strip_id_or_class: related
4
5test_url: http://www.tabletmag.com/jewish-news-and-politics/181181/mossberg-parallel-states?all=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tagesschau.de.txt b/inc/3rdparty/site_config/standard/tagesschau.de.txt
deleted file mode 100755
index be76cd05..00000000
--- a/inc/3rdparty/site_config/standard/tagesschau.de.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1title://h1[1]
2
3author: substring-after(//em, 'Von ')
4author:string('tagesschau.de')
5
6date:substring-after(//div[@class='standDatum'], 'Stand: ')
7
8body://div[contains(@class, 'article')] | //div[contains(@class, 'centerCol')]
9
10strip://h1[1]
11strip: //div[contains(@class, 'directLinks')]
12strip: //div[contains(@class, 'zitatBox')]
13strip: //div[contains(@class, 'teaserBox metaBlock')]
14strip: //*[contains(@class, 'inv')]
15strip: //span[@class='imgSubline']
16strip: //*[contains(@class, 'topline')][1]
17strip: //div[@id='rightCol'][1]
18strip: //div[@id="footer"][1]
19strip: //div[@class="fPlayer"]
20strip: //div[@id='seitenanfang']
21strip: //div[@class='standDatum']
22strip: //em
23test_url: http://www.tagesschau.de/ausland/wahlkampffrankreich102.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tagesspiegel.de.txt b/inc/3rdparty/site_config/standard/tagesspiegel.de.txt
deleted file mode 100755
index 57e7d3df..00000000
--- a/inc/3rdparty/site_config/standard/tagesspiegel.de.txt
+++ /dev/null
@@ -1,60 +0,0 @@
1# Author: zinnober
2# Should work with "normal" articles as well as with image galleries
3
4prune: no
5
6# Title
7title: //h1/span[@class='hcf-headline']
8
9# Set author
10author: //a[@rel='author']
11
12# Set date
13date: //span[@class='date hcf-atlas']
14
15# Fetch full multipage articles
16next_page_link: //a[contains(@class, 'hcf-forward')]
17
18# Content is here
19body: //article
20body: //div[contains(@class, 'hcf-screen')]
21
22# Remove tracking and ads
23strip_id_or_class: hcf-ad
24strip_id_or_class: hcf-autoload-ad
25strip_id_or_class: hcf-content-ad
26
27# Tidy up before article
28strip: //article/h1
29strip_id_or_class: hcf-atlas
30strip_id_or_class: hcf-author
31strip_id_or_class: date hcf-atlas
32strip_id_or_class: date hcf-atlas
33
34# General cleanup
35strip: //div[contains(@class, 'hcf-screen')]//h1
36strip: //div[@class='hcf-subpage-titles']//ul
37strip_id_or_class: hcf-doctype-media
38strip_id_or_class: hcf-inline-gallery
39strip_id_or_class: hcf-doctype-video
40strip_id_or_class: hcf-links
41strip_id_or_class: hcf-mini-navi
42strip_id_or_class: hcf-media-control
43strip_id_or_class: hcf-hidden
44replace_string(<span class="hcf-update">Update</span>): <strong>Update: </strong>
45
46# Fix pictures and captions
47replace_string(<a class="hcf-doctype-gallery): <p class="hcf-doctype-gallery
48replace_string(<a class="hcf-doctype-enlarge): <p class="hcf-doctype-enlarge
49replace_string(<figcaption class="hcf-caption">): <br><small><em>
50replace_string(</figcaption>): </em></small>
51
52# Fix image galleries
53replace_string(<a class=" ajaxify): <p class="ajaxify
54replace_string(<div class="hcf-caption"><div><p>): <small><em>
55
56# Try it yourself
57test_url: http://www.tagesspiegel.de/berlin/bezirke/wedding/wedding-jetzt/auf-der-suche-nach-einem-stadtteil-wilder-weiter-wedding/8757156.html
58test_url: http://www.tagesspiegel.de/berlin/olympia-in-berlin-der-flughafen-tegel-soll-das-olympische-dorf-werden/10645036.html
59test_url: http://www.tagesspiegel.de/mediacenter/fotostrecken/berlin/bildergalerie-kreuzberger-der-woche/9305534.html
60
diff --git a/inc/3rdparty/site_config/standard/tampabay.com.txt b/inc/3rdparty/site_config/standard/tampabay.com.txt
deleted file mode 100755
index 47a6ffab..00000000
--- a/inc/3rdparty/site_config/standard/tampabay.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //span[@class="entry-title"]
2author: //*[contains(@class, 'item')]/p/a/text()
3date: substring-after(//*[contains(@class, 'item')]/p/text()[3], 'Posted:')
4body: //div[@class="entry-content"]
5test_url: http://www.tampabay.com/news/salvador-dali-leaders-want-st-petersburg-city-council-to-put-brakes-on/1236349 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/taptaptap.com.txt b/inc/3rdparty/site_config/standard/taptaptap.com.txt
deleted file mode 100755
index e1e79428..00000000
--- a/inc/3rdparty/site_config/standard/taptaptap.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h3[@class="storytitle"]
2body: //div[@class="post"]
3strip: //div[@class="blurbBox"]
4test_url: http://taptaptap.com/blog/apples-precedents-vs-apples-guidelines/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tasteofhome.com.txt b/inc/3rdparty/site_config/standard/tasteofhome.com.txt
deleted file mode 100755
index f3234f34..00000000
--- a/inc/3rdparty/site_config/standard/tasteofhome.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //div[@id='ctl00_MainContent_ctl00_Div1']//h2
2body: //div[@id='ctl00_MainContent_ctl00_Div1']
3
4single_page_link: //div[contains(@class, 'recipeHeader')]//a[contains(@href, '/print')]
5
6strip_image_src: tohPrintL.png
7
8prune: no
9
10test_url: http://www.tasteofhome.com/recipes/Grinch-Punch
11test_url: http://www.tasteofhome.com/recipes/lactose-free-chocolate-chip-cookies \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/taz.de.txt b/inc/3rdparty/site_config/standard/taz.de.txt
deleted file mode 100755
index cf853662..00000000
--- a/inc/3rdparty/site_config/standard/taz.de.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1date: //div[@class='secthead']
2body: //div[@class='sectbody']
3title: concat(//div[@class='sectbody']/h4,': ',//div[@class='sectbody']/h1)
4author: //span[@class='author']
5strip: //p[@class='caption']
6strip_id_or_class: rack
7
8test_url: http://www.taz.de/Protestbewegung-Occupy/!80188/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tbray.org.txt b/inc/3rdparty/site_config/standard/tbray.org.txt
deleted file mode 100755
index 558dc9c8..00000000
--- a/inc/3rdparty/site_config/standard/tbray.org.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1body: //div[@id='centercontent']
2strip: //div[@id='rightcontent']
3date: substring-before( //div[@id='cats'], '·')
4title: //h1
5test_url: http://www.tbray.org/ongoing/When/201x/2012/03/04/Mobile-Money \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tcmanila.tk.txt b/inc/3rdparty/site_config/standard/tcmanila.tk.txt
deleted file mode 100755
index f6032ec3..00000000
--- a/inc/3rdparty/site_config/standard/tcmanila.tk.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h2
2body: //div[@class="post_content"]
3author: //span[@class="fn"]
4date: //time[@class="updated"]
5strip_comments: //yes
6footnotes: //yes
7test_url: http://tcmanila.tk/post/29189064358/my-2012-roadmap-is-almost-complete-look-at-the \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tcng.org.txt b/inc/3rdparty/site_config/standard/tcng.org.txt
deleted file mode 100755
index 4873b50d..00000000
--- a/inc/3rdparty/site_config/standard/tcng.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //div[@id='main-content']/h1
2body: //div[@id='main-content']
3strip: //div[@id='main-content']/h1
4test_url: http://www.tcng.org/index.php/blog/view/teaching-basic-health-cutting-down-costs \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tech.fortune.cnn.com.txt b/inc/3rdparty/site_config/standard/tech.fortune.cnn.com.txt
deleted file mode 100755
index da198622..00000000
--- a/inc/3rdparty/site_config/standard/tech.fortune.cnn.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h1[@class='storyheadline']
2body: //div[@class='storytext']
3strip: //strong
4test_url: http://tech.fortune.cnn.com/2011/03/17/why-startups-dont-go-public-anymore/?section=money_topstories&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fmoney_topstories+%28Top+Stories%29 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tech.gilt.com.txt b/inc/3rdparty/site_config/standard/tech.gilt.com.txt
deleted file mode 100755
index ab564606..00000000
--- a/inc/3rdparty/site_config/standard/tech.gilt.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class="title"]/h1
2title: //div[@class="caption"]/h1
3author: substring-after(//div[@class="metadata"]/div[@class="date"]/a[2], 'by ')
4date: //div[@class="metadata"]/div[@class="date"]/a
5test_url: http://tech.gilt.com/post/46359463184/26-3-13-todays-noon-outage-and-what-were-doing-to \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tech.sina.com.cn.txt b/inc/3rdparty/site_config/standard/tech.sina.com.cn.txt
deleted file mode 100755
index 75126f9c..00000000
--- a/inc/3rdparty/site_config/standard/tech.sina.com.cn.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title://h1[contains(@id,'artibodyTitle')]
2
3date://span[contains(@id,'pub_date')]
4
5body://div[contains(@id,'artibody')]
6
7strip://div[contains(@class,'otherContent')]
8
9next_page_link://p[@class='page']/a[contains(.,'下一页')]
10
11test_url: http://tech.sina.com.cn/mobile/n/2012-03-22/07476863046.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/techcrunch.com.txt b/inc/3rdparty/site_config/standard/techcrunch.com.txt
deleted file mode 100755
index 1509c46e..00000000
--- a/inc/3rdparty/site_config/standard/techcrunch.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1body: //div[contains(@class, 'media-container') or contains(@class, 'body-copy')]
2
3author: //a[@class="name"]
4
5date: //div[@class="post-time"]
6
7title: //h1[@class="headline"]
8strip_id_or_class: module-crunchbase
9
10# The following is for the mobile site
11body: //div[@id="singlentry"]
12author: substring-after(//span[@class="single-post-meta-top"],'rsaquo; ')
13date: substring-before(//div[@class="single-post-meta-top"],' @')
14title: //a[@class="sh2"]
15
16prune: no
17
18test_url: http://techcrunch.com/2011/10/18/apples-insanely-great-q1-2012/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/techdirt.com.txt b/inc/3rdparty/site_config/standard/techdirt.com.txt
deleted file mode 100755
index 7db2f95b..00000000
--- a/inc/3rdparty/site_config/standard/techdirt.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@class='story']
2title: //div[@class='story']/h1
3strip: //div[@class='story']/h1
4
5author: //div[@class='details']/p[contains(., 'by ')]/a
6date: //p[@class='storydate']
7
8strip: //p[a[contains(., 'Leave a Comment')]]
9strip_id_or_class: share
10strip_id_or_class: maincolumn_head
11strip_id_or_class: maincolmod
12test_url: http://www.techdirt.com/articles/20120112/17455117394/sega-gets-it-right-about-sopa-its-time-hard-reset-copyright-law-congress.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/techhive.com.txt b/inc/3rdparty/site_config/standard/techhive.com.txt
deleted file mode 100755
index 29720b0b..00000000
--- a/inc/3rdparty/site_config/standard/techhive.com.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1title: //div[@class='articleHead']//h1
2author: //div[@class="author-name"]/a[1]
3body: //div[@class="main"]
4
5# remove 'From the Lab' and 'Recent posts' text
6strip: //div[@class='blogLabel']
7
8# remove byline and meta info
9strip: //div[@class="article-meta"]
10strip: //div[@class="author-info"]
11
12#strip tags and categories
13strip: //div[@class="department"]
14
15#strip product cap links
16strip: //div[@class="cap-main"]
17strip: //div[@id="compare-lede"]
18test_url: http://www.techhive.com/article/2010549/up-close-with-blackberry-10.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/techmeme.com.txt b/inc/3rdparty/site_config/standard/techmeme.com.txt
deleted file mode 100755
index 26eb37b0..00000000
--- a/inc/3rdparty/site_config/standard/techmeme.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1single_page_link_in_feed: //b/a
2
3test_url: http://www.techmeme.com/feed.xml
diff --git a/inc/3rdparty/site_config/standard/technicallyjordan.tumblr.com.txt b/inc/3rdparty/site_config/standard/technicallyjordan.tumblr.com.txt
deleted file mode 100755
index d871b603..00000000
--- a/inc/3rdparty/site_config/standard/technicallyjordan.tumblr.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h2
2author: //meta[@name="author"]/@content
3date: //h3
4body: //div[@class="postBody"]
5strip: //h1
6strip: //h2
7strip: //h3
8test_url: http://technicallyjordan.tumblr.com/post/22914659822/facebook-to-launch-app-store-knock-off \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/technologizer.com.txt b/inc/3rdparty/site_config/standard/technologizer.com.txt
deleted file mode 100755
index 179bf5a6..00000000
--- a/inc/3rdparty/site_config/standard/technologizer.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1next_page_link: //a[contains(., 'NEXT PAGE')]
2# following::node() selects text nodes too whereas following::* selects only elements.
3strip: //span[@class='pageo']/following::node()
4strip: //span[@class='pageo']
5test_url: http://technologizer.com/2010/03/08/the-secret-origin-of-windows/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/technologyreview.com.txt b/inc/3rdparty/site_config/standard/technologyreview.com.txt
deleted file mode 100755
index d405eb18..00000000
--- a/inc/3rdparty/site_config/standard/technologyreview.com.txt
+++ /dev/null
@@ -1,16 +0,0 @@
1title: //header[@class='article-meta']/h1
2title: substring-before(//title, '|')
3
4body: //section[contains(@class, 'body')]
5
6# Author & Date for News and Featured Stories
7author: //ul[@class='byline']/li/a
8author: substring-before(substring-after(//ul[@class='byline']/li, 'By '), ' on')
9date: substring-after(//ul[@class='byline']/li, 'on ')
10
11# Author & Date for "Views"
12author: //div[@class='view-byline']/div[@class='meta']/h2[1]
13date: //div[@class='view-byline']/div[@class='meta']/h2[2]
14
15next_page_link: //section[@class='pagination']/a[contains(@class, 'continue')]
16test_url: http://www.technologyreview.com/news/427567/facebooks-telescope-on-human-behavior/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/techpinions.com.txt b/inc/3rdparty/site_config/standard/techpinions.com.txt
deleted file mode 100755
index 8e1aa96c..00000000
--- a/inc/3rdparty/site_config/standard/techpinions.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[@class="post"]
2
3strip: //div[@class="post-meta"]
4strip: //div[@id="socialicons"]
5strip: //div[@id="authorbox"]
6
7test_url: http://techpinions.com/why-google-and-microsoft-hate-siri/3572 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/techradar.com.txt b/inc/3rdparty/site_config/standard/techradar.com.txt
deleted file mode 100755
index 0a0ca619..00000000
--- a/inc/3rdparty/site_config/standard/techradar.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1# Title without news/reviews etc. appended
2title: //div[@id='subColumn1Pad']/div[1][@class='article']/div[1][@class='articleHead']/h1
3
4# Remove home link
5strip: //div[@id='page_logo']/a
6
7# Remove utilities
8strip: //*[(@id = "utilities")]
9
10# Remove comments link
11strip: //div[@id='subColumn1Pad']/div[1][@class='article']/div[1][@class='articleHead']/p[@class='tiny']
12test_url: http://www.techradar.com/news/television/sky-to-rebrand-living-as-sky-living-903105 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/telegraaf.nl.txt b/inc/3rdparty/site_config/standard/telegraaf.nl.txt
deleted file mode 100755
index 91b5baf9..00000000
--- a/inc/3rdparty/site_config/standard/telegraaf.nl.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id='artikelKolom']
2strip: //div[@class='broodMediaBox']/div[@class='docbox' or @class='artBannerWrapper']
3strip: //div[@id='artikeltoolbar']
4strip: //div[@class='reactiebalk artspacer' or @class='bannercenter clearfix artspacer']
5strip: //div[@id='artikelKolomRechts' or @id='TMGTweetWidget']
6tidy: no
7prune: no
8
9test_url: http://www.telegraaf.nl/binnenland/10275097/__Identiteit_man_in_sloot_onbekend__.html?cid=rss \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/telegraph.co.uk.txt b/inc/3rdparty/site_config/standard/telegraph.co.uk.txt
deleted file mode 100755
index 8dcdb42b..00000000
--- a/inc/3rdparty/site_config/standard/telegraph.co.uk.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[@class='byline' or @id='storyEmbSlide' or @id='mainBodyArea']
2strip: //p[@class='comments']
3strip: //div[@id='storyEmbSlide']//div[contains(@class, "hide")]
4strip: //div[@id='tmg-related-links' or @id='outbrain-related-links' or @id='onespot-related-links']
5strip: //p[@class='bbpTweet']/span[@class='timestamp']
6strip: //p[@class='bbpTweet']/span[@class='metadata']//img
7tidy: no
8prune: no
9
10test_url: http://www.telegraph.co.uk/news/worldnews/europe/ireland/8663451/Is-Ireland-divorcing-from-the-Catholic-Church.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thanhnien.com.vn.txt b/inc/3rdparty/site_config/standard/thanhnien.com.vn.txt
deleted file mode 100755
index 596ecc90..00000000
--- a/inc/3rdparty/site_config/standard/thanhnien.com.vn.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body://div[@id="print-news"]
2strip://a
3strip://span[@class="date-line"]
4test_url: http://www.thanhnien.com.vn/pages/20121006/hon-90-trieu-usd-nang-cap-do-thi-can-tho.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/the-magazine.org.txt b/inc/3rdparty/site_config/standard/the-magazine.org.txt
deleted file mode 100755
index 08864657..00000000
--- a/inc/3rdparty/site_config/standard/the-magazine.org.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1tidy: no
2
3test_url: http://the-magazine.org/1/alone-together-again \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theage.com.au.txt b/inc/3rdparty/site_config/standard/theage.com.au.txt
deleted file mode 100755
index ea27c314..00000000
--- a/inc/3rdparty/site_config/standard/theage.com.au.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: //h3[@class='authorName']
2date: //time
3body: //div[@class='articleBody']
4strip_id_or_class: adspot
5test_url: http://www.theage.com.au/victoria/top-cops-warns-outlaw-bikies-we-have-a-gang-too-20130331-2h1l8.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theamericanscholar.org.txt b/inc/3rdparty/site_config/standard/theamericanscholar.org.txt
deleted file mode 100755
index 38b96672..00000000
--- a/inc/3rdparty/site_config/standard/theamericanscholar.org.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1# Article Metadata
2title: //meta[@property="og:title"]/@content
3author: substring-after(//h3, 'By ')
4date: //h4/a[2]
5
6# Content Pruning
7strip: //h4
8strip: //a[@id="print_button"]
9strip: //p[@class="excerpt"]
10strip: //h3
11strip: //div[@class="caption"]
12strip: //center/a/img
13test_url: http://theamericanscholar.org/too-big-to-fail-and-too-risky-to-exist/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theappleblog.com.txt b/inc/3rdparty/site_config/standard/theappleblog.com.txt
deleted file mode 100755
index caa5ae0c..00000000
--- a/inc/3rdparty/site_config/standard/theappleblog.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1# Remove home link
2strip: //div[@id='blog-title']/a
3test_url: http://theappleblog.com/2010/10/21/the-new-macbook-air-is-underwhelming/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theatlantic.com.txt b/inc/3rdparty/site_config/standard/theatlantic.com.txt
deleted file mode 100755
index 3fc5611b..00000000
--- a/inc/3rdparty/site_config/standard/theatlantic.com.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1title: //div[contains(@class, 'articleHead')]//h1
2
3body: //div[@class='articleText']
4body: //div[@class='articleContent']
5body: //div[@id='article']
6date: //*[contains(@class, 'date')]
7author: //div[@id='profile']//*[@class='authors']//a[1]
8author: //*[@class='author']/span
9prune: no
10
11strip: //div[@class='moreOnBoxWithImages']
12strip: //p[contains(., 'This article available online at:')]
13strip: //p[contains(., 'This article available online at:')]/following::*
14strip: //div[@class='earthbox']
15
16single_page_link: //article//a[contains(@class, 'print')]
17
18native_ad_clue: //meta[@property="og:url" and contains(@content, '/sponsored/')]
19
20test_url: http://www.theatlantic.com/technology/archive/2011/04/want-to-see-how-crazy-a-bot-run-market-can-be/237773/
21test_url: http://www.theatlantic.com/magazine/archive/2007/11/the-autumn-of-the-multitaskers/6342/
22test_url: http://www.theatlantic.com/entertainment/archive/2012/04/30-rock-live-a-funny-reminder-of-why-sitcoms-arent-shot-live-anymore/256447/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theatlanticcities.com.txt b/inc/3rdparty/site_config/standard/theatlanticcities.com.txt
deleted file mode 100755
index 880f207d..00000000
--- a/inc/3rdparty/site_config/standard/theatlanticcities.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1# To administrator:
2# Please replace the hostname with "*.theatlanticcities.com"
3
4# This filter is tested on:
5# http://m.theatlanticcities.com/arts-and-lifestyle/2012/04/invisible-borders-define-american-culture/1839/
6# http://www.theatlanticcities.com/housing/2012/11/chinas-holdouts/3981/
7# http://www.theatlanticcities.com/arts-and-lifestyle/2012/12/christmas-time-here/4133/
8
9title://h1
10author: //ul[@class='meta']/li/a
11date: //ul[@class='meta']/li/following-sibling::li
12body://article[@class='post']
13
14strip://h1
15strip://ul[@class='meta']
16strip://div[@class='newsletter-slug']
17test_url: http://www.theatlanticcities.com/arts-and-lifestyle/2012/12/christmas-time-here/4133/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thebostonchannel.com.txt b/inc/3rdparty/site_config/standard/thebostonchannel.com.txt
deleted file mode 100755
index b74442de..00000000
--- a/inc/3rdparty/site_config/standard/thebostonchannel.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //meta[@name='og:title']/@content
2date: //meta[@name='created']/@content
3body: //div[@class="StoryBody" or @class="storyTeaser"]
4
5replace_string(<p></p>): <br /><br />
6
7test_url: http://www.thebostonchannel.com/slideshow/news/28210648/detail.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thebrowser.com.txt b/inc/3rdparty/site_config/standard/thebrowser.com.txt
deleted file mode 100755
index 807e7dad..00000000
--- a/inc/3rdparty/site_config/standard/thebrowser.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h2[contains(@class, 'page-title')]
2body: //div[@id='content']/div[contains(@id, 'node-')]/div[@class='content']
3
4prune: no
5
6strip: //div[contains(@class, 'node-book')]//a[@class='button']
7
8single_page_link: //a[@class='tool-print']
9
10test_url: http://thebrowser.com/interviews/yotam-ottolenghi-on-his-favourite-cookery-books \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thecarton.net.txt b/inc/3rdparty/site_config/standard/thecarton.net.txt
deleted file mode 100755
index 13fa35a0..00000000
--- a/inc/3rdparty/site_config/standard/thecarton.net.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: substring-before(//title, ' &ndash; ')
2author:string('Shawn')
3date: //*/time/@pubdate
4
5
6strip: //header
7strip: //div[@id='prev_next']
8strip: //div[@id='masthead']
9
10test_url: http://thecarton.net/2012/12/20/imdb \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thedaily.com.txt b/inc/3rdparty/site_config/standard/thedaily.com.txt
deleted file mode 100755
index e255e6a8..00000000
--- a/inc/3rdparty/site_config/standard/thedaily.com.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1#keep all body text
2prune: no
3
4#title, body, metadata
5title: //div[@class='story_header']/h1
6body: //div[@id='content']
7author: substring-after(//span[@class='byline'], "by ")
8author: substring-after(//span[@class='byline'], "By ")
9author: //span[@class='byline']
10date: //span[@class='date']
11
12#formatting
13convert_double_br_tags: yes
14dissolve: //div[@class='slides_full']/ul/li
15
16# cleanup
17strip: //a[@id='story_note']
18strip: //br
19strip: //div[@class='intro']
20strip: //div[@class='share-block']
21strip: //div[@class='sidebar-social']
22strip: //div[@class='top-stories']
23strip: //div[@class='prevnext']
24test_url: http://www.thedaily.com/page/2012/01/09/010912-news-college-costs-1-5/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thedailybeast.com.txt b/inc/3rdparty/site_config/standard/thedailybeast.com.txt
deleted file mode 100755
index f5e938ae..00000000
--- a/inc/3rdparty/site_config/standard/thedailybeast.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1
2body: //article/div[contains(@class, 'article-body')]
3#strip: //header/hgroup/h1
4strip: //footer[@class='storyFooter']
5single_page_link: //li[@class='print']/a
6prune: no
7test_url: http://www.thedailybeast.com/articles/2010/04/06/how-mastercard-predicts-divorce.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thedailymash.co.uk.txt b/inc/3rdparty/site_config/standard/thedailymash.co.uk.txt
deleted file mode 100755
index a83a6cf6..00000000
--- a/inc/3rdparty/site_config/standard/thedailymash.co.uk.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1# Remove duplicated title
2strip: //div[@id='content']/div[1][@class='full_intro']/h2
3
4# Remove links, ads etc.
5strip: //*[(@class= "aside")]
6
7# Remove the date and add it to the date published field in Instapaper
8strip: //div[@class="date"]
9date: //div[@class="date"]
10
11# There is no byline on The Daily Mash.
12
13convert_double_br_tags: yes
14test_url: http://www.thedailymash.co.uk/index.php?option=com_content&task=view&id=4994&Itemid=81&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+thedailymash+%28The+Daily+Mash.+It%27s+news+to+us.%29 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thedisneyblog.com.txt b/inc/3rdparty/site_config/standard/thedisneyblog.com.txt
deleted file mode 100755
index 57b3254a..00000000
--- a/inc/3rdparty/site_config/standard/thedisneyblog.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[contains(@class, 'entry-title')]
2author: //span[contains(@class, 'author vcard')]
3date: //span[@class = 'entry-date']
4body: //div[@class='entry-content']
5strip_id_or_class: bottomcontainerBox
6strip_id_or_class: lightsocial_container
7test_url: http://thedisneyblog.com/2012/11/17/videopolis-one-woman-disney-musical-beauty-and-the-beast/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theeuropean-magazine.com.txt b/inc/3rdparty/site_config/standard/theeuropean-magazine.com.txt
deleted file mode 100755
index a19bae15..00000000
--- a/inc/3rdparty/site_config/standard/theeuropean-magazine.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1# Tested on:
2# http://theeuropean-magazine.com/352-dyson-george/353-evolution-and-innovation
3# http://theeuropean-magazine.com/522-casertano-stefano/919-morsi-and-the-future-of-egypt
4
5title://h2[@class='article-title']
6author:substring-before(substring-after(//p[@class='article-meta'], 'by'), '&mdash;')
7date:substring-after(//p[@class='article-meta'], '&mdash;')
8body://div[@class='article']
9
10wrap_in(strong)://p[@class='article-teaser']
11move_into(//div[@class='article-head'])://li/img
12
13strip://h2[@class='article-title']
14strip://p[@class='article-meta']
15strip://div[@class='copyright']
16strip://div[@class='opinions-of-readers']
17test_url: http://theeuropean-magazine.com/522-casertano-stefano/919-morsi-and-the-future-of-egypt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thefilmexperience.net.txt b/inc/3rdparty/site_config/standard/thefilmexperience.net.txt
deleted file mode 100755
index e6b5115a..00000000
--- a/inc/3rdparty/site_config/standard/thefilmexperience.net.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='body']
2test_url: http://thefilmexperience.net/blog/2011/12/30/distant-relatives-2001-a-space-odyssey-and-the-tree-of-life.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thegamedesignforum.com.txt b/inc/3rdparty/site_config/standard/thegamedesignforum.com.txt
deleted file mode 100755
index 849ede77..00000000
--- a/inc/3rdparty/site_config/standard/thegamedesignforum.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1## ERROR: Removes all images. Please fix, have no idea why (bad HTML?)
2
3title: //h1[@class='featuretitle']
4body: //div[@id='nobordercontentarea']
5
6# remove Twitter badge
7strip: //img[@alt='Follow tgdfweb on Twitter']
8
9# fix for headers not showing for some reason
10wrap_in(h2): //h2[@class='sectionheader']
11dissolve: //h2[@class='sectionheader']
12
13tidy: yes
14test_url: http://thegamedesignforum.com/features/acceleration_flow_1.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theglobalmail.org.txt b/inc/3rdparty/site_config/standard/theglobalmail.org.txt
deleted file mode 100755
index da1c84f9..00000000
--- a/inc/3rdparty/site_config/standard/theglobalmail.org.txt
+++ /dev/null
@@ -1,41 +0,0 @@
1title: //h1[@id="headline"]
2author: //div[contains(@class, "editorial-byline-author")]/a
3date: substring-after(//div[contains(@class, "editorial-byline-meta")], " | ")
4
5# The article body contains a mix or article and non-article elements, so lot of manual tweaks are needed
6body: //div[@id="template"]
7strip_id_or_class: editorial-byline-pic
8strip_id_or_class: editorial-byline
9strip_id_or_class: headline
10
11# Include the leadin paragraph in the body text, but remove quotes because they're out of context
12dissolve: //div[contains(@id, "leadin")]
13strip_id_or_class: pullquote
14
15# Image captions removed because they're confusing in body text
16strip_id_or_class: image-caption-content
17
18# Remove header and footer
19strip_id_or_class: header
20strip_id_or_class: footer
21
22# Remove the hidden logo that seems to be used to cause Facebook to show the logo instead of a random article image
23strip: /html/body/span[contains(@style, "display: none")]
24
25# Remove search box
26strip_id_or_class: searchContainer
27strip: //div[contains(@class, "searchInstruction")]
28strip: //div[contains(@class, "searchResults")]/h4
29
30# Remove the 'Letters to the Editor' section
31strip_id_or_class: letter-text
32strip_id_or_class: letter-from
33strip_id_or_class: letter-date
34
35# Remove Like/Tweet links
36strip_id_or_class: social-tab
37
38# Remove 'divider' which causes an inexplicable slash to appear in the article body
39strip_id_or_class: divider
40
41test_url: http://www.theglobalmail.org/feature/tiramisu-time-in-pyongyang/88/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theglobeandmail.com.txt b/inc/3rdparty/site_config/standard/theglobeandmail.com.txt
deleted file mode 100755
index 2473cad2..00000000
--- a/inc/3rdparty/site_config/standard/theglobeandmail.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1body: //div[contains(@class, 'entry-content')]//div[contains(@class, 'column-2')]
2single_page_link: //div[contains(@class, 'pagination')]//a[contains(@title, 'ingle page')]
3strip_id_or_class: entry-related
4strip_id_or_class: entry-sidebar
5strip_id_or_class: entry-pagination
6tidy: no
7prune: no
8
9test_url: http://www.theglobeandmail.com/report-on-business/rob-magazine/how-a-novice-miner-survived-a-summer-in-the-klondike/article2345350/
10test_url: http://www.theglobeandmail.com/report-on-business/industry-news/energy-and-resources/cliffs-natural-resources-looking-to-exit-ontarios-ring-of-fire/article20651617/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thegreatdiscontent.com.txt b/inc/3rdparty/site_config/standard/thegreatdiscontent.com.txt
deleted file mode 100755
index 12442b40..00000000
--- a/inc/3rdparty/site_config/standard/thegreatdiscontent.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@id='headline']
2author: substring-after(//section[@class="credits"]/ul/li[1],"Interview by ")
3date: //time[@pubdate]
4body: //article[@class='interview']
5strip: //article[@class='interview']/footer
6test_url: http://thegreatdiscontent.com/jeffrey-zeldman \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theguardian.com.txt b/inc/3rdparty/site_config/standard/theguardian.com.txt
deleted file mode 100755
index 88e2ecf4..00000000
--- a/inc/3rdparty/site_config/standard/theguardian.com.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1title: //div[@id='main-article-info']//h1
2body: //div[@id='article-wrapper']
3date: //li[@class='publication']//time[@pubdate] | //li[@class='publication']//data[@pubdate]
4strip: //div[contains(@class, 'email-subscription')]
5strip: //div[contains(@class, 'kindleWidget')]
6#strip: //a[not(text())]
7strip_id_or_class: pocket-btn
8author: //li[@class='byline']
9native_ad_clue: //meta[@property="article:tag" and contains(@content, "Partner zone")]
10native_ad_clue: //meta[@property="video:tag" and contains(@content, "Partner zone")]
11prune: no
12tidy: no
13
14test_url: http://www.theguardian.com/world/2013/oct/04/nsa-gchq-attack-tor-network-encryption
15test_contains: The National Security Agency has made repeated attempts to develop
16test_contains: The agency did not directly address those questions, instead providing a statement.
17
18test_url: http://www.theguardian.com/world/2013/oct/03/edward-snowden-files-john-lanchester
19test_contains: In August, the editor of the Guardian rang me up and asked if I would spend a week in New York
20test_contains: As the second most senior judge in the country, Lord Hoffmann, said in 2004 about a previous version of our anti-terrorism laws
21
22test_url: http://www.theguardian.com/commentisfree/2014/jun/15/britishness-search-identity-my-part-in-camerons-odyssey
23# Native ad
24test_url: http://www.theguardian.com/sustainable-business/2014/jul/18/ben-jerry-turn-ice-cream-into-energy
diff --git a/inc/3rdparty/site_config/standard/theindychannel.com.txt b/inc/3rdparty/site_config/standard/theindychannel.com.txt
deleted file mode 100755
index 2cd865bb..00000000
--- a/inc/3rdparty/site_config/standard/theindychannel.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //h1[@class="Headline"]
2date: substring-after(//div[@class="posted"], 'EDT ')
3body: //div[@class="storyBody"]
4
5strip: //td[@class="AssocContentTD"]
6strip: //div[@id="pageTitle"]
7strip: //div[@class="posted"]
8strip: //div[@class="updated"]
9strip: //div[@class="js-kit-disclaimer"]
10strip: //table[@class="row3table"]
11strip: //div[@class="container2"]
12strip: //div[@id="delta"]
13test_url: http://www.theindychannel.com/news/31050840/detail.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/themarker.com.txt b/inc/3rdparty/site_config/standard/themarker.com.txt
deleted file mode 100755
index 141b1a3b..00000000
--- a/inc/3rdparty/site_config/standard/themarker.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[contains(@class, 'mainTitle')]
2author: //ul[@class='author']//a[@rel='author']
3body: //div[@id='article-box']
4prune: no
5tidy: no
6strip_id_or_class: head
7strip_id_or_class: social-nav
8strip_id_or_class: rate
9strip_id_or_class: video
10
11test_url: http://www.themarker.com/markerweek/1.2093167 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/themillions.com.txt b/inc/3rdparty/site_config/standard/themillions.com.txt
deleted file mode 100755
index 4d46daee..00000000
--- a/inc/3rdparty/site_config/standard/themillions.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: /html/body/div/div[2]/div/div/div/h3
2
3body: /html/body/div/div[2]/div/div/div/div[2]
4
5strip: /html/body/div/div[2]/div/div/div/div[6]/div[3]/div/div/div
6
7tidy: no
8
9# any way to get rid of this word character garbage?
10test_url: http://www.themillions.com/2010/07/at-the-movies-with-david-mitchell-the-thousand-autumns-of-jacob-de-zoet.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/themuseumofinnocence.com.txt b/inc/3rdparty/site_config/standard/themuseumofinnocence.com.txt
deleted file mode 100755
index 80aba441..00000000
--- a/inc/3rdparty/site_config/standard/themuseumofinnocence.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: single-review
2strip_id_or_class: featured-review
3strip_id_or_class: resources
4strip_id_or_class: rate-the-book
5strip_id_or_class: write-review
6
7test_url: http://themuseumofinnocence.com/review.php?id=1179 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thenation.com.txt b/inc/3rdparty/site_config/standard/thenation.com.txt
deleted file mode 100755
index dab17f0b..00000000
--- a/inc/3rdparty/site_config/standard/thenation.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //h2[@property='dc:title']
2#body: //div[@class='print-content']
3body: //div[@id='wysiwyg']
4author: //a[contains(@href, '/authors')]
5author: substring-before(//div[@class='print-created'], '|')
6date: //span[@class='article-date']
7date: substring-after(//div[@class='print-created'], '|')
8prune: no
9
10#single_page_link: //ul[contains(@class, 'article-actions-bar')]//a[contains(@href, '/print/article/')]
11single_page_link: //ul[contains(@class, 'article-actions-bar')]//a[contains(@href, '?page=full')]
12
13test_url: http://www.thenation.com/article/162331/hard-against-time-roy-fisher \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thenetworkgarden.blogs.com.txt b/inc/3rdparty/site_config/standard/thenetworkgarden.blogs.com.txt
deleted file mode 100755
index b7f5f0f0..00000000
--- a/inc/3rdparty/site_config/standard/thenetworkgarden.blogs.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@id="beta-inner"]
2title: //h3[@class="entry-header"]
3
4test_url: http://thenetworkgarden.blogs.com/weblog/2011/09/microsoft-metro-and-the-next-wave-in-computing.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thenextgeneration.org.txt b/inc/3rdparty/site_config/standard/thenextgeneration.org.txt
deleted file mode 100755
index dedd989f..00000000
--- a/inc/3rdparty/site_config/standard/thenextgeneration.org.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1[@class='interior-page-title']
2author: //span[@class='author']/a
3date: //div[@class='byline']/time
4body: //div[@class='rich-text-body']
5
6strip: //div[@class='byline']
7strip: //div[@class='offscreen-menu']
8test_url: http://thenextgeneration.org/blog/post/rebrand-announce/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thenextweb.com.txt b/inc/3rdparty/site_config/standard/thenextweb.com.txt
deleted file mode 100755
index 684fe82d..00000000
--- a/inc/3rdparty/site_config/standard/thenextweb.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body: //div[@class= 'article-body']
2author: //div[@class='featured mb-1']//a[starts-with(@href,'/author')]
3
4strip: //div[@class = 'bargo']
5strip: //div[@class = 'tf']
6strip: //div[@class = 'article']/div[@class = 'blue-box']
7strip_id_or_class: respond
8
9tidy: no
10next_page_link: //div[@class='pages-wrapper']//span/following-sibling::a/@href
11
12test_url: http://thenextweb.com/apple/2011/10/12/tnw-review-a-complete-guide-to-apples-ios-5-with-icloud-an-os-14-years-in-the-making/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theoaklandpress.com.txt b/inc/3rdparty/site_config/standard/theoaklandpress.com.txt
deleted file mode 100755
index c9abda71..00000000
--- a/inc/3rdparty/site_config/standard/theoaklandpress.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='fullstory']
2strip: //div[@id='page_leftbar']
3test_url: http://theoaklandpress.com/articles/2011/04/25/news/doc4db5330e0bce9220005852.txt \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theonion.com.txt b/inc/3rdparty/site_config/standard/theonion.com.txt
deleted file mode 100755
index 90e8d658..00000000
--- a/inc/3rdparty/site_config/standard/theonion.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h2[@class='title']
2date: substring-before(//p[@class='meta'], '|')
3body: //div[@class='story']
4#body: //div[@class='article_body']
5
6strip: //h2[@class='title']
7strip: //p[@class='meta']
8strip: //div[@class='ga_section']
9strip: //div[@id='recent_slider']
10
11test_url: http://www.theonion.com/articles/pathetic-bobcats-owner-again-regaling-players-with,27572/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thepioneerwoman.com.txt b/inc/3rdparty/site_config/standard/thepioneerwoman.com.txt
deleted file mode 100755
index 75583cd3..00000000
--- a/inc/3rdparty/site_config/standard/thepioneerwoman.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1title: //h1[@class='post-title']
2body: //div[@class='post']
3author: //p[@class='posted-by']
4date: //div[@class='sprite post-date']
5
6# The body of the post doesn't have it's own div so we have to strip out the metadata
7strip: //div[@class='author_avatar']
8strip: //div[@class='sprite post-date']
9strip: //h1[@class='post-title']
10strip: //p[@class='posted-by']
11test_url: http://thepioneerwoman.com/cooking/2011/08/pie-fats-a-comparison/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theregister.co.uk.txt b/inc/3rdparty/site_config/standard/theregister.co.uk.txt
deleted file mode 100755
index 5d30230d..00000000
--- a/inc/3rdparty/site_config/standard/theregister.co.uk.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1# Updated 25-Jan-2014
2single_page_link: //a[contains(@href, '/Print/')]
3
4title: //div[@id="article"]/h2
5author: //p[@class="byline"]/a
6date: //p[@class="dateline"]/a[last()]
7
8test_url: http://www.theregister.co.uk/2014/01/24/thirty_years_of_the_apple_macintosh_part_2/
diff --git a/inc/3rdparty/site_config/standard/theroot.com.txt b/inc/3rdparty/site_config/standard/theroot.com.txt
deleted file mode 100755
index 1f56316d..00000000
--- a/inc/3rdparty/site_config/standard/theroot.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='node-content']
2strip_id_or_class: pager
3test_url: http://www.theroot.com/views/why-i-am-male-feminist \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/therumpus.net.txt b/inc/3rdparty/site_config/standard/therumpus.net.txt
deleted file mode 100755
index 84d0e783..00000000
--- a/inc/3rdparty/site_config/standard/therumpus.net.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: /html/body/div/div[2]/div/div/h1
2
3body: /html/body/div/div[2]/div/div/div[2]
4test_url: http://therumpus.net/2010/07/the-rumpus-interview-with-david-means/?full=yes \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thesiasat.com.txt b/inc/3rdparty/site_config/standard/thesiasat.com.txt
deleted file mode 100755
index 68a8bc8e..00000000
--- a/inc/3rdparty/site_config/standard/thesiasat.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1#body: (//div[@class='ftr-yt-vid'])[1]
2body: (//blockquote[contains(@class, 'postcontent')])[1]
3body: (//div[starts-with(@id, 'post_message')])[1]
4
5prune: no
6tidy: no
7
8#replace_string(<iframe title="YouTube video player"): <div class="ftr-yt-vid"><iframe title="YouTube video player"
9#replace_string(</iframe>): </iframe>&nbsp;</div>
10
11test_url: http://www.thesiasat.com/showthread.php?19220-Dunya-News-HASB-E-HAAL-16-06-2012-Part-1-5 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thesimpledollar.com.txt b/inc/3rdparty/site_config/standard/thesimpledollar.com.txt
deleted file mode 100755
index dcdf2572..00000000
--- a/inc/3rdparty/site_config/standard/thesimpledollar.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h3[@class='post-title']/a[@class='post-title-link']
2body: //div[@class='post-content']
3author: //div[@class='post-meta-under-title']/a
4test_url: http://www.thesimpledollar.com/2011/09/13/determining-the-size-of-your-emergency-fund/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thespoiler.co.uk.txt b/inc/3rdparty/site_config/standard/thespoiler.co.uk.txt
deleted file mode 100755
index ca983281..00000000
--- a/inc/3rdparty/site_config/standard/thespoiler.co.uk.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1strip: //*[(@id = "content")]/h2
2strip: //*[(@class = "wp-notable-line")]
3test_url: http://www.thespoiler.co.uk/index.php/2010/10/21/wayne-rooney-tells-man-utd-its-not-me-its-you \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thespoof.com.txt b/inc/3rdparty/site_config/standard/thespoof.com.txt
deleted file mode 100755
index f71cfb6b..00000000
--- a/inc/3rdparty/site_config/standard/thespoof.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h1[contains(@class, 'cTitle')]
2body: //div[contains(@class, 'KonaBody') or @id='articleimageright']
3author: //meta[@name='Author']/@content
4date: //meta[@name='OriginalPublicationDate']/@content
5
6prune: no
7tidy: no
8
9test_url: http://www.thespoof.com/news/spoof.cfm?headline=s8i108389 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thestranger.com.txt b/inc/3rdparty/site_config/standard/thestranger.com.txt
deleted file mode 100755
index 6fcf4fdf..00000000
--- a/inc/3rdparty/site_config/standard/thestranger.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1# savage* filtering is for Savage Love, such as: http://www.thestranger.com/seattle/SavageLove?oid=5135029
2
3#other filtering are plain articles, such as: http://www.thestranger.com/seattle/the-stranger-election-control-board/Content?oid=5142885
4
5title: //div[@id='savageColumn_head']/h1
6title: //h1[@class="headlineLarge"]
7
8strip: //div[@id='savage_right'] | //div[@id='savageColumn_head'] | //div[@id='savageArticleRight'] | //div[@id='articleRight'] | //div[@class='savAppBanner']
9
10body: //div[@id='savageColumn']
11body: //div[@id='story_text']
12test_url: http://www.thestranger.com/seattle/SavageLove?oid=5135029 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thestreet.com.txt b/inc/3rdparty/site_config/standard/thestreet.com.txt
deleted file mode 100755
index 58eabf00..00000000
--- a/inc/3rdparty/site_config/standard/thestreet.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1title: //div[@id='storyHdr']/h1
2title: //div[@id='print']//h2
3body: //div[@class="virtualpage"]
4body: //div[@id='print']//div[@id='bd']
5author: //meta[@name="AUTHOR"]/@content
6author: (//div[@id='print']//div[@id='bd']/h4)[1]
7date: //meta[@name="DATE"]/@content
8date: //div[@id='print']//div[@id='dte']
9
10strip_id_or_class: articleFooter
11strip_id_or_class: sidebar
12strip_id_or_class: ie6PrintSubhead
13strip_id_or_class: subHdr
14
15
16replace_string(<P/>): </p><p>
17
18prune: no
19
20#TODO: redirects back - perhaps needs referer to work
21single_page_link: //div[@id='storyDetail']//a[contains(@href, '/print/')]
22
23test_url: http://www.thestreet.com/story/11386556/1/which-of-these-10-dividend-stocks-is-worth-the-risk.html
24# multi page
25test_url: http://www.thestreet.com/story/11387090/1/7-ubs-stock-picks-for-2012.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thethaovanhoa.vn.txt b/inc/3rdparty/site_config/standard/thethaovanhoa.vn.txt
deleted file mode 100755
index 6b3277eb..00000000
--- a/inc/3rdparty/site_config/standard/thethaovanhoa.vn.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip:/html/body/form/div[2]/div[3]/div/div/div/div/div/div/div/div/div/div[2]/div[3]/div[2]/div/p[2]
2test_url: http://thethaovanhoa.vn/151N20110519085606745T129/levante-quyet-giu-caicedo.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/theverge.com.txt b/inc/3rdparty/site_config/standard/theverge.com.txt
deleted file mode 100755
index 78f8654a..00000000
--- a/inc/3rdparty/site_config/standard/theverge.com.txt
+++ /dev/null
@@ -1,53 +0,0 @@
1author: //p[contains(@class, "byline")]/a[contains(@class, "author")]
2
3date: //span[contains(@class, "publish-date")]/time[@pubdate]/@datetime
4
5body: //div[contains(@class, 'entry-content')]
6# for vergecasts, e.g. http://www.theverge.com/2013/8/22/4648566/the-vergecast-090-august-22th-2013-video
7body: //article
8prune: no
9#tidy: no
10
11strip: //article/header
12strip: //*[@id='sticky-menu']
13strip: //aside
14strip: //nav
15strip: //img[contains(@class, 'vox-lazy-load')]
16# deal with bad parsing
17strip: //div[contains(@class, 'story-image')]//div[contains(., 'function(')]
18strip: //div[contains(@class, 'm-linkset')]
19strip: //div[contains(@class, 'm-entry__sidebar')]
20strip: //ul[contains(@class, 'm-article__sources')]
21strip: //div[contains(@class, 'chorus-emc__content')]
22
23
24strip_id_or_class: gallery
25strip_id_or_class: article-meta
26strip_id_or_class: story-navigation
27strip_id_or_class: slegend
28strip_id_or_class: related-product-meta
29strip_id_or_class: comments
30strip_id_or_class: ui-jump-list
31strip_id_or_class: pullquote
32strip_id_or_class: m-ad
33strip_id_or_class: social-sharing
34strip_id_or_class: m-video-entry__excerpt
35strip_id_or_class: hidden
36
37replace_string(<noscript>): <div>
38replace_string(</noscript>): </div>
39
40find_string: <script
41replace_string: <div style="display:none"
42find_string: </script>
43replace_string: </div>
44
45strip: //q
46
47strip: //a[contains(@class, 'entry-section-title')]
48
49test_url: http://www.theverge.com/2012/2/29/2821763/lytro-review
50test_url: http://www.theverge.com/2011/11/3/2534861/nokia-lumia-800-review
51test_url: http://www.theverge.com/2013/2/24/4026114/barnes-noble-shifting-focus-away-from-nook-hardware
52test_url: http://www.theverge.com/2014/6/19/5824072/top-shelf-living-the-dream
53test_url: http://www.theverge.com/rss/frontpage
diff --git a/inc/3rdparty/site_config/standard/theweek.com.txt b/inc/3rdparty/site_config/standard/theweek.com.txt
deleted file mode 100755
index f98749e2..00000000
--- a/inc/3rdparty/site_config/standard/theweek.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1body: //div[@class="briefingEntry"]
2prune: no
3
4test_url: http://theweek.com/article/index/215763/insider-trading-on-capitol-hill \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thinkprogress.org.txt b/inc/3rdparty/site_config/standard/thinkprogress.org.txt
deleted file mode 100755
index 1eec4e3c..00000000
--- a/inc/3rdparty/site_config/standard/thinkprogress.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: //p[@class="byline"]/a
2body: //div[@class="post"]
3
4test_url: http://thinkprogress.org/special/2011/11/12/367040/harvard-law-professor-criticizes-homeland-security-feel-of-overreaction-to-occupy-harvard/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thisdaylive.com.txt b/inc/3rdparty/site_config/standard/thisdaylive.com.txt
deleted file mode 100755
index 73b3c9ed..00000000
--- a/inc/3rdparty/site_config/standard/thisdaylive.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class='main-content-panel']/div[@class='img'] | //div[@id='page_content_Content9_oModuleContent_2_div_Body']
2test_url: http://www.thisdaylive.com/articles/australia-pm-talks-human-rights-with-chinas-wen/90394/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/thisiscolossal.com.txt b/inc/3rdparty/site_config/standard/thisiscolossal.com.txt
deleted file mode 100755
index ab16ce18..00000000
--- a/inc/3rdparty/site_config/standard/thisiscolossal.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1# Author: zinnober
2
3tidy: no
4prune: no
5
6# Set author
7author: //a[contains(@rel, 'author')]
8
9# Content is here
10body: //article
11
12# Tidy up before article
13strip: //header
14
15# Get rid of doubled images
16strip: //img[contains(@class, '-hidden')]
17
18# Tidy up after article
19strip_id_or_class: social-list
20strip_id_or_class: meta-info
21strip: //footer
22
23# Try it yourself
24test_url: http://www.thisiscolossal.com/2014/09/chicago-in-the-fog-by-michael-salisbury/
25test_url: http://www.thisiscolossal.com/2014/09/bird-portraits-ruffling-with-personality-by-leila-jeffreys/
diff --git a/inc/3rdparty/site_config/standard/thisismynext.com.txt b/inc/3rdparty/site_config/standard/thisismynext.com.txt
deleted file mode 100755
index 70b53995..00000000
--- a/inc/3rdparty/site_config/standard/thisismynext.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1author: //div[@class='meta clearfix']/a
2body: //div[@class='post']
3
4strip: //div[@class='metaCat']
5strip: //div[@class='post']/h1
6strip: //div[@class='post']/div[@class='meta clearfix']
7strip: //div[@class='post']/div[@class='social-bar clearfix']
8test_url: http://thisismynext.com/2011/10/18/galaxy-nexus-android-ice-cream-sandwich-pictures-video-hands-on/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tidbits.com.txt b/inc/3rdparty/site_config/standard/tidbits.com.txt
deleted file mode 100755
index 1950e58e..00000000
--- a/inc/3rdparty/site_config/standard/tidbits.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1author: //span[@class='fn']
2date: substring-before(substring-after(//*[@id='center_ajax_sub']/div/div[3],'|'),'|')
3test_url: http://tidbits.com/article/12651 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/time.com.txt b/inc/3rdparty/site_config/standard/time.com.txt
deleted file mode 100755
index f3f886bc..00000000
--- a/inc/3rdparty/site_config/standard/time.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1[contains(@class, 'article-title')]
2author: //article//span[contains(@class, 'byline')]
3date: //time[@pubdate]/@datetime
4body: //section[contains(@class, 'article-body')]
5prune: no
6tidy: no
7
8strip: //figcaption
9strip: //p[contains(., 'MORE:') and ./a]
10strip: //aside
11
12test_url: http://time.com/14478/emotions-may-not-be-so-universal-after-all/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/timeshighereducation.co.uk.txt b/inc/3rdparty/site_config/standard/timeshighereducation.co.uk.txt
deleted file mode 100755
index af1c23ce..00000000
--- a/inc/3rdparty/site_config/standard/timeshighereducation.co.uk.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1
2body: //div[@class="storytext"]
3strip: //div[@id="thelogin"]
4strip: //*[@class="hide"]
5strip: //div[@id="anchored"]
6test_url: http://www.timeshighereducation.co.uk/story.asp?sectioncode=26&storycode=416124&c=1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tipb.com.txt b/inc/3rdparty/site_config/standard/tipb.com.txt
deleted file mode 100755
index b8474d97..00000000
--- a/inc/3rdparty/site_config/standard/tipb.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id='content']
2
3strip_id_or_class: featured-box
4strip_id_or_class: postmeta
5strip_id_or_class: respond
6
7author: //a[contains(@href, '/author/') and contains(@title, 'Posts by')]
8date: substring-before(//a[contains(@href, '/author/') and contains(@title, 'Posts by')]/.., ' by ')
9test_url: http://www.tipb.com/2011/10/17/iphone-4s-review/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tnr.com.txt b/inc/3rdparty/site_config/standard/tnr.com.txt
deleted file mode 100755
index 199f5d13..00000000
--- a/inc/3rdparty/site_config/standard/tnr.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1title: //div[contains(@class, 'article_detail')]/div[@class='entry_header']/h1
2title: //div[contains(@class, 'article_detail')]//h1
3title: //h1
4
5body: //div[contains(@class, 'article_detail')]
6
7author: //div[@class='article_detail']/div[@class='entry_header']/li/div[@class='author']//h3
8author: div[@class='author']//h3
9strip: //div[contains(@class, 'field-field-book-cover')]
10
11date: translate(//*[@class='post_date' and contains(., ' 20')], '|', '')
12
13prune: no
14
15single_page_link: //a[@class='print-page']
16
17test_url: http://www.tnr.com/blog/jonathan-chait/92991/did-obama-get-rolled \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tomdispatch.com.txt b/inc/3rdparty/site_config/standard/tomdispatch.com.txt
deleted file mode 100755
index 701a2122..00000000
--- a/inc/3rdparty/site_config/standard/tomdispatch.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //div[@id='maincontent']//div[@class='title']
2body: //div[@id='maincontent']//div[@class='byline'] | //div[@id='maincontent']//div[@class='meat']
3
4tidy: no
5
6test_url: http://www.tomdispatch.com/post/175436/tomgram:_noam_chomsky%2C_the_imperial_mentality_and_9_11/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tomshardware.com.txt b/inc/3rdparty/site_config/standard/tomshardware.com.txt
deleted file mode 100755
index 2b437574..00000000
--- a/inc/3rdparty/site_config/standard/tomshardware.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1tidy: no
2title: //title
3author: //a[@itemprop = 'author']
4date: //time[@itemprop = 'datePublished']
5body: //div[@id = 'intelliTXT']
6
7next_page_link: //li[@class="pagin next"]/a
8test_url: http://www.tomshardware.com/reviews/gaming-graphics-card-review,3107.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tomshardware.de.txt b/inc/3rdparty/site_config/standard/tomshardware.de.txt
deleted file mode 100755
index eee57ccf..00000000
--- a/inc/3rdparty/site_config/standard/tomshardware.de.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1body://div[@id="news-content"]/div[@id="intelliTXT"][1]
2
3author://div[@id="header-news-infos"]/a[1]
4
5date: //div[@id="header-news-infos"]/span[1]
6
7title://h1[@id="header-news-title" and @class="hardwareTitle"][1]
8
9strip://div[@id="news-content"]/div[@id="intelliTXT"]/table
10
11footnotes: no
12test_url: http://www.tomshardware.de/DDR4-DDR3-ISSCC-Samsung-Hynix,news-247133.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/toolsandtoys.net.txt b/inc/3rdparty/site_config/standard/toolsandtoys.net.txt
deleted file mode 100755
index bb45d890..00000000
--- a/inc/3rdparty/site_config/standard/toolsandtoys.net.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@class='post']
2
3strip: //div[@class='social']
4strip: //span[@class='next']
5strip: //span[@class='previous']
6test_url: http://toolsandtoys.net/noble-tonic-02/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/towerofthehand.com.txt b/inc/3rdparty/site_config/standard/towerofthehand.com.txt
deleted file mode 100755
index a4d87d12..00000000
--- a/inc/3rdparty/site_config/standard/towerofthehand.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //div[@id='headline']
2body: //div[@class='entry_text']
3author: //div[text() = 'Author:']/following-sibling::div/a
4date: //div[text() = 'Published:']/following-sibling::div
5single_page_link: //a[@href='noscript.html']
6prune: no
7
8test_url: http://towerofthehand.com/blog/2014/08/08-pitch-this-got-spinoff/index.html
9test_url: http://towerofthehand.com/blog/2014/07/31-definitions-and-embodiments/index.html
10test_url: http://towerofthehand.com/blog/2014/07/03-hero-with-thousand-faces/index.html
diff --git a/inc/3rdparty/site_config/standard/tracks.ranea.org.txt b/inc/3rdparty/site_config/standard/tracks.ranea.org.txt
deleted file mode 100755
index 5a386470..00000000
--- a/inc/3rdparty/site_config/standard/tracks.ranea.org.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1# Metadata
2title: substring-after(//title, 'Coyote Tracks - ')
3author: //meta[@name="author"]/@content
4date: //div[@class="post_header"]/a
5
6# Content Pruning
7strip: //div[@class="column left"]
8strip: //div[@class="pages"]
9strip: //a[@class="text_title"]
10strip: //ol[@class="notes"]
11
12dissolve: //div[@class='column right']/ul
13dissolve: //li[@class='post']
14test_url: http://tracks.ranea.org/post/31431060205/the-next-big-uh-slightly-taller-thing \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/trailer.web-view.net.txt b/inc/3rdparty/site_config/standard/trailer.web-view.net.txt
deleted file mode 100755
index e7a9c82d..00000000
--- a/inc/3rdparty/site_config/standard/trailer.web-view.net.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title: concat(substring-before(//title,':'),': ',//div[@class='Date2'])
2test_url: http://trailer.web-view.net/Show/0XC4EFE5D648B716BA2E134BC7CE61B9CC001E04F11E9434438186735DBD637488.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/trailerzone.de.txt b/inc/3rdparty/site_config/standard/trailerzone.de.txt
deleted file mode 100755
index 02151a63..00000000
--- a/inc/3rdparty/site_config/standard/trailerzone.de.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id='video' or @id='main']
2
3strip_id_or_class: socialshareprivacy2
4strip_id_or_class: wp_rp_first
5
6find_string: Genre</strong>
7replace_string: </strong></p><p><strong>Genre</strong>
8
9test_url: http://www.trailerzone.de/g-i-joe-2-die-abrechnung/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/traningslara.se.txt b/inc/3rdparty/site_config/standard/traningslara.se.txt
deleted file mode 100755
index d6cfb6db..00000000
--- a/inc/3rdparty/site_config/standard/traningslara.se.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //div[@class="Post-body"]//span[@class="PostHeader"]
2author: //div[@class="PostHeaderIcons metadata"]/a[@title="Author"]
3date: substring-before(//div[@class="PostHeaderIcons metadata"], '|')
4body: //div[@class="Post-body"]
5strip_id_or_class: print1
6strip_id_or_class: metadata
7strip_id_or_class: authorbox
8test_url: http://traningslara.se/skoinlagg-och-skador-finns-det-nagot-samband/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/triblive.com.txt b/inc/3rdparty/site_config/standard/triblive.com.txt
deleted file mode 100755
index 663cafe1..00000000
--- a/inc/3rdparty/site_config/standard/triblive.com.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //title
2author: //span/a
3date: substring-after(//small,'Published:')
4
5strip: //h1[@class='vert_class']
6strip: //h1[@class='headline']
7strip: //img[contains(@src,'logo_triblive.gif')]
8
9#strip: //h6
10#strip_img_src: logo_triblive.gif
11
12single_page_link: //a[@class='stprint']
13test_url: http://triblive.com/sports/2819913-85/lemieux-deal-penguins-burkle-nhl-owners-team-mario-bettman-case \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/truthdig.com.txt b/inc/3rdparty/site_config/standard/truthdig.com.txt
deleted file mode 100755
index 9e0663b0..00000000
--- a/inc/3rdparty/site_config/standard/truthdig.com.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //div[@class='printbody']/h1
2body: //div[@class='printbody']
3prune: no
4
5strip: //div[@class='printbody']/a[@href='http://www.truthdig.com/']
6strip: //table[@class='footer']
7strip: //h6[contains(., 'http://')]
8
9single_page_link: //a[contains(@href, '/print/')]
10
11test_url: http://www.truthdig.com/report/item/the_election_march_of_the_trolls_20110829/
12test_url: http://www.truthdig.com/dig/item/the_death_of_truth_20130505/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tthfanfic.org.txt b/inc/3rdparty/site_config/standard/tthfanfic.org.txt
deleted file mode 100755
index 63537c10..00000000
--- a/inc/3rdparty/site_config/standard/tthfanfic.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h2
2author: //a[starts-with(@href, '/AuthorStories')]
3body: //div[@id='storyinnerbody']
4test_url: http://www.tthfanfic.org/Story-6512/Kudra+Journeys.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tthor.com.txt b/inc/3rdparty/site_config/standard/tthor.com.txt
deleted file mode 100755
index 902fcd13..00000000
--- a/inc/3rdparty/site_config/standard/tthor.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1prune: no
2test_url: http://www.tthor.com/06/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tuaw.com.txt b/inc/3rdparty/site_config/standard/tuaw.com.txt
deleted file mode 100755
index 2af00c27..00000000
--- a/inc/3rdparty/site_config/standard/tuaw.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class='posttitle']
2author: //span[@class='author']/a
3date: //span[@class='timestamp']
4body: //div[@class='body']
5
6test_url: http://www.tuaw.com/2011/10/19/apple-posts-fans-memories-of-steve-jobs/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tuckreview.com.txt b/inc/3rdparty/site_config/standard/tuckreview.com.txt
deleted file mode 100755
index 6e18e3da..00000000
--- a/inc/3rdparty/site_config/standard/tuckreview.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class='post-title']
2author: //div[@class='display-name']
3date: //div[@class='date']
4body: //div[@class='body']
5footnotes: no
6test_url: http://tuckreview.com/2012/8/14/migrating-to-v6 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/tuhdo.github.io.txt b/inc/3rdparty/site_config/standard/tuhdo.github.io.txt
deleted file mode 100644
index beb551fd..00000000
--- a/inc/3rdparty/site_config/standard/tuhdo.github.io.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=https%3A%2F%2Ftuhdo.github.io%2Femacs-tutor.html
4
5body: //div[@id='content']
6strip_id_or_class: table-of-contents
7test_url: https://tuhdo.github.io/emacs-tutor.html
diff --git a/inc/3rdparty/site_config/standard/tvtropes.org.txt b/inc/3rdparty/site_config/standard/tvtropes.org.txt
deleted file mode 100755
index 3cc3a9cf..00000000
--- a/inc/3rdparty/site_config/standard/tvtropes.org.txt
+++ /dev/null
@@ -1,20 +0,0 @@
1# Google Custom Search
2strip_id_or_class: google_branding_style
3
4# Avoid double title
5strip_id_or_class: pagetitle
6
7# external links are labelled
8strip_image_src: http://static.mediatropes.info/pmwiki/pub/external_link.gif
9
10title: //div[@class="pagetitle"]
11body: //div[@id="wikitext"]
12
13# don't get clever.
14strip_comments: no
15prune: no
16
17# navigation in footer lives inside the wikitext div, annoyingly.
18strip_id_or_class: pathholder
19
20test_url: http://tvtropes.org/pmwiki/pmwiki.php/Main/WithinParameters \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/twitter.com.txt b/inc/3rdparty/site_config/standard/twitter.com.txt
deleted file mode 100755
index 0e5b7487..00000000
--- a/inc/3rdparty/site_config/standard/twitter.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //title
2body: (//p[contains(@class, 'js-tweet-text')])[1]
3author: (//strong[contains(@class, 'fullname')])[1]
4date: //span[contains(@class, 'js-short-timestamp')]/@data-time
5
6prune: no
7tidy: no
8
9test_url: https://twitter.com/medialens/status/216883678582804480
10test_contains: is all but alone in challenging the tsunami of UK
diff --git a/inc/3rdparty/site_config/standard/uefa.com.txt b/inc/3rdparty/site_config/standard/uefa.com.txt
deleted file mode 100755
index 3469be03..00000000
--- a/inc/3rdparty/site_config/standard/uefa.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@class='d3cmsCBody']//div[@class='pubText pubDate' or @class='newsComment' or contains(@class, 'newsPhoto') or @class='newsText']
2strip: //div[contains(@class, 'mpindex')]
3prune: no
4tidy: no
5
6test_url: http://www.uefa.com/uefaeuropaleague/news/newsid=1617320.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/uk.xbox360.ign.com.txt b/inc/3rdparty/site_config/standard/uk.xbox360.ign.com.txt
deleted file mode 100755
index cd9c1361..00000000
--- a/inc/3rdparty/site_config/standard/uk.xbox360.ign.com.txt
+++ /dev/null
@@ -1,23 +0,0 @@
1# applies to uk.ds.ign.com, uk.wii.ign.com etc.
2# possibly to non-UK versions, but I can&rsquo;t test that
3
4title: //h1[@class="headline"]
5author: //div[@class="hdr-sub byline"]/a
6date: //h2[@class="publish-date"]/span
7body: //div[@id="main-article-content"]
8
9strip: //ul[@class="lnks-readmore"]
10
11strip: //div[@class="inlineImageCaption"]
12# can&rsquo;t make the images appear, so remove the captions
13
14strip: //div[@style="width:468px"]
15# video caption links
16
17convert_double_br_tags: yes
18
19strip_comments: no
20# otherwise the &lsquo;Closing Comments&rsquo; are removed
21
22# Ratings box could do with some rearranging, but it&rsquo;s tricky
23test_url: http://uk.xbox360.ign.com/articles/121/1210717p1.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/uni-watch.com.txt b/inc/3rdparty/site_config/standard/uni-watch.com.txt
deleted file mode 100755
index 4a5ae344..00000000
--- a/inc/3rdparty/site_config/standard/uni-watch.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1author: substring-before(substring-after(//div[@class='post-byline'], 'By '), ', on')
2date: substring-after(//div[@class='post-byline'], ', on')
3
4# for some reason, the following is producing a "no text [48]" error
5#title: //div[@class='post-headline']
6
7# for some reason, the following doesn't appear to isolate just the body copy
8body: //div[@class='post-bodycopy']
9
10# we solve the above issue by stripping out everything else we don't want
11# these can probably all be removed if the body: command above worked
12strip_id_or_class: reply
13strip_id_or_class: left
14strip_id_or_class: post-headline
15strip_id_or_class: post-byline
16strip_id_or_class: footer
17test_url: http://www.uni-watch.com/2011/10/18/the-curious-case-of-steve-debergs-microphone-and-speaker/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/unwinnable.com.txt b/inc/3rdparty/site_config/standard/unwinnable.com.txt
deleted file mode 100755
index 05ad86a5..00000000
--- a/inc/3rdparty/site_config/standard/unwinnable.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h1[@class='postTitle']
2author: //a[@rel='author']
3date: substring-before(//h4[@class='postAuthor'], '|')
4body: //div[@class='postContent']
5
6strip: //div[@class='simplePullQuote']
7
8wrap_in(figure): //img
9test_url: http://www.unwinnable.com/2013/04/23/gratifying-play/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/uppsalafria.se.txt b/inc/3rdparty/site_config/standard/uppsalafria.se.txt
deleted file mode 100755
index 79c59ece..00000000
--- a/inc/3rdparty/site_config/standard/uppsalafria.se.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1body: //div[contains(@class, 'layout__inner')]//div[contains(@class, 'file-image') or contains(@class, 'node__content')]
2author: //article//div[contains(@class, 'field-byline')]
3strip_id_or_class: rekommenderade
4strip_id_or_class: disqus
5strip_id_or_class: annonser
6
7test_url: http://www.uppsalafria.se/artikel/97167 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/urbandictionary.com.txt b/inc/3rdparty/site_config/standard/urbandictionary.com.txt
deleted file mode 100755
index 385c95ca..00000000
--- a/inc/3rdparty/site_config/standard/urbandictionary.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //title
2body: //table[@id='entries']
3test_url: http://www.urbandictionary.com/define.php?term=Grown-Ass
diff --git a/inc/3rdparty/site_config/standard/usatoday.com.txt b/inc/3rdparty/site_config/standard/usatoday.com.txt
deleted file mode 100755
index 710a7b37..00000000
--- a/inc/3rdparty/site_config/standard/usatoday.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1date: //meta[@itemprop="datePublished"]/@content
2author: //div[@itemprop="author"]
3body: //div[@itemprop='articleBody']
4
5strip_id_or_class: share-tools
6
7test_url: http://www.usatoday.com/story/news/world/2014/03/18/malaysia-plane-search/6552429/
8test_url: http://rssfeeds.usatoday.com/usatoday-NewsTopStories \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/usccb.org.txt b/inc/3rdparty/site_config/standard/usccb.org.txt
deleted file mode 100755
index 30c28823..00000000
--- a/inc/3rdparty/site_config/standard/usccb.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='CS_Element_maincontent']
2
3tidy: no
4prune: no
5
6test_url: http://www.usccb.org/bible/readings/072412.cfm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/useit.com.txt b/inc/3rdparty/site_config/standard/useit.com.txt
deleted file mode 100755
index b8511c7c..00000000
--- a/inc/3rdparty/site_config/standard/useit.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1
2
3date: substring-after(//p[@class='overline']/strong, ',')
4body: //div[@class="maintext"]
5strip: //p[@class='overline']
6strip: //h1
7tidy: no
8test_url: http://www.useit.com/alertbox/mobile-startup-screen.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/usfirst.org.txt b/inc/3rdparty/site_config/standard/usfirst.org.txt
deleted file mode 100755
index f02b2d3e..00000000
--- a/inc/3rdparty/site_config/standard/usfirst.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //meta[@property='dc:title']/@content
2date: //div[@class='content']//span[@property='dc:date']/@content
3body: //div[@property='content:encoded']
4prune: no
5
6test_url: http://www.usfirst.org/roboticsprograms/frc/Photo-From-Kickoff-Filming \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/utdailybeacon.com.txt b/inc/3rdparty/site_config/standard/utdailybeacon.com.txt
deleted file mode 100755
index d37911bc..00000000
--- a/inc/3rdparty/site_config/standard/utdailybeacon.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //h1
2author: //*[@class='byline']
3date: substring-after(//*[@class='pubdatetime'], 'Published: ')
4body: //*[@class='body-block']
5test_url: http://utdailybeacon.com/news/2012/oct/8/energy-forum-continues/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ux.artu.tv.txt b/inc/3rdparty/site_config/standard/ux.artu.tv.txt
deleted file mode 100755
index c69f2df9..00000000
--- a/inc/3rdparty/site_config/standard/ux.artu.tv.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1author: ("Arturo Toledo")
2title: //div[@class="post"]/h2
3body: //div[@class="entry"]
4
5# Remove Twitter button
6strip: //div[@class="entry"]/p[2]/a/img
7test_url: http://ux.artu.tv/?p=192 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/uzivatelsketestovani.cz.txt b/inc/3rdparty/site_config/standard/uzivatelsketestovani.cz.txt
deleted file mode 100755
index 3661b06a..00000000
--- a/inc/3rdparty/site_config/standard/uzivatelsketestovani.cz.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title:h1
2test_url: http://www.uzivatelsketestovani.cz/wiki/doku.php/skoleni-axure-rp \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vanityfair.com.txt b/inc/3rdparty/site_config/standard/vanityfair.com.txt
deleted file mode 100755
index f52339cf..00000000
--- a/inc/3rdparty/site_config/standard/vanityfair.com.txt
+++ /dev/null
@@ -1,33 +0,0 @@
1title: //meta[@property="og:title"]/@content
2author: //div[contains(@class, 'byline')]//span[contains(@class, 'name')]
3date: //div[contains(@class, 'cn_date_time')]
4body: //div[contains(@class, 'pageContainers')]
5body: //div[@id='main']
6body: //article[@id='items-container']
7#body: //h2[@class='sub-header'] | //div[contains(@class, 'contributor-type') or @class='display-date' or @class='content-container']
8
9strip_id_or_class: bc
10strip_id_or_class: utilities
11strip_id_or_class: list-supporting
12strip_id_or_class: yrail
13strip_id_or_class: urail
14
15prune: no
16#tidy: no
17
18strip_id_or_class: super-rubric-section
19strip_id_or_class: cn_date_time
20strip_id_or_class: cn_contributors
21strip_id_or_class: cn_pagination_controls
22strip_id_or_class: cn_features_container
23strip_id_or_class: global-footer
24strip_id_or_class: cn_ecom_placement
25strip: //li[@class='blogNavPrev']
26
27single_page_link: //a[@title='Print this page']
28
29test_url: http://www.vanityfair.com/politics/features/2011/05/egypt-revolutionaries-201105
30test_contains: nothing can take away from the miracle of Tahrir Square
31
32test_url: http://www.vanityfair.com/politics/features/2008/08/hitchens200808
33test_url: http://www.vanityfair.com/style/2012/01/prisoners-of-style-201201
diff --git a/inc/3rdparty/site_config/standard/varingen.no.txt b/inc/3rdparty/site_config/standard/varingen.no.txt
deleted file mode 100755
index c0133c95..00000000
--- a/inc/3rdparty/site_config/standard/varingen.no.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class='ArticleHeadlineDetailedView']
2date: //span[@class='ArticlePublicationDateTimeDetailedView']
3author://span[@class='ArticleBylineDetailedView']
4body: //div[@class='ArticleTextDetailedView']
5test_url: http://www.varingen.no/Nyheter/tabid/392/Default.aspx?ModuleId=56651&articleView=true \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/varsity.co.uk.txt b/inc/3rdparty/site_config/standard/varsity.co.uk.txt
deleted file mode 100755
index dfbf69cf..00000000
--- a/inc/3rdparty/site_config/standard/varsity.co.uk.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1# FB comments are inside an h2. Weird. Without this, the line 'Comments' is preserved by the text parser
2
3strip: //h2
4test_url: http://www.varsity.co.uk/reviews/2662 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vea.gov.vn.txt b/inc/3rdparty/site_config/standard/vea.gov.vn.txt
deleted file mode 100755
index 9c8420ce..00000000
--- a/inc/3rdparty/site_config/standard/vea.gov.vn.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title://div[@class="detail-new-title"]
2body://div[@class="innerpad"]
3strip://div[@class="ArticleUtility"]
4strip://div[@class="commentPost"]
5strip://div[@class="comment-box"]
6strip://div[@id="TinLienQuan"]
7test_url: http://vea.gov.vn/vn/tintuc/tintuchangngay/Pages/T%C4%83ng-c%C6%B0%E1%BB%9Dng-b%E1%BA%A3o-t%E1%BB%93n-%C4%91%E1%BB%99ng-v%E1%BA%ADt-hoang-d%C3%A3-%E1%BB%9F-Vi%E1%BB%87t-Nam.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vedomosti.ru.txt b/inc/3rdparty/site_config/standard/vedomosti.ru.txt
deleted file mode 100755
index 265f9fc7..00000000
--- a/inc/3rdparty/site_config/standard/vedomosti.ru.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //td[@class='second_content']/h1
2body: //td[@class='second_content']/div[@class='article_text']
3test_url: http://www.vedomosti.ru/newspaper/article/259377/rasprodazha_mailru \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/veggbilder.no.txt b/inc/3rdparty/site_config/standard/veggbilder.no.txt
deleted file mode 100755
index 2a44c317..00000000
--- a/inc/3rdparty/site_config/standard/veggbilder.no.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1author: //div[@class="blogginnleggForfatter"]
2date: concat(//div[@class='blogginnleggDatoDag'],' ',//div[@class='blogginnleggDatoMnd'])
3strip: //div[contains(@id,"bloggDelingslenker")]
4strip: //div[contains(@id,"bloggDelingslenker")]
5test_url: http://veggbilder.no/blogginnlegg/fristelser \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vemedio.com.txt b/inc/3rdparty/site_config/standard/vemedio.com.txt
deleted file mode 100755
index d22fc5cf..00000000
--- a/inc/3rdparty/site_config/standard/vemedio.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2
2date: substring-before(//small," &bull; Permalink")
3author:string('Martin Hering')
4
5Strip: //p/small
6test_url: http://vemedio.com/blog/posts/state-of-support-and-icloud \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/venturebeat.com.txt b/inc/3rdparty/site_config/standard/venturebeat.com.txt
deleted file mode 100755
index d6321d79..00000000
--- a/inc/3rdparty/site_config/standard/venturebeat.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class="entry-title"]
2author: //div[@class="author-name"]
3date: //span[@class="the-time"]
4body: //div[@class="entry-content"]
5strip: //div[@class="vb-gallery"]
6test_url: http://venturebeat.com/2012/07/17/marissa-mayer-yahoo/#s:mayer-1 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/version.php b/inc/3rdparty/site_config/standard/version.php
deleted file mode 100644
index 34a87357..00000000
--- a/inc/3rdparty/site_config/standard/version.php
+++ /dev/null
@@ -1 +0,0 @@
1<?php return 4; ?> \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/version.txt b/inc/3rdparty/site_config/standard/version.txt
deleted file mode 100644
index eaf01ebd..00000000
--- a/inc/3rdparty/site_config/standard/version.txt
+++ /dev/null
@@ -1 +0,0 @@
12013-05-12T22:53:07Z \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/version2.dk.txt b/inc/3rdparty/site_config/standard/version2.dk.txt
deleted file mode 100755
index 418b83a1..00000000
--- a/inc/3rdparty/site_config/standard/version2.dk.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //article/header/h1
2
3author: //article/header/section[@class='byline']/span[contains(@class, 'author')]/a
4date: //article/header/section[@class='byline']/span[@class='published']/span
5
6body: //article/section[@class='body']
7
8convert_double_br_tags: yes
9
10# This is required, because Tidy chokes on the HTML5 tags...
11tidy: no
12test_url: http://www.version2.dk/artikel/17069-amerikansk-hit-investor-er-vild-med-danske-net-ivaerksaettere \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/verybestbaking.com.txt b/inc/3rdparty/site_config/standard/verybestbaking.com.txt
deleted file mode 100755
index ad0fec66..00000000
--- a/inc/3rdparty/site_config/standard/verybestbaking.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //title
2body: //div[contains(@class, 'printRecipe')]
3strip: //div[@class='recipeHeader']
4prune: no
5tidy: no
6single_page_link: //ul[@class='printOptions']//a[contains(@href, 'detail.aspx?p=1&showphoto=true')]
7test_url: http://www.verybestbaking.com/recipes/143190/Penne-Pasta-with-Sun-dried-Tomato-Cream-Sauce/detail.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vg.no.txt b/inc/3rdparty/site_config/standard/vg.no.txt
deleted file mode 100755
index bfadb4a7..00000000
--- a/inc/3rdparty/site_config/standard/vg.no.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@id='artikkelspalte']
2strip_id_or_class: 'breadcrumb'
3test_url: http://www.vg.no/spill/artikkel.php?artid=10003628 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/video.forbes.com.txt b/inc/3rdparty/site_config/standard/video.forbes.com.txt
deleted file mode 100755
index 5db77463..00000000
--- a/inc/3rdparty/site_config/standard/video.forbes.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: concat("Video: ", //div[@id='currentVideoTitleDivId'])
2body: //div[@id='currentVideoDescriptionId']
3author: //meta[@name='author']/@content
4
5replace_string(<div id="currentVideoDescriptionId" style="display): <div id="currentVideoDescriptionId" style="displayitplease
6
7replace_string(<div id="currentVideoTitleDivId" style="display): <div id="currentVideoTitleDivId" style="displayitplease
8
9test_url: http://video.forbes.com/fvn/business/wells-fargo-inside-the-bank-that-works \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/videogum.com.txt b/inc/3rdparty/site_config/standard/videogum.com.txt
deleted file mode 100755
index d93780ca..00000000
--- a/inc/3rdparty/site_config/standard/videogum.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2[@class='posttitle']
2date: substring-before(substring-after(//span[@class='postdate'], 'on '), ' by')
3date: //span[@class='postdate']
4author: //span[@class='postdate']/a
5body: //div[@class='entry line_top']
6test_url: http://videogum.com/395042/here-are-some-afternoon-links-92/list/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/villagevoice.com.txt b/inc/3rdparty/site_config/standard/villagevoice.com.txt
deleted file mode 100755
index 36e4a2f5..00000000
--- a/inc/3rdparty/site_config/standard/villagevoice.com.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h2[@class='headline']
2
3body: //div[@class='ContentPrint']
4
5prune: no
6
7single_page_link: //a[contains(@href, '/printVersion/')]
8
9test_url: http://www.villagevoice.com/2010-03-16/news/new-york-s-ten-worst-landlords/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vimeo.com.txt b/inc/3rdparty/site_config/standard/vimeo.com.txt
deleted file mode 100755
index f36c9c57..00000000
--- a/inc/3rdparty/site_config/standard/vimeo.com.txt
+++ /dev/null
@@ -1,17 +0,0 @@
1title: //title
2body: //iframe
3
4find_string: <html>&lt;iframe
5replace_string: <iframe id="video"
6
7find_string: &gt;&lt;/iframe&gt;</html>
8replace_string: ></iframe>
9
10replace_string(&quot;): "
11
12single_page_link: //link[@type='text/xml+oembed']
13
14prune: no
15tidy: no
16
17test_url: http://vimeo.com/35941909 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/viply.de.txt b/inc/3rdparty/site_config/standard/viply.de.txt
deleted file mode 100755
index e3599c9d..00000000
--- a/inc/3rdparty/site_config/standard/viply.de.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //div[@id='singletext']//h1
2body: //div[contains(@class, 'mypictureborder')] | //div[@id='singletext']
3prune: no
4
5strip_id_or_class: singletostart
6strip_id_or_class: navigation
7strip_id_or_class: social
8strip_id_or_class: single_topwrapper
9strip: //a[contains(., 'Nächster Artikel')]
10
11test_url: http://www.viply.de/?p=87973
12test_url: http://www.viply.de/?feed=rss2 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/visir.is.txt b/inc/3rdparty/site_config/standard/visir.is.txt
deleted file mode 100755
index 04e09102..00000000
--- a/inc/3rdparty/site_config/standard/visir.is.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1# Author's name, when present, has 'skrifar:' ('writes:') appended to it.
2# In case of multiple authors, this would be 'skrifa:', hence only 7 characters
3# are stripped off.
4author: substring(//div[@class='paragraph']/div[@class='meta'], 0, string-length(//div[@class='paragraph']/div[@class='meta']) - 7)
5
6date: //span[@class='date']
7title: //h1
8body: //div[@class='paragraph']
9
10# Strip out author string when present
11strip: //div[@class='paragraph']/div[@class='meta']
12
13convert_double_br_tags: yes
14test_url: http://visir.is/esb,-ipa,-bhm-og-bsrb/article/2012701319997 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vitispr.com.txt b/inc/3rdparty/site_config/standard/vitispr.com.txt
deleted file mode 100755
index f2d11c7c..00000000
--- a/inc/3rdparty/site_config/standard/vitispr.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1strip: //*[(@id = "ja-search")]
2body: //*[(@id = "ja-mainbody")]
3body: //*[(@id = "content-mass-bottom")]
4strip://h3[contains(span,'Related Posts')]
5strip://img
6test_url: http://vitispr.com/blog/coventry-is-a-technology-hotspot \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vivirmexico.com.txt b/inc/3rdparty/site_config/standard/vivirmexico.com.txt
deleted file mode 100755
index e6a72700..00000000
--- a/inc/3rdparty/site_config/standard/vivirmexico.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //*[(@class = "historia")]
2test_url: http://vivirmexico.com/2011/09/en-veracruz-arrojan-35-cuerpos-a-plena-luz-del-dia-esta-si-es-una-alarma-social \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vnexpress.net.txt b/inc/3rdparty/site_config/standard/vnexpress.net.txt
deleted file mode 100755
index e5ebc435..00000000
--- a/inc/3rdparty/site_config/standard/vnexpress.net.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[@cpms_content]//h2[@class='Lead'] | //div[@cpms_content]//p[@class='Normal'] | //div[@cpms_content]//table
2strip://div[@class="box-item"]
3strip://div[@id="ARTICLE_BANNER"]
4strip://a
5strip://div[@class="tag-parent"]
6strip://div[@class="email-print txtr"]
7
8test_url: http://vnexpress.net/gl/xa-hoi/2011/04/tim-thay-nan-nhan-cuoi-cung-vu-sap-mo-da-o-len-co/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/voices.washingtonpost.com.txt b/inc/3rdparty/site_config/standard/voices.washingtonpost.com.txt
deleted file mode 100755
index b754aeb8..00000000
--- a/inc/3rdparty/site_config/standard/voices.washingtonpost.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h1
2body: //div[@class='entrytext']
3test_url: http://voices.washingtonpost.com/ezra-klein/2010/10/why_isnt_monetary_policy_discr.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/vworker.com.txt b/inc/3rdparty/site_config/standard/vworker.com.txt
deleted file mode 100755
index cfb9ea1c..00000000
--- a/inc/3rdparty/site_config/standard/vworker.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[contains(@class, 'KonaBody')]
2
3test_url: http://www.vworker.com/RentACoder/misc/BidRequests/ShowBidRequest.asp?lngBidRequestId=1634186 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/waffle.wootest.net.txt b/inc/3rdparty/site_config/standard/waffle.wootest.net.txt
deleted file mode 100755
index e92757d7..00000000
--- a/inc/3rdparty/site_config/standard/waffle.wootest.net.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h2[@class="title"]
2body: //div[@class="post"]
3
4test_url: http://waffle.wootest.net/2011/06/22/on-reading-news/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/walrusmagazine.com.txt b/inc/3rdparty/site_config/standard/walrusmagazine.com.txt
deleted file mode 100755
index c53eb0dd..00000000
--- a/inc/3rdparty/site_config/standard/walrusmagazine.com.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1title: //div[@id='pr']/h3
2author: //div[@class='dateline']//a[contains(@href, '/author/')]
3
4# print page
5body: //div[@id='prbody']
6# standard page
7body: //div[@id='pgbody']
8
9# for multi-page articles
10single_page_link: //div[@class='tipjar']//a[contains(@href, '/printerFriendly.php?')]
11
12prune: no
13
14test_url: http://www.walrusmagazine.com/articles/2011.12-memoir-kidnapped \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/warnerbros.fr.txt b/inc/3rdparty/site_config/standard/warnerbros.fr.txt
deleted file mode 100755
index 21f56352..00000000
--- a/inc/3rdparty/site_config/standard/warnerbros.fr.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h3
2body: //div[@class="content_wysiwyg"]
3test_url: http://www.warnerbros.fr/game-of-thrones-un-junket-vu-de-l-interieur-268.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/washingtoninstitute.org.txt b/inc/3rdparty/site_config/standard/washingtoninstitute.org.txt
deleted file mode 100755
index 17f45677..00000000
--- a/inc/3rdparty/site_config/standard/washingtoninstitute.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@class='main']//article
2
3prune: no
4
5test_url: http://www.washingtoninstitute.org/policy-analysis/view/striking-syria-lessons-from-the-israeli-experience?goback=.gde_3822158_member_273623672
6test_url: http://www.washingtoninstitute.org/rss/11/10 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/washingtonmonthly.com.txt b/inc/3rdparty/site_config/standard/washingtonmonthly.com.txt
deleted file mode 100755
index 8f8902a5..00000000
--- a/inc/3rdparty/site_config/standard/washingtonmonthly.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title://a[@class = 'headline-article']
2
3author: substring-after(//div[@class = 'article']/p[@class = 'author'], 'By ')
4date://div[@class = 'article']/span[@class = 'date']
5body://div[@class = 'article']
6single_page_link://a[@class = 'print']
7strip://p[@class = 'author']
8strip://a[@class = 'headline-article']
9strip://span[@class = 'date']
10test_url: http://www.washingtonmonthly.com/magazine/julyaugust_2011/features/the_trinity_sisters030380.php \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/washingtonpost.com.txt b/inc/3rdparty/site_config/standard/washingtonpost.com.txt
deleted file mode 100755
index 0aa9f1d8..00000000
--- a/inc/3rdparty/site_config/standard/washingtonpost.com.txt
+++ /dev/null
@@ -1,32 +0,0 @@
1# Seems to be redirecting to articles.washingtonpost.com for many users
2
3body: //div[contains(@class, "article_body")]
4# print view
5body: //div[@id='print_facet']//div[@id='body']
6
7author://meta[@name='DC.creator']/@content
8title://meta[@name='title']/@content
9date://div[contains(@class,'byline')]//span[contains(@class,'published')]/@title
10date://meta[@name="DC.date.issued"]/@content
11strip://div[@class="relative primary-slot padding-top img-border gallery-container photo-wrapper"]
12strip://div[@id="wp-column six end"]
13strip://div[contains(@class,'hidden')]
14strip://div[@id='article-side-rail']
15strip://div[@class="module component todays-paper-module curved"]
16strip://div[@class="module component live-qa curved img-border"]
17strip://div[@class="module component newsletter-signup curved"]
18strip://div[@class="module featured-stories component curved img-border"]
19
20strip_id_or_class: carousel
21strip_id_or_class: toolbar
22strip_id_or_class: module
23
24# Change gJQAwdJG4U_story.html to gJQAwdJG4U_print.html
25single_page_link: concat(substring-before(//link[@rel="canonical"]/@href, "_story.html"), "_print.html")
26
27# [OLD] Change gJQAwdJG4U_story.html to gJQAwdJG4U_story_print.html
28#single_page_link: concat(substring-before(//link[@rel="canonical"]/@href, "_story.html"), "_story_print.html")
29
30test_url: http://www.washingtonpost.com/world/europe/in-europe-new-fears-of-german-might/2011/10/19/gIQA3baZ7L_story.html?hpid=z1
31test_url: http://www.washingtonpost.com/national/health-science/radical-theory-of-first-americans-places-stone-age-europeans-in-delmarva-20000-years-ago/2012/02/28/gIQA4mriiR_story.html
32test_url: http://www.washingtonpost.com/lifestyle/magazine/the-sorry-fate-of-a-tech-pioneer-halsey-minor-and-historic-virginia-estate-carters-grove/2012/05/30/gJQAwdJG4U_story.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/web-libre.org.txt b/inc/3rdparty/site_config/standard/web-libre.org.txt
deleted file mode 100755
index 9ed43a25..00000000
--- a/inc/3rdparty/site_config/standard/web-libre.org.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1body: //div[@id='template_article']
2
3strip_id_or_class: article_more
4strip: //hr
5
6test_url: http://www.web-libre.org/dossiers/jacuzzi-gonflable,8493.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/weblog.bignerdranch.com.txt b/inc/3rdparty/site_config/standard/weblog.bignerdranch.com.txt
deleted file mode 100755
index 578ba523..00000000
--- a/inc/3rdparty/site_config/standard/weblog.bignerdranch.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title://div[@class="post"]/h2
2author://p[@class="postinfo"]/a
3date:substring-before(substring-after(//p[@class="postinfo"],' on '),' under ')
4body://div[@class="contenttext"]
5test_url: http://weblog.bignerdranch.com/?p=304 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/weblogs.asp.net.txt b/inc/3rdparty/site_config/standard/weblogs.asp.net.txt
deleted file mode 100755
index 7cfa49d2..00000000
--- a/inc/3rdparty/site_config/standard/weblogs.asp.net.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1title: //h2[@class="pageTitle"]
2strip: //div[@class="postfoot"]
3strip: //h2[@class="pageTitle"]
4strip: //h3[@class="pageTitle"]
5body: //div[@class="post"]
6author: substring-before(substring-after(//div[@class="postfoot"], 'by'), 'Filed')
7date: substring-before(substring-after(//div[@class="postfoot"], 'Published'), 'by')
8
9test_url: http://weblogs.asp.net/scottgu/archive/2011/08/31/html-editor-smart-tasks-and-event-handler-generation-asp-net-vnext-series.aspx \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/webpaper.nzz.ch.txt b/inc/3rdparty/site_config/standard/webpaper.nzz.ch.txt
deleted file mode 100755
index cea10147..00000000
--- a/inc/3rdparty/site_config/standard/webpaper.nzz.ch.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1tidy: no
2dissolve: //div[@id="content"]/div/article/header
3body: //div[@id="content"]/div/article
4title: //div[@id="content"]/div/article/h1
5date: //div[@id="content"]/div/article/header/div[@id="issueSelectTrigger"]
6strip: //div[@id="content"]/div/article/h1
7
8test_url: http://webpaper.nzz.ch/2012/06/23/front/JJKMS/aphrodite-und-die-kommunisten?guest_pass=24a3ca5b6d%3AJJKMS%3Ad30e1be8628c099669671d4da56cdce4187790ba \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/webwereld.nl.txt b/inc/3rdparty/site_config/standard/webwereld.nl.txt
deleted file mode 100755
index 40a5aa36..00000000
--- a/inc/3rdparty/site_config/standard/webwereld.nl.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1strip: //*[@class="paginator"]
2body: //*[@id="articleText"]
3next_page_link: //a[@class="next"]
4
5# No author detection
6# No publishing date detection
7# No author and intro deduplication over multiple pages
8test_url: http://webwereld.nl/analyse/111452/de-code-van-dorifel-nader-bekeken.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/welt.de.txt b/inc/3rdparty/site_config/standard/welt.de.txt
deleted file mode 100755
index 42e65e97..00000000
--- a/inc/3rdparty/site_config/standard/welt.de.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1# set body
2tidy: no
3body: //div[contains(@class, 'articleContent')]
4
5# remove clutter
6strip: //div[@class='advertising']
7strip: //div[@class='themenalarm']
8strip: //div[contains(@class, 'inTextTeaser')]
9
10# remove captions
11strip: //span[@class='copyRight']
12
13# remove photo galleries and extras
14strip: //div[contains(@class, 'textGallery')]
15strip: //div[contains(@class, 'videoGallery')]
16strip: //div[contains(@class, 'imageGallery')]
17strip: //div[contains(@class, 'openContent')]
18
19# remove comments
20strip: //div[@id = 'writeComment']
21
22test_url: http://www.welt.de/vermischtes/weltgeschehen/article11050589/27-Bergleute-in-neuseelaendischer-Mine-vermisst.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/westhamtillidie.com.txt b/inc/3rdparty/site_config/standard/westhamtillidie.com.txt
deleted file mode 100755
index 3132e98a..00000000
--- a/inc/3rdparty/site_config/standard/westhamtillidie.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: substring-before(//title, '«')
2
3body: //div[@class='entry']
4strip: //div[@class='sharing_label']
5strip: //div[@class='snap_nopreview sharing robots-nocontent']
6test_url: http://www.westhamtillidie.com/2012/03/11/twelve-things-we-learned-from-the-doncaster-game/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/what-if.xkcd.com.txt b/inc/3rdparty/site_config/standard/what-if.xkcd.com.txt
deleted file mode 100755
index a88a02c9..00000000
--- a/inc/3rdparty/site_config/standard/what-if.xkcd.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1autodetect_next_page: no
2test_url: http://what-if.xkcd.com/1/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/whatever.scalzi.com.txt b/inc/3rdparty/site_config/standard/whatever.scalzi.com.txt
deleted file mode 100755
index 100a8c88..00000000
--- a/inc/3rdparty/site_config/standard/whatever.scalzi.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1strip: //div[@class="navigation"]
2strip: //div[@id="sidebar"]
3strip: //div[@id="post-extra-content"]
4strip: //div[@id="footer"]
5strip: //div[contains(@class, "sharing")]
6
7test_url: http://whatever.scalzi.com/2011/01/09/quick-giffords-follow-up/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wheelyric.com.txt b/inc/3rdparty/site_config/standard/wheelyric.com.txt
deleted file mode 100755
index b9eeaa0c..00000000
--- a/inc/3rdparty/site_config/standard/wheelyric.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1body://div[contains(@class,'oAndtLyrics')]
2strip://div[contains(@class,'info')]
3strip://div[contains(@id,'romanization')]
4strip://div[contains(@id,'youtube')]
5strip://div[contains(@id,'romanizationSelector')]
6strip://div[contains(@id,'langSelectWrap')]
7strip://div[contains(@id,'requestTranslationWrap')]
8strip://div[contains(@id,'viewMore')]
9strip://div[contains(@class,'lyricsListInMainContent')]
10strip://div[contains(@class,'descIpNoti')]
11test_url: http://wheelyric.com/lyrics/121#2 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wiki.guildwars.com.txt b/inc/3rdparty/site_config/standard/wiki.guildwars.com.txt
deleted file mode 100755
index b80fe5d1..00000000
--- a/inc/3rdparty/site_config/standard/wiki.guildwars.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1
2body: //div[@id='content']
3strip_id_or_class: editsection
4strip_id_or_class: toc
5strip: //div[@id='siteNotice']
6strip: //div[@id='content']//table[last()]
7prune: no
8test_url: http://wiki.guildwars.com/wiki/Monk \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wiki.guildwars2.com.txt b/inc/3rdparty/site_config/standard/wiki.guildwars2.com.txt
deleted file mode 100755
index e9233998..00000000
--- a/inc/3rdparty/site_config/standard/wiki.guildwars2.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1title: //h1
2body: //div[@id='content']
3strip_id_or_class: editsection
4strip_id_or_class: toc
5strip: //div[@id='siteNotice']
6strip: //div[@id='content']//table[last()]
7prune: no
8test_url: http://wiki.guildwars2.com/wiki/Guardian \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wikihow.com.txt b/inc/3rdparty/site_config/standard/wikihow.com.txt
deleted file mode 100755
index fe95d3f9..00000000
--- a/inc/3rdparty/site_config/standard/wikihow.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1# ...&printable=yes
2body: //div[@id='bodycontents']
3prune: no
4tidy: no
5strip_id_or_class: gatEditSection
6strip_id_or_class: relatedwikihows
7#strip: //div[contains(@class, 'step_num')]
8
9replace_string(<script ): <div style="display: none"
10replace_string(</script>): </div>
11
12single_page_link: //a[@id='gatPrintView']
13single_page_link: concat(//link[@rel='canonical']/@href, '?printable=yes')
14
15test_url: http://www.wikihow.com/Start-Your-Own-Country \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wikitravel.org.txt b/inc/3rdparty/site_config/standard/wikitravel.org.txt
deleted file mode 100755
index 1f32a372..00000000
--- a/inc/3rdparty/site_config/standard/wikitravel.org.txt
+++ /dev/null
@@ -1,14 +0,0 @@
1# copied from .wikipedia.org.txt
2title: //h1[@id='firstHeading' or @class='firstHeading']
3body: //div[@id = 'bodyContent']
4strip_id_or_class: editsection
5#strip_id_or_class: toc
6strip_id_or_class: vertical-navbox
7strip: //table[@id='toc'] | //div[@id='p-toc']
8strip: //div[@id='catlinks' or @id='contentSub']
9strip: //div[@id='jump-to-nav']
10strip: //div[@class='thumbcaption']//div[@class='magnify']
11strip: //table[@class='navbox']
12prune: no
13tidy: no
14test_url: http://wikitravel.org/wiki/en/index.php?title=Bangkok&printable=yes \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/will-self.com.txt b/inc/3rdparty/site_config/standard/will-self.com.txt
deleted file mode 100755
index 394f9ca4..00000000
--- a/inc/3rdparty/site_config/standard/will-self.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1strip: //div[@class="widget-area"]
2title: //*[@class="entry-title"]
3date: //time[@class="entry-date"]
4test_url: http://will-self.com/2012/02/01/real-meals-dominos-pizza/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/williampfaff.com.txt b/inc/3rdparty/site_config/standard/williampfaff.com.txt
deleted file mode 100755
index cefabec0..00000000
--- a/inc/3rdparty/site_config/standard/williampfaff.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: substring-after(//span[@class='itemTitle'], ':')
2body: //div[@id='content']
3test_url: http://www.williampfaff.com/modules/news/article.php?storyid=491 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/winfuture.de.txt b/inc/3rdparty/site_config/standard/winfuture.de.txt
deleted file mode 100755
index dddc6f9e..00000000
--- a/inc/3rdparty/site_config/standard/winfuture.de.txt
+++ /dev/null
@@ -1,12 +0,0 @@
1title: //h1/span
2
3body: //div[@id="news_content"]
4
5author: //div[@class="bookmarks_btm"]/p[1]/a[1]/text()
6
7date: //span[@class='date']
8
9# Rubrikenbild entfernen
10strip: //div[@id="news_content"]/a[1]
11
12test_url: http://winfuture.de/news,69672.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/winrumors.com.txt b/inc/3rdparty/site_config/standard/winrumors.com.txt
deleted file mode 100755
index f25f9c9e..00000000
--- a/inc/3rdparty/site_config/standard/winrumors.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h1[@class='page-heading']
2author: //small/strong/a
3#their date string is relative, so if you save the page 2 hours after it is posted it may say 'two hours ago, instead of providing a useful date/time'
4date: substring-before(substring-after(//small,'on'),'with')
5body: //div[@class='entry']
6test_url: http://www.winrumors.com/chinese-windows-phone-launch-still-on-track-for-early-2012/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/winsupersite.com.txt b/inc/3rdparty/site_config/standard/winsupersite.com.txt
deleted file mode 100755
index f725b67a..00000000
--- a/inc/3rdparty/site_config/standard/winsupersite.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1date: //*[@class='kicker']
2body: //*[@class='KonaBody']
3test_url: http://www.winsupersite.com/article/paul-thurrotts-wininfo/android-malware-surges-separate-studies-141364 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wired.com.txt b/inc/3rdparty/site_config/standard/wired.com.txt
deleted file mode 100755
index f5a72d14..00000000
--- a/inc/3rdparty/site_config/standard/wired.com.txt
+++ /dev/null
@@ -1,25 +0,0 @@
1title: //meta[@name='Title']/@content
2author: //meta[@name='Author']/@content
3date: //meta[@name='DisplayDate']/@content
4body: //div[@class='entry']
5strip: //p[contains(., 'Pages:') and contains(., 'View All')]
6strip: //p[@class='caption']
7strip: //div[@class='desc' or @class='slide' or @id='slide-info']
8
9strip_id_or_class: pullquote
10strip_id_or_class: left_rail
11strip_id_or_class: related-container
12strip_id_or_class: radvert-caption-wrap
13
14# Remove gallery?
15strip_id_or_class: wpgallery
16
17#strip: //text()[contains(., 'nextpage')]
18
19prune: no
20
21single_page_link: //a[.='View All' and contains(@href, '/all/')]
22
23test_url: http://www.wired.com/cloudline/2011/10/meet-arms-cortex-a15-the-future-of-the-ipad-and-possibly-the-macbook-air/
24test_url: http://www.wired.com/wiredenterprise/2013/09/docker/
25test_url: http://www.wired.com/threatlevel/2012/05/ff_counterfeiter/all/
diff --git a/inc/3rdparty/site_config/standard/wmnf.org.txt b/inc/3rdparty/site_config/standard/wmnf.org.txt
deleted file mode 100755
index 1d403a91..00000000
--- a/inc/3rdparty/site_config/standard/wmnf.org.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1title: //div[@class="bodyText"]/h1/text()
2body: //div[@class="bodyText"]
3
4# author and date are separated by only a newline
5# can't figure out how to tokenize that yet
6author: //div[@class="bodyText"]/span[@class="info"]/text()
7date: //div[@class="bodyText"]/span[@class="info"]/text()
8
9# strip metdata from body text
10strip: //div[@class="bodyText"]/h1/text()
11strip: //div[@class="bodyText"]/span[@class="info"]
12strip: //div[@class="bodyText"]/span[@class="info"]
13test_url: http://www.wmnf.org/news_stories/light-rail-advocates-join-forces-to-combat-opposition-in-pinellas \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wmpoweruser.com.txt b/inc/3rdparty/site_config/standard/wmpoweruser.com.txt
deleted file mode 100755
index 70168fbe..00000000
--- a/inc/3rdparty/site_config/standard/wmpoweruser.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1date://*[@class="entry-date"]
2author://*[@class="author vcard"]
3strip://*[@style="position:relative;left:72px;top:2px;"]|//*[@id="authorbox"]
4test_url: http://wmpoweruser.com/breaking-nokia-announces-nfc-support-in-lumia-610-windows-phone-device/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wn.de.txt b/inc/3rdparty/site_config/standard/wn.de.txt
deleted file mode 100755
index ef18c8a5..00000000
--- a/inc/3rdparty/site_config/standard/wn.de.txt
+++ /dev/null
@@ -1,18 +0,0 @@
1author: //div[@id='main']//div[@class='col right']//div[contains(@class, 'attribute-author')]
2body: //div[@id='main']//div[@class='col right']
3strip_id_or_class: boxes
4strip_id_or_class: lazy
5strip_id_or_class: comment_box
6strip_id_or_class: fb_comments
7
8find_string: <noscript>
9replace_string: <div>
10find_string: </noscript>
11replace_string: </div>
12
13prune: no
14tidy: no
15
16test_url: http://www.wn.de/Muenster/Kultur/1742956-Wilm-Weppelmann-verlaesst-die-Einsiedelei-Und-dann-ab-unter-die-Dusche
17# feed
18test_url: http://www.wn.de/rss/feed/wn_muenster \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wordyard.com.txt b/inc/3rdparty/site_config/standard/wordyard.com.txt
deleted file mode 100644
index d8c753da..00000000
--- a/inc/3rdparty/site_config/standard/wordyard.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1# Generated by FiveFilters.org's web-based selection tool
2# Place this file inside your site_config/custom/ folder
3# Source: http://siteconfig.fivefilters.org/grab.php?url=http%3A%2F%2Fwww.wordyard.com%2F2014%2F09%2F26%2Fremove-blindfold-before-embarking-to-utopia%2F
4
5body: //div[contains(concat(' ',normalize-space(@class),' '),' entry-content ')]
6strip_id_or_class: robots-nocontent
7strip_id_or_class: post-revisions
8test_url: http://www.wordyard.com/2014/09/26/remove-blindfold-before-embarking-to-utopia/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/worldpoultry.net.txt b/inc/3rdparty/site_config/standard/worldpoultry.net.txt
deleted file mode 100755
index b88f9279..00000000
--- a/inc/3rdparty/site_config/standard/worldpoultry.net.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title: //div[@class="content article"]/h1
2date: substring-after(//*[@class='date'], '//')
3body: //*[@class='article-content']
4strip: //*[@id='nomodal']
5test_url: http://www.worldpoultry.net/news/kyrgyzstan-restricts-poultry-imports-from-russia-and-kazakhstan-9332.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/worldwidewords.org.txt b/inc/3rdparty/site_config/standard/worldwidewords.org.txt
deleted file mode 100755
index 4682e0d3..00000000
--- a/inc/3rdparty/site_config/standard/worldwidewords.org.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //p[@id='content']
2
3body: //div[@class='contentblock']
4test_url: http://www.worldwidewords.org/weirdwords/ww-gro1.htm \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wow.joystiq.com.txt b/inc/3rdparty/site_config/standard/wow.joystiq.com.txt
deleted file mode 100755
index 44add9c9..00000000
--- a/inc/3rdparty/site_config/standard/wow.joystiq.com.txt
+++ /dev/null
@@ -1,6 +0,0 @@
1title: //h2[@class="posttitle"]
2body: //div[@class="post"]
3strip: //h2[@class="posttitle"]
4strip: //p[@class="filed-under"]
5convert_double_br_tags: yes
6test_url: http://wow.joystiq.com/2011/06/20/the-overachiever-guide-to-midsummer-festival-2011-achievements/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wpmayor.com.txt b/inc/3rdparty/site_config/standard/wpmayor.com.txt
deleted file mode 100755
index bb4fffc7..00000000
--- a/inc/3rdparty/site_config/standard/wpmayor.com.txt
+++ /dev/null
@@ -1,8 +0,0 @@
1body: //div[@id='nrelate_flyout_placeholder']
2
3strip_id_or_class: share
4
5prune: no
6
7test_url: http://www.wpmayor.com/themes/wordpress-portfolio-resume-themes/
8test_url: http://www.wpmayor.com/feed/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wtatennis.com.txt b/inc/3rdparty/site_config/standard/wtatennis.com.txt
deleted file mode 100755
index 1000ab26..00000000
--- a/inc/3rdparty/site_config/standard/wtatennis.com.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[contains(@class, 'header-2')]
2body: //article//*[contains(@class, 'teaserText') or contains(@class, 'lastUpdated') or contains(@class, 'image') or contains(@class, 'body')]
3strip_id_or_class: articleIndex
4prune: no
5
6test_url: http://www.wtatennis.com/news/article/3190914
7test_url: http://www.wtatennis.com/news/article/3190244 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/www1.folha.uol.com.br.txt b/inc/3rdparty/site_config/standard/www1.folha.uol.com.br.txt
deleted file mode 100755
index 97a5c19d..00000000
--- a/inc/3rdparty/site_config/standard/www1.folha.uol.com.br.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1body://div[@id='articleNew']
2strip://div[@id='articleBy']
3strip://div[@id='articleDate']
4strip://td[@class='articleGraphicCredit']
5strip://h1
6strip://div[@id='articleEnd']
7strip://p[@class='tagline']
8strip://div[@class='openBox adslibraryArticle']
9strip_id_or_class:ad-180x150-1
10
11
12title: //div[@id="articleNew"]/h1
13author: //div[@id="articleBy"]/p/b
14date: substring-before(//div[@id="articleDate"], "-")
15test_url: http://www1.folha.uol.com.br/mundo/1115805-ex-ditador-argentino-videla-e-condenado-a-50-anos-de-prisao.shtml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/www3.imperial.ac.uk.txt b/inc/3rdparty/site_config/standard/www3.imperial.ac.uk.txt
deleted file mode 100755
index 71306af2..00000000
--- a/inc/3rdparty/site_config/standard/www3.imperial.ac.uk.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1strip_id_or_class: hidelabel
2test_url: http://www3.imperial.ac.uk/newsandeventspggrp/imperialcollege/newssummary/news_14-7-2010-15-53-18 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wyborcza.pl.txt b/inc/3rdparty/site_config/standard/wyborcza.pl.txt
deleted file mode 100755
index 638583dc..00000000
--- a/inc/3rdparty/site_config/standard/wyborcza.pl.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1body: //div[@id='article']
2strip: //div[@class='head']
3
4strip_id_or_class: txt_upl
5
6single_page_link: //div[@id='gazeta_article_tools']//a[contains(@class, 'print')]
7
8test_url: http://wyborcza.pl/1,123455,11536088,Gdy_peknie_fejs__obryzga_wszystko.html?as=1&startsz=x
9test_url: http://wyborcza.pl/1,75478,14880255,Biskup_Dydycz_o_pedofilii_i_tajemnicy_spowiedzi__Zamiast.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wyctim.com.txt b/inc/3rdparty/site_config/standard/wyctim.com.txt
deleted file mode 100755
index bd7ecf2a..00000000
--- a/inc/3rdparty/site_config/standard/wyctim.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1body: //div[@class='article-body']
2title: //h1
3test_url: http://wyctim.com/icloud-sync-regebbi-rendszereken/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/wz-newsline.de.txt b/inc/3rdparty/site_config/standard/wz-newsline.de.txt
deleted file mode 100755
index 5b2be744..00000000
--- a/inc/3rdparty/site_config/standard/wz-newsline.de.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title://h1
2
3date://p[@class='articleDate']
4body://div[@class='articleBody wzStandardArticle']
5test_url: http://www.wz-newsline.de/home/sport/tennis/federer-zum-vierten-mal-sieger-in-indian-wells-1.938050 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/xfgjls.com.txt b/inc/3rdparty/site_config/standard/xfgjls.com.txt
deleted file mode 100755
index 2dc247a0..00000000
--- a/inc/3rdparty/site_config/standard/xfgjls.com.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1# This filter is tested on:
2# http://www.xfgjls.com/magazine/html/?131.html
3# http://www.xfgjls.com/magazine/html/?170.html
4
5body://h3/following-sibling::div
6title: //h3
7date: substring-before(//h3/following-sibling::div/p, ' ')
8author: substring-before(substring-after(//h3/following-sibling::div/p, '作者:'), '来源')
9wrap_in(strong)://span[contains(@style, "FONT-WEIGHT: bold")]
10dissolve://span[@style="FONT-FAMILY: '宋体'; FONT-SIZE: 10.5pt; FONT-WEIGHT: bold; mso-spacerun: 'yes'"]
11test_url: http://www.xfgjls.com/magazine/html/?170.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/xoeb.us.txt b/inc/3rdparty/site_config/standard/xoeb.us.txt
deleted file mode 100755
index c09fa4df..00000000
--- a/inc/3rdparty/site_config/standard/xoeb.us.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1title: //h1[@class="entry-title"]
2author: //span[@class="fn"]
3date: //p[@class="meta"]
4test_url: http://xoeb.us/blog/2012/03/16/my-mistakes-with-our-first-release/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/yated.com.txt b/inc/3rdparty/site_config/standard/yated.com.txt
deleted file mode 100755
index 13a3ea64..00000000
--- a/inc/3rdparty/site_config/standard/yated.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1title: //div[@class='pagetitle']
2test_url: http://www.yated.com/content.asp?categoryid=7&contentid=582 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/ynet.co.il.txt b/inc/3rdparty/site_config/standard/ynet.co.il.txt
deleted file mode 100755
index aa86566a..00000000
--- a/inc/3rdparty/site_config/standard/ynet.co.il.txt
+++ /dev/null
@@ -1,26 +0,0 @@
1body: //span[@id='article_content' or @class='text16g']
2
3# ads
4strip: //div[.//div[contains(@id, 'ads.')]]
5# related content heading
6strip: //p[contains(., 'עוד בערוץ החדשות של ynet:')]
7strip: //p[contains(., 'כותרות אחרונות מהעולם בחדשות ynet:')]
8strip: //div[contains(., 'אינציקלופדיית ynet:')]
9# related content links
10strip: //a[@class='bluelink']
11# strip image bullets
12strip_image_src: ynet_manual_bullet.png
13
14prune: no
15tidy: no
16
17# prevent JS issues
18find_string: <script type='text/javascript'>
19replace_string: <div style="display:none;">
20find_string: </script>
21replace_string: </div>
22
23test_url: http://www.ynet.co.il/articles/0,7340,L-4354266,00.html
24test_url: http://www.ynet.co.il/articles/0,7340,L-4354268,00.html
25#feed
26test_url: http://www.ynet.co.il/Integration/StoryRss2.xml \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/yostivanich.com.txt b/inc/3rdparty/site_config/standard/yostivanich.com.txt
deleted file mode 100755
index 2aeb7e05..00000000
--- a/inc/3rdparty/site_config/standard/yostivanich.com.txt
+++ /dev/null
@@ -1,5 +0,0 @@
1title://div[@class='entry-title']
2body://div[@class='entry-content']
3strip_comments:yes
4convert_double_br_tags:yes
5test_url: http://www.yostivanich.com/2010/07/11/wired-com-with-world-watching-wikileaks-falls-into-disrepair/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/yourerie.com.txt b/inc/3rdparty/site_config/standard/yourerie.com.txt
deleted file mode 100755
index b46b09e8..00000000
--- a/inc/3rdparty/site_config/standard/yourerie.com.txt
+++ /dev/null
@@ -1,2 +0,0 @@
1body: //div[@class="nxFullTextData"]
2test_url: http://yourerie.com/fulltext?nxd_id=306552
diff --git a/inc/3rdparty/site_config/standard/youtube.com.txt b/inc/3rdparty/site_config/standard/youtube.com.txt
deleted file mode 100755
index b0d95f1f..00000000
--- a/inc/3rdparty/site_config/standard/youtube.com.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1title: //title
2body: //iframe
3
4find_string: <html>&lt;iframe
5replace_string: <iframe id="video"
6
7find_string: &gt;&lt;/iframe&gt;</html>
8replace_string: ></iframe>
9
10single_page_link: //link[@type='text/xml+oembed']
11
12prune: no
13tidy: no
14
15test_url: http://www.youtube.com/watch?v=F6gLH0r3iVU \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zcommunications.org.txt b/inc/3rdparty/site_config/standard/zcommunications.org.txt
deleted file mode 100755
index 4deb49bf..00000000
--- a/inc/3rdparty/site_config/standard/zcommunications.org.txt
+++ /dev/null
@@ -1,7 +0,0 @@
1title: //h1[@id='view_title']
2author: //div[contains(@class, 'content_authors')]//a
3body: //div[@id='view_body']
4
5prune: no
6
7test_url: http://www.zcommunications.org/orwellian-language-update-by-edward-s-herman.html \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zdnet.com.txt b/inc/3rdparty/site_config/standard/zdnet.com.txt
deleted file mode 100755
index 939fb0e3..00000000
--- a/inc/3rdparty/site_config/standard/zdnet.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1title: //h1[@class="h s-1"]
2author: substring-before(substring-after(//p[@class="meta s-10"], 'By'), '|')
3author: substring-after(//div[@class="bio"]//h3, 'About ')
4date: substring-after(//p[@class="meta s-10"], '|')
5date: substring-after(//p[@class="meta"], '|')
6body: //div[@class="content-1 entry space-1 clear"]
7body: //div[@class="storyBody"]
8
9test_url: http://www.zdnet.com/blog/microsoft/the-bing-back-end-more-on-cosmos-tiger-and-scope/10920
10test_url: http://www.zdnet.com/researchers-find-web-tracking-up-privacy-down-7000000358/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zeit.de.txt b/inc/3rdparty/site_config/standard/zeit.de.txt
deleted file mode 100755
index 9815d478..00000000
--- a/inc/3rdparty/site_config/standard/zeit.de.txt
+++ /dev/null
@@ -1,45 +0,0 @@
1# 2013.10.30 [rezor92] fixed single_page_link
2# 2012-12-23 [carlo@...] fixed half-assed headlines in articles, removed inline author profiles, adjusted picture captions
3# 2012-03-17 [dkless@...] Cut metadata parts in the beginning and the ends of the content block; copyright entries for pictures removed; Author fixed, not sure if old entries still valid (I left them); Weird problems with some pages addressed (see last section for removing hidden section)
4# 2011-12-09 [carlo@...] Removed "related articles" block
5# 2011-08-23 [carlo@...] changed single page link to use print version: page works better, less ambiguity. Related cleanups and simplifications.
6# 2011-08-20 [carlo@...] added author, fixed date
7
8
9single_page_link: //a[@title='Auf einer Seite']
10tidy: no
11
12title: //title
13date: substring-before( //li[@class="date"], " " )
14author: //li[@class="author"]/a/text() | //li[@class="author first"]/a/text()
15author: substring-after(//li[@class='source first '], 'Quelle: ')
16
17strip_id_or_class: articleheader
18strip: //div[@id="comments"] | //div[@class="pagination block"] | //p[@class="ressortbacklink"] | //div[@id="relatedArticles"] | // div[@class="inline portrait"]
19
20#Removes author and date from the start
21strip: //ul[@class="tools"]
22#Removes copyright statement - often disturb as first line of the news
23strip: //p[@class="copyright"]
24strip: //div[@class="copyright"]
25#Removes pagination links at the end
26strip: //div[@class="pagination"]
27
28# Fix picture captions
29wrap_in(small): //p[@class="caption"]/text()
30
31# Fix sub-headlines
32wrap_in(h2): //p/strong
33dissolve: //h2/strong
34
35#Sometimes things are embedded in the print version that are not displayed on the web, but will be displayed in the mobilized versions and lead even to problems. These sections are removed here.
36strip_id_or_class:"informatives"
37strip_id_or_class:"bottom"
38strip_id_or_class:"teasermosaic"
39strip_id_or_class:"comments"
40strip_id_or_class:"articlefooter af"
41strip_id_or_class:"relateds"
42strip_id_or_class:"pagination"
43
44footnotes: no
45test_url: http://www.zeit.de/kultur/film/2012-12/Kurzfilmtag
diff --git a/inc/3rdparty/site_config/standard/zerodistraction.com.txt b/inc/3rdparty/site_config/standard/zerodistraction.com.txt
deleted file mode 100644
index d3b60c7d..00000000
--- a/inc/3rdparty/site_config/standard/zerodistraction.com.txt
+++ /dev/null
@@ -1,4 +0,0 @@
1author: //span[@class='author']//a
2date: //span[@class='date']
3test_url: http://zerodistraction.com/blog/2012/3/11/retina-ipad-that-means-i-am-going-digital-only-for-comic-boo.html
4test_url: http://zerodistraction.com/notes/unreasonably-grumpy \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zerohedge.com.txt b/inc/3rdparty/site_config/standard/zerohedge.com.txt
deleted file mode 100755
index 7e76aee5..00000000
--- a/inc/3rdparty/site_config/standard/zerohedge.com.txt
+++ /dev/null
@@ -1,10 +0,0 @@
1author: //span[@class='submitted']/a
2strip: //div[@class='clear-block clr']
3strip: //div[@class='picture']
4strip: //span[@class='submitted']
5strip: //div[@class='breadcrumb']
6strip: //div[@class='fivestar-static-form-item']
7strip: //div[@class='js-links']
8strip: //div[@class='links clear-block clear']
9strip: //div[@class='block block-block']
10test_url: http://www.zerohedge.com/news/bernankes-columbus-voyage-end-monetary-policy-world \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zerokspot.com.txt b/inc/3rdparty/site_config/standard/zerokspot.com.txt
deleted file mode 100755
index afa964db..00000000
--- a/inc/3rdparty/site_config/standard/zerokspot.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: //h1
2body: //div[@id="primarycontent"]
3test_url: http://zerokspot.com/weblog/2011/06/26/europython2011/ \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zhihu.com.txt b/inc/3rdparty/site_config/standard/zhihu.com.txt
deleted file mode 100755
index 3c9d8c1a..00000000
--- a/inc/3rdparty/site_config/standard/zhihu.com.txt
+++ /dev/null
@@ -1,19 +0,0 @@
1# This filter is tested on:
2# http://www.zhihu.com/question/19587406
3# http://www.zhihu.com/question/20649035
4# http://www.zhihu.com/question/20637942
5
6author: //h3[@class='zm-item-answer-author-wrap']
7title://h2[@class='zm-item-title']
8date://a[@class='answer-date-link meta-item']
9convert_double_br_tags: yes
10
11wrap_in(blockquote)://div[@class='zm-editable-content']
12wrap_in(blockquote)://sup/text()
13dissolve://sup
14
15strip://div[@class='zh-answers-title']
16strip:///div[@class='zm-item-vote-info ']
17strip://div[@class='zm-item-answer-author-info']
18strip://div[@class='zu-blue-info-board zg-r3px']
19test_url: http://www.zhihu.com/question/20637942 \ No newline at end of file
diff --git a/inc/3rdparty/site_config/standard/zingtrain.com.txt b/inc/3rdparty/site_config/standard/zingtrain.com.txt
deleted file mode 100755
index 188d4dd6..00000000
--- a/inc/3rdparty/site_config/standard/zingtrain.com.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1title: substring-after(id, 'post')/h2
2body://div[@class = 'entry']
3test_url: http://www.zingtrain.com/category/ontrack/january-2007/ \ No newline at end of file
diff --git a/inc/poche/Tools.class.php b/inc/poche/Tools.class.php
index 7ccfc069..d625fc40 100755
--- a/inc/poche/Tools.class.php
+++ b/inc/poche/Tools.class.php
@@ -345,7 +345,7 @@ final class Tools
345 // Silence $scope function to avoid 345 // Silence $scope function to avoid
346 // issues with FTRSS when error_reporting is to high 346 // issues with FTRSS when error_reporting is to high
347 // FTRSS generates PHP warnings which break output 347 // FTRSS generates PHP warnings which break output
348 $json = @$scope("inc/3rdparty/makefulltextfeed.php", array("url" => $url)); 348 $json = @$scope("vendor/wallabag/Fivefilters_Libraries/makefulltextfeed.php", array("url" => $url));
349 349
350 // Clearing and restoring context 350 // Clearing and restoring context
351 foreach ($GLOBALS as $key => $value) { 351 foreach ($GLOBALS as $key => $value) {
diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php
index 95bf8ef1..ff7ebf64 100755
--- a/inc/poche/global.inc.php
+++ b/inc/poche/global.inc.php
@@ -14,22 +14,18 @@ define('INCLUDES', dirname(__FILE__) . '/..');
14# the poche root directory 14# the poche root directory
15define('ROOT', INCLUDES . '/..'); 15define('ROOT', INCLUDES . '/..');
16 16
17require_once ROOT . '/vendor/autoload.php';
17require_once INCLUDES . '/poche/Tools.class.php'; 18require_once INCLUDES . '/poche/Tools.class.php';
18require_once INCLUDES . '/poche/User.class.php'; 19require_once INCLUDES . '/poche/User.class.php';
19require_once INCLUDES . '/poche/Url.class.php'; 20require_once INCLUDES . '/poche/Url.class.php';
20require_once ROOT . '/vendor/autoload.php';
21require_once INCLUDES . '/poche/Template.class.php'; 21require_once INCLUDES . '/poche/Template.class.php';
22require_once INCLUDES . '/poche/Language.class.php'; 22require_once INCLUDES . '/poche/Language.class.php';
23require_once INCLUDES . '/poche/Routing.class.php'; 23require_once INCLUDES . '/poche/Routing.class.php';
24require_once INCLUDES . '/poche/WallabagEBooks.class.php'; 24require_once INCLUDES . '/poche/WallabagEBooks.class.php';
25require_once INCLUDES . '/poche/Poche.class.php'; 25require_once INCLUDES . '/poche/Poche.class.php';
26
27require_once INCLUDES . '/poche/Database.class.php'; 26require_once INCLUDES . '/poche/Database.class.php';
28require_once INCLUDES . '/poche/FlattrItem.class.php'; 27require_once INCLUDES . '/poche/FlattrItem.class.php';
29 28
30require_once INCLUDES . '/3rdparty/libraries/feedwriter/FeedItem.php';
31require_once INCLUDES . '/3rdparty/libraries/feedwriter/FeedWriter.php';
32
33# system configuration; database credentials et caetera 29# system configuration; database credentials et caetera
34require_once INCLUDES . '/poche/config.inc.php'; 30require_once INCLUDES . '/poche/config.inc.php';
35require_once INCLUDES . '/poche/config.inc.default.php'; 31require_once INCLUDES . '/poche/config.inc.default.php';
@@ -44,4 +40,4 @@ if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timez
44 40
45if (defined('ERROR_REPORTING')) { 41if (defined('ERROR_REPORTING')) {
46 error_reporting(ERROR_REPORTING); 42 error_reporting(ERROR_REPORTING);
47} 43} \ No newline at end of file