#!/bin/sh

iterate()
{
	"$@" GX - bin/opera@@{SUFFIX}
	if ! $repackage
	then
		"$@" GX - bin/uninstall-opera@@{SUFFIX}
	fi
	"$@" NF 124438dd2af678bdf761abf734bafb04 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF 476e6aaf7333b5550d5564755de4077c lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF faf022627b4e152b692b5f2eddd94a1c lib/opera@@{SUFFIX}/liboperagtk2.so
	"$@" NF be1e3a7fed0eb523b9b93ba2440cffb7 lib/opera@@{SUFFIX}/liboperagtk3.so
	"$@" NF c22333483a21c165c59bc1f4b68a76b7 lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX edc42c327dc09ef7275812e6259b77c2 lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NF 0a8389b127c477aa2c55ee5d234473ca lib/opera@@{SUFFIX}/plugins/README
	"$@" NX 68a3ae019efd516ed92fd1b5e48d4ae2 lib/opera@@{SUFFIX}/pluginwrapper/operapluginwrapper
	"$@" NX 1dd6ad3b88733d53abd345099ff1b054 lib/opera@@{SUFFIX}/pluginwrapper/operapluginwrapper-ia32-linux
	"$@" NX a8d8878ebcbeb0a263403090c4a005a1 lib/opera@@{SUFFIX}/pluginwrapper/operapluginwrapper-native
	"$@" PF 45b63b062396a549264d4774a84d8c58 share/applications/opera@@{SUFFIX}-browser.desktop
	"$@" NF 3214f080875748938ba060314b4f727d share/doc/opera@@{SUFFIX}/LGPL-2
	"$@" NF 6a6a8e020838b23406c81b19c1d46df6 share/doc/opera@@{SUFFIX}/LGPL-3
	"$@" NF c65fcbc55239fd1df14305d61f52b446 share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF c9996f43d681b457f038bfc8efeef28a share/doc/opera@@{SUFFIX}/README.gstreamer
	"$@" NF de63aa261020ad76060639c389ed5347 share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 272f6ee8bbad4dc7029d81286ca4763e share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF c55ae8742265ca2b40dac3ed40303a7f share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 87c5739d23920500c0815c88fcee8fb1 share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 4d53865bfb951a749fee62a5035128dc share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-browser.png
	"$@" NF b1aadfffe1a2a4cbc0769505f130f462 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 77084cec1838decd600f7b92495858b5 share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 70c1f737385a88bd616654ef23a187cc share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF d8eb8fe06b7ba0c101a0278019deee7b share/icons/hicolor/256x256/apps/opera@@{SUFFIX}-browser.png
	"$@" NF a3a1464a00ff085f94407307a0add221 share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 852841f582f95cabb04992397fcc97ce share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 0309b637a3a808f2a127e343166814b5 share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 6b94ab4c0f32141dc889207cf3454c43 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF fe9c0b034eb8961565ee0c19efecc2cd share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-extension.svg
	"$@" PF a05b6377f4708a4b1218aebfdb751680 share/man/man1/opera@@{SUFFIX}.1.gz
	"$@" PF a960b3c9c3fabecd6805a4b954d893e1 share/mime/packages/opera@@{SUFFIX}-extension.xml
	"$@" NF bb6bcd80ee65ca390375a33e9fdb798b share/opera@@{SUFFIX}/defaults/bookmarks.adr
	"$@" NF 8c82c67376cf11535d0be347051e0600 share/opera@@{SUFFIX}/defaults/dictionaries.xml
	"$@" NF be5b3d761bb4aae49722002eb95d0c89 share/opera@@{SUFFIX}/defaults/feedreaders.ini
	"$@" NF cd2c7135a4f91af45892a366bb5274c8 share/opera@@{SUFFIX}/defaults/filehandler.ini
	"$@" NF 11e6ad8a16f9782144a2c4894a4960d3 share/opera@@{SUFFIX}/defaults/handlers-ignore.ini
	"$@" LL ../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF cb562b33048bc211df8434af54056bcc share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF 0fdbbea86cf8d337071056e5403c9333 share/opera@@{SUFFIX}/defaults/pluginpath.ini
	"$@" NF de4b72b233e5794aecc83753a853827b share/opera@@{SUFFIX}/defaults/public_domains.dat
	"$@" NF 86ff26ae9e0a728af4df1e0d7d284304 share/opera@@{SUFFIX}/defaults/search.ini
	"$@" NF 6634058c2f4467e55d1f4370bf4bea02 share/opera@@{SUFFIX}/defaults/standard_speeddial.ini
	"$@" NF a0f37c343f2dff930c6bcb5fcc0738e3 share/opera@@{SUFFIX}/defaults/standard_trusted_repositories.ini
	"$@" NF bd9d8babf17fab74b6ac921034e0c9fe share/opera@@{SUFFIX}/defaults/tips_metadata.ini
	"$@" NF 2ebcfaea7b12329317908592c5c372aa share/opera@@{SUFFIX}/defaults/webmailproviders.ini
	"$@" NF 5978ba5d3fa29bb0f5b210cc8aad57e1 share/opera@@{SUFFIX}/defaults/xmlentities.ini
	"$@" NF 136d9e4fd817aa5def373b1062bffbe6 share/opera@@{SUFFIX}/encoding.bin
	"$@" NF 54f1497ac9cc9ffa04d52213be260559 share/opera@@{SUFFIX}/extra/missingplugin.svg
	"$@" NF 17700f8a405a78dc1afdf69679a3f85b share/opera@@{SUFFIX}/extra/missingpluginhover.svg
	"$@" NF 0547d144b3de633887a8657de0ee1779 share/opera@@{SUFFIX}/extra/svg-mo.dat
	"$@" NF 6ee58550670e206dc93e1b31a7da2c9f share/opera@@{SUFFIX}/extra/svg-mobd.dat
	"$@" NF 0ab7eca84c071dac25dafd3b4569d80f share/opera@@{SUFFIX}/extra/svg-sa.dat
	"$@" NF 23059c42a43dceded9122d8834aa43fe share/opera@@{SUFFIX}/extra/svg-sabd.dat
	"$@" NF f3747a59108df781e04305b1bee29574 share/opera@@{SUFFIX}/extra/svg-se.dat
	"$@" NF bcdb530c010ed72fe6096d46366c57f5 share/opera@@{SUFFIX}/extra/svg-sebd.dat
	"$@" NF 2f92520f80149b5ff2d7a694a1a4b68d share/opera@@{SUFFIX}/extra/unix-opengl.blocklist.json
	"$@" NF 53193c1c18a98d252bbf2517deeda082 share/opera@@{SUFFIX}/files.sig
	"$@" NF 07691ad17c3fd15036b85c5fa416f34d share/opera@@{SUFFIX}/files_old.sig
	"$@" NF 7a2db2de5211ab16a6712e4168d17ec7 share/opera@@{SUFFIX}/html40_entities.dtd
	"$@" NF 4cca21dc97bda85b46ea16a0a83a9304 share/opera@@{SUFFIX}/html5_entity_init.dat
	"$@" NF 63827d48e764482a3dcfd678924f6fce share/opera@@{SUFFIX}/lngcode.txt
	"$@" NF 044fdac1d761d938c0db44087c7041fa share/opera@@{SUFFIX}/locale/af/af.lng
	"$@" NF 03ffe10334dd2a5c2a9255c001dd5126 share/opera@@{SUFFIX}/locale/ar/ar.lng
	"$@" NF 44cab60594dddce899902da4fe7f0976 share/opera@@{SUFFIX}/locale/az/az.lng
	"$@" NF 852db1591832c91fbea11467bd9a9ae3 share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF faddf7e6790384651f1694d14434b449 share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 1600c0228e793c9b60b6209446994672 share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 20fa1eb6b5e88f42ead44c7019f735dc share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF d54d6144f0814263e7e204afed1d8150 share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF 13c63b5f59f3e7aa2473d391057ea3d9 share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF a58fc746c7d35a6e8cf5498ea20097cd share/opera@@{SUFFIX}/locale/bg/search.ini
	"$@" NF f76a42ab19f9d5725ce4530f11cc76cc share/opera@@{SUFFIX}/locale/bg/standard_speeddial.ini
	"$@" NF 1ebfcfdb8246b63d8c14c1e70d288ddf share/opera@@{SUFFIX}/locale/bn/bn.lng
	"$@" NF 26bbdb72b403145887bcc3ff90125bf0 share/opera@@{SUFFIX}/locale/cs/bookmarks.adr
	"$@" NF f8a66df9d6aa629e88cfd92ebcb7748d share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF d92343140a8f78a231edba8ff9c0b659 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF bca9ddf506f0af7ab5e945a8fc1a0478 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF c3a36b46c17338cd5a16912ac9c12e7c share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF b5a1c6254cce97368ee6c671a681b25d share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF a9540a69760099359612eab5fbab80ed share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF e491f213b8cb30517e1b0eed53c47a5a share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF 71c575c281d7ac669e736a1b4b3430ba share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF 65e182d819fdf2df38733b6281560508 share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF b9c3d82fa18dae746595642a5d0814d7 share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF 649ce13f589eb3354f3575c192173277 share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF be174bb10701debb3b0127c0ee595975 share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF cb88c39d76d0ec5cefddcd12dc7b26ef share/opera@@{SUFFIX}/locale/es-ES/bookmarks.adr
	"$@" NF 9269b212a289a734d39135df15be8e5b share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 04505fcebfb9a51708b6b6628cd3a09a share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF 1c991a47c2fb0a7822b454ed318d56f4 share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF 75afb729bd72fbba4bb522c863b8dd41 share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF bb42a49db0971e698a67bf0bf81be1a8 share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF 2eb322a3b0ca299fb09068a06d876802 share/opera@@{SUFFIX}/locale/fa/fa.lng
	"$@" NF b16e5176dc5d8c51438eba7075f1ceb0 share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF 26683ae69147d548e40bdd7b4d90b92d share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF 02cf7c8e7e5efc15034d6094a7ac31d9 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF fd61100242b7fbe762a347822b7b4007 share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF b65b5b16aeef58723bac36e799d5a327 share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF f00308dc1c3420a74091ccfb8706e5c0 share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF b50fc1f87070750a4c645060e0cfb768 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF c32f4da2e45d09bd5dd6d93c918a6ab7 share/opera@@{SUFFIX}/locale/gd/gd.lng
	"$@" NF 7138686e2fa6b47b9cb387bc6726320e share/opera@@{SUFFIX}/locale/he/he.lng
	"$@" NF 18fe4abab62349a66d100918739d02b0 share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF 702ed1633aa362f9b778406c8281eea3 share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF a294d2fbf27fb9bd29b0d7922df71cd3 share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF 4f652b876732e836230106ea61025a5c share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF fa3afad6a5e5b2cb43fa53ad902385e9 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF 5e22c7f6ca5297dd9d870177b1570199 share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF f520a42d836af396c249f03e875bb63a share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF 38c3fdd58653b14260220aa00552f9a3 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF f420fc9a007bea01ae90f7cf118071f6 share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF 03ef483c57df79e07110af12db36f519 share/opera@@{SUFFIX}/locale/it/search.ini
	"$@" NF 3cdd5f24a5c7266e2de1b2f4a0289b23 share/opera@@{SUFFIX}/locale/it/standard_speeddial.ini
	"$@" NF b57e9fed9a0d9aee55a050a07e99eebf share/opera@@{SUFFIX}/locale/ja/bookmarks.adr
	"$@" NF 21c8fe1e1b3b7206af513ccea086c562 share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" NF e2d39a176877f24fda707f212f50c079 share/opera@@{SUFFIX}/locale/ja/search.ini
	"$@" NF ff168fe6a338f6c680d21abe58c80e43 share/opera@@{SUFFIX}/locale/ja/standard_speeddial.ini
	"$@" NF 65cd57672432a117d533514774f8abdb share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF e54dd001905603483efa22db757c6c9c share/opera@@{SUFFIX}/locale/kk/kk.lng
	"$@" NF bb4c79ea2126aa2c58c02b990e344599 share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF db71562a8566c4e640592a8252ae9df3 share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF dc2c752454d031a42f85bfa2507a514a share/opera@@{SUFFIX}/locale/lv/lv.lng
	"$@" NF a5aa83871911ba87c394af4efb12588f share/opera@@{SUFFIX}/locale/me/me.lng
	"$@" NF 80457793eeeb68144e8d7b0a5ccb324d share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF b904235d32397675d7f1c488e52bcde4 share/opera@@{SUFFIX}/locale/ms/ms.lng
	"$@" NF 4decd9c9ecb1651ce8c8083c3ff1e7d2 share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF 90197da6c0dfb5531cd61cf05195588f share/opera@@{SUFFIX}/locale/nb/nb.lng
	"$@" NF 847a5dff1dcc2cdeb6a60cf0709e432d share/opera@@{SUFFIX}/locale/nb/search.ini
	"$@" NF ff7c88374d33ca67c38821082e64bcbe share/opera@@{SUFFIX}/locale/nb/standard_speeddial.ini
	"$@" NF 7da1f71cc7be07417b41661f5cf13d59 share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF c49f977dd3635e0f92609fce3c561fe8 share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF e270dbe696a470cfc758da5579358a80 share/opera@@{SUFFIX}/locale/pa/pa.lng
	"$@" NF f2a046e38d5404fefc470a237c5ac279 share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF e718e5f6d87a01879a4e4618e9d50d0c share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF 3477e4ea91b61414dc7d60a39aee0d23 share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF 74b5a6ecba2418eddfd2e53b4bbde995 share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF c902747fa5946b0b82ee233d7ea438de share/opera@@{SUFFIX}/locale/pt-BR/bookmarks.adr
	"$@" NF b2272f14b177befebcadb212f1c0363d share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF 7ed31fdbd29f740861f4b4ad8e254c84 share/opera@@{SUFFIX}/locale/pt-BR/search.ini
	"$@" NF 46e7d0980c6ba48136e2324f4a9016f1 share/opera@@{SUFFIX}/locale/pt-BR/standard_speeddial.ini
	"$@" NF 7ef202080b7f91f4794b8423c32a2e75 share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 97eca42dd07776100d82266ac3d62387 share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF b1f02effef06a0aa880fe77f763f14a9 share/opera@@{SUFFIX}/locale/ro/ro.lng
	"$@" NF 4d7ef00c5bdb3aeabff7e4ca8d7685f8 share/opera@@{SUFFIX}/locale/ro/search.ini
	"$@" NF b1581b0a01ff4d57156a237c1f023719 share/opera@@{SUFFIX}/locale/ro/standard_speeddial.ini
	"$@" NF e937b7280f28cae49a49b69e24a5360d share/opera@@{SUFFIX}/locale/ru/bookmarks.adr
	"$@" NF 7c2b574bc96ac5bc7b4ff8f8d336d1a1 share/opera@@{SUFFIX}/locale/ru/ru.lng
	"$@" NF 13649b8f87cd5455f9aae8a08c3f5002 share/opera@@{SUFFIX}/locale/ru/search.ini
	"$@" NF b9829bbf44178329a1fb9e9f32096f16 share/opera@@{SUFFIX}/locale/ru/standard_speeddial.ini
	"$@" NF 231d5b14243dbe53082cf334d43247f9 share/opera@@{SUFFIX}/locale/sk/bookmarks.adr
	"$@" NF 8189fab17525fd6326833f72142f8434 share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF 1710b154ad07cb2442c6e6ecbde624c2 share/opera@@{SUFFIX}/locale/sk/sk.lng
	"$@" NF 23e8307594a8b4ef65e095291b06ccf5 share/opera@@{SUFFIX}/locale/sk/standard_speeddial.ini
	"$@" NF fc29ab7506847d069c7f6a0f97f5f8fd share/opera@@{SUFFIX}/locale/sr/bookmarks.adr
	"$@" NF 9da8abc3865f586a56e593e189f37544 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF 97109c7d9712473e4480041f6bff35cc share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF 5339815ce2134793a5c303edb56007c8 share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF e4e147f1c570e056fea6c6ac8b0d4d5a share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF 5953bb384620ceed036eb18ccd5b278b share/opera@@{SUFFIX}/locale/sw/sw.lng
	"$@" NF 8a46743d63af66310d45d8bfeece70ee share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 87308611d424a29176218a56a98cf734 share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF 42a21eeba7384ef29de58cd0974aa384 share/opera@@{SUFFIX}/locale/th/th.lng
	"$@" NF c1e7b2af7d322c18d1124560c7ad4651 share/opera@@{SUFFIX}/locale/tl/tl.lng
	"$@" NF d2a9bc2799197a990bba0c32779216b7 share/opera@@{SUFFIX}/locale/tr/bookmarks.adr
	"$@" NF 3d6d52d6fef170be75c05eac22a37148 share/opera@@{SUFFIX}/locale/tr/search.ini
	"$@" NF adb363c6c73e81e84010f8c517f4bac2 share/opera@@{SUFFIX}/locale/tr/standard_speeddial.ini
	"$@" NF 185bb713e87b7165432ac8f513b7111e share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF 5d6e308cbdca83dd57e3e7a44f0298ed share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF af3b2207c40350c862388d684eafbeda share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF d1bbc9be75a79080191409c33419dbe5 share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF 65b386bacd2aa838a06fa41a658c722d share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF 5b6cb322424c743198f413e43b46ca2f share/opera@@{SUFFIX}/locale/ur/ur.lng
	"$@" NF a4ff9b0abd8fde5795dd13f51c2faf3f share/opera@@{SUFFIX}/locale/uz/uz.lng
	"$@" NF d8a77571d8067cd752794f3df5fccb18 share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF 58349d9bc0afb0f58610c806bd446501 share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF 2d62c016a3b5d3e07085bf7651ee29a1 share/opera@@{SUFFIX}/locale/zh-cn/operaprefs_locale.ini
	"$@" NF e71a0575394eea96e99c1a73fbc42cdf share/opera@@{SUFFIX}/locale/zh-cn/search.ini
	"$@" NF d09cc5e0fd301d5553ca7f11f990a8ba share/opera@@{SUFFIX}/locale/zh-cn/standard_speeddial.ini
	"$@" NF 2a71461aad39676952c3e0cb9d693934 share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF eaa31a7fd2c96a4e21f63e8192c214da share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 05276de715cd5709bbd76820227ff981 share/opera@@{SUFFIX}/locale/zu/zu.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF b055c06d7ba3f93ed4b2e4d92678c073 share/opera@@{SUFFIX}/package-id.ini
	"$@" NF 4b9efdff0eac7dee1c7250668186d1aa share/opera@@{SUFFIX}/pubsuffix.xml
	"$@" NF 4c4579461e14575f9f1004767ef35454 share/opera@@{SUFFIX}/region/cis/en/bookmarks.adr
	"$@" NF d87d465fba37d12be02b974a1bf77f32 share/opera@@{SUFFIX}/region/cis/en/search.ini
	"$@" NF 6dd5fbe2392946f5bd59f72c4c51d18d share/opera@@{SUFFIX}/region/cis/en/standard_speeddial.ini
	"$@" NF e937b7280f28cae49a49b69e24a5360d share/opera@@{SUFFIX}/region/cis/ru/bookmarks.adr
	"$@" NF 13649b8f87cd5455f9aae8a08c3f5002 share/opera@@{SUFFIX}/region/cis/ru/search.ini
	"$@" NF b9829bbf44178329a1fb9e9f32096f16 share/opera@@{SUFFIX}/region/cis/ru/standard_speeddial.ini
	"$@" NF 0cf10de2df7f7430473df625bc8720cc share/opera@@{SUFFIX}/region/cn/browser.js
	"$@" NF d0e56cac3db73c6b29ea2449f5179d05 share/opera@@{SUFFIX}/region/cn/en/bookmarks.adr
	"$@" NF fa17f89b28719d15b2af03263344be53 share/opera@@{SUFFIX}/region/cn/en/search.ini
	"$@" NF d09cc5e0fd301d5553ca7f11f990a8ba share/opera@@{SUFFIX}/region/cn/en/standard_speeddial.ini
	"$@" NF d44fc31b4c96a97d22624455874764ca share/opera@@{SUFFIX}/region/cn/turbosettings.xml
	"$@" NF 6c53a30f50edf4e599f0997c8eeaea15 share/opera@@{SUFFIX}/region/gb/bookmarks.adr
	"$@" NF a1c55b2d6cc654bac3574604dce5ddc6 share/opera@@{SUFFIX}/region/gb/search.ini
	"$@" NF b61d6c740c752c1251e1962ad3a2514f share/opera@@{SUFFIX}/region/gb/standard_speeddial.ini
	"$@" NF 0cf10de2df7f7430473df625bc8720cc share/opera@@{SUFFIX}/region/hk/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/region/hk/turbosettings.xml
	"$@" NF 0205ad77436aacedb70344bbb4895743 share/opera@@{SUFFIX}/region/id/bookmarks.adr
	"$@" NF 9acfff64944cbff429e422b4cb747573 share/opera@@{SUFFIX}/region/id/search.ini
	"$@" NF fb1677b86ee1f76fda99d96c5fd007ac share/opera@@{SUFFIX}/region/id/standard_speeddial.ini
	"$@" NF a71d5317a7b3d646b4163679f93615eb share/opera@@{SUFFIX}/region/in/bookmarks.adr
	"$@" NF cffc7852bdc614c26b60042ffc224349 share/opera@@{SUFFIX}/region/in/search.ini
	"$@" NF 0ead23a194891407e54b81bf4c4c4aa2 share/opera@@{SUFFIX}/region/in/standard_speeddial.ini
	"$@" NF 1c5d6c8b146083a7fab216fa957100ca share/opera@@{SUFFIX}/region/latin_america/bookmarks.adr
	"$@" NF 5b9a02faadcbcec225fa10509ce27e29 share/opera@@{SUFFIX}/region/latin_america/search.ini
	"$@" NF 03e4c00a1739286e55a07b4dd3445bbf share/opera@@{SUFFIX}/region/latin_america/standard_speeddial.ini
	"$@" NF 1b558b4fd0f49e9c2cc69b4f73a52d1b share/opera@@{SUFFIX}/region/middle_east/bookmarks.adr
	"$@" NF dda59bc769ba9b19f534197e4afbe639 share/opera@@{SUFFIX}/region/middle_east/search.ini
	"$@" NF 85ad574ab06fc54fff6f7cf9a4a57b22 share/opera@@{SUFFIX}/region/middle_east/standard_speeddial.ini
	"$@" NF 38f5e1c67e3c9a4169618be2d439af53 share/opera@@{SUFFIX}/region/ng/bookmarks.adr
	"$@" NF 26e1134c5d3b22fb90b904d7e5ae3ab3 share/opera@@{SUFFIX}/region/ng/standard_speeddial.ini
	"$@" NF 38ae98d733a9d5ac4e26926bf8b71c60 share/opera@@{SUFFIX}/region/ph/bookmarks.adr
	"$@" NF 45eed9a81f32c23cc605861ec5852542 share/opera@@{SUFFIX}/region/ph/standard_speeddial.ini
	"$@" NF 035b933e85acb20dd2f0202e910c7967 share/opera@@{SUFFIX}/region/pk/bookmarks.adr
	"$@" NF c798e74187d343237d870331032e973b share/opera@@{SUFFIX}/region/pk/standard_speeddial.ini
	"$@" NF 917c9eb214a99fb7a8a84a9055c74b1c share/opera@@{SUFFIX}/region/region.ini
	"$@" NF 0cf10de2df7f7430473df625bc8720cc share/opera@@{SUFFIX}/region/tw/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/region/tw/turbosettings.xml
	"$@" NF 714b26fe1b9fc8e7d8421125c4a74a35 share/opera@@{SUFFIX}/region/ua/ru/bookmarks.adr
	"$@" NF c9bacf5ae60bbbedd602222442bf82f4 share/opera@@{SUFFIX}/region/ua/ru/search.ini
	"$@" NF 7b5e8a1a3dd67afc73c260c8d6fcd17c share/opera@@{SUFFIX}/region/ua/ru/standard_speeddial.ini
	"$@" NF 6cf8d8fefe132858784886b0be73aebc share/opera@@{SUFFIX}/region/us/bookmarks.adr
	"$@" NF 5d99e468ac215746be447cf4116179fb share/opera@@{SUFFIX}/region/us/search.ini
	"$@" NF e019999f8b5cd7b3b80641c636c60276 share/opera@@{SUFFIX}/region/us/standard_speeddial.ini
	"$@" NF 9053a4a59c5cd4faec176f90b9bcb550 share/opera@@{SUFFIX}/region/vn/bookmarks.adr
	"$@" NF 3a4f9948457b292c651fdee119bf2369 share/opera@@{SUFFIX}/region/vn/standard_speeddial.ini
	"$@" NF b2f366ed9ef92f2387caa5fddedcc338 share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF 592dcbb309f2752b45623f5d50f3856f share/opera@@{SUFFIX}/skin/unix_skin.zip
	"$@" NF 06820e6bdd581b0a257e5e2648360457 share/opera@@{SUFFIX}/styles/about.css
	"$@" NF 4fb7c857524fd084449266fc70e9288b share/opera@@{SUFFIX}/styles/cache.css
	"$@" NF f815fb1d17c5a6cb4ba898132427129d share/opera@@{SUFFIX}/styles/certinfo.css
	"$@" NF c0d64d2ab99212f91bb3abb09a4f134e share/opera@@{SUFFIX}/styles/config.css
	"$@" NF 27249ef2c359eb6f207179f0c76214ba share/opera@@{SUFFIX}/styles/contentblock.css
	"$@" NF 519507ca4e929d783fe8acaf23ff5cd2 share/opera@@{SUFFIX}/styles/cpu.css
	"$@" NF 5365f1d7dfb70324825f560d8e25ee90 share/opera@@{SUFFIX}/styles/debug.css
	"$@" NF 056873687942e8aad4f0f297c1d4a57b share/opera@@{SUFFIX}/styles/dir.css
	"$@" NF 9561f4204a11e2cdaad1aac882e320eb share/opera@@{SUFFIX}/styles/error.css
	"$@" NF e2fe058194b04269a874420d76ed9261 share/opera@@{SUFFIX}/styles/feed.css
	"$@" NF 2d60ff8563558cb942a2390d1fb3fd56 share/opera@@{SUFFIX}/styles/gpu.css
	"$@" NF e9e1ee1fb6b5ccbb9b9df33ab622421f share/opera@@{SUFFIX}/styles/history.css
	"$@" NF 0aafe85bc2d3f0c6a20761e13dd17d66 share/opera@@{SUFFIX}/styles/im.css
	"$@" NF df384ae925f810d03d84dadf96b5beb1 share/opera@@{SUFFIX}/styles/image.css
	"$@" NF 73b840d67b16a49008b7ed3d6aec38ab share/opera@@{SUFFIX}/styles/images/Opera_256x256.png
	"$@" NF b769d1013cf6d688b39c36a5e72da222 share/opera@@{SUFFIX}/styles/images/arrow.png
	"$@" NF 35a8968b802c4cd66f70631354cec397 share/opera@@{SUFFIX}/styles/images/bar.png
	"$@" NF 2e242ddd9c9679c584b0fe430b8948cf share/opera@@{SUFFIX}/styles/images/bkgd-rev.png
	"$@" NF b133b79753e118bafa077c594ed22724 share/opera@@{SUFFIX}/styles/images/bkgd.png
	"$@" NF 4289d8db3e0ad4cb825d34c969c142ff share/opera@@{SUFFIX}/styles/images/bullet.png
	"$@" NF cbdbb7032558dae6b04f7691c4b8a41a share/opera@@{SUFFIX}/styles/images/center.png
	"$@" NF 669d3ef423184869eb24b29500330b06 share/opera@@{SUFFIX}/styles/images/container.png
	"$@" NF b423f4149c868ccf56a15abb83228f09 share/opera@@{SUFFIX}/styles/images/customize.gif
	"$@" NF e715da6d7e5314261bdff2942251718a share/opera@@{SUFFIX}/styles/images/darkBox.png
	"$@" NF 0dfc37ae4404b4a6811e4876db6b7df1 share/opera@@{SUFFIX}/styles/images/defaultFavicon.png
	"$@" NF 71bbdb354d7e65183c86aa36a27ddd1d share/opera@@{SUFFIX}/styles/images/error.png
	"$@" NF ac4455a870ed9d5365377c2d9566240c share/opera@@{SUFFIX}/styles/images/file.png
	"$@" NF 86c6ac920bd2fbb7f538ff79d4e34395 share/opera@@{SUFFIX}/styles/images/flag.png
	"$@" NF c6ee6872a8d70dbec976edd11bdaf986 share/opera@@{SUFFIX}/styles/images/folder.png
	"$@" NF 9b0cdaf9d7623041bd00e576cd1733f1 share/opera@@{SUFFIX}/styles/images/hanger.png
	"$@" NF 807f783c2043b0ff19471459cb52ad14 share/opera@@{SUFFIX}/styles/images/opera-icon-red.png
	"$@" NF a2ed905f3862c320bb43e866721729d7 share/opera@@{SUFFIX}/styles/images/opera.png
	"$@" NF dbb6d41150a244186500718eda971047 share/opera@@{SUFFIX}/styles/images/page-bot.png
	"$@" NF d58ef56a726e38bb51da5adf696153fc share/opera@@{SUFFIX}/styles/images/red_center.png
	"$@" NF 3c6c895d2519efa918b4b3f46a897b67 share/opera@@{SUFFIX}/styles/images/red_left.png
	"$@" NF a28ba91c09ea75605d727e9bde7771b1 share/opera@@{SUFFIX}/styles/images/red_right.png
	"$@" NF a0c5f8a66f4e25f5d16ca1696a8f2e03 share/opera@@{SUFFIX}/styles/images/root.png
	"$@" NF 4aecd261352501fa1bad2c5e608df556 share/opera@@{SUFFIX}/styles/images/search.png
	"$@" NF b641cb9df6a4065ec64e6aac43cd5bc8 share/opera@@{SUFFIX}/styles/images/section.png
	"$@" NF 62f6287d95fafa0a8c56287e41760f33 share/opera@@{SUFFIX}/styles/images/smartGroup.png
	"$@" NF 2dab1572b02772c7a4fea3b5d51d1c48 share/opera@@{SUFFIX}/styles/images/tooltiptail.png
	"$@" NF f4dbc8a7b78e98448ad509bedca371c1 share/opera@@{SUFFIX}/styles/images/top.png
	"$@" NF 074b5a2c5386b6f2d12d172aa2f349fa share/opera@@{SUFFIX}/styles/images/warning.png
	"$@" NF abdfd39692029c4dc15cc1225ab370cb share/opera@@{SUFFIX}/styles/info.css
	"$@" NF 78691c25557de07544eb8bf5068a3ef7 share/opera@@{SUFFIX}/styles/m2_upgrade_1160.mbs
	"$@" NF b54da1c8490fa8698e24bf336c9d3460 share/opera@@{SUFFIX}/styles/m2_welcome_message.mbs
	"$@" NF 3d3c384bea83a19f7a2fb4016f176c78 share/opera@@{SUFFIX}/styles/mail.css
	"$@" NF 6e52a17228623ab69e767b8973c73789 share/opera@@{SUFFIX}/styles/mathml.css
	"$@" NF 73ca40c23f00b5b8045c1db8e0d2310f share/opera@@{SUFFIX}/styles/media.css
	"$@" NF e7dd3d81e0088d5fb56df880226cc7e1 share/opera@@{SUFFIX}/styles/message.css
	"$@" NF a126cdec7eac430c0039316b6ab8052c share/opera@@{SUFFIX}/styles/mime.css
	"$@" NF 8652c19aaa2ddf4277b034a3b056a392 share/opera@@{SUFFIX}/styles/opera.css
	"$@" NF 7c03962a468d027a592c7ea937ba3968 share/opera@@{SUFFIX}/styles/plugins.css
	"$@" NF faba806b834c6761e7c074480334d3bc share/opera@@{SUFFIX}/styles/private.css
	"$@" NF 028e214f2f1147678d50afc03705e7de share/opera@@{SUFFIX}/styles/search.css
	"$@" NF 4a1307a5ef44ce6f2699910d68353aaf share/opera@@{SUFFIX}/styles/unstyledxml.css
	"$@" NF 6a2bd73028a115965e2a8ab449f076b1 share/opera@@{SUFFIX}/styles/user/accessibility.css
	"$@" NF 7101c2b43e206a4fea3ea3b2e9d1ec65 share/opera@@{SUFFIX}/styles/user/altdebugger.css
	"$@" NF a1b473182a7f49252ca4092d4e3771e8 share/opera@@{SUFFIX}/styles/user/classid.css
	"$@" NF 2310bf5751a3d7e559a475146c15e133 share/opera@@{SUFFIX}/styles/user/contrastbw.css
	"$@" NF 49f63ead21d30601ec7d78ee8a979e05 share/opera@@{SUFFIX}/styles/user/contrastwb.css
	"$@" NF 0ddf795df3cd231834e7d3949f79d14b share/opera@@{SUFFIX}/styles/user/disablebreaks.css
	"$@" NF 290e3323bb78b510f46778cffc3e496a share/opera@@{SUFFIX}/styles/user/disablefloats.css
	"$@" NF b1213dc22de822fbbb54de3a77fde99b share/opera@@{SUFFIX}/styles/user/disableforms.css
	"$@" NF 2d4d9ffb55079767b3def4fcec29b011 share/opera@@{SUFFIX}/styles/user/disablepositioning.css
	"$@" NF b9c59fe668608bfc3c63c50f65b8298e share/opera@@{SUFFIX}/styles/user/disabletables.css
	"$@" NF a78c1f82b4028dc6cb954562b5f54833 share/opera@@{SUFFIX}/styles/user/outline.css
	"$@" NF abc6abdf3fb4a7b891e473c35f26d8ad share/opera@@{SUFFIX}/styles/user/structureblock.css
	"$@" NF ab99f3deacaa836a440f47851b2bb5ca share/opera@@{SUFFIX}/styles/user/structureinline.css
	"$@" NF 10a7bccf3d937c7a2b7efd79c3071cdc share/opera@@{SUFFIX}/styles/user/structuretables.css
	"$@" NF 8a0cb82243918b7952f09f29d0d7f104 share/opera@@{SUFFIX}/styles/user/tablelayout.css
	"$@" NF 30987a9dba87e7c4b2a56afabff5b9f5 share/opera@@{SUFFIX}/styles/user/toc.css
	"$@" NF b7a538b2531b94aa2b8c1b6d0676c167 share/opera@@{SUFFIX}/styles/warning.css
	"$@" NF a3a2d380e96de00e59628ca99ebba6d1 share/opera@@{SUFFIX}/styles/webfeeds.html
	"$@" NF b506d80eaff21777870d553a86b278d6 share/opera@@{SUFFIX}/styles/webstorage.css
	"$@" NF 71b60351587330f9c6f9121895b34a17 share/opera@@{SUFFIX}/styles/wml.css
	"$@" NF c68e52aa528b7ea89b50b03ddf27ad1d share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF f567b021504147a093ddbb762046b295 share/opera@@{SUFFIX}/ui/dialogs.yml
	"$@" NF a1b9cd1bef3f3a9a6c45883c20acfc18 share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF 729fe5eb86d5d1193387355b2c72ea6c share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF dfb4a1fcda89d9c256b67c4dfb580f91 share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 32ae91f095e76b1cb5f17c076447c0c2 share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF 83a9aaac418a7e283e4e849fba56a931 share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF d10e3b57ab792d7f7e6e260a66729743 share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF aafdd598f033f4a5f2f50b4be8765b91 share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF 8ecf97daad3d4519c13ed83d0caf7e24 share/opera@@{SUFFIX}/ui/widgets.yml
}

available()
{
	command -v "$1" >/dev/null 2>&1
}

finalize_desktop()
{
	# Menu entries
	if available update-desktop-database
	then
		update-desktop-database $PREFIX/share/applications
	fi

	# MIME associations
	if available update-mime-database
	then
		mkdir -p $PREFIX/share/mime/packages
		update-mime-database $PREFIX/share/mime
		! rmdir $PREFIX/share/mime/packages >/dev/null 2>&1
	fi

	# Icons
	touch -c $PREFIX/share/icons/hicolor
	if available update-icon-caches
	then
		update-icon-caches -tq $PREFIX/share/icons/hicolor
	elif available gtk-update-icon-cache
	then
		gtk-update-icon-cache -tq $PREFIX/share/icons/hicolor
	fi
}

make_tempdir()
{
	if [ -z "$tempdir" ]
	then
		tempdir=$(mktemp -d -t opera-install.XXXXXXXX)
		if [ $? != 0 ]
		then
			ui_error "Cannot create a temporary directory, please set TMPDIR correctly"
		fi
	fi
}

cleanup()
{
	res=$?
	trap - 0
	if [ $res -gt 0 ] && $need_rollback
	then
		rollback
	fi
	if $need_ui_cleanup
	then
		ui_cleanup
	fi
	if [ -n "$tempdir" ]
	then
		rm -rf $tempdir
	fi
	exit $res
}

ui_widget()
{
	local width height
	message=$(
		echo "$2"
		if [ -n "$3" ]
		then
			echo
			cat "$3"
		fi
		if [ -n "$4" ]
		then
			echo
			echo "$4"
		fi
	)
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				message=$(echo "$message" | fmt -w $((width - 4)))
				height=$(($(echo "$message" | wc -l) + 6))
				if [ $1 = inputbox ]
				then
					height=$((height + 2))
				fi
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			exec 4>&1
			answer=$($driver --title "$windowtitle" --clear --$1 "$message" $height $width 2>&1 1>&4)
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$message"
			case $1 in
				yesno)
					while true
					do
						read -p 'Please enter Y or N: ' answer
						case "$answer" in
							y*|Y*)
								res=0
								break
								;;
							n*|N*)
								res=1
								break
								;;
						esac
					done
					;;
				inputbox)
					read -p '>' answer
					;;
				msgbox|infobox)
					res=0
					;;
			esac
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_info()
{
	ui_widget infobox "$@"
}

ui_message()
{
	ui_widget msgbox "$@"
}

ui_warn()
{
	ui_widget yesno "$1" "$2" 'Continue?' || exit
}

ui_error()
{
	ui_widget msgbox "$1" "$2" 'Installation aborted.'
	exit 1
}

ui_input()
{
	ui_widget inputbox "$1" "$2" ''
}

ui_menu()
{
	local text width height
	case $driver in
		dialog|whiptail)
			width=72
			if available fmt
			then
				height=$(($(echo "$text" | fmt -w $((width - 4)) | wc -l) + $# / 2 + 8))
			else
				height=20
			fi
			;;
	esac
	need_ui_cleanup=true
	case $driver in
		dialog|whiptail)
			text=$1
			shift
			exec 4>&1
			answer=$($driver --menu "$text" $height $width $(($# / 2)) "$@" 2>&1 1>&4) || exit
			res=$?
			exec 4>&-
			;;
		plain)
			echo
			echo "$1"
			shift
			(
				n=1
				while [ -n "$1" ]
				do
					echo "[$n] $2"
					n=$((n + 1))
					shift 2
				done
			)
			while true
			do
				read -p "Your choice: " answer
				if echo "$answer" | grep -q '^[0-9][0-9]*$' && [ $((answer >= 1)) = 1 ] && [ $((answer <= $# / 2)) = 1 ]
				then
					break
				fi
				echo "Please enter an integer between 1 and $(($# / 2))."
			done
			shift $((answer * 2 - 2))
			answer="$1"
			res=0
			;;
	esac
	need_ui_cleanup=false
	return $res
}

ui_progress_begin()
{
	if ! $talk
	then
		return
	fi
	if [ -z "$progress_max" ]
	then
		progress_max=$(iterate echo | wc -l)
	fi
	progress_cur=0
	need_ui_cleanup=true
	case $driver in
		whiptail)
			make_tempdir
			mkfifo $tempdir/gauge
			whiptail --gauge "$1" 0 72 0 <$tempdir/gauge &
			exec 3>$tempdir/gauge
			;;
		*)
			echo
			echo -n "$1"
			;;
	esac
}

ui_progress_advance()
{
	if ! $talk
	then
		return
	fi
	progress_cur=$((progress_cur + 1))
	case $driver in
		whiptail)
			echo $((progress_cur * 100 / progress_max)) >&3
			;;
		*)
			echo -n '.'
			;;
	esac
}

ui_progress_end()
{
	if ! $talk
	then
		return
	fi
	case $driver in
		whiptail)
			exec 3>&-
			rm $tempdir/gauge
			;;
		*)
			echo 'done'
			;;
	esac
	need_ui_cleanup=false
}

