#!/bin/sh

iterate()
{
	"$@" GX - bin/opera@@{SUFFIX}
	"$@" GX - bin/opera@@{SUFFIX}-widget-manager
	if ! $repackage
	then
		"$@" GX - bin/uninstall-opera@@{SUFFIX}
	fi
	"$@" NF 9ffb2ce8bbb5f4a978fa1a4807dfcd56 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF f52cb7a83c74340f2fa2700441a3ad98 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF 19ba486ce01f45e6d4dfe1e86d81be09 lib/opera@@{SUFFIX}/liboperagtk.so
	"$@" NF 9ef1534cb5228ffaa4dfd5c7f66f955e lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX 2a25081d68787fc208b1a466e274342e lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NX c980c7bc15e64387f9ea88ea1619e9bf lib/opera@@{SUFFIX}/operaplugincleaner
	"$@" NX 4ffb331261e0a6a84e387a48ca731a3b lib/opera@@{SUFFIX}/operapluginwrapper
	"$@" NF 0a8389b127c477aa2c55ee5d234473ca lib/opera@@{SUFFIX}/plugins/README
	"$@" PF 7391965010108b488c3bc526c8c7015c share/applications/opera@@{SUFFIX}-browser.desktop
	"$@" PF e78f45e2dc8098046f2a19e268031058 share/applications/opera@@{SUFFIX}-widget-installer.desktop
	"$@" PF 4d84c2febef83fd835ebf0d9f1f5d7df share/applications/opera@@{SUFFIX}-widget-manager.desktop
	"$@" NF 3214f080875748938ba060314b4f727d share/doc/opera@@{SUFFIX}/LGPL-2
	"$@" NF 6a6a8e020838b23406c81b19c1d46df6 share/doc/opera@@{SUFFIX}/LGPL-3
	"$@" NF bca0f32b4c9d40e1694f74feeefe42c2 share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF c9996f43d681b457f038bfc8efeef28a share/doc/opera@@{SUFFIX}/README.gstreamer
	"$@" NF e86ae7a20a7bc688af75a10d628de734 share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-browser.png
	"$@" NF a8364412e16fd47998b58733e5a17ce6 share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/128x128/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 272f6ee8bbad4dc7029d81286ca4763e share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF e67a11f466869d45bda53bdc9dbf4820 share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF a2ae615b486e32092225f672d436d799 share/icons/hicolor/128x128/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF c3a9608cefc210c9e7823389c880a846 share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 63786cc7701894e2ed1cecad31f2f78e share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/16x16/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 87c5739d23920500c0815c88fcee8fb1 share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 87a4cd99f0b1be41a1f6cfda5d57858a share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 2bf861fe626ecd8480ed4f4b1d4f6086 share/icons/hicolor/16x16/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 6ed751290abb1877dc5f63d98d519388 share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-browser.png
	"$@" NF a385010faaf3f4474e179b3e31e7dc4c share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/22x22/apps/opera@@{SUFFIX}-widget.png
	"$@" NF b1aadfffe1a2a4cbc0769505f130f462 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 96f5a6bb62249a96b18a21e2620dcaf5 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF a9c3ccc0b72ab3af8abd7e340e3c9918 share/icons/hicolor/22x22/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 69ec92d70839774813d2b947b64b6c47 share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 18da329a213cc3c61f44fe570d7fafe5 share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/24x24/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 70c1f737385a88bd616654ef23a187cc share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 5de5a30096324d2fb9d48928d49912c3 share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 588162e24d2bd73258d1bcecf62b7798 share/icons/hicolor/24x24/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 8252fceede693440b96be35f6065cde3 share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 7d64048682c5ea906e7ea281f4f12442 share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/32x32/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 852841f582f95cabb04992397fcc97ce share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 7d861375334ea90d50f01bd84720f54e share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 70b287cbe7a06465220692a15c9b9c13 share/icons/hicolor/32x32/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF d0b315ea05750c1abb157042e56165d2 share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-browser.png
	"$@" NF 6177835f1655a6a1441ebefe49f404ff share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-widget-manager.png
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.png share/icons/hicolor/48x48/apps/opera@@{SUFFIX}-widget.png
	"$@" NF 6b94ab4c0f32141dc889207cf3454c43 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-extension.png
	"$@" NF 4e4670e50dc2cb2305abd6f526a82099 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-unite-application.png
	"$@" NF 6471746ab02f81f91b2e08fc95db4aa4 share/icons/hicolor/48x48/mimetypes/opera@@{SUFFIX}-widget.png
	"$@" NF 52440fbe31989de381a04002fe54da6e share/icons/hicolor/scalable/apps/opera@@{SUFFIX}-browser.svg
	"$@" NF c8931b3343cbec2271105febad88ebfe share/icons/hicolor/scalable/apps/opera@@{SUFFIX}-widget-manager.svg
	"$@" LL ../mimetypes/opera@@{SUFFIX}-widget.svg share/icons/hicolor/scalable/apps/opera@@{SUFFIX}-widget.svg
	"$@" NF fe9c0b034eb8961565ee0c19efecc2cd share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-extension.svg
	"$@" NF 957818c8871b44f4b490a51f90134fa5 share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-unite-application.svg
	"$@" NF 71d72ea4945da5e60a0dcef66c28c319 share/icons/hicolor/scalable/mimetypes/opera@@{SUFFIX}-widget.svg
	"$@" PF 979bd9663a4f8b44818adf466a26911b share/man/man1/opera@@{SUFFIX}-widget-manager.1.gz
	"$@" PF e9c830bbbbe4399086daa25c75e8dfdd share/man/man1/opera@@{SUFFIX}.1.gz
	"$@" PF a960b3c9c3fabecd6805a4b954d893e1 share/mime/packages/opera@@{SUFFIX}-extension.xml
	"$@" PF c2c25c89d82f6eb553903a414bf51d31 share/mime/packages/opera@@{SUFFIX}-unite-application.xml
	"$@" PF df56e332a5c86b549caaad058b6928b6 share/mime/packages/opera@@{SUFFIX}-widget.xml
	"$@" NF 446930fd6a5216275dbccac004e6aabf share/opera@@{SUFFIX}/defaults/bookmarks.adr
	"$@" NF 47c08d6696bb0c85d176ee56ff9bd2c7 share/opera@@{SUFFIX}/defaults/feedreaders.ini
	"$@" NF cd2c7135a4f91af45892a366bb5274c8 share/opera@@{SUFFIX}/defaults/filehandler.ini
	"$@" LL ../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF f50581f58f5cd77c60b90c70cb67e9c7 share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF 140888cfeb603e37cb6de4845debbf8e share/opera@@{SUFFIX}/defaults/pluginpath.ini
	"$@" NF fd72cbbceb537c191d177beb683cc945 share/opera@@{SUFFIX}/defaults/public_domains.dat
	"$@" NF df33ce5cb496327834228be46d139b45 share/opera@@{SUFFIX}/defaults/search.ini
	"$@" NF 8d5447a9eea3713d713487924e39fff2 share/opera@@{SUFFIX}/defaults/standard_speeddial.ini
	"$@" NF 2ecfa381c2006b9db4143f4da84954e5 share/opera@@{SUFFIX}/defaults/standard_trusted_repositories.ini
	"$@" NF 4753a835e647f47f1aa89205bad4fa43 share/opera@@{SUFFIX}/defaults/tips_metadata.ini
	"$@" NF 51e20bcd23e47edb6ff898439b9c7a7c share/opera@@{SUFFIX}/defaults/webmailproviders.ini
	"$@" NF 5978ba5d3fa29bb0f5b210cc8aad57e1 share/opera@@{SUFFIX}/defaults/xmlentities.ini
	"$@" NF 62aa163b7ef5a1a61ea93709041e2ba1 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 e2db4371f5de1940d293f17061562290 share/opera@@{SUFFIX}/files.sig
	"$@" NF 07691ad17c3fd15036b85c5fa416f34d share/opera@@{SUFFIX}/files_old.sig
	"$@" NF 7a2db2de5211ab16a6712e4168d17ec7 share/opera@@{SUFFIX}/html40_entities.dtd
	"$@" NF 87803f0514670b96c73d4043cd3568c8 share/opera@@{SUFFIX}/lngcode.txt
	"$@" NF 84e8acb565666f756da2aeeb9cbe1d8f share/opera@@{SUFFIX}/locale/af/af.lng
	"$@" NF 207256e8b644a026b1352f6be56955e7 share/opera@@{SUFFIX}/locale/az/az.lng
	"$@" NF 4f5374d44fa0051827db18e3448169d1 share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF 39585d50b4b083c8231a5b471ec6868f share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 71dd55eaf540842089b15482fca4117a share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 324f0d2a02a2858e669625804d24fd43 share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF 2883214278c4ab5e28c6ddde1ab95fd8 share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF 0ade20ed9530794ac096503bb0adc2e6 share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF 0995397cea52dfb141c94eba77cab680 share/opera@@{SUFFIX}/locale/bg/search.ini
	"$@" NF 39ed0973bd2549406068c8d8610ba249 share/opera@@{SUFFIX}/locale/bg/standard_speeddial.ini
	"$@" NF 51447186a46f7e8a88538a9587e0b389 share/opera@@{SUFFIX}/locale/cs/bookmarks.adr
	"$@" NF 22caedd09303242780f86acdea365c97 share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF 41507529cd99bed5d3beecdad8e59288 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF 2c11a4da9ae64497b3a46b02841fed24 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF 58a25170043193d7587bb817ae5a071c share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF 14c9f319eb2fa2997f0f4f44eca80bed share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF 71879708f651fc2eeebf9d9e391fc275 share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF 3fbfe96a88accccc64a9a3b3fe7ff785 share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF 8fb50d1acc5746b0ae2a07f49da57a1a share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF 1ca15decab67ce77ed115799ea6f4959 share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF 4a53d31bb6dc9fdd4e3d73a681347f46 share/opera@@{SUFFIX}/locale/en-GB/bookmarks.adr
	"$@" NF f02997b4c65bff6f92fe0fea50a4c4c2 share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF 2e39a4eac8533e44ca74edef60fcfce5 share/opera@@{SUFFIX}/locale/en-GB/search.ini
	"$@" NF a3c0c20a340e432abd716a032c700889 share/opera@@{SUFFIX}/locale/en-GB/standard_speeddial.ini
	"$@" NF d26e579f3cba19c3cb1ba6f9291ab04a share/opera@@{SUFFIX}/locale/en/bookmarks.adr
	"$@" NF 4c26362eabc43a767c063a53ba2b491c share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF 45721e0bf421dcdb0b549cc234f4d4d3 share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF 051341bcd05e867d86555a5e1b2b3da6 share/opera@@{SUFFIX}/locale/en/search.ini
	"$@" NF 8503641f5571516509b5c6b03976a225 share/opera@@{SUFFIX}/locale/en/standard_speeddial.ini
	"$@" NF f92da778d5fc9e0835667dd5e682df7f share/opera@@{SUFFIX}/locale/es-ES/bookmarks.adr
	"$@" NF f36ec57abdf91301c4846335b30b0a75 share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 85be732f0ac2a0e6543837a0a72e3b6e share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF f5e84e7a51e59a8ffdb42fc054432d42 share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF f2bf09b33b252952a28d5a68697ab0f9 share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF 2400a0be46f9d440400a0842b79a8dca share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF 1d9230e9ed73f096d8b7c41f50136b27 share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF bbc60b612f3badae3ff913d2dcf3b296 share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF 262fe15994970c22098284b3e17f9100 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF d5ef6b1603a63c86a5c4895f9a96e151 share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF e9e57379128a1f82e101d38bc192217b share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF 7eb95951611565e5dc0ab6e2c3b7e925 share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF c73f91d268444a5a6af732b154bd9b95 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF c282c434c71dc9c62d4e9d53ba68d7ec share/opera@@{SUFFIX}/locale/gd/gd.lng
	"$@" NF 8e8e6c963f80bbce2b15d3bf2156ead8 share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF 3036253a18ac1ab7cb033be8f80f0279 share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF 76dd7bdd47b0e404a2916cd4238e9f66 share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF 8c3c102f40caf06f3fe8db4e5db25464 share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF c6303acbb9853fa24711a96e7ee4ad62 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF 39ed0973bd2549406068c8d8610ba249 share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF 4721be6acd75988bdb096c81ee4fe5fa share/opera@@{SUFFIX}/locale/id/bookmarks.adr
	"$@" NF cd8952e5914a4e7ffb8d5538351a980b share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF b504ba7049fe259775e2279a9917839b share/opera@@{SUFFIX}/locale/id/search.ini
	"$@" NF 334502e5cc03d8585ae1ef2e080f2117 share/opera@@{SUFFIX}/locale/id/standard_speeddial.ini
	"$@" NF 8d289225959be89ebbab658a3b9823e2 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF 97914834258848ea065bc6b8e693e22a share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF 4ede08b296d25b36bfc614d6db265efa share/opera@@{SUFFIX}/locale/it/search.ini
	"$@" NF 7c7f51a98d14c8cf18bf6286d989673b share/opera@@{SUFFIX}/locale/it/standard_speeddial.ini
	"$@" NF 95a73802438bbda56d75e16f9b875c82 share/opera@@{SUFFIX}/locale/ja/bookmarks.adr
	"$@" NF 1a8f2e59114164658f60654176793777 share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" NF ea860b998da181d76e6f33709463b019 share/opera@@{SUFFIX}/locale/ja/search.ini
	"$@" NF 1090fb75990f06e82e7a3899714e56f8 share/opera@@{SUFFIX}/locale/ja/standard_speeddial.ini
	"$@" NF 68e1cd987047596db5f185de56460015 share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF 993532b5e4f6320e46bd04d314b3e8ee share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF adca903bd16a1b4e3c0a0d60c31d8d41 share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF 91168167a173bb410e962a73ff95f4e6 share/opera@@{SUFFIX}/locale/me/me.lng
	"$@" NF e7490a5dc59d15e34c87481c958685a7 share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF 2998b914988e78fb58c534aa27aaf69b share/opera@@{SUFFIX}/locale/ms/ms.lng
	"$@" NF 2ffebcb88e2ea2fef78e8641be627493 share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF 8450beafcd9ce31b664c40bed7d4fa1f share/opera@@{SUFFIX}/locale/nb/nb.lng
	"$@" NF f39e344597e888d486be6b53c371ccde share/opera@@{SUFFIX}/locale/nb/search.ini
	"$@" NF 7c7f51a98d14c8cf18bf6286d989673b share/opera@@{SUFFIX}/locale/nb/standard_speeddial.ini
	"$@" NF e69cdb8dd1589c2acf1f1d35a65e028e share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF 88a2e76af3c81b4b2701107bf4d49ef0 share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF d220a1c85a8e2396e898b15185a69206 share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF 1f55eb4a96065ace1b4562630d0975b4 share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF 88aee37e6794adc2ac627d021a4d2829 share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF b125677ea8d3e5f6c8d58c0a7b1e6615 share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF 82e0aaa710fb0fd2a3543fb392b46322 share/opera@@{SUFFIX}/locale/pt-BR/bookmarks.adr
	"$@" NF ad296d875cc7d1e5b745984e9c818436 share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF b92c0ed220ca6abbcab5e90819818829 share/opera@@{SUFFIX}/locale/pt-BR/search.ini
	"$@" NF 5e650a9ee361bf9c8b63d2fdf902b40f share/opera@@{SUFFIX}/locale/pt-BR/standard_speeddial.ini
	"$@" NF a4db165b965c870f5c9d6ee638ad4373 share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 6a50b070b4c9c98ce95e198c4935feaa share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF 1d3d9b5c37c5a1daa2fe8a7724eac953 share/opera@@{SUFFIX}/locale/ro/ro.lng
	"$@" NF 2f9d0ef96a1bb9288b7c39d94607127e share/opera@@{SUFFIX}/locale/ro/search.ini
	"$@" NF 39ed0973bd2549406068c8d8610ba249 share/opera@@{SUFFIX}/locale/ro/standard_speeddial.ini
	"$@" NF ad0584bdba7dc3a60c52345f9cbb5b63 share/opera@@{SUFFIX}/locale/ru/bookmarks.adr
	"$@" NF ccb6f822e74376022eedff9c1385f3fb share/opera@@{SUFFIX}/locale/ru/ru.lng
	"$@" NF 5eb979ced018b89bcb1b56b7053e4577 share/opera@@{SUFFIX}/locale/ru/search.ini
	"$@" NF 2e8cc900dabd73f90e1d9f804678936a share/opera@@{SUFFIX}/locale/ru/standard_speeddial.ini
	"$@" NF 1a158593829cd520842b50aeb3645817 share/opera@@{SUFFIX}/locale/sk/bookmarks.adr
	"$@" NF 83b13164b497fcf79f6d7ca36467865a share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF 0cf5d55c648b63f1dd95f32aeaecdb0c share/opera@@{SUFFIX}/locale/sk/sk.lng
	"$@" NF 4b430b6e890dd1253eac1b8d7e24a30b share/opera@@{SUFFIX}/locale/sk/standard_speeddial.ini
	"$@" NF 1fcbab0b72b2f859fd232dd09a6db6af share/opera@@{SUFFIX}/locale/sr/bookmarks.adr
	"$@" NF 3115c5bf16b3dd8caa96874f95943ac5 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF f7ef46ed74864d3fc904c2bb01a97f60 share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF 39ed0973bd2549406068c8d8610ba249 share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF d953c931581c2cd1d512c4228b1aae93 share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF faa34817c5163fecd2ad72cef3f5d9c3 share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 56f1aaf1d2cbbec2ed1339ba28ba7103 share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF 67ed0f7998829de846ff9339c750120a share/opera@@{SUFFIX}/locale/th/th.lng
	"$@" NF 3e7ab98f9db6038faf7827ab584239f5 share/opera@@{SUFFIX}/locale/tl/tl.lng
	"$@" NF 0b7e42b994d2191d5128f8298ad3f3eb share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF 364239ae27b089d507f2b43377084d7a share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF 6037f117de18852df437e80c9e3ea492 share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF 26538b623ec4df046e127411a2d946cc share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF dd206f0d1ecd5a8fb28df7e97d5b5ddd share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF 2c14a897e157203ec19b8df5fbc38123 share/opera@@{SUFFIX}/locale/uz/uz.lng
	"$@" NF 2db6a766055f8d725e6233d1f35a5556 share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF 6b5384c07280578596084bb95ca3eedb share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF be5cfe4ba52bc9c99950fc8066ed193b share/opera@@{SUFFIX}/locale/zh-cn/browser.js
	"$@" NF 5443a6758ab25789a4b1519a0dd2ea1f share/opera@@{SUFFIX}/locale/zh-cn/search.ini
	"$@" NF efc612afa1b7a03bc2d693dd43c13b92 share/opera@@{SUFFIX}/locale/zh-cn/standard_speeddial.ini
	"$@" NF d44fc31b4c96a97d22624455874764ca share/opera@@{SUFFIX}/locale/zh-cn/turbosettings.xml
	"$@" NF bdd34f00efa42254d15f55bb9b9e8df3 share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF be5cfe4ba52bc9c99950fc8066ed193b share/opera@@{SUFFIX}/locale/zh-tw/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-tw/turbosettings.xml
	"$@" NF 49764c7b42e6d4055723eeff210840ca share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF 2f53bbc28658397dee4987467b3fb79e share/opera@@{SUFFIX}/package-id.ini
	"$@" NF a6485d9b7be876314c624d291d6575a1 share/opera@@{SUFFIX}/package/lib/binprint.sh
	"$@" NF e7e881f582f55beb206ee28c694a9a1c share/opera@@{SUFFIX}/package/lib/layout_common.sh
	"$@" NF 45642baaad2a785da620edf0945690ff share/opera@@{SUFFIX}/package/lib/layout_deb.sh
	"$@" NF ef97aabff0bf409a1b8869d34668d727 share/opera@@{SUFFIX}/package/lib/layout_tar.sh
	"$@" NF a8282806a1e3b9bea0f279348f76d4c2 share/opera@@{SUFFIX}/package/lib/main.sh
	"$@" NF 5843ecaae9aad7e1e0f36bc0d245df45 share/opera@@{SUFFIX}/package/lib/normalize.sh
	"$@" NF 324d47f2b5cf6e64fc7b548883527d5f share/opera@@{SUFFIX}/package/lib/package_deb.sh
	"$@" NF f809760b9a5cce32e0dd95e0fd39eb36 share/opera@@{SUFFIX}/package/lib/package_rpm.sh
	"$@" NF bd8cc8ab3353a0c14c514fb25f74302f share/opera@@{SUFFIX}/package/lib/package_tar.sh
	"$@" NF b2a6eb60c20b9329acad9f519ca66ac0 share/opera@@{SUFFIX}/package/lib/xml.sh
	"$@" NX bca998e6f24510a22be340fea94f81f0 share/opera@@{SUFFIX}/package/main.sh
	"$@" NF 647c8a80427c45ed812e33672cb1a93e share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF a3e800eb3ed09c5295fe8f58c6c6e531 share/opera@@{SUFFIX}/skin/unix_skin.zip
	"$@" NF 06820e6bdd581b0a257e5e2648360457 share/opera@@{SUFFIX}/styles/about.css
	"$@" NF 4fb7c857524fd084449266fc70e9288b share/opera@@{SUFFIX}/styles/cache.css
	"$@" NF 8295c14370590319f3f116b0e8b358ec share/opera@@{SUFFIX}/styles/certinfo.css
	"$@" NF d12b86f06547c6eaf1f20b87447668dd share/opera@@{SUFFIX}/styles/config.css
	"$@" NF adc83d14afaa0ea76588cf340e36c3a5 share/opera@@{SUFFIX}/styles/contentblock.css
	"$@" NF 3ddaf96398ae99245f6b83e6dc676ac6 share/opera@@{SUFFIX}/styles/debug.css
	"$@" NF 1368beca272c8937ad41f2864d635b95 share/opera@@{SUFFIX}/styles/dir.css
	"$@" NF b899f48166bd73439728244dca611745 share/opera@@{SUFFIX}/styles/error.css
	"$@" NF e9ee42b5c66c0367c1e02a1eeeca0776 share/opera@@{SUFFIX}/styles/history.css
	"$@" NF 3313969be29b130922a2551034194d42 share/opera@@{SUFFIX}/styles/im.css
	"$@" NF a2466c0a232fca46ac7e16d9fa92c446 share/opera@@{SUFFIX}/styles/image.css
	"$@" NF 73b840d67b16a49008b7ed3d6aec38ab share/opera@@{SUFFIX}/styles/images/Opera_256x256.png
	"$@" NF 35a8968b802c4cd66f70631354cec397 share/opera@@{SUFFIX}/styles/images/bar.png
	"$@" NF 2e242ddd9c9679c584b0fe430b8948cf share/opera@@{SUFFIX}/styles/images/bkgd-rev.png
	"$@" NF a67a7a2cc37ababd70825acc77bf3480 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 f23a4e2a5c1a0db7cfac79d1e7b9ba23 share/opera@@{SUFFIX}/styles/images/corner.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 cd587bbd0135bcc9820de23318dbae41 share/opera@@{SUFFIX}/styles/images/header-expanded.png
	"$@" NF 533450be6ceff816d25c53fb8ca93cad share/opera@@{SUFFIX}/styles/images/header.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 3a1f01c2181d79f8d579d26ca8c36b0e share/opera@@{SUFFIX}/styles/info.css
	"$@" NF e521ce4a0e2ad947af55f2fec3e30aee share/opera@@{SUFFIX}/styles/m2_welcome_message.mbs
	"$@" NF 3d3c384bea83a19f7a2fb4016f176c78 share/opera@@{SUFFIX}/styles/mail.css
	"$@" NF c92ea7dc91d7147ae4c5f51be8e9bf1e share/opera@@{SUFFIX}/styles/mathml.css
	"$@" NF 9f1492e55cf8d27f126607cd97bb4f8e share/opera@@{SUFFIX}/styles/media.css
	"$@" NF e7dd3d81e0088d5fb56df880226cc7e1 share/opera@@{SUFFIX}/styles/message.css
	"$@" NF 3750093c67f26b7815262956cc5c5652 share/opera@@{SUFFIX}/styles/mime.css
	"$@" NF 99887123c743417645b7b2b5a57ec15a share/opera@@{SUFFIX}/styles/opera.css
	"$@" NF 4d67e81faa56e84bafb8aebcef53910e share/opera@@{SUFFIX}/styles/plugins.css
	"$@" NF 4f25b1757ad75536fd6811254e7e4e64 share/opera@@{SUFFIX}/styles/private.css
	"$@" NF 028e214f2f1147678d50afc03705e7de share/opera@@{SUFFIX}/styles/search.css
	"$@" NF 4a1307a5ef44ce6f2699910d68353aaf share/opera@@{SUFFIX}/styles/unstyledxml.css
	"$@" NF 5bc0a8abcf1f533070d01415ecd7ad18 share/opera@@{SUFFIX}/styles/user/accessibility.css
	"$@" NF 0543fa1f23163fda70da1abca48ab27b share/opera@@{SUFFIX}/styles/user/altdebugger.css
	"$@" NF 83c445d3d83311a72e2b20ae3bcc31d2 share/opera@@{SUFFIX}/styles/user/classid.css
	"$@" NF 2fa6fc6187625a9b18f593bc0155347d share/opera@@{SUFFIX}/styles/user/contrastbw.css
	"$@" NF 3b14649c488639ccb271f4062fdbdbc3 share/opera@@{SUFFIX}/styles/user/contrastwb.css
	"$@" NF 768fce2463be25592a7a18cf5de76dd5 share/opera@@{SUFFIX}/styles/user/disablebreaks.css
	"$@" NF df59e1efbfe9e9e693007379ae36c7c7 share/opera@@{SUFFIX}/styles/user/disablefloats.css
	"$@" NF b219720e32060eae7275b10f89822044 share/opera@@{SUFFIX}/styles/user/disableforms.css
	"$@" NF ff377988948f88b59d786eb4b4f5f6bd share/opera@@{SUFFIX}/styles/user/disablepositioning.css
	"$@" NF a282ab27760ce5c9d08e5d19e3679f45 share/opera@@{SUFFIX}/styles/user/disabletables.css
	"$@" NF a89f5a95b9d93f02a5710a015e0eb1fa share/opera@@{SUFFIX}/styles/user/outline.css
	"$@" NF 1641b9745dcd076b4850bc79a5e3a745 share/opera@@{SUFFIX}/styles/user/structureblock.css
	"$@" NF 04db12198eb3e12f3fdb9818aff46cd7 share/opera@@{SUFFIX}/styles/user/structureinline.css
	"$@" NF b32564a2bc51123644e04b434c70d24b share/opera@@{SUFFIX}/styles/user/structuretables.css
	"$@" NF 76eadfb729094d536d2313e62ec5f02b share/opera@@{SUFFIX}/styles/user/tablelayout.css
	"$@" NF 0247352ff07de9a6f4a9ea9661fe54a9 share/opera@@{SUFFIX}/styles/user/toc.css
	"$@" NF 5bc2043c215012644e301fccbfb0397a share/opera@@{SUFFIX}/styles/warning.css
	"$@" NF ee2ba35cb25cd442fc337847f0bb1619 share/opera@@{SUFFIX}/styles/webfeeds.html
	"$@" NF a58d7f0685e93c12befea0abf0c168ef share/opera@@{SUFFIX}/styles/webstorage.css
	"$@" NF 4c39baff318e1caf9a994f4e2c431f84 share/opera@@{SUFFIX}/styles/wml.css
	"$@" NF 0aad5f42165c412014200f9ca360d4a0 share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF cee391669c63178823f468058f16426b share/opera@@{SUFFIX}/ui/dialogs.yaml
	"$@" NF e6d9e74c12773dcf0d6a195b6b9e78ac share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF 146a6ef0ef8fea41448959cb9f0d69cb share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF ffbd7369a0e205175042512c0d62c97b share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 187e585cb24cb67e6e8893194aa6cc4c share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF 942a4cf89c0f15f20744dc91431876fd share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF 91c5ae8ff0cfad0f6da1ba496b3af76b share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF bd025d7c5c8a29cb971b463a0a990ed1 share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF 9be74b1926ac6b6ad73591518b622003 share/opera@@{SUFFIX}/unite/fileSharing.ua
	"$@" NF ee5c375feb07d4c868b663e6bb15456f share/opera@@{SUFFIX}/unite/fridge.ua
	"$@" NF 8957081303178d7984430ec59ca7f384 share/opera@@{SUFFIX}/unite/home.ua
	"$@" NF 5b54f46d1c4cdb04dfea93698f01eb4d share/opera@@{SUFFIX}/unite/mediaPlayer.ua
	"$@" NF ea6b77d9ba2eac70df304139d8791648 share/opera@@{SUFFIX}/unite/messenger.ua
	"$@" NF 0ba0207420541b2fce18e5578a459c3e share/opera@@{SUFFIX}/unite/photoSharing.ua
	"$@" NF 72af675fcde8aa60507e9ceaf3af0922 share/opera@@{SUFFIX}/unite/webserver.ua
}

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
	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, web developer tools (Opera Dragonfly), and a personal web server
(Opera Unite).

This script installs Opera 11.50 build 1027 for Linux on i386.

Copyright (c) 1995-2011 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" != i386 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for Linux on i386. If you choose to install it, the product may not work correctly."
		if $interactive
		then
			ui_warn "$msg"
		else
			ui_error "$msg"
		fi
	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
			;;
		opera-widget-manager)
			cat <<'EOF_generate_file'
#!/bin/sh
exec @@{PREFIX}/bin/opera@@{SUFFIX} --widgetmanager "$@"
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 11.50 build 1027 for Linux on i386 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
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-11.50 as the package name, Opera files will be installed under $PREFIX/share/opera-11.50 and $PREFIX/lib/opera-11.50, and you will have to run $PREFIX/bin/opera-11.50 to run it. The default location of your profile directory will then be ~/.opera-11.50. 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" = 11.50 -a "$upgrade_build" = 1027 ]
		then
			msg="The chosen location already contains an installation of $upgrade_title 11.50 build 1027. 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 11.50 build 1027."
		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 11.50 build 1027."
		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 manage installed Opera Widgets, run $PREFIX/bin/opera$SUFFIX-widget-manager.

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