#!/bin/sh

iterate()
{
	"$@" GX - bin/opera@@{SUFFIX}
	"$@" GX - bin/opera-widget-manager@@{SUFFIX}
	if ! $repackage
	then
		"$@" GX - bin/uninstall-opera@@{SUFFIX}
	fi
	"$@" NF e7c4ab8ec9fce620aa02d774b6a0ff09 lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperamatroska.so
	"$@" NF 1ac0788d8cea4b4e54a211ce284e928b lib/opera@@{SUFFIX}/gstreamer/plugins/libgstoperavp8.so
	"$@" NF dcf7d538a4201e6e8e7d1509eb925e4f lib/opera@@{SUFFIX}/liboperagtk.so
	"$@" NF 9dd9b2732943726737870c7c65f8a3c8 lib/opera@@{SUFFIX}/liboperakde4.so
	"$@" NX 8e9b356a22579f11855864b845e05774 lib/opera@@{SUFFIX}/opera@@{SUFFIX}
	"$@" NX a3861eac2a208330e5f7f0a325cf9a49 lib/opera@@{SUFFIX}/operaplugincleaner
	"$@" NX 5e54f021de9539b887c3e6a7290be8f9 lib/opera@@{SUFFIX}/operapluginwrapper
	"$@" NF 0a8389b127c477aa2c55ee5d234473ca lib/opera@@{SUFFIX}/plugins/README
	"$@" PF 4f94950abb9e8a521213260054561503 share/applications/opera-browser@@{SUFFIX}.desktop
	"$@" PF c32d6b1cdaa99944767e83a59fe27b4d share/applications/opera-widget-installer@@{SUFFIX}.desktop
	"$@" PF bf9c8c97f9432e69936000fc9db64290 share/applications/opera-widget-manager@@{SUFFIX}.desktop
	"$@" NF 3214f080875748938ba060314b4f727d share/doc/opera@@{SUFFIX}/LGPL-2
	"$@" NF bca0f32b4c9d40e1694f74feeefe42c2 share/doc/opera@@{SUFFIX}/LICENSE
	"$@" NF c9996f43d681b457f038bfc8efeef28a share/doc/opera@@{SUFFIX}/README.gstreamer
	"$@" NF e86ae7a20a7bc688af75a10d628de734 share/icons/hicolor/128x128/apps/opera-browser@@{SUFFIX}.png
	"$@" NF a8364412e16fd47998b58733e5a17ce6 share/icons/hicolor/128x128/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/128x128/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 272f6ee8bbad4dc7029d81286ca4763e share/icons/hicolor/128x128/mimetypes/opera-extension@@{SUFFIX}.png
	"$@" NF e67a11f466869d45bda53bdc9dbf4820 share/icons/hicolor/128x128/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF a2ae615b486e32092225f672d436d799 share/icons/hicolor/128x128/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF c3a9608cefc210c9e7823389c880a846 share/icons/hicolor/16x16/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 63786cc7701894e2ed1cecad31f2f78e share/icons/hicolor/16x16/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/16x16/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 87c5739d23920500c0815c88fcee8fb1 share/icons/hicolor/16x16/mimetypes/opera-extension@@{SUFFIX}.png
	"$@" NF 87a4cd99f0b1be41a1f6cfda5d57858a share/icons/hicolor/16x16/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 2bf861fe626ecd8480ed4f4b1d4f6086 share/icons/hicolor/16x16/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 6ed751290abb1877dc5f63d98d519388 share/icons/hicolor/22x22/apps/opera-browser@@{SUFFIX}.png
	"$@" NF a385010faaf3f4474e179b3e31e7dc4c share/icons/hicolor/22x22/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/22x22/apps/opera-widget@@{SUFFIX}.png
	"$@" NF b1aadfffe1a2a4cbc0769505f130f462 share/icons/hicolor/22x22/mimetypes/opera-extension@@{SUFFIX}.png
	"$@" NF 96f5a6bb62249a96b18a21e2620dcaf5 share/icons/hicolor/22x22/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF a9c3ccc0b72ab3af8abd7e340e3c9918 share/icons/hicolor/22x22/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 69ec92d70839774813d2b947b64b6c47 share/icons/hicolor/24x24/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 18da329a213cc3c61f44fe570d7fafe5 share/icons/hicolor/24x24/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/24x24/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 70c1f737385a88bd616654ef23a187cc share/icons/hicolor/24x24/mimetypes/opera-extension@@{SUFFIX}.png
	"$@" NF 5de5a30096324d2fb9d48928d49912c3 share/icons/hicolor/24x24/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 588162e24d2bd73258d1bcecf62b7798 share/icons/hicolor/24x24/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 8252fceede693440b96be35f6065cde3 share/icons/hicolor/32x32/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 7d64048682c5ea906e7ea281f4f12442 share/icons/hicolor/32x32/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/32x32/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 852841f582f95cabb04992397fcc97ce share/icons/hicolor/32x32/mimetypes/opera-extension@@{SUFFIX}.png
	"$@" NF 7d861375334ea90d50f01bd84720f54e share/icons/hicolor/32x32/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 70b287cbe7a06465220692a15c9b9c13 share/icons/hicolor/32x32/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF d0b315ea05750c1abb157042e56165d2 share/icons/hicolor/48x48/apps/opera-browser@@{SUFFIX}.png
	"$@" NF 6177835f1655a6a1441ebefe49f404ff share/icons/hicolor/48x48/apps/opera-widget-manager@@{SUFFIX}.png
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.png share/icons/hicolor/48x48/apps/opera-widget@@{SUFFIX}.png
	"$@" NF 6b94ab4c0f32141dc889207cf3454c43 share/icons/hicolor/48x48/mimetypes/opera-extension@@{SUFFIX}.png
	"$@" NF 4e4670e50dc2cb2305abd6f526a82099 share/icons/hicolor/48x48/mimetypes/opera-unite-application@@{SUFFIX}.png
	"$@" NF 6471746ab02f81f91b2e08fc95db4aa4 share/icons/hicolor/48x48/mimetypes/opera-widget@@{SUFFIX}.png
	"$@" NF 52440fbe31989de381a04002fe54da6e share/icons/hicolor/scalable/apps/opera-browser@@{SUFFIX}.svg
	"$@" NF c8931b3343cbec2271105febad88ebfe share/icons/hicolor/scalable/apps/opera-widget-manager@@{SUFFIX}.svg
	"$@" LL ../mimetypes/opera-widget@@{SUFFIX}.svg share/icons/hicolor/scalable/apps/opera-widget@@{SUFFIX}.svg
	"$@" NF fe9c0b034eb8961565ee0c19efecc2cd share/icons/hicolor/scalable/mimetypes/opera-extension@@{SUFFIX}.svg
	"$@" NF 957818c8871b44f4b490a51f90134fa5 share/icons/hicolor/scalable/mimetypes/opera-unite-application@@{SUFFIX}.svg
	"$@" NF 71d72ea4945da5e60a0dcef66c28c319 share/icons/hicolor/scalable/mimetypes/opera-widget@@{SUFFIX}.svg
	"$@" PF d2fee5bc4d076d0d00c6c5d26e47dd3d share/man/man1/opera-widget-manager@@{SUFFIX}.1.gz
	"$@" PF 74a19667b71e1c81e09d8da01ccc12b3 share/man/man1/opera@@{SUFFIX}.1.gz
	"$@" PF b855f4913d0d9a9f87de9ba39cef1669 share/mime/packages/opera-extension@@{SUFFIX}.xml
	"$@" PF b469ae97e76fabd30be19b507ea62bd9 share/mime/packages/opera-unite-application@@{SUFFIX}.xml
	"$@" PF cb799e7d0fdabcc4c0a465b12a81b625 share/mime/packages/opera-widget@@{SUFFIX}.xml
	"$@" NF 9982493def4f6611eebed9ccc15f66a0 share/opera@@{SUFFIX}/defaults/bookmarks.adr
	"$@" NF 47c08d6696bb0c85d176ee56ff9bd2c7 share/opera@@{SUFFIX}/defaults/feedreaders.ini
	"$@" NF eff00befe1723a4742b9ae591170566c share/opera@@{SUFFIX}/defaults/filehandler.ini
	"$@" LL ../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/defaults/license.txt
	"$@" NF 7933fada7c9b825155fbc04f3c959ee1 share/opera@@{SUFFIX}/defaults/mailproviders.xml
	"$@" NF 0cb4ac60c1cf45bd08ec4d5d62da5c02 share/opera@@{SUFFIX}/defaults/plugin-ignore.ini
	"$@" NF 0df7b46284d719e30df16cc83cca8232 share/opera@@{SUFFIX}/defaults/pluginpath.ini
	"$@" NF 3ec376607d01365bcdda2987b4096333 share/opera@@{SUFFIX}/defaults/public_domains.dat
	"$@" NF ccf1073b83b8665424cd542c40bf254e share/opera@@{SUFFIX}/defaults/search.ini
	"$@" NF ed5cea1248106982c318ce852ab4fbd6 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 c98d21788ba4619a0a3bb41722142e45 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 cf23880c0025f851c9ac265c58a0afa3 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 9205d12a4fb36bed579d448634d9387d share/opera@@{SUFFIX}/locale/be/be.lng
	"$@" NF f8533f63fddc314b6b63a3412a4eddf1 share/opera@@{SUFFIX}/locale/be/bookmarks.adr
	"$@" NF 17a53f34ad71f5cbc5f023686de5f4de share/opera@@{SUFFIX}/locale/be/search.ini
	"$@" NF 0cc1956ac68be1533bd4cb814e5e6083 share/opera@@{SUFFIX}/locale/be/standard_speeddial.ini
	"$@" NF fbca29cfe9b67d4dc44de04d0f97ef9b share/opera@@{SUFFIX}/locale/bg/bg.lng
	"$@" NF 15e32c3feffe5d43641e5912f4555a50 share/opera@@{SUFFIX}/locale/bg/bookmarks.adr
	"$@" NF efd08b91bc846a9f6b8df13b4ce63f75 share/opera@@{SUFFIX}/locale/bg/search.ini
	"$@" NF 0e0a00523eedcfb5244181e749d9aa1e share/opera@@{SUFFIX}/locale/bg/standard_speeddial.ini
	"$@" NF 5cf409a2bd068555c601496e66a64e7f share/opera@@{SUFFIX}/locale/cs/bookmarks.adr
	"$@" NF 3c1f70a9af1b5888dee32f3da4cc2d28 share/opera@@{SUFFIX}/locale/cs/cs.lng
	"$@" NF b74b3b5e88c59106de655816a903c7e3 share/opera@@{SUFFIX}/locale/cs/search.ini
	"$@" NF e012dfe8694ff9728ac02c75b9afde44 share/opera@@{SUFFIX}/locale/cs/standard_speeddial.ini
	"$@" NF 5aee2fc96a3c3138af41d784677cca7b share/opera@@{SUFFIX}/locale/da/da.lng
	"$@" NF 6e1a5b72df79078b70c208289d41d7cb share/opera@@{SUFFIX}/locale/de/bookmarks.adr
	"$@" NF 275f084acd2682110785a0972c6f68e3 share/opera@@{SUFFIX}/locale/de/de.lng
	"$@" NF dc88bf5996815c97e4cbec16d4914ed9 share/opera@@{SUFFIX}/locale/de/search.ini
	"$@" NF ddeb8185136585f8375d24a3bddb1582 share/opera@@{SUFFIX}/locale/de/standard_speeddial.ini
	"$@" NF de28351cce36c7add0a9291e443e86ee share/opera@@{SUFFIX}/locale/el/el.lng
	"$@" NF f7d6a292059554c0a3ad282eaf9ade86 share/opera@@{SUFFIX}/locale/en-GB/bookmarks.adr
	"$@" NF 08277ac54a1a5d8d005014e8510690e7 share/opera@@{SUFFIX}/locale/en-GB/en-GB.lng
	"$@" NF 6ce3ace371f567ccce5417999ae59285 share/opera@@{SUFFIX}/locale/en-GB/search.ini
	"$@" NF b702517a50dd2fc8c9c89e66870f2f52 share/opera@@{SUFFIX}/locale/en-GB/standard_speeddial.ini
	"$@" NF 194a798afc7850a3b36055b6d0e065b4 share/opera@@{SUFFIX}/locale/en/bookmarks.adr
	"$@" NF 37c9bd0fcb03608a46c5dee0186d8ac7 share/opera@@{SUFFIX}/locale/en/en.lng
	"$@" NF 76f4a0e8b02f2a364a706e6bd4fc2f3c share/opera@@{SUFFIX}/locale/en/en.zip
	"$@" LL ../../../doc/opera@@{SUFFIX}/LICENSE share/opera@@{SUFFIX}/locale/en/license.txt
	"$@" NF 39382ac7cd54ca53a7d9f98ca90fa2da share/opera@@{SUFFIX}/locale/en/search.ini
	"$@" NF b702517a50dd2fc8c9c89e66870f2f52 share/opera@@{SUFFIX}/locale/en/standard_speeddial.ini
	"$@" NF 1c8a7cf9fa8c1ce92564911d6a89ae74 share/opera@@{SUFFIX}/locale/es-ES/bookmarks.adr
	"$@" NF c96b6ecde2b85537382cac041230b97d share/opera@@{SUFFIX}/locale/es-ES/es-ES.lng
	"$@" NF 88601688160bd6403d93ebfc4044e36e share/opera@@{SUFFIX}/locale/es-ES/search.ini
	"$@" NF ac6f16e4694be3a97d79416535ed9e4d share/opera@@{SUFFIX}/locale/es-ES/standard_speeddial.ini
	"$@" NF 545fd5729ede99532e5dfc579d6ea8a1 share/opera@@{SUFFIX}/locale/es-LA/es-LA.lng
	"$@" NF f2ed5682c1dcc3938051bc019695614b share/opera@@{SUFFIX}/locale/et/et.lng
	"$@" NF defd70c924a1a525a108a6bc03701d29 share/opera@@{SUFFIX}/locale/fi/fi.lng
	"$@" NF 1ea9e89d7a03cb5fbd729a321b3d26dd share/opera@@{SUFFIX}/locale/fr-CA/fr-CA.lng
	"$@" NF cc0ad6562e02ae3d477b49f871a455d2 share/opera@@{SUFFIX}/locale/fr/bookmarks.adr
	"$@" NF c283bd51eb54e8fdb6056b2d1a3c752b share/opera@@{SUFFIX}/locale/fr/fr.lng
	"$@" NF 95d5232173e3506c2ecd62b39ed7398f share/opera@@{SUFFIX}/locale/fr/search.ini
	"$@" NF 28c611e9df99d8bd347401b59894d81a share/opera@@{SUFFIX}/locale/fr/standard_speeddial.ini
	"$@" NF 5330f9a86f4bda9e3145c581278677e6 share/opera@@{SUFFIX}/locale/fy/fy.lng
	"$@" NF c724171cd4e1341763ed21f00be6bb6d share/opera@@{SUFFIX}/locale/gd/gd.lng
	"$@" NF 197952ed344a3b7a67ff5fd7fcafdcc8 share/opera@@{SUFFIX}/locale/hi/hi.lng
	"$@" NF a2141f6ebcbacabf3e65a44e04210122 share/opera@@{SUFFIX}/locale/hr/hr.lng
	"$@" NF 112cfd936935b3e8f3449460491c2fca share/opera@@{SUFFIX}/locale/hu/bookmarks.adr
	"$@" NF ea2ae7873a40ee01c9c63b734b024a43 share/opera@@{SUFFIX}/locale/hu/hu.lng
	"$@" NF 1757fd22407bee5fe22bc1bb3a6472c3 share/opera@@{SUFFIX}/locale/hu/search.ini
	"$@" NF 0e0a00523eedcfb5244181e749d9aa1e share/opera@@{SUFFIX}/locale/hu/standard_speeddial.ini
	"$@" NF 98eb6658ee49fcdaa6bb72d3d38b4f73 share/opera@@{SUFFIX}/locale/id/id.lng
	"$@" NF 18f25017aab8806713ac778013abcf87 share/opera@@{SUFFIX}/locale/it/bookmarks.adr
	"$@" NF 52e72054225d0932f7a77de39c038153 share/opera@@{SUFFIX}/locale/it/it.lng
	"$@" NF 905ef5be837a0fed3e83344a27b0516f share/opera@@{SUFFIX}/locale/it/search.ini
	"$@" NF a52f581b97cafbf4c3469f0540eabb7f share/opera@@{SUFFIX}/locale/it/standard_speeddial.ini
	"$@" NF 18d6bd41e2ec9891a12df05368769a73 share/opera@@{SUFFIX}/locale/ja/bookmarks.adr
	"$@" NF ca10af899c5c1eb3e86b929c06dda7a6 share/opera@@{SUFFIX}/locale/ja/ja.lng
	"$@" NF 9264efc99420c89a3a6ef170b6bf2957 share/opera@@{SUFFIX}/locale/ja/license.txt
	"$@" NF e852d7ee6c0ad8c4ee7b5d9cee7a5d09 share/opera@@{SUFFIX}/locale/ja/search.ini
	"$@" NF 6026305b5fbdb74a0dece0c068cd4a41 share/opera@@{SUFFIX}/locale/ja/standard_speeddial.ini
	"$@" NF b9ae3cdf8dd8057d675e22f8b395fbfa share/opera@@{SUFFIX}/locale/ka/ka.lng
	"$@" NF 575a77cbfb56990bf0b178b5f73749b4 share/opera@@{SUFFIX}/locale/ko/ko.lng
	"$@" NF ad696c4d3e0093ff3c7a9c3b8489597f share/opera@@{SUFFIX}/locale/lt/lt.lng
	"$@" NF cb808211a883f8cd3aa9ae5e56eda60c share/opera@@{SUFFIX}/locale/mk/mk.lng
	"$@" NF 498201db5fe201e189265110f005b7db share/opera@@{SUFFIX}/locale/nb/bookmarks.adr
	"$@" NF 5d913207a7dd1f8af89807598e7b6979 share/opera@@{SUFFIX}/locale/nb/nb.lng
	"$@" NF 47c329b8456b3953c95ae42092b325a0 share/opera@@{SUFFIX}/locale/nb/search.ini
	"$@" NF b108e17ce3430bd2550e3c52df926f2b share/opera@@{SUFFIX}/locale/nb/standard_speeddial.ini
	"$@" NF 26b3c72144049020748023dca7d51f7f share/opera@@{SUFFIX}/locale/nl/nl.lng
	"$@" NF 3df5822adf075c0239534e74f6399bbb share/opera@@{SUFFIX}/locale/nn/nn.lng
	"$@" NF b932daf876d152a88a889317f75194c0 share/opera@@{SUFFIX}/locale/pl/bookmarks.adr
	"$@" NF 0796d2bdca3fa127cebaf135ae59672b share/opera@@{SUFFIX}/locale/pl/pl.lng
	"$@" NF 5446bae7bf0f454b522c60a6b89ee5a8 share/opera@@{SUFFIX}/locale/pl/search.ini
	"$@" NF ae4ccc0135e25125e059509a248bf095 share/opera@@{SUFFIX}/locale/pl/standard_speeddial.ini
	"$@" NF 0893f7759242004c87927df2acddae3f share/opera@@{SUFFIX}/locale/pt-BR/pt-BR.lng
	"$@" NF 28fe6dd11e7d5ddee67feeb0e02185f9 share/opera@@{SUFFIX}/locale/pt/pt.lng
	"$@" NF 03c852a2fd95625b2ad813d6c0edfbd1 share/opera@@{SUFFIX}/locale/ro/bookmarks.adr
	"$@" NF ec4d562b8d4e49f56b2d3c36b2aaa415 share/opera@@{SUFFIX}/locale/ro/ro.lng
	"$@" NF 9e9037c1372d694cd239ee2d14ad427c share/opera@@{SUFFIX}/locale/ro/search.ini
	"$@" NF 0e0a00523eedcfb5244181e749d9aa1e share/opera@@{SUFFIX}/locale/ro/standard_speeddial.ini
	"$@" NF d92a7da0e420248918ecd8ba76cbac32 share/opera@@{SUFFIX}/locale/ru/bookmarks.adr
	"$@" NF 2c1d72c47d0cdd2606d83258546f58fb share/opera@@{SUFFIX}/locale/ru/ru.lng
	"$@" NF fcb61a01c042de053c1aa954ccaeca2f share/opera@@{SUFFIX}/locale/ru/search.ini
	"$@" NF 5e46976db52a054976821cf810d42327 share/opera@@{SUFFIX}/locale/ru/standard_speeddial.ini
	"$@" NF 1afc15b3a255d5858e24738f31dc9de7 share/opera@@{SUFFIX}/locale/sk/bookmarks.adr
	"$@" NF 7047590837f086dfdd0be503cdadf6bf share/opera@@{SUFFIX}/locale/sk/search.ini
	"$@" NF 889a64cc679c19768bed8041b3f471d2 share/opera@@{SUFFIX}/locale/sk/sk.lng
	"$@" NF 07eea4e774b95a6790197d709f03d706 share/opera@@{SUFFIX}/locale/sk/standard_speeddial.ini
	"$@" NF 41bcae83e80618b8a20f4ed1ea03f9e3 share/opera@@{SUFFIX}/locale/sr/bookmarks.adr
	"$@" NF c9378abc6e0265f85c835ef5b2bdf0f9 share/opera@@{SUFFIX}/locale/sr/search.ini
	"$@" NF e51a849053fb487e054c9628abcd1a19 share/opera@@{SUFFIX}/locale/sr/sr.lng
	"$@" NF 0e0a00523eedcfb5244181e749d9aa1e share/opera@@{SUFFIX}/locale/sr/standard_speeddial.ini
	"$@" NF 15043b4fa13cc11924a17ae735700e34 share/opera@@{SUFFIX}/locale/sv/sv.lng
	"$@" NF 977b6a4320aab21c305ba71490824153 share/opera@@{SUFFIX}/locale/ta/ta.lng
	"$@" NF 9504acdc8565a13c62f93b09107626d1 share/opera@@{SUFFIX}/locale/te/te.lng
	"$@" NF 7ca4bcf6484e9fde8c2e37601c3ad913 share/opera@@{SUFFIX}/locale/tr/tr.lng
	"$@" NF d8a3e8ed86e191d0117a8ab454cb0e23 share/opera@@{SUFFIX}/locale/uk/bookmarks.adr
	"$@" NF ef66346cdfe697a0cdeaac07b18e49ce share/opera@@{SUFFIX}/locale/uk/search.ini
	"$@" NF d0c89b4e584d3538d424a0ca3b585b37 share/opera@@{SUFFIX}/locale/uk/standard_speeddial.ini
	"$@" NF 7470d2bf0d63a63179f9eb8a5c2d3d5e share/opera@@{SUFFIX}/locale/uk/uk.lng
	"$@" NF 1156389d3a99791080e312a50975f947 share/opera@@{SUFFIX}/locale/vi/vi.lng
	"$@" NF ce515c3eb233b0c76a5f9933f0445343 share/opera@@{SUFFIX}/locale/zh-cn/bookmarks.adr
	"$@" NF 8e8dd1b6a6432763085a63b974257a78 share/opera@@{SUFFIX}/locale/zh-cn/browser.js
	"$@" NF 5765bd0911cfdb7f0bc2a40e3d2c4e6e share/opera@@{SUFFIX}/locale/zh-cn/search.ini
	"$@" NF 8b5509e971192f9d1cb861e3f48e05dd share/opera@@{SUFFIX}/locale/zh-cn/standard_speeddial.ini
	"$@" NF d44fc31b4c96a97d22624455874764ca share/opera@@{SUFFIX}/locale/zh-cn/turbosettings.xml
	"$@" NF 26b05cebeeafd75a7bdc9768b385dfc1 share/opera@@{SUFFIX}/locale/zh-cn/zh-cn.lng
	"$@" NF 8e8dd1b6a6432763085a63b974257a78 share/opera@@{SUFFIX}/locale/zh-tw/browser.js
	"$@" NF 6ea2f98cdeaf54c398dca24aea9df644 share/opera@@{SUFFIX}/locale/zh-tw/turbosettings.xml
	"$@" NF 437fa2a652b37f336e834ec8ec754ea2 share/opera@@{SUFFIX}/locale/zh-tw/zh-tw.lng
	"$@" NF 1c24deadc6027ab1b7a2cecc7b7c00e4 share/opera@@{SUFFIX}/mathml.dtd
	"$@" NF 226ba270a9b66f925a4abf5e6c025dfd 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 56be2960d2005685c117524059d2e71c share/opera@@{SUFFIX}/skin/standard_skin.zip
	"$@" NF cece5f6c59e377657ddab32193d3e878 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 37a280b560c9c26fdf1ca5e6b616901f share/opera@@{SUFFIX}/styles/config.css
	"$@" NF adc83d14afaa0ea76588cf340e36c3a5 share/opera@@{SUFFIX}/styles/contentblock.css
	"$@" NF 3ddaf96398ae99245f6b83e6dc676ac6 share/opera@@{SUFFIX}/styles/debug.css
	"$@" NF 056873687942e8aad4f0f297c1d4a57b share/opera@@{SUFFIX}/styles/dir.css
	"$@" NF 589123475dbd864d1bcd10a013517610 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 4412303b131452fd536e794e93bdc8f5 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 7c7749d501c05e6ecf5f9f6ca5f63aad 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 a2fafb8c2521c958c3fbc5e49230e349 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 b76fd5150a7b07f8ced39ff4597a75b5 share/opera@@{SUFFIX}/ui/dialog.ini
	"$@" NF 073f6ad7caf6ee72336f8db698e1683d share/opera@@{SUFFIX}/ui/dialogs.yaml
	"$@" NF e6d9e74c12773dcf0d6a195b6b9e78ac share/opera@@{SUFFIX}/ui/fastforward.ini
	"$@" NF 0674c98378915a4d7b17a6834ce447bf share/opera@@{SUFFIX}/ui/standard_keyboard.ini
	"$@" NF f5e6add8ee0fa9463be1df7cae93fdf8 share/opera@@{SUFFIX}/ui/standard_keyboard_compat.ini
	"$@" NF 8d210af5861bd89509f633068f136a73 share/opera@@{SUFFIX}/ui/standard_menu.ini
	"$@" NF 942a4cf89c0f15f20744dc91431876fd share/opera@@{SUFFIX}/ui/standard_mouse.ini
	"$@" NF c07a73da2172bc4a10caf5f27eed3807 share/opera@@{SUFFIX}/ui/standard_toolbar.ini
	"$@" NF 4d02ad754f6a7cc001bfba844c63fd4b share/opera@@{SUFFIX}/ui/unix_keyboard.ini
	"$@" NF a0fce86a184f224bf6772ea6bdeef34c share/opera@@{SUFFIX}/unite/fileSharing.ua
	"$@" NF 5aa6d1c5936f8bc4a263af82e42217cd share/opera@@{SUFFIX}/unite/fridge.ua
	"$@" NF 09a89a6b91d563f1771d28e77c65fae9 share/opera@@{SUFFIX}/unite/home.ua
	"$@" NF 808a3148dbba6dbebce8efff5c3f4f43 share/opera@@{SUFFIX}/unite/mediaPlayer.ua
	"$@" NF d4f235d0d81efc3029fe9b48e5919b09 share/opera@@{SUFFIX}/unite/messenger.ua
	"$@" NF 102aaed368c86ae82a16f91bbb4937ef share/opera@@{SUFFIX}/unite/photoSharing.ua
	"$@" NF 7a68e8c465ea753a87f1e7b520ae1128 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 - A 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.10 build 2048 for FreeBSD 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.

    --suffix S      Append -S to the names of installed files and
                    directories. This allows to install several
                    versions of Opera side by side.

    --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)
			;;
		*BSD)
			res=true
			;;
	esac
	arch=$(uname -m)
	case "$arch" in
		i?86|i86pc)
			arch=i386
			;;
		x86_64)
			arch=amd64
			;;
	esac
	if [ "$arch" != i386 ]
	then
		res=false
	fi
	if ! $res
	then
		msg="You are running $name on $arch, but this package is intended for FreeBSD 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.10 build 2048 for FreeBSD 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=''