ui_cleanup()
{
	case $driver in
		dialog)
			exec 4>&-
			dialog --clear
			stty sane
			clear
			;;
		whiptail)
			exec 3>&- 4>&-
			stty sane
			clear
			;;
		plain)
			echo
			;;
	esac
}

ui_init()
{
	if [ -z "$TERM" -o "$TERM" = dumb ]
	then
		driver=plain
	elif available whiptail && [ "$(whiptail --version)" != 'whiptail (newt): 0.52.13' ]
	then
		driver=whiptail
	elif available dialog
	then
		driver=dialog
	else
		driver=plain
	fi
	answer=''
	progress_max=''
	windowtitle="$1"
}

common_init()
{
	interactive=true
	talk=true
	force=false
	need_rollback=false
	need_ui_cleanup=false
	repackage=false
	tempdir=''

	trap cleanup 0 INT QUIT TERM
}

common_opt()
{
	case "$1" in
		--text)
			driver=plain
			;;
		--unattended)
			interactive=false
			driver=plain
			;;
		--quiet)
			talk=false
			interactive=false
			driver=plain
			;;
		--force)
			force=true
			;;
		*)
			return 1
	esac
}

# EOF_COMMON

version()
{
	ui_message "Opera - Fast and secure web browser and Internet suite

Opera is a small, fast, customizable, powerful and user-friendly web
browser, as well as an Internet suite, including an email client, an IRC
client, and web developer tools (Opera Dragonfly).

This script installs Opera 12.10 build 1615 for Linux on x86_64.

Copyright (c) 1995-2012 Opera Software ASA. All rights reserved."
}

usage()
{
	version
	cat <<EOF

Options:

    --text          Select plain-text user interface.

    --unattended    Ask no questions. Implies --text.
                    The --prefix option becomes mandatory.

    --quiet         Ask no questions and don't show progress.
                    Implies --text.

    --prefix /P     Specify installation directory. Opera will be
                    installed into /P/bin, /P/share and /P/lib.

    --user          Install for the current user. Default for non-root.
                    Alias for --prefix $HOME/.local.

    --system        Install for everybody. Default for root.
                    Alias for --prefix /usr/local.

    --name N        Use N for package name. Must either be "opera" or
                    begin with "opera-". Names of installed files and
                    directories will contain this string in place of
                    "opera". This allows to install several
                    versions of Opera side by side. The default is
                    "opera".

    --suffix S      Obsolete. Same as --name opera-S.

    --force         Ignore all kinds of errors and try to continue.

    --repackage R   Special mode for package maintainers. Extract files
                    into the staging directory R as if it were the
                    installation prefix, but prepare them to be
                    installed under the actual prefix. In this mode, no
                    finalizing actions, such as registration of menu
                    entries, are performed. Sanity checks are disabled.
                    Implies --unattended.

    --version       Show Opera version.

    --help          Show this message.
EOF
}

check_os()
{
	local name version arch res msg
	res=false
	name=$(uname -s)
	case "$name" in
		Linux)
			res=true
			;;
		*BSD)
			;;
	esac
	arch=$(uname -m)
	case "$arch" in
		i?86|i86pc)
			arch=i386
			;;
		amd64)
			arch=x86_64
			;;
	esac
	if [ "$arch" != x86_64 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for Linux on x86_64. If you choose to install it, the product may not work correctly."
		if $interactive
		then
			ui_warn "$msg"
		else
			ui_error "$msg"
		fi
	fi
}