SUFFIX=''
_SUFFIX=''
USUFFIX=''
INTO=''
orig_pwd=$PWD

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"
			;;
		--suffix)
			shift
			SUFFIX="$1"
			;;
		--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 [ -n "$SUFFIX" ]
	then
		answer=$SUFFIX
		bad_answer=ui_error
	elif $interactive
	then
		ui_input "You can install Opera with a suffix, so that the installation does not conflict with other installations of Opera you might have. For example, if you specify 11.10 as the suffix, Opera files will be installed under $PREFIX/share/opera-11.10 and $PREFIX/lib/opera-11.10, and you will have to run $PREFIX/bin/opera-11.10 to run it. The default location of your profile directory will then be ~/.opera-11.10. If you want that, please enter the suffix without the leading dash below. Only Latin letters, digits, periods and dashes are allowed.

Accepting the empty default is a safe choice." || exit
		bad_answer=ui_message
	else
		answer=''
	fi
	case "$answer" in
		*[!-.A-Za-z0-9]*)
			$bad_answer "The installation suffix is only allowed to contain Latin letters, digits, periods and dashes."
			;;
		[-.]*)
			$bad_answer "The installation suffix cannot start with a period or dash."
			;;
		'')
			SUFFIX=''
			_SUFFIX=''
			USUFFIX=''
			break
			;;
		*)
			SUFFIX=-$answer
			_SUFFIX=" $answer"
			USUFFIX=-$(echo $answer | tr a-z A-Z)
			break
			;;
	esac
done

if ! $repackage && [ -f "$INTO/share/opera$SUFFIX/package-id.ini" ]
then
	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 [ -n "$upgrade_version" -a -n "$upgrade_build" ]
	then
		if [ "$upgrade_version" = 11.10 -a "$upgrade_build" = 2048 ]
		then
			msg="The chosen location already contains an installation of Opera 11.10 build 2048. The installer will attempt to refresh it."
		else
			msg="The chosen location contains an installation of Opera $upgrade_version build $upgrade_build. The installer will attempt to upgrade it to version 11.10 build 2048."
		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-widget-manager$SUFFIX.

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