check_package_manager()
{
	if available dpkg
	then
		ui_warn "Your system seems to support Debian-style packages. You might want to download and install a Debian package of Opera instead."
	elif available rpm
	then
		ui_warn "Your system seems to support RPM packages. You might want to download and install an RPM package of Opera instead."
	fi
}

install_file()
{
	local source dest existing tomake
	if [ -f $tempdir/damaged ] && ! $force
	then
		return 1
	fi
	source=$(use_suffix '' "$3")
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	existing=$dest
	tomake=''
	while [ -n "$existing" -a ! -e "$existing" ]
	do
		tomake=$existing
		existing=${existing%/*}
	done
	if [ ! -d "$existing" -o "$dest" = "$existing" ]
	then
		if { rm -rf "$existing~" && mv "$existing" "$existing~"; } 2>$tempdir/error || $force
		then
			echo "mv '$existing~' '$existing'" >>$tempdir/rollback
			echo "rm -rf '$existing~'" >>$tempdir/commit
		else
			ui_error "Cannot make a backup copy of $existing -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	elif [ -n "$tomake" -a "$tomake" != "$dest" ]
	then
		if mkdir -p "${dest%/*}" 2>$tempdir/error || $force
		then
			echo "rm -rf '$tomake'" >>$tempdir/rollback
		else
			ui_error "Cannot create directory ${dest%/*} -- see detailed error message below." $tempdir/error
			echo "$dest">>$tempdir/damaged
			return 1
		fi
	fi
	case "$1" in
		N?)
			cp "$source" "$dest"
			;;
		L?)
			source=$(use_suffix "$SUFFIX" "$2")
			ln -s "$source" "$dest"
			;;
		P?)
			case "$dest" in
				*.gz)
					gzip -dc "$source" | process >"${dest%.gz}" && gzip -9 "${dest%.gz}"
					;;
				*)
					process <"$source" >"$dest"
					;;
			esac
			;;
		G?)
			generate_file "${source##*/}" | process >"$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	case "$1" in
		?F)
			chmod 0644 "$dest"
			;;
		?X)
			chmod 0755 "$dest"
			;;
	esac 2>$tempdir/error || $force || {
		ui_error "Cannot install $dest -- see detailed error message below." $tempdir/error
		echo "$dest">>$tempdir/damaged
		return 1
	}
	ui_progress_advance
}

generate_file()
{
	case "$1" in
		opera)
			cat <<'EOF_generate_file'
#!/bin/sh
export OPERA_DIR=${OPERA_DIR:-@@{PREFIX}/share/opera@@{SUFFIX}}
export OPERA_PERSONALDIR=${OPERA_PERSONALDIR:-$HOME/.opera@@{SUFFIX}}
exec @@{PREFIX}/lib/opera@@{SUFFIX}/opera@@{SUFFIX} "$@"
EOF_generate_file
			;;
		uninstall-opera)
			sed -ne '1,/EOF_COMMON/p' "${0##*/}"
			cat <<EOF
PREFIX='$PREFIX'
SUFFIX='$SUFFIX'
EOF
			cat <<'EOF_generate_file'

usage()
{
	version
	cat <<EOF

Options:
    --text          Select plaintext user interface
    --unattended    Ask no questions
    --quiet         Ask no questions and don't show progress (implies --text)
    --force         Ignore all kinds of errors and try to continue
    --help          Show this message
EOF
}

uninstall_file()
{
	if $upgrade_mode
	then
		mv "$PREFIX/$3" "$PREFIX/$3~"
		echo "mv '$PREFIX/$3~' '$PREFIX/$3'" >>$install_tempdir/rollback
		echo "rm -f '$PREFIX/$3~'; rmdir -p '$PREFIX/${3%/*}' 2>/dev/null" >>$install_tempdir/commit
	else
		rm -f "$PREFIX/$3"
		rmdir -p "$PREFIX/${3%/*}" 2>/dev/null
	fi
	ui_progress_advance
}

common_init
ui_init 'Uninstalling Opera'

upgrade_mode=false

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--upgrade)
			shift
			upgrade_mode=true
			talk=false
			interactive=false
			driver=plain
			force=true
			install_tempdir="$1"
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	msg="This script uninstalls Opera 12.10 build 1615 for Linux on x86_64 installed as $PREFIX/bin/opera$SUFFIX."
	if $interactive
	then
		ui_warn "$msg"
	else
		ui_message "$msg"
	fi
fi

if [ ! -w $PREFIX ] && ! $force
then
	ui_error "You do not have write permissions for $PREFIX. Perhaps you should be uninstalling as root?"
fi

ui_progress_begin "Removing files"
iterate uninstall_file
ui_progress_end

if ! $upgrade_mode
then
	if $talk
	then
		ui_info "Finalizing uninstallation..."
	fi
	finalize_desktop
fi

if $talk
then
	ui_message "Opera has been uninstalled successfully. However, users' profile directories, which are by default ~/.opera$SUFFIX, have been left intact. You might want to delete them manually."
fi
EOF_generate_file
			;;
		*)
			return 1
	esac
}

rollback()
{
	ui_progress_begin "Undoing installation"
	iterate rollback_file
	ui_progress_end
	if [ -f $tempdir/rollback ]
	then
		. $tempdir/rollback
	fi
}

rollback_file()
{
	local dest
	dest=$INTO/$(use_suffix "$SUFFIX" "$3")
	rm -f "$dest"
	while [ -n "$dest" ]
	do
		dest=${dest%/*}
		case "$dest" in
			$INTO/*/opera*)
				rmdir "$dest" 2>/dev/null || break
				;;
		esac
	done
	ui_progress_advance
}

verify_file()
{
	local md5 file
	md5="$2"
	file=$(use_suffix '' "$3")
	case "$1" in
		[GL]?)
			ui_progress_advance
			return
			;;
	esac
	if [ ! -f "$file" ]
	then
		make_tempdir
		echo "$file" >>$tempdir/damaged
	elif [ -n "$md5prog" ]
	then
		if [ $(get_md5 "$file") != "$md5" ]
		then
			make_tempdir
			echo "$file" >>$tempdir/damaged
		fi
	fi
	ui_progress_advance
}

get_md5()
{
	if [ "$md5prog" = md5 ]
	then
		md5 -q "$1"
	else
		md5sum "$1" | { read sum file; echo $sum; }
	fi
}

use_suffix()
{
	echo "$2" | sed -e "s:@@{SUFFIX}:$1:g"
}

process()
{
	sed -e "s:@@{PREFIX}:$PREFIX:g;s:@@{SUFFIX}:$SUFFIX:g;s:@@{_SUFFIX}:$_SUFFIX:g;s:@@{USUFFIX}:$USUFFIX:g"
}

PREFIX=''
INTO=''
orig_pwd=$PWD
suffix_set=false

cd "${0%/*}"

common_init
ui_init 'Installing Opera'

if available md5
then
	md5prog=md5
elif available md5sum
then
	md5prog=md5sum
else
	md5prog=''
fi

while [ -n "$1" ]
do
	common_opt "$1" || case "$1" in
		--user)
			PREFIX=$HOME/.local
			;;
		--system)
			PREFIX=/usr/local
			;;
		--prefix)
			shift
			PREFIX="$1"
			;;
		--name)
			shift
			case "$1" in
				opera|opera-*)
					SUFFIX=${1#opera}
					;;
				*)
					ui_error '--name string must either be "opera" or begin with "opera-".'
					;;
			esac
			suffix_set=true
			;;
		--suffix)
			shift
			if [ -n "$1" ]
			then
				SUFFIX="-$1"
			else
				SUFFIX=''
			fi
			suffix_set=true
			;;
		--repackage)
			shift
			INTO="$1"
			repackage=true
			interactive=false
			driver=plain
			case "$INTO" in
				'')
					ui_error "--repackage needs a non-empty argument."
					;;
				/*)
					;;
				*)
					INTO=$orig_pwd/$INTO
					;;
			esac
			;;
		--version)
			driver=plain
			version
			exit
			;;
		*)
			driver=plain
			usage
			exit
			;;
	esac
	shift
done

if $talk
then
	version
fi

if ! $interactive && [ -z "$PREFIX" ]
then
	ui_error "Please specify --prefix, --user or --system for unattended installation."
fi

if ! $force && ! $repackage
then
	check_os
	if $interactive
	then
		check_package_manager
	fi
fi

if [ $(id -u) -eq 0 ]
then
	prefix_who="running as root"
	prefix_for="for all users"
	prefix_default=/usr/local
else
	prefix_who="not running as root"
	prefix_for="just for yourself"
	prefix_default=$HOME/.local
fi

while true
do
	if [ -n "$PREFIX" ]
	then
		answer=$PREFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "Please choose an installation directory. Opera will be installed in bin, share and lib directories under the specified location.

Since you are $prefix_who, you probably want to install Opera $prefix_for. The recommended installation prefix in this case is $prefix_default.

Press Enter to accept the recommended location, or specify a different prefix." || exit
		if [ -z "$answer" ]
		then
			answer=$prefix_default
		fi
		bad_answer=ui_message
	else
		ui_warn "Since you are $prefix_who, assuming you want to install Opera $prefix_for. Using $prefix_default as the installation prefix."
		answer=$prefix_default
		bad_answer=ui_error
	fi
	case "$answer" in
		''|[!/]*)
			$bad_answer "The installation prefix must begin with a slash."
			continue
			;;
		*' '*)
			$bad_answer "The installation prefix is not allowed to contain whitespace."
			continue
			;;
	esac
	while [ $answer != / -a "${answer%/}" != $answer ]
	do
		answer=${answer%/}
	done
	if $repackage
	then
		PREFIX=$answer
		break
	fi
	prefix_parent=$answer
	while [ ! -e "$prefix_parent" ]
	do
		prefix_parent=${prefix_parent%/*}
		if [ -z "$prefix_parent" ]
		then
			prefix_parent=/
		fi
	done
	if [ -w $prefix_parent ]
	then
		PREFIX=$answer
		break
	elif [ -d $prefix_parent ]
	then
		$bad_answer "You do not have write permissions for $prefix_parent. Perhaps you should be installing as root?"
	else
		$bad_answer "$prefix_parent is not a directory."
	fi
done

if [ -z "$INTO" ]
then
	INTO=$PREFIX
fi

while true
do
	if $suffix_set
	then
		answer=opera$SUFFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "You can install Opera with an alternative package name, so that the installation does not conflict with other installations of Opera you might have. For example, if you specify opera-12.10 as the package name, Opera files will be installed under $PREFIX/share/opera-12.10 and $PREFIX/lib/opera-12.10, and you will have to run $PREFIX/bin/opera-12.10 to run it. The default location of your profile directory will then be ~/.opera-12.10. If you want that, please enter the desired package name below. The name must be either \"opera\" or begin with \"opera-\". Only Latin letters, digits, periods and dashes are allowed.

Pressing Enter to accept the default and install as \"opera\" is a safe choice." || exit
		bad_answer=ui_message
	else
		answer=''
	fi
	case "$answer" in
		'')
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		opera-*[!-.A-Za-z0-9]*)
			$bad_answer "The package name is only allowed to contain Latin letters, digits, periods and dashes."
			;;
		opera-*)
			SUFFIX=${answer#opera}
			_SUFFIX=' '$(echo ${answer#opera-} | cut -c 1 | tr a-z A-Z)${answer#opera-?}
			USUFFIX=-$(echo ${answer#opera-} | tr a-z A-Z)
			break
			;;
		opera)
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		*)
			$bad_answer "The package name must either be \"opera\" or begin with \"opera-\"."
			;;
	esac
done

if ! $repackage && [ -f "$INTO/share/opera$SUFFIX/package-id.ini" ]
then
	upgrade_product=$(sed -ne '/^Product=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_version=$(sed -ne '/^Version=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	upgrade_build=$(sed -ne '/^Build=\(.*\)$/s//\1/p' "$INTO/share/opera$SUFFIX/package-id.ini")
	if [ -z "$upgrade_product" ]
	then
		upgrade_product=opera
	fi
	if [ "$upgrade_product" = opera ]
	then
		upgrade_title='Opera'
	else
		upgrade_title='Opera '$(echo ${upgrade_product#opera-} | cut -c 1 | tr a-z A-Z)${answer#?}
	fi
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		if [ "$upgrade_product" = opera -a "$upgrade_version" = 12.10 -a "$upgrade_build" = 1615 ]
		then
			msg="The chosen location already contains an installation of $upgrade_title 12.10 build 1615. The installer will attempt to refresh it."
		elif [ "$upgrade_product" = opera ]
		then
			msg="The chosen location contains an installation of $upgrade_title $upgrade_version build $upgrade_build. The installer will attempt to upgrade it to version 12.10 build 1615."
		else
			msg="The chosen location contains an installation of $upgrade_title $upgrade_version build $upgrade_build. The installer will attempt to replace it with Opera version 12.10 build 1615."
		fi
		if $interactive
		then
			ui_warn "$msg"
		elif $talk
		then
			ui_message "$msg"
		fi
	fi
fi

ui_progress_begin "Verifying package"
iterate verify_file
ui_progress_end

if [ -n "$tempdir" -a -f $tempdir/damaged ] && ! $force
then
	ui_error "The following files are missing or damaged:" $tempdir/damaged
fi

if ! $force && ! $repackage
then
	need_rollback=true
fi

make_tempdir

if ! $repackage && [ -x "$PREFIX/bin/uninstall-opera$SUFFIX" ]
then
	if $talk
	then
		ui_info "Removing old files..."
	fi
	"$PREFIX/bin/uninstall-opera$SUFFIX" --upgrade $tempdir
fi

ui_progress_begin "Installing files"
iterate install_file
ui_progress_end

need_rollback=false

if ! $repackage
then
	if $talk
	then
		ui_info "Finalizing installation..."
	fi
	if [ -f $tempdir/commit ]
	then
		. $tempdir/commit
	fi
	if $talk && [ "$driver" = plain ]
	then
		finalize_desktop
	else
		finalize_desktop >/dev/null 2>&1
	fi
fi

if $talk
then
	if [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		done='upgraded'
	else
		done='installed'
	fi
	if $repackage
	then
		ui_message "Opera has been installed successfully under $INTO as if it were $PREFIX."
	else
		ui_message "Opera has been $done successfully. To start, run $PREFIX/bin/opera$SUFFIX (you might want to add this location to your PATH).

To uninstall Opera, run $PREFIX/bin/uninstall-opera$SUFFIX."
	fi
fi